欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用Arduino制作MIDI控制器

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 17:44 ? 次閱讀

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

第一次使用Arduino嗎?不用擔(dān)心,在您完成該項(xiàng)目之前,我們已經(jīng)閱讀了完整的Arduino初學(xué)者指南。

什么是MIDI?

MIDI代表樂(lè)器數(shù)字接口。它概述了音樂(lè)設(shè)備相互通信的標(biāo)準(zhǔn)方法。如果您擁有電子鍵盤(pán),則可能具有MIDI接口。盡管MIDI的實(shí)現(xiàn)涉及一些技術(shù)細(xì)節(jié),但重要的是要記住MIDI不是音頻! MIDI數(shù)據(jù)是一組簡(jiǎn)單的指令(一個(gè)指令稱為“消息”),另一臺(tái)設(shè)備可以實(shí)現(xiàn)該指令來(lái)發(fā)出不同的聲音或控制參數(shù)。

MIDI支持16個(gè)通道。這意味著每條電纜可以支持16個(gè)彼此獨(dú)立通信的設(shè)備。使用5針DIN電纜連接設(shè)備。 DIN代表“德國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)”,并且只是連接器內(nèi)部具有五個(gè)針腳的電纜。經(jīng)常使用USB代替5針DIN,或者可以使用USB-MIDI接口。

控制更改和程序更改

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

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

程序更改(PC)消息比CC消息更簡(jiǎn)單。 PC消息由一個(gè)數(shù)字組成,用于更改設(shè)備上的預(yù)設(shè)或補(bǔ)丁。 PC消息有時(shí)被稱為“補(bǔ)丁更改”。與CC消息類似,制造商應(yīng)提供文檔,概述特定消息會(huì)更改哪些預(yù)設(shè)。

您需要什么

Arduino

5針DIN母插座

2個(gè)220歐姆電阻器

2個(gè)10k歐姆電阻

2個(gè)瞬時(shí)開(kāi)關(guān)

連接線

面包板

MIDI電纜

MIDI設(shè)備或USB接口

構(gòu)建計(jì)劃

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

CircuitAssembly

MIDI連接

按如下所示連接MIDI插槽:

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

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

MIDI引腳2到Arduino接地

按鈕連接

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

按鈕的左側(cè)到+ 5V

按鈕的右側(cè)通過(guò)10k歐姆電阻連接到Arduino接地

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

MIDI測(cè)試

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

您還需要一個(gè)程序來(lái)監(jiān)視傳入的MIDI數(shù)據(jù):

用于OS X的MIDI監(jiān)視器

用于Windows的MIDI-OX

KMidimon(用于Linux

將Arduino連接到計(jì)算機(jī)并上傳以下測(cè)試代碼(不要忘記從 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

}

此代碼將發(fā)送CC消息,等待1秒鐘,發(fā)送PC消息,然后無(wú)限期等待1秒鐘。如果一切正常,您應(yīng)該會(huì)在MIDI監(jiān)視器中看到一條消息。

如果什么都沒(méi)有發(fā)生,請(qǐng)不要驚慌!嘗試進(jìn)行故障排除:

確保所有連接正確

檢查MIDI端口是否正確接線–外部邊緣應(yīng)有2個(gè)備用引腳

再次檢查電路是否正確

使用MIDI電纜驗(yàn)證電路是否已連接到USB-MIDI接口

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

確保Arduino具備電源

為您的USB-MIDI接口安裝正確的驅(qū)動(dòng)程序

如果您仍然有問(wèn)題,可能值得檢查一下面包板。廉價(jià)板有時(shí)可能會(huì)非常不一致且質(zhì)量低下–這是我在從事此項(xiàng)目時(shí)遇到的。

按鈕測(cè)試

現(xiàn)在是時(shí)候測(cè)試按鈕是否正常工作了。上載以下測(cè)試代碼。無(wú)需連接MIDI即可測(cè)試此部分。

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);

}

}

}

運(yùn)行此代碼(但保持USB電纜連接)并打開(kāi)串行監(jiān)視器(右上角》串行監(jiān)視器)。當(dāng)您按下一個(gè)按鈕時(shí),根據(jù)所按下的按鈕,您應(yīng)該會(huì)看到“ Button OneWorks!”或“ Button Two Works!”。

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

創(chuàng)建控制器

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

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

#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);

}

}

}

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

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

midiOut.sendControlChange(42,127,1);

使用以下內(nèi)容:

midiOut.sendProgramChange(value, channel);

實(shí)際操作

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

