過去数か月間、さまざまなソフトウェア ミュージック シンセサイザー用の Kinect ベースのマルチタッチ インターフェイスの開発を検討してきました。
私が思いついた全体的な戦略は、ソフト シンセのさまざまなコントロールを表すために、プログラムまたは (可能であれば) アルゴリズムでオブジェクトを作成することです。これらには次のものが必要です。
- X 位置
- Y 位置
- 身長
- 幅
- MIDI出力チャンネル
- MIDI データ スケーラー (xy 座標を MIDI 値に変換)
アルゴリズムを作成するために私が検討した 2 つの戦略は、XML 記述と、何らかの方法で画面から何かを引き出すことです (つまり、実行中のプログラムが与えられた場合、すべてのコントロールの xycoords を見つけます)。その 2 番目の問題についてはどうすればよいかわかりません。そのため、このような特定の技術用語で表現しています ;)。コントロールの隅をマウスでクリックして xml ファイルを生成するなど、いくつかの中間的な解決策を実行できます。Flash アプリでよく見られるもう 1 つの方法は、画面サイズを変数に入れ、数学を使用してすべてのインターフェイス オブジェクトを画面サイズで構築することです。オブジェクトを画面上のコントロールと同じサイズにすること、またはすべての画面上のオブジェクトを表すことは必ずしも必要ではないことに注意してください (一部は単なるインジケーターであり、インタラクティブなコントロールではありません)。
その他の考慮事項;
(今のところ) 入力として X/Y 座標の 2 つのセット (左手と右手) が与えられた場合、それらを使用するための最良のオプションは何ですか? 私の最初の直感は、ある種のフォーカス テストを作成することでした。x/y 座標がインターフェイス オブジェクトの境界内にある場合、そのオブジェクトはアクティブになり、一定期間他の小さな境界の外にある場合は非アクティブになります。私が見つけた安価な解決策は、左手をポインター/セレクターとして使用し、右手をコントローラーとして使用することでしたが、もっと多くのことができるようです. いくつかのジェスチャ ソリューション (隠れマルコフ チェーン) があります。正確には、簡単に仕事に就けるわけではありませんが、十分なインセンティブが与えられれば、自分がやっていることがわかります.
さて、問題をまとめると、
- インターフェースを表す (デフォルトのインターフェースは常にマウス入力を想定しているため必要)
- コントロールを選択
- 2 セットの x/y 座標 (回転/連続コントローラー) を使用して操作するか、スイッチの場合は、できればジェスチャを使用して、フォーカスを与えたり取得したりせずに切り替えます。
特にマルチタッチ io/NUI で働いていた/働いている人からのコメントは大歓迎です。既存のプロジェクトや読みやすい資料 (書籍、サイトなど) へのリンクは大きな助けになります。