デジタルオーディオ処理の方法についての詳細な解説は、このマニュアルの範囲を超えてしまいます。これから述べることは、MSPを有効に使うために必要最小限の理解をしてもらうための簡単な説明です。
どのようにデジタルオーディオ処理が行われるかについての、より完全な解説のためには、Curtis Roads著「The Computer Music Tutorial(1996 MIT Press)」を推薦します。これは、この分野での最も広範囲な参考文献をも含んでいます。
訳注:この「The Computer Music Tutorial」の日本語訳は「コンピュータ音楽ー歴史・テクノロジー・アート」というタイトルで、東京電機大学出版局より出版されています。(コンピュータ音楽ー歴史・テクノロジー・アート:Curtis Roads著;平田 圭二 他共訳:2001.1 東京電機大学出版局:ISBN 4501532106)
私たちが聞いている音は、振動する物体による空気圧の変動(通常の大気圧に比べて僅かな変化ですが)です。(理論的には、水中で聞いている場合には「水圧」です。しかし、コンピュータをプールに入れないで下さい。)
物体が動くと、空気の分子を次に移動させ、それは順に次の空気の分子を移動させていきます。結果として、瞬間的に「前面の圧力の高い部分」は物体から(あなたの耳に向かって)広がっていきます。このため、物体を振動させ(例えば、音叉をたたいた場合)、マイクで近くのいくつかのポイントの気圧を測ったとすると、マイクは「前面の圧力の高い部分」が移動することによる僅かな気圧の上昇を探知するでしょう。音叉の叉はかなり深く一方が固定されているので、元に戻そうとする復元力が働きます。そして復元力は最初の位置を超えてしまうほどのモーメントを与えるので、音叉は反対側の限界まで動き、運動量を失って通常の位置で止まってしまうまで、このように前後に振動を続けます。結果として、マイクロフォンは音叉が前後に振動するのに対応して、圧力が上昇し、続いて下降し、さらにまた上昇し、という繰り返しを探知します。
マイクロフォンによって探知された空気圧の変化をグラフに書くと、それは音叉の前後の動きに対応して上下するサイン波の波形になります。
前後への単振動によって引き起こされる気圧のサイン波状の変化
この圧力の連続した上下は、音の波を作ります。常気圧に対しての空気圧の変化量は、波の振幅(文字通り、その「大きさ」)と呼ばれています。最も一般的には、「振幅ーamplitude」という語は、波によって最も大きく気圧が変化する部分である「ピーク振幅」を指す場合に使われます。
このようなタイプの、単純な前後の運動(振り子の振動でも見られるようなもの)は「単振動」と呼ばれています。物体は、1回の「前ー後」のサイクルを一定の時間で終えるので、これが最もシンプルな振動の形であると考えられます。たとえ、速度が遅くなり、方向が変わったり、他の方向からの速度が加えられたとしても(サイン波曲線に見られるように)1つのサイクルから次サイクルへの平均速度は同じです。したがって、各々の完全な振動サイクルは等しい間隔(時間の周期)で起るので、これらは「周期的」であると言われます。1秒間に発生するサイクル数を振動の周波数と言います。たとえば、音叉が毎秒440回前後に振動する場合、この周波数は440サイクル/秒であり、周期は1サイクルにつき1/440秒になります。
私たちがこのような圧力の変動を「聞く」ためには次のような条件が必要です。
単振動で振動する物体は、振動の共鳴モード(動かされるとき、自然と振動してしまう傾向がある特定の周波数)を持つと言われています。しかし、ほとんどの現実の物体は、いくつかの振動の共鳴モードを持っていて、同時に多くの周波数で振動しています。2つ以上の周波数を持つ音(サイン波以外の音)はすべて「複合音」と呼ばれます。例として、ギターの弦を考えてみましょう。
ギター弦は全体に均一な質量を持っていて、両端を決まった長さ(「ナット」から「ブリッジ」まで)で固定されています。そして、チューニング用の糸巻きでチューニングされる強さによる張力を与えられています。弦は両端で固定されているので、この点では常に静止しています。そして、当然ながら中央部分で最も大きく振動します。
弾かれた弦は基本振動数の共鳴モードで振動します
弦の振動の周波数は、その質量、張力及び長さに依存します。これらの特徴は音全体を通して一定のままなので、弦は1つの基本周波数をもち、それによって振動します。しかし、他の振動モードも可能です。
張られた弦における、他のいくつかの共鳴モード
弦が両端で制止したままでいることによって、可能な振動モードは強制されます。このため、弦の共鳴モードは長さを整数で割ったものに制限されます。
弦は両端が固定されているため、このような共鳴モードは起こりえません
張力及び質量は設定されているので、弦の長さを整数で割ったものは、基本周波数の整数倍になります。
各々の共鳴モードは異なった周波数になります。
事実、弾かれた弦は、同時にこれらすべての可能な共鳴モードで振動し、対応するすべての周波数でエネルギーを生じます。もちろん、振動の各モード(つまり、各周波数)は異なる振幅を持ちます。(ギター弦の例では、弦の長い区間ほどより自由に振動できます。)結果として生じる音は、この、それぞれの振幅をもつすべての周波数の合計になります。
弦の振動が両端の固定具の力によってしだいに減衰していくにつれて、各々の周波数も様々な割合で減衰します。事実、多くのサウンドでは、異なる周波数成分は完全に独立して変化し、お互い異なっています。このような多様性は私たちが音を知覚するうえでの基本的な要素の1つである「音色の違い」と考えられます。そして、単音の音色でさえ、音の流れの中で劇的に変化します。
サウンドに現れる、周波数(およびその振幅の)組み合わせは、音の「スペクトル」(ちょうど、様々な周波数と強さを持つ光が色のスペクトルを構成するように)と呼ばれています。複合音を構成する個々の周波数は、「部分音」(音全体の一部分)と呼ばれています。
ギター弦の例のように、複合音の部分音(構成周波数ー周波数コンポーネント)がすべて、同じ基本周波数の整数倍の周波数を持つ場合、サウンドは「倍音(高調波)スペクトル」を持つと言われます。倍音スペクトルの各成分は「倍音(高調波)の部分音」、もしくは単に、「倍音(高調波)」と呼ばれます。これらの倍音関係にある周波数すべての合計は周期的波形を保ち、基本周波数を持ちます。整数倍の周波数を持つ音は、「調和」して1つの音に溶け合います。
調和関係にある周波数の合計は、基本周波数による周期的波形を保ちます
この融合はJean-Baptiste Joseph Fourier(ジャン・バプティスト・ジョーゼフ・フーリエ)の有名な数学定理に裏付けられています。これは、「周期的な波は、いかに複雑であっても、調和関係にある周波数成分(サイン波)の和によって表すことができ、各々は異なる振幅と位相(「位相」は、時間軸上での1サイクル未満のオフセット)を持つ。」というものです。
調和関係にある周波数は音楽で知覚されるピッチに関係する特有の集合を形作ります。
基本周波数fに基づく倍音(f = 65.4Hz = 低いCの音)
基本周波数が2のべき数(2、4、8、16倍など)を掛けられるごとに、知覚される音楽上のピッチは1オクターブずつ増加します。どのような文化圏でも、このような「オクターブ関係の周波数」間の音程に対する、ある種の「同一性」の感覚を共有していると考えられます。基本周波数に他の整数で掛けたものは新しい音楽上のピッチを生じます。調和的な複合音を聞く場合、実際にはコード(和音)を聞いているのです!。しかし、これまで見てきたように、倍音の結合は基本周波数での反復になり、そのため、それらの周波数は一緒に溶け合って1つのピッチのように知覚されるのです。
いくつかの物体(例えばベルのようなもの)は、より複雑に振動します。それらは、倍音関係の部分音とは異なった多くのモードによっています。1つの基本振動数の整数倍でない周波数が音に含まれる場合、波形は周期的な繰り返しを持ちません。従って、調和的でない部分音の集合は簡単に一緒に溶け合っては知覚されません。容易に個々の部分音を聞き分けることができるでしょう。特に部分音が数多くあり、それらが完全に「不調和」である場合、その音を1つの識別できる基音(基本ピッチ)を持つものとして知覚することができない可能性もあります。
音が非常に多くの様々な周波数を持ち、それらが明らかに数理的な関係を持たないといったようなとても複雑なケースでは、サウンドは「ノイズ」として知覚されます。たくさんの、完全にランダムな周波数と振幅を持つ音は(本質的にすべての周波数が同じ割合で現れますが)、静的で、ホワイトノイズ(すべての周波数の光を含む白色光に例えて)として知られるサウンドになります。
そのため、サウンドが、最もピュアで予測可能な状態(サイン波)からすべてがランダムな状態(ホワイトノイズ)までの連続体の中に位置していると考えることは有益です。ほとんどのサウンドはこの両極端の間に位置します。例えば、トランペットやギターの音のような調和的な音は、この連続体のよりピュアな側に位置し、クラッシュシンバルの音は、よりノイズ寄りに位置します。ティンパニやベルは、十分に基本ピッチを識別できるような倍音のスペクトルをもつような印象があるかも知れませんが、これらは他の倍音関係でない部分音を含んでいます。それ以外のドラムでは、バンドリミテッドノイズ(ランダムな関係にある周波数を含んでいますが、一定の周波数帯の中だけに制限されています)が生じますが、これは、識別できるような基音というようりは、ピッチ領域、あるいは特定されないピッチの感覚を与えます。サウンドを合成する場合、この連続体を頭に入れておくことが重要です。
ほとんど無限の多様性を持つサウンドの、重要なもう一つの要素は、サウンドが持続している間のサウンド全体の振幅の変化です。このマクロ的な全体の振幅変化の形は「振幅エンベロープ」と呼ばれます。サウンドの最初の部分では、「アタック」と呼ばれるピーク振幅への立ち上がりのため、振幅エンベロープは無音から音が聞こえる所まで増加します。エンベロープ、特にアタックは、私たちが音を識別し、認識し、比較する場合の重要なファクターです。私たちは、音波のグラフ表示の読み取り方や、熟達者が楽譜から音をイメージするような方法について、僅かな知識しかありません。しかし、振幅エンベロープは、少なくとも時間軸上での音量全体の変化について示してくれます。
振幅エンベロープは、時間軸場での音の振幅の変化です
客観的に計った音の振幅と、主観的な音の大きさの感じ方との関係は非常に複雑で、多くのファクターによります。それらすべてについて説明することは避けますが、少なくとも、2つの音の相対的な強さの感じ方は、強さの数的な差ではなく、その比率に関係しているという点は指摘できます。例えば、任意のスケールで考えたとき、振幅1のサウンドと振幅0.5のサウンドの強さの関係は、振幅0.25と振幅0.125の関係と同じように感じられます。振幅の差は、最初のケースでは0.5ですが、2番目のケースでは0.125です。しかし、私たちの知覚に関係するのは比率ですから、両方のケースとも1:2になります。
2倍の振幅を持つ音は2倍大きく聞こえるでしょうか?一般的には、答えは「No」です。第一に、主観的な「音の大きさ」は振幅に正比例してはいません。実験した大部分のリスナーが、(非常に主観的に)音が2倍になる感じを持つためには、2倍よりずっと多くの振幅の増加を必要とします。さらに、音の大きさの感覚は、対象のとなる音の周波数によってかなり変化します。私たちは300Hzから7000Hzの範囲の周波数の音には、それ以外のもの比べ非常に敏感です。(これは、話声を聞く重要性や、この周波数範囲にある他の多くの重要な音を聞く必要性によって進化したためかもしれません。)
それにもかかわらず、振幅と音の大きさには相関(たとえ完全に線形でないとしても)があるので、2つの音の振幅の関係を知ることは、確かに有益なことです。以前は、私たちが聞くことのできる最も弱い音は、聞くことのできる最も強い音の振幅の1/1,000,000と言われていました。しかし、0から1,000,000といった広い範囲にわたる振幅について検討するより、振幅を対数軸上で比較することが比較することのほうがより一般的です。
2つの振幅の間の比は、ふつう、「デシベル(dB)」という語で論じられます。デシベルで表される「レベル」は、2つの値の比率による関係を表すものであって、絶対的な測定値ではありません。1つの基準となる振幅をA0とするとき、他の音のデシベルによる総体的振幅は次の式で表されます。
デシベルによるレベル = 20 log10(A/A0)
可能な最大の振幅を基準として、これを1と置くと、振幅0.5の音は1/2の振幅(これは10-0.3に等しくなります)を持つので、このレベルは、
20log10(0.5/1) = 20(-0.3) = -6dB
になります。振幅が半分になると、およそ -6dB の差になります。振幅が倍になると、およそ6dB 増加します。そのため、振幅が他の音より48dB 大きいということは、およそ28(2の8乗 = 256)倍大きいという計算ができます。
ここで説明されたような、サイン波、倍音(高調波)、倍音関係にない複雑な音、そしてノイズについて理論的に理解することは、音の性質を理解するために役にたちます。しかし、大部分の音は、実際にはこれらの理論的な説明によるものが複雑に組み合わさっていて、瞬間ごとに変化しています。例えば、弓で弾かれる弦は、弓が弦を擦るノイズ、弓の圧力とスピードの変化による振幅の変化、弓で弾くポジションによる様々な周波数の強調、左手のビブラートの動きによる基本周波数(そして、そのすべての倍音)などの様々な要素を含んでいます。ドラムの音はノイズのようですが、だんだんと変化します。そのため、倍音を感じさせるするようなスペクトルの一定の領域に力点が置かれ、基音のピッチの印象を与えるかもしれません。実際の音の吟味や新しい音の合成(シンセシス)の体験は、どのようにサウンドが組み立てられているかについての洞察をあたえるでしょう。コンピュータはそのような機会を提供します。
コンピューターがどのように音を表現するかを理解するために、フィルムがどのように動きを表現するかを考えてみましょう。ムービーは、一定の速度(たいていは、毎秒24 コマ)で、素早く連続したスチール写真を撮影することによって作られます。写真が同じ速さで連続して映写されると、連続した動きを見ているような錯角を起こします。しかし、実際には毎秒24の「不連続な」映像を見ているに過ぎません。音のデジタルレコーディングは、同様な原理によって行われます。音波の瞬間的な振幅について、多くの離散的なサンプルを取り、その情報をストアし、後でこれらの振幅値を同じ速さで再現することによって、連続した波の「イリュージョン」を作り出します。
マイクの働きは、空気圧の変化を電圧のアナログ変化に変換する(あるエネルギーの形式を別の形式に変える)ことです。この連続的に変化している電圧は、「サンプル・アンド・ホールド」と言われる処理によって、周期的にサンプルすることができます。等間隔の時間で、その瞬間の電圧がサンプルされ、次のサンプルが取られるまで保持されます。これは、全体の情報量を減少させ、一定の個数の「離散的な電圧の値」にします。
周期的にサンプルされた、時変電圧
アナログ・デジタルコンバータ(ADC)というデバイスは、サンプル・アンド・ホールドから離散的な電圧値を受取り、それぞれの振幅値を数値化します。この電圧を数値に変換するプロセスは、「量子化」と呼ばれています。これらの数値は、コンピュータ上では、ビット列(1または0)として表されます。結果のバイナリ数値は記憶装置(たいていは、デジタルオーディオテープ、ハードディスク、レーザーディスクなど)にストアされます。サウンドをプレイバックする場合は、記憶装置から数値を読み出し、これらの数値をデジタル・アナログコンバータ(DAC)にレコーディング時と同じ速さで送ります。DACはそれぞれの数値を電圧に変換し、その電圧値をアンプに送って、電圧の振幅を増加させます。
コンピュータでサウンドを正確に表現するためには、サウンドごとに非常にたくさんのサンプルが必要になります。それは、動画のフィルムのコマ数よりもたくさん必要です。事実、レコーディングしようとする最も高い周波数の2倍以上のサンプル数が必要になります。(なぜそうなるのかについての説明は、次ベージの「デジタルオーディオの限界」を参照して下さい。)20,000Hzの高さの周波数の音をレコーディングしようとするなら、最低でも1秒に40.000回、サウンドをサンプルする必要があります。コンパクトディスク(そして、「CDクォリティ」コンピュータ・オーディオ)のレコーディング規格では、各オーディオチャンネル毎に、毎秒44,100のサンプルを取ります。1秒毎に取られるサンプルの数は、「サンプリングレート」と言われています。
以上の事は、コンピュータが正確に表すことができるのは、サンプリングレートの半分の周波数までであることを意味します。サンプリングレートの半分を超える周波数は、すべてサンプリング処理が行われる前にフィルタによって除去されなければなりません。これは、ある閾値(スレッショルド)より上の周波数を除去する「ローパスフィルタ」に電気信号を送ることで実現できます。デジタル信号(量子化されたサンプルを表すビット列)を、連続した電気信号に再変換するためにDACに送る場合でも、DACから出力されるサウンドには、サンプル・アンド・ホールド処理によって作り出される偽の高い周波数が含まれています。(これは、上の例で見られるような、離散的なサンプルによって作られる「シャープエッジ」によるものです。)したがって、出力シグナルを送る場合も、同様にローパスフィルタを通す必要があります。
デジタルレコーディング及びプレイバックのプロセスは、次のダイアグラムで示されるような処理の連鎖になります。
デジタルレコーディング、プレイバックの処理
これまでに、レコーディングしようとする最も高い周波数の、最低2倍以上のサンプルを取る必要があるという事を注意してきました。これは、ハロルド・ナイキストによって証明され、ナイキストの定理として知られています。言い換えると、コンピュータはサンプリングレートの半分までの周波数しか正確に表現できないということです。サンプリングレートの半分の値は、多くの場合「ナイキスト周波数」または「ナイキスト・レート」と呼ばれています。
例えば、オーディオシグナルから、1秒あたり16,000サンプルを取る場合、最高8,000Hzまでの周波数をキャプチャすることができます。ナイキスト・レートより高い周波数はすべて、ナイキスト周波数より低く「折り返され」たように知覚されます。そのため、9.000Hzでのエネルギーを含むものをサンプルしようとした場合、サンプル処理によって、周波数は7,000Hzとして歪んで伝えられます。これは、オリジナルのサウンドにはない周波数であるかも知れません。この作用は、「折り返し」または「エリアシング」として知られています。エリアシングの最大の問題は、オリジナルサウンドにはない周波数をデジタル化されたサウンドに追加してしまうということです。そして、オリジナルサウンドの正確なスペクトルを知らない限り、デジタル化されたサウンドの、どの周波数が本当に存在するもので、どの周波数がエリアシングによるものかを区別することはできません。こういった理由から、本質的に、サンプル・アンド・ホールド処理の前には、ローパスフィルタを通してナイキスト周波数より上の周波数をすべて取り除いておかなければなりません。
このエイリアシング現象が発生する理由を理解するために、例として、1秒につき24フレームを撮影するフィルムカメラを考えてみましょう。1秒に12回転を超える速さで回転している車のホイールのムービーを撮影する場合、この回転数はカメラの「サンプリングレート」の1/2を超えています。ホイールは1フレーム過ぎる間に1/2以上回転してしまいます。実際に、フレーム毎に18/24回転しているとすると、毎秒6回転の速さで逆回転しているように見えます。言い換えると、サンプルとサンプルの間に何が起っているかはわからないため、ホイールの270度の回転は、-90度の回転との見分けがつかないということです。2つのケースで得られるサンプルは厳密に同じものです。
カメラにとって、18/24回転と-6/24回転は違いが生じません
オーディオ・サンプリングの場合でも、現象はほとんど同じです。ナイキスト・レートを上回るどのような周波数も、ナイキスト・レートから同じだけ下回った周波数と見分けがつきません。(そして、私たちは正と負の周波数を聞き分けることができません。)周波数は、ナイキスト・レートを上回る度合いによって、ナイキスト・レートから同じだけ下回った周波数に、同じ量で「折り返され」ます。
実証するために次の2つの例を考えてみましょう。以下の実例は22,050Hzのレートでサンプルされた4,000Hzのコサイン波(4,000Hzでのエネルギーだけを持ちます。)のグラフを示しています。22,050HzはCDサンプリングレートの1/2で、可聴域の最上のオクターブには多くのエネルギーを持たないようなサウンドのためには、良好なサンプリングレートです。この例では、レコーディングしようとするサウンドはナイキスト周波数より十分低いので、このサンプリングレートは全く十分なものです。
22,050Hzでサンプルされた4,000Hzのコサイン波
ここで、6,000Hzという不適切なレートでサンプルされた4,000Hzのコサイン波を考えて見ましょう。音波はサンプルごとに1/2サイクル以上進んでしまいます。これらのサンプルの結果は、2,000Hzのコサイン波から得られるものと区別がつきません。
6,000Hzでサンプルされた4,000Hzのコサイン波
ナイキストの定理から学ばれるシンプルな教訓は、「デジタルオーディオではサンプリングレートの1/2より大きい周波数はすべて、正確に表すことはできない」ということです。このような周波数はすべて、サンプリングレートの1/2以下の領域に折り返され、誤って伝えられます。
オーディオシグナルの個々のサンプルは、コンピュータにストアされる数値に帰着します。数値はサンプルされた時点での、シグナルの「瞬間的な振幅」を表しています。数値の範囲は、サンプルしようとするサウンド全体の振幅範囲を適切に表現できるだけの十分な大きさを持っていなければなりません。
コンピュータによって使用できる数値の範囲は、個々の数値をストアするために用いられるビット数によって決まります。1つのビットは2つの可能な値(1または0)の内の1つを表すことができます。2つのビットの組合せでは、4つの可能な値(00,01,10,11)の内の1つを表すことができます。ビット数が増加する毎に、表すことができる可能な数値の範囲は2の累乗で増加していきます。従って、コンピュータの1バイト(8ビット)データは、28=256の可能な数値の内の1つを表すことができます。各々の数値を表すために2バイトを利用した場合、さらに大きな範囲の数値を使用することができ、これは結果として216=65536になります。
コンピュータで数値を表現するために使用するビット数は重要です。それは、シグナルの振幅の測定に使用できる分解能を決定するからです。もし、個々のサンプルの表現に1バイトしか使用しないならば、シグナルの可能な振幅のレンジ全体を256に割らなければならないので、振幅を256の段階でしか表すことができません。
サンプルあたり1バイトを使用すると、個々のサンプルは256の異なる値の1つを持つことしかできません。
例えば、電気シグナルの振幅が -10ボルト〜 +10ボルトのレンジでサンプルされ、サンプルに1バイトを使用する場合、個々の数値は全部の範囲を0.078125Vごとにしか表せません。この間の値を持つサンプル値は同じ値とみなされてしまいます。これは、示されたサンプル個々の数値が、実際の値から最大で0.078125V(振幅レンジ全体の1/256)の誤差を生じる可能性があることを意味します。実際問題として、各サンプルは0から振幅レンジ全体の1/256までのランダムな量での誤差を生じています。平均誤差は、レンジ全体の1/512になります。
これは、「量子化誤差」と呼ばれています。量子化誤差は避けられないものですが、個々の値を表すためにより多くのビットを使うことで、許容できるレベルまで誤差を減らすことができます。サンプル毎に2バイトを使った場合、量子化誤差は全振幅レンジの1/65,536を超えることはなく、平均誤差は1/131,072になります。
各サンプルの量子化誤差は、たいていランダム(時々少し高かったり、低かったりします。)なので、一般に量子化誤差の結果はホワイトノイズとして聞こえます。このノイズは、オリジナルのシグナルには存在しません。これは、量子化の持つ不正確な性質によってデジタル信号に加えられるもので、「量子化ノイズ」と呼ばれています。
振幅レンジ全体と量子化誤差の比は、シグナルー量子化ノイズ比(S/Nq -比(SQNR))と呼ばれています。これは、シグナルの可能な最大振幅と量子化ノイズの平均レベルの比で、通常dBで表されます。
概算で、量子化に使用される各々のビットごとの精度はSQNRに6dBを加えます。従って、8ビットの数値精度で量子化されたサウンドは、最も良好な場合で、およそ48dBのSQNRを持ちます。これは、プレイバックの忠実性が重要でない場合には十分適したものですが、音楽や他の重要な用途では、確かに好ましくはありません。16ビット精度でサンプルされたサウンド("CDクオリティ")は 96dBのSQNRを持ちます。これは、(昔からのテープレコーディングに比べて)全く良い結果になります。
一言で言うと、コンピュータが各々のサンプルをストアする際により多くのビットを用いることで、起こりうるシグナルとノイズの比はより向上するということです。
これまでに、ハイファイ・オーディオのための標準的なサンプリングレートは毎秒44,100サンプルであること、また、良好なS/N比を得るためには、サンプル毎に16ビット(2バイト)を必要とすることを見てきました。この情報から、デジタルオーディオに必要とされるデータ量を計算することができます。 44,100(サンプルー毎秒)×2(バイトーサンプル毎)×2(チャンネルーステレオとして)×60(秒ー毎分)を計算すると、CDクオリティ・オーディオでの毎分のデータ量は10メガバイト以上になります。
このオーディオ品質の場合、高密度フロッピーディスクで8秒弱、100MBのZipカートリッジでも10分弱のサウンドしか入れることができません。デジタルオーディオが必要とするメモリ、および記憶装置が相当な量になることは明らかです。幸い、CDでは1時間以上のステレオサウンドを入れることができます。また、オーディオシグナルのレコーディングや処理には、最低1ギガバイト以上のコンピュータのハードディスクの使用が標準となっています。
入力される電気シグナルが、数値で表される振幅の最大値を超えた場合、デジタルシグナルは、実際のサウンドをクリップしたものになります。
最大振幅を超えたシグナルは、量子化する時にクリップされます
クリップされたサンプルは、たいていの場合、オリジナルと全く違ったように聞こえます。時には、このようなクリッピングは、音色変化として感じられるような、サウンドの僅かな歪み(ディストーション)を引き起こします。しかし、より多くの場合、これは非常に不快なノイズを加えられたように聞こえます。このようなわけで、クリッピングを避けるための予防措置を講じておくことは非常に重要です。電気シグナルの振幅は、ADCが予期する最大値を超えないようにしなければいけません。
DACが予期している最大値を上回るような数値が、コンピュータ上で作り出されてしまう可能性があります。これは、DACから出力されるサウンドをクリップされたデジタルシグナルにしてしまいます。DACによるクリッピングはADCによるものと同じくらい悪い結果を生じるので、DACが扱える数値の範囲を超えるようなデジタルシグナルを生成することがないように充分気を付けなければなりません。
音のデジタル表現は、ちょうど数値のリストの形になるので、理論的にはどんなリストでもサウンドのデジタル表現とみなすことができます。数値のリストが、サウンドとして聞くことのできるものであるためには、数値は可聴域のレート(訳註:およそ20〜20,000Hz)で上下に変動している必要があります。このようなリストであれば、DACに数値を送って電圧に変換することによって聞くことができます。このことは、コンピュータサウンド・シンセシスの基礎となります。コンピュータのプログラムでは、どんな数値でも生成することが可能であり、これをサウンドとして聞くことができます。
面白いサウンドを作り出すような数値を生成する多くの方法が発見されてきました。サウンドを作る1つの方法は、2つの変数を持つ方程式を繰り返し解くようなプログラムを書くことです。各繰り返しの中では、1つの変数にだんだんと増加していく値を入力し、時間の経過を表します。方程式の解としてのもう1つの変数の値は、時間軸上でのそれぞれの瞬間の振幅値として使用されます。プログラムの出力は、時間軸上で上下に変動する振幅値になります。
例えば、次のような方程式でnの値を徐々に増加させると、その解の連続によってサイン波が生成されます。
y = Asin(2πfn/R+φ)
この式で、Aは振幅、fは周波数、nはサンプル数(0,1,2,3,_)Rはサンプリングレート、φは位相を表しています。A,f,φに数値を代入し、n の値を増加させながら繰り返し解を求めると、その解 y の値(出力サンプル)はサイン波状に変化します。
複合音は、サイン波を加えること(加法シンセシスとして知られている方法)によって生成できます。
y = A1 sin(2πf1n/R+φ1) + A2 sin(2πf2n/R+φ2) + …
これは、1つの代数式でサウンドを生成する方法の例です。当然、他にもより複雑なプログラムが可能です。この加法シンセシス、およびウェイブテーブルシンセシス、周波数変調(FM)、ウェイブシェーピングといったいくつかの方法はMSPチュートリアルで紹介されています。
すべてのデジタル形式のサウンドは(コンピュータによって合成されたものか、「実世界」のサウンドから量子化されたものかにかかわらず)、単なる、数値のシリーズ(連続した数値の並び)です。これらに数値に対するどのような演算でも、オーディオ処理の形になります。
例えば、乗算はオーディオアンプと同じものになります。デジタルシグナルの各々の値を2倍するとシグナルの振幅は2倍(6dBの増加)になります。シグナルの各々の値に0と1の間の値を掛けると、振幅は減少します。
加算はオーディオ・ミキシングと同じものになります。2つ以上のデジタルシグナルを与えると、新しいシグナルは各々のシグナルの1番目の数の和、2番目の数の和、3番目の数の和、…、によって生成されます。
エコーは、以前に発生したサンプルを呼び戻し、現在のサンプルに加算することによって生成されます。例えば、1000サンプル前に出力されたシグナルを現在のサンプルと合わせて再び出力することによって可能になります。
y = xn + A yn-1000
実際に、シグナル(オーディオ、あるいは他の任意の種類のもの)の波形に対するこのような演算によってもたらされる効果は、非常に多く、また多種多様です。これらは、デジタル信号処理(DSP)と呼ばれる電気工学のすべての分野を含んでいます。DSPはデジタルフィルタ(ディレイ、乗算、加算、そして他の数値演算の組合せによって、デジタルシグナルを変化させるための公式)の効果に関係しています。
この章では、サウンドという連続する現象をどのように捕らえ、数値のシリーズとして忠実に再現するかについて、また、最終的にビットのストリーム(流れ)としてコンピュータの記憶装置にストア(格納)する方法について述べてきました。サウンドのデジタル表現によってはじめて得ることができる多くの利点があります。それは、以前よりハイファイなレコーディング、数学的な方法による新しいサウンドのシンセシス、オーディオ信号へのデジタル信号処理技術の応用、などです。
MSPは、この可能性の領域を探究するためのツールキットを提供します。MSPは、デジタルオーディオのレコーディング、シンセシス、プロセッシングを、MaxのMIDIコントロールとオプジェクト指向プログラミングに統合します。