Archive for 5月, 2009

フィルの入れ方。

フィルの入れ方を考えていたのですが、パターンを二つ用意しておいて、好きなときにオンオフするというのが、自由にできていいかも。もう、フィル・コリンズくらい便利です。でもオフされているSynthも処理されているので、CPU効率/プログラム的にあまりエレガントではないですね… うーん。(追記、ampではなくtypeというのを変更する事で、使用していない部分を処理しないようにできることが判明、super!)

~snareamp = 0.3; ~kickamp0 = 0.2;~kickamp1 = 0.2;
~kickamp0 = 0.2;~kickamp1 = 0.2; // all kick on
~kickamp0 = 0.2;~kickamp1 = 0.0; // only one kick
~snarefillamp = 0.0; // no fill
~snarefillamp = 0.16; // add fill

RedMst.play;

(
RedMst.clear;
RedMst.clock = TempoClock(120/60);

RedTrk(
\kick0,
Pbind(
\instrument, \SOSkick,
\dur, Pseq([1.5, 0.5, 2 ],inf),
\freq, 80,
\beater_noise_level, 0.01,
\amp, Pseq([1,0,0],inf) * Pfunc({~kickamp0})
), [0]

);

RedTrk(
\kick1,
Pbind(
\instrument, \SOSkick,
\dur, Pseq([1.5, 0.5, 2 ],inf),
\freq, 80,
\beater_noise_level, 0.01,
\amp, Pseq([0,1,1],inf) * Pfunc({~kickamp1})
), [0]

);

RedTrk(
\snare,
Pbind(
\instrument, \SOSsnare,
\snare_tightness, 1,
\drum_mode_level, 1,
\decay, 0.1,
\dur, Pseq([
Pseq([1,1,1,1],3),
Pseq([1,1,1,0.5,0.5],1)
],inf),

\amp, Pseq([
Pseq([0,0.9,0,1],3),
Pseq([0,1,0, 1,1.2],1)
],inf) * Pfunc({~snareamp})

), [0]
);

RedTrk(
\snare_fill,
Pbind(
\instrument, \SOSsnare,
\snare_tightness, 1,
\drum_mode_level, 1,
\decay, 0.1,

\dur, Pseq([0.5,0.5,0.5,0.5],inf),
\amp, Pseq([0,1,0,1],inf) * Pfunc({~snarefillamp})
), [0]

);

)

まいにちコーディング090517

RedMstGUI(20);

(
RedMst.clear;
RedMst.clock = TempoClock(128/60);
~kickamp = 0.4; ~snareamp=0.2; ~hatsamp=0.05;
~s_tightness = 1; ~s_drumlevel =1;

RedTrk(
\bass0,
Pbind(

\instrument, \bass_twotones,
\midinote, Pshuf([66,68,76,75, 66,68,68,76,75, ],inf) – 24,
\dur, Pseq([ 1,1,0.5,1, 0.5, 0.5,0.5, 0.5, 2.5 ],inf),
\filtertime, 0.3,
\basstone,[0, -1]

), [0]

);

RedTrk(
\kick,
Pbind(
\instrument, \SOSkick,
\dur, Pseq([Pseq([2.5,1.5], 3),0.5,2,1.5],inf),
\amp, Pseq([1], inf) * Pfunc({~kickamp}),
\freq, 87.3,
\beater_noise_level, 0.01,
\decay, 0.5

),
[0]

);

RedTrk(
\snare,
Pbind(
\instrument, \SOSsnare,
\dur, Pseq([1],inf),
\amp, Pseq([0,1,0,1],inf) * Pfunc({~snareamp}),
\snare_tightness, 1 * Pfunc({~s_tightness}),
\drum_mode_level, 1 * Pfunc({~s_drumlevel}) ,
\decay, 0.17

),

[0]
);

RedTrk(
\hats,
Pbind(
\instrument, \SOShats,
\dur, Pseq([0.5,1,0.5, 0.5,0.25,0.25+0.5, 0.25,0.25],inf),
\reltime, Pseq([ 0.15, 0.15, 0.15, 0.5, 0.5, 0.5, 0.125, 0.125 ],inf),
\pitch1, Pshuf([10,9,8,7,6,5,4],inf) * 0.01,
\amp, 1* Pfunc({~hatsamp}),
\freq, 6000 /// low freq like 50 or around 4000 is fun too
),
[0]

);

RedTrk(
\perc,
Pbind(
\instrument, \SOStom,
\dur, Pseq([4+0.75, 0.75, 1.5, 0.25,0.25+0.5],inf),
\amp, Pseq([0,1,1,1,1],inf) * 0.5,
\drum_mode_level, 0.5 ,
\decay, Pseq([0.2,0.2,0.2,0.25,0.25],inf),
\freq, 175

),

[0]
);
) // to select

RedMst.play

MTM03、ありがとうございました。

 

先週末、CraftwifeのMakeTokyoMeeting03(以下MTMと略す)での2Daysライブをしてきました。回を増すごとに大規模になってきたこのフェスティバルは、Makerと呼ばれる、モノづくりのすきなオタクたちの為の学園祭のようなもの。参加者は皆「科学/工作少年がそのまま大人になっちゃった」人たち。いろいろなジャンルの作品 … 自作楽器や、手芸と電子工作をドッキングさせたような作品たちから、アキバ系まで … を抱えたブースが、廃校に成った小学校の校舎に並んで、訪れる人たちに、おぉ、と歓声を上げさせていました。知的かつ子供のような好奇心が刺激されます。
Craftwifeも、昨秋2回目のMTMにライブで参加させて以来、すっかりMake魂に火をつけられてしまい(しかも紙面を飾らせていただいたり)、お気に入りのイベントの一つなのです。
Craftwifeのライブは「ビデオ撮影禁止」の字幕に始まり、アノ曲とアノ曲を、tn8ソロ + ビデオサンプリングで演奏。後半からは新メンバーが登場し、アノ曲を演奏しました。途中で、オリジナルのシャツに取り付けられたLEDも点灯。新メンバーは、数々の厳しい参加条件を満たしてくれた奥様です。(SuperColliderに関しては、最初はあまりできませんでしたが、参加希望時から初ステージまでの間に、とても意欲的にがんばって覚えてくれました。私のクレイジーな趣向におつきあいいただいて、どうもありがとう!)
今まで2日間連続のライブをしたことがなく、1日目が終わった後に、やはり次の日までより演奏しやすくしよう、と夜コーディング。2日目は、マイナーチェンジをしました。お客さんから「どこまで演奏しているの?」と尋ねられると、とても困ってしまいますね。演奏って何?無意識に「演奏」という言葉を使ったけれど、「コントロール」と言ったほうが近いのかも。今のところ、結構自由にコントロールできます…というわけで、「結構演奏している」というのが、一番的確な答えなのかな。今後もより良いコントロールのできるプログラム開発をしていきたいと思っています。音楽と言うものや、演奏とは一体なんなのか?といったテーマは、コンピュータ・ミュージシャンである私たちにとって、永遠のテーマであるのかもしれませんね。
次のライブは、7/19(日)に名古屋であります。毎回同じ事ものを演奏するなんてできないCraftwifeは、また新たなプログラムか何かシステムを取り入れることになっていると思います。乞うご期待。

 

まいにちコーディング090516

 

(

RedMst.clear;

RedMst.clock = TempoClock(88/60);

 

~kickamp = 0.4; ~snareamp=0.2;

// ~s_tightness = 10.0.rand.postln; ~s_drumlevel = 10.0.rand.postln;

~s_tightness = 4.5; ~s_drumlevel = 1.4;

 

RedTrk(

\bass,

Pbind(

\instrument, \bass_twotones,

\dur, Pseq([3.5, 0.5, 4],inf),

\degree, Prand([3, 5,6],inf), // is midinote [ 41, 44, 46 ]

\scale, Scale.minor,

\octave, 3,

\releaseTime, Pseq([2.8, 0.3, 3],inf),

\legato, 0.8,

\amp, 0.1,

\basstone, 1,

\filtfreq1, 12000,

\filtfreq2, 6000,

\filtertime, 2

), [0, 1,2]

 

);

 

RedTrk(

\snare_click,

Pbind(

\instrument, \SOSsnare,

\dur, Pseq([Pn(0.25,4), 0.5, 0.25, 0.25, 0.5,0.5, 0.25, 0.75],inf),

\amp, 0.6 * Pfunc({~snareamp}),

\snare_tightness, 9,

\drum_mode_level, 0.1,

\decay, 0.04

),

[0,1,2]

);

RedTrk(

\snare_A,

Pbind(

\instrument, \SOSsnare,

\dur, Pseq([0.99,2.01,1],inf),

\amp, 0.18 * Pfunc({~snareamp}),

\snare_tightness, 1 * Pfunc({~s_tightness}),

\drum_mode_level, 1 * Pfunc({~s_drumlevel}) ,

\decay, 0.2

 

),

[1,2]

);

RedTrk(

\kick,

Pbind(

\instrument, \SOSkick,

\dur, Pseq([0.25, 1.25, 0.25, 0.75, 1.5],inf),

\amp, Pseq([0, 1,1,1,1], inf) * Pfunc({~kickamp}),

\freq, 50,

\beater_noise_level, 0.01,

\decay, 0.5

 

 

 

),

 

 

 

[1,2]

 

);

RedTrk(

 

\kick2,

Pbind(

\instrument,\SOSkick,

\dur, Pseq([Pn(0.25,7), 0.25+7],inf),

\amp, 1 * Pfunc({~kickamp}),

\freq, 60,

\beater_noise_level, 0.01,

\decay, 0.5

)

,[2]

);

 

 

RedTrk(

 

\snare2,

Pbind(

\instrument,\SOSsnare,

\dur, Pseq([7,  0.125, 0.125, 0.125, 0.12, 0.5 ],inf),

\amp, Pseq([0, Pn(0.05,5)],inf) * Pfunc({~snareamp}),

\snare_tightness, 1 * Pfunc({~s_tightness}),

\drum_mode_level, 1 * Pfunc({~s_drumlevel}) ,

\decay, 0.1

)

,[2]

);

 

 

 

 

 

 

)

 

RedMst.play(2)

RedMstGUI(20)

まいにちコーディング090515

 

RedMst.clear;

RedMst.clock = TempoClock(126/60);

~kickamp = 0.3; ~snareamp = 0.2; ~hatsamp =0.00001;

 

~hatsamp =0.00001;

 

 

RedTrk(

\bass,

Pbind(

\instrument, \bass_twotones,

\dur, Prand([0.5,1.5], inf ), // replace to Pseq

\midinote, Prand([67],inf) – Pseq([24,36],inf), 

\curve, 4,

\basstone, Pseq([1,0.8,0.6,0.4],inf)

), [0]

);

RedTrk (

\kick,

Pbind(

\instrument, \SOSkick,

\dur, Pseq([0.5,0.5,1],inf),

\amp, Pseq([1,1,0],inf) * Pfunc({~kickamp}),

\freq, 50,

\beater_noise_level, 0.005,

\decay, 0.2

), [0]

);

 

 

 

RedTrk(

\hats,

Pbind(

\instrument, \SOShats,

\dur, Pseq([0.5],inf),

\amp, 0.05,

\reltime, 0.1

), [0]

);

RedTrk(

\snare,

Pbind(

\instrument, \SOSsnare,

\dur,Pseq([1,0.5,0.5],inf),

\amp, Pseq([0,1,0.2],inf) * Pfunc({~snareamp})

), [0]

);

 

 

RedTrk (

\kick_fill,

Pbind(

\instrument, \SOSkick,

\dur, Pseq([0.5,1,0.5,2],1),

\amp, Pseq([1,1,1, 0],1) * Pfunc({~kickamp}),

\freq, 50,

\beater_noise_level, 0.005,

\decay, 0.2

), [1]

);

 

RedTrk(

\snare_fill,

Pbind(

\instrument, \SOSsnare,

\dur,Pseq([2,0.5,0.5,0.5,0.5],1),

\amp, Pseq([0,1,1,1,1],1) * Pfunc({~snareamp})

), [1]

);

 

まいにちコーディング090514

 

RedMst.clear;

RedMst.clock = TempoClock(120/60);

 

~snareamp = 0.0;  ~kickamp = 0.0;

~snareamp = 0.2; 

~kickamp = 0.3;

~basscurve = -8;

~basscurve = -1;

~basscurve = -4;

 

RedMst.play;

 

RedTrk(

\bass,

Pbind(

\instrument, \bass_twotones,

\dur, Pseq([1.5, 0.5, 0.5,0.5, 0.5,0.5, 1.5, 0.5, 0.5,0.5, 1], inf ),

\midinote, Prand([60, 60, 63,60,63,60,  55, 55, 58, 55, 58],inf) – 24, // replace to Pseq

\legato, 0.8,

\curve, Pfunc({~basscurve}),

\basstone, -1

), [0]

);

RedTrk(

\kick,

Pbind(

\instrument, \SOSkick,

\dur, Pseq([1.5,  0.5, 2 ],inf),

\freq, 80,

\beater_noise_level, 0.01,

\amp, 1 * Pfunc({~kickamp})

), [0,1,2]

 

);

 

RedTrk(

\snare,

Pbind(

\instrument, \SOSsnare,

\snare_tightness, 1,

\drum_mode_level, 1,

\decay, 0.1,

\dur, Pseq([

Pseq([1,1,1,1],3),

Pseq([1,1,1,0.5,0.5],1)

],inf),

\amp, Pseq([

Pseq([0,0.9,0,1],3),

Pseq([0,1,0, 1,1.2],1)

],inf) * Pfunc({~snareamp})

), [0,2]

);

 

RedTrk(

\snare_fill,

Pbind(

\instrument, \SOSsnare,

\snare_tightness, 1,

\drum_mode_level, 1,

\decay, 0.1,

 

\dur, Pseq([1,1,0.5,0.5,0.5,0.5],inf),

\amp, Pseq([0,0.9,0,1,1,1],inf) * Pfunc({~snareamp})

), [1]

 

);

 

 

 

 

RedTrk(

\snare_end,

Pbind(

\instrument, \SOSsnare,

\snare_tightness, 0.8,

\drum_mode_level, 0.001,

\snare_level, 0.1,

\freq, 200,

\decay, 0.7,

\dur, Pseq([1],1),

\amp, Pseq([1],1) * Pfunc({~snareamp})

), [2]

 

);

 

 

SCしつもん箱02 :メインのボリュームをコントロールする。

ひさびさに普通の記事でも書くことにしましょう。

Make magazineの日本版ブログで、CraftwifeのnewアイテムであるLEDネクタイを紹介していただきました(ありがとうございます)。Youtubeで公開しているデモビデオで、LEDはレベルメーターのように見えたり、パッパッ、と明滅したりしていますが、これはすべてSuperColliderでコントロール(プログラミング)しているものです。それぞれのLEDを独立して扱えるので(明るさもリニアに変えられます)、自由な発想でピカピカできるのです。ピカッ。

再来週末、23,24日のMakeTokyoMeeting03に出演予定なので、実際のピカピカ物をご覧になりたいみなさん、よかったら遊びに来てくださいね。会場は東京の八王子で、全イベント入場無料です。

 

ところで、SCで演奏することをかんがえると、あれこれとしたいことが増えるもの。あぁ、曲の最後はフェードアウトしたい、とか。そんなときは、Volumeクラスが便利みたいです。これでシンセ・サーバーの全体の音量にアクセスすることができます。サーバーパネルについている音量スライダーと同じですね。ヘルプファイルより:

 

v = s.volume; //変数vにヴォリュームを割り当てる

v.min; // vの範囲の最小値を求める

v.max; // 同じく最大値

v.volume = rrand(-50, 5); // ヴォリュームをセットする。単純に値を指定したい場合は次のとおり:

v.volume = -10; // ボリュームを-10dBにする

v.setVolumeRange(-90, 8); // ボリュームの範囲を変える

v.mute; // ミュート

v.unmute; // ミュート解除

まいにちコーディング090513

// こんな今までに見た事の無いエラーがでた。

// the pattern is not providing enough values to assign to the key set: [ 1, 0.5, 1.5, 1, 1, 0.5, 1, 0.5, 1 ]

// Pbindのdurを指定するとき、Pseqじゃなくて、Pbindと書いていたことに暫く気づかなかった… つれかた!

(

RedMst.clear;

RedMst.clock = TempoClock(126/60);

~snareamp = 0.2; ~hatsamp = 0.1; ~kickamp = 0.5;

 

RedTrk(

\bass,

Pbind(

\instrument, \bass_twotones,

\dur, Pseq([1, 0.5, 2.5, 1, 0.5, 1.5, 1], inf ),

\midinote, 33,

\legato, 0.5,

\filtfreq1, Pseq([3000, 15000, 3000, 3000, 12000, 3000, 3000],inf), // um, is this working?

\filtfreq2, Pseq([10000, 12000, 10000, 10000, 12000, 10000, 1200],inf),

\filtertime, 0.1,

\curve, -5,

\basstone, -1

), [0]

);

 

RedTrk(

\kick,

Pbind(

\instrument, \SOSkick,

\freq, 50,

\beater_noise_level, 0.005,

\decay, 0.6,

\amp,Pseq([1],inf) * Pfunc({~kickamp}),

\dur, Pseq([1, 0.5, 1.5,1,  1, 0.5, 1, 0.5, 1],inf)

), [0]

);

 

RedTrk(

\snareA,

Pbind(

\instrument, \SOSsnare,

\dur, Pseq([1,1,1,1],inf),

\snare_tightness, 0.1,

\drum_mode_level, 0.1,

\snare_level, 0.25,

\freq, 200,

\decay, Pseq([0.45,0.45, 0.3, 0.3], inf),

\amp, Pseq([0,1,0,1],inf) * Pfunc({~snareamp})

 

), [0]

 

);

 

RedTrk(

\snareB,

Pbind(

\instrument, \SOSsnare,

\amp, Pseq([1],inf) * Pfunc({~hatsamp}) * 0.5,

\dur, Pseq([1, 0.5, 0.5 , 0.25, 0.25,0.25,0.5 , 0.5, 0.25],inf),

\decay, 0.002,

\freq, 800

), [0]

)

 

)

 

RedMst.play;

RedMstGUI(20)

まいにちコーディング090512

// ah, sorry to being lazy…

RedMstGUI(20)

(

RedMst.clear;

RedMst.clock = TempoClock(120/60);

~snareamp = 0.1; ~hatsamp = 0.1; ~kickamp = 0.5;

 

RedTrk(

\bass,

Pbind(

\instrument, \bass_towtones,

\midinote, Pseq([Pn(69,16), Pn(65,16) , Pn(60,16) , Pn(67,16)],inf) – 24,

\legato, 0.5,

\dur, 0.5,

\filtfreq1, 12000,

\filtfreq1, 2000,

\filtertime, 0.1,

\curve, 5,

\basstone, -0.5

),[0]

);

 

RedTrk(

\kick,

Pbind(

\instrument, \SOSkick,

\freq, 50,

\beater_noise_level, 0.02,

\decay, 0.2,

\amp,Pseq([1],inf) * Pfunc({~kickamp}),

\dur, Pseq([1.5, 0.5, 0.5, 1, 0.5],inf)

), [0]

);

 

RedTrk(

\snareA,

Pbind(

\instrument, \SOSsnare,

\amp, 1 * Pfunc({~snareamp}),

\dur, Pseq([1,1,1,1],inf),

\snare_tightness, 0.5,

\snare_level, 0.25,

\freq, 80,

\decay, 0.08

), [0]

 

);

 

RedTrk(

\snareB,

Pbind(

\instrument, \SOSsnare,

\amp, Pseq([0,1],inf) * Pfunc({~snareamp}) * 0.5,

\dur, Pseq([2,2],inf),

\decay, 1.2,

\freq, 200

), [0]

)

)

まいにちコーディング090511

// second week – awful !!!

RedMst.play;

RedMstGUI(20);

 

