見出し画像

Demand / Trig1

Demandを使ってみました。
音をこちらに上げたのでぜひ聴いてみてください。
https://youtu.be/8MIef29dJ_Q

動画内では音をシーケンスさせながら音程やフィルターやエフェクトへのセンド量を変えて遊んでみていますが、基本に使っているコードはこちらです。

(
~rvb = Bus.audio(s, 2);
SynthDef(\fvrb, {
	var eff, src;
	src = In.ar(~rvb, 2);
	eff = FreeVerb2.ar(src[0], src[1], 1.0, 2);
	eff = LPF.ar(eff, 3000);
	Out.ar(0, eff);
}).add;

~dly = Bus.audio(s, 2);
SynthDef(\apdly, {
	var eff_l, eff_r, eff, src;
	src = In.ar(~dly, 2);
	eff_l = AllpassN.ar(src, 1.0, 1/5*2, 3);
	eff_r = AllpassN.ar(src, 1.0, 1/5*3, 3);
	// eff = LPF.ar(eff, 3000);
	Out.ar(0, [eff_l, eff_r]);
}).add;
)

(
SynthDef(\demand, {
	arg freq=220, gate=1;
	var trg, sig, amp= -9.dbamp, env, cycl=5, wet=0.15, dly=0.15;
	env = EnvGen.kr(Env.asr(0.01, 1.0, 0.01), gate, doneAction:2);
	trg = LFPulse.kr(cycl);
	freq = Demand.kr(trg, 0, Dseq([48, 36, 55, 62, 55, 48, 46, 55].midicps, inf));
	sig = Mix(Saw.ar([freq, freq+0.5, freq-0.5]));//* SinOsc.ar(freq*2);
	sig = Trig1.kr(trg, cycl.reciprocal*0.99) * sig;
	sig = MoogVCF.ar(sig, MouseY.kr(20, 4000), MouseX.kr(0, 0.85)).clip(-0.3, 0.3);
	Out.ar(~dly, sig * env * amp!2 * dly);
	Out.ar(~rvb, sig * env * amp!2 * wet);
	Out.ar(0   , sig * env * amp!2 * (1-wet));
}).add;
)

(
SynthDef(\bass, {
	arg freq=220, gate=1;
	var sig, amp= -6.dbamp, env;
	env = EnvGen.kr(Env.adsr(0.3, 2.0, 0.2, 0.1), gate, doneAction:2);
	sig = Pulse.ar(freq);
	sig = MoogVCF.ar(sig, freq*4, 0.1);
	// Out.ar(~rvb, sig * env * amp!2 * 0);
	Out.ar(0   , sig * env * amp!2 * 0.5);
}).add;
)

(
~cycl = 1/5;
~seq = Pbind(
	\instrument, \demand,
	\dur, ~cycl*8,
	\sustain, ~cycl*8);
~seq2 = Pbind(
	\instrument, \bass,
	\midinote, Pseq([43, 46, 39], inf),
	\dur, Pseq(~cycl*[14, 8, 10], inf),
	\sustain, Pseq(~cycl*[14, 8, 10], inf));

~pp = Ppar([Pfx(~seq, \fvrb), Pfx(~seq, \apdly), Pfx(~seq2, \fvrb)]).play(TempoClock(1));
)
  • エフェクトのSynthDef(リバーブとディレイ)

  • 音色のSynthDef(demand)

  • 音色のSynthDef(bass)

  • Pbind
    と上から順に実行していくと音が鳴ります。(マウスの上下位置によってフィルターが開閉します。)

コーディングが自己流でわかりづらいと思いますので
何をやっているか書いておきます。

