チュートリアル 24:分析 - オシロスコープ

時間軸上のシグナルのグラフ

シグナルを図として見ることが役に立つ場合があります。scope~ オブジェクトは、受け取ったシグナルをアナログ・オシロスコープ風な時間軸上での振幅のグラフとして表します。

リアルタイムにシグナルのグラフをプロットするとき、scope~ において考慮しなければならない問題が2つあります。まず第1に、時変信号(訳注:時間軸上で変化していく信号)を追っていくためには、シグナルの一部がキャプチャされ、一定の時間(実際に波形を見るために充分な長さ)表示されなければなりません。そのため、グラフは周期的に描かれなければならないので、常に、聞こえているものより僅かに遅れているということです。第2に、(少なくとも、目の眩むような速度でアップデートされるディスプレイを用いない限り)1つ1つのサンプルのプロットを見ることができるほどの十分なピクセルがないため、scope~ は多くのサンプルの代表値として1つのピクセルを使用しなければならないということです。

様々な波形を見るためのパッチ

このチュートリアルでは、実用的なシグナルの表示を実現する方法について説明します。パッチは、いろいろな波形をつくるために4つのコサインオシレータを加算し、scope~ でそれらを表示します。各々のコサイン波の周波数、位相、振幅は独立してセットされていて、オシレータの和としての全体の振幅は、*~ オブジェクトを追加してスケールしています。各々の波形のセッティングはpreset オブジェクトにストアされています。


加法シンセシスは、いろいろな複合音の波形を作るために利用されます

preset オブジェクトの最初のプリセットをクリックして下さい。

オーディオがオンにされると、dspstate~ オブジェクトは真中のアウトレットから現在のサンプリングレートを送信します。この値は、ディスプレイバッファ(表示点がスクリーンで表示される前に保持される場所)のピクセル数で割られ、結果は表示点ごとのシグナルサンプルの数(サンプル数/1ピクセル)になります。この値は、scope~ の左のインレットに送られ、各々の表示ピクセルごとに何個のサンプルを割り当てるかを伝えます。ディスプレイバッファのピクセル数のデフォルト値は128なので、この方法によって、1回の表示はシグナルのちょうど1秒を含むようになります。言い換えると、scope~ は1秒につき1回、たった今通過した1秒を表示しています。scope~ の幅を(グロウハンドルを使って)256ピクセルの広さ(デフォルトの2倍)に広げると、もっと見やすくなります。

次のページでは、オシレータによって作られる様々な波形について説明します。

・1つずつ、いろいろなプリセットをクリックして、scope~ に表示される様々な波形を見て下さい。最初の8つの波形は、1サイクルを見ることができるように1Hzのサブオーディオ周波数になっています。そのため、第9のプリセットが呼び出されるまでシグナルは dac~ に送られません。

プリセット1 1Hzのコサイン波

プリセット2 1Hzのサイン波。(3/4サイクル位相をオフセットされたコサイン波。)

プリセット3 1Hzのコサイン波に2Hzのコサイン波(すなわち1オクターブ)が加算されたもの。

プリセット4 4オクターブ:同じ振幅の1,2,4,8Hzのコサイン波。

プリセット5 帯域を制限された矩形波。4つのオシレータは、適切な周波数と振幅によって矩形波の最初の4つの部分音に相当する4つのサイン波を作り出します。(オシレータの振幅は小数第2桁までで表示されていますが、実際には小数第6桁までの精度でプリセットにストアされています。)

プリセット6 帯域を制限されたノコギリ波。4つのオシレータは、適切な周波数と振幅によってノコギリ波の最初の4つの部分音に相当する4つのサイン波を作り出します。

プリセット7 帯域を制限された三角波。4つのオシレータは、適切な周波数と振幅によって三角波の最初の4つの部分音に相当する4つのサイン波を作り出します。(それ以上の部分音がないので、実際に表示されているものは、あまり「三角形」にはなっていません。)

プリセット8 この波形は、帯域を制限された矩形波と同じ周波数、振幅ですが、4つのコンポーネントは任意に選ばれた位相オフセットを持ちます。これは、コンポーネントの位相の影響が、実際に聞こえるサウンドに対しては通常ごく僅かであっても、波形の見え方に対しては非常に大きなものであることを示しています。

プリセット9 32Hzのサイン波に36Hzのサイン波を加えたもの(scope~の表示では、1/2サイクルの位相のずれがあります)。結果として干渉が起こり、4Hzの周波数差によるうなりが生じます。

プリセット10 200、201、204Hzの結合されたサイン波(1、3、4Hzでうなりを生じています)。

プリセット11 周波数はすべて200Hzとして表示されていますが、実際には200、200.25、200.667、200.8です。これは、異なる6つのサブオーディオ領域のうなりの周波数によって、毎分ごとに正確に繰り返される複雑な干渉パターンを作り出します。ピクセルあたりのサンプル数を非常に低く設定したので、各々の表示はおよそ50ミリ秒を表しています。そのため、およそ10サイクルの波形が表示されているのを見ることができます。

プリセット12 100、200、400Hz(異なる位相オフセットを持ちます)によるオクターブに加え、もう1つのオシレータは401Hzにセットされていて、1Hzのうなりが生じます。

プリセット13 平均率の半音によるクラスター。これらの音程による不協和音は、おそらく純音が使用されるときに最も顕著になります。各々の表示はおよそ100msのサウンドを示しています。

プリセット14 正確にチューニングされたドミナントセブンスコード。これらは共通の基本波の第4、第5、第6、第7の高調波(倍音)であり、その和はコード自身の2オクターブ下である100Hzの周波数を持ちます。

プリセット15 全体としての位相による打ち消し。サイン波は、位相が180度ずれた、自分自身のコピーと加算されています。

プリセット16 すべてのオシレータをオフにします。

まとめ

scope~ オブジェクトは、シグナルのオシロスコープビュー(時間軸上の振幅のグラフ表示)を提供します。scope~ は、グラフを表示する前にサンプルを集める必要があり、ユーザがシグナルを見るために一定の時間を必要とします。そのため、表示は常に表示周期1つ分だけシグナルより遅れています。表示周期(秒単位)は、ディスプレイバッファあたりのピクセル数に1ピクセルあたりのサンプル数を掛け、シグナルのサンプリングレートで割ったものによって決定されます。scope~ のインレットに int(整数)を送ることによって、これらのうちの最初の2つの値をコントロールすることができます。MSPのサンプリングレートは dspstate~ オブジェクトで得ることができます。

参照

dspstate~ 現在の DSP 設定を報告します。
scope~ シグナル・オシロスコープ