チュートリアル22

分析:シグナルデータの表示

シグナルの値の表示:number~

この章では、シグナルの数値を観察したり(「同時に」、或いは「または」)その値をMaxメッセージに変換する、いくつかのMSPオブジェクトについて説明します。

* オーディオをオンにして、コンピューターの入力ジャックにサウンドを送って下さい。

パッチャーの一番上にあるnumber~オブジェクトは、各々のチャネルに届いているシグナルの値を250ミリ秒毎に表示し、meter~オブジェクトは、直前の250ミリ秒間における振幅値のピークのグラフ表現をアナログLED表示のように示しています。

現在のシグナル値はnumber~ によって表示され、振幅のピークはmeter~によって表示されます

number~に届いているシグナルは、表示されるたびにfloatとしてその右側のアウトレットから送り出されます。これは、シグナル値のサンプルを取って、他のMaxオブジェクトにメッセージとして送り出すことが可能であることを意味します。

number~オブジェクトは、実際に2つのオブジェクトが合わさっているかのようです。シグナル値を受け取って右側のアウトレットから外へ送り出すだけでなく、number~はシグナルを(floatの代わりに)左側のアウトレットから送り出す浮動小数点ナンバーボックスとしても機能します。

* MIDIキーボードのモデュレーション・ホイールを動かすか、"Amplitude"と記されたnumber~の右側をドラッグして下さい。これは、number~の左のアウトレットから送り出されたシグナルの値をセットします。シグナルは、ezdac~に送られる振幅をコントロールする2つの*~オブジェクトの右側のインレットに接続されます。

number~にfloatを入力すると、左アウトレットから出力されるシグナルの値をセットします

number~オブジェクトは、どんなシグナルを受け取っても、同時にfloatに変換して右のアウトレットから送り出し、どんなfloatを受け取ってもシグナルに変換して左のアウトレットから送り出します。両方の作業を同時に実行することは可能ですが、一度に表示することができるのは一方の値だけです。number~によって表示される値は、そのディスプレイモードによって決まります。number~の左側に小さな波形が表示されている時は「シグナルモニタ・モード」で、左のインレットから入力されるシグナル値を表示します。小さな矢印が表示されているときは「シグナルアウトプット・モード」で、左のアウトレットから送りだされるシグナルの価を表示します。

number~の2つのディスプレイモード

ロックがかかってないパッチャーでnumber~オブジェクトを選択し、Get Info...をMaxメニューから選ぶことによって、どちらか一方のディスプレイモードに制限することができます。

許可するディスプレイモードはGet Info…ダイアログで選択されます

少なくとも、1つのディスプレイモードはチェックされなければなりません。デフォルトでは、上記の例のように両方のモードが許可されています。両方のディスプレイモードが許可されている場合、ロックされたパッチャーでnumber~の左側をクリックすると、もう1つのディスプレイモードにスイッチすることができます。number~のアウトプットは、どちらのディスプレイモードであるかに関わらず続けられます。

チュートリアルパッチでは、number~ の2つのディスプレイモードを見ることができます。パッチャーウィンドウの上部にあるnumber~オブジェクトは、入力シグナルの値を示すために使用されるので、「シグナルモニタ・モード」になっています。”Amplinude” number~は、シグナルを送るために使用されていますが、そのシグナル値を見るために「シグナルアウトプット・モード」になっています。(新しい値は、タイプされた場合、或いは、−シグナルアウトプット・モードの時に限っては−マウスでドラッグされた場合、number~に入力できます。)各々のnumber~は1つの機能を提供するだけなので、Get Info…ダイアログで1つのディスプレイモードに制限されています。

* number~オブジェクトの左側をクリックして下さい。これらは、Get Info...でどちらかのモードに制限されているので、ディスプレイモードは変わりません。

number~による補間

number~オブジェクトは、便利な付加的機能を持っています。それは、まるでline~オブジェクトのようなランプ信号を生成するための入力値の間の補間ができるということです。number~が右のインレットでゼロ以外の値を受け取ると、その値をミリ秒で表された時間の長さとして使用し、左インレットに値を受け取った時に、その新しい値との間に直線的な補間を行います。これは、line~にリストを送ることと同じことです。

number~は古い値から新しい値への直線的なランプシグナルを送ることができます

しかし、line~と違ってnumber~は、2回以上補間時間の値を受け取る必要はありません。;number~は、補間時間の値を覚えていて、左のインレットで受け取られる各々の新しい値にそれを使用します。この機能は、出力信号の振幅値に不連続な変化を引き起こさないので、"Amplitude"number~に使用されています。

振幅のピーク値:meter~

meter~オブジェクトは、定期的に、前の表示以降に受け取った振幅のピーク値を表示します。同時にmeter~は、シグナルのピーク値をfloatとしてアウトレットから送り出します。アウトプットの値は、たとえピーク値が負であっても、常に正の値になります。

meter~はシグナルの振幅のピーク値を表示し、floatとしてアウトレットから送り出します

meter~は、(シグナルの瞬間的な振幅を表示し、送り出すnumber~と違って)シグナルの振幅のピークを観察するのに便利です。meter~はオーディオシグナルをターゲットとしているので、受け取ったシグナルが-1から1までの範囲であることを期待します。もしそのレンジが超えられると、meter~は、最大値で赤い「クリッピング」LEDを表示します。

*クリッピング表示を見たい場合には、出力信号の振幅を1を上回るまで増加させて下さい。(そして、望ましいレベルに戻して下さい。)

meter~が表示を更新する時間のデフォルト間隔は250ミリ秒ですが、表示間隔はintervalメッセージによって変えることができます。より長い表示間隔が、出力されるビジュアルな表示や数値表示の値を読むために時間の余裕を与えるのに対し、より短い表示間隔は、正確なLED表示を提供します。

* Patcherウィンドウの左下隅にある"Display Interval"と記されたナンバーボックスの値を変えることで、異なる表示間隔を試してみることができます。

ちなみに、number~オブジェクトの表示間隔も(Get Info...ダイアログを用いて)同様にセットすることができます。

シグナルを使用してMaxメッセージを生成する:snapshot~

snapshot~オブジェクトは、number~の右のインレットが行うのと同じように、現在のシグナルの値を送り出します。しかし、snapshot~は、アウトプットのオン/オフを切り替えることができ、bangを送ることによって1つの値をアウトプットさせることができます。右のインレットにゼロでない値を送ると、snapshot~は、その値をミリ秒による時間のインターバルとして使用し、左のインレットからシグナル値の定期的な報告を開始します。インターバル時間0 を送ると、snapshot~は停止します。

チュートリアルパッチのこの右半分は、シグナル波形がMIDIデータの生成にどのように利用されるかについてのシンプルな実例を示しています。ここでは、MIDIノートメッセージのピッチ値を得るために、サブオーディオのコサイン波をサンプルしています。

* number~を使って、アウトプットの振幅を0にセットして下さい。パッチの上部にあるナンバーボックスのうち、"Rate"ナンバーボックスを0.14に、"Depth"ナンバーボックスを0.5にセットして下さい。メッセージボックス200をクリックして、snapshot~による毎秒5回のシグナル値の報告を開始させて下さい。

snapshot~が毎秒5回のシグナル値を報告しているのに対し、cycle~オブジェクトの周期はおよそ7秒なので、サイン波の1サイクル毎に35個の音がメロディーとして記述されます。波形の振幅が0.5なので、メロディーは36から84(60±24)の範囲で変動します。

* cycle~に異なる"Rate"、"Depth"の値を与えて実験してみて下さい。snapshot~が5Hz(200ミリ秒毎に1回)のレートでサンプリングしているので、そのナイキストレートは2.5Hzです。このため、cycle~の有効な周波数(それより大きな周波数は、「折り返されて」しまう)は制限されます。0メッセージボックスをクリックして、snapshot~を停止させて下さい。

振幅変調

* トレモロのデプスを0.5に、トレモロのレートをに4セットして下さい。アウトプットの振幅を適当なリスニングレベルまで増加させて下さい。

cycle~オブジェクトは、4Hzのトレモロで、入力されたサウンドの振幅を変調しています。

*より速い(オーディオ領域の)モジュレーション・レートで実験し、振幅変調の音色効果を聞いてみて下さい。モジュレーションデプスを1にセットして、リングモジュレーションを聞いてみて下さい。単に、デプスを0にセットして、変調効果を無くして下さい。

シグナルの抜粋を見る:capture~

capture~オブジェクトは、Maxオブジェクトcaptureに相当します。これは、多くの信号値(デフォルトで、最後に受け取った4096サンプル)をストアするので、シグナルのすべての抜粋をテキストとして見ることができます。

* トレモロデプスを1に、トレモロレートを172にセットして下さい。capture~オブジェクトをダブルクリックして、最後の4096サンプルを含んでいるテキストウィンドウをオープンして下さい。

このオブジェクトは、時間軸上でシグナルに起きたことを精密に見るために役立ちます。(4096サンプルは44.1kHzのサンプリングレートでおよそ93ミリ秒です。)capture~に引数をタイプして、どれくらいの数のサンプルを見るかを指定することができます。capture~は多くのサンプル(Maxのために十分なRAMがあると仮定して)をストアしますが、capture~のテキストウィンドウに表示できるキャラクタには32,000という限界があります。capture~が何をストアするかを厳密にコントロールするために、様々な引数やメッセージが用意されています。詳細は”Objects”セクションの記述を参照して下さい。

まとめ

capture~オブジェクトは、シグナルの短い抜粋をストアしてテキストとして表示します。meter~オブジェクトは、周期的にシグナルのピーク値を表示し、そのピーク値をfloatとしてアウトレットから送り出します。snapshot~オブジェクトは、シグナルの現在の値を報告するためにfloatの値を送り出します。snapshot~はbangを受け取るたびに信号値を報告します。また、右のインレットにゼロでないインターバル時間を受け取って、周期的に信号値を報告することもできます。

number~オブジェクトは、floatナンバーボックス、sig~、snapshot~のすべてを1つに結合したようなものです。snapshot~と同様に、左のインレットで受け取られたシグナルは、floatとして右のアウトレットから送り出されます。sig~と同様に、floatまたはintを左のインレットで受け取ると、シグナル値をセットし、左のアウトレットから送り出します。これらの動作の両方を同じnumber~オブジェクトで同時に行うことができますが、number~が一度に表示できる値は1つだけです。number~がシグナルモニタ・モードの時は、入力信号の値を表示します。number~がシグナルアウトプット・モードの時は、出力シグナルの値を表示します。

number~はまた、line~オブジェクトのようなシグナル・ランプジェネレーターとして機能することもできます。ゼロでない値(ミリ秒で補間時間を表します)を右のインレットで受け取ると、number~がfloatを受け取るたびに、古い値と新しい値の間を線形に補間するようなシグナルを出力します。

これらのオブジェクトは(sig~、peek~、avg~のような他のいくつかのオブジェクトと共に)、MSPとMaxのリンクを構成します。これらは、シグナルをMaxメッセージの数値に変換したり、またその逆を行います。

<-前の章 次の章->