まほろば

micro:bit で電子オルゴール その1

投稿者:マーチン  2020年5月6日 
カテゴリ:障碍者全般::micro:bit

 micro:bit には、20種類の楽譜が最初から入っていて、それらから選択するだけで、音楽を演奏することができます。自分の好きな曲のデータを入れて演奏させる方法を調べてみたら、なんとできることが分かりました。この情報はあまりWeb上でも見かけないので、初耳学でした。拡張機能でやる方法もありそうですが、MakeCodeの標準機能でできます(古いバージョンではできなかったのかも)。音楽が苦手な自分にとって、曲データを作るのは大変でしたが、8曲作りました。
 2020/5/18 第2弾 8曲を追加しました。


●曲データの作り方

https://makecode.microbit.org/reference/music/begin-melody より
 あなた自身のメロディを演奏したい場合は、内蔵のメロディの代わりにメロディを作曲して使用することができます。
 メロディは音符の連続で、それぞれが少量の時間、次々と演奏されます。メロディの音符は、文字列の配列の中に保持されています。配列の中の各弦は、メロディの音符です。音符を、その音符が演奏する時間と一緒に組み立てて、メロディを作ります。旋律は、このような形になります。
 NOTE [octave][:duration]  例: ['g5:1']

 リファレンス メモ micro:bit も参考にしてまとめると、

記号説明追加情報
NOTE音階
C~G・A~B:ド~シ
R:休符
b:フラット #:シャープ
 を後ろに付ける
octaveオクターブ 省略時は、直前のオクターブ
duration長さ省略時は、直前の音の長さ

記述例
長さ表記周波数
真ん中のミ1拍E4:4330
下のド#1/2拍C#3:2139
上のシb2拍Bb5:8932

●曲の演奏方法

◆標準で選択できる20曲

◆配列変数を使った指定方法
 上記の記述方法で、音符のデータを配列変数に代入すれば、標準曲と同じように変数名を指定することで演奏できます。
 

●サンプルプログラム

◆関数、イベント処理
 ・演奏が終了するのを待つ関数
 ・メロディが終わったイベントが発生したら変数の値を変更する処理


◆メインルーチン(一部)


◆初期設定、曲データ(一部)


ブロックでこのデータを入力することはほとんど不可能です。画面を [ブロック] から [JavaScript] に切り替えて入力しました。


◆全リスト
 公開URL: https://makecode.microbit.org/_36mdHXWjJ9Dz


●第2弾 8曲

 1オクターブ(ドからド)以内で、#、b なしの曲に限定


 公開URL: https://makecode.microbit.org/_fxk2kDabx8z1

●楽譜公開サイト

 以下のサイトなどを参考にさせてもらっています。


◆連載
◆関連記事