Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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
将一串注释转换为wav文件java的步骤是什么_Java_Audio_Wav_Music Notation - Fatal编程技术网

将一串注释转换为wav文件java的步骤是什么

将一串注释转换为wav文件java的步骤是什么,java,audio,wav,music-notation,Java,Audio,Wav,Music Notation,我需要将表示一系列注释的文本字符串转换为wav文件,我想知道这样做的过程是什么?我不需要精确的代码,只需要我需要采取的步骤。我的文本文件如下所示: c 1 d 2 e 1 因此,该文件将成为一个wav文件,播放音符“c”(频率16.35Hz)1秒,然后播放“b”(18.35Hz)2秒,等等。本文只是一个示例-实际文本将包含更多信息,但我只想简单地开始,一旦我记下了,我将实施更多信息以提高质量。 我并不反对使用一个已经创建的库,但是找不到一个免费的或开源的库。 我能找到的最接近答案的问题是。我为

我需要将表示一系列注释的文本字符串转换为wav文件,我想知道这样做的过程是什么?我不需要精确的代码,只需要我需要采取的步骤。我的文本文件如下所示:

c 1
d 2
e 1
因此,该文件将成为一个wav文件,播放音符“c”(频率16.35Hz)1秒,然后播放“b”(18.35Hz)2秒,等等。本文只是一个示例-实际文本将包含更多信息,但我只想简单地开始,一旦我记下了,我将实施更多信息以提高质量。 我并不反对使用一个已经创建的库,但是找不到一个免费的或开源的库。 我能找到的最接近答案的问题是。我为java找到的一切都是关于播放wav或其他音频文件,但不是像我需要的那样从头开始创建它们。 任何帮助或指导都会很好。提前谢谢

使用。播放你的歌曲就是为了这个,而你真的不想重新发明这个功能

这并不简单,但它是有效的,将您与硬件差异隔离开来。WAV文件对这项任务尤其重要。

WAV文件实际上是,而且有

从那里,您只需将文件读入音符持续时间对列表,将音符转换为频率,然后为每个条目写入波形。您可以通过循环获得波形,并调用
Math.sin()


也就是说,您确实想要WAV而不是MIDI。

查看Java教程。你需要的一切都在那里

正弦函数可用于生成音调音频值。您将以非常小的增量(例如每秒44100帧)迭代函数。每个值必须转换成一对字节以完成16位编码,然后存储在字节数组中。(存在处理转换的stackoverflow线程。)

Java具有所需的流和格式,允许您通过wav格式播放PCM字节数据,本教程有一页/一段介绍如何保存wav文件。令人高兴的是,您不必担心wav头或任何其他细节。您只需在format对象中指定所需的参数并提供原始PCM字节


不过,阅读本教程并不容易,尤其是如果你是新手的话。

注意:软合成器和音序器的质量差别很大;一个事实表明,在这两个类别的市场上都存在着昂贵的商业软件。