はじめに
Maker Faire Tokyo 2016にマジュニアというサークル名で”森のタクト”という作品を出展することになりました。
私はこの作品の中でハードウェア全体とRaspberryPi上で動くソフトウェア部分を担当しました。
この記事では自分が関わった部分についての技術的な中身について説明していきます。
(ちなみに私はハードウェアエンジニアということもありソフトウェアに関しては素人なので、ソフトウェアに関しては温かい目で見守ってください...)
ソースコードや回路図はこちら
https://github.com/shozaburo-shimada/mft2016
森のタクト概要
何ができるか?
森のタクトは、まるで自分が指揮者になったかのように体感できるシステムです。
まず曲が楽器毎にスピーカーから流れ、またスピーカーの音に合わせて各モニタの絵がアニメーションします。
このとき指揮者は、
- 右手の振り方で曲の再生速度が変化させる
- 右手を止めると曲も止める(正確にはいま出ている音を伸ばし続ける)
- 左手で各演奏者の演奏をストップ、再開させる
といった操作をすることが可能です。
HW仕様概要
右手の振りを検知する方法として、おもちゃのテルミンを利用しました。
音の再生に関しては、RaspberryPiを7台を使用し、手前の1台がMIDIデータ(.mid)を読み込み、LANを通して音の情報(音色、音程、音の強さなど)を各RaspberryPiに送信することで実現しています。
アニメーションはスマホの画面をUSB-HDMI経由でモニタに表示しているのですが、それによって再生速度を伝える口にUSBが使えなくなってしまったので、スマホの静電タッチインターフェースを利用することで再生速度情報を伝送しています。
SW仕様概要
下記がSWの構成図で、赤字部分が自作しているところです。
HWの部分でも記載しましたが、音の情報をLAN上で送信しているので、サーバー/クライアントの概念で構成しています。
サーバー側は音の情報が来るのをひたすら待ちます。来たら即座に音を鳴らします。また、再生速度変更の情報を受けるとGPIOを通してスマホに伝えます。
一方クライアント側は.midファイルを解析し、その内容に合わせて音のデータを送信していきます。従って、音と音の間隔(再生速度)などは全てクライアント側が管理しています。
各機能ブロックごとの詳細
HW,SWについての詳細を全て一つの記事に書いてしまうと長くなってしまうので機能ブロック毎に別記事にしました。
詳細をご覧になりたい方は下記リンクをご参照ください。