2013年8月26日月曜日

簡易サンプラー作成

昨日のごちゃごちゃパッチのサンプラー部分をモジュール化.

課題として挙げていた,「[soundfiler]が"$0"を受け付けないのでローカル変数を使えない」問題はここを参照して解決しました.
PURE DATA forum~ / what is an abstraction, and why use $0, $1 etc ?? 

"$0"がMessageではローカル定数(?)とは解釈されないのが問題なので,一旦"$0"の実体を数値で出力したものをMessageに変換すればよいという話。
というか全く同じ用途(サンプル読み込み機能のある外部パッチを複数作りたい時)の話題が展開されてました.
[f $0]にbangを入れてやると,floatとして"$0"の実体が吐き出されてくるので,
あとはそれを[pack]に入れるなりして対象の形式に合わせてやればいいという事ですね.

というわけで
・Gain
・Pitch
・Gate
の3機能のみ備えた簡易サンプラーを作って外部パッチ化してみました.



twosamples_20130826.zip



twosamples.pd を開いて下さい.
「sound_enable」ボタンで音声出力を有効にし,
「open...」でwavファイルを開くと1秒間隔で音がループします.
この簡易サンプラーを2つ並べ,それぞれの音が交互に鳴るようにしてあるデータです.
左右別々のファイルで試せるようにwavファイルを2つ同梱しておきました.

簡易サンプラーのパッチ abcdezsampler.pd では,
Gate(音を途中で切る機能)を実現するための方法として,
あくまで再生を制御しているエンベロープの形を変えることで対応させてみました.
でも,今後エンベロープジェネレータの必須機能といえるADSRを実装する事を考えると,
簡単なエンベロープを発生させて掛け算でもしといたほうがよかったかもしれない…

次は昨日の課題のもう一つのほう(オートクォンタイズ)を作りたいと思います.
そのあたりまで出来たら,Androidへの実装にトライしよう.


作業日誌をつけてると,結構モチベーション維持になりますね.

0 件のコメント :

コメントを投稿