Skip to content

Instantly share code, notes, and snippets.

@yotamorimoto
Last active January 14, 2019 13:01
Show Gist options
  • Select an option

  • Save yotamorimoto/2261233 to your computer and use it in GitHub Desktop.

Select an option

Save yotamorimoto/2261233 to your computer and use it in GitHub Desktop.
シンセ作り
ドラムのハイハットをシンセで作る
SynthDef オブジェクトでシンセサイザーをつくる
SynthDef の引数は
SynthDef(シンセの名前, 関数).add; // .add で定義をサーバに送る
シンセの名前は String オブジェクト "I am SuperCollider" など
あるいは Symbol オブジェクト \iamSuperCollider などを使って書く
Symbol は空白を使えない
() 内を選択後、実行
(
SynthDef("hat", { | amp=0.1 |
var sig;
sig = WhiteNoise.ar;
sig = sig * amp;
Out.ar(0, sig); // 音の出力先、0が最初(ステレオの場合の左チャンネル)
}).add;
)
Synth("hat"); // Synth オブジェクトで鳴らす
(
SynthDef(\hat, { | amp=0.1 |
var sig;
sig = WhiteNoise.ar;
sig = HPF.ar(sig, 8000); // ハイパスフィルターを加える
sig = sig * amp;
Out.ar(0, sig);
}).add;
)
Synth(\hat); // 8000Hz 以下の低い音が消える
(
SynthDef(\hat, { | amp=0.1 |
var sig, env;
// パーカッション的な音の減衰を作る
env = EnvGen.kr(Env.perc(0, 0.03), doneAction: 2);
sig = WhiteNoise.ar;
sig = HPF.ar(sig, 8000);
sig = sig * amp * env;
Out.ar(0, sig);
}).add;
)
Synth(\hat); // 短い音
エンベロープについて
音のアタックや減衰をつくる
Env.perc(0, 0.03).plot; // パーカッション的な音の減衰
doneAction: 2 によってシンセが終了後、リソースを自己解放する
(
SynthDef(\hat, { | amp=0.1, pan=0 |
var sig, env;
env = EnvGen.kr(Env.perc(0, 0.03), doneAction: 2);
sig = WhiteNoise.ar;
sig = HPF.ar(sig, 8000);
sig = sig * amp * env;
sig = Pan2.ar(sig, pan); // 左右の音の位置を決める
Out.ar(0, sig);
}).add;
)
シンセに引数をわたす
Synth(\hat, [pan: 0]); // ステレオの中央
Synth(\hat, [pan: -1]); // ステレオの左
Synth(\hat, [pan: 1]); // ステレオの右
実践
SynthDef の WhiteNoise を置換えたシンセをつくり、鳴らす
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment