Algorithm 通过算法生成乐器声音

Algorithm 通过算法生成乐器声音,algorithm,audio,Algorithm,Audio,是否可以仅使用算法生成乐器的声音?或者只能通过预先录制的声音样本来完成吗?这是完全可能的——这是我们要做的事情之一 可能并不意味着简单。合成器通常很昂贵,使用的算法也很复杂——我之前链接的维基百科页面上有一些合成器的链接 预先录制的声音使用起来更简单、更便宜,但也有其局限性——例如,它们听起来更“重复”。波表合成()是真实乐器合成的最现实的方法,因为它会采集样本并对其进行轻微更改(例如添加颤音、表达式等) 大多数乐器(尤其是管乐器和铜管乐器)产生的波形非常复杂,纯算法合成还没有优化到足以在当前硬

是否可以仅使用算法生成乐器的声音?或者只能通过预先录制的声音样本来完成吗?

这是完全可能的——这是我们要做的事情之一

可能并不意味着简单。合成器通常很昂贵,使用的算法也很复杂——我之前链接的维基百科页面上有一些合成器的链接

预先录制的声音使用起来更简单、更便宜,但也有其局限性——例如,它们听起来更“重复”。

波表合成()是真实乐器合成的最现实的方法,因为它会采集样本并对其进行轻微更改(例如添加颤音、表达式等)

大多数乐器(尤其是管乐器和铜管乐器)产生的波形非常复杂,纯算法合成还没有优化到足以在当前硬件上运行的程度——即使是这样,编写这种算法的技术复杂性也是巨大的


有趣的网站。

当然是,而且有很多方法。Wolfram最近发布了一款使用细胞自动机的软件(如果你知道Wolfram的话,这并不奇怪)。详细介绍了它的功能。

几年前,《声音上的声音》杂志推出了一个名为“Synth Secrets”的优秀系列,现在可以免费使用。它们很好地介绍了硬件合成器(模拟和数字)中使用的技术类型,包括一些文章,讨论了复制某些真实世界乐器声音的困难,如拨弦和弓弦、铜管、圈套鼓、有声钢琴等。

除了这里提供的答案,还有一些分析合成框架,用于构建输入声音的数学模型(通常基于捕捉正弦或噪声分量的轨迹),允许转换和再合成。一些著名的框架是:SMS(通过C++项目可用)和LuiS.< 仪器的物理模型也是一种选择——它们对仪器的物理特性(如簧片刚度、气孔孔径、按键)进行建模,并且通常通过合并非线性效应(如过流)来产生真实效果。是C++中的一个框架。
这些框架通常比波形表合成选项更重,但可以为操纵提供更多参数

Karplus Strong算法能够很好地合成弹拨的字符串。它也可以用几行C来编码。你创建一个浮点数的循环缓冲区(长度与波长ie 1/f成比例),然后填充-1到1之间的随机噪声

然后循环:每个循环,用前两个值的平均值替换当前索引中的值,并发出这个新值

index = (index+1) % bufSize; 
outVal = buf[index] = decay * 0.5 * ( buf[index-1] + buf[index-2] );
生成的字节流为您提供声音。当然,这是可以大大优化的

要使声波在一秒钟后衰减到其原始强度的0.15,可以将“衰减”设置为:

#define DECAY_1S =.15
Float32 decay = pow(DECAY_1S, 1.0f / freq);
注意:您需要调整原始缓冲区的大小,使其包含一个完整的波形。因此,如果您希望生成441Hz的声音,且采样率为44.1KHz,则需要在缓冲区中分配100个元素

你可以把它想象成一个共振室,它的基频是441Hz,最初是通电的,能量从环中的每个点同时向外耗散。神奇的是,它似乎把自己组织成一个基频的泛音


有人能发布更多的算法吗?连续音调的算法如何?

经过几天的搜索,这是我找到的最好的资源:

这是合成声音的宝库

STK 例如,C合成字符串的例子,也是用C++编写的帮助这个工作的声音工具包。 这会让我安静好几个星期,而我会继续挖掘它。

Chuck

详细介绍了SMule如何为iPhone制作陶笛(我相信每个人都看过这则广告)。他们是通过移植来实现的


这适用于MacOS X、Windows和Linux。

我在FM合成方面获得了很多成功和乐趣。这是一种计算简便的方法,是20世纪80年代大量流行合成器声音的来源(是无处不在的雅马哈DX-7的基础)

我确实用它在飞行中产生声音,而不是用录音。一个简单的动态生成的字符串合成器声音示例可以从以下位置获得(免费下载,Win64)。同一程序上的Organsynth是一个简单的加法合成算法

我得到处找一些关于这方面的好教程。我知道我们在java-gaming.org上讨论了很多,当时我正试图弄清楚,然后在帮助nsigma解决FM算法中的一个难题时。如果您想将多个调制器链接到一个载波,主要的是使用相位调制而不是频率调制

这提醒了我!一种令人惊叹的基于java的声音发生器,可用于检查,允许生成多种不同形式的合成,具有实时控制:

网上是否有教程介绍如何生成特定乐器特定音符的声音?钢琴上的A4(440Hz)包含所有方程式和变量的分步指南…@LaSha:从@Andy链接到:“归根结底,使用添加剂合成是没有效率的。在实践中,你必须添加大量的频率,使声音逼真。在添加了近百个频率分量后,我几乎可以重现原声钢琴的音符。具有尖锐攻击包络的乐器,如钢琴上的锤击,需要许多频率才能使尖锐的开始听起来正确