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

android - 安卓声音合成

我正在尝试使用 AudioTrack 类播放合成声音(基本上是 2 个正弦波和一些噪音)。它似乎与 javax.sound.sampled 中的 SourceDataLine 没有什么不同,但合成真的很慢。即使对于 ARM 标准,认为 32768 个样本(16 位,立体声,总共 65536 个)需要超过 1 秒才能在 Nexus 4 上呈现(使用 System.nanotime() 测量,写入 AudioTrack 除外)是不现实的。合成部分几乎与此http://audioprograming.wordpress.com/2012/10/18/a-simple-synth-in-android-step-by-step-guide-using-the-java-sdk/相同,唯一的区别是我播放立体声(我不能将其降低为单声道,因为它是双耳音调)。

有任何想法吗?我能做些什么?

提前致谢

0 投票
2 回答
1253 浏览

processing - 如何通过 OSC 将音频从 Processing 发送到 Chuck/Pure Data?

我有一个处理程序,它导出一串信息,这些信息最终会变成声音。这类似于 photo sounder 或 metasynth 的工作方式,将像素转化为声音。我希望能够将部分信息流式传输到 Chuck 或 Pure Data。

现在我不想在处理中实际处理音频。该程序仅用于从触摸界面和一系列图像生成信息。

我知道我可以使用 OSC 从处理(我想,我找不到任何示例)发送数据类型 b(用于 blob)。

我找不到任何关于如何在 Chuck 或 Pure Data 中接收此类信息然后将其用于生成声音的示例。

我承认我可能没有在其中一些过程中搜索正确的术语,因此我们将不胜感激。

0 投票
1 回答
1829 浏览

javascript - 这个简单的 FM 合成器设计有什么问题?

我正在尝试使用 Audiolet(合成库,http : //oampo.github.io/音频/api.html )

Audiolet 允许您将合成器构建为节点图(振荡器、DSP、包络发生器等)。

OPL2 有九个通道,每个通道有两个运算符(振荡器)。通常,每个通道中的一个振荡器调制另一个的频率。为了模拟这一点,我为每个通道建立了一个节点链:

Synth 节点链(九个通道之一)

已实施的 OPL2 通道

节点链创建及连接代码:

然而,当我设置调制器和载波节点的参数(振荡器波形、相对频率、衰减、ADSR 参数)和触发音符时,输出与具有大致相同参数的体面 OPL2 仿真器几乎没有相似之处。有些声音在球场上。其他人则相当不愉快。

我对如何进行有一些想法(我想在不同阶段绘制输出将是一个很好的起点),但我希望有经验的人可以指出我正确的方向,或者指出我的明显错误我在做。我没有信号处理或强大的数学背景。我对FM没有深刻的直观理解。

我怀疑的一些问题是:

1) 我的 FM 实现(如上图)根本上是错误的。此外,播放音符的功能可能存在问题(设置振荡器频率,并在触发 ADSR 包络之前缩放和偏移调制器):

2) FM 合成器的输出可能对调制器 ADSR 包络形状的微小差异高度敏感(请告诉我这是不是真的!),而我的 ADSR 包络最多是真实 OPL2 中 ADSR 的粗略近似。我的实现还缺少一些看起来相对不重要的功能(例如键缩放),但可能会显着影响 FM 合成器的声音(同样,我不确定)。

0 投票
1 回答
264 浏览

java - 播放采样声音 javax.sound.sampled 时的巨大延迟

我有一个可以正常工作的软合成器,它可以正确输出和播放样本,但是我有一个巨大的延迟,大约一秒。我的代码基于此处找到的一篇文章:http ://www.drdobbs.com/jvm/creating-music-components-in-java/229700113?pgno=2

我忽略了什么吗?样本的生成不是问题,它发生得很快而且很简单。

我尝试将缓冲区大小更改为几个不同的值,但没有成功。我目前正在 OSX 机器上进行测试,这可能是问题吗?

仅供参考,完成绝不是错误的。到了沉默的时候,我只需将 0 的样本输入缓冲区。

