在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣使用Arduino制作MIDI控制器

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-28 17:44 ? 次閱讀

作為一個積累了許多樂器和雜音箱的音樂家,不起眼的Arduino是創建自定義MIDI控制器的理想工具。盡管樹莓派(Raspberry Pi)可能已經贏得了物聯網IoT)項目的桂冠,但是一個簡單的Arduino Uno(什么是Arduino的不同類型?)為該項目提供了足夠的功能。

第一次使用Arduino嗎?不用擔心,在您完成該項目之前,我們已經閱讀了完整的Arduino初學者指南。

什么是MIDI?

MIDI代表樂器數字接口。它概述了音樂設備相互通信的標準方法。如果您擁有電子鍵盤,則可能具有MIDI接口。盡管MIDI的實現涉及一些技術細節,但重要的是要記住MIDI不是音頻! MIDI數據是一組簡單的指令(一個指令稱為“消息”),另一臺設備可以實現該指令來發出不同的聲音或控制參數。

MIDI支持16個通道。這意味著每條電纜可以支持16個彼此獨立通信的設備。使用5針DIN電纜連接設備。 DIN代表“德國標準化協會”,并且只是連接器內部具有五個針腳的電纜。經常使用USB代替5針DIN,或者可以使用USB-MIDI接口。

控制更改和程序更改

MIDI消息有兩種主要類型:控制更改和程序更改。

控制更改(CC)消息包含一個控制器號和一個介于0到127之間的值。通常使用CC消息。更改音量或音調等設置。接受MIDI的設備應隨附一本手冊,說明默認情況下設置了哪些通道和消息以及如何更改它們(稱為MIDI映射)。

程序更改(PC)消息比CC消息更簡單。 PC消息由一個數字組成,用于更改設備上的預設或補丁。 PC消息有時被稱為“補丁更改”。與CC消息類似,制造商應提供文檔,概述特定消息會更改哪些預設。

您需要什么

Arduino

5針DIN母插座

2個220歐姆電阻器

2個10k歐姆電阻

2個瞬時開關

連接線

面包板

MIDI電纜

MIDI設備或USB接口

構建計劃

此項目將非常簡單。當然,您可以添加更多按鈕或硬件以滿足您的需求。幾乎任何Arduino都適用-此示例僅需要三個引腳。該項目包括兩個用于控制程序的按鈕,一個用于發送數據的MIDI端口以及一個用于接收消息的設備。此電路是在面包板上構建的,但是可以將其轉移到項目盒和焊接的連接器中,以提供可靠的解決方案。

CircuitAssembly

MIDI連接

按如下所示連接MIDI插槽:

MIDI針5到Arduino通過220歐姆電阻器傳輸(TX)1

MIDI引腳4到Arduino + 5V通過220歐姆電阻器

MIDI引腳2到Arduino接地

按鈕連接

按鈕通過更改Arduino“看到”的電阻來工作。 Arduino引腳通過一個10k歐姆的電阻器(“下拉”電阻器,確保該值保持較低),將開關直接接地( LOW )。按下按鈕后,在沒有電阻( HIGH )的情況下,電路看到的值將變為+ 5v。 Arduino可以使用 digitalRead(pin)命令檢測到此更改。將按鈕連接到Arduino數字輸入/輸出(I/O)上的引腳6和7。連接兩個按鈕:

按鈕的左側到+ 5V

按鈕的右側通過10k歐姆電阻連接到Arduino接地

Arduino引腳(6或7)上的按鈕

MIDI測試

現在所有的硬件都完成了,現在該進行測試了。您將需要一個USB-MIDI接口(許多音頻接口可以做到這一點)和MIDI電纜。面包板上連接的MIDI端口正在發送數據,因此它是輸出。您的計算機正在接收數據,因此它是輸入。該項目使用了47種效果出色的Arduino MIDI庫v4.2。安裝庫之后,可以通過轉到草圖》包含庫》 MIDI 將其包含在代碼中。

您還需要一個程序來監視傳入的MIDI數據:

用于OS X的MIDI監視器

用于Windows的MIDI-OX

