Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  1. /// # Part I. BASICS 基礎
  2.  
  3.  
  4. /// ## 1. Hello World
  5. /// 下の行にカーソルをおき, [ctrl+Enter] すると右下のPost windowに出力
  6. "Hello World".postln;
  7.  
  8.  
  9. /// ## 2. サーバと言語
  10.  
  11. /// SuperColliderは二つのアプリケーション「サーバ」と「言語」からなる .サーバ(scsynth)は音の生成を担っている.言語(sclangまたはクライエント,インタープリタ)はサーバの制御に使う.「ステータスバー」はこの2つのステータスを表示している.
  12.  
  13. /// ## 2.1 サーバの起動
  14.  
  15. /// [ctrl+B] で起動.ステータスバーをクリックして"Boot Server"を選んでも起動する.
  16.  
  17.  
  18. /// ## 3. 最初のサイン波
  19.  
  20. /// サイン波を鳴らすというのが,コンピュータ音楽言語のHello Worldだ.下の行にカーソルを起き [ctrl+Enter] を押す.ボリュームに気をつけましょう.
  21. {SinOsc.ar}.play;
  22.  
  23. /// 音を止めるには [ctrl+.]
  24.  
  25. /// TIP: 全体ボリュームの調節
  26. s.volume.gui;
  27.  
  28. /// 面白いサイン波.
  29. ({SinOsc.ar(
  30. // サンプリング周波数で正規化された乱数列
  31. freq: LFNoise0.kr(freq: 500).range(500, 1500),
  32. // サイン波の大きさ
  33. mul: 0.1
  34. )}.play;)
  35.  
  36. /// TIP: サイン波の周期(周波数)が動いているのがわかる
  37. s.scope;
  38. s.freqscope;
  39.  
  40.  
  41. /// ## 4. エラーメッセージ
  42.  
  43. /// 音が出ないときなどPost windowを確認するとスペルミスなどのエラーが表示されている
  44.  
  45. /// TIP: SuperColliderの学習方法は,外国語の学習と同じで,ただ喋ろうと試みて,語彙を増やし,文法に注意して,ミスから学ぶことである.最悪の場合でも,SuperColliderがクラッシュするだけだ.サンパウロで発音を間違えて変なバスに乗るよりはマシである.
  46.  
  47.  
  48. /// ## 5. パラメータの変更
  49.  
  50. /// SuperCollider Book の例.数字を変更して遊ぼう.
  51. // Resonant Low Pass Filterの略
  52. ({RLPF.ar(
  53. // [0, 1] のランダムなインパルス
  54. // densityを大きくすると間隔が狭まる
  55. in: Dust.ar(density: [1, 5]),
  56. // サンプリング周波数で正規化,線形補間された乱数列
  57. // freqの値を大きくすると高くなる
  58. freq: LFNoise1.ar(freq: [0.3, 0.2]).range(100, 3000),
  59. // レゾナントが大きくなる.
  60. rq: 0.2)}.play;)
  61.  
  62.  
  63. /// TIP: plotメソッドで表示してみよう
  64. ({LFNoise1.ar(freq: [30, 2])}.plot(duration: 0.1);)
  65.  
  66.  
  67. /// ## 6. コメント
  68.  
  69. // C言語と同じで一行コメントや
  70.  
  71. /*
  72. 複数行のコメントが
  73. できる
  74. */
  75.  
  76. /// ## 7. 優先順序
  77.  
  78. /// 常に左から右へ評価される.掛け算も足し算も優先順序はない.
  79.  
  80. 5 + 2 * 2; // (5 + 2) * 2 = 14
  81. 5 + (2 * 2); // 9
  82.  
  83.  
  84. /// ## 8. 最後の値が返り値
  85. /// ## 9. コードブロック
  86.  
  87. (
  88. /// () で囲むと複数行を [ctrl+Enter] で評価できる.コードブロックと呼ぶ
  89. "First Line"; // こっちはでてこない
  90. "Second Line"; // Post windowに出力される
  91. )
  92.  
  93.  
  94. /// ## 10. Post windowのクリーンアップ方法
  95.  
  96. /// [ctrl+shift+P] でまっさらになる
  97.  
  98.  
  99. /// ## 11. SuperColliderの出力を録音
  100.  
  101. /// クイックレコード.変数sはサーバが割り当てられている
  102. s.record;
  103. {Saw.ar(LFNoise0.kr([2, 3]).range(100, 2000), LFPulse.kr([4, 5]) * 0.1)}.play;
  104. s.stopRecording; // post windowにファイル名がでてくる
  105.  
  106. /// GUIからも操作できる (record) ボタンを押す.
  107. s.makeWindow;
  108.  
  109. /// ## 12. 変数
  110.  
  111. /// a-zの一文字小文字変数はグローバルな定義
  112. /// ただしsはもともとサーバに割り当てられている
  113.  
  114. /// グローバル変数を定義
  115. a = "Hello, World"; // string
  116. b = [0, 1, 2, 3, 5]; // list
  117. /// こいつは次の章で説明します
  118. c = Pbind(\note, Pwhite(0, 10), \dur, 0.1);
  119.  
  120. /// グローバル変数を使ってみる
  121. a.postln;
  122. b + 100; // [100, 101, 102, 103, 105]
  123. c.play;
  124. d = b * 5; // 新しい変数に代入
  125.  
  126. /// ちゃんとした名前のグローバル変数は ~ をつける
  127. // これはエラー: myFreqs = [415, 220, 440, 880, 220, 990];
  128. ~myFreqs = [415, 220, 440, 880, 220, 990];
  129. ~myDurs = [0.1, 0.2, 0.2, 0.5, 0.2, 0.1];
  130. Pbind(\freq, Pseq(~myFreqs), \dur, Pseq(~myDurs)).play;
  131.  
  132. /// ### 12.1 "グローバル" vs. ローカル
  133.  
  134. /// グローバル変数はSuperCollider全体で読み書きできるので嫌なときがある.たとえば他のよく知らないファイルからもアクセスできる.
  135. /// ローカル変数はスコープ内だけで使える変数なのでそういう問題がない.
  136. ( // コードブロックはスコープになる
  137. var apples = 4;
  138. ~apples = 3;
  139. )
  140. ~apples.postln;
  141. // エラー,ローカルなので見つからない: apples.postln;
  142.  
  143.  
  144. /// ### 12.2 再代入
  145. x = 10;
  146. x = x + 1; // 11に書き換わる
  147. x.postln;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement