2017年1月25日水曜日

リズムマシンからsync信号を出してみる。

去年というか、おととしPSoC 5LP Prototyping Kitで作ったリズムマシンからSync信号を取り出す実験をしてみた。

Sync信号というのはシンセのリズムの同期をとる信号で、これがないと機材同士の同期をとるのがむずかしい。

たとえA機材とB機材が水晶振動子で正確なクロックを刻んでいても、完全には一致せず、少しずつずれてくる。これを片方のクロックで強制的に同期させるのがSync信号。

今、作っているベースマシンと去年作ったリズムマシンとを同時に鳴らすとテンポがずれてしまって、とても気持ちわるくなる。ずれた感じが一瞬いい感じになる時もあります。ハードウェアで作ったおかげだとおもいますが、ずっと聴いているとやっぱり気持ち悪い。

いっぱつで同期をとれるようにSync信号を出すことを考えてみた。


同期の本体は、ベースマシンかリズムマシンか悩んだが・・・。両方から出力しておけば、拾う側で取捨選択できるとおもうのでどっちでもいいのか。

もう、中身を忘れかけてるリズムマシンからSync信号を出力させてみた。

GitHub:
https://github.com/ryood/RhythmMachine-V2


ch1:オーディオ出力 ch2:sync信号

main.c(の中の一部)

//=================================================
// Sync信号出力
//
//=================================================
void generateSyncSignal()
{
    Pin_ISR_Check_Write(1u);
    CyDelay(1);
    Pin_ISR_Check_Write(0u);
}

ソースの中の話になるが、このルーチンは、dds.cの

fp32 generateWave(struct track *tracks)

関数の中で、

if (tick >= ticksPerNote) {
   noteCount++;

(noteUpdateFunc)();

<後略>

として、音符が一つ進むとき、main.cの
void generateSyncSignal()
関数にコールバックするようにした。

SPIのCS用に予備端子を2つ作っていて(Pin_SPI_EX1、Pin_SPI_EX2)、Pin_SPI_EX1をSync信号の出力として指定したが、オシロで信号を拾えなかった。(接触不良も考えられる)

メモ:


Sync信号は取り出せそうだが、どう配線するか悩む。

予備のSPI端子あたりを再チェックする?