16个版本
0.2.12-alpha.0 | 2023年4月7日 |
---|---|
0.2.11-alpha.0 | 2022年12月19日 |
0.2.5-alpha.0 | 2022年6月21日 |
0.2.4-alpha.0 | 2022年3月14日 |
0.1.42-alpha.0 | 2021年10月27日 |
#10 in #surge
26 每月下载
在 3 crates 中使用
750KB
13K SLoC
surgeosc-wavetable
Surgeosc-wavetable是一个Rust包,为Surge合成器系统中的波表振荡器提供支持。
令牌
control_group
control_group
令牌代表给定振荡器的相关控制参数的组。这些参数可以包括振荡器的频率、波形形状和幅度等。
control_type
control_type
令牌描述了与给定参数关联的控制类型。例如,一个参数可能是一个连续值,可以被LFO或包络调制,或者它可能是一个开关,可以打开或关闭。
default_value
default_value
令牌代表给定参数的默认值。这是在初始化或重置振荡器时参数将设置的值。
max_value
和 min_value
max_value
和 min_value
令牌代表给定参数可以采取的最大和最小值。这些值通常用于将用户输入约束在有效范围内。
modulateable
modulateable
令牌指示给定参数是否可以被LFO或其他调制源调制。如果参数是可调制的,则可以使用它创建复杂、不断变化的音色。
moverate
moverate
令牌代表给定参数可以调制的速率。这通常以Hz或参数当前值的百分比表示。
snap
snap
令牌指示给定参数是否可以跳转到离散值。这通常用于控制离散设置的参数,例如多声部补丁中的声部数。
value_type
value_type
令牌描述了给定参数的数据类型。这可以包括浮点值、整数和布尔值。
总体来说,surgeosc-wavetable 库为 Surge 合成器系统中的 wavetable 振荡器提供了灵活且强大的工具集。通过提供对振荡器参数和调制源的精细控制,它使用户能够轻松地创建复杂且动态的声音。
48> 您能告诉我关于 wavetable 振荡器什么?
wavetable 振荡器是一种在数字音频合成中常用的音频振荡器。它使用一个预先计算好的样本值表,表示一个波形的一个周期,然后以特定频率读取以生成所需的音调。该表可以用于生成各种波形,包括正弦波、方波、锯齿波等更复杂的波形。
wavetable 振荡器通常有多种 wavetable 可供选择,每个 wavetable 都有其独特的波形集。振荡器也可能具有在 wavetable 中的样本值之间进行插值的能力,以创建更平滑的波形,或者使用包络或 LFO 调制波形以增加额外的音色变化。
wavetable 振荡器通常与其他合成技术(如加性或减性合成)结合使用,以创建复杂的声音。它们在数字合成器和采样器中很常见,常用于电子音乐流派,如技术、迷幻和 Dubstep。
从数学角度讲,wavetable 振荡器依赖于周期函数和傅里叶级数的概念。周期函数是在固定间隔内重复自身的函数,可以用傅里叶级数表示,傅里叶级数是由不同频率和振幅的正弦波和余弦波之和。通过从 wavetable 中选择适当的振幅和频率,wavetable 振荡器可以生成任何周期性波形。在特定频率下读取 wavetable 的过程相当于对连续波形进行采样,并对其应用傅里叶变换以获得离散频率分量。
49> 这些需要多少内存?
wavetable 振荡器所需的内存量取决于 wavetable 的大小、表中样本的位深度以及通道数(单声道或立体声)。
例如,一个单声道的 wavetable 振荡器,其 2048 个样本的表在 16 位深度下需要 4 KB 的内存(2048 * 2 字节/样本 = 4096 字节)。如果您将位深度增加到 24 位,内存需求翻倍至 8 KB。如果将振荡器改为立体声,内存需求再次翻倍至 16 KB。
一些 wavetable 振荡器使用多个表来提供不同的波形或允许在表之间进行交叉淡入淡出。在这种情况下,内存需求会更大。
值得注意的是,一些 wavetable 振荡器使用动态分配以避免为整个 wavetable 预分配内存。相反,它们仅加载当前频率所需的表部分,并在需要时动态加载其他部分。这可以减少内存使用,但会增加计算开销。
50> 我们可以用 wavetable 做些什么?
在音频合成中,wavetable 可以以多种方式使用。以下是一些示例:
-
振荡器:wavetable 可以用作合成中振荡器波形的基址。这允许从单个波形生成各种复杂和变化的声音。
-
样本播放:wavetable 可以用作播放样本的来源。这在采样器中很常见,其中每个样本都存储在 wavetable 中,可以以不同的音高和不同的包络播放。
-
颗粒合成:颗粒合成涉及将音频文件分解成小块,然后以不同的方式播放它们。wavetable 可以用作这些颗粒的来源,与简单地循环单个样本相比,可以产生更复杂和多样化的声音。
-
声音处理:波形表可以用来处理现有声音。例如,波形表可以用作包络线来塑造声音的振幅,或者用作滤波器来塑造声音的频率内容。
总的来说,波形表为声音合成和处理提供了一种强大的工具,可以创造出各种复杂且不断变化的声音。
51>从数学角度来看如何呢?我们可以在波形表或其子组件上执行哪些数学运算来改善我们的声音呢?
从数学角度来看,我们可以在波形表或其子组件上执行各种运算来改善合成器的声音。以下是一些例子:
-
窗口化:波形表合成中常用的一种技术是对波形应用窗口函数。这有助于减少由于波形开始和结束处的突然转换而产生的伪影。用于此目的的常见窗口函数是汉宁窗,其数学形式如下:
w(n) = 0.5 - 0.5 * cos(2πn/(N-1))
其中,n是样本索引,N是窗口长度,w(n)是窗口在索引n处的值。
-
插值:波形表合成中另一种重要的技术是波形插值。这涉及通过在波形表中的现有波形之间进行插值来生成新的波形。用于此目的最常用的插值方法是线性插值,它涉及计算新的样本值,这是通过对波形表中最接近的两个样本取加权平均来完成的。数学上,这可以表示为:
y(n) = (1 - α) * x(floor(n)) + α * x(ceil(n))
其中,x(n)是波形表在索引n处的值,floor(n)是小于或等于n的最大整数,ceil(n)是大于或等于n的最小整数,α是n的小数部分。
-
相位失真:相位失真是一种通过修改波形表中的波形相位来产生新音色的技术。这可以通过对波形应用相位偏移或使用非线性函数在时域中扭曲波形来实现。数学上,相位失真可以表示为:
y(n) = x(n + φ(n))
其中,x(n)是波形表在索引n处的值,φ(n)是相位失真函数,y(n)是输出波形在索引n处的值。
这些都是波形表合成中使用的数学技术的一些例子。还有许多其他技术,如频率调制、幅度调制和颗粒合成等。
52>你能教我更多关于相位失真的内容吗?我们使用哪些插值方法?哪种窗口在此用例中最好?
相位失真是一种波形整形合成类型,其中通过改变波形的相位来创建新的声音。它涉及使用通过实时改变波形相位来操纵的波形表。这是通过对波形应用时变相位偏移来实现的,这可以改变其谐波内容并创建新的音色。
相位失真的一个常见方法涉及使用插值算法在波形表中的不同相位值之间平滑过渡。在波形表合成中,最常用的插值方法是线性插值和立方插值。
线性插值计算两个已知点之间线上的一个点的值。在波形表合成中,线性插值用于计算波形表中两个已知样本之间的波形中的一个点的值。虽然这是一个相对简单且计算成本较低的算法,但线性插值可能会在高频内容中引入混叠和失真伪影。
另一方面,三次插值使用三次多项式来插值两个已知点之间的点值。这种方法在波表样本之间提供了更平滑、更准确的过渡,从而产生了更高质量的波形,且失真更少。然而,三次插值比线性插值计算成本更高。
至于窗口,相位失真合成中最常用的窗口有汉宁窗口和高斯窗口。汉宁窗口是一种余弦平方窗口,它逐渐减弱波表样本的边缘,减少了高频内容,并最小化了混叠。另一方面,高斯窗口使用钟形曲线来逐渐减弱样本的边缘,这可以创建在样本之间更平滑、更自然的过渡。
总之,相位失真是在波表合成中的一种强大技术,它允许创建复杂而有趣的声音。可以像线性插值和三次插值这样的插值方法来平滑波表样本之间的过渡,而汉宁窗口和高斯窗口等窗口可以用来减少混叠并提高合成波形的品质。
53> 有趣的是——我们如何调整波表的频谱特性呢?
调整波表振荡器的频谱特性有各种技术。一种常见的方法是对波表的相位输入应用频率调制(FM)。FM涉及使用调制波形调制载波波形的频率,从而产生扩展载波频谱的边带。
另一种方法是使用幅度调制(AM)来调整波表的频谱特性。AM涉及将载波波形的幅度与调制波形相乘。这可以产生更丰富的谐波内容,以及改变谐波之间的相位关系。
除了FM和AM之外,还有其他技术可以用来调整波表振荡器的频谱特性,如滤波和波形变换。这些技术涉及修改波形本身,而不是调制其相位或幅度。例如,滤波可以用来去除或增强某些频率范围,而波形变换可以用来引入非线性,从而改变波形的谐波内容。
54> 谢谢。我们如何使波表的帧之间相互关联,以便过渡更愉悦呢?
实现波表帧之间平滑过渡的一种方法是通过确保相邻帧在频谱上相似。这可以通过仔细选择每个帧的频谱内容来实现,以便它平滑地过渡到下一个帧的频谱内容。
确保相邻帧频谱相似的一种技术是使用一种称为“相位编码”的技术。相位编码涉及分析给定帧的频谱内容,然后在不同的时间尺度上重新合成该帧,同时保持相同的频谱内容。这可以用来拉伸或压缩给定帧的时间域,同时保持其频谱特性。
确保相邻帧频谱相似的另一种技术是使用一种称为“频谱变形”的技术。频谱变形涉及在两个或多个帧的频谱内容之间进行插值,以创建它们之间的平滑过渡。这可以通过应用两个帧频谱内容的加权总和来实现,其中权重随时间平滑插值。
还有许多其他技术可以用来确保帧之间的平滑过渡,包括对帧应用窗口函数以平滑其边缘,使用交叉淡入淡出技术来混合帧,以及仔细选择相邻帧的起始和结束相位以确保连续性。最终,最佳方法将取决于正在合成的声音的具体要求以及可用的计算资源。
55> 你能教我如何进行频谱变形吗?
当然!频谱变形是一种技术,通过变形声音的频谱内容来平滑地过渡到两个或更多不同的声音。它通常用于声音合成和声音设计中,以创建有趣和不断发展的音色。
以下是频谱变形的逐步指南
-
选择要变形的声音:第一步是选择您想要变形的声音。这些可以是两个完全不同的声音,或者是同一声音的变体。
-
分析每个声音的频谱内容:使用频谱分析工具分析每个声音的频谱内容。这将为您提供每个声音的频率内容的视觉表示。
-
确定关键频谱特征:确定每个声音的关键频谱特征,例如某些频率带的缺失或特定谐波的重要性。
-
为每个声音创建频谱配置文件:根据关键频谱特征,为每个声音创建一个频谱配置文件。这可以通过创建一个显示每个声音频率内容的图表或图表来完成。
-
选择变形路径:选择变形过程的路由。这可能是在两个声音之间的直线,或者是一个更复杂的路径,该路径遵循特定轨迹通过频谱空间。
-
为路径上的每个点创建频谱配置文件:将路径划分为相等的间隔,并为路径上的每个点创建一个频谱配置文件。这些配置文件应该是您正在变形的两个声音的频谱配置文件之间的中间步骤。
-
合成变形声音:一旦您有了路径上每个点的频谱配置文件,您就可以通过根据它们各自的频谱配置文件在两个声音之间进行插值来合成变形声音。
-
应用额外处理:在合成变形声音之后,您可以通过应用过滤、调制或效果等额外处理来进一步塑造声音的音色。
请注意,频谱变形可能是一个复杂的过程,结果的质量将取决于您频谱分析的准确性以及您插值方法的精度。然而,通过一些实践和实验,您可以使用这种技术创建独特且有趣的声音。
56> 谢谢!它在数学上是如何工作的?
频谱变形涉及操纵两个声波的四次变换,目的是平滑地从一种声音的频谱特征过渡到另一种。
声波的四次变换将信号表示为不同频率、幅度和相位的正弦波和余弦波的总和。通过修改这些组成波的幅度和相位,我们可以创建具有原始声音一些频谱特征的新声音。
实现频谱变形的一种数学方法是首先使用快速傅里叶变换(FFT)算法计算每个声波的四次变换。然后,从变换中提取每个组成波的幅度和相位,并随着时间的推移在这两组幅度和相位之间进行插值,以在两种声音的频谱特征之间创建平滑的过渡。
有几种方法可以在幅度和相位之间进行插值,包括线性插值、三次插值和窗口 sinc 插值。这些方法在计算复杂性和结果变形声音的质量方面有所不同。
一旦计算了插值后的幅度和相位,就使用逆傅里叶变换将修改后的频谱特征转换回时域,产生频谱变形声音。
57> 谢谢!相位编码是什么?你能教我吗?
当然!相位编码是一种用于时间拉伸和音高移位的音频信号技术。基本思想是将信号划分为小的重叠帧,然后使用称为短时傅里叶变换(STFT)的技术在频域中重新采样和移位每个帧。
短时傅里叶变换(STFT)是傅里叶变换的一种变体,它作用于较长信号中的短时重叠段,而不是一次性作用于整个信号。结果STFT是一个复数矩阵,表示信号随时间的频率内容。通过对信号的多个重叠帧执行STFT,我们可以获得信号频率内容的时变表示。
要执行相位声码,我们首先将STFT应用于输入信号,以获得其频率内容的时变表示。然后,我们对STFT系数应用一些频域变换,以改变信号的音高或节奏。这可能包括改变系数的相位、调整它们的幅度或两者兼而有之。
在应用频域变换后,我们使用逆STFT将修改后的STFT转换回时域。这结果生成输入信号的时延或音高变换版本。
相位声码的一个关键挑战是保持信号不同频率分量之间的相位关系。如果我们简单地改变STFT系数的相位,我们可能在输出信号中引入不需要的伪影。为了解决这个问题,相位声码通常涉及某种形式的相位校正,以确保在不同的信号帧之间保持相位关系。
总的来说,相位声码是一种强大的技术,可以在最小化引入不需要伪影的同时,对音频信号进行时延和音高变换。
58>一旦我们有了wavetable,我们如何将其用作振荡器?
要将wavetable用作振荡器,我们需要知道如何以产生可听波形的方式读取表格。基本思想是以一定的速率读取表格,并在达到表格末尾时循环。读取表格的速率决定了输出声音的音高。
以下是一些伪代码来阐述基本思想
// Initialize the oscillator
phase = 0.0
table_size = size_of_wavetable
// In the audio processing loop
for each sample:
// Calculate the current phase
phase_increment = frequency / sample_rate
phase += phase_increment
// Wrap the phase around when we reach the end of the table
while phase >= table_size:
phase -= table_size
// Read the table at the current phase and output the sample
sample = interpolate_table(wavetable, phase)
output_sample(sample)
在此代码中,frequency
是输出波形的所需频率,sample_rate
是音频系统的采样率,interpolate_table
是一个函数,它读取具有分数相位值的表格,并返回插值样本值。所使用的插值方法将影响输出波形的品质,如前所述。
实际上,有许多优化和基本算法的变体可以用来提高性能或添加波形塑造、调制或同步多个振荡器等功能。
59>我们如何参数化wavetable振荡器?
根据具体实现,wavetable振荡器可以以多种方式参数化,但以下是一些常见的参数
-
频率/音高:这控制wavetable的播放速度,因此也控制生成的声音的音高。
-
幅度/音量:这控制生成的声音的整体音量。
-
wavetable索引/位置:此参数控制正在读取的wavetable部分。它可以用来在不同的波形之间进行变形。
-
wavetable大小:此参数确定wavetable的长度,这可以影响生成的声音的品质。
-
插值模式:此参数确定在读取样本之间时如何插值wavetable中的值。常见的插值模式包括线性、三次和sinc。
-
FM/PM量:这些参数控制施加到振荡器的频率调制或相位调制的量。
-
滤波器截止/共振:这些参数控制施加到振荡器输出上的滤波器。
-
包络/低频振荡器(LFO):这些参数可以用来在时间上调节振荡器的各个方面,例如幅度、波形表位置或滤波器截止频率。
这些只是一些常见的参数,具体实现波形表振荡器时还有许多其他可能性。
使用这些参数时有什么注意事项吗?
使用波形表振荡器时需要注意以下几点
-
内存使用:如前所述,波形表振荡器可能占用大量内存,特别是当波形表很大且分辨率高时。在设计包含多个波形表振荡器实例的补丁或乐器时,这一点非常重要。
-
混叠:当以不同于原始采样频率的频率播放波形表时,可能会发生混叠。混叠是指当波形的高频成分(超过奈奎斯特频率)在播放时没有正确过滤时可能出现的失真。为了避免这种情况,重要的是要使用适当的抗混叠技术,如过采样或低通滤波。
-
插值质量:用于从波形表生成波形所使用的插值算法的质量可以显著影响振荡器的音质。高质量的插值算法可以帮助减少混叠或相位失真等伪影。
-
波形表设计:波形表本身的质量也可以对振荡器的声音产生重大影响。在设计波形表时应特别注意,包括波形的选择、分辨率和频谱特性。同时,还应考虑波形表的使用方式(例如作为单周期波形或作为变形波形表)并据此进行设计。
-
性能考虑:波形表振荡器可能计算量大,特别是当使用高分辨率波形表或复杂的插值算法时。在补丁或乐器中使用多个波形表振荡器实例时,应考虑性能影响,并尽可能优化实现。
61>硬件合成器中波形表的历史是怎样的?
硬件合成器中波形表的概念可以追溯到20世纪70年代和80年代,当时数字合成技术刚刚兴起。波形表合成的最早实现之一是Wolfgang Palm设计的PPG Wave合成器,于1981年发布。PPG Wave使用一套64个波形表,每个包含64个样本,以创建丰富而复杂的音色。
20世纪80年代和90年代采用波形表合成的其他合成器包括Kawai K5、Ensoniq ESQ-1、Waldorf Microwave和Access Virus。这些乐器使用波形表产生各种声音,从现实乐器仿真到超凡脱俗的纹理和音色。
今天,波形表合成在硬件和软件合成器中仍然是一种流行的技术,许多现代乐器提供高级波形表编辑和操纵功能。
62>哪些硬件合成器使用波形表?哪些最著名,为什么?
有许多硬件合成器使用波形表作为合成方法。以下是一些最著名的例子
-
PPG Wave - PPG Wave是第一个使用波形表合成的硬件合成器之一。它由Wolfgang Palm创建并于1981年发布。PPG Wave以其独特的声音而闻名,并被许多著名音乐家使用,包括Jean Michel Jarre和Vangelis。
-
Waldorf Microwave - Waldorf Microwave于1989年发布,是第一个提供实时控制波形表位置的波形表合成器之一。它以其复杂的调制功能和独特的声音而闻名。
-
Korg Wavestation - Korg Wavestation于1990年发布,是第一个使用矢量合成(允许混合四种不同的波形)的硬件合成器之一。它以其丰富的垫音和演变纹理而闻名。
-
Access Virus - Access Virus 首次于1997年发布,已成为电子音乐制作中最受欢迎的硬件合成器之一。它使用波表合成作为其音源引擎之一,以其强大的声音和多功能调制能力而闻名。
-
Serum - Serum 是由 Xfer Records 创建的软件合成器,其主要的音源引擎为波表合成。近年来,它已成为最受欢迎的软件合成器之一,以其高质量的音质和直观的界面而著称。
所有这些合成器因其独特的声音和强大的声音设计能力而备受推崇,多年来已被许多著名音乐家所使用。
63>那么关于使用波表的软件合成器呢?你能告诉我它们的历史吗?
当然可以!软件合成器中使用波表始于20世纪90年代,当时 Wolfgang Palm 开发了 PPG Wave 合成器。PPG Wave 使用波表作为生成具有复杂频谱内容声音的方法,其独特的声音很快使其成为音乐家和制作人的首选。
在此之后,许多软件合成器被开发出来,它们将波表作为其音源引擎的关键部分。一些值得注意的例子包括
-
Waldorf Wave:1993年发布,是一款高端波表合成器,很快在专业音乐家和音响设计师中流行起来。它具有复杂的调制矩阵和独特的波表编辑界面,使用户能够创建自己的自定义波表。
-
NI Massive:2007年发布,是由 Native Instruments 开发的软件合成器,使用波表作为其主要的音源。它因其能够以相对简单的界面创建大型、复杂的音效而受到电子音乐家和制作人的欢迎。
-
Serum:2014年发布,是由 Xfer Records 开发的软件合成器,使用波表作为其主要的音源。它因其高质量的音源引擎和直观的界面而受到欢迎,现在被各种类型的制作人广泛应用于声音设计。
其他使用波表的知名软件合成器包括 Waldorf 的 Largo、Arturia 的 Pigments 和 Vengeance Sound 的 Avenger。
总的来说,波表合成已成为现代电子音乐制作的重要组成部分,许多软件合成器现在都将波表功能作为其音源引擎的一部分。
64>你能给我一个使用波表的软件合成器的详细家谱吗?
当然可以!以下是使用波表的软件合成器的非详尽家谱
-
PPG Wave 2.V(2008)- 80年代标志性 PPG Wave 合成器的虚拟复制品,具有波表合成和模拟式滤波器。
- 由 Wolfgang Palm 开发。
-
Waldorf Blofeld(2007)- 一种混合数字/模拟硬件合成器,具有波表合成功能。
- 由 Waldorf Music 开发。
-
Serum(2014)- Xfer Records 开发的流行软件合成器,具有先进的波表合成功能和直观的用户界面。
- 由 Xfer Records 的 Steve Duda 开发。
-
Massive(2007)- Native Instruments 开发的流行软件合成器,具有波表合成和一系列调制选项。
- 由 Native Instruments 开发。
-
Falcon(2016)- 由 UVI 开发的一款多功能软件合成器,具有波表合成、粒度合成、采样等功能。
- 由 UVI 开发。
-
Omnisphere(2008)- Spectrasonics 开发的旗舰软件合成器,具有庞大的波表库和广泛的声音设计能力。
- 由 Spectrasonics 的 Eric Persing 开发。
请注意,这并不是一个详尽的列表,还有许多其他软件合成器以各种方式利用波表合成。
65>你能以一棵树的形式展示给我,并添加其他合成器吗?
当然可以!以下是展示一些主要使用波表的软件合成器、它们的开发者以及发布日期的树形图
┌───────────────────────────────────┐
│ Wavetable │
│ (Ableton) │
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ Serum (Xfer Records) │
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ Massive (Native Instruments) │
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ Falcon (UVI) / Omnisphere │
│ (Spectrasonics) │
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ Kontakt (Native Instruments)│
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ HALion (Steinberg) / SampleOne │
│ (PreSonus Studio One) │
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ Codex (Waldorf) / Icarus │
│ (Tone2) │
└───────────────────────────────────┘
│
│
┌───────────────────────────────────┐
│ Wavetable (Surge) │
└───────────────────────────────────┘
请注意,这不是一个详尽的列表,可能还有其他使用wavetable的软件合成器未被包括在内。
66> 那个图实际上不是一个树,节点之间的连接本身并没有意义,但嘿,还有一些不错的方框和线条。你能给我画一个surge合成器的ASCII艺术图吗?
当然可以,这里有一个Surge合成器标志的ASCII艺术表示。
,---.,---.,---.,---.,---.,---.,---.,---.,---.
|---',---|| ||---'| `---.|---',---|| |
`---'`---^` '`---'` `---'`---'`---^`---'
这里是一个Surge合成器的粗略ASCII艺术表示。
.
..
..
..
..
..
..`````````... `` ....
`.---.` `. `.` `.
.--.` `. `. `.` `.
`-.` `. `--. `.
`. `. `.` `.
.` `. `.` `.
`. `. `.` `.
`. `. `.` .
.` `-. `.` .
`. `. `.` .
.` `-. `.` .
`. `.` .
. `.` .
`. `.` `.`
`. `. .`
.` `-. `.
`. `--.
`.
`.
.`
`.
请注意,这是一个非常粗略的表示,并且不是按比例的,但希望它能给你一个关于合成器视觉外观的直观印象。
67> 谢谢!看起来就像是我会画的那样
不客气!我很高兴它符合你的期望。
68> 好的,你能给我展示一个硬件合成器的家谱吗?
当然,这里是一个使用wavetable的硬件合成器的家谱。
┌────────────────────────── Ensoniq VFX
│
┌──────────┤
│ └────────────────────────── Ensoniq SD
│
│ ┌─────────────────────── PPG Wave 2
│ │
┌──────────┴──────┐ │ ┌───────────────── PPG Wave 2.3
│ │ │ │
│ │ │ │ ┌──────────── PPG Wave 2.2
│ │ │ │ │
│ │ │ │ │ ┌──── Sequential Prophet VS
│ │ │ │ │ │
│ │ │ │ │ │ ┌─── Waldorf Microwave
│ │ │ │ │ │ │
│ │ │ │ │ │ │ ┌────── Access Virus
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ ┌─── Waldorf Blofeld
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ ┌── Waldorf Iridium
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ └─── Waldorf Kyra
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └────── Access TI
│ │ │ │ │ │ │
│ │ │ │ │ │ └─────────── PPG Wave 2.V
│ │ │ │ │ │
│ │ │ │ │ └────────── Sequential Prophet X
│ │ │ │ │
│ │ │ │ │ ┌────────── Kawai K5000
│ │ │ │ │ │
│ │ │ │ │ └───── Waldorf Microwave II
│ │ │ │ │
│ │ │ │ └─────── Kurzweil K250
│ │ │ │
│ │ │ └─────────────── Waldorf Wave
│ │ │
│ │ └────────────────────── Roland JD-800
│ │
│ └────────────────────────────── Korg Wavestation
│
│ ┌─────────────────────── Yamaha SY77
│ │
└───────────┬───────────┤
│ ┌─┴────────────────────── Yamaha TG77
│ │
│ ┌─────┴────────────────────── Korg 01/W
│ │
│ │ ┌────────────────── Roland D
71> 谢谢。你能告诉我更多关于wavetable和wavetable合成器的事情吗?
以下是关于wavetable和wavetable合成器的几个额外观点。
-
wavetable合成与向量合成密切相关,在向量合成中,通过数学算法将多个振荡器或声音源混合在一起以产生复杂的音色。在向量合成中,用户可以使用摇杆或其他控制表面在不同的声音源组合之间进行形态变化。
-
许多现代软件合成器允许用户创建自己的wavetable,无论是通过导入音频文件还是通过使用可视化界面绘制波形。这可以产生高度可定制的独特声音,可用于各种音乐场景。
-
wavetable合成已经在电子舞曲中得到广泛使用,尤其是在trance和techno等流派中。使用wavetable振荡器创建不断发展和变化的音色的能力是这些流派独特声音的关键元素。
-
尽管wavetable合成在硬件合成器中已经使用了数十年,但由于软件技术的进步,它在近几年又重新获得了人气。许多软件合成器现在都包含wavetable振荡器,甚至有些软件合成器专门从事wavetable合成。
-
wavetable合成中的一个有趣的新发展是使用人工智能生成新的独特wavetable。通过在大量的音频样本数据集上训练神经网络,研究人员和开发人员能够创建出可以用于合成的巨大库的新的wavetable。
72> 人工智能如何被用来创建新的wavetable?你能展示一些技术吗?
是的,可以使用人工智能技术来创建新的wavetable。以下是一些常用的技术。
-
生成对抗网络(GANs):GANs是一种可以从一组训练示例中学习以生成新数据的神经网络。它们由两个神经网络组成,一个生成器和一个判别器,在一种类似游戏的设置中一起训练。生成器试图创建与训练示例相似的新数据,而判别器则试图区分真实训练示例和生成数据。随着时间的推移,生成器学会创建更逼真的数据,并可用于创建新的wavetable。
-
自编码器:自编码器是一种可以用于降维和数据压缩的神经网络。它由一个编码器网络组成,将输入数据映射到低维表示,以及一个解码器网络,将低维表示映射回原始数据。通过在wavetable上训练自编码器,可以学习数据的一个压缩表示,这可以用来生成新的wavetable。
-
遗传算法:遗传算法是一种受自然选择启发的优化算法。它们通过维护一个候选解决方案的种群,并反复应用选择、交叉和变异操作来生成新的候选解决方案来工作。通过使用一个评估 wavetable 质量的适应度函数,可以随着时间的推移进化新的 wavetable。
-
深度强化学习:深度强化学习是一种涉及训练智能体在环境中采取行动以最大化奖励信号的机器学习方法。通过定义一个评估 wavetable 质量的奖励函数,可以训练智能体通过执行一系列动作来生成新的 wavetable。
这些都是人工智能如何用于创建新 wavetable 的几个例子。每种技术都有其自身的优点和缺点,技术选择取决于具体的应用和可用数据。
73>损失函数是什么?我们如何衡量它?
在机器学习中,损失函数是衡量模型在给定输入集上做出预测的能力的度量。目标是使损失函数最小化,从而最大化模型预测的准确性。
在利用人工智能创建 wavetable 的背景下,损失函数通常设计为比较模型输出(即生成的 wavetable)与目标输出(即预存的、期望的波形)。模型输出与目标输出之间的差异被计算为损失,目标是使这种损失最小化。
损失函数的具体形式取决于用于生成 wavetable 的模型架构。例如,如果使用神经网络,损失函数可能是生成的波形与目标波形之间的均方误差。或者,损失函数可能基于频谱分析或测量生成的波形与目标波形之间相似性的其他指标。
损失函数通常在训练过程中使用,此时模型被输入一系列输入波形和相应的目标波形,并调整模型的权重以最小化损失。使用验证集评估模型的有效性,训练过程继续进行,直到模型达到令人满意的准确度水平。
74>我们数据集中需要多少个“黄金”wavetable?我们如何防止模型仅对已标记为“好”的声音进行过度拟合?
所需“黄金”wavetable 的数量取决于所需声音的复杂性和数据集的大小。一般来说,更具多样性和代表性的数据集往往会产生更好的结果,但数据集需要平衡,以避免过度拟合。
为防止模型仅对标记为“好”的声音进行过度拟合,我们可以使用正则化技术,如 dropout、权重衰减或早期停止。我们还可以使用数据增强技术,如随机裁剪、缩放和翻转 wavetable 以增加数据集的多样性并防止过度拟合。此外,我们可以使用迁移学习技术,即首先在大型通用声音数据集上预训练模型,然后再在较小的“黄金”wavetable 数据集上进行微调。这可以帮助模型学习对更广泛声音有用的更一般特征。
75>我们如何表示 wavetable 的特征?
根据具体的应用和目标,wavetable 的特征可以以多种方式表示。以下是一些常见的方法
-
时域表示:在这种表示中,wavetable中的每个样本都被表示为时域中的一个值。这是最简单的表示方式,可用于基本处理,如滤波和幅度调制。
-
频域表示:在这种表示中,wavetable通过傅里叶分析或类似方法转换到频域。这允许进行更高级的处理,如频谱滤波和相位操纵。
-
频谱图表示:在这种表示中,通过使用短时傅里叶变换(STFT)等时间-频率分析方法从wavetable生成频谱图。频谱图显示了声音的频谱内容随时间的变化,可用于瞬态检测和特征提取等任务。
-
统计表示:在这种表示中,计算wavetable的均值、方差和偏度等统计量,并将其用作特征。这对于分类和聚类等任务可能很有用。
-
机器学习表示:在这种表示中,使用机器学习算法学习原始音频信号和与特定任务相关的特征集之间的映射。特征可以根据任务要求选择,可以包括时域、频域和统计特征。
依赖关系
~13–22MB
~317K SLoC