通常はTidalCyclesからSuperDirt経由で音を生成・再生すると思います。
ただCycleとは無関係にシンセの音を出したいときなど、純粋にSuperColliderの音を出したいこともあるかと思います。
ということで、Tidalのコードを書いているエディタからhoscを用いてSuperColliderを再生してみます。
hoscがインストール済でない場合はインストールしておきましょう
cabal install --lib hosc
#実装
BootTidal.hsに下記を追加しておきます。(もしくは.tidalを開いて一つずつ実行する)
BootTidal.hs
import Sound.OSC.FD as O
s_new nodeId synthname param=
do
r <- openUDP "127.0.0.1" 57110
sendMessage r $ Message "/s_new" ([string synthname, Int32 nodeId, Int32 1, Int32 0]++param)
n_set nodeId param=
do
r <- openUDP "127.0.0.1" 57110
sendMessage r $ Message "/n_set" ([Int32 nodeId]++param)
n_free nodeId =
do
r <- openUDP "127.0.0.1" 57110
sendMessage r $ Message "/n_free" [Int32 nodeId]
SuperColliderを開いて、今回テストとして鳴らすノイズを定義しておきます。
SynthDef("backgroundNoise", {
arg amp=1;
var out=0;
p=PinkNoise.ar(1!2);
p=HPF.ar(p, 230);
p=LPF.ar(p, 1500);
Out.ar(out, p*0.2*amp);
}, [1]).add;
定義できたら、test.tidal作って以下のコマンドを順に実行してみてください
test.tidal
-- 再生
s_new 1000 "backgroundNoise" [string "amp", Float 1.8]
-- ボリュームなど、パラメータの変更
n_set 1000 [string "amp", Float 5.0]
-- 停止
n_free 1000
これでtidalからsupercolliderにOSC送信+再生できます