テキストファイルのダウンロードは以下のどちらかからどうぞ。
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 KitはArduinoからUSBシリアル通信で歯車の回転情報を送信しいて
これを受信するのに、SCで"Arduino"というQuarks(SCの拡張機能管理システム)を使用します。
まずはUSBドライバを以下のリンクからダウンロードしてインストールします。
インストール方法はGainerのサイトでわかりやすく解説されています。
次にQuarksの"Arduino"クラスをインストールします。
はじめに次のコードをSCで実行して、最新のQuarksをインストールします。
Quarks.checkoutAll;
実行するとターミナルが起動して自動的に最新のバージョンのQuarksをSCにインストールしてくれます。それが終わったら続いて以下のコードを実行して下さい。
Quarks.gui;
実行するとQuarksのウィンドウが開きます。
ウィンドウの項目上から二つ目にある"Arduino"の左ボタンを選択して、右上の青いsaveボタンを押してください。
その後cmd+kでSCをリコンパイルします。これで"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 件のコメント:
コメントを投稿