问题标签 [sound-synthesis]

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 投票
1 回答
76 浏览

ios - AudioKit:长笛的无限播放时间和频移?

我似乎无法让 AudioKit 乐器按照我想要的方式运行:我希望能够连续改变频率,并且让乐器可以无限播放时间,就像振荡器一样。但是,我什至无法获得像下面这样的简单游乐场来输出任何声音:

我想要的行为是能够随时设置频率并让音符永远响起。这可能吗?

0 投票
1 回答
35 浏览

audio - 与“真实”完全不同的合成和弦声音

我正在制作一个软件音频合成器,到目前为止,我已经设法一次播放一个音调。

我的目标是使它成为和弦,即当我按下 2 个键时,它们都处于活动状态并产生声音(我知道扬声器一次只能输出一个波形)。

从我到目前为止所读的内容来看,要实现您应该做的伪复音效果,就是将具有不同幅度的音调相互添加。

我拥有的代码太大而无法完整发布,但我已经对其进行了测试并且它是正确的(它实现了我上面描述的内容,至于何时它是正确的事情,我不再那么确定了)

这是我混音的一些伪代码

我用这种方法遇到的问题是,当我尝试播放 CC# 时,它会产生一种奇怪的摆动,就像声音失真一样,它似乎使整个波形在 3-5 Hz 左右振荡。

我也知道这是“正确”的行为,因为我绘制了这样的场景,并且波形与我在这里遇到的非常相似。

我知道这是节拍效果,当您添加两个频率接近的音调时会发生这种情况,但当您在钢琴上按下 2 个键时不会发生这种情况,这意味着这种方法是不正确的。

只是为了测试,我制作了使用立体声配置的第二个版本,当按下第二个键时,它会在不同的通道上播放第二个音调,它会产生我正在寻找的确切效果。

这是一个比较

任何帮助将不胜感激,但不要说这是不可能的,因为所有严肃的合成器都可以达到这种效果

0 投票
0 回答
107 浏览

python - 如何使用频率和采样率通过 python 合成音素

我是一名 10 年级的高中计算机学生,正在寻求有关 python 音频的帮助。我没有要求任何人为我做任何工作,但我已经陷入僵局。

我正在尝试使用 python(而不是通过使用 GTTS 或 pyttsx)创建一个自定义语音程序。我正在尝试通过共振峰语音合成来创建音素。

我尝试过使用 pyaudio 和单频,并且研究过正弦波和波形,但我仍然在努力产生任何音素。

我所能做的就是制造不同频率的哔哔声。

如何仅通过在 python 中使用采样率和频率来产生音素?

0 投票
1 回答
32 浏览

javascript - 如何将多个音频文件合成为一个音频文件(MP3)并使用 JavaScript 保存

这是两个音频文件(.MP3)。A.mp3 & B.mp3 我想用 JavaScript 合成这些文件 (A & B) 并保存一个文件 (C)。请帮我。

0 投票
1 回答
102 浏览

javascript - Web Audio API 最佳实践、简单合成器、系统优化/垃圾回收

我来自 max/msp 并试图找出在优化我的代码/获得更好的性能方面编程网络音频的最佳实践。

我正在阅读这样一个事实,即出于优化原因,不能在振荡器上调用 .start(),然后是 .stop(),然后是 .start()。如果我想制作一个简单的 1 振荡器合成器类,我想知道最好的设计模式是什么。

我想在需要播放之前实例化合成器。这样我想我得到了最好的时机,如果我想在以后播放合成器,所以系统不必在每次我点击“播放音符”时创建振荡器/合成器模式。

但是最好不要在我听不到的振荡器上使用处理能力,因为例如幅度包络未打开。

这是一个简单的合成器,没有幅度包络。我怎么能做出类似的模式,我只在合成器实际播放时才使用处理能力?

最好的,拉斯

0 投票
1 回答
87 浏览

scope - Supercollider:使用 Mix.fill 进行加法合成的变量和参数范围

我对如何在加法合成中实现参数感到很困惑。

我正在尝试实现一个系统,我可以在其中对以下参数进行排序:任意数量的部分,基本频率。我不确定任意数量的部分的可行性,但在我看来,对基频进行排序确实应该是完全可能的。

这是我正在处理的代码:

这失败了Index not an Integer。而且我什至不确定如何向 z 发送参数。

我设想利用变量范围的另一种表述如下:

它也不起作用,失败了Index not an Integer

你将如何解决这个问题?

0 投票
0 回答
21 浏览

python - 为什么pysound输出空的wav文件?

我正在尝试使用 Pysound 在 Python 中制作软件合成器。第一步是让 Pysound 输出 wav 文件。我还有一个 Tkinter 窗口供用户与 Pysound 交互。这是我的代码:

它为语音 1 和语音 2 输出 0 秒的 wav 文件,我不知道为什么。

我收到这些错误消息

但我之前得到了相同的,声音文件很好。一旦我将下面的部分更改为使用 if 语句实际获取波形类型的用户输入,它就会停止工作。在此之前,用户只能控制攻击包络。

为什么它输出一个空文件?

0 投票
2 回答
54 浏览

algorithm - 弓弦(如小提琴)合成算法

是否有一种众所周知的合成弓弦乐器(例如小提琴)的算法?

我知道弹拨弦(例如吉他)有 karplus-strong 算法,我在过去已经成功实现过。

理想情况下,我想要一个描述用于生成/合成数字信号的计算机程序的算法。

例如,karplus-strong 算法可以总结如下:

  • 确定您要合成的频率的周期长度,并创建一个完全符合该大小的缓冲区

  • 用随机数填充缓冲区(白噪声)

  • 遍历缓冲区,每次平均每个点与下一个点,然后将其输出到输出流。

  • 重复所需的时间,同时应用一些阻尼

我想知道弓弦是否存在类似的东西。

脚注:

现在,我对弦如何产生声音的物理学一无所知,所以我不知道如何推导出这样的算法。对于karplus-strong算法,我只是简单的在原论文中阅读并“盲目”应用。我永远不会想到,从一阵噪音开始并不断地对其进行阻尼会产生与弹拨弦如此相似的声音。

编辑

像往常一样,近距离游行已经开始。

在投票结束此问题之前,请考虑以下事项:

  • 这个问题与物理无关。这与琴弦振动或与弓和空气相互作用产生声音的机制无关。

  • 这个问题是关于是否存在一种特定的众所周知的算法来合成声音。严格来说,这是一个关于编程的问题。

0 投票
0 回答
15 浏览

python - 是否可以循环 Pyglet 媒体播放器组?


在一个小型游戏项目中,我使用 FM、Sine 和 Square 媒体合成来制作游戏音乐,以使其体积小巧并具有复古感。
我有三个音频通道,每个通道都有一个播放器,然后我将文本文件中的所有音符排队。然后我将所有播放器放入一个 pyglet media PlayerGroup 以同步音乐的开始、停止和暂停。我的问题是我希望播放器组循环播放,或者三个单独的曲目。
  1. PlayerGroup.loop:

设置 playergroup.loop = True 似乎没有任何影响。在所有三个频道的队列都完成后,音乐停止。

  1. 循环播放各个媒体播放器

在将组中的各个音乐播放器添加到播放器组之前将它们设置为循环只会使第一个音符循环。

我已经用可以执行的完整代码示例更新了这个问题。您可以下载此文本文件并将其放在与 python 代码相同的文件夹中以运行它:https://www.mma.com/musik.txt

那么有谁知道如何循环 Python Pyglet 媒体播放器组?