とりあえずプチコン上のUIはこんな感じ。
下画面タッチで操作します。部品は3種類あります。
- トグルボタン: 押すたびにON/OFFが切り替わる。
- 枠の付いたボタン: 押したらON、離したらOFF。
- スライダ: 上下に動かして値を任意に変更。
ていうかDSからどうやってMIDI信号を出すの?
DSから直接MIDI信号を出すのは無理なので、DSのオーディオ出力をPCのライン入力に入れて、オーディオ信号によるシリアル通信でデータを送り、後はPC側のソフトで何とかします。(PC上で仮想MIDIデバイスとして動作させます。)オーディオ信号を使うので、ちょうどアナログモデムと似たようなものです。もっともオーディオ出力は一方通行だしプチコンの能力も限られているので、簡素化した独自のプロトコルを使うことにします。どうせPC側で変換するので、送るのはMIDIメッセージそのものである必要はありません。必要最低限の情報だけを送って、PC側で適当にマッピングします。
基本的には、信号の波形をBGMPRGで定義してMMLでその音を再生すれば、任意の波形の信号を送ることができます。が、オーディオインターフェースを経由するわけなので、少なくともDC成分は除去されてしまいます。それに、VSYNCを使っても微妙にタイミングがずれてしまうので、なかなか思ったような波形を出すのは難しいです。
実験の結果、とりあえずこんな感じにしてみました。1個のコマンドは14ビット固定長で、パリティとかは何もなし。それを2相PSKでエンコードし、無音部分を長めにとって区切りとし、最大60個/秒ぐらいのレートで送ります。この波形は実際にPCでキャプチャしたものですが、デコード処理はまだ実装してないので、ちゃんと受け取れるかどうかは分かりません。。
0 件のコメント:
コメントを投稿