KMidimon(用于Linux

將Arduino連接到計算機并上傳以下測試代碼(不要忘記從 Tools》 Board 和 Tools》 Port 選擇正確的電路板和端口》菜單)。

#include

#include

#include

#include

#include

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {

Serial.begin(31250); // setup serial for MIDI

}

void loop() {

midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel

delay(1000); // wait 1 second

midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel

delay(1000); // wait 1 second

}

此代碼將發送CC消息,等待1秒鐘,發送PC消息,然后無限期等待1秒鐘。如果一切正常,您應該會在MIDI監視器中看到一條消息。

如果什么都沒有發生,請不要驚慌!嘗試進行故障排除:

確保所有連接正確

檢查MIDI端口是否正確接線–外部邊緣應有2個備用引腳

再次檢查電路是否正確

使用MIDI電纜驗證電路是否已連接到USB-MIDI接口

檢查MIDI電纜是否已連接到輸入

確保Arduino具備電源

為您的USB-MIDI接口安裝正確的驅動程序

如果您仍然有問題,可能值得檢查一下面包板。廉價板有時可能會非常不一致且質量低下–這是我在從事此項目時遇到的。

按鈕測試

現在是時候測試按鈕是否正常工作了。上載以下測試代碼。無需連接MIDI即可測試此部分。

const int buttonOne = 6; // assign button pin to variable

const int buttonTwo = 7; // assign button pin to variable

void setup() {

Serial.begin(9600); // setup serial for text

pinMode(buttonOne,INPUT); // setup button as input

pinMode(buttonTwo,INPUT); // setup button as input

}

void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state

delay(10); // software de-bounce

if(digitalRead(buttonOne) == HIGH) { // check button state again

Serial.println(“Button One Works!”); // log result

delay(250);

}

}

if(digitalRead(buttonTwo) == HIGH) { // check button state

delay(10); // software de-bounce

if(digitalRead(buttonTwo) == HIGH) { // check button state again

Serial.println(“Button Two Works!”); // log result

delay(250);

}

}

}

運行此代碼(但保持USB電纜連接)并打開串行監視器(右上角》串行監視器)。當您按下一個按鈕時,根據所按下的按鈕,您應該會看到“ Button OneWorks!”或“ Button Two Works!”。

此示例中有一個重要說明-軟件de -彈跳。這是檢查按鈕與再次檢查按鈕之間的簡單10毫秒(ms)延遲。這可以提高按鈕按下的準確性,并有助于防止噪聲觸發Arduino。盡管建議這樣做,但您不必這樣做。

創建控制器

現在所有的東西都已經連接好并且可以正常工作了,現在該組裝完整的控制器了。

此示例將為每個按下的按鈕發送不同的CC消息。我正在使用它來控制OS X上的Ableton Live 9.6。代碼與上面的兩個測試示例相似。

#include

#include

#include

#include

#include

const int buttonOne = 6; // assign button pin to variable

const int buttonTwo = 7; // assign button pin to variable

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {

pinMode(buttonOne,INPUT); // setup button as input

pinMode(buttonTwo,INPUT); // setup button as input

Serial.begin(31250); // setup MIDI output

}

void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state

delay(10); // software de-bounce

if(digitalRead(buttonOne) == HIGH) { // check button state again

midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel

delay(250);

}

}

if(digitalRead(buttonTwo) == HIGH) { // check button state

delay(10); // software de-bounce

if(digitalRead(buttonTwo) == HIGH) { // check button state again

midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel

delay(250);

}

}

}

注意-您將無法使用具有MIDI輸出的Serial.println()。

如果要發送PC消息而不是CC,只需替換:

midiOut.sendControlChange(42,127,1);

使用以下內容:

midiOut.sendProgramChange(value, channel);

實際操作

以下是作為Ableton Live(每種預算的最佳DJ軟件)的控制器的演示。

您已經制作了一個MIDI控制器嗎?

