資料介紹
描述
概括
大多數(shù) Midi 控制器的教程和項(xiàng)目僅基于對(duì) Arduino 工作的解釋,而不是在 DAW 本身中使用它。我想在一個(gè)地方創(chuàng)建一個(gè)包含所有必要內(nèi)容的教程。通過這個(gè)項(xiàng)目,我想幫助初學(xué)者更好地理解創(chuàng)建和使用控制器的過程,我希望它對(duì)某人有用。
我想做一個(gè) midi 控制器很久了,我終于做到了,現(xiàn)在我將與你分享這個(gè)項(xiàng)目。我使用的 Arduino Uno 無法通過 USB 發(fā)送 MIDI 消息,因此必須為此使用特殊程序(稍后將在文本中解釋)。
以下部分將描述電路、Arduino 代碼以及如何連接到計(jì)算機(jī)和 DAW,在本例中為 Ableton。
電路
這是一個(gè)非常簡單的電路。我使用了 9 個(gè)按鈕,但不是在矩陣中,因?yàn)槲蚁胍聪露鄠€(gè)按鈕的能力(這更容易,而且我有未使用的數(shù)字引腳 - 我使用 9,在矩陣中是 6)。
Button 3 ==> D2
Button 2 ==> D3
Button 1 ==> D4
Button 6 ==> D5
Button 5 ==> D6
Button 4 ==> D7
Button 9 ==> D8
Button 8 ==> D9
Button 7 ==> D10
MIDI 映射
我定義了 9 個(gè) MIDI 音符,從 36 到 45,以及 NOTE_ON 和 NOTE_OFF。
本 MIDI 教程將幫助您了解如何使用 MIDI 語言來控制任何使用 MIDI 協(xié)議的設(shè)備。
#define NOTE_ONE 36
#define NOTE_TWO 37
// Define all notes here.
#define NOTE_ON_CMD 0x90
#define NOTE_OFF_CMD 0x80
#define MAX_MIDI_VELOCITY 127
通過 USB 的 MIDI
因?yàn)?Arduino Uno 不能自己發(fā)送 MIDI 音符到 DAW,我們必須使用兩個(gè)額外的程序 - LoopMidi和Hairless MIDI<->Serial Bridge 。
使用 LoopMidi,我們創(chuàng)建了一個(gè)虛擬 MIDI 端口,我們可以在 Hairless Midi 中使用它來連接 Arduino 端口。
代碼解釋
我創(chuàng)建了 Button 類并像這樣使用它:
int NUMBER_BUTTONS = 9;
Button Button1(4, NOTE_ONE);
Button Button2(3, NOTE_TWO);
Button Button3(2, NOTE_THREE);
Button Button4(7, NOTE_FOUR);
Button Button5(6, NOTE_FIVE);
Button Button6(5, NOTE_SIX);
Button Button7(10, NOTE_SEVEN);
Button Button8(9, NOTE_EIGHT);
Button Button9(8, NOTE_NINE);
Button *Buttons[] {&Button1,&Button2,&Button3,&Button4,&Button5,&Button6,&Button7,&Button8,&Button9};
要了解有關(guān)按鈕實(shí)現(xiàn)的更多信息,請(qǐng)參閱 Buttons.cpp。
因?yàn)槲覀儾皇褂萌魏?a target='_blank' class='arckwlink_none'>電阻器而只將按鈕連接到數(shù)字引腳和地,所以我們使用 INPUT_PULLUP 而不是 INPUT。
//Buttons.cpp
pinMode(_pin, INPUT_PULLUP);
唯一棘手的部分是您沒有像您想象的那樣尋找HIGH
信號(hào)——您的按鈕在按下時(shí)會(huì)發(fā)出信號(hào)。LOW
(0)
// Button is pressed
if (state == 0)
{
midiNoteOn(Buttons[i]->Note,127);
}
// Button is not pressed
if (state == 1)
{
}
這也意味著初始按鈕狀態(tài)為 1,而不是 0。
//Buttons.cpp
_state = 1;
每個(gè) NOTE ON 消息都需要其相應(yīng)的 NOTE OFF 消息。按下按鈕時(shí),它會(huì)發(fā)送 NOTE_ON 消息。當(dāng)按鈕被釋放時(shí),它會(huì)發(fā)送 NOTE_OFF 消息,所以除了初始狀態(tài)之外,我將最后記住的狀態(tài)添加到代碼中。
//Buttons.cpp
_lastState = 1;
如果當(dāng)前狀態(tài)與上一個(gè)狀態(tài)不同,我們只發(fā)送 MIDI 消息。
//Buttons.cpp
if(state!= _lastState)
{
//....
}
使用這兩個(gè)函數(shù)發(fā)送 MIDI 信息。函數(shù)參數(shù)是音符和midiVelocity (我使用最大速度)。
void midiNoteOn(byte note, byte midiVelocity)
{
Serial.write(NOTE_ON_CMD);
Serial.write(note);
Serial.write(midiVelocity);
}
void midiNoteOff(byte note, byte midiVelocity)
{
Serial.write(NOTE_OFF_CMD);
Serial.write(note);
Serial.write(midiVelocity);
}
我把程序邏輯放在了functionupdateButtons
函數(shù)中。
void updateButtons() {
for (int i = 0; i < NUMBER_BUTTONS; i++) {
int state = Buttons[i]->getButtonState();
// Button is pressed
if (state == 0)
{
midiNoteOn(Buttons[i]->Note,127);
}
// Button is not pressed
if (state == 1)
midiNoteOff(Buttons[i]->Note,0);
}
}
在循環(huán)方法內(nèi)部調(diào)用函數(shù)。
void loop() {
if (NUMBER_BUTTONS != 0) updateButtons();
}
將控制器與 DAW (Ableton Live) 結(jié)合使用
作為使用 DAW 的初學(xué)者,我不知道如何在那里連接任何東西。當(dāng)我連接我的 Korg Nanokey 時(shí),Ableton 自己識(shí)別了它,我可以立即使用控制器。這(當(dāng)然)不是 Arduino 控制器的情況,因?yàn)樗皇?HID 設(shè)備并且 PC 仍然將其識(shí)別為 Arduino。
我將在這里向您展示如何在 Ableton Live 10 中連接和使用您的 Arduino MIDI 控制器。
- 與 Ableton 聯(lián)系
打開loopMIDI并像下一張圖片一樣創(chuàng)建新的虛擬 MIDI 端口。
打開hairless-midiserial并分配串行端口、MIDI 輸出和 MIDI 輸入,如下圖所示。對(duì)于串行端口,我們選擇 Arduino Uno 端口,對(duì)于 MIDI 輸入和輸出,我們使用我們?cè)谏弦徊街袆?chuàng)建的虛擬 MIDI 端口。
在 Arduino 草圖中將波特率設(shè)置為相同的速率。轉(zhuǎn)到File>Preferences ,在那里你應(yīng)該設(shè)置波特率。
如果一切正常,您可以調(diào)試控制器發(fā)送的 MIDI 消息。按下控制器上的按鈕并檢查無毛 MIDI 中的傳入 MIDI 消息。
不要關(guān)閉無毛MIDI!
打開 Ableton Live,轉(zhuǎn)到“選項(xiàng)”選項(xiàng)卡,然后轉(zhuǎn)到“首選項(xiàng)”。鏈接 MIDI 選項(xiàng)卡在本例中應(yīng)該看起來像這樣。
要檢查一切是否連接良好以及 Ableton 是否正在讀取 MIDI 消息,我們將查看 Ableton 的右上角。當(dāng)按下控制器上的按鈕時(shí),頂部的框應(yīng)該閃爍,如下一個(gè)示例所示。
控制器可以使用了!
- 將控制器用作鼓架或鍵盤
選擇 MIDI 音軌。在Monitor部分選擇In ,而不是Auto ,然后在MIDI 中選擇您的揚(yáng)聲器輸出。您現(xiàn)在應(yīng)該能聽到鍵盤的聲音。鼓架也應(yīng)該這樣做。
我完成的項(xiàng)目
我在這個(gè)項(xiàng)目中使用了舊揚(yáng)聲器箱和我在家里找到的一些塑料。我將兩個(gè)塑料板切割成外殼的尺寸,并為按鈕和一個(gè)稍后添加的 LED 鉆孔。
我還有另一個(gè)帶有相同外殼的舊揚(yáng)聲器,我將用于另一個(gè) MIDI 控制器,這次帶有旋鈕和操縱桿。
?
去做
- 長按按鈕可更改為 CC 模式。
- Arduino:連續(xù)MIDI控制器/鍵盤
- Arduino 101藍(lán)牙MIDI開源分享
- Arduino MIDI控制器開源分享
- arduino水源控制器
- 帶有FL Studio的Arduino LED MIDI控制器
- 基于Arduino的MIDI音序器Cthulhinho 0次下載
- 基于Arduino UNO構(gòu)建小型midi解碼器
- Arduino MIDI鼠標(biāo)控制器
- Cantor風(fēng)琴轉(zhuǎn)換為VPO的MIDI控制器
- Arduino游戲控制器
- 兆易創(chuàng)新AN014 GD32微控制器在Arduino中的應(yīng)用
- MIDIFART迷你袖珍MIDI控制器
- 基于Arduino的控制器
- 使用Arduino為微控制器打造能用舵機(jī)控制的游戲平臺(tái) 14次下載
- 一種復(fù)音MIDI鍵盤控制器的設(shè)計(jì) 35次下載
- Arduino WS2812B LED燈帶設(shè)計(jì)方案 1.2w次閱讀
- 如何使用Arduino Leonardo和MPU6050制作一個(gè)有線的手勢(shì)控制器 2625次閱讀
- dfrobot低功耗藍(lán)牙控制器簡介 1446次閱讀
- dfrobotRomeo BLE多合一控制器簡介 2399次閱讀
- 微雪電子Arduino 音頻播放擴(kuò)展板簡介 1862次閱讀
- dfrobotuHex微型低功耗控制器簡介 1407次閱讀
- dfrobotDFRduino Pro Mini控制器簡介 2023次閱讀
- dfrobotDFRduino Pro MiniV1.3控制器簡介 1269次閱讀
- dfrobotArduino Leonardo 控制器介紹 2259次閱讀
- dfrobotArduino兼容控制器介紹 1247次閱讀
- dfrobotCheapduino控制器介紹 1370次閱讀
- dfrobotDFRduino Nano 3.0控制器介紹 2484次閱讀
- dfrobotRomeo 三合一Arduino兼容控制器介紹 2372次閱讀
- arduino連接顯示屏方法詳解 4.7w次閱讀
- led燈帶控制器怎么用 2.8w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多