20100318

tweetloop

去年夏ごろgoogle app engine にアカウントを作り、
一通りいじってみたあと特にすることもなかったので放置してたが、
年始ごろに思いついたprocessing.jsとsoundmanager2を使って音がなるサイトを作成してみた。

具体的にどんなサイトかというと、以前動画を公開したmonome用のソフトに近いもの
(つまり乱数に頼ったシーケンサーのようなもの)をweb上で再現し、
作ったloopを保存してtwitter上で呟けるようにしたもの。

http://tweetloop.appspot.com/
(注:IEでは動きません)

canvas上でマウスをクリックする事によりループを作成し、
保存して共有されたモノは他人によって改変され、"ReTweet"できる。

これで僕が作ってみたいものは
楽器をある程度やってきた人だけに許される即興でアレンジする、Jamる、という感覚を、
(自分のような)楽器は出来ないという人間も含めた人みんなの中で共有できるようなもの。
しかもニコニコ動画のように非同期の同時性を含む形で。

それを実現するためにはもっと多くの人達に共有してもらう必要があるが、
そこに至るために足りないものがまだある気がする。
実際勢いだけで作ってみたものなので手が回ってない部分もある。
現状あくまで余暇を使ってやっていることなので、なかなか開発の加速は出来ないが、
最終的にはもうちょっといいもの、理想に近いものに近づけるつもり。

20100124

自作monome用ソフト動画

ChucKで前々から作ってたやつの演奏動画をアップしました。

http://www.youtube.com/watch?v=bSrLV8zcZm4

しかし機能の一部しか使ってないので紹介動画としては微妙。

そして画質も微妙。HDな録画環境が欲しいけど
最近GR3やらAbleton Liveやら立て続けに買った上に
年末アメリカまでライブ観に行ってかなり金遣い荒い感じなので当分我慢かな…

ChucKにおけるFileIO

いつかやろうと思っていた自作monome用のソフトへの
簡易的なFile入出力機能をようやく実装した。
着手してみると特に引っかかる所なく出来た。すごく簡単。
(簡単なんだけど簡単なものに限って
面倒くさくて後回しにしてしまうのは悪い癖)

ChucKの持っているFileIOやstringクラスは
当然の事ながらP言語なんかと比べると笑っちゃうくらい貧弱。
実装できる保存形式もStringTokenizerクラスで分割出来るのはspaceだけ(?)だから
space-separated valueしか無いよね?ってくらい
しかしながらChucKで少し使うくらいの機能としては
これで十分なんだと割りきってリリースしてるんだろうと思う。
(実際自分が実装したい機能も十分実装出来た。)
このあたりの割り切りはChucKのおもしろくてかわいい所だと思います。

20091213

ChucK 1.2.1.3

何時の間にやらファイル入出力がサポートされたらしい。
これでずっと前作ったシーケンサーに入出力機能が作れそう。

そしてChucKで全然別件だがはまったのでメモ
ChucKを使ってmidi note 36〜85までのエンベロープ付サイン波のwave file自動生成を行った
その際にWvOutを使って出力したwaveファイルが何回やっても
再生時間などの情報を持たないファイルになり再生出来ない。
もちろんShredは終了しているのにも関わらず。。。
相当何時間も試行錯誤したのだが、
結論だけ言うとVirtual Machineを止めないと
最終的な出力ファイルのヘッダ情報(?)は書き込まれない模様
miniAudicleの[Stop Virtual Machine]を押してからプレビューすると普通に再生された。
最終的にマニュアルを読んでてふと思いついたが、これはわからん!ちゃんと書いといて!!

20091121

SuperCollider メモ

SC3.3.1日本語版+Leopardでは便利だったヘルプ機能が使えない...
これは開発能率が激しく落ちる…
対策としてパッケージの中のJapanese.lprojを適当にリネームしてやったら
⌘+Dでヘルプにとべるようになった。
(もちろんメニューとかは英語になります。)

そしてmonome+BBCut2ですが
BBCut2気軽にオサレな感じのbeat作れるけど自由度低いなー
ていうか音量変えたいときとかどうすんの!?
ヘルプ見ても書いてないし!って思って少し萎えてました

そんななかふと⌘+Jでクラス定義みたらちゃんとありました。変える方法が。



(
~tempoClock = TempoClock(3);
~bbClock= ExternalClock(~tempoClock).play;
~bbClock.tempoclock.tempo_(90/60.0);
)

~sf= BBCutBuffer("sounds/break",8);
~cb= CutBuf1(~sf);
~cp= BBCutProc11.new;
~bb= BBCut2(~cb,~cp);
~bb.play(~bbClock);

~bb.amp_(0.2);

~cp= SQPusher1.new;
~bb.proc_(~cp);

~bb.end;


テンポ変えたいときは~bbClock.tempoclock.tempo_()
音量はbb.amp_()
ビートの刻み方(?)は~bb.proc_()

それぞれリアルタイムに変えられる模様

hoge_()ってのはSCでは一般的な書き方なんだろうか?

ヘルプはちゃんと見ましょう。見てわかんなかったとしても
クラス定義みたら幸せになれるかもよ?って話でした。

これでmonomeとのインタラクティブな連携の形が見えて来た(かも)


しかしSuperColliderはポートlangPort(デフォルトでは57120)以外では
monomeSerialの出すようなOSCは受け取れないのね…問題無いっちゃ無いけど…

20091103

SuperCollider + monome 1

久しぶりの更新
monome + ChucKは公式のappliにサンプルがあるので割と簡単に出来たけど、
SuperCollider使ってる人は少ない。
なんでだろう?
やっぱりmax/mspとかChucKに比べてもSCは敷居が高いのだろうか?

はまったところをメモ:

  • SCでポート指定して立てれるServerは基本的には決まった命令(s_new etc...)しか受け取れない。

  • 決まった命令はServer-Command-Reference.html参照。

  • monomeSerialからの命令を受け取るのはLang Portからうけとるのがよい。

  • Lang Portはデフォルトで57120と決まっている。

  • Lang Portで受け取る際の方法はOSCresponderとrecvOSCfuncの二通り?


以上の用な事を踏まえた上で便利ライブラリを作ってくれている人がいる。
http://wiki.monome.org/view/SupercolliderClasses
SCのライブラリ
'/Applications/Software.localized/SuperCollider/SCClassLibrary'
'/Users/yamada/Library/Application Support/SuperCollider/Extensions'
につっこめばmonome classとしてつかえる。

monomeとコミュニケーションするところまでは無事出来た。
あとはどういう命令をmonomeにさせるか。
monomeのインタラクティブさをいかすならJIT Lib.とか使って行くんだと思うが
いまいちどうしたらいいのかわかってない。

ちなみにSCも3.3になるとライブラリが豊富で憧れのあんなことやこんなことが手軽に出来てすごい。
複雑なブレイクビーツ作成やらグラニュラやらサンプル見ながら簡単に出来る。
とりあえずBBCut2とグラニュラは使って行きたいなあ

20090805

Context Free Art



少し音楽関連のプログラムを休憩して前々から気になっていたContext Freeをいじってみた。
なかなか面白い。

使う上で覚えなきゃならない事は少ない
↓に集約される。
http://www.contextfreeart.org/mediawiki/index.php/Reference_Card


そして動画出力が手軽。
VJとかのネタ作りにいいんじゃないかな?
monomeでVJみたいな事も出来るし↓

http://vimeo.com/768204

覚えておいて損はないかも
本筋が発散しない程度にいじって行ってみようと思う。