SuperCollider の SynthDefBinary を画像にするやつ
10日くらい前に SuperCollider の SynthDefBinary を JSON にするやつを書いてまったく反応無かったけど懲りずに画像にするやつ書いた。JSONだとプログラムから見た場合の可読性は高いけど人間が読むにはフォーマットを考えた僕以外は分かりにくい。画像だと万人に受け入れられると思ったけど、普通に分かりにくい画像が生成される。
例
SynthDef("SinOsc", { Out.ar(0, SinOsc.ar(440, 0, 0.25)) }).writeDefFile
SynthDef(\trigTest, {|t_trig=0, freq=440| // t_trig creates a TrigControl Out.ar(0, SinOsc.ar(freq+[0,1], 0, Decay2.kr(t_trig, 0.005, 1.0))); }, [0, 4] // lag the freq by 4 seconds (the second arg), but not t_trig (won't work anyway) ).writeDefFile;
SynthDef(\arrayarg, { | amp = 0.1, freqs = #[300, 400, 500, 600], gate = 1 | var env, sines; env = Linen.kr(gate, 0.1, 1, 1, 2) * amp; sines = SinOsc.ar(freqs +.t [0,0.5]).cubed.sum; // A mix of 4 oscillators Out.ar(0, sines * env); }, [0, 0.1, 0]).writeDefFile
SynthDef("Latch_demo", { arg rate = 9; var freq, latchrate, index, ratio, env, out; latchrate = rate*LFNoise0.kr(1/10, mul: 0.03, add: 1.6); index = Latch.kr( LFSaw.kr(latchrate, mul: 5, add: 6), Impulse.kr(rate) ); freq = Latch.kr( LFSaw.kr(latchrate, mul: max(0, LFNoise1.kr(1/5, mul: 24, add: 10)), add: LFNoise0.kr(1/7, mul: 12, add: 60)), Impulse.kr(rate) ).round(1).midicps; ratio = LFNoise1.kr(1/10, mul: 2.0, add: 5.0); env = EnvGen.kr( Env.perc(0, LFNoise0.kr(rate, mul: 1, add: 1.5)/rate), Impulse.kr(rate), LFNoise1.kr([5, 5], 2, 1).max(0).min(0.8)); out = PMOsc.ar( [freq, freq * 1.5], freq*ratio, index, mul: env ); Out.ar(0, out); } ).writeDefFile