LoginSignup
8
7

More than 5 years have passed since last update.

TidalCyclesとOSC経由で同期する

Last updated at Posted at 2016-12-27

はじめに

TidalCyclesはHaskell製ライブコーディングツールで、リアルタイムでコードを実行して、SuperCollierのSuperDirt経由で音を鳴らしせたりします。そのままだと音を鳴らすことしか使えなさそうなのですが、応用として他のアプリケーションをトリガーして同期させるようにしてみます。

環境

TidalCycles 0.8
SuperCollider 3.8

内容

処理のフローは以下の通りです。

TidalCycles -> SuperCollider側でOSCをキャッチ -> SuperColliderから別ポートにOSCを送信 -> 別アプリでOSCを受信

TidalCyclesのOSC出力を受信する

TidalCyclesは音を鳴らす際にSuperCollider側にOSC通信を行っています。OSCのパスは/play2です。

これをSuperCollider側でキャッチするようにします。

SuperDirt.start;

OSCdef(\test,  {
    |msg, time, addr, recvPort| 'osc'.postln;
}, '/play2', n);

これで/play2を受信した際に受信したmsgを出力します。

SuperCollider側でOSCを送信する

/play2が受信できたので、あとはそのタイミングで別のポートにMessageを送信します。

SuperDirt.start;

b = NetAddr.new("127.0.0.1", 12345);

OSCdef(\test,  {
    b.sendMsg("/hello", "there");
}, '/play2', n);

これで送信されます。あとは各自受信用アプリケーションでOSCを受信します。例えばoFのサンプルに入ってるoscRecieveExampleを実行してもらえればメッセージが表示されるはずです。

注意事項

TidalからのOSCを直接受信しているわけではないので遅延が発生する可能性はあります(深く検証はしてない)。

最後に

TidalもSCも情報少なすぎて死ねる・・・

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7