Archive for 3月, 2009

Pbindをダイナミックに扱う

SuperCollidererのみなさん、こんにちは。tn8です。

SCMLで素敵な投稿を発見しました。

Pbindなどで再生しているパターンをリアルタイムに変更するベストな方法が解らず、いろいろと模索してきました。Pdef、Pfuncなどを使うといった方法がありますが、very bestな解決法、それはリストを使う事!!!この方法で、ダイナミックにPbind Environmentのパラメータを、しかも簡単に操作できるようになりました。SCのヘビーユーザーの方々も驚きのご様子。tn8も大興奮です、ブラボー!

~notes = List[0, -3, 2, 0]; // リストを作る

Pbind(

\instrument, \simpleSaw,

\degree, Pseq(~notes,inf), // リストを使う

\root,7,
\dur, Pseq([0.45, 0.55],inf)

).play

~notes.array = [1, -3, 1, 0] // パラメータ全体を書き換える

~notes[3] = 2; // indexが3の要素(0から数えるので4つめの値)を2に書き換える

SynthDef(”simpleSaw”,
{arg freq=400, out=0, releaseT=0.3, amp=0.8;
var source;
source = Saw.ar(freq) * EnvGen.ar(Env.perc(0.0001, releaseT, 1, -6), doneAction:2) * amp;
Out.ar(out, source);
}).store;

Make : マガジン vol.6に居ります

make週末は京都のお友達のセッション・パーティへおでかけ。生楽器の演奏は、私にとって別世界。やはり電子音が好きなtn8。中でもドイツが誇るアナログモジュラーシンセ、Doepferを操る白衣の方の演奏にはメロメロです… ずっきゅん。そして、枝垂桜の美しかったこと。

さてさて、Makeマガジン Vol.6が発売になりました。SuperColliderがステキと語るCraftwifeの記事が掲載されています、ご一読いただければ幸いです。(他の記事も面白いよ)あぁ、こんなことされたら、ArduinoやLilypadをSuperColliderでやりたくなってしまいますね。

jeten Tag, ein klein Code006 (日々のちいさなコーディング)

SynthDef(”simpleSaw”, {arg freq=400, out=0, releaseT=0.3, amp=0.8;

var source;

source = Saw.ar(freq) * EnvGen.ar(Env.perc(0.0001, releaseT, 1, -6), doneAction:2) * amp;

Out.ar(out, source);

}).store;

(
s.waitForBoot{

RedMst.clear;
RedMst.clock = TempoClock(120/60);
RedMst.quant = 4;
RedMst.skipEmpty = true;

RedMst.action = { };

RedTrk(
\simple,
Pbind(
\instrument, \simpleSaw,
\degree, Pseq([0, -3, 2, 0],inf),
\root,7,
\dur, Pseq([0.5, 0.5],inf)
), [0] );

RedTrk(
\simple1,
Pbind(
\instrument, \simpleSaw,
\degree, Pseq([0, -3, 2, 0],inf),
\root,7,
\dur, Pseq([0.45, 0.55],inf)
), [1] );

RedTrk(
\simple2,
Pbind(
\instrument, \simpleSaw,
\degree, Pseq([0, -3, 2, 0],inf),
\root,7,
\dur, Pseq([0.35, 0.65],inf)
), [2] );

RedTrk(
\simple3,
Pbind(
\instrument, \simpleSaw,
\degree, Pseq([0, -3, 2, 0],inf),
\root,7,
\dur, Pseq([0.25, 0.75],inf)
), [3] );

};
)

RedMst.play(0);
RedMst.next;
RedMst.prev;

jeten Tag, ein klein Code005 (日々のちいさなコーディング)

先日紹介したiOSC用のSCプログラム。

// iOSCのhostタブのIP Adressに、使っているマシンのIPアドレスを設定する。
// Port番号は、SCのデフォルトである57120を設定する。

// 口口口 一番シンプルな例 for 3ボタン + 横1スライダーの場合
// ——

// ボタンの名前を変えず、Onの時に1,Offの時に0を出力するように設定している場合(おそらくこれがiOSCの初期状態)。

OSCresponder(nil, ‘/osc/button1′, { |t,r,msg|

case
{msg[1] == 1} {”button01_on”.postln}
{msg[1] == 0} {”button01_on”.postln}

}).add;

OSCresponder(nil, ‘/osc/button2′, { |t,r,msg|

case
{msg[1] == 1} {”button02_on”.postln}
{msg[1] == 0} {”button02_off”.postln}

}).add;

OSCresponder(nil, ‘/osc/button3′, { |t,r,msg|

case
{msg[1] == 1} {”button03_on”.postln}
{msg[1] == 0} {”button03_on”.postln}

}).add;

OSCresponder(nil, ‘/osc/slider1′, { |t,r,msg| msg[1].postln}).add;

SuperColliderで使えそうなOSCアプリ for iPhoneを探す。

- mrmr
ツールというより、彼らの作品をコントロールするためのソフトウェアとして開発されてきたのかな。マシン上で動作するGUIをビルドするためのアプリがついていたり、かなり拡張性が高そう。Craftwifeでよく使うトルグはまだビルダーに実装されていなかった&wiki形式のウェブが見づらく、まだちゃんと試しておらず。

iOSC
こちらは日本製。試しているのですが、portのことがよく解らなくてトライ中。1つのViewがシンプルで大きめなので、ライブには使い安そう。デモビデオでコントロールされているのが、ナイトライダーのラジコンだというところが素晴らしいと思います。

- touchOSC
3つの中で一番GUIが複雑にできている感じ。SC用のクラスをかいてくれちゃった素敵な人がいるので、SCとの連携はすぐにできた。iPhoneをぐるぐる振って、ビヨビヨ音をだしたり(つまり傾きセンサーね)、そんなことはお茶の子さいさいでございます。らくちん!

そんなんで疲れてしまったので、今日のコーディングはおやすみ。

jeten Tag, ein klein Code004 (日々のちいさなコーディング)

SynthDef(”test”, {arg freq, out, releaseT=0.3, amp;

var source;

source = Saw.ar(freq) * EnvGen.ar(Env.perc(0.001,releaseT, 1, -06), doneAction:2);

Out.ar(out, source * amp)

}).store;

Pbind(
\tempo,0.9,
\instrument, \test,
\degree, Pseq([0,-3,2,0],inf),
\root,7,
\relaseT, 0.3,
\mtranspose, Pseq( [0,7].stutter(4),inf),
\dur, Pseq([0.25],inf)
).play;

SynthDef(”aDelay”, { arg delay = 0.25;

Out.ar( 1, DelayN.ar( In.ar(0, 1), delay, delay ) )

}).load(s);

~effect = Group.tail(s);

Synth.head(~effects, “aDelay”)

jeden Tag, ein klein Code 003 (日々のちいさなコーディング)

Pbind(
\instrument, \test,
\degree, Pseq([0,-3,2,0],inf),
\root,7,
\harmonic, [0.75,1,2], // 比率で平行移動
\dur, Pseq([0.5],inf)
).play;

Pbind(
\instrument, \test,
\degree, Pseq([0,-3,2,0],inf),
\root,7,
\mtranspose, Pseq( [0,7].stutter(4),inf), // [0,0,0,0, 7,7,7,7] 要素をn回づつ繰り返す
\dur, Pseq([0.5],inf)
).play

jeden Tag, ein klein Code 002 (日々のちいさなコーディング)

Eventクラスを使いこなしなさい。

Pbind(
\instrument, \test,
\degree, Pseq([0,-3,2,0],inf),
\root,7,
\dur, Pseq([0.5],inf)
).play

jeden Tag, ein klein Code 001 (日々のちいさなコーディング)

SynthDef(”test”, {arg freq, out;
var source;
source = Saw.ar(freq) * EnvGen.ar(Env.perc(0.00001, 0.4, 1, -6), doneAction:2);
Out.ar(out, source)
}).store;

Pbind(
\instrument, “test”,
\midinote, Pseq([67,62,71,67],inf),
\dur, Pseq([0.5],inf)
).play

今コンピュータで演奏すると言う事1

3/1の今期初のCraftwifeライブへご来場いただいたみなさま、ありがとうございました。

会場に足を運んでいただいた上に「良かったよ」という以上の、厳しく暖かい建設的なご感想をくださった皆様にも、深く御礼申し上げたいと思います。

ライブ終了直後はいつも、理由の無い落胆に包まれます。ライブ中は、ステージの上からはお客さんの表情/リアクションががまったく解らないようになっています。これはCraftwifeのアクトが観客の空気に流されないようにする為ですが、それ故に、ライブではいつも必要以上に緊張せざるを得ず、あぁすればよかった、といった後悔を常々感じています。

次回への改善点の一つとして「Craftwife以外の他のすべての出演者が生楽器バンドの場合は、オファーを引き受けるべきではない」というのを上げていました。何年間も同じ筋肉を鍛え、生々しく汗臭い演奏をする人々(これは決して皮肉ではなく、Craftwifeには無い肉体感と表現技術に敬意を払った表現です)と、Craftwifeでは見ている方向が違いすぎるのではないか、と考えたのです。今回の外の出演者は、バンド形式の2グループで、それと一緒にCraftwifeを観るというのは、観客にとってはケーキと鮨を同時にだされるようなものでしょう。どちらも美味しいけれど、同時に出されたら食欲が減退し、消化不良を引き起こす… 。しかしちょっとした手違いから、凄く良い音響を提供してくれた会場のPAスタッフ・U氏と話す機会を得て、その考えが一転しました。彼はこう言ってくださったのです「(Craftwifeのようなパフォーマンスは)日本においてまだ目に触れる機会が少なく思います。ライブハウスなどでも気軽にやる方が増えて、もっと身近なものとして浸透すれば面白いと思っています。」

それを聞いて、曇っていた視界に急に陽が差し、ぱぁぁっと急に開けてきた気がしました。彼の様な、いい音響をほぼ毎日のように作り続け、数々のライブイベントを観てきている方にこう言って戴いたこと自体が嬉しいし、このライブでは、普段メディア・アート・パフォーマンスを全く持って観る機会のない人々にCraftwifeの世界を紹介することができたのです。そういった見方をできなかった自分に呆れもしましたが、それに気づかせてくださったU氏には本当に頭が下がります。名古屋に来る大友良英さんが、なぜこのあまり大きくないハコを選ぶのかもよく解りました。本当に音が良いし、気持ちのいいライブハウスです。

そして、この事をきっかけに、更に強く思った事があります。それは、今、Craftiwfeがコンピュータで演奏すると言う事は、ギターやドラムを弾くのとは、まったく違うということなのです。Craftiwfeは、iPhoneのプッシュボタンから音を出してはいけないということです。Craftwifeは音をトリガーしているのではありません、音楽の構造、いや「ライブの構造をコントロールしている」のです。いや、まだそれは完全にできていないね、コントロールすべきなのです!またシステムを改善しなければ… 大幅に。そして、それを実現してくれるのは、プログラミング言語、SuperColliderだけなのです。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes