記事を眺めていて「実世界と繋がる機能を加えれば、他の要素と組み合わせて動作するシステムを作れるよなぁ」と考えました。要するに「A tiny MML parserは単にシーケンサーエンジンである」と考えるならば(まぁ、まさにその通りですが・・・)、シーケンサーが出すイベントに応じて外界を制御するグル―ロジックを付け加えるだけで、様々なコンポーネントを制御するシステムになる・・・というわけです。
そこで、A tiny MML parser Version 0.5.0では、新しくシンプルなユーザーイベント機能を搭載する事にしました。このユーザーイベント機能は、MML文の中に@{MY_EVENT}のように@で始まり{}で括った文字列を書いておくと、ユーザーコールバック関数に「'MY_EVENT'というユーザーイベントだよ!」と通知をしてくれるというものです。
今回のユーザーイベント機能を使うと、例えば以下のような事が簡単に実現できます。
- 曲の演奏に合わせてLEDを光らせる。
- 曲の演奏に合わせてモーターを動かす。
- 曲の演奏に合わせて音色を切り替える。
- 曲なんて鳴らさずに、イベントシーケンサとして使用する。
- その他色々。
以下に示すのは、イベント文字列に応じて、サーボを制御する実装例です。
加えて、シリアル通信にイベントを通知しています。
曲の演奏状態に合わせてサーボを動作させる事が出来れば、MMLパペットが作れますね。 :)
あと、今回のパッケージからRaspberry Piのサンプルも同梱する事にしました。Physical Pin 15 http://pi.gadgetoid.com/pinout/pin15_gpio22 にピエゾスピーカーを取り付けると演奏を楽しめます。こちらのサンプル、実は改良が必要なのですが、これはまた後日・・・やるかどうかわかりませんが・・・。
ダウンロードは https://www.cubeatsystems.com/tinymml/download.html からどうぞ。
0 件のコメント:
コメントを投稿