您已經(jīng)制作了一個(gè)MIDI控制器嗎?

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

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16472

    瀏覽量

    179659
  • MIDI
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    15719
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187978
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    MIDI Unit:專業(yè)音頻控制單元,玩轉(zhuǎn)MIDI音樂(lè)制作

    設(shè)備之間無(wú)視制造商的區(qū)別進(jìn)行有效的通信。本次介紹的是一款MIDI通道控制和音頻合成單元,"MIDIUnit"。產(chǎn)品左右兩側(cè)提供了兩組MIDI輸入和輸出接口(標(biāo)準(zhǔn)D
    的頭像 發(fā)表于 02-08 10:13 ?65次閱讀
    <b class='flag-5'>MIDI</b> Unit:專業(yè)音頻<b class='flag-5'>控制</b>單元,玩轉(zhuǎn)<b class='flag-5'>MIDI</b>音樂(lè)<b class='flag-5'>制作</b>

    如何使用Arduino實(shí)現(xiàn)CAN總線通信呢

    CAN(Controller Area Network)總線是一種常用于汽車和工業(yè)控制系統(tǒng)的串行通信協(xié)議,以其高可靠性和實(shí)時(shí)性而聞名。Arduino,作為一種流行的開(kāi)源微控制器平臺(tái),可以通過(guò)附加
    的頭像 發(fā)表于 12-23 09:06 ?568次閱讀

    開(kāi)源項(xiàng)目!基于 ArduinoMIDI 架子鼓

    MIDI 鼓的整個(gè)過(guò)程 - 從使用壓電傳感到使用 3D 打印設(shè)計(jì)布局,再到使用 Arduino Leonardo 進(jìn)行編碼。 此設(shè)置可與 GarageBand、Ableton 等程序無(wú)縫協(xié)作。和我一起
    發(fā)表于 11-25 12:00

    stm32與Arduino的比較

    在微控制器的世界里,STM32和Arduino是兩個(gè)經(jīng)常被提及的名字。STM32是一系列由STMicroelectronics生產(chǎn)的高性能微控制器,而Arduino則是一個(gè)開(kāi)源電子原型
    的頭像 發(fā)表于 11-19 15:45 ?1811次閱讀

    如何選擇合適的PID控制器

    在工業(yè)自動(dòng)化領(lǐng)域,PID控制器因其簡(jiǎn)單、高效和廣泛應(yīng)用而備受青睞。PID代表比例(Proportional)、積分(Integral)和微分(Derivative)三個(gè)控制作用,它們共同作用于系統(tǒng)
    的頭像 發(fā)表于 11-13 14:34 ?670次閱讀

    國(guó)產(chǎn)控制器廠家 整車控制器 以太網(wǎng)控制器 CAN控制器 國(guó)產(chǎn)化替代

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

    車載智能控制器 工程機(jī)械控制器 CAN總線控制器 碩博電子 #控制器 #can總線 #國(guó)產(chǎn)化替代

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

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

    (Controller)是一種用于實(shí)現(xiàn)對(duì)被控對(duì)象的控制作用的設(shè)備或裝置。它根據(jù)被控對(duì)象的輸入信號(hào)和預(yù)定的控制規(guī)律,通過(guò)計(jì)算和處理,產(chǎn)生相應(yīng)的輸出信號(hào),以實(shí)現(xiàn)對(duì)被控對(duì)象的控制控制器的主
    的頭像 發(fā)表于 06-30 10:39 ?4650次閱讀

    工業(yè)控制器制作與數(shù)學(xué)的關(guān)系

    數(shù)學(xué)在工業(yè)控制器設(shè)計(jì)中的應(yīng)用 工業(yè)控制器的設(shè)計(jì)涉及到多個(gè)方面,包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、系統(tǒng)架構(gòu)設(shè)計(jì)等。在這些設(shè)計(jì)過(guò)程中,數(shù)學(xué)發(fā)揮著關(guān)鍵作用。 1.1 硬件設(shè)計(jì)中的數(shù)學(xué)應(yīng)用 工業(yè)控制器的硬件設(shè)計(jì)主要
    的頭像 發(fā)表于 06-16 14:34 ?577次閱讀

    移動(dòng)機(jī)械控制器 車載智能控制器 CAN總線控制器

    控制器機(jī)械
    長(zhǎng)沙碩博電子科技股份有限公司
    發(fā)布于 :2024年06月13日 17:02:51

    求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫(kù)?

    在esp-idf中使用arduino作為組件后怎樣使用arduino的庫(kù),例如我此時(shí)需要使用arduino的第三方庫(kù)blinker,怎樣使用
    發(fā)表于 06-12 07:21

    PID控制器與PWM控制器的區(qū)別

    在工業(yè)自動(dòng)化和控制系統(tǒng)設(shè)計(jì)中,PID控制器(比例-積分-微分控制器)和PWM控制器(脈沖寬度調(diào)制控制器)是兩種常用的
    的頭像 發(fā)表于 06-05 18:25 ?3596次閱讀

    PID控制器與開(kāi)關(guān)控制器的區(qū)別

    在工業(yè)自動(dòng)化控制系統(tǒng)中,PID控制器和開(kāi)關(guān)控制器是兩種常見(jiàn)的控制策略。它們各自具有獨(dú)特的工作原理、應(yīng)用場(chǎng)景和優(yōu)缺點(diǎn)。本文旨在詳細(xì)探討PID控制器
    的頭像 發(fā)表于 06-05 15:50 ?1087次閱讀

    如何制作自己的Arduino電容計(jì)

    在這個(gè)項(xiàng)目中,您將學(xué)習(xí)如何制作自己的Arduino電容計(jì)(測(cè)量電容器的值,范圍從pF到1000的uF)。一般來(lái)說(shuō),電子愛(ài)好者喜歡設(shè)計(jì)自己的小工具而不是購(gòu)買(mǎi)。在這個(gè)項(xiàng)目中,我們使用兩種電容測(cè)量方法,即
    的頭像 發(fā)表于 02-25 15:10 ?1746次閱讀
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>電容計(jì)