Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保RecordToSample正确写入Java Beads中的样本?_Java_Audio_Audio Recording - Fatal编程技术网

如何确保RecordToSample正确写入Java Beads中的样本?

如何确保RecordToSample正确写入Java Beads中的样本?,java,audio,audio-recording,Java,Audio,Audio Recording,我正在使用Java音频库。我正在尝试修改第7个教程文件,以非实时模式录制声音,并将声音写入文件。我是通过使用RecordToSample类来实现的。但是,当我尝试将样本写入文件时,RecordToSample看起来并没有实际将任何数据写入样本-写入的文件只是几秒钟的静默,这取决于我初始化样本时使用的缓冲区的长度,而不是记录的长度 这就是我到目前为止所做的: public class Lesson07_RecordToSample { public static void main(St

我正在使用Java音频库。我正在尝试修改第7个教程文件,以非实时模式录制声音,并将声音写入文件。我是通过使用
RecordToSample
类来实现的。但是,当我尝试将样本写入文件时,RecordToSample看起来并没有实际将任何数据写入样本-写入的文件只是几秒钟的静默,这取决于我初始化样本时使用的缓冲区的长度,而不是记录的长度

这就是我到目前为止所做的:

public class Lesson07_RecordToSample {

    public static void main(String[] args) {

        final AudioContext ac;

        ac = new AudioContext();
        /*
         * I added this code
         */
        final Sample sample = new Sample(10000D);
        final RecordToSample recorder = new RecordToSample(ac, sample);


        Clock clock = new Clock(ac, 700);
        clock.addMessageListener(
                  //this is the on-the-fly bead
                  new Bead() {
                       // snip

                      /*
                       * I added this code
                       */
                       if(c.getCount() == 70) {
                           Sample sample = recorder.getSample();
                           try {
                               sample.write("audio/song.wav", AudioFileType.WAV);
                           } catch (IOException e) {
                               e.printStackTrace();
                           }
                           ac.stop();
                       }
                   }
                 }
        );
    ac.out.addDependent(clock);
    /*
     * I changed this line
     */
    ac.runNonRealTime();

    }

    public static float random(double x) {
        return (float)(Math.random() * x);
    }
}
这将在audio/song.wav创建一个新文件,但该文件仅包含10秒的静默时间。在我看来,记录器实际上并没有改变样本中的任何数据,而在写入样本时,它只使用了我初始化样本时使用的10000毫秒的空数据


我一直在浏览Beads库的文档,似乎没有任何方法可以强制RecordToSample将其数据推送到其样本中。什么是确保我用RecordToSample记录的数据正确写入样本的正确方法?您能提供一个简短的代码示例吗?

我也在寻求有关Beads项目Google Group的帮助:Beads项目中现在有一个教程,介绍如何使用
RecordToSample