ワンチップ・ボーカロイド eVY1を試してみる(その3)
花岡ちゃんのウィークエンド
今回は、前回アップした簡易シーケンサについて説明します。
eVY1シールドはMIDIで動かすので、まずはMIDIの話を少し。
MIDIは電子楽器などの制御用に開発された、通信のソフト・ハードの仕様です。80年代に制定され、その後30年の永きにわたって、スタンダードフォーマットとして使われてきました。最近、MIDI制定に尽力したRolandの社長さんに、グラミー賞が授与されて話題になりましたね。
eVY1を搭載しているデバイス、NSX-1のMIDI仕様書を使って説明します。
MIDIで曲を演奏するだけなら、仕様書の1ページ目にあるChannel MessageのKey ONイベントだけでOKです。イベントのフォーマットは下記の通りで、3バイトのデータで構成されています。
0x9n 0xKK 0xVV
0x9n -> チャンネル n をKey ON
0xKK -> 音程を示す数値 0x00-0x7F
0xVV -> 音量(ベロシティ)を示す数値 0x00-0x7F
最初のバイトはStatus byteと言って、発音開始などのコマンドとして機能します。それ以降のバイトがパラメータで、音程などの情報を送ります。Status byteは、必ず最上位ビットが1で、パラメータはこれが0です。最上位ビットはコマンドか数値かの識別に使われている訳です。そのため、送ることの出来る数値の範囲は0-127となります。
Status byteの下位4ビットはチャンネル番号です。おおざっぱに言うと、一本のMIDI通信線にチャンネル番号の異なる、最大16台の楽器が接続でき、この番号でメッセージを送る楽器を選択できます。eVY1シールドのように、一つのモジュールに複数の音源が入っているものでも、内部的に、それぞれの音源にチャンネルが割当られています。
音を鳴らすには、ベロシティに0以外の数値を入れてKey ONイベントを送ります。これはピアノなら、鍵盤を押し下げたイベントに相当します。ベロシティは鍵盤を押し下げる早さです。これはつまり鍵盤を叩く強さで、音の大きさを意味しています。もちろん、数値が大きい方が音量が大きくなります。
同じイベントをベロシティ0で送ると、鍵盤を放したイベントを意味します。
音程も同様に数値で表現します。下記のように鍵盤に数値が割り当てられている、と考えるとわかりやすいでしょう。
もちろん、上下のオクターブも、同じように順番に数値が割り当てられています。つまり、図のドの1オクターブ下は62になります。
今回このキーでやってみましたが、実際のところ1オクターブ下の方がいいみたいです。そんなとき、プログラム内部で12を引いてやることで、簡単に移調が出来るのがこの方式の利点です。
MIDIの説明が長くなってしまいました。でも、この話をしておかないと、後の説明がわかりにくいので、やむを得ません。次回は歌詞をeVY1に送る方法について解説します。
« ワンチップ・ボーカロイド eVY1を試してみる(その2) | トップページ | ワンチップ・ボーカロイド eVY1を試してみる(その4) »
「花岡ちゃんのウィークエンド」カテゴリの記事
- レーザー距離センサVL53L0Xを複数使うには(2022.05.01)
- 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(おしまい)(2022.04.14)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その3)(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その2)(2022.04.12)
« ワンチップ・ボーカロイド eVY1を試してみる(その2) | トップページ | ワンチップ・ボーカロイド eVY1を試してみる(その4) »
コメント