Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
サンプルプログラム解説

概要

シリアルポートにMIDIデータを送信します。

ArduinoとPCとをUSBケーブルで接続します。

プログラム

定義等

/*
 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

 */

このプログラムでは特に何もしていません。

setup()

void setup() {
  //  Set MIDI baud rate:
  Serial.begin(31250);
}

Serial.begin()を使って、シリアルポートを初期化します。

loop()

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

for文を使って、変数noteを0x1Eから0x50まで順に変化させます。arduino-0022に付属の例では、intnoteとなっていますが、int noteだと思います。

noteOn()という関数を、1回目は引数0x90、note、0x45で、2回目は引数0x90、note、0x00で呼び出します。noteOn()を呼ぶ間隔をdelay()で調整しています。

noteOn()

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

noteOnという関数を作成しています。この関数の中では、Serial.write()を使って、与えられた引数を順に送信します。ここで送信しているのは、MIDIのノートオンというコマンドです。音源に対して、指定した音階(pitch)を指定した強さ(velocity)で演奏するよう指示します。

バージョン

Arduino 1.8.3



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2011 garretlab all rights reserved.
inserted by FC2 system