謎コンのアイディア
謎コンのアイディア
id:Chuck:20051220#p1 で初出な謎コントローラ*1
takedaさんからいくつかアイディアをいただいた。id:Chuck:20051220#c
当初コメント欄に書こうかと思ったが、膨らみそうになったので新しい記事を起こしてみた。
経緯
筆者のペンディング・プロジェクトに「謎コン」というのがあって、なにかというとプレステのコントローラをシンセのコントローラに使えないかと弄っているものだ。
デュアルショック2をターゲットとしている。前後左右のレバーが2本(8bit 2chx2本, センター値がだいたい80h)、あとはボタン(釦)が12個ぐらい付いている( ○×△□、↑↓→←、L1 L2 R1 R2 )。ボタンはON/OFFの二値情報以外にも押し込み具合によって8bit(00h~FFh) の多値情報(売り文句ではアナログ)も同時に出力する、というもの。
takedaさん曰く
プレステコントローラの楽器インターフェイス用の実装アイディア..。
左のアナログジョイスティックは、ピッチ用のCV。縦横2ch出せるとピース。さらに、右手の、丸三角四角バツのボタンは、ゲートのオンオフのコントロールで、押してるときはずーっと、4部音符、8部音符、二拍3連ボタンとして使って、右のアナログジョイスティックでテンポが、かえられんの。
ひょっとして、R1R2L1L2ボタンのほうに、機能を割り振らないと、操作できないかもだけど。
あー、ほしーな、ほしーな。
ボタンが沢山ついてるので、押してる間はずーっと、4分音符8分音符、二拍3連ボタンのほかに、簡易シーケンサ、というか、アルペジエータ。ドミソ、とか、ドソドとか、ワンショットで使える奴。左にCVにオフセットがつけられるというか。
右のアナログジョイスティックの上下方向は、テンポだったけど、左右は、音が出ているタイミング、右に倒すと、レガート、左に倒すとスタッカートっての。
左のスティックは、スタートのボタンとかポーズのボタンとかで、クオンタイズの恩のオンオフができるようにしたり...
ところで、プレステのコントローラのジャックって、アキバで手に入るのかしら?
お返事
試作に使っているAVR(ATmega88)だと 6ch PWM あるものの一部ペリフェラルの機能が被っていて、
おまけにタイマも使われちゃっていてCVがいくつ出せるかをちゃんと調べないといけません。それ以外ではゲートも少なくとも8本ぐらいは出せるでしょうから、何を出すかが悩ましいところです。
そんなところにいろいろとアイディアをいただきまして、ありがとうございます。参考になりますー。
簡易アルペジエータというのはとても面白いと思います。ただ若干問題があって、プレステはテレビゲーム用なので 30 frame/sec の世界の住人なのです。約30msec に処理して次のフレームに間に合えばよいという考えで、コントローラのデータ取得も実はかなり遅いです。マイコンからコマンドを送ってときどき待ち時間を入れてやらなくては押釦情報を正しく得ることができず、数msec かかるのです。下手にコマンドを打つと数10msecになったりして*2。
対して人間の音の遅れに対する敏感度合いは数msec というところです。
数msecオーダーで遅れがあるとなると、ボタンを押してタイミングを出す使い方には若干及び腰だったりします。いわゆる「音ゲー」は良くやっているなぁという感想です。
しかし、論よりRUNでやってみないとなんとも言えませんね。
4分音符8分音符、二拍3連
ということであれば、大元にMIDIタイミング源が居てそれに同期ということになるでしょう。コントローラからは本当にON/OFFの情報をレベル(パルスでなく)で貰ってMIDIの同期信号にゲートすれば、コントローラからのタイミングの遅れ問題はなくなりそうです。
ちなみに AVRとDualShock2 との間は 250kHz*3の3線シリアル伝送方式で行っており、MIDIよりは速いものです。MIDIは 31.25kHzのシリアル。
これらを全部ワンチップに入れるとすごく複雑になりそうなんですけど… いやしかしそうするとコントローラはON/OFFだけにしか使っていないわけで、簡易MIDIアルペジエータにゲートを付ければいいような気もしてきたりして…(汗)
機能を独立にして複数AVRを集合するとすごくなるっていうのがいいカモしれません。あれ?どこかで書いたような…
んで、もって、
ところで、プレステのコントローラのジャックって、アキバで手に入るのかしら?
私はPS2の部品を処分している人から入手しましたが、ジャンクのプレステを買ってきてバラすというのがいいと思います。