1.モーショントラッキングmidiコントローラ

概要

ソフトウェアシンセサイザーの演奏における表現の幅を広げることが目的。

手や頭の動きを自作のデバイスでトラッキングし、シンセのパラメーターや音響エフェクト、ステージ上の照明や映像なども演者が直感的に操作できるステージシステムを目指したいと考えている。

機能

リアルタイムでモーショントラッキングをする上で、操作性が非常に重要になってくる。指に装着したタッチセンサー、感圧センサー、物理ロータリーエンコーダを用いる、操作が反映されたと伝えるためのバイブレーションはプティクスなど、試作モデルでは、より直感的な操作が可能なウェアラブルmidiコントローラーとして開発を進めた。

 

プロトタイプとしては二つのモデルを作成した。一つ目は、手の甲にデバイスをつけるタイプ、二つ目は、スマートウォッチのような手首につけるタイプのものである。双方とも四端子2.5mmジャックを刺せるポートを作成し、指につけるセンサー部の接続が可能である。

指先のセンサーはesp32内蔵静電容量タッチセンサー、10mm径の薄膜型圧力センサー、b103ロータリーポテンショメータを組み合わせたものを作成し、タッチ、押し込み、回転の三種類の動作が可能である。

モーターには偏心回転モーターを使用し、hブリッジ(TB67H450FNG)を用いて正回転、逆回転を制御している。モーターはハプティクスのような振動が理想的だったので、瞬時に逆回転をかけて歯切れの良い振動にしている。正回転:逆回転で強い振動は9:5、弱い振動は4:3などの比率にしている。

タッチセンサーはesp32内蔵のものを使用しているのだが、その静電容量のアナログ値は環境による数値の変動やノイズが激しいので、移動平均法を使った適応型閾値処理を作った。具体的には、元のアナログ値にサンプル数10の移動平均をかけ、値を2割増幅させた値を閾値として設定し、元の値がそれを超えたらタッチイベント発生といったような処理である。

それにより環境要因のアナログ値の変化や、突発的なノイズで誤検出が頻繁に起きてしまう、といったことに対応できるようになった。

二代目のデバイスでは、esp32 um TinyPICOを使用している。

  • i2cでジャイロセンサー、128x32oledディスプレイ
  • 2.5mm4pinジャックポートを二つ
  • hブリッジモータードライバー
  • タクトスイッチx2、用途未定の赤外線受信センサー
  • 502030のlipoバッテリー(250mAh)

である。ソフトウェアはarduinoを使って動かしている。

デバイスで録音とmidiコントロールチェンジを操作し、maxmspで音声を操作している。

両手とメガネ型のデバイス(ハンズフリーマウスのもの)の三つのデバイスを用いて、ジャイロセンサー、加速度、また加速度を元にした相対的な左右向き、などの値をmidiコントロールチェンジとしてlogicのソフトシンセにマッピングし、EQやリバーブ、パンやLFOの速度のなどの値を体の動きを使って操作している。

IMG_0229_1920

両手とメガネ型のデバイス(ハンズフリーマウスのもの)の三つのデバイスを用いて、ジャイロセンサー、加速度、また加速度を元にした相対的な左右向き、などの値をmidiコントロールチェンジとしてlogicのソフトシンセにマッピングし、EQやリバーブ、パンやLFOの速度のなどの値を体の動きを使って操作している。

2.ハンズフリーBLEマウス

概要

先ほどのヘッドトラッキングデバイスを、目の瞬きの検出を行えるように改良しパソコンを操作できるようにした。実際のところ意識的な瞬きと無意識の瞬きが判別できないが、操作性は高い。

機能

一回の瞬きでクリック、2回の瞬きでスクロールモードに入りカーソルの動きが止まり、その状態で上下左右のスクロールが可能となる。目の上のフレームの部分に左右二つずつの赤外線フォトリフレクターをつけてアナログ値を測っている。瞬きした際はまぶたによる赤外線の反射の増加によりアナログ値が増加するため、それを瞬きと判定している。

フォトリフレクターは環境光、特に日光の影響を強く受けるため、移動平均法を使った適応型閾値処理を組んだ。

元はaliexpressで入手したオーディオサングラスを分解したフレームを筐体としている。デバイスにはhブリッジモータードライバーを介した偏心バイブモーターをつけ、瞬きが検出された際に短くバイブレーションがなるようになっている。当初はbletoothSerialを使い、ジャイロセンサーや瞬きの判定をmacに送信し、swiftで記述したプログラムでカーソルの動きやクリックに変換していた。のちにarduino側にblemouseのライブラリを発見したのでそれを拝借し、問題となっていたタイムラグが解決した。

このデバイス単体でネットサーフィンが可能だ。手につけるものと組み合わせてソフトウェアシンセの画面を操作するような機能として使いたい。

3.瞳孔トラッキング

概要

バイタルデータを元にした簡易的なリアルタイム自動作曲システム。無意識の生体データを曲に起こしてみようという試みだ瞳孔の大きさ、変化率、目の動き、瞬き、心拍数などのデータを取得し、MaxMspを用いて自動作曲パラメータとして用いる。

友達三人でとある作品展に応募した時のものだ。後ろのモニターに写っている映像は、デバイスから計測されたデータをリアルタイムで反映させている。友達二人がそれぞれ作ってくれた。片方はsiv3Dを使った、パラメータをわかりやすく表示させるもの、もう片方touchdesinerを用いて、送信したカメラ入力の映像に、バイタルデータに連動したエフェクトをかけてくれるものである。落選したが。

機能

作曲システムはmaxmspを用い、コード進行やシンセの音響パラメータ、アルペジオパターンやテンポ、転調などをリアルタイムで変化させるようにした。例えば、瞳孔が開き、心拍数の上昇や目の動きの多さなどを検知し、生成されるコード進行やarpパターンなどがより緊張したものになるといった具合だ。転調やコード進行などは自身の独自の解釈で作成した。

デバイスは二種類試作し、2台目は精度が瞳孔トラッキングの精度が増している。

webカメラを使用し、レンズ部分の赤外線フィルターを取り除くことで、環境光の赤外線を受容することができるようになる。レンズの隣に赤外線ledを置き、目の前で照射することによって、黒目の内側にあるさらに黒い瞳孔の部分が鮮明に見えるようになる。画像検出処理をpythonで作り、瞳孔のトラッキングが可能になった。また、心拍センサーは耳たぶに装着するタイプとなっている。

pythonによる画像検出機能は主にopenCVを使用し、カメラから取得した映像に、段階的な画像処理を施すことで瞳孔データを抽出している。まずカメラ映像をグレースケールに変換してモノクロに、次にバイラテラルフィルタをかけることで、輪郭のエッジはそのままノイズだけを滑らかに除去することができる。一般的なぼかし処理と異なり、バイラテラルフィルタは瞳孔のくっきりした境界線を保つことができる。続いて二値化処理を行い、画像を白と黒の2色に変換。瞳孔は周囲より暗い領域なので、一定の明るさより暗いピクセルを白く反転させることで、瞳孔部分だけを白い塊として浮かび上がらせる。この閾値は照明環境の変化に合わせてプログラムが自動調整する。

最後に白いエリアの輪郭を検出し、その形状に楕円をフィッティングし、検出された楕円の縦横比が0.51.5の範囲に収まっていれば「円に近い=瞳孔」と、大きく崩れていれば瞬きと判定する。抽出した瞳孔の大きさと位置を、毎フレームMIDI信号としてリアルタイムに出力している。

4.基板

概要

前で紹介してきたプロトタイプはけっこう作る労力が必要だ。kicadを利用し、現在新しい機能を盛り込んだもの制作している。デザインは、初代ipodのロータリーエンコーダが手首に乗ったイメージである。プロトタイプでは不可能だった、指先に六軸ジャイロセンサーを入れること、ハプティックをバイブレーションモーターから「power hap」というリニアタイプのアクチュエータにすることなどを盛り込んでいる。現在、各チップの動作確認を含めた様々なテストをしている

作成するにあたって必要な回路は、

  • 58個neopixelが乗ったフレキシブル基板リング
        → 1ミリ四方の小型RGBledを58個、リング上に設け、タッチロータリーエンコーダーやその他UIに合わせてledアニメーションを
   つける。
  • 5v、3v3昇圧回路
   →5vはneopixelリング用、3.3vの昇圧は各センサー類の給電用として、lipoバッテリーから昇圧する。
  • 8ch自己容量式ロータリータッチエンコーダ
   →基板テストでは、qt1244というチップを用いて相互容量式のタッチセンサーを試した。細かな値を取ることはできるがノイズ
            や環境変化に弱いため、このプロジェクトではより単純な自己容量式のタッチセンサーに変更したいと思っている。
  • 指先用3ch自己容量式タッチエンコーダーバーとジャイロセンサー
         →電極が三つの自己容量式タッチバーを使い、指先でモジュレーションホイールのような操作をできるように作成中。また、指先
            の動きをジャイロセンサーで捉えることが可能。
  • powerHap駆動リニアアクチュエータドライバー回路
         →TDK power hapを動かすための交流100v昇圧チップ回路。プロトタイプでは偏心回転モーターを使用していたが、歯切れや感
            触のスピード感、感覚の種類を増やすためにこのリニアアクチュエータを採用したい。
 

5.その他

概要

一つの項目にするまでもない小さなプロジェクトを紹介する。