合并 Arduino 草图 (MIDI)
Posted
技术标签:
【中文标题】合并 Arduino 草图 (MIDI)【英文标题】:Merge Arduino Sketches (MIDI) 【发布时间】:2014-06-01 05:16:21 【问题描述】:这是一个非常初级的问题。我需要一些关于如何将这两个草图合并为一个的指导。我对 Arduino 语言只有一些非常初级的知识。
我已经成功地独立测试了两个草图,我现在只需要以某种方式将它们编译在一起。
任何帮助或指导将不胜感激!谢谢提前!
草图1:
// stomp using usb midi
#include <Bounce.h>
// midi channel
int channel = 1;
Bounce button1 = Bounce(2, 5);
Bounce button2 = Bounce(4, 5);
Bounce button3 = Bounce(6, 5);
Bounce button4 = Bounce(8, 5);
void setup()
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
void loop()
button1.update();
button2.update();
button3.update();
button4.update();
if (button1.fallingEdge())
usbMIDI.sendNoteOn(60, 99, channel); // 60 = C4
if (button2.fallingEdge())
usbMIDI.sendNoteOn(62, 99, channel); // 62 = D4
if (button3.fallingEdge())
usbMIDI.sendNoteOn(64, 99, channel); // 64 = E4
if (button4.fallingEdge())
usbMIDI.sendNoteOn(68, 99, channel); // 68 = F4
//Note On message when button is released
if (button1.risingEdge())
usbMIDI.sendNoteOff(60, 0, channel);
if (button2.risingEdge())
usbMIDI.sendNoteOff(62, 0, channel);
if (button3.risingEdge())
usbMIDI.sendNoteOff(64, 0, channel);
if (button4.risingEdge())
usbMIDI.sendNoteOff(68, 0, channel);
草图2:
int previous;
int current;
void setup()
void loop ()
current = map(analogRead(11), 136, 1023, 0 , 127);
usbMIDI.sendControlChange(7, current, 1);
delay(5);
【问题讨论】:
【参考方案1】:好的,乍一看你的变量应该没问题(虽然你似乎没有在草图 2 中使用'int previous'?):
#include <Bounce.h>
int channel = 1;
Bounce button1 = Bounce(2, 5);
Bounce button2 = Bounce(4, 5);
Bounce button3 = Bounce(6, 5);
Bounce button4 = Bounce(8, 5);
int previous;
int current;
设置看起来也很简单,因为您没有在第二个草图中设置任何东西:
void setup()
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
最后一点是将两个循环缝合在一起。据我所知,“通道”变量是链接它们的原因,即当你说时
usbMIDI.sendControlChange(7, current, 1);
最后的“1”是频道号,可从 1 到 16 选择。这是否意味着您可以执行以下操作:
usbMIDI.sendControlChange(7, current, channel);
如果是这样,您想在 sendNoteOn/Off 之前还是之后更改/控制频道?例如,如果以前,以下工作是否有效:
// stomp using usb midi
#include <Bounce.h>
// midi channel
int channel = 1;
Bounce button1 = Bounce(2, 5);
Bounce button2 = Bounce(4, 5);
Bounce button3 = Bounce(6, 5);
Bounce button4 = Bounce(8, 5);
int previous;
int current;
void setup()
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
void loop()
current = map(analogRead(11), 136, 1023, 0 , 127);
usbMIDI.sendControlChange(7, current, channel);
delay(5);
button1.update();
button2.update();
button3.update();
button4.update();
if (button1.fallingEdge())
usbMIDI.sendNoteOn(60, 99, channel); // 60 = C4
if (button2.fallingEdge())
usbMIDI.sendNoteOn(62, 99, channel); // 62 = D4
if (button3.fallingEdge())
usbMIDI.sendNoteOn(64, 99, channel); // 64 = E4
if (button4.fallingEdge())
usbMIDI.sendNoteOn(68, 99, channel); // 68 = F4
//Note On message when button is released
if (button1.risingEdge())
usbMIDI.sendNoteOff(60, 0, channel);
if (button2.risingEdge())
usbMIDI.sendNoteOff(62, 0, channel);
if (button3.risingEdge())
usbMIDI.sendNoteOff(64, 0, channel);
if (button4.risingEdge())
usbMIDI.sendNoteOff(68, 0, channel);
我没有 midi 设备,所以无法测试...
【讨论】:
以上是关于合并 Arduino 草图 (MIDI)的主要内容,如果未能解决你的问题,请参考以下文章
new-Operator 大幅增加了 Arduino 草图的大小 - 为啥?
从 Arduino Yun 上的 USB 接口获取 MIDI 音符