16章:Arduino(アルドゥイーノ)演習(Communication/MIDI編)

    作成2015.08.24

  1. Arduino(アルドゥイーノ)演習参照アドレス
     Arduino(アルドゥイーノ)演習は下記のアドレスを参照します。
    https://www.arduino.cc/en/Tutorial/HomePage


  2. Communication/MIDIの回路図
     パソコンとのUSB接続のみとなります。
     ピン1(TX)をオシロで観察します。


  3. Communication/MIDIのスケッチ
    (1)メニューの「ファイル」_「スケッチの例」_「Communication」_「MIDI」で以下のスケッチが設定されます。
    /*
     MIDI note player
    
     This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data.
     If this circuit is connected to a MIDI synth, it will play
     the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence.
    
     The circuit:
     * digital in 1 connected to MIDI jack pin 5
     * MIDI jack pin 2 connected to ground
     * MIDI jack pin 4 connected to +5V through 220-ohm resistor
     Attach a MIDI cable to the jack, then to a MIDI synth, and play music.
    
     created 13 Jun 2006
     modified 13 Aug 2012
     by Tom Igoe
     This example code is in the public domain.
     http://www.arduino.cc/en/Tutorial/Midi
     */
    
    void setup() {
      //  Set MIDI baud rate:
      Serial.begin(31250);
    }
    
    void loop() {
      // play notes from F#-0 (0x1E) to F#-5 (0x5A):
      for (int note = 0x1E; note < 0x5A; note ++) {
        //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
        noteOn(0x90, note, 0x45);
        delay(100);
        //Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
        noteOn(0x90, note, 0x00);
        delay(100);
      }
    }
    
    //  plays a MIDI note.  Doesn't check to see that
    //  cmd is greater than 127, or that data values are  less than 127:
    void noteOn(int cmd, int pitch, int velocity) {
      Serial.write(cmd);
      Serial.write(pitch);
      Serial.write(velocity);
    }
    


  4. Communication/MIDIの実行
    (1)メニューの「スケッチ」_「マイコンボードに書き込む」で書込みされ、実行されます。
    (2)ピン1(TX)のnoteOn(0x90, note, 0x45)に対応する波形は以下となります。



    (3)ピン1(TX)のnoteOn(0x90, note, 0x00)に対応する波形は以下となります。





  5. Communication/MIDIlまとめ
    (1)MIDIのボーレイトは31250で固定です。
    (2)0x90は0チャンネルの音を出すコード
    (3)noteは周波数
    (4)0x45は音の大きさ
    (5)本例では3バイトのシリアルデータが繰り返し送信されていることが確認できます。
    (6)波形確認から、正論理であることがわかります。
    (7)RS-232Cは負論理で±15Vですので変換が必要です。




17章:Arduino(アルドゥイーノ)演習(Control/IfStatementConditional編)に行く。

トップページに戻る。