【Max 8】lineを使って数値を推移させる

記事をシェアする:

メッセージやナンバーボックスをしようして急にパラメーターを変更すると、不自然な音響が生まれます。意図的に使用する場合は良いですが、自然な変化を求める場合には[line]オブジェクトを使用すると良いでしょう。

デジタルデータは1つ1つの数値がバラバラに送られます。2つの数値の間に坂道を作ることで滑らかにデータを送ることができます。この坂道を「ランプ(ramp)」と呼びます。

ですが、デジタルなのでその隙間を細かいデータで埋めているのが実際です。ある程度細かく埋めれば滑らかに知覚できるので問題はありません。

基本情報

アーギュメント

[line]はアーギュメントを設定しなくても使用できますが、使用する場合「line 初期値 出力間隔(ms)」の設定をします。

出力間隔はディフォルト設定が20 msです。出力間隔とは上にあげたランプの出力間隔です。何msごとに推移中の数値を出力するか、という設定になります。

インレット

第1インレット推移先の数値
第2インレットランプタイムの設定(ms)
第3インレット出力間隔の設定(ms)

第1インレットは後に説明します。第3インレットは上述した通りです。

第2インレットのランプタイムの設定とは、第1インレットに数値が入力された時に、どのくらいの時間をかけて推移するかの設定です。この設定は1回しか適用されないので、持続的に数値を推移させたい場合は入力する前にランプタイムも毎回設定する必要があります。

なので実際はこのように使用する場合が多いです。

オブジェクトにリスト・メッセージを送ると、リストメッセージを分解しそのインレットから順に次のインレットにパラメータを設定できます。これを利用しランプタイムを設定し、次の推移先の数値を設定しています(パラメータの設定は右から順に行われます)。

アウトレット

第1アウトレットからは数値が出力されます。

第2アウトレットは、推移が終わったらbangを出力します。これは例えば推移が終わるまで変更を加えない、などのトリガーとして使う事ができます。

使い方

ランプを生成する

「推移先の数値 ランプタイム」のメッセージを送ることで、指定したランプタイムで数値に向かいます。

常に同じランプを生成する

常に同じランプを生成する場合は「初期値, 推移先の数値 ランプタイム」のメッセージを送ります。

ここでは50~100を1秒で推移するメッセージを送っています。先に「50」を送り、次に「100 1000」が送られます。 「,」を付けることでメッセージが分割され、左側のメッセージが先に送信されます。

ランプタイムが固定で良い場合

ランプタイムが固定で良い場合は、ナンバーボックスを「$1 ランプタイム」に接続して送ると楽です。「$1」は入力されたメッセージをそこに入れて出力します。

浮動小数点を扱う

浮動小数点(float)を扱う場合は[line 0.]のように、初期値設定のアーギュメントに 浮動小数点の数値を設定します。

Max 8からの機能で、アーギュメントに浮動小数点の数値を入れずとも、推移先までの数が1を超えない場合は自動的に浮動小数点で出力します。

この結果が望ましくない場合は、こちらの記事を参考にしてください:
【Max 8】[line]をMax 7以前の仕様で使う

[function]オブジェクトとともに使う

[function]オブジェクトの第2アウトレットからは「X値 Y値」が数珠つなぎになったリストメッセージが出力されます。これを[line]に接続することで、UIを使って直感的に数値の推移を設定できます。

記事をシェアする: