Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// # Part I. BASICS 基礎
- /// ## 1. Hello World
- /// 下の行にカーソルをおき, [ctrl+Enter] すると右下のPost windowに出力
- "Hello World".postln;
- /// ## 2. サーバと言語
- /// SuperColliderは二つのアプリケーション「サーバ」と「言語」からなる .サーバ(scsynth)は音の生成を担っている.言語(sclangまたはクライエント,インタープリタ)はサーバの制御に使う.「ステータスバー」はこの2つのステータスを表示している.
- /// ## 2.1 サーバの起動
- /// [ctrl+B] で起動.ステータスバーをクリックして"Boot Server"を選んでも起動する.
- /// ## 3. 最初のサイン波
- /// サイン波を鳴らすというのが,コンピュータ音楽言語のHello Worldだ.下の行にカーソルを起き [ctrl+Enter] を押す.ボリュームに気をつけましょう.
- {SinOsc.ar}.play;
- /// 音を止めるには [ctrl+.]
- /// TIP: 全体ボリュームの調節
- s.volume.gui;
- /// 面白いサイン波.
- ({SinOsc.ar(
- // サンプリング周波数で正規化された乱数列
- freq: LFNoise0.kr(freq: 500).range(500, 1500),
- // サイン波の大きさ
- mul: 0.1
- )}.play;)
- /// TIP: サイン波の周期(周波数)が動いているのがわかる
- s.scope;
- s.freqscope;
- /// ## 4. エラーメッセージ
- /// 音が出ないときなどPost windowを確認するとスペルミスなどのエラーが表示されている
- /// TIP: SuperColliderの学習方法は,外国語の学習と同じで,ただ喋ろうと試みて,語彙を増やし,文法に注意して,ミスから学ぶことである.最悪の場合でも,SuperColliderがクラッシュするだけだ.サンパウロで発音を間違えて変なバスに乗るよりはマシである.
- /// ## 5. パラメータの変更
- /// SuperCollider Book の例.数字を変更して遊ぼう.
- // Resonant Low Pass Filterの略
- ({RLPF.ar(
- // [0, 1] のランダムなインパルス
- // densityを大きくすると間隔が狭まる
- in: Dust.ar(density: [1, 5]),
- // サンプリング周波数で正規化,線形補間された乱数列
- // freqの値を大きくすると高くなる
- freq: LFNoise1.ar(freq: [0.3, 0.2]).range(100, 3000),
- // レゾナントが大きくなる.
- rq: 0.2)}.play;)
- /// TIP: plotメソッドで表示してみよう
- ({LFNoise1.ar(freq: [30, 2])}.plot(duration: 0.1);)
- /// ## 6. コメント
- // C言語と同じで一行コメントや
- /*
- 複数行のコメントが
- できる
- */
- /// ## 7. 優先順序
- /// 常に左から右へ評価される.掛け算も足し算も優先順序はない.
- 5 + 2 * 2; // (5 + 2) * 2 = 14
- 5 + (2 * 2); // 9
- /// ## 8. 最後の値が返り値
- /// ## 9. コードブロック
- (
- /// () で囲むと複数行を [ctrl+Enter] で評価できる.コードブロックと呼ぶ
- "First Line"; // こっちはでてこない
- "Second Line"; // Post windowに出力される
- )
- /// ## 10. Post windowのクリーンアップ方法
- /// [ctrl+shift+P] でまっさらになる
- /// ## 11. SuperColliderの出力を録音
- /// クイックレコード.変数sはサーバが割り当てられている
- s.record;
- {Saw.ar(LFNoise0.kr([2, 3]).range(100, 2000), LFPulse.kr([4, 5]) * 0.1)}.play;
- s.stopRecording; // post windowにファイル名がでてくる
- /// GUIからも操作できる (record) ボタンを押す.
- s.makeWindow;
- /// ## 12. 変数
- /// a-zの一文字小文字変数はグローバルな定義
- /// ただしsはもともとサーバに割り当てられている
- /// グローバル変数を定義
- a = "Hello, World"; // string
- b = [0, 1, 2, 3, 5]; // list
- /// こいつは次の章で説明します
- c = Pbind(\note, Pwhite(0, 10), \dur, 0.1);
- /// グローバル変数を使ってみる
- a.postln;
- b + 100; // [100, 101, 102, 103, 105]
- c.play;
- d = b * 5; // 新しい変数に代入
- /// ちゃんとした名前のグローバル変数は ~ をつける
- // これはエラー: myFreqs = [415, 220, 440, 880, 220, 990];
- ~myFreqs = [415, 220, 440, 880, 220, 990];
- ~myDurs = [0.1, 0.2, 0.2, 0.5, 0.2, 0.1];
- Pbind(\freq, Pseq(~myFreqs), \dur, Pseq(~myDurs)).play;
- /// ### 12.1 "グローバル" vs. ローカル
- /// グローバル変数はSuperCollider全体で読み書きできるので嫌なときがある.たとえば他のよく知らないファイルからもアクセスできる.
- /// ローカル変数はスコープ内だけで使える変数なのでそういう問題がない.
- ( // コードブロックはスコープになる
- var apples = 4;
- ~apples = 3;
- )
- ~apples.postln;
- // エラー,ローカルなので見つからない: apples.postln;
- /// ### 12.2 再代入
- x = 10;
- x = x + 1; // 11に書き換わる
- x.postln;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement