ソレノイド(玄関の呼び鈴で使われている電磁石)をMIDIで制御して楽器を自動演奏するロボットを作った人がいるので簡単にまとめた。
ソレノイドとは
ソレノイドは何かを押したり引いたりするよう電磁石で作った装置だ。ソレノイドは身の回りのあらゆるところで応用されている。自動洗濯機の水道バルブや玄関の呼び鈴などにも入っている。
VIDEO
ソレノイドを使った楽器演奏
これを使えば楽器を自動演奏することができるだろう。
VIDEO
ここではレコードプレーヤーに物を乗せて回して上部に取り付けられたスイッチを押す様に設置、スイッチによって動作するソレノイドでシンバルを演奏している。
ソレノイド+コンピュータでロボットドラマー作成
VIDEO
MIDI信号でリレー制御しソレノイドを動かす専用装置
つまりMIDI信号を決まった規則でソレノイドを動かす電気信号に変換すればよいだけなのだが、なんと日本でこの変換する為の専用デバイスを作成しているメーカーがある。
necobit だ。
VIDEO
これを使えば Arduno などの知識がなくても簡単なハンダ付けを行うだけで ソレノイドのMIDI制御を実現することが可能だ。
余談だが僕はあまりにも天才的で初めて見てからしばらく開いた口が塞がらなかった。あまりに凄い。凄すぎる。恐らく個人による独力開発だ。凄い。necobitは決しては世界的に有名という訳ではないが、日本人ならこれを使えということだろう。
VIDEO
これはブロワを電子制御して鍵盤ハーモニカを演奏している。これも凄まじい。
これまでも電子制御はあった。だがMIDIで制御することによってこれまでの電子制御とは全く違った可能性を与えてくれる。楽器の演奏だけでなく、音楽のタイミングに合わせて照明を付けたり消したりすることが可能になる。
MIDI信号を使ったステージ制御
実はMIDI信号を使って照明やスモーク・火炎・上昇装置等々のステージ効果を制御するということは何十年も前から一般的に行われている。だがMIDIだとノート番号が128しかないという制約によって、拡張性に限界があり、今では使われないのだそうだ。ステージで利用される照明の数は数万に登るため、今では照明制御をMIDIで直接行うことはなく、DMXと呼ばれるステージ装置を操作する専用の規格が利用されている。
だがそのDMXに対していつ処理を始めるのかを知らせるキュー を送り出す目的でMIDIを使うというケースは今でも多いとのこと。恐らく他の自動演奏楽器との連携の簡単さなども関係しているのだろう。詳細は次の記事がとてもわかりやすい。
大掛かりなステージ機器の世界では使われなくなってしまったMIDIだが、中小規模のステージであればMIDIでも十分対応出来るし、また数千円の投資で簡単に自作できるというメリットは限りなく大きい。
結論
MIDIによるデバイス制御は無限の可能性を秘めている。
特殊なドライバなしで操作できるというのは嬉しい。MIDIデバイスはUSBシリアルポートよりもずっと古い歴史がある。対応デバイスもドライバも対応していないものは絶対にないと断言できるほどに桁違いに普及している。
またタイマーが高性能というのも特徴だ。なんせ出身がミュージシャンなのでタイミング制御の精度が違う。産業用のシーケンサでも44.1K/秒の超高精度のタイマーで動作するシーケンサはなかなかないだろう。だがLinuxで動作するMIDI/Audioフレームワーク・JACKAudioの一般的な分解能は44.1k/s だ。これが無料で手に入る。
音楽ソフトを使って制御できるというのも良い。Linuxで動作する無料の音楽ソフト Ardour/QTractor/Rosegarden 等々を利用すればプログラムを書く作業すらも省ける。
MIDIによるデバイス制御は実はさりげなくゲームチェンジャーだ。
アイデア次第で無限の可能性を秘めているのがMIDIデバイス制御の世界だ。
余談 僕は拙作だが
Lambda Music Sequencer というソフトをライフワークとして開発している。これは Scheme という Lisp言語の方言を使ってプログラムを書くことでJACKAudioを操作して音楽を演奏するソフトで、JACKAudioを操作して音楽を演奏するフレームワークからSchemeを編集するためのエディタまでの統合環境を提供するプロジェクトだ。
VIDEO
これは、もともと自動作曲プログラムの為のフレームワークとして作ったシステムで高度な条件分岐を含むMIDI送出を得意とする。もともとジャズのリズムセクションの自動演奏プログラムを作る為に作った。ジャズはアドリブなので即興で気ままに曲進行が行ったり戻ったりする。これを実現したかったので作った。
だからこのLambda Music Sequencer は非直線的な処理(条件によって行ったり戻ったり)が得意だ。
無意味に凝り性な性格が災いして、shebangで指定してシェルプログラムとして実行できるようにしたり、クライアントサーバーモードで実行できるようにしてあったりする。僕自身は使わないのだが、どうしてもスケーラブル設計にしたかったので大分時間かけて作った。
ふと気付いてしまったのだが、これをnecobitと組み合わせて応用したら、恐ろしく開発が簡単かつポータブルなMIDIデバイス制御フレームワークに化けるではないか…。
いままでちっとも気づかんかったぞ…。