标签: javasound

使用java声音实时处理音频和绘制波形

我目前正在开发一个应用程序,帮助用户调整他的吉他并生成吉他效果.这是实时的.我一直在寻找能够产生吉他效果的java应用程序,例如过载和延迟,但我找不到任何东西.还需要实时创建波形的源.您的意见将非常有用,感谢提前.

java waveform javasound

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

提高java中声音文件的播放速度

我正在寻找有关如何使用Java及其声音API提高声音文件播放速度的信息.

我目前正在使用剪辑和AudioInputStream来播放文件,但如果这意味着我可以提高播放速度,我将很乐意改变它.

java audio javasound

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

阅读wav文件java vs matlab

我试图在java和matlab中读取.wav文件的数据并保存为字节数组.

在java中,代码如下所示:

 public byte[] readWav2(File file) throws UnsupportedAudioFileException, IOException {

     AudioFormat audioFormat;

     AudioInputStream inputAIS = AudioSystem.getAudioInputStream(file);
     audioFormat = inputAIS.getFormat();
     ByteArrayOutputStream baos = new ByteArrayOutputStream();

     // Read the audio data into a memory buffer.
     int nBufferSize = BUFFER_LENGTH * audioFormat.getFrameSize();


        byte[] abBuffer = new byte[nBufferSize];
        while (true) {

            int nBytesRead = inputAIS.read(abBuffer);

            if (nBytesRead == -1) {
                break;
            }
            baos.write(abBuffer, 0, nBytesRead);
        }

        byte[] abAudioData = baos.toByteArray();


        return abAudioData;
    }
Run Code Online (Sandbox Code Playgroud)

在matlab中我使用的是wavread函数:

[Y, FS] = wavread('sound.wav', 'native');
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是不同的.

在java中前20个字节:

53, 0, 19, …
Run Code Online (Sandbox Code Playgroud)

java matlab javasound

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

无法将InputStream对象传递给Java Sound API

它可以与File传递给的对象一起使用AudioSystem#getAudioFileFormat,但是为什么InputStream下面的对象不能通过呢?有什么建议吗?

import java.io.*;
import javax.sound.sampled.*;

public class Test {

