趣味コンピュータ音楽家。本業はWebエンジニア。blog趣味コンピュータ音楽家。本業はWebエンジニア。SuperColliderScaleumbrella_process現代の音楽文化においてはすっかり十二平均率が普及しているため、MIDIキーボードにせよ音楽作成ソフトにせよ、音律を変更すると言うことはほぼできませんが、SuperColliderならかんたんに平均率以外の音律を使うことができます。平均率以外の音律を使うには、Scaleクラスを使うのが便利です。Scaleクラスを使うと長調、短調、またホールトーンや日本の律旋法など、様々な音階を取得することができます。指定しオクターブ内の12音全てを取得しています。メッセージを送り、チューニングを変更しています。\justの場合は純正律、\et12だと12平均率、\mean4だと1/4コンマ中全音律、\pythagoreanだとピタゴラス音律になります。メッセージを使っています。メッセージを使っています。結局MIDIナンバーに戻しているのが不思議に感じるかもしれませんが、この時点で平均率以外を選択していれば小数点になるはずです(平均率からはずれる)。メッセージで周波数に変換しています。処理が冗長なので、もっといい方法があれば教えてください。Scaleクラスが対応している音階や音律を知るには、Scale.scファイルを見てソースコードを見るのが良さそうです(一覧が見つけられなかった)。クラスで定義しています。バルトーク音階など音楽史上に現れた様々な音階、雅楽やラーガなど民族音楽の音階、さらに1オクターブに12音以上存在する特殊な音階も対応しています。ミーントーンも1/4、1/5、1/6に対応、キルンベルガー第3法、ウェンディ・カルロスの超純正律などマニアックなものも入ってます。実用性のほどは分かりませんが、この懐の深さがオープンソースのSuperColliderならではの魅力かもしれません。SynthDefumbrella_processMIDIInクラスのヘルプにMIDIキーボードのサンプルが載っていますが、ひとつのSynthオブジェクトに対して周波数や音量の変更のメッセージを送ると言うものなので、同時発音数は1になります。これでは実際の演奏にはとても耐えられません。以下のサンプルは同時発音数を128まで拡張したものです。Gist.以前も同様のコードをSuperCollider.jpなどに投稿していましたが、SuperCollider3.6.x用に書き直しました。追加して選択することであっさり解決できた。初体験ですが、どうしてもSuperColliderと組み合わせたくてチャレンジしてみました。スケーラブルなネットワークプログラムをかんたんに開発するためのプラットフォームです。Hogan.jsなどなどが出てきて、Webサービスの開発言語にどんどん採用されている...というイメージです。node.jsとSuperColliderがどうつながるか、ですが、もともとnode.jsのデモとしてチャットシステムを見せてもらったんですが、完全にリアルタイムなんですよ。Skypeチャットなどはタイプした瞬間に相手にも見えているわけですが、それと同じようなことが自分でもできるというわけです。これは、リアルタイム性が要求される音楽の領域においては魅力的ですよね。node.jsは言語としてはJavascriptなので習得がかんたん、npmというパッケージ管理システムがあるため環境構築もかんたん、イイコトずくめというわけです。いえ普段仕事が忙しすぎてなかなか取り組む機会がないため、大阪で開催されたNode.jsの勉強会に参加して、どんな風に使われているのかと、環境構築についてちょっと勉強して来ました。SuperColliderSuperColliderumbrella_process普段はPHPerになってしまった私がSuperColliderのクラスを書こうとした時に詰まったポイントのメモ。基本、ドキュメントを読まずにObjectクラスのソースを読んでお作法を知ろうと思ったのだけど、意外とハードル高かった。Support/SuperCollider/Extensions/コンパイルに失敗したらエラーが表示されるので、ひたすらエラーを潰す。)が付くものがあるアスタリスクが付くものはクラスメソッドで、thisがクラスを指す。アスタリスクがつかないものはインスタンスメソッドで、thisがインスタンスを指す。)があるけど何だこれreturnでした。分かりにくいぜreturnしない場合は、インスタンスが返されるので、書かなくても動く。<>getMeOrSetMe;}短く書けるよ!ということらしい。あり、前者はインスタンス変数、後者はクラス変数。書いてあって、詳しくはデザインパターンでググれって書いてあるので、デザインパターンについて勉強しないといかんっぽい。