2010年9月15日水曜日

Tokyo SuperCollider #2 資料2

SCとJamming Gear Kitの連係に使用したコードのサンプルと解説です。
テキストファイルのダウンロードは以下のどちらかからどうぞ。


http://supercollider.jp/modules/bwiki/index.php?TKSC02


https://docs.google.com/leaf?id=0B9hVaOZN5-J4YmU5NzdmNDEtNjUzOS00MmQzLWI3YjUtYTI0ZTExNjE4Yzk1&hl=ja


//Tokyo SuperCollider #2
//Bullet's 100911

//--Jamming Gear Kit serial sample

Jamming Gear KitArduinoからUSBシリアル通信で歯車の回転情報を送信しいて
これを受信するのに、SC"Arduino"というQuarksSCの拡張機能管理システム)を使用します。


まずはUSBドライバを以下のリンクからダウンロードしてインストールします。

インストール方法はGainerのサイトでわかりやすく解説されています。


次にQuarks"Arduino"クラスをインストールします。
はじめに次のコードをSCで実行して、最新のQuarksをインストールします。

Quarks.checkoutAll;


実行するとターミナルが起動して自動的に最新のバージョンのQuarksSCにインストールしてくれます。それが終わったら続いて以下のコードを実行して下さい。

Quarks.gui;


実行するとQuarksのウィンドウが開きます。


ウィンドウの項目上から二つ目にある"Arduino"の左ボタンを選択して、右上の青いsaveボタンを押してください。
その後cmd+kSCをリコンパイルします。これで"Arduino"のインストールは完了です。

Quarksについてはこちらも参照してみてください。



では、実際にJamming Gear Kit SCの連係に使用したコードをみていきます。

//jg-live 100911

//Jamming Gear Kit PCを接続し、シリアルデバイスのリストをポストする
SerialPort.listDevices;

post windowにポストされた中で
"/dev/tty.usbserial~"USBシリアルポートの番号です。


//Arduinoからの通信を受け取るための変数を宣言します。
p = ArduinoSMS("/dev/tty.usbserial-A900aevy", 57600); //このArdinoSMSというクラスがQuarksでインストールしたものです。引数は("USBシリアルポートの番号",  ボーレート(通信のレート))


TKSC#2で使用したJamming Gear Kit ではArduino側で
12個の歯車が回転するごとに固有の番号を出力するようにプログラムされていました。

SC側では個々の番号を受信した時に、あらかじめstoreしておいた固有のSynthDef(音源)が鳴るようにプログラムし、パート毎にSynthDefを入れ替えてパフォーマンスを行いました。


//使用したプログラムの一例
(
p.action = { |... msg|
msg[0].postln; //受け取ったシリアル通信をpost windowにポスト
if(msg[0]== 1, {Synth(\a1)}); //msg[0]1の時SynthDef \a1 を鳴らす
if(msg[0]== 2, {Synth(\a2)});
if(msg[0]== 3, {Synth(\a3)});
if(msg[0]== 4, {Synth(\a4)});
if(msg[0]== 5, {Synth(\a5)});
if(msg[0]== 6, {Synth(\a6)});
if(msg[0]== 7, {Synth(\a7)});
if(msg[0]== 8, {Synth(\a8)});
if(msg[0]== 9, {Synth(\a9)});
if(msg[0]== 10, {Synth(\a10)});
if(msg[0]== 11, {Synth(\a11)});
if(msg[0]== 12, {Synth(\a12)});
};
)

使用したSynthDefとシリアル通信のプログラムは
以下のリンクからダウンロード可能です。

//jg-live-synthdefs.rtf

//jg-live-serial.rtf

0 件のコメント:

コメントを投稿