top of page

MAX 7 サウンドプログラミング基礎14

P306〜p311

・dealyオブジェクト

delayオブジェクトは、第1インレットにbangを受け取ると、アーギュメント内または第2インレットで指定した時間(msec)だけ送らせてbangを出力することが出来る。[stop]メッセージを受け取った場合はbangを中止する。

また、第1インレットに数値を入力すると指定した数値(msec)後にbangを出力することも出来る。

では、さっそくdelayを活用したlcdオブジェクトを作ってみよう。

lcdオブジェクト内に手書きの描画を描く場合、その第3アウトレットから、マウスを押して線を描いている間は[1]が、マウスを放した時点で[0]が出力される。これを利用して、自動的に描いた線が消えるパッチを作成してみる。

次のパッチにおいては、まず、マウスを放してから、すなわちlcdの第3アウトレットから[0]が出力されてから7秒後にclearメッセージが発動するプログラムを作っている。

しかしそれだけでは7秒後のものは全て消えてしまうので、マウスを放してから7秒以内にまた描き始めれば(すなわち[1]を出力すれば)、それが[stop]メッセージのトリガーとなり、7秒ルールで書き続けられるというわけである。

・pipeオブジェクトによる整数の時間遅延

delayオブジェクトがbangを遅らせて出力するのに対し、pipeオブジェクトを使用すれば数値を送らせることが出来る。pipeオブジェクトは数値を受け取ると、アーギュメント内または第2インレットで指定したmsec時間、数値を遅らせて出力する。

また、pipeオブジェクトにおいては、同時に複数の数値を遅延させることが出来る。この場合、扱う個数のアーギュメントと遅延時間を指定すればよい。例えば、2種類の整数を遅延させる場合には、[pipe 0 0 1000]という風な記載をする。

右のパッチでは、pictsliderにおけるx座標とy座標の二つの数値を同時に遅延させて、指定したmsec秒後に、上で動かしたスライダーを下のスライダーが追随するプログラムとなっている。

・描画の後にドットでなぞるlcdパッチ

では、pipeオブジェクトを使用して、lcd上の描画をドットでなぞるパッチを作ってみると、右のようなものになる。

※ちなみにpipeオブジェクトは、リストのままでも入力し、非リスト化して各アウトレットから出力することが出来るので、この場合unpackオブジェクトは必要なく、x,y座標を個別に送ることが可能である。

最新記事
アーカイブ
タグから検索
bottom of page