首页
/
每日頭條
/
生活
/
電爵士鼓入門
電爵士鼓入門
更新时间:2024-11-15 23:38:44

隻需一塊Arduino MEGA闆,再配置好電腦(Linux操作系統)上免費或者開源的MIDI應用程序,即可制成一套真正能夠用來演奏的電子爵士鼓。根據你的心願,它可以被做成任何樣式:可以是自己設計的鼓架,也可以是薄膜狀,甚至可以用更加高端的傳感器,玩出各種花樣來。

準備材料

筆者的鼓架由Φ28mm的透明PC管和金屬連接件構成,上面安裝有7個鼓面和2個踏闆,有一個腳踏的低音大鼓(Bass Drum,又稱“底鼓”)、一個軍鼓、兩個嗵嗵鼓(Tom-Tom Drum)、一個吊镲(Crash Cymbal)、一個節奏镲(Ride Cymbal)和一個帶踏闆的踩镲(Hi-Hat)。

主要的電子設備是一塊Arduino MEGA開發闆,還有壓電陶瓷片——它可以用電壓表示其表面壓力的變化率,從而起到采集鼓面震動情況的作用。

制作過程

1 先從制作鼓面開始。為了降低敲擊噪聲,我用雙面膠在木闆上粘貼了一層2mm厚的軟橡膠(你也可以用鼠标墊代替)。這樣既可以靈敏地測到數據,木闆本身又不會發出太大的聲響。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)1

2 然後在沒有橡膠的一面粘上壓電陶瓷片(也叫壓電震動傳感器,或者piezo)。如果是新的元器件,焊接導線可能有一點難度,需要塗上助焊劑,用合适的溫度快速焊上。此外提醒,傳感器片不可以用502膠水粘貼,502膠水會腐蝕壓電陶瓷。在元器件兩端并聯一個1kΩ的電阻,防止元器件産生太高的電壓。完成後可以用示波器測試元器件的輸出電壓,确保即使大力敲擊木闆,元器件也不會産生高于5V的電壓,因為Arduino的ADC最大隻可以承受5V的輸入。将這些元器件用膠布固定好,制作出不同大小的多個鼓面。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)2

3 然後就可以将制作好的鼓面固定在支架上了。我用了M10絲杆和螺帽,以及自己設計的3D打印件。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)3

4 踏闆很好制作。如果不需要力度響應,用兩個鍵盤的延音踏闆即可(實際為腳踏開關)。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)4

5 接下來測試下位機端的程序。圖中所示為Arduino Nano,因為其模拟輸入口數量不夠,最終換用Arduino MEGA。設計一塊擴展闆,以便用你喜歡的接口連接各個鼓面。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)5

6 将鼓面按程序中設定好的順序分别連接闆子的I/O口,硬件部分就全部完成了!

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)6

PC端軟件

這裡需要在安裝Linux操作系統的PC上安裝以下軟件:

(1)Jackd:這是一個簡單易用的MIDI、ALSA接口管理器;

(2)Qjackctl:Jackd的GUI界面,可能會自動安裝上;

(3)Fluidsynth:MIDI合成器;

(4)Qsynth:Fluidsynth的GUI;

(5)Fluid-soundfont-gm:免費的MIDI音色庫;

(6)Hairless-Midiserial:MIDI-串口轉換器。

如果需要編曲、伴奏等更高級的功能,還需要rosegarden等音序器應用程序。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)7

将它們分别打開,進行一些設置。

1 打開Hairless的Settings,設置好對應的波特率,然後選擇Arduino的串口号,在“Serial<->MIDI Bridge On”前打鈎,此時Arduino會重啟。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)8

2 打開QSynth的Setup,切換到Soundfonts選項卡,單擊“Open”加載Fluid音色庫。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)9

3 最後一步,打開Qjackd 的Connects窗口,在ALSA選項卡中,将Hairless的輸出端口連接到Fluid的輸入端口上,大功告成!

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)10

4 在QSynth的Channels窗口中選擇第10通道,可以切換很多種鼓的聲音。

電爵士鼓入門(DIY一套便宜好用的電子爵士鼓)11

設置好這些後,就可以試着演奏了,電腦的揚聲器中會實時播放出你敲擊的鼓面所對應的聲音。

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架子鼓的一些經驗。基于這種思想,還可以做出很多不一樣的樂器,以及多用途控制器等産品。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved