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.5



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

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