チュートリアル23

分析:オシロスコープ

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

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

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

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

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

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

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

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

<-前の章 次の章->