标签: javasound

什么是MIDI音库?

我是MIDI的初学者.MIDI音库是否包含用于MIDI合成器变成PCM音频的"指令"[原文如此]?

我有许多可变持续时间的音频(目前在PCM中,因此我的问题),我想按顺序(如果你愿意)并提供基于服务器生成的时间线播放(并混合它们)的指令.MIDI在逻辑上似乎是答案,虽然我对什么是音库有点模糊,如果它确实只是一组PCM声音?


更新:我最初从Java看这个.

java midi javasound pcm

1
推荐指数
1
解决办法
1634
查看次数

在java中嵌入wav?

我正在编写一个小闹钟程序,当闹钟时间结束时,它会多次播放音频文件.

程序的报警端已完成.现在我要播放文件.我使用jFileChooser来选择文件.javax.sound.sampled.AudioInputStream,javax.sound.sampled.AudioSystem和javax.sound.sampled.Clip来播放我的wav文件.工作也好.

但我真的只想播放一个wav文件,我也希望能够在多个系统上移动这个闹钟,所以我想避免使用jFileChooser来选择我的闹钟音.我不想每次运行程序时都浏览并选择文件.

为文件提供相对路径(例如,与jar相同的文件夹),然后修复路径字符串会更容易吗?或者以某种方式使wav成为jar文件的一部分会更容易(这是我更喜欢的,因为我根本不用担心wav文件.它只是一个独立运行的jar文件闹钟.字节数组,也许?)

提前致谢!对不起,如果这太愚蠢了.我是新手!

这是我的AudioInputStream代码.

 public void getaudPath() {
try {
    JFileChooser chooser;
   String choosertitle=null;
    chooser = new JFileChooser();
      FileNameExtensionFilter filter = new FileNameExtensionFilter(
        "WAV only", "wav");
    chooser.setFileFilter(filter);
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle(choosertitle);
        chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
        apath = (chooser.getSelectedFile()).toString();
      File soundFile = new File(apath);
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
     URL url = this.getClass().getClassLoader().getResource(apath);
         clip = AudioSystem.getClip();
         clip.open(audioIn);
         JOptionPane.showMessageDialog(this,"Got file, A-okay!");
}  else {
          apath = null;
      }} catch (Exception e) {JOptionPane.showMessageDialog(this,"Error in getting sound file:=> "+e); }

}
Run Code Online (Sandbox Code Playgroud)

java swing netbeans javasound embedded-resource

1
推荐指数
1
解决办法
737
查看次数

用Java将MP3转换为PCM

我想用Java将MP3文件转换为PCM.

怎么做?

java mp3 javasound pcm media-queries

1
推荐指数
1
解决办法
6986
查看次数

当我按下几个Jbuttons时,不可能发出几个声音

我的java程序中有三个按钮可以播放三种不同的声音.看看我的代码:

    import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.*;
import java.awt.datatransfer.*;

public class VueEditeurEmail extends JFrame implements ActionListener {

