Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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
在JavaFx中动态生成声音_Java_Javafx_Audio_Pcm - Fatal编程技术网

在JavaFx中动态生成声音

在JavaFx中动态生成声音,java,javafx,audio,pcm,Java,Javafx,Audio,Pcm,我想产生一个振幅和频率可以动态变化的正弦波。我无法将预先存在的音频文件用于此。报告说: 在某些情况下,容器格式可能只是包含编码数据的基本流 我打算使用代表振幅(脉冲编码调制)的值流播放音频。 这是我的目标的伪代码: double frequency; double interval; //interval between successive additions to the audio stream double time = 0; streamObject; //some stream ob

我想产生一个振幅和频率可以动态变化的正弦波。我无法将预先存在的音频文件用于此。报告说:

在某些情况下,容器格式可能只是包含编码数据的基本流

我打算使用代表振幅(脉冲编码调制)的值流播放音频。 这是我的目标的伪代码:

double frequency;
double interval; //interval between successive additions to the audio stream
double time = 0;
streamObject; //some stream object which contains amplitudes as integers in range [-128,128]

while (true){
    double value = Math.sin(time*2*Math.PI*frequency);
    streamObject.write( (int)(value*128) ); //this is some method which will append values to the end of the stream
    time += interval;
    wait(interval); //appending values in real-time because there may be changes to the frequency
}
我的问题是类的唯一构造函数采用URI参数。这对我来说是一样的。我希望他们将
作为参数


任何建议都会很有帮助。

据我所知,目前没有一种方法可以通过JavaFX实现您想要的功能

我建议对输出行使用
javax.sound.sampled.SourceDataLine
。我已经将这个类用于实时theremin类程序、实时FM合成器和名为

基本计划如下:

  • 使用给定的音频格式打开输出行(
    SourceDataLine
  • 生成表示所需波形(一个缓冲区的值)的PCM值(例如,从-1到1的浮动)
  • 根据
    AudioFormat
  • 使用
    SourceDataLine
    方法写入
  • 在声音的持续时间内,循环回到(2)

  • 也许您可以在学习时将其翻译成
    JavaFX
    。哪种编程语言最适合直接完成此任务?个人选择?我对不同的语言了解不够,无法给出权威的答案。AFIK,C++和java是首选选项,提供低级访问和快速处理(以及良好的IDE支持)。我选择Java,部分是因为可以轻松访问声音系统(在C语言中,您必须管理另一个音频访问层,例如.net框架)和Java的多线程。但我认为,大多数商业产品都带有C语言的味道。有人告诉我卷积的一些数学(在滤波中)在C语言中更容易优化。非常感谢。这很有帮助。