问题标签 [synthesizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
514 浏览

java - Java 合成器编程

我正在尝试学习使用 Java 从头开始​​创建合成器我尝试将一些教程和代码串在一起以尝试从基本的工作产品中学习,但我没有得到任何声音。我只想能够使用正弦波、锯齿波和方波产生声音。当我运行程序时,我没有声音。我认为我的问题出在 Main.java 类和 SamplePlayer.java 类中。我将在最后发布的 SamplePlayer.java 类中遇到错误。有谁知道我做错了什么或者需要改变什么才能创造出基本的声音?

我有 6 节课:

  • Envelope.java(设置 ADSR 包络生成器)

  • Main.java(包含主函数)

    /li>
  • SamplePlayer.java(负责采样波形和播放声音)

    /li>
  • SampleProviderIntfc.java(有一个 getSamples() 方法存根)

SamplePlayer.java 中产生的错误:

这些错误在以下行中生成:

0 投票
1 回答
589 浏览

java - 在 Macbook Pro 上生成可听见的正弦波时出现 line.open() 错误

我在这里有这段代码,我有一个关于如何创建可听正弦波的教程:

它在 Windows 10 上运行良好,并且完美地生成了声音。但是在我的 Macbook Pro 上,我收到此错误:

我根本不明白这个错误。我唯一知道的是它正在访问我的音频插件。我也知道错误发生在:

有谁知道这个错误的原因是什么?或者如何解决?

0 投票
1 回答
1086 浏览

javascript - 如何使用 createPeriodicWave 而不是 createScriptProcessor 和 getChannelData

我发现了一些使用 Web Audio API 进行乐器合成的库。

其中之一(Band.js)使用createOscillator(), 与振荡器类型(正弦,正方形,...)结合使用,请参阅 source

但这听起来太合成了(听的例子)我想要一些听起来更真实的东西,但我不想使用任何预编译的声音字体,所以应该合成它。它也应该在移动设备上工作。

所以我找到了另一个库(musical.js),它使用前 32 个谐波作为矩阵并结合了createPeriodicWave see source。音色很棒,可以听听

正如在源代码的注释中所写的那样,谐波取自这个钢琴样本文件。还有更多其他乐器的示例文件。我试图更换谐波,甚至所有 2000,但它听起来总是像钢琴。

还有一些值可以调整和插入谐波和 ADSR 值。也许它们只针对钢琴声音进行了优化?

然后我找到了另一个库(吉他合成器),它的吉他音色非常好,听听。但是这个库不使用任何createPeriodicWaveAPI。相反,它使用createScriptProcessorgetChannelData结合了一些“简单”计算,但与其他库中的谐波完全不同,请参阅源代码

所以我的主要问题

可以移植吉他合成器以使用createPeriodicWaveAPI 吗?我想在musicjs中使用吉他音色。这样我就可以在钢琴音色和吉他音色之间切换。

顺便说一句:找到另一个合成声音乐器的库。这是演示,这里是源代码。声音也不错,但 music.js 库的音色更优美。但它看起来也使用了类似的东西,比如getChannelData编码为 WAVE。它也不适用于我的 Android 移动设备。

0 投票
1 回答
116 浏览

wav - 在 netlogo 中写入声音文件:或如何调整 netlogo

我正在写一个简单的合成器。

这是我的代码的全部

当我跑步时

并将输出加载到 44100 赫兹的声音编辑器中,我得到一秒钟的声音。到目前为止一切都很好。不幸的是,它本来应该是 100 Hz 的音调,但实际上它比 1 秒要高得多 [超过 16k Hz]。

我究竟做错了什么?

0 投票
1 回答
321 浏览

matlab - matlab中的滤波器系数

我正在学习信号处理,目前我必须在 Matlab 中做一个语音合成器。为了模拟嘴的谐振器系统,我有这个传递函数:

R(z) = 1 - z ^(-1)

我可以在 Matlab 中实现这个带有过滤功能的系统吗?我不知道如何提取系数“a”和“b”......

注意:y = filter(b, a, x),其中 x 是我们必须过滤的输入信号。

谢谢你们!

0 投票
1 回答
77 浏览

xml-parsing - SSML 规范中的 ssml 请求中是否需要 xml 标头?

我想知道我们是否严格需要在对 ssml 合成器的请求中指定 xml 标头,如下所示:

还是 SSML 标准也允许这样做?:

0 投票
1 回答
262 浏览

java - Java:for循环的第一次迭代需要更长的时间

我正在编写一些代码来测试使用 Java 中的 MIDI 库,并且遇到了问题。在第一个音符之后,音符之间的停顿要长得多(实际上几乎是两倍)。我看不出任何原因,因为已经生成了音符序列(因此它也不必在循环的第一次迭代中执行这些计算,它只是演奏音符)。

我想我过去可能也遇到过这个问题,在没有任何解释的情况下,我可以找到一个模拟,它几乎 100% 的刻度长度仅在第一个刻度上执行计算,然后只使用了大约 2%连续迭代。

主要代码(摘录):

playNote() 的代码:

没有指定第一个循环的“if”语句,因此所有音符的延迟肯定应该是一致的,因为所有迭代执行的计算次数应该相同。请注意,时序变量仅用于测试目的,在我包含这些变量之前效果已经很明显了。

编辑:我还应该提到,产生的输出显示循环的每次迭代都需要预期的 200(有时是 201)毫秒。这似乎表明没有差距——但每次运行代码时我都清楚地听到了差距。

0 投票
1 回答
729 浏览

javascript - 如何用 JS 合成正弦音频波?

我想尝试使用 JavaScript 制作合成器,但我找不到任何关于如何做到这一点的基本示例。

我从研究中发现,这似乎是可能的,您应该使用 Canvas Pixel Array而不是普通的 ECMA 阵列

我还在MDN Audio中找到了信息,我之前也看到过网络广播播放器用于连续播放的音频元素,尽管我不知道如何。

我的目标是制作一些东西,让我可以合成连续的正弦波并使用我的键盘演奏它们,而无需使用预先制作的样本

编辑:下面的评论之一为我指明了正确的方向。我目前正在研究解决方案,但如果您也想发布一个解决方案,请随意。

0 投票
0 回答
800 浏览

java - 在 Java 中使用 ASIO 和 Gervill 合成器

我正在使用 Gervill 的软件合成器来加载 SF2 音库,并从 Midi 键盘播放音乐,我想知道是否可以通过 ASIO 播放输出,可能是通过JAsioHost。我一直在尝试查看 Gervill 源代码以查找原始音频数据何时真正传递给音频驱动程序,但我似乎无法找到它,即使那样,我也不确定这是否是正确的做法。

我正在使用的链使用 SF2loader 将声音字体加载到默认合成器中,然后我使用通道 noteOn 方法播放音符。

0 投票
1 回答
11056 浏览

c++ - 我需要知道什么才能开始用 c++/其他语言编写合成器?

我还是一个初学者,所以这对我来说将是一个非常高级的项目,但我想现在就开始它并让它成为一个持续的事情(我不打算在 2 周内完成一个成品,甚至构建我将使用的东西,只是一个学习经验)。

我想构建一个合成器,用作ableton live 9的vst3插件。我在想第一步就是做一些输出任意波形并响应midi输入的东西(频率随着音符的变化而变化) 和一个基本的 GUI 模板。然后我会尝试引入不同的波形,然后是更多的振荡器和失谐,然后是声音,然后是滤波器,然后是多个声音等。

我将如何开始这样做?我知道基本的 C++,但我不知道如何创建波形并将其作为声音输出。c++ 是用于此类应用程序的好语言吗?