其中有一個自定義MIDI控制器的許多實際用途。您可以建造一個大型的腳踏控制單元,或者一個時尚的錄音棚控制器。如果您有興趣購買一個,這里是您可以購買的最好的USB MIDI控制器。

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    114

    文章

    17000

    瀏覽量

    183185
  • MIDI
    +關注

    關注

    0

    文章

    78

    瀏覽量

    16060
  • Arduino
    +關注

    關注

    189

    文章

    6493

    瀏覽量

    190236
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    車載整機控制器 工程機械主機控制器#碩博電子#國產控制器

    控制器
    長沙碩博電子科技股份有限公司
    發布于 :2025年05月26日 09:09:02

    工程機械控制器廠家 控制器國產替代 #國產控制器#控制器廠家#控制器品牌

    控制器
    長沙碩博電子科技股份有限公司
    發布于 :2025年04月29日 14:15:05

    基于ArduinoMIDI架子鼓創建

    我一直夢想著在家里有一套架子鼓,但空間、噪音和成本一直是挑戰。所以,我決定制作自己的緊湊型桌面MIDI鼓組,它由USB供電,并且對每一次敲擊都有響應!我將帶您了解我創建這些DIYMIDI鼓的整個過程
    的頭像 發表于 04-15 11:49 ?516次閱讀
    基于<b class='flag-5'>Arduino</b>的<b class='flag-5'>MIDI</b>架子鼓創建

    工程機械控制器如何選型?控制器選型指南 #控制器 #車載控制器 #整車控制器 #控制器選型

    控制器
    長沙碩博電子科技股份有限公司
    發布于 :2025年03月14日 10:54:24

    Y1620工程機械主機控制器 車載智能控制器 CAN總線 #工程機械控制器 #整車控制器 #車載控制器

    控制器
    長沙碩博電子科技股份有限公司
    發布于 :2025年02月10日 15:32:21

    MIDI Unit:專業音頻控制單元,玩轉MIDI音樂制作

    設備之間無視制造商的區別進行有效的通信。本次介紹的是一款MIDI通道控制和音頻合成單元,"MIDIUnit"。產品左右兩側提供了兩組MIDI輸入和輸出接口(標準D
    的頭像 發表于 02-08 10:13 ?429次閱讀
    <b class='flag-5'>MIDI</b> Unit:專業音頻<b class='flag-5'>控制</b>單元,玩轉<b class='flag-5'>MIDI</b>音樂<b class='flag-5'>制作</b>

    如何使用Arduino實現CAN總線通信呢

    CAN(Controller Area Network)總線是一種常用于汽車和工業控制系統的串行通信協議,以其高可靠性和實時性而聞名。Arduino,作為一種流行的開源微控制器平臺,可以通過附加
    的頭像 發表于 12-23 09:06 ?1684次閱讀

    開源項目!基于 ArduinoMIDI 架子鼓

    MIDI 鼓的整個過程 - 從使用壓電傳感到使用 3D 打印設計布局,再到使用 Arduino Leonardo 進行編碼。 此設置可與 GarageBand、Ableton 等程序無縫協作。和我一起
    發表于 11-25 12:00

    stm32與Arduino的比較

    在微控制器的世界里,STM32和Arduino是兩個經常被提及的名字。STM32是一系列由STMicroelectronics生產的高性能微控制器,而Arduino則是一個開源電子原型
    的頭像 發表于 11-19 15:45 ?3949次閱讀

    如何選擇合適的PID控制器

    在工業自動化領域,PID控制器因其簡單、高效和廣泛應用而備受青睞。PID代表比例(Proportional)、積分(Integral)和微分(Derivative)三個控制作用,它們共同作用于系統
    的頭像 發表于 11-13 14:34 ?1179次閱讀

    國產控制器廠家 整車控制器 以太網控制器 CAN控制器 國產化替代

    控制器
    長沙碩博電子科技股份有限公司
    發布于 :2024年09月03日 09:15:51

    車載智能控制器 工程機械控制器 CAN總線控制器 碩博電子 #控制器 #can總線 #國產化替代

    控制器總線
    長沙碩博電子科技股份有限公司
    發布于 :2024年08月29日 10:43:57

    移動工程機械控制器,車載智能控制器,碩博電子

    控制器
    長沙碩博電子科技股份有限公司
    發布于 :2024年08月08日 10:18:12

    控制器的主要作用是指什么

    (Controller)是一種用于實現對被控對象的控制作用的設備或裝置。它根據被控對象的輸入信號和預定的控制規律,通過計算和處理,產生相應的輸出信號,以實現對被控對象的控制控制器的主
    的頭像 發表于 06-30 10:39 ?7632次閱讀

    工業控制器制作與數學的關系

    數學在工業控制器設計中的應用 工業控制器的設計涉及到多個方面,包括硬件設計、軟件設計、系統架構設計等。在這些設計過程中,數學發揮著關鍵作用。 1.1 硬件設計中的數學應用 工業控制器的硬件設計主要
    的頭像 發表于 06-16 14:34 ?773次閱讀
    主站蜘蛛池模板: 国产逼逼视频 | 天天澡天天摸天天添视频 | 看屁屁www视频免费观看 | 四虎影视在线影院4hutv | 国产图片区| 国产精品天天看 | 天天操人人干 | 亚洲国产情侣偷自在线二页 | 午夜在线观看视频 | 亚洲 欧美 校园 | 香蕉蕉亚亚洲aav综合 | 中文字幕第一页在线 | www色在线| 精品亚洲欧美无人区乱码 | 国产三级日本三级在线播放 | 日韩精品你懂的在线播放 | 精品女视频在线观看免费 | 天天玩夜夜操 | 久久国产香蕉一区精品 | 欧美疯狂爱爱xxxxbbbb | 四虎成人精品在永久在线观看 | 91免费网站在线看入口黄 | 成年人毛片网站 | 亚洲激情婷婷 | 国内精品久久久久久影院老狼 | 天天干夜夜艹 | 好男人社区www的视频免费 | 狠狠干夜夜 | 手机在线播放视频 | 性生大片一级毛片免费观看 | 黄在线视频| 日韩欧美卡通动漫在线观看 | 三a大片| 中国xxxxx高清免费看视频 | 99久久免费精品高清特色大片 | 久久久久999| 国产精品大全 | 2023天天操| 色网站免费看 | 国产一区二区精品 | 2020天天操|