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

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

20090802

ChucKでSemi-auto sequencer for monome スケッチ

自分仕様のシーケンサを作成中。

実装->テスト->仕様変更の繰り返し

現在の仕様は
セミオートなシーケンサ
発音のタイミングは自分で決めても音程はある程度乱数を使って発生させる(自分で決めることも可能)
input mode/control modeの切り替えでループの中でのタイミングをリアルタイムに指定可能(mlr)
・bpm
・音量
・音色(楽器)
・reverb
・pan
等も指定可能(無指定の場合ランダム)。
ToDo
・octave指定(現在はトラック毎固定)
・保存(ただしChuckにはTextファイルなんかを保存する機構がないのでどうしようか思案中)

音楽教育が中学で止まっているがゆえの乱数に頼った仕様。

最初出来る事はひたすらランダム発生させたnoteを鳴らすだけだったので
出来る事(自由度)は広がっていっている。
しかし自由度が広がりすぎると逆に奏でる音楽そのものはごちゃごちゃしがちになってしまって
最初の良さが少し失われたような気がする(聞き飽きたという説もあり)
音楽は難しいね。
バンドスタイルだとその辺ある程度解決されるのかな?
フジロックいったばっかりってこともあるかもしれんけどやっぱバンド憧れるな〜

20090720

os xでmonomeが認識しない場合



(忘れないようにメモ。)
早速256をiMacにつなげるが全く認識せず。

どうやら
http://docs.monome.org/doku.php?id=setup
にあるようにFTDI VCP driverというのがいるらしい。
os xでは個別にドライバをインストールした経験がなかったので少しだけ焦った。

とゆうか最初から上記ページを見てればこんな事にならなかったのかも。
マニュアルはちゃんと読まんとあかんわ。

現在はChucKでstep sequencerのようなモノを作成中。
Processing+SupercolliderとかProcessing+ChucKでひととおりOSCについては
いじった事あったので比較的すんなりいけた。(もともとそんな難しいもんじゃないけど。)
ループまわしながら発音してLEDを制御するところまでは出来たので
あとは細かい機能によって表現の幅をどれだけ広げられるか。

256はいっぱいボタンがあるので逆にスマートな機能の配置とかが難しいかもしれない。

20090719

monome 256



前から欲しい欲しいと思っていて
清水の舞台から飛び降りるつもりで買ったmonome
こいつをどう料理してくれよう 。

とりあえず音楽を作るのが目的で
誰かが作ってくれたapplicationで初めてもいいけど
音楽の(演奏する方の)素養は正直からっきしなので
そんな僕でもクールに演奏出来るものを作ろうと思っている。

言語は何でつくろうか迷い中
http://docs.monome.org/doku.php?id=app
公式サイトに上がってるアプリを見るとmax/msp(Max5)とかを使ったものが多い…
正直monome買った上にそんなお金ありません!

それにやっぱりVPLじゃなくてもいけるという情報系出身の強みを出したい。
processingとかOOPだしc/c+とかjavaとかかじった事あるとすごくわかりやすいしOSCのライブラリもある。
よし、processing(全体の制御)+ supercollider(音鳴らす専門)でやってみようかと思ったけど
ふと、processingの時間制御ってどうなんだろう。と思ってしまった。
いまどきの言語+計算機で気にする事じゃないかもしれないけど
ChuckなんかはStrongly Timedを売りにしてるしその辺安心そう。
でもChuckは結構不安定な気がするのと、音はsupercolliderが好みな感じ...

と、いうわけでそのあたりをふらふらしながら
最初から右往左往で開発中。

※processingの時間の正確さに関して見識ある方は教えて下さい。

このブログについて

このブログは画像処理関連を研究していた情報系出身の一介のエンジニアのブログです。

自分の周りのいろいろな事を集積したいと思って始めました。
マイペースでやって行きます。

ちなみに仕事ではツールとしてのプログラミング(c/c+,perl,php,action script,etc..)
はしてますが、プログラミングが目的のいわゆるプログラマではありません。


今まで手を出して来た言語は
processing, supercollider, chuck, max/mspなど、(音系が多いかな)

手を出してないけどそのうち出してみたいと思っているのは
context free, nodeboxなど、(画像系が多い?)

音楽の話とかもするかもしれません。