難しいやり方はググった方が早い。ひとまずざっくりとblendと録音をしてみる。
blend
blend (argAnotherEnv, argBlendFrac: 0.5)
でブレンドされたEnvが返る。実際に使うときはEnvGen
のenvelope
に入れる。
例
~e = Env.perc(2,level:0.5); ~e_delay2 = ~e.delay(2); ~e_blend = blend(~e,~e_delay2,0.9); [~e,~e_delay2,~e_blend].plot(maxval:0.75);
plotで確認すると以下のようになる。上から順に~e
・~e_delay2
・~e_blend
。センスよく混ぜれば素敵なエンベロープが得られる、のではないかと思う。
録音
最低限やるべきなのは以下の3つで良い。
- s.prepareForRecord;
- s.record;
- s.stopRecording;
.prepareForRecord
でバッファなどを確保し、.record
で録音開始。そして.stopRecording
で録音終了。.prepareForRecord
をやっておかないと
slight delay before recording starts for real
となるらしい。録音前にしれっと実行しておこう。
録音が終わるとどこに保存されるかというと、Post Windowに表示されるRecording: /...
やRecording Stopped: /...
である。Macだと/Users/<username>/Music/SuperCollider Recordings
に保存されるのだと思われる。
難しいやり方はググった方が早い。ひとまずざっくりの方針なので、これで一応録音ができる。
作ったコード
( SynthDef(\h,{ |amp=0.1,freq=440,gate=1,aT=2| var sig,e,eg,y; y = SinOsc; sig = Mix.ar(y.ar([freq,freq*(4/3),freq*(5/4)])); e = Env.perc(aT,level:0.5); e = blend(e,e.delay(2),0.5); eg = EnvGen.ar(e,gate,doneAction:2); sig = sig * eg; sig = FreeVerb.ar(sig,0.3,0.9,0.7); Out.ar(0,Pan2.ar(sig,0,amp)); }).add; ) //~x = Synth(\h,[\amp,0.5,\freq,400,\aT,5]); ( ~r = r({ var f = [400,400*1.2,400/1.2,400*1.5,400*1.9,400]; //var w = Array.rand(f.size,5,15); var w = [11,5,8,6,15,8]; var wi; f.do({|item,i| wi = w[i].postln; Synth(\h,[\amp,[0.3,0.15,0.4].choose,\freq,item,\aT,wi]); (wi-2).wait; }) }); ) s.prepareForRecord; ~r.reset; ( s.record; ~r.play; ) s.stopRecording;
解説や補足
- freq*(4/3)はfreqに対して純正完全4度、freq*(5/4)はfreqに対して純正長3度である。
- 例えば、freq = 60.midicps = ドなら上記はドミファを表す。
- 録音したものはsoundcloudにアップロードしてみた。