2 打开QSynth的Setup,切换到Soundfonts选项卡,单击“Open”加载Fluid音色库。
3 最后一步,打开Qjackd 的Connects窗口,在ALSA选项卡中,将Hairless的输出端口连接到Fluid的输入端口上,大功告成!
4 在QSynth的Channels窗口中选择第10通道,可以切换很多种鼓的声音。
设置好这些后,就可以试着演奏了,电脑的扬声器中会实时播放出你敲击的鼓面所对应的声音。
MIDI协议Arduino向PC发送信息的代码片段如下:
void midiSend (int cmd, int pitch, int velocity) {
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}
这种通信协议就是MIDI协议。标准的乐器MIDI有其特定的波特率(31250)。因为我们这里可以使用串口-MIDI转换,所以可以随意设置波特率。一句MIDI指令包含3字节数据:
(1)MIDI命令,就是启动或者停止一个音符;
(2)音符,指定要传送的是哪个音符;
(3)力度,这个音符的演奏力度强弱。
//Adjust this if your pads are
dull or too sensitive
//{crash, hat, snare, tom_bass, crash_right, tom_high, tom_low}
unsigned char adc_cutoff[7]=
{3,3,10,7,3,3,3};
//minimum strength
unsigned char adc_limit[7]=
{40,10,30,50,40,10,10};
//maximum strength
以上这段代码是每个鼓面力度范围设置,请根据制作所用的材料和结构不同进行设置,如果某些鼓面不灵敏,或者过于灵敏,这些值有可能需要大幅调节。
然后,程序会轮询收集来自各个传感器的数据并判断两个踏板的开关量。
for(byte count=0;count<=6;count )
{
adc_sample[count]=map(analogRead (adc_channel[count]),0,1023,0,254);
}
因为在一次敲击过程中,鼓面可能会振动一小段时间,可能会使Arduino采集了太多次,向电脑发送大量数据,导致电脑停止响应。简单的解决方法是,在每次采集过程的最后加一句“delay(5);”。这种方法不会降低实时性。
以上这些就是制作这套Arduino架子鼓的一些经验。基于这种思想,还可以做出很多不一样的乐器,以及多用途控制器等产品。