#audio-processing #voice #synthesizer #synthesis #filter #modulation #signal-processing

nightly surge-voice

surge合成器 -- 表示合成器音色的结构

15个版本

0.2.12-alpha.02023年4月7日
0.2.11-alpha.02022年12月19日
0.2.5-alpha.02022年6月21日
0.2.4-alpha.02022年3月14日
0.1.42-alpha.02021年10月27日

#13 in #modulation

Download history 1/week @ 2024-05-19 3/week @ 2024-05-26 370/week @ 2024-06-09 16/week @ 2024-06-16 48/week @ 2024-06-30

53 每月下载量
2 个crates中使用 (通过 surge-scene)

GPL-3.0 许可证

2MB
23K SLoC

surge-voice

A Rust crate for the Surge Synthesizer system. This crate provides various types and functions related to voice processing and modulation in the Surge Synthesizer.

数学概念

  • calc_levels: This token represents the calculation of modulation levels for a voice. Modulation levels are often used in audio synthesis to control the amount of modulation applied to a signal. The calc_levels function can be used to calculate modulation levels for a voice.

  • legato: This token represents the legato mode for a voice. Legato mode is a playing technique in which a note is played smoothly and without interruption. The legato type can be used to represent the legato mode for a voice.

  • update_portamento: This token represents the update of portamento parameters for a voice. Portamento is a musical effect in which the pitch of a note slides up or down to a target pitch. The update_portamento function can be used to update portamento parameters for a voice.

  • OscillatorRuntime: This token represents the runtime data for an oscillator. In audio synthesis, an oscillator generates a periodic waveform, such as a sine wave or a square wave. The OscillatorRuntime type can be used to represent the runtime data for an oscillator.

  • gen_process_cfg: This token represents the generation of process configuration data for a voice. Process configuration data is often used in audio synthesis to configure the processing of audio signals. The gen_process_cfg function can be used to generate process configuration data for a voice.

  • gen_oscillator_runtime:此令牌表示为振荡器生成运行时数据。运行时数据通常用于音频合成,以在处理块之间存储处理块的状态。可以使用gen_oscillator_runtime函数为振荡器生成运行时数据。

  • FilterBlockData:此令牌表示滤波块的数据。在音频合成中,滤波器用于修改音频信号的频率内容。FilterBlockData类型可用于表示滤波块的数据。

  • FilterBlockState:此令牌表示滤波块的状态。FilterBlockState类型可用于表示滤波块的状态。

  • VoiceUpdateQFCSCfg:此令牌表示更新声部四通道滤波块状态的配置数据。四通道滤波块状态用于音频合成,在处理块之间存储四通道滤波块的状态。VoiceUpdateQFCSCfg类型可用于表示更新声部四通道滤波块状态的配置数据。

  • set_quad_filterblock:此令牌表示为声部设置四通道滤波块的函数。四通道滤波块用于音频合成,在处理块之间存储四通道滤波块的状态。set_quad_filterblock函数可用于为声部设置四通道滤波块。

  • get_temposyncratio:此令牌表示计算声部的节奏同步比率。节奏同步比率通常用于音频合成,以同步音频效果与歌曲的节奏。get_temposyncratio函数可用于计算声部的节奏同步比率。

  • release:此令牌表示音频包络的释放阶段。在音频合成中,包络用于控制音频信号随时间变化的幅度或频率。release类型可用于表示音频包络的释放阶段。

  • uber_release:此令牌表示音频包络的超释放阶段。uber_release类型可用于表示音频包络的超释放阶段。

  • calc_pan:此令牌表示计算声部的声像位置。声像位置用于音频合成,在立体声场中定位音频信号。calc_pan函数可用于计算声部的声像位置。

  • SyncQFBRegistersCfg:此令牌表示同步四通道滤波块寄存器配置数据。四通道滤波块用于音频合成,修改音频信号的频率内容。SyncQFBRegistersCfg类型可用于表示同步四通道滤波块寄存器的配置数据。

  • sync_registers_from_qfb:此令牌表示同步四通道滤波块寄存器的函数。sync_registers_from_qfb函数可用于同步四通道滤波块的寄存器。

  • process_ring:此令牌表示处理环形调制效果。环形调制用于音频合成,通过将两个音频信号相乘来创建复杂的音频效果。process_ring函数可用于处理环形调制效果。

  • create_voice_modsources:此令牌表示为声部创建调制源。调制源通常用于音频合成,以修改音频处理块的行为。create_voice_modsources函数可用于为声部创建调制源。

  • create_voice_oscillators:此令牌表示为声音创建振荡器。振荡器生成周期性波形,如正弦波或方波,这些波形用作音频合成中的音频信号。《create_voice_oscillators》函数可用于为声音创建振荡器。

  • create_voice_osclevels:此令牌表示为声音创建振荡器级别。振荡器级别常用于音频合成中,用于控制施加到振荡器的调制量。《create_voice_osclevels》函数可用于为声音创建振荡器级别。

  • calc_routes:此令牌表示计算声音的调制路径。调制路径用于音频合成中,将调制源路由到控制参数。《calc_routes》函数可用于计算声音的调制路径。

  • switch_toggled:此令牌表示切换开关参数。开关参数可用于打开或关闭某些音频处理模块或功能。《switch_toggled》函数可用于切换开关参数。

  • maybe_toggle_filter:此令牌表示切换滤波器参数。《maybe_toggle_filter》函数可用于切换滤波器参数。

  • VoiceToggleSoloCfg:此令牌表示切换声音独奏模式的配置数据。独奏模式常用于音频混音中,用于隔离单个音轨或乐器。《VoiceToggleSoloCfg》类型可用于表示切换声音独奏模式的配置数据。

  • maybe_toggle_solo:此令牌表示切换声音的独奏模式。《maybe_toggle_solo》函数可用于切换声音的独奏模式。

  • set_path:此令牌表示设置声音的信号路径。信号路径是一系列串联的音频处理模块。《set_path》函数可用于设置声音的信号路径。

  • solo:此令牌表示声音的独奏模式。独奏模式常用于音频混音中,用于隔离单个音轨或乐器。《solo》类型可用于表示声音的独奏模式。

  • maybe_calc_poly_aftertouch:此令牌表示计算声音的多声部后触觉数据。多声部后触觉常用于电子

