那个特定乐器的声音,我就像是一个相当简单的合成模块,基于方波或FM,加入混响滤波器。所以我猜测它是人为产生的声音。如果您要自己制作其中一种乐器,您可以根据需要使用样本集作为您的基础。还有另一种可能性,我将在下面提及一种方法。
处理呼吸输入:呼吸输入通常转换为表示输入麦克风上的气压的值。这可以通过对输入音频信号进行小块处理并计算每个块的峰值或RMS来完成。我喜欢RMS,其通过类似计算:
int BUFFER_SIZE = 1024; // just for purposes of this example
float buffer[BUFFER_SIZE]; // 1 channel of float samples between -1.0 and 1.0
float rms = 0.0f;
for (int i=0; i<BUFFER_SIZE; ++i) {
rms += buffer[i]*buffer[i];
}
rms = sqrt(rms/BUFFER_SIZE);
在MIDI,该值通常在信道CC2为0和127之间的值该值随后被用于连续控制的体积传输输出声音。 (在iPhone上,MIDI可能会或可能不会在内部使用,但概念是一样的,无论如何,我都会从此处调用此值CC2。)
处理按键:这种情况下的按键可能只是直接映射到它们对应的笔记。这些将作为新的音符事件发送到乐器。我不认为那里有什么奇特的造型。
控制的其他形式:的笛仪器使用iPhone的倾斜来控制颤音频率和音量。通常通过低频振荡器(LFO)对其进行建模,该低频振荡器的缩放,偏移和乘以乐器其余部分的输出以产生颤动音量效果。它也可以用来控制你的乐器的音调,它会导致音高波动。 (如果你使用的是样品,这很难做到,但如果你使用的是波形,相对容易)。迷你MIDI风控制器也跟踪手指压力和咬合压力,并且可以将这些参数作为参数展示给你塑造你的声音。
呼吸仪器201:有一些技巧,人拉,使声音更具表现力,当他们由呼吸控制器控制:
- 确保您的输出只打一个音符在一个时间;切换到新的音符会自动结束前一个音符。
- 如果呼吸压力恒定并且连接了按键,请确保从旧音符到新音符的音量保持平稳。这可以让您区分连奏和分离演奏。
呼吸仪器301:然后我们到了有趣的东西:如何模拟超吹,音色变化,部分指法等像一个真正的管乐器可以做。还有我能想到的在这里的几种方法:
- 混合的气息输入本身,或许以某种方式过滤的声音,赋予自然chiff或breathiness到您的声音。
- 使用速度层之间的交叉渐变将高速声音转换为完全不同的声音。换句话说,当你淡入新的声音时,你逐渐淡出旧的声音;他们演奏的音调相同,但新声音的新音色特征会使他们逐渐明显。
- 使用具有大量高频分量的复杂声音。连接截止频率由CC2控制的低通滤波器。截止频率随着CC2值的增加而增加。当您对输入进行更加严重的打击时,这可以以一种有趣的方式增加高频内容。
- 这样做的核心方式被称为物理建模。它涉及到创建你试图仿效的乐器的物理行为的详细数学模型。这样做可以给你一个相当逼真的吹泡效果,并且它可以捕捉呼吸输入和指法如何塑造声音的许多细微影响。在Princeton's Sound Lab有一个这种方法的快速概览和一个示例工具戳in the STK C++ library –,但被警告,这不是数学上的心脏!
人吹口哨成iphones?这个苹果业务每天都变得越来越可笑... 无论如何乐器合成是一项艰难的业务,需要一些扎实的物理或数学知识。谷歌搜索“FM综合”可能会有所帮助。 – 2010-07-09 16:50:50