迷笛巴士:Processing向Ableton發送MIDI

迷笛巴士:Processing向Ableton發送MIDI

來自專欄奇譚CHItalk7 人贊了文章

為了實現Processing發送數據給Ableton LIVE,一直糾結於OSC sender/Receiver。之後發現Ableton OSC接收插件並不是很多,又不想氪金買插件,所以想試試發送MIDI信號。

就這樣找到了midibus這個Processing 包。

這個包的定位官網介紹很清楚,midibus可以讓processing實時收發midi信號。

既然叫做巴士,就只管信號接送,不管存儲。

所以音序器,MIDI文件讀寫,倒放這些功能都不支持。

下面來介紹一下processing發送MIDI給Ableton的具體操作步驟:

1.在processing中打開the midibus的范常式序「Basic」

import themidibus.*; //Import the libraryMidiBus myBus; // The MidiBusvoid setup() { size(400, 400); background(0); MidiBus.list(); // 顯示MIDI設備列表 // 設備埠序號 輸入 輸出 // | | myBus = new MidiBus(this, -1, 3);}void draw() { int channel = 1; int pitch = 64; int pitchA=60; int velocity = 127; myBus.sendNoteOn(channel, pitch, velocity); // Send a Midi noteOn delay(200);//Duration myBus.sendNoteOff(channel, pitch, velocity); // Send a Midi nodeOff myBus.sendNoteOn(channel, pitchA, velocity); // Send a Midi noteOn delay(200);//Duration myBus.sendNoteOff(channel, pitchA, velocity); //int number = 0; //int value = 90; //myBus.sendControllerChange(channel, number, value); // Send a controllerChange //delay(2000);}

在成功連接DAW之前,可以先運行一下程序,看一下MIDI設備列表。

Available MIDI Devices:

----------Input----------

[0] "Real Time Sequencer"

----------Output----------

[0] "Gervill"

[1] "Microsoft MIDI Mapper"

[2] "Microsoft GS Wavetable Synth"

[3] "Real Time Sequencer"

在沒有連接任何真實MIDI設備時,從來沒想到過有那麼多的虛擬設備在後台運行。

如果你沒有任何ableton之類的DAW軟體,可以先將輸出設備序號設成[2]

myBus = new MidiBus(this, -1, 2);

運行程序後就能聽到鋼琴的聲音,這是在調用WINDOWS內置的合成器。

輸入設備序號其實並不重要,設成-1,0都可以。

如果你有DAW,可以繼續到下一步

2.下載loopMIDI並安裝

下載鏈接

https://pan.baidu.com/s/130kR10mnQ_pQ0m2CofiDKw?

pan.baidu.com

loopMIDI 可以創建虛擬MIDI埠。

這樣在不同的軟體上,你都可以找到共同的埠名稱,將它們連接起來。

安裝完畢後運行軟體,按左側「+」添加新埠

之後再運行processing Basic程序,MIDI設備列表將更新為

Available MIDI Devices:

----------Input----------

[0] "loopMIDI Port"

[1] "Real Time Sequencer"

----------Output----------

[0] "Gervill"

[1] "Microsoft MIDI Mapper"

[2] "Microsoft GS Wavetable Synth"

[3] "loopMIDI Port"

[4] "Real Time Sequencer"

3. DAW與Processing連接到共同埠

在processing內修改埠序號,輸出到 [3]「loopMIDI Port」

myBus = new MidiBus(this, -1, 3);

在Ableton 軌道內修改輸入設備"loopMIDI Port"

之後在軌道內添加midi樂器,運行processing程序,就可以聽到程序發送過來的MIDI信號。

據說會有幾十毫秒的延時,不過對於沒什麼路徑可供選擇的我來說,還是不用在意這些細節。

推薦閱讀:

TAG:Processing編程語言 | AbletonLive10 | MIDI |