NEWS

IchigoJamで電子楽器を操作#3

2022.5.26

前回はMIDIインターフェースと楽器の接続まで説明しました。今回からはプログラムです。
正直言って難しいと思います。最初に説明した通り、道具の組み合わせがプログラムとしたら、たくさんの道具が出てきます。
また、道具の仕組みを知らないと組み合わせることもできません。

コンピューターの世界は、この道具が目に見えないから難しいんです。

だからやってみるしかありません。この辺が得意・不得意を分けてしまうんでしょうね。プログラムを作るなら食わず嫌いは絶対にダメです。そう言ってる自分は食わず嫌いです。

さて、まずは楽器とお話をするための設定です。

10 BPS 31250:UART 1

細かい説明をしてしまうと長くなってしまうので、いつものようにザックリと説明しながら進んでいきます。
BPSは「31250BPSの早さでお話しします」、UART1は「IchigoJamのPRINTで送信するよ」と言った宣言です。
次に音のデータを入れていきましょう。
「MIDIは楽器の状態を電気的に表すため」に作っているので、楽譜ではなく楽器そのもの想像した方が早いと思います。
例えば、

10 BPS 31250:UART 1
20 PRINT CHR$(#90,60,127)
RUN

このように実行すると何が起きるでしょうか?音のデータはCHR$()にあります。

  • #90は鍵盤を押したよ
  • 60は鍵盤の真ん中あたりのドの音だよ
  • 押した強さは127(最大)だよ

と言った意味になっています。人間が行う楽器の操作を数値で表現していることがわかるでしょう。
これではドの鍵盤を押しっぱなしのままプログラムが終わってしまいます。そのため鍵盤を離したことまで伝えなければいけません。

10 BPS 31250:UART 1
20 PRINT CHR$(#90,60,127)
30 PRINT CHR$(#80,60,0)
RUN

20行と似ていますが、30行が追加され#90が#80に変わっていますよね。これが鍵盤を離したお知らせです。ここまでわかれば十分。
あとはひたすら入力するだけ。「音の長さはどうするか?」ですか・・・
楽器の操作と同じなので、鍵盤を必要な長さだけ押し続けて、そのあと離せばいいんです。

10 BPS 31250:UART 1
20 PRINT CHR$(#90,60,127)
25 WAIT 60
30 PRINT CHR$(#80,60,0)
RUN

こんな感じでウェイトを入れて鍵盤を離すまで時間稼ぎをしています。他にもプログラムの方法はありますが、細かいことは良いんです。
最初からいろんなことを始めると、やりたいことすらできなくなるので、この方法で作っていきましょう。とは言ったもの、このまま作り続けるのはかなり大変です。
プログラムを作る人が大変という意味もありますが、コンピューター側が大変です。IchigoJamは記憶容量が小さいので、このまま作っていくと、とても短い音楽しか入力できません。
そのため、何とかしてMMLで音を入力できないかチャレンジしてみます。

次へ(IchigoJamで電子楽器を操作#4)