このページでは赤外線センサーを用いてテルミンのような電子楽器を制作するための方法を解説いたします。
ここではセンサーから入力される信号をGAINER(ゲイナー)を使いデジタル化しUSBケーブルを経由してコンピュータで更なる処理を行います。今回は音響合成ホストにmax/mspを使用しますが、GAINERモジュールは他にFlash、Proce55ingに対応しており、これらのソフトと各種センサー等アナログディバイスとの間で信号の通信が可能です。
Theremin(テルミン)とは
テルミンは初期の電子楽器であり、奏者が楽器に接触せず演奏を行うという特徴があります。この楽器の名前はロシアの博士であるレオン・テルミンにちなんでいて、1928年に特許を取得する以前はtermenvox or aetherphoneと呼ばれていました。
テルミンの特徴は本体から伸びる2本のアンテナに手を近づけることで、音量とピッチを独立してコントロールできるところにあります。テルミンは静電気を利用した演奏のため、扱いはとても敏感であり、演奏環境によっても演奏前に綿密なチューニングが必要でした。安定して狙ったピッチを出すには生楽器以上に奏者の高い技量が要求され、まともな演奏にはかなりの熟練を要する楽器でもあります。
音色はサインウェーブ(正弦波)に近いため、オカリナのように濁りのない純粋な音色であるものの、非周期的な音の揺れが不安や恐怖感を生み、現在でもホラー映画の効果音やロックバンドの飛び道具として利用されることがあります。
レオン・テルミン Léon Theremin
Léon Theremin (1896 – 1993)はソビエトの物理学者であり、後にアメリカで発明家、音楽家として活躍した人物です。
高校在学中にペトログラード音楽院でチェロを学び、1914年からペトログラード大学にて物理学と天文学を専攻しました。第一次世界大戦中は高等軍事技術専門学校に送られ軍事技術士の仕事に従事し、その後ペトログラード物理工科大学で主任研究者を務めていた時期にテルミンの原理を発見します。言うまでもなくテルミンというネーミングは彼が発明したことに由来します。
GAINERとは
GAINER(ゲイナー)はユーザー・インタフェースやメディア・インスタレーションのためのインターフェイスであり、センサーやアクチュエータをコンピュータに接続し、Flash、Max/MSP、Proce55ingなど様々なプログラミング環境から利用できるようになります。
特徴
- ブレッドボードでリアルタイムに配線を組みながら制作を進めることができる
- プロトタイピングの段階からファイナルプロジェクトにまで用いられている
- 自分自身が設計したモジュールを部品レベルから組み立てることができる
- 複数のデジタル、アナログのポートの組み合わせの中から目的にあったものを選択できる
- ソフトウェア&ハードウェアがオープンソースで公開されている
必要な材料
GAINERモジュール
赤外線センサー(SHARP GP2D12 F77)
ブレッドボード
配線材
音響合成ソフトウェア(max/msp)
赤外線センサーは赤外線発行ダイオードとPSD(Position Sensitive Detector)からなる装置で、三角測量の原理を利用し、センサーと物体間の距離を計測するものです。センサーのダイオードから発射された光は、物体にあたると反射し、センサーに再び戻ってきますがそのときの反射光が戻ってくる位置から距離を測量を行います。言うまでもなくこれは光を利用したセンサーなので、外光の影響を受けやすく使用する環境の照明の調節が必要となる場合があります。
回路の組み立て
GAINERとブレットボードを利用するとハンダを使わずに簡単に回路を制作し、即座に利用が可能となります。ここで使用する赤外線センサーとゲイナーを利用する廃船材は両極がコネクタとなっておりますので、片側を赤外線センサーに接続し、もう片側はコネクタを切断する必要があります。
コネクタを切断したら配線材を一本一本ほぐし、皮膜を取り除きます。ここで先端にハンダでメッキをしておくと線材がほぐれずにGAINERとの接続が容易になります。
ここまで加工をすれば回路側はほぼ完成です。赤外線センサーはコネクタ部を上向きに見たときに左から順にホット(電源)、コールド(グランド)、データ出力となっているので、それらを正しくブレットボード上でGAINERと接続し、USBケーブルでパソコンと接続すればいよいよセンサーでコンピュータとのインタラクションが行えるようになります。ここではain0(アナログインプット)からデータをGAINERに送ります。
Max/Mspプログラミング
max上での設定はGAINERオブジェクトを利用します。ブレットボード上で赤外線センサーから接続したGAINERアナログインプットの番号と同じ一からデータの取得を行います。上の写真のGAINERオブジェクトでは下の段の右から4番目がアナログインプットの0番と対応しておりますので、このアウトレットからデータの取得を行います。
このオブジェクトの詳細はオフィシャルのヘルプパッチをご参照ください。
GAINER.cc | Main / ホーム
フィリタリング
センサーから入力する値は突発的な数値の変化もあり、使用する用途によっては、これらを避けるために移動量の平均値をとりフィルタリングを行う必要が生じます。以下にJavascriptでの平均移動のアルゴリズムを掲載します。
このスクリプトはmax/msp上ではjsオブジェクトを利用し読み込むことが可能ですので、スムーズに変化するデータの作成にご活用ください。
ソースコード
var value = new Array(2); var output = 0; function msg_int(newValue){ value[1] = newValue; output = (value[1] + value[0]) / 2.0; outlet(0, output); value[0] = value[1]; }
デモムービー