SynthDef(\demand について


Pbindで鳴らしているのはSaw.arの音です。
[freq, freq+0.5, freq-0.5]というふうにデチューンさせたSawをMixでモノラルミックスしています。


[freq, freq+0.5]などと、角カッコ内にふたつのパラメータを書けば、
freqがチャンネル0(左チャンネル)から、
freq+0.5がチャンネル1(右チャンネル)から出力されますが、

このコードの場合
[freq, freq+0.5, freq-0.5]のように3つのパラメータを書いていて、通常なら
freq-0.5は3つめのoutである「チャンネル2」から出力されるところ、SawをMixクラスに通しているので、この3チャンネル分の信号は全てミックスされます。

※モノラルミックスされた信号をOut.ar内で!2して最終的には左右チャンネルから出力しています。

※音量の
-9.dbamp
は、音量をデシベルで指定する書き方です。

モノラルミックスしたSawをフィルター(MoogVCF)に通しています。
マウス上下位置によってフィルターが開閉されるように、マウス左右位置によってレゾナンスの値が変化するようにしました。
フィルターに通した音を.clipさせるのが好きで、そうしています。(-0.3, 0.3)は聴いた感じで調整した結果です。

(Sawをフィルターに通す前にTrig1に掛け算していますがそれについては後述します。)

そしてSawの周波数freqにはDemandを使って音階をつけているので、一定の音程では鳴りません。鍵盤で例えるなら「ドの鍵盤を長押ししてるだけで音程が変わっていく(メロディーが奏でられていく)」という状態になっています。
なのでPbind側では音程(\noteや\midinote)を指定していません。
Pbindはデフォルトだと中央ド(midinoteの60)をループ演奏するようになっているので、それを利用しました。
※\bassはPbindで音程を指定して鳴らしています。

[48, 36, 55, 62, 55, 48, 46, 55]の部分が、音程(メロディー)です。
使い方はPbindでPseqを使うのと同じ、
Dseq([数字], 繰り返し回数)
というフォーマットです。このコードでは回数指定せずinfで永遠に繰り返すようにしています。
また、.midicpsはMIDIナンバーを周波数(cycle per sec)に変換します。

さてここからが工夫したところですっ!


Demandだけだと、メロディーの移り変わりがなめらかに変化してしまうのですが、音程が変わるたびにゲート長も変えることができないかと思ってTrig1を併用しました。

変数trgに入れたLFPulseは周波数が5Hzです。(変数cycleに5を入れています。)
Demand.krとTrig1.krが同じトリガータイミングを採用しているので(双方の第1引数、trgのこと)、Dseqの[48, 36, 55, 62, 55, 48, 46, 55]が移り変わるのと同じタイミングでTrig1.krのトリガーが発生します。
※つまり5Hzなので1秒間に5回の頻度で48→36→55→62→55→と音程が変わり、それと同時にTrig1.krも発生する。

Trig1.krで発生したゲートの長さは
cycl.reciprocal*0.99
の部分で決定されます。
0.99という数値を小さくすればするほど[48, 36, 55, 62, 55, 48, 46, 55]の各ゲート長が短くなるしくみです。

…読んでもピンと来ない場合

説明がうまくないので…読んでもピンと来ない場合、下記をやってみると音で感じられてわかりやすいと思います。

コード内のこの行↓と
freq = Demand.kr(trg, 0, Dseq([48, 36, 55, 62, 55, 48, 46, 55].midicps, inf));

この行↓を
sig = Trig1.kr(trg, cycl.reciprocal*0.99) * sig;

コメントアウトして実行するとDemandとTrig1の効果が無くなり、シンプルにPbindが中央ドの音を繰り返すのを確認できます。

その状態から、Demandの行のコメントアウトを外してみるとDemandの効果を確認できますし、Trig1の行のコメントアウトを外してみればTrig1の効果を確認できますので、ぜひやってみると面白いと思います。

また、var の cyclを5以外の数字に変えるとトリガーのレートを変えられます。
その場合、Pbindのところの~cycl=1/5の部分も一緒に変えてあげると音符長と合わせられます。
例えばcyclを8にしたらPbindの~cyclの部分を1/8に変えます。


YouTubeの動画、聴きなおしたらモノラルになってますね。。。
(プレイしてたときはステレオだったのに、いつのまに…)
ディレイでLRに飛ばしているだけではありますが。。


<目次へ>
https://note.com/sc3/n/nb08177c4c011




いいなと思ったら応援しよう!