    public static void main(String[] args) throws Exception {

        AudioSystem.getAudioFileFormat(new File(
                "myaudio.wav"));
        AudioSystem.getAudioFileFormat(new FileInputStream(
                "myaudio.wav"));

    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Exception in thread "main" java.io.IOException: mark/reset not supported
    at java.io.InputStream.reset(InputStream.java:330)
    at com.sun.media.sound.WaveFileReader.getAudioFileFormat(WaveFileReader.java:88)
    at javax.sound.sampled.AudioSystem.getAudioFileFormat(AudioSystem.java:985)
    at Test.main(Test.java:10)
Run Code Online (Sandbox Code Playgroud)

@编辑

据答案@René Jeschke@Phil Freihofner并且@Andrew Thompson,无论mark/reset被要求作为强制性protocal为Java Sound API与互动IO stream,恕我直言,类型buffered流,而不是raw一个应该被专门定义为参数的签名传递。这样做将使收窄到更理想的结果,而不是任意接受IO stream然后诉诸IOException为不利指标。

java javasound

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

我应该为java使用什么音频格式?

我正在制作一个基于Java的游戏,我想添加一些声音效果.我搜查了一下,发现自己更加困惑.我知道编码因文件格式而异.我只需要一些声音 - 无论哪种格式都无关紧要.所以请建议我最简单的文件格式.代码段非常有用.

什么是最简单的格式和提供音效的方法?

java javasound soundeffect

4
推荐指数
2
解决办法
2万
查看次数

切割波形文件

如何.wave使用Java 剪切文件?

我想要的是:

当用户按下标cut有按钮的按钮时,应将音频从前一个mark(以纳秒为单位)剪切到当前位置(以纳秒为单位)。(在剪切声音后,标记被定位到当前位置(以纳秒为单位))当我获得那段音频后,我想保存那段音频文件。

// obtain an audio stream 
long mark = 0; // initially set to zero
//get the current position in nanoseconds
// after that how to proceed ?
// another method ?
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?

java audio javasound

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

如何从InputStream转换为AudioInputStream

是否可以从InputStream转换为AudioInputStream?

我想在某些事件中播放小声音文件,所以我跟随SoundThread

import java.io.*;
import javax.sound.sampled.*;

public class SoundThread implements Runnable{

    private String filename;

    SoundThread(String filename) {
        this.filename = filename;
    }

    public void run() {
        try {
            InputStream in = ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
            Clip clip = AudioSystem.getClip();
            clip.open((AudioInputStream)in);
            clip.start();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (LineUnavailableException e){
            e.printStackTrace();
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

我用它来运行它

new Thread(new SoundThread("nameOfTheSoundFile")).start();
Run Code Online (Sandbox Code Playgroud)

一开始我使用sun.audio.AudioPlayer和sun.audio.AudioStream处理它,但是一旦我将代码放在eclipse中,它就会向我显示错误.所以我试过了

AudioInputStream in = (AudioInputStream)ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
Run Code Online (Sandbox Code Playgroud)

将InputStream强制转换为AudioInputStream(eclipse没有显示任何错误),但运行它会引发ClassCastException.这个问题有什么解决方案吗?

java audio casting inputstream javasound

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

如何从wav文件中获取PCM数据?

我有一个.wav文件.我想从该声音文件中获取PCM数据,以便我可以从声音中获取单个数据块并对其进行处理.

但我不知道该怎么做.谁能告诉我怎么做?到目前为止我做到了这一点:

public class test
{

    static int frameSample;
    static int timeofFrame;
    static int N;
    static int runTimes;
    static int bps;
    static int channels;
    static double times;
    static int bufSize;
    static int frameSize;
    static int frameRate;
    static long length;

    public static void main(String[] args)
    {
        try
        {
            AudioInputStream ais = AudioSystem.getAudioInputStream(new File("music/audio.wav"));
            AudioInputStream a;
            int numBytes = ais.available();
            System.out.println("numbytes: "+numBytes);
            byte[] buffer = new byte[numBytes];
            byte[] buffer1=new byte[numBytes] ;
            int k=0;
            int count=0;
            while(count!=-1){
                count=ais.read(buffer, 0, numBytes);
            } …
Run Code Online (Sandbox Code Playgroud)

java wav javasound pcm

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

Java声音:在IntelliJ中运行但在SBT中找不到的设备

我正在尝试在Scala SBT管理的项目中使用Java Sound API。

这是一个可播放音符的玩具应用。

import javax.sound.midi._

object MyMain extends App {
  val infos = MidiSystem.getMidiDeviceInfo()
  println( "[DEBUG] midi devices found: " + infos.length )

  val myMsg = new ShortMessage;
  // Start playing the note Middle C (60),
  // moderately loud (velocity = 93).
  myMsg.setMessage(ShortMessage.NOTE_ON, 0, 60, 93);
  val timeStamp = -1;
  val rcvr : Receiver = MidiSystem.getReceiver();
  rcvr.send(myMsg, timeStamp);

  readChar()  // give time to play note
}
Run Code Online (Sandbox Code Playgroud)

当我run在SBT中执行时,我得到的javax.sound.midi.MidiUnavailableException因为 infos.length返回0。也就是说,当我在IntelliJ中运行该应用程序时,发现了两个设备,并且该音符的播放效果很好。

SBT要使其运行需要知道什么?是否有需要添加到类路径的东西?我注意到IntelliJ将一大堆jar附加到执行命令(但是,删除来自jdk / jre / lib …

java scala intellij-idea javasound

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

使用Java进行音频操作

数字图像的最小单位是像素.什么是最小的数字声音单位?什么可以被认为是声音的像素?我们如何使用java来操作它?

java audio javasound

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

标签 统计

java ×10

javasound ×10

audio ×4

casting ×1

inputstream ×1

intellij-idea ×1

matlab ×1

pcm ×1

scala ×1

soundeffect ×1

wav ×1

waveform ×1