最近絵画を研究しています。しかも今回はスパコで絵画をする予定。
画家/小数点 どういうことかというと鉛筆に加速度センサーをつけてスケッチしてセンサーの値をサンプリングしている。それを元にサーボモータをドライブしている。
せっかくBoArduinoがあるので加速度センサーからのAD値をスパコで受け取りそれを元にサーボのドライブ部もスパコで行きたいと思う。(ついでに実はムービーの再生もSCMovieView使ってスパコのGUIから再生してる、どうでもいいことだけど、でもサーボと映像の同期にはこの方法がいいかと)
で、AD値のサンプリングで、へたにFloatArrayとか作らないでオーディオバスに流してバッファしてサウンドファイルにしてしまおうという作戦。くわしいことはめんどくさいので割愛するが、要はAD値を振幅に収まるようにマッピングしてあとはサーバで普通にレコーディング。
(こういうセンサーの値のマッピングに役立つのは.linlin()とか あとオーディオレートとカーネルレートの変換にはA2Kとかが便利)
さてデータを元にサーボを動かしたいのだけど、SimpleMessageSystemnライブラリにはデジタルi/oとアナログi/oがあるだけなのでこのままだとめんどー。 幸いAdruinoソフトウエアにはサーボ用ライブラリが用意されていてサンプルもあるのでそこから転用する。
以下SimpleMessageSystemのwritepin()のswitch文に書き足したコード、ディレイのタイミングとかかなり適当なので、てきせん変えてください。
int state;
case 's' : state = messageGetInt (); // Gets the next word as an integer
myservo. write(state ); delay (15); // waits 15ms for the servo to reach the position
Servo::refresh ();
's'(char)につづけてサーボの位置をintで投げてあげるようにする。
下の動画はサンプリングじゃなくてリアルタイムにサーボを動かしてみたもの。
今のところただ動かしてるだけだから、ちゃんと積分とか、サーボの位置とかの部分書かないとだ。
こんな感じでスーパーコライダーでも立派にフィジカルコンピューティングできるよー! 特に音関係ではとっても有用さ!
新作つくらねば、ということでこんなんつくってみたテスト。
映像の中で描いてるのはサーボモータ。 いまのところサーボが一個だけど複数使ってもうすこし複雑な動きにしたい。
あと、左利きみたいにみえるけどこれはフォトブースをキャプチャしたので左右が反転しちゃってます。
この前ダブリンで展示してた時、gossamer-1見た人に作品の説明してあげたら、ソーディスイズアトラクション!とうれしそうにいってた。 多分マイク立ててなまじインターラクティブな作品に思われたのだ。急いでノーノー、ディスイズノットアトラクション、バットペインティングっていったけど全然聞いてなかったな。
うーん。
ニットであったか冬じたく―北欧etc.のおもしろテクニック (大型本) なんか表紙オートマトンっぽい柄だけどちがうんかな。ちがうんだろうけどそれっぽいな。
もうこの際keitoくんに発注しようかな。
あとこのまえいってたやつこれだ CCFL