audio - 录制/创建音频文件之前最小化loadFile

标签 audio processing record minim

我正在尝试创建一个允许用户发出一些声音的应用程序,然后以回放方式使用它。

我想让我的应用程序播放用户将记录的.wav文件。

由于不断出现错误,我在弄清楚如何编写此代码时遇到了麻烦。

    ==== JavaSound Minim Error ====
    ==== Error invoking createInput on the file loader object: null

代码段:
   import ddf.minim.*;

   AudioInput in;
   AudioRecorder recorder;

   RadioButtons r;
   boolean showGUI = false;
   color bgCol = color(0);

   Minim minim;

   //Recording players
   AudioPlayer player1; 
   AudioPlayer player2;

   void newFile()
   {
      countname =(name+1);
      recorder = minim.createRecorder(in, "data/" + countname + ".wav", true);
   }
   ......

   void setup(){

       minim = new Minim(this);
       in = minim.getLineIn(Minim.MONO, 2048);
       newFile();
       player1 = minim.loadFile("data/" + countname + ".wav");// recording #1
       player2 = minim.loadFile("data/" + countname + ".wav");//recording #2


   void draw() {
   // Draw the image to the screen at coordinate (0,0)
       image(img,0,0);

       //recording button
       if(r.get() == 0)
       {
            for(int i = 0; i < in.left.size()-1; i++)
       }

            if ( recorder.isRecording() )
        {
            text("Currently recording...", 5, 15);
             }
            else
        {
            text("Not recording.", 5, 15);
          }
         }
     //play button
     if(r.get() == 1)
     {
     if(mousePressed){
     .......
     player_1.cue(0);
     player_1.play();
     }
     if(mousePressed){
     .......
     player_2.cue(0);
     player_2.play();
     }
     } 

我有问题的地方在这里:
       player1 = minim.loadFile("data/" + countname + ".wav");// recording #1
       player2 = minim.loadFile("data/" + countname + ".wav");//recording #2

将记录的文件将是1.wav,2.wav。但是我不能把它放在
       player1.minim.loadFile ("1.wav");
       player2.mminim.loadFile("2.wav");

我该怎么做?

最佳答案

如AudioRecorder [1]的JavaDoc页面所指出的那样,将需要发生对beginRecord(),endRecord()和save()的调用,以便实际上要记录的任何内容都被记录下来,然后也保存到磁盘上。只要不发生这种情况,就不会加载loadFile(),因此您将收到错误。因此问题出在您的程序流程中。仅当程序达到已经记录并保存文件的状态时,您才可以实际加载它。

可能还有一些方法可以让您回放在音频输入缓冲区中记录的所有内容(通常将其称为“监视”),但是据我所知,这不是您想要的。

除了这个一般的概念缺陷外,您的代码中似乎还存在其他问题,例如在随后的两个loadFile调用之间未迭代countname(不过,我认为应该对其进行迭代);而且在某些时候,您还有“player_1.play();” (请注意下划线),尽管您可能是在指的是此变量,但该变量写早于“player1 = minim.loadFile(...)”吗? ...

[1] http://code.compartmental.net/minim/javadoc/ddf/minim/AudioRecorder.html

关于audio - 录制/创建音频文件之前最小化loadFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17642440/

相关文章:

audio - 如何确定 Windows 上音频文件的编解码器?

button - 控件 P5 - 在按钮标签中显示数字

macros - 使用宏创建记录

c# - C# 9 记录的自定义相等检查

javascript - 在 JavaScript 中将两个字节转换为有符号 16 位整数

audio - 使用Windows 7 Guest虚拟机时Virtualbox音频卡顿

audio - FMOD channel 设置音量不起作用

dll - 处理 LoadLibrary 失败,错误 1114

java - 使用另一个类的变量

android - 将短数组从音频记录转换为字节数组,而不降低音频质量?