Nanoloop 1.3とMIDIクロックの同期


NanoloopとMIDIの同期

Nanoloop 1.3を手に入れていろいろといじっているのですが、クロック結構ぶれますね。
表示されてるBPMもずれてますし、一定BPMでも早くなったり遅くなったりします。
ですので、MIDI-GameBoyのケーブルを自作しNanoloopを他のMIDI機器と同期させたいと思います。

Nanoloopの同期仕様、ゲームボーイの通信コネクタの解析

NanoloopでMIDI機器との同期をとるケーブルは市販されていますが、調べると簡単なシリアル通信になっているようなので自作します。

まずゲームボーイの通信の仕様ですが端子は以下のようになっており、クロックに合わせてお互いの情報を交換するようになっているようです。
(参考:)

20121129_10411

20121129_10870

Nanoloopのシーケンサが動作しているときの出力されるCLKとTxは以下のようになっていました。

20121129_10377

このようにCLKは8[kHz]で1byte分の8発のパルスを12回発生させます。
また、Txは送信させる情報が0xFF→0xFF→0xFF→0x00→0x00→0xFF→0xFF→0x00→0x00→0xFF→0xFF→0x00
と変化するようです。

このひとまとまり信号は設定されたBPMに対応する周期Tごとに発生します。
設定されたBPMの四分音符につき4回発生するようになっているようです。(MIDIクロックは四分音符につき24回で、これの6倍)
つまり、BPMが100ならばT=150[ms]ごと、BPMが50ならばT=300[ms]ごとに信号が発生します。(T = 15000/BPM)

おそらくこの信号がNanoloop同士のクロックの同期のためのマスター側の信号だと思われます。

試しにPICを用いて、Nanoloop同様の信号を発生させる同期回路を自作し、Nanoloopで受信してみました。
接続はこんな感じ

GameBoy-Slave           SyncCircuit-Master(BPM160)

GND————————-GND
CLK<—–<——<——-—–>——->——>Rx

図は同期前のGameBoy側のCLK(黄)、Rx(青)、Tx(緑)の信号

20121129_10365

BPM160で同期回路側の信号が入力されていることが確認できます。
またGameBoy側のTxから同期のための信号が出ていることがわかります。
ゲームボーイ側のBPMは設定値のままで120です。

ここでNanoloopを同期させます。(A,Bボタン両押し)するとGameBoyの画面のBPMの数値が”E”と表示され同期されます。
信号は次の図のようになりました。

20121129_10367

同期回路の出力とGameBoyの出力が同期していることが確認できます。
観測された周期もBPM160に対応する周期T=15000/160[ms]=93.75[ms]程度であることがわかります。
Nanoloopも同期回路で設定したBPM160程度で再生されていました。

今後、MIDIクロックをPICで受信してNanoloopと同期できるようにしたいと思います。

20121129_10369

The following two tabs change content below.
miyamoto
IoT/ DIY / music / 日本語ラップ
miyamoto

About miyamoto

IoT/ DIY / music / 日本語ラップ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation