タグ別アーカイブ: SuperCollider

インタラクティブ・タイムライン・ミュージック「RAIN TOWER IV」ソースコード公開します

2010年10月28日に開催されたSuperCollider・Max/MSP・PICnomeそれぞれのユーザーグループによる合同忘年会イベントにて、SuperColliderの発表時間に拙作「RAIN TOWER IV」の演奏会を開いていただきました。itaruさん本当にありがとう!

RAIN TOWER IV 演奏参加ページ


今日の演奏のハイライト部分

今日の参加者のツイートまとめ(Togetter)

この作品はかんたんに言うと、「Twitterで参加できるオープンな音楽作品」です。
技術的には、特定のハッシュタグのツイートをTwitter Search APIから取得してツイートの内容をOSCメッセージに変換。OSCメッセージを受信したSuperColliderのプログラムで、特定のコマンドに反応して音楽を変化させる、というものです。

続きを読む インタラクティブ・タイムライン・ミュージック「RAIN TOWER IV」ソースコード公開します

Quarks、使ってる? #SuperCollider

サードパーティのライブラリを使うなんて邪道だ!と昔は思ってましたが、Webのお仕事始めるとjQuery超便利だーとかいろいろライブラリの有用性を理解しまして、そういった考えは改めようと思っています。Silverlightは使わないけどね!

というわけでSuperColliderのライブラリ集、Quarksを使ってみることにした。インストール方法はほぼSC study group @ iamasの資料に詳しく載っているのでそちらを参照してほしいのですが、基本的には以下の1行をSuperColliderで実行するとターミナルが起動して、証明書を許可していいか聞かれるのでええよと入力し、あとは待つだけっす。

Quarks.checkoutAll

ターミナルでチェックアウト完了のメッセージが表示されたら、SuperColliderに戻って以下の1行を実行。

Quarks.gui

するとquarksのウィンドウが開きます。Quarksはとどのつまり、サードパーティのライブラリの総称というかパッケージ管理システムで、このウィンドウに並んだライブラリの中から好きなものをインストールしてSuperColliderをリコンパイルすることで使えるようになるという仕組みになっています。

quarks

infoボタンを押すと簡単な説明と依存関係が表示されるので、注意してインストールしませう。リコンパイルはCmd+Kでおk。

しかし、SuperCollider JapanのwikiのQuarksのページ、古くなってますね。ノブのGUIとかすでに標準で入ってますよね。
Quarksでコレ、愛用してるよ!という方、ぜひこの記事のコメント欄でもいいので教えてください!
待ってます 😉

音響合成プログラミング言語「SuperCollider」の勉強会が東京で開催されます

もう6年くらいSuperColliderというプログラミング言語を音楽制作に使っています。
IMIでサウンド専攻生にレクチャーしたり、京都でtn8さんimoutoidさんと語り合ったりしましたが、それらは例外的な出来事で…基本的に同士と語り合う機会なんてなかなかない、マイナーな言語なのです 🙁 (社会人になってアカデミズムから離れたらなおさら)

そんな中、Twitterという情報拡散ツールとテキストベースのプログラミング環境を持つSuperColliderは微妙に相性がよいのでしょう、ユーザーがクチコミで徐々に増えているような気がしています。そしてついに東京で勉強会が開催されます!

主催はitaruさんで初回は豪華メンバーが揃う予定!関東近郊でプログラミング音楽に興味がある方は、SuperCollider未経験でもぜひぜひ参加されたし!

» Tokyo SuperCollider #1 – 7/10開催決定

SuperColliderで連想配列を使うDictionaryクラスの概説。 #supercollider

SuperColliderで用意されているDictionaryクラスに初挑戦してみた。

連想配列と一口に言っても言語によって実装はまちまち。PHPでは配列と連想配列に区別はなくどちらもArrayだし、Javascriptでは連想配列はオブジェクトとして扱われ配列とは別だ。ま、詳しくはないんだけど、とにかく各言語によって違うのは確か。

ちなみに、スパコと同じくSmalltalkの系譜を引くObjective-Cにはその名もズバリNSDictionaryクラスが存在する。ので、手持ちのCocoaプログラミングの本で辞書のページを引いてみたがやはりひと言で説明するのは難しい。まぁ、平たく言うとキーと値をセットにして複数保存しておける仕組みのことだ。

使いかたは、newメッセージで辞書を作りaddメッセージで辞書に項目を足していく。

d = Dictionary.new;
d.add('monkey' -> 0).postln;
d.add('robot' -> 1).postln;

このコードで↓のような辞書ができる。

Dictionary[ (monkey -> 0), (robot -> 1) ]

辞書ができたら引かなければならない。参照するには配列と同じatメッセージを使う。

d.at('robot');

この結果はrobotをキーとする値だから、「1」になる。削除は同様にremoveAtメッセージを使う。

続きを読む SuperColliderで連想配列を使うDictionaryクラスの概説。 #supercollider

Twitterアカウントで演奏に参加できるミニマル・ミュージックを作る実験、経過報告。

TwitterとUSTREAMの組み合わせの強力さに大きな可能性があることは、おそらくたくさんの人が感じていると思う。DOMMUNEを代表格として、音楽を配信することも多く行なわれるようになった。僕は個人的に「複数の人数で自由に参加できる音楽」というものをずっと研究して来たので、このTwitterとUSTREAMの登場にはまさに心が躍った!

そして、ある程度の完成度に達しながらも不満の残った前作「rain tower 3」の次のバージョンとして、現在「RAIN TOWER IV」という作品を開発している。

では前作のrain tower 3は何がダメだったか。それは参加する際の敷居の高さであった。

参加型音楽だからこその問題とは。

2006年のインターカレッジ・コンピュータ音楽コンサートで発表したrain tower 3は、ドラムマシンのようなシーケンサ状のGUIを複数人数で共有し、リズムパターンを変えたり、エフェクトをかけたりして遊ぶ音楽として設計された。当然、参加者が行なったGUIに対する操作をどうやって音楽に反映させるか、そして共有している音楽をどうやって参加者全員に配信するかと言う問題が発生する。

rain tower 3では、参加者が行なった操作をOSCメッセージ[1]としてホストコンピュータに集約し、参加者全員に再配信するという方法をとっている。しかし、これには参加者がまずホストコンピュータにログインすることが必要で、そのためにはまずSuperColliderとログイン用のプログラムをインストールする必要があり、さらに自分のマシンのIPアドレスを調べる必要があった。これは非常に敷居が高いと言わざるを得ない。演奏を行なう際はほぼ必ず、開発者の僕が参加者のマシンへのインストールをサポートする必要があった。これは無様だ。

このダメダメな作品を改善すべく、ログイン周りのプログラムの書き直しと簡単なチャットシステムをSuperColliderで書き進めていたのだが、ある日突然、そんなことをする気持ちが完全に失せた。もちろん、Twitterの存在を知ったからである。Twitterを、オープンなメッセージ送受信プラットフォームとして使用すれば、わざわざ新しいアプリケーションを参加者にインストールしてもらう必要は無い。また、多人数で音楽を共有する手段も、USTREAMの登場によって解決された。いやー、実にいい時代ですね!

しかし、TwitterとUSTREAMというツールを使うことにより、新たな問題も発生させた。昨年12月に行なった最初の実験でも明らかになった問題点は以下の3点だ。

1. GUIが使えない。

もちろん、この作品専用のGUIを開発してもいいのだが、敷居を下げるというコンセプトには合わない。できれば、誰もが普段使っているTwitterクライアントでも参加できるのが望ましい。となると、どういう方法で参加すれば良いか。

とりあえず、音楽に反映されるまでの時間のダイナミックさを損なわないよう、短いコマンドと数値の組み合わせをツイートするという手段をとることにした。これに関しては色んなアプローチがあると思うので、いいアイディアを探しているところだ。

2. タイムラグが大きい。

SuperColliderでOSCをやり取りする場合、高速なUDP/IP通信を用いるため、タイムラグはほとんど問題にならなかった。しかし、Twitterではそうはいかない。通信プロトコル以前にツイートしてから検索結果に反映されるまで、どうしても数秒のタイムラグは発生してしまう。また、Twitter APIへのリクエスト回数も、Twitterは明らかにしていないが制限があると思われるので、1秒間に何回もリクエストするわけにはいかない。さらに、USTREAMでもタイムラグは存在するので、結局ツイートしてから音楽に反映されるまで10秒以上かかってしまう。

この問題に関しては、タイムラグがあっても構わない方法を探るほかない。また、よりリアルタイムに近い検索を可能にするTwitter Streaming APIの実用化も探っている。

3. 音質が低い。

ユーザーのマシンにアプリケーションをインストールし、そのアプリケーションが音楽を再生する場合はもちろん音質は問題ない。しかし、USTREAMでの配信では限界がある。

この問題に関しても、USTREAMを使うということは、モバイル機器からでも参加可能な音楽になるということで、高音質が前提の音楽では似合わないだろう。ふさわしい音楽にするしかない。

で、やってみた。

以上の問題を踏まえて、バージョンアップしたRAIN TOWER IVのベータテストを2010年3月27日、午前1時〜3時にかけて行なった。のだが、長くなってしまったのでこの詳細については次の記事でご報告したい。


[1] 音響合成のためのプログラミング言語「SuperCollider」はマシン上のサーバーに対してメッセージを送り、サーバーがそのメッセージを処理して音を発すると言う特殊な仕組みを採用している。ローカルマシン上のサーバーだけでなく、Open Sound Control(OSC)というプロトコルにより、ネットワークを介して他のマシンのSuperColliderサーバーに対してもローカルマシンと同様にメッセージを送信することができる。