最初にSCを起動したら、起動したことについての情報がウィンドウに現れる。最初の訳わかんない文字列は無視しちゃっていいけど、見えるところに動かしておくこと。というのも、君のコードのエラーや実行結果など役立つ情報を出力してくれるからだ。これからこれをポストウィンドウと呼ぶよ。そのままこのウィンドウを使ってコードを編集したり入力したりもできるんだけど、僕は新しいウィンドウを開く方が好きだな。
SuperColliderはテキストエディタ、プログラミング言語、コンパイラ、デジタルシンセサイザーが一体となってる。これは君がSCを使ってコードを書いたり編集したりすることが、音楽を演奏することを含んでるってことを意味する。それから君はSCを使ってコードを評価したり、デバッグしたり、コンパイルしたり実行したりできて、その結果はリアルタイムに音になる。テキストを編集する機能(選択、コピー、置き換え、など)は他の基本的なエディタと一緒。でもいくつかコードを編集するのに手軽で役立つユニークな特徴がある。もし君が今まで一度もコードを書いたことがないなら、その価値はすぐには理解できないだろう。何度もここに戻って、見直すことをおすすめする。
Com-, 指定行に移動
Com-/ 選択された行をコメントアウト
Opt-Com-/ 選択された行のコメントを外す
Shift-Com-B 括弧を対照する
Com-] コードを右にシフト
Com-[ コードを左にシフト
Com-. 全ての録音再生を止める
Shift-Com-/ (Com-?) 選択されたアイテムからヘルプを開く
Com-' シンタックスを色付けする
括弧をダブルクリック 括弧を対照する
Com-\ ポストウィンドウを前面にする
Shift-Com-K ポストウィンドウをクリアする
Shift-Com-\ 全てを前面にする
評価はコードについてのシステムのメッセージ、数値(データ)、式や関数(計算機みたいな)、またはシンセサイザーパッチの音などになる。SCパッチからのデータは録音のためのピッチや、演奏者への命令、解析の結果になり得る。けど次のチャプターでの僕らの目的は、音だ。
選択されたコードを評価するには、エンターキーを押す(リターンじゃない、エンターだよ)。もし一行だけ評価したい場合は、選択する必要はない。その行にカーソルを置いておくだけ。このテキストの実例を実行するには、SCに(数)行を打ち込んで、そこにカーソルを置くか、全部の行を選択してエンターを押す。
全てのプログラミング文書は、ギークによって最初の実例で"hello world"を実行するように決められている。正確にこれらの行を打ち込んで、その行にカーソルを合わせ(もしくは選択して)、エンターキーを押し、それから次に移ってエンターキーを押す。3つめの実例では、両方の行を選択する。
8.1 Hello World
"Hello World";
"Hello World".speak;
"I've just picked up a fault in the AE35 unit. It's going to go a hundred percent
failure within seventy-two hours.".speak;
各行がセミコロンで終わっているところに注意して欲しい。これは行の終わり、またはコンピュータ言語を意味している。実例8.2はもっと意味がある実例。
8.2 音楽的な数学
5 + 4;
(5 + 4).asString.speak;
(440 * 3/2).asString.speak;
("The frequency for E5 is" ++ (440 * 3/2).asString).speak;
("The frequency for middle C is " ++ (60.midicps.round(0.1).asString)).speak;
これを"コード"と呼ぶのには理由がある。初心者はそれを神秘的なものだと思うから。実際新しい言語なんだ。フランス語とか、もっと言うと、中国語とか。でも言語の理解が進むと、smalltalkは簡単で、英語みたいに読めたりする。括弧は"これが使用する値のリストです"と"これをまず最初に実行する"の両方、引用は"これは文字列、または文章"を意味する。"dots"は"この情報をあのオブジェクトに送る"という意味。そして++は"この文章を次のに連結する"という意味。上記の実例の最後のやつを翻訳すると:MIDIナンバー60を1秒当たりの周期に変換(midicps)し、0.1に値を丸めたあと、文字列に変換する。"The frequency..."と連結し、結果を喋る。
上記の実例はSCが最も得意としている合成音を全く生成していない。これからどうやるかを説明しよう:まずシンセサーバを起動する必要がある。こいつが実際に書かれたコードを元に音を作るんだ。2つのサーバがあって(下の左に2つの小さいウィンドウがある)、インターナルとローカルだ。今はこの違いを気にしなくていい。2つのシンセサイザーが積み重ねられてて、そこに楽器の定義と録音再生の命令を送るんだって思っておいて。このテキストではインターナルサーバが最も機能する。
各セッションにおいて君はサーバを1回起動(例:電源入)して、動かしっぱなしにしておくだけでいい。ユーザーインターフェース上のbootボタンをクリックするか、下記のコードを実行すればできる。僕はコードを実行するのが好きだな。サーバを"s"って名付けられるから。特に示さない限り、この本の実例は全部サーバが動いているものとして、それがデフォルトのサーバで"s"と呼ばれる。8.3の行を実行もしくは"評価"して欲しい。
8.3 サーバの起動
Server.default = s = Server.internal.boot;
これで最初のパッチが動かせる。コマンドキーとピリオドキーで全部の録音再生が止まる(けどサーバは動いている)ことを思い出して欲しい。このテキストはそれぞれ実例が終われば君が録音再生を止めてるものとする。
8.4 最初のパッチ
{SinOsc.ar(LFNoise0.ar([10, 15], 400, 800), 0, 0.3)}.play;
この実例は複数行に渡り、もっと複雑。{からplayまで全部を選択して、エンターキーを押す。
8.5 2番目のパッチ
{
RLPF.ar(
LFSaw.ar([8, 12], 0, 0.2),
LFNoise1.ar([2, 3].choose, 1500, 1600),
0.05,
mul: 0.4
)
}.play
[訳者補足]
この文書はDavid Michael Cottleという方のComputer Music with examples in SuperCollider 3という文書の一部で、セクション2から翻訳をしています。セクション1はMac OSXの使い方からデジタルオーディオの基礎、マイクやケーブルの種類なども説明されているので、これから勉強を始める方は読むといいと思います。元の文書が読みたい場合は彼に直接連絡を取って下さい。その際に、自分が何を勉強してるかとかを書くといいです。僕もそうしました。その時に翻訳に関しても承諾を得ています(覚えているかどうかは分かりませんが...terms of useにも同僚や生徒に配るのはいいよーと書いてあるので問題はないでしょう)。SuperCollider 3はフリーでオープンソースな音響合成言語で、テキストによってプログラミングを行います。リアルタイムにコードを書きながら演奏するためのライブラリであるJITLibなどもありますし、コンピュータを使って音を扱う上で興味深い環境だと思います。
ダウンロードはここから。ヘルプやチュートリアルが充実している(Pure Dataなどもそうですが、そのまま実行できる)ので色々調べて試してみるといいと思います。
The SuperCollider Home Page
日本語で情報を得るならここ。コードリミックスコンテストなども面白いです。
SuperCollider Japan - SuperCollider コミュニティ
Jason Dixon氏のサイトも勉強になりますね。
MutantSounds - music, code and musings by Jason Dixon