(

RedMst.clear;

RedMst.clock = TempoClock(120/60);

~snareamp = 0.3; ~hatsamp=0.1; ~kickamp=0.2; ~bassapm=0.2;

 

RedTrk(

\bass0,

Pbind(

\instrument, \bass_towtones,

\midinote, Pseq([Pn(60,10), 55,67,55,55,55,   55,67,55,55,55], inf   ) – 24,

\amp,Pseq([1],inf) * Pfunc({~bassapm}),

\releaseTime, 1,

\legato, Pseq([0.07, 0.2, 0.07,0.2,0.07],inf),

\dur, Pseq([

Pseq([1, 0.75,0.5, 0.75,1],2),

Pseq([1,0.75,0.5,0.75,1], 2)

],inf),

\basstone, 1,

\filtfreq1, 2000,

\filtfreq2, 1000,

\filtertime, 0.1

), [0]

);

 

 

RedTrk(

\bass1,

Pbind(

\instrument, \bass_towtones,

\midinote, Pseq([Pn(51,5), 55,55,55, 58,58,58, 60], inf   ) – 24,

\amp,Pseq([1],inf) * Pfunc({~bassapm}),

\releaseTime, 1,

\legato, Pseq([0.1, 0.2,0.07, 0.2, 0.07, 0.2, 0.07,0.2, 0.07, 0.1, 0.1,0.1],inf) ,

\dur, Pseq([

Pseq([1, 0.75,0.5, 0.75,1],1),

Pseq([1,0.75,0.5,0.75,0.5,0.25,0.25], 1)

],inf),

\basstone, 1,

\filtfreq1, 2000,

\filtfreq2, 1000,

\filtertime, 0.1

 

), [1]

);

 

 

 

RedTrk(

\bass2,

Pbind(

\instrument, \bass_towtones,

\midinote, Pseq([Pn(51,5), Pn(53,5), ], inf   ) – 24,

\amp,Pseq([1],inf) * Pfunc({~bassapm}),

\releaseTime, 1,

\legato, Pseq([0.1, 0.2, 0.07, 0.2, 0.1],inf) ,

\dur, Pseq([

Pseq([1, 0.75,0.5, 0.75,1],1),

Pseq([1, 0.75,0.5, 0.75,1], 1)

],inf),

\basstone, 1,

\filtfreq1, 2000,

\filtfreq2, 1000,

\filtertime, 0.1

 

), [2]

);

 

RedTrk(

\kick,

Pbind(

\instrument, \SOSkick,

\freq, 50,

\amp,Pseq([1],inf) * Pfunc({~kickamp}),

\beater_noise_level, 0.01,

\decay, 0.2,

\dur, Pseq([0.5, 0.5, 0.5, 1, 0.5, 1,   0.5, 0.5, 0.5, 1, 0.5, 0.48, 0.52],inf)

), [0,1,2]

);

 

RedTrk(

\snare,

Pbind(

\instrument, \SOSsnare,

\amp,Pseq([0,1],inf) * Pfunc({~snareamp}),

\dur, Pseq ([1,1],inf)

), [0,1,2]

 

);

 

RedTrk(

\hat,

Pbind(

\instrument, \SOShats,

\dur, Pseq([0.5],inf),

\reltime, Pseq([Pn(0.2,6), 0.7,0.1],inf),

\amp, Pseq([1],inf) * Pfunc({~hatsamp})

),[0,1,2]

);

)

 

 

///

 

SynthDef(\bass_towtones,

 

 {

 

 arg amp=0.8, sustain=0.12, freq=400, filtfreq1 = 12000, filtfreq2=10000, filtertime=0.15, releaseTime = 0.3,reverb=0.2, pan=0, curve=1, basstone=1, legato=1;

var env1, sound1, env2, sound2;

 

~basstone = 0;

 

env1=EnvGen.ar(Env.perc(0.001, 0.3,1,curve * -1),doneAction:2);

 

sound1=FreeVerb.ar(RLPF.ar(MoogFF.ar(Pulse.ar(freq, 0.45, 1) + SinOsc.ar(freq/2, pi, 0.01),  XLine.kr(10000,1000,0.15),  Line.kr(3.0, 2, 0.2)  ),Line.kr(filtfreq1, filtfreq2, filtertime)) ,reverb,0.5,0.5 ) * amp * 5.0

+  MoogFF.ar(Pulse.ar(freq*0.5, 0.45, 0.1), XLine.kr(5000,1000,0.17),  Line.kr(3.0, 2, 0.22)  ) + SinOsc.ar(freq/2,pi,0.1) *env1;

 

 

env2=EnvGen.ar(Env([0,1,1,0],[0.01,releaseTime * legato,0.03]),doneAction:2);

 

sound2=FreeVerb.ar(LPF.ar(Pulse.ar(freq,0.5,amp) + SinOsc.ar(freq,0.5,0.05),Line.kr(filtfreq1, filtfreq2, 0.3)) ,reverb,0.5,0.5 ) * env2;

 

 

Out.ar([0,1], XFade2.ar(sound1, sound2, basstone))

 

 }

 

).store;

Get Adobe Flash playerPlugin by wpburn.com wordpress themes