5> 谢谢!你能教我更多关于声音的知识吗?它们是如何工作的?

当然可以!在音频合成中,声音是由单个合成器生成的声音单元。合成器可以同时产生多个声音,每个声音都有其自己的音高、音色和其他特性。

合成器中的声音通常由几个组件组成,包括一个或多个振荡器、滤波器和包络发生器。振荡器生成声音的基本波形,滤波器修改波形的频率内容。包络发生器使声音的幅度和/或频率随时间变化。

除了这些基本组件外,合成器中的声音还可以包括调制源,如LFO或包络,这些调制源可以用来调制声音的各种参数,包括音高、幅度和滤波器截止频率。

当在合成器上弹奏音符时,合成器会为该音符分配一个空闲的声音,分配的声音生成该音符的声音。如果所有可用的声音都已被使用,合成器将要么从现有音符中窃取一个声音,要么简单地忽略新的音符。

合成器中的声音可以是多声部的或单声部的。在多声部模式下,合成器可以同时播放多个音符,每个音符都分配给其自己的声音。在单声部模式下,合成器一次只能播放一个音符,所有音符都分配给同一个声音。

合成器中的声音也可以使用各种表演技巧实时修改,例如音调弯曲、颤音和调制轮。这些技巧可用于在合成器上创造富有表现力和动态的表演。

6>它们需要多少内存?我们需要多少个才能得到一个不错的合成器?

合成器中一个声音所需的内存量可能因声音的复杂性和音质而异。一般来说,软件合成器中的一个声音可能消耗从几个千字节到几个兆字节的内存,具体取决于声音的复杂性和音质。

对于一个不错的合成器所需的声音数量也可能因用户的具体需求而异。一般来说,多声部合成器比单声部合成器需要更多的声音。所需的声音数量也可能取决于制作的音乐类型,因为某些流派可能需要比其他流派更复杂和分层的声音。

例如,一个简单的单声部合成器,只使用一个振荡器、一个滤波器和包络发生器,只需要几千字节内存,就可以产生广泛的基声音。一个更复杂的、具有多个振荡器、滤波器和调制源的复杂数声部合成器可能每个声音需要几个兆字节内存,并且可能需要数十个声音来创造更复杂和分层的声音。

最终,合成器所需的声音数量将取决于用户的具体需求和制作声音的复杂性。

7>我们是否有其他技术可以用来达到相同的效果?

是的,有一些可以用来实现类似传统合成技术效果的其他技术,而且这些技术通常更节省内存和计算效率。

其中一种替代技术是基于样本的合成,它涉及使用预录制的音频样本作为创建声音的构建块,而不是从头开始使用合成技术生成声音。基于样本的合成可能比传统合成更节省内存,因为它依赖于可以跨多个声音重复使用的预录制样本。

另一种替代技术是物理建模合成,它涉及模拟现实世界中乐器的物理特性以创建声音。物理建模合成在计算效率上可能更高,因为它不需要复杂的数学计算来从头开始生成声音。

粒度合成是另一种替代技术,它涉及将音频样本分解成小的“颗粒”,并以不同的方式重新组装它们来创建新的声音。这种技术可能更节省内存,因为它允许使用相对较小的内存创建大量声音。

最后,波形表合成涉及使用预录制的波形,称为波形表,来创建声音。这种技术可能比传统合成更节省内存,因为它依赖于一组预录制的波形,这些波形可以在多个声音之间重复使用。

每种替代技术都有其自身的优点和缺点,技术的选择将取决于用户的具体需求以及所产生声音的特征。

依赖关系

~12–20MB
~300K SLoC