Petit Kontrol

プチコンを利用してDSをMIDIコントローラにします。
オーディオケーブルで普通のPCに接続して使います。
ハードの改造は必要ありません。

しくみ

DS側で動作するプチコンmk2プログラムとPC側で動作するexeが、オーディオ信号を使った独自プロトコルでデータ通信して、DS上での操作をPCに伝えます。PC側のexeが、それをmidiコマンドに変換して出力します。
PC側のオーディオ入力インターフェースとして、マイク入力やライン入力を利用します。
ソフトシンセを操作するためには、別途 MIDI Yoke などの仮想MIDIケーブルが必要です。

使い方

  1. あらかじめ、pkmap.csvとpkmidi.cfgを設定しておく
  2. DSのオーディオ出力をPCのマイク入力などに接続
  3. DS側でPRG:PKTRLを起動
  4. PC側でオーディオ入力の設定を調整し、DSから出ている音を受け取れる状態にする
  5. PC側でxpkmap.bat(またはpkmap.exe)を起動
  6. PCの画面に0~127の間で変化する数字が表示されるように、オーディオ入力のレベルなどを調整
これで、DSからシンセを操作できるようになります。


PRG:PKTRL

DS側で動作する、プチコン用のプログラム。
ボタンON/OFFなどのコマンドをオーディオ信号に変換して出力する。

上画面

下画面(通常)

下画面(XYパッド)

コントロール

以下のようなコントロールがあり、それぞれに番号が割り当てられている。
各コントロールの値は0~127だが、最大値は任意に変更できる。
ボタンについては、オンになるとき最大値が、オフになるとき0が出力される。
フェーダーについては、0から最大値までの任意の値が出力される。
各コントロールの状態は上画面にも表示されている。

ABXYボタン(4-7)

A/B/X/Yは、そのままボタンとして動作する。これらは他のコントロールと独立して操作できる。
 番号  ボタン
 4  Aボタン
 5  Bボタン
 6  Xボタン
 7  Yボタン

下画面(8-31)

下画面に表示されたコントロールをタッチで操作する。3種類ある。
  • トグル(■): 押して離すときにON/OFFが切り替わる。ドラッグして複数まとめて操作できる。
  • フェーダー(▲): 上下にドラッグして任意の値にできる。下が最小、上が最大。
  • ボタン(●): 押したらON、離したらOFF。ドラッグして複数まとめて操作できる。
画面内の場所によって次のような番号が割り当てられている。フェーダーは2個分の場所のうち小さい方の番号に対応する。
 8  12  16  20  24  28
 9  13  17  21  25  29
 10  14  18  22  26  30
 11  15  19  23  27  31

XYパッド(32-47)

十字キーを押している間は下画面がXYパッドに切り替わる。XYパッドは全部で4つあり、十字キーの上下左右にそれぞれ対応している。一つのXYパッドあたり4個のコマンドが割り当てられている。
   十字キーの状態
(ボタンと同じ動作)
 タッチ状態
(ボタンと同じ動作)
 タッチ位置X
(左が0、右が最大)
 タッチ位置Y
(下が0、上が最大)
 十字キー上
 32  36  40  44
 十字キー下  33  37  41  45
 十字キー左  34  38  42  46
 十字キー右  35  39  43  47

LRボタン

LまたはRを押しながら操作すると、対応するコマンドを送信せずに内部状態のみが変更される。フェーダーの値を一気に変更したい場合などに利用できる。また、コマンドの取りこぼしなどによってトグルボタンの状態がシンセ側の状態と一致しなくなった場合などに、ずれを修正するのにも利用できる。

STARTボタン

メニュー画面を開く。
メニュー画面でXを押すと、PKTRLを終了する。終了する前に、現在の状態が自動的に保存される。
メニュー画面でYを押すと、編集モードに入る。

編集モード

 十字キー  上画面の青いカーソルで、編集するコントロールを選ぶ。
 X/Y  最大値を変更する。押し続けるとオートリピート。
 A/B  下画面のコントロール(8~31)の種類を変更する。
 フェーダーが使えるのは、その下の区画が空いている場合のみ。
 L  現在選択されているコントロールに対応するコマンドを送信する。
 押すと最大値が、離すと0が出力される。
 START  編集モードを終了。

QRコード

1/6
2/6
3/6


4/6
5/6
6/6



pkmap.exe

PC側で動作するプログラム。
オーディオ入力から受け取った信号をデコードして、pkmap.csvに従って対応するMIDIコマンドに変換、出力する。
コマンドプロンプト上で実行する必要がある。
一定時間入力がないと自動的に終了する。
送信するMIDIコマンドは3バイトの固定長。あらかじめpkmap.csvで設定しておく。
pkmap.csvを修正した時、それを反映させるためには、いったん終了して再度実行する必要がある。
実行時に引数を指定すると、それがpkmap.csvの代わりに使われる。

pkmap.csv

PRG:PKTRLから送られてくるコマンド(PK番号とPK値)に対して割り当てるMIDIコマンドを記述するCSVファイル。
各行には次の形式で情報を記述する。
  PK番号, PK値, MIDIステータスの上位4ビット, ノート番号, ベロシティ
一つのPK番号/PK値に複数のMIDIコマンドを割り当てることができる。それらはこのファイルに記述した通りの順番で出力される。

PK番号(4~47)

DSの上画面にグレーの背景付きで表示されている、コントロールの番号。ボタンの位置などによって決まっている。

PK値(0~127 または *)

コントロールの状態が変化した時に送られてくる値。値の範囲は通常0~127だが、最大値は編集モードで変更することができる。「*」とすると、任意のPK値に一致する。

MIDIステータスの上位4ビット(8~15)

MIDIコマンドのステータスバイトの上位4ビット。(ノートなら9、コントロールなら11、など。)

ノート番号(0~127)

MIDIコマンドの第2バイトとして送る値。

ベロシティ(0~127 または *)

MIDIコマンドの第3バイトとして送る値。「*」とすると、PK値と同じ、という意味になる。

pkmidi.cfg

pkmap.exeのMIDIコマンド出力先を指定するファイル。
1行目: 出力先のMIDIデバイス名。これが有効なデバイス名でない場合は、標準MIDIデバイス(MIDI_MAPPER)に出力される。
2行目: 出力先MIDIチャンネル。通常は0。
例:
 Out To MIDI Yoke:  1
 0
利用可能なMIDIデバイス名の一覧は、pkmap.exeを実行した時に表示される。

xpkmap.bat

コマンドプロンプトを開いてpkmap.exeを実行するバッチファイル。通常はこれを起動する。

ダウンロード

ċ
PKTRL.zip
(14k)
nsh,
2013/08/12 22:14
ċ
pkmap.zip
(34k)
nsh,
2013/08/12 22:13
Comments