SuperCollider サンプルを再生してみる

// modulate a sine frequency and a noise amplitude with another sine
// whose frequency depends on the horizontal mouse pointer position
{
        var x = SinOsc.ar(MouseX.kr(1, 100));
        SinOsc.ar(300 * x + 800, 0, 0.1)
        +
        PinkNoise.ar(0.1 * x + 0.1)
}.play;
をとりあえず貼って見る。何も起こらない。
メニューを見ると、Server-BootServerがあるから、これかな?

booting server 'localhost' on address: 127.0.0.1:57110
Number of Devices: 3
   0 : "Built-in Microph"
   1 : "Built-in Output"
   2 : "Pro Tools Aggregate I/O"
"Built-in Microph" Input Device
   Streams: 1
      0  channels 4
"Built-in Output" Output Device
   Streams: 1
      0  channels 2
SC_AudioDriver: sample rate = 48000.000000, driver's block size = 512
SuperCollider 3 server ready.
Requested notification messages from server 'localhost'
localhost: server process's maxLogins (1) matches with my options.
localhost: keeping clientID (0) as confirmed by server process.
Shared memory server interface initialized
 サーバーが起きたようだ。
音どうやって鳴らすのか...
Language-Evaluate Section, Line, or Region
とあるので、選択して、コマンド-Return
エラーがあるみたい。セミコロンが怪しいので、
PinkNoise.ar(0.1 * x + 0.1);
と追加してみる。で、選択してコマンド-Return! 音が出た!
Language-Stopはコマンド+.(ピリオド)

ここまでのまとめ
音を鳴らすには:選択してコマンド-Return
音を止めるには:コマンド+.(ピリオド)

メニューをみると、
File:これはファイルだよね
Session:これなんだろう?Fileの中で複数のプログラムを管理できるのか???
Edit:普通の編集系
View:見た目系
Language:きっと、sclang関係
Server:きっと、scsynth関係

Sessionだけよくわからないな。

ついでに、もう一つのサンプルを試して見る。

// 60Hz Gabber Rave 1995
Server.default.boot;
(
SynthDef(\gabberkick, {
    var snd, freq, high, lfo;
    freq = \freq.kr(440) * (Env.perc(0.001, 0.08, curve: -1).ar * 48 * \bend.kr(1)).midiratio;
    snd = Saw.ar(freq);
    snd = (snd * 100).tanh + ((snd.sign - snd) * -8.dbamp);
    high = HPF.ar(snd, 300);
    lfo = SinOsc.ar(8, [0, 0.5pi]).range(0, 0.01);
    high = high.dup(2) + (DelayC.ar(high, 0.01, lfo) * -2.dbamp);
    snd = LPF.ar(snd, 100).dup(2) + high;
    snd = RLPF.ar(snd, 7000, 2);
    snd = BPeakEQ.ar(snd, \ffreq.kr(3000) * XLine.kr(1, 0.8, 0.3), 0.5, 15);
    snd = snd * Env.asr(0.001, 1, 0.05).ar(2, \gate.kr(1));
    Out.ar(\out.kr(0), snd * \amp.kr(0.1));
}).add;
SynthDef(\hoover, {
    var snd, freq, bw, delay, decay;
    freq = \freq.kr(440);
    freq = freq * Env([-5, 6, 0], [0.1, 1.7], [\lin, -4]).kr.midiratio;
    bw = 1.035;
    snd = { DelayN.ar(Saw.ar(freq * ExpRand(bw, 1 / bw)) + Saw.ar(freq * 0.5 * ExpRand(bw, 1 / bw)), 0.01, Rand(0, 0.01)) }.dup(20);
    snd = (Splay.ar(snd) * 3).atan;
    snd = snd * Env.asr(0.01, 1.0, 1.0).kr(0, \gate.kr(1));
    snd = FreeVerb2.ar(snd[0], snd[1], 0.3, 0.9);
    snd = snd * Env.asr(0, 1.0, 4, 6).kr(2, \gate.kr(1));
    Out.ar(\out.kr(0), snd * \amp.kr(0.1));
}).add;
)
(
var durations;
durations = [1, 1, 1, 1, 3/4, 1/4, 1/2, 3/4, 1/4, 1/2];
Ppar([
    Pbind(*[
        instrument: \gabberkick,
        amp: -23.dbamp,
        freq: 60,
        legato: 0.8,
        ffreq: Pseq((0..(durations.size * 4 - 1)).normalize, inf).linexp(0, 1, 100, 4000),
        dur: Pseq(durations, inf),
        bend: Pfuncn({ |x| if(x < (1/2), 0.4, 1) }, inf) <> Pkey(\dur),
    ]),
    Pbind(*[
        instrument: \hoover,
        amp: -20.dbamp,
        midinote: 74,
        dur: durations.sum * 2,
        sustain: 7,
    ])
]).play(TempoClock(210 / 60));
)
全部セレクトしてもダメ。もしやと思って、なんとなく、

4-32行を選択してコマンド-Return
シンセが定義できたっぽい。
で、34-55行を選択してコマンド-Return
おーーーーー!すげーーーーー!これだけで、こんな?

調子にのって、34-55行のdurationの1を1/2,1/2にしてみる。で、コマンド-Return
あれ?なんか、思ったようにならない。

一度、コマンド-.(ピリオド)
で、コマンド-Return

成功!

ってことは、プログラムを2回コマンド-Returnやると、二つ起動してしまう、ということになりそう。

とりま、ここまで

コメント

人気の投稿