问题标签 [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 投票
3 回答
295 浏览

java - MIDI Java 产生混乱的声音

我一直在一个项目中工作,我需要在 java 中操作 MIDI 文件中的每个乐器。然后我决定从序列中的每个轨道中获取每个 MIDI 事件并将其发送到接收器。之后,线程等待每个滴答声持续的时间,然后在下一个滴答声中再次执行此操作。问题是:乐器的声音以及它们的顺序变得非常混乱。我也尝试单独执行每个轨道,但它仍然一团糟!编码:

0 投票
2 回答
378 浏览

java - java中的合成器错误

第一次应用程序工作正常。但是当我第二次单击“语音”按钮时它会出错

这是代码。

我不明白的是首先它工作正常。第二次出错。如何解决这个问题。

0 投票
1 回答
1087 浏览

audio - 正弦波音乐发生器

我一直在研究试图理解声音和正弦波的工作方式,尤其是和弦。到目前为止,我的理解如下:

每个单独的频率都是一个单独的频率,计算机发生器很容易发出声音。但是,频率为 A 的音符的大和弦如下:

大和弦 = b+T+D+A

我想知道是否有人有办法让电脑合成器播放这个功能,这样我就可以听到结果了;我发现的大多数程序只将 Hz 作为输入,虽然这个函数有一个波长,但它与具有相同波长的简单正弦波不同。

注意:也会将其发布在物理和音乐部分 - 只是想知道您的计算机科学家是否对此有所了解。

0 投票
1 回答
122 浏览

java - Java String 通过 MIDI Synthesizer 解析和播放错误

我正在尝试在 Java 中实现莫尔斯播放机制。我让它与字符串一起工作正常,但为了实现停止功能,我试图让它与单个字符一起工作,该字符将一次从驱动程序传递一个。

但是,该程序似乎有点随机停止播放。例如:

“你好”: ... 。.-.. .-.. ---

在“---”之前保持沉默

“呵呵”:…………………………

在第四个 h 的第一个点后静音。

“呜呜”:--- --- --- --- ---

在第四个 o 之后变得沉默。

司机:

播放方法:

0 投票
0 回答
570 浏览

java - 如何通过 FreeTTS 在 Java 中使用 Mbrola 语音(超过 us1、us2 和 us3)?

我想知道是否可以使用 FreeTTS 从这里使用一些额外的声音,而不仅仅是 us1、us2 和 us3。特别是非英语的声音。

如果没有,如何使用这些声音?

谢谢

0 投票
0 回答
355 浏览

c - 使用 SDL 混频器的实时限带脉冲序列合成

我正在尝试使用这种技术实现音频合成器:

https://ccrma.stanford.edu/~stilti/papers/blit.pdf

我正在使用 SDL2_Mixer 库在标准 C 中执行此操作。

这是我的 BLIT 函数实现:

这个想法是按照纸上的说明将其结合起来生成方波。我使用以下配置设置了 SDL2_mixer:

这是我的create_rect功能。它创建了一个双极脉冲序列,然后整合它的值来生成一个带限的矩形函数。

我的问题是:产生的波很好,但几秒钟后它开始发出噪音。我试图绘制结果,这是它:

标准版本 更多放大版 评论区

任何想法?

编辑:这是双极 BLIT 在集成之前的图:

BLIT 缩放 BLIT

0 投票
0 回答
192 浏览

matlab - Matlab 变量查找表

您好,我一直在创建 Yamaha DX7 合成器的 matlab 脚本。这是为了更好地理解我的合成器(Nord 模块化 G2 与 DX7 模拟器)。DX7 有 32 种不同的算法。此刻我只有第一个见图算法

我拥有的代码是以下matlab代码:

下一步是创建一种用于获取生根更改的查找表。我想要的是y = A *sin(2*pi*f*t + phi)phi 的输入来自查找表。所以对于算法 2,我有更改phif = y2(1,k-1)*fb;y2 = l(1,2) * sin (2*pi*r(1,2)*f_b*t+phif)并且y6(1,k) = l(1,6) * sin (2*pi*r(1,6)*f_b*t(1,k)+0)

编辑:我有 6 个正弦输出信号 y1 - y6,我有 6 个信号 phi1 - phi6 的相位输入。我也有混音。

我想从查找表中读出路由。例如算法 7:mix1 = y4 + y5phi5 = y6.
phi5 = y6存储在查找表中。并从查找表中我需要导入我的变量

但我不知道我该怎么做……</p>

我希望有人能帮助我。

0 投票
1 回答
425 浏览

audio - 优化视频内存和系统内存之间的传输

前段时间,我尝试使用 GLSL 在 GPU 上创建重型声音合成器。该合成器能够同时生成超过 256 种以上的非常复杂的声音。在 CPU 上,我做梦也不敢想能得到这样的性能。

(简化解释)为了生成声音,我有一个 NxV 大小的浮点纹理。N = 样本数,V = 声音数。合成着色器为每个纹素生成值。

然后,第二个着色器将所有声音混合到一个 16 位有符号整数 1D 纹理(或声卡所需的任何格式)中。这个最终的纹理使用像素缓冲区尽可能快地复制到系统内存,然后将其发送到声卡。

对于声音,我使用超低延迟的 Windows Core Audio。

我编写了一个 MIDI 接口,以便能够在连接到 PC 的 MIDI 键盘上播放,并且在使用延迟仅为 3 毫秒的英特尔 GPU 时它可以完美运行(N = 132 个样本,这比所需的 15-20 毫秒要好得多N = 600-900 个样本)。但是当使用 NVidia GPU 能够支持更繁重的计算时,延迟要大得多(>35ms N=>1500 个样本)。

我知道原因是当使用 Intel GPU 时,渲染是直接在系统内存上完成的,并且复制该纹理非常快,但是当使用 NVidia GPU 时,渲染是在显存中完成并从显存复制到系统内存是一个瓶颈,即使它只应该传输大约 4KB 的音频数据(这甚至没有接近硬件应该能够达到的 6GB/s)。

有没有办法改善这一点?例如,是否可以让 NVidia GPU 直接渲染到系统内存(以可接受的速度),或者他们在 OpenCL 中谈论的那些著名的共享内存是什么?OpenCL 会改善这一点吗?(我没有使用 OpenCL 的经验)

0 投票
2 回答
92 浏览

javascript - 这些 riffwave.js 公式的 (128 + 127 *) 部分是什么?

我正在尝试在浏览器中做一些 javascript 音乐合成器,我遇到了 riffwave.js。从这里的这个问题,答案给出了如何使用 riffwave.js 的提示。

我已经通过它来弄清楚一些东西,比如多重音调,我几乎理解了所有这些,但我不知道为什么128 + 127 *会有。

它也显示在演示页面中。

谁能提供解释或告诉我如何使用该部分来修改程序?

谢谢。

0 投票
1 回答
2459 浏览

audio - 如何使用 SoX 库制作机器人或 Dalek 语音?

我想使用 SoX 库将我的声音转换为机器人声音(例如:星际争霸游戏的歌利亚声音)。

我在网上找到了机器人语音的以下序列,但它不会发出机器人语音。

过载 10 回声 0.8 0.8 5 0.7 回声 0.8 0.7 6 0.7 回声 0.8 0.7 10 0.7 回声 0.8 0.7 12 0.7 回声 0.8 0.88 12 0.7 回声 0.8 0.88 30 0.7 回声 0.6 0.6 60 0.7

发出机器人声音需要什么效果?你能告诉我一系列的效果和选项吗?

提前致谢。