Arduino-based MIDI Controller

Introduction: Arduino-based MIDI Controller

A MIDI controller is useful for producing music, as well as life performance.

Make your own MIDI Controller with cheap materials!

The following instruction is partially in Chinese.

Main Feature:





Step 1: Hardware Required

•Arduino UNO R3


•公對公杜邦線 至少14條 :從Arduino板接上12個觸控模塊、1個開關、1個可變電阻,在麵包版上的接線,使用小跳線較優。

•TTP223 觸控按鍵模塊 (D2A4) 至少12個:觸摸時輸出高電位,反之輸出低電位。




Step 2: Hardware Connection

1. 可變電阻及按鈕:將兩者如電路圖所示的接上arduino及麵包板。可變電阻接pin A0,按鈕接pin A1 (因為digital pin 2-13都接上觸控模塊了)。

2. 觸控按鍵模塊:如圖所示,按照模組上的標示將三個接腳分別接上5V、GND及arduino腳位,並照圖上排成類似鋼琴鍵的樣子。訊號腳由左至右分別接到pin 2~13,下排的線路可自製短單芯線接至上排線路。

3. 都接上後即大功告成!

Step 3: About MIDI

MIDI,為Musical Instrument Digital Interface的縮寫,是工業標準的電子通訊協定。概念如同樂譜,記錄音高、節拍、力度等資訊,而非音訊,所以檔案比.mp3小很多。MIDI可讓電腦的音源演奏我們寫的音樂,猶如把樂譜拿給樂師演奏。

MIDI資料格式有3 bytes,分別是Status byte, Data byte 1, Data byte 2,請參閱

Note table:

例如:經由Channel 1,發出C4音 (中央C),力度100,此3 bytes為(144, 60, 100)。

baud rate設為19200,而非一般Serial monitor的9600。

Step 4: Code

Download the source code:

Revised from

The pitch is not confined to the range of C4, C#4, D4,..., B4. You can adjust the range by editing the code.

Step 5: Arduino to MIDI

Download Hairless MIDI:

Download loopMIDI:

Follow the instruction on those websites.

Turn off the serial monitor before connecting Arduino to Hairless MIDI!

Step 6: MIDI to Music

Any DAW works.

We demonstrated using FL studio 12.

Set "loopMIDI port" as MIDI input.

Step 7: Try to Play Your Hand-made MIDI Instrument

Step 8: Life Performance

The potentiometer was linked to master volume.

Step 9: Advanced Life Performance

The potentiometer can be linked to anything. In this clip, it was linked to the cutoff frequency of low pass filter.

Be the First to Share


    • Pi Day Speed Challenge

      Pi Day Speed Challenge
    • Trash to Treasure Contest

      Trash to Treasure Contest
    • Microcontroller Contest

      Microcontroller Contest



    3 years ago

    That looks like fun :)