0 投票
3 回答
132 浏览

android - 这个ph参数是什么?

我正在测试我在android中的一个小音频应用程序中找到的这段代码,但我有点卡住了。

我知道这个循环可以合成声音,但我不知道“ph”参数是什么以及它如何适合生成正弦波的数学。如果有人知道它是什么,可以向我解释一下吗?

0 投票
0 回答
464 浏览

javascript - 线性斜坡不与增益节点线性作用

编辑:找到修复。g.gain.setValueAtTime(0,now);在设置下面的攻击坡道之前,我失踪了。g.gain.value = 0;添加后也是多余的。

所以我有一个奇怪的问题。让我提供一些背景知识:我正在实现一个复音合成器,其中以一次性方式创建和播放音符 - 每次触发键时都会创建一个新振荡器。

我首先在全局范围内实现了音量包络,但是当触发新音符时,这会干扰过去音符的衰减/释放,但是单声道,起音、衰减和释放包络都按预期工作。

所以我的解决方法是在触发按键时即时创建振荡器和包络。这很好用,但有点奇怪:衰减和释放都像以前一样工作,音符音量独特地包络,但起音包络不是线性倾斜的。相反,它会延迟指定的任何攻击时间并一次全部发射。

谁能明白为什么攻击包络会延迟并立即采取行动,而不是按照应有的方式线性修改增益?

以下是相关功能:

0 投票
1 回答
107 浏览

ios - 防止通知声音干扰声音应用

我正在为 iPad 制作一个合成器类型的应用程序。问题是 - 每当我在演奏并且有人给我发消息时,声音会降低合成器应用程序的声音。这有点破坏性。我该如何防止这种情况?也许您可以看到通知,但声音不会自动降低合成器的音量。我无法想象我的应用程序执行并被所有 iMessages 打断!

谢谢。

0 投票
1 回答
273 浏览

clojure - clojure,文字向量与函数结果不同

我正在尝试用clojure的泛音库制作音乐。为了产生有趣的声音,加法合成很有用,这意味着我需要几个频率的正弦振荡器并简单地添加它们。在泛音中,要创建一个合成器,实现这一点,我可以写:

为了更可重用,我编写了一个函数,它接受一个频率并返回一个包含所有这些频率的列表,您可以在代码片段中看到:

执行时(split-freq 100),REPL 给了我以下信息:

和输入完全一样,我提供了上面的map函数。事实上,我复制了结果。现在,我试试这个:

不幸的是,REPL 告诉我,我做错了:

但是这段代码工作正常:

虽然,我只是简单地输入了函数定义。

我认为我主要缺乏理解。我想,如果其中一个版本有效,其他版本也必须有效。

我的问题是:为什么我的“改进”版本不起作用?为什么第一个片段有效?我该如何规避这种行为?

0 投票
1 回答
89 浏览

signal-processing - 波表采样变化

我对制作一个在 8 位 MCU 上实现的简单数字合成器很感兴趣。我想制作波表以准确表示声音。标准波表似乎要么有一个用于多个频率的表,要么有一个具有分数增量的样本,其中缺少由程序插值的数据以创建不同的频率。

是否有可能为给定的波形创建一个表,可能是低频,并改变程序轮询表的速率以生成不同的频率,然后处理这些频率。我的 MCU(免费一个,没有预算)相当慢,所以我没有空间容纳大量波表,也没有大量处理,所以我试图在我能做到的地方吝啬。有人看过这个实现吗?

0 投票
1 回答
241 浏览

audio - 将超声时间轨迹转换为 .wav

我有兴趣将超声时间轨迹(由超声换能器的压电元件产生的电压 VS 时间)转换为 .wav 文件。

我的目标是利用大量的 .wav/.mp3 javascript 库来获得更多洞察力。

我想知道(1)如何将时间跟踪转换为 .wav,(2)如何将 .wav 转换为时间跟踪,以及(3)我还要求您提供任何可能需要的公正见解提供。

谢谢