    private JPanel container = new JPanel();
    private JPanel containerHaut = new JPanel();
    private JPanel containerAction = new JPanel();
    private JButton boutonEnvoyer = new JButton("Envoi");
    private JButton boutonAnnuler = new JButton("Annuler");
    private JButton contacts = new JButton("Contacts");
    private JButton coller = new JButton("Coller");
    private JTextArea textArea = new JTextArea();
    private ChampsTexte champs1 = new ChampsTexte("Expéditeur :", "");
    private …
Run Code Online (Sandbox Code Playgroud)

java audio swing javasound jbutton

1
推荐指数
1
解决办法
173
查看次数

查找音符的持续时间是MIDI

我正在读一个midi文件来弄清楚它的音符和速度,但是我该如何计算音符的持续时间呢?

我知道getData1持有密钥,getData2保持速度,但是我在哪里可以找出持有的持续时间?

java midi duration javasound

1
推荐指数
1
解决办法
1770
查看次数

在Java中播放音效

我试图做相当于这行代码,除了用一个小的mp3文件代替系统的蜂鸣声:

Toolkit.getDefaultToolkit().beep();
Run Code Online (Sandbox Code Playgroud)

我有一个mp3文件,它有一些我想要播放的声音效果.这是一件相对容易的事吗?有人可以告诉我这样做的代码吗?

java audio javasound

0
推荐指数
1
解决办法
3373
查看次数

WAV转MP3 - Java lib示例

有没有关于如何使用LameOnJ,Pure Java Mp3编码器等在JPEG中将WAV格式编码为MP3的示例?示例代码,教程一切都会很棒!

我现在对图书馆感到困惑; 尝试了Tritonus lib,但它给了我:

Error: Unsupported conversion: MPEG1L3 from PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
Run Code Online (Sandbox Code Playgroud)

也许那是因为我使用的是Mac OS - 但我遵循Linux指令,因为没有可用的MAC指令?!有什么建议?

java mp3 wav javasound lame

0
推荐指数
1
解决办法
5440
查看次数

无法在jar文件中播放嵌入的声音

我正在创建一个名为BatteryBeeper的个人用软件.它会提醒我在笔记本电脑充电的时候充电是我设置的提醒.

当电荷达到设定的阈值时,它应该发出声音.

我看了一下答案:声音没有在罐子里播放,我AudioInputStream的构造类似于Jigar Joshi提到的.

但是我得到一个null异常:

java.lang.NullPointerException
    at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at demo.BatteryBeeper.setupSoundPlayback(BatteryBeeper.java:169)
    at demo.BatteryBeeper.<init>(BatteryBeeper.java:41)
    at demo.BatteryBeeper.main(BatteryBeeper.java:35)  
Run Code Online (Sandbox Code Playgroud)

这是加载声音的代码:

public void setupSoundPlayback(){
        try{
            buzzer = AudioSystem.getClip();
            in = AudioSystem.getAudioInputStream(BatteryBeeper.class.
                    getResourceAsStream("sound/buzzer3_x.wav"));
            buzzer.open(in);
        }catch(Exception e){
            e.printStackTrace();
        }

    }  
Run Code Online (Sandbox Code Playgroud)

以下是播放它的代码:

public void playSound(){
        buzzer.start();
    }  
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题?

杂项

这是一个常见的Eclipse项目.有一个sound文件夹下面src有波形文件

编辑

在AlexR的回答之后,我改变了路径并得到了一个新的例外:

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at demo.BatteryBeeper.setupSoundPlayback(BatteryBeeper.java:169)
    at demo.BatteryBeeper.<init>(BatteryBeeper.java:41)
    at demo.BatteryBeeper.main(BatteryBeeper.java:35)
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception javasound embedded-resource

0
推荐指数
1
解决办法
1444
查看次数

声音在java中 - 游戏在播放声音时冻结

每当我在游戏中播放声音时,线程会在声音播放结束后冻结然后继续.声音引擎代码:

package com.kgt.platformer;

import java.io.File;
import java.io.IOException;    
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;

public class Sound {
    private final static int BUFFER_SIZE = 12800000;
    private static File soundFile;
    private static AudioInputStream audioStream;
    private static AudioFormat audioFormat;
    private static  SourceDataLine sourceLine;

    /**
     * 
     * @param filename the name of the file that is going to be played
     *
     */
    public static void playSound(String filename){

        String strFilename = filename;

        try {
            soundFile = new File(strFilename);
        } …
Run Code Online (Sandbox Code Playgroud)

java audio javasound

0
推荐指数
1
解决办法
2872
查看次数

剪辑没有播放任何声音

好吧,标题说明了所有,我尝试使用javax.sound播放一个wav文件,但没有任何事情发生.我试过很多不同的文件而没有任何运气.

public static void main(String[] args) throws IOException, UnsupportedAudioFileException, LineUnavailableException
{

    File in = new File("C:\\Users\\Sandra\\Desktop\\music\\rags.wav");
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(in);
    Clip play = AudioSystem.getClip();
    play.open(audioInputStream);
    FloatControl volume= (FloatControl) play.getControl(FloatControl.Type.MASTER_GAIN);
    volume.setValue(1.0f); // Reduce volume by 10 decibels.
    play.start();

}
Run Code Online (Sandbox Code Playgroud)

java audio javasound

0
推荐指数
1
解决办法
5755
查看次数

为什么,当调用一个方法时,它是否说我需要在我已经捕获它时捕获异常?

我有一个循环一些音频的类:

public class PlayGameMusic {
    public static void main(String[] args) throws Exception {
        try{
            AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("\\Users\\natal\\Desktop\\programs\\APCS\\Fill the Boxes.wav"));
            Clip clip = AudioSystem.getClip();
            clip.open(inputStream);
            clip.loop(Clip.LOOP_CONTINUOUSLY);
            Thread.sleep(10000);
        }
        catch(IOException error){System.out.println("IO Exception Error");}
        catch(InterruptedException error){System.out.println("InterruptedException");}
        catch(Exception error){System.out.print("System.out.println("Exception");");}
     }
}
Run Code Online (Sandbox Code Playgroud)

我可以编译这个方法,并且编译器不会报告任何错误(我已经使用print语句对其进行了测试).但是,当我尝试PlayGameMusic在另一个类中调用上面的class()的main方法时......

public class RunGame
{
    public static void main(String[] args)
    {
       PlayGameMusic.main(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

...我得到这个编译器错误:

unreported exception java.lang.Exception; must be caught or declared to be thrown
Run Code Online (Sandbox Code Playgroud)

我正在捕捉可能的异常,并且PlayGameMusic该类在单独运行时有效.为什么我不能从另一个班级打电话呢?

java exception javasound audioinputstream

0
推荐指数
1
解决办法
53
查看次数