中国の激安Arduinoを買ってみた。Arduinoでmidi音源を鳴らしてみた。

Nano 5枚で1500円(300円/枚)、UNOが400円!
この値段なら気軽に使えそう!

2016年の情報

安チップのため、Arduino IDEで認識するために、ドライバを別途入れる必要がありました。
OSX Elcapitan、Arduino IDE 1.6.10で動きました。

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(2, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(150);              // wait for a second
  digitalWrite(2, LOW);    // turn the LED off by making the voltage LOW
  delay(150);              // wait for a second
}

このようなコードを書き、D2に抵抗とLEDをさしてLチカを確認した。
13番PINを使うとボード上のLEDがLチカします。

  • ボードはArduino Nano
  • プロセッサは ATmega328p(old bootloader)を使用する必要があった

2026年の情報: midiを鳴らしたい

10年後に更新することがあろうとは。2026年の情報を追記します。
なんでArduinoをいじりだしたかというとmidiをならしたかったからです。
midiは簡単ですね。

M1 macでボードをNano、ポートをお使いのUSB、プロセッサは ATmega328p(old bootloader)で動作しました。

Geminiにコードを書いてもらいました。

// MIDIのチャンネル指定(0 = チャンネル1)
byte midiCh = 0;

void setup() {
  // MIDI標準ボーレート
  Serial.begin(31250);
}

void loop() {
  for (int note = 30; note <= 72; note++) {
    // ド、レ、ミ、ファ、ソ、ラ、シ、ドの音階(半音含む)を順番に
    // ピアノの白い鍵盤だけにするなら、特定の数値のみ選ぶ必要があります
    
    noteOn(0x90 | midiCh, note, 0x45); // 音を鳴らす(ベロシティ69)
    delay(500);                        // 0.5秒待つ
    noteOn(0x80 | midiCh, note, 0x00); // 音を止める
  }
  delay(1000); // 1周したら1秒休み
}

// MIDI信号を送るための関数
void noteOn(int cmd, int pitch, int velocity) {
  Serial.write(cmd);      // ステータスバイト(Note On/Off + チャンネル)
  Serial.write(pitch);    // ノート番号(音の高さ)
  Serial.write(velocity); // ベロシティ(音の強さ)
}

midiケーブルを切断しまして、Arduinoにはんだ付けします。

  • midi ピン4: 220Ωの抵抗を介して Arduinoの 5V へ
  • midi ピン5: 220Ωの抵抗を介して Arduinoの TX (D1) へ
  • midi ピン2: Arduinoの GND へ(シールド線)

 

動いた〜! 本当にいい時代になりましたね。