(57)【特許請求の範囲】
【請求項１】
音響信号を符号化する方法であって、該音響信号は、ウェーブテーブルシンセサイザによって後で再作成され、
該方法は、
音響信号の時間領域波形をサンプリングすることと、
該時間領域波形が繰り返す期間を決定するために該音響信号サンプルをルーピングすることと、
該ルーピングすることと同時に、該音響信号の非同調スペクトルコンテンツの除去を促進するように時間に伴って選択的に変化する入力ゲインとフィードバックゲインとを有するフィルタを用いて、該音響信号サンプルをフィルタリングすることであって、該入力ゲインにおける時間変化は、該フィードバックゲインにおける時間変化とは逆に関連付けられている、ことと
を包含し、
該フィルタは、可変長遅延ラインを含むくし形フィルタであり、該フィルタリング動作は、
遅延ラインサンプルの大きさをあらかじめ選択することと、
該あらかじめ選択された遅延ラインサンプルの大きさで該フィルタを動作させることと、
該期間の始めにおいて可変長フィードバックゲインを０から選択的に変化させ、該可変長フィードバックゲインを約１に増加させることと
を包含する、方法。
【請求項２】
前記フィルタ遅延ラインサンプルの大きさは、選択される音符の基本振動数の中から選択される期間および所望の音符の基本振動数の整数倍の期間とほぼ等しくなるようにあらかじめ選択される、請求項１に記載の方法。
【請求項３】
前記ルーピングすることは、
複数の音響信号サンプルの振幅をサンプリングすることと、
複数の音響信号サンプルの振幅を分析することと、
該振幅サンプルに基づいて、該複数の音響信号サンプルが該サンプルの基本振動数に対して周期的な波形を示すか、または、該サンプルの基本振動数の期間の整数倍の期間である波形を示すかを決定することと
をさらに包含する、請求項１に記載の方法。
【請求項４】
ウェーブテーブルメモリを符号化する装置であって、請求項１に記載の方法を実行する装置。
【請求項５】
ウェーブテーブルメモリの音響信号を符号化する装置であって、該音響信号は、ウェーブテーブルシンセサイザによって後で再作成され、
該装置は、
音響信号の時間領域波形をサンプリングする信号変換器と、
該信号変換器に結合されている信号分析器であって、該時間領域波形が繰り返す期間を決定するように音響信号サンプルをルーピングする信号分析器と、
該信号分析器に結合されているフィルタであって、該音響信号サンプルをルーピングすることと同時に動作し、該音響信号の非同調スペクトルコンテンツの除去を促進するように時間に伴って選択的に変化する入力ゲインとフィードバックゲインとを有するフィルタを用いて、該音響信号サンプルをフィルタリングし、該入力ゲインにおける時間変化は、該フィードバックゲインにおける時間変化とは逆に関連付けられている、フィルタと
を備え、
該フィルタは、くし形フィルタであり、該装置は、
該期間の始めにおいて可変長フィードバックゲインを０から選択的に変化させ、該可変長フィードバックゲインを約１に増加させる制御器を更に含む、装置。
【請求項６】
音響信号を符号化する期間強制フィルタであって、該音響信号は、ウェーブテーブルにプログラムされ、ウェーブテーブルシンセサイザによって後で再作成され、
該期間強制フィルタは、
入力端子と出力端子とを有する遅延ラインと、
該遅延ラインの該出力端子に結合されている入力端子と、出力端子とを有する可変ゲインフィードバック増幅器であって、時間で変化するフィードバックゲインを有するゲインフィードバック増幅器と、
入力信号源に結合されている第１の入力端子と、該可変ゲインフィードバック増幅器の該出力端子に結合されている第２の入力端子と、該遅延ラインの該入力端子に結合されている出力端子とを有する加算器と、
該入力信号源に結合されている入力端子と該加算器の該入力端子に結合されている出力端子とを有する入力増幅器であって、該フィードバックゲインの時間変化とは時間的に逆に変化する入力ゲインを有する入力増幅器と、
該可変ゲインフィードバック増幅器に結合されている制御ラインであって、該期間の始めにおいて前記ゲインを０から約１に変化させる制御ラインと
を備えた、期間強制フィルタ。
【請求項７】
前記遅延ラインは、可変長遅延ラインである、請求項６に記載のフィルタ。
【請求項８】
前記遅延ラインに結合されている制御ラインであって、選択される音符の基本振動数の期間または選択される音符の基本振動数の整数倍の期間とほぼ等しい大きさに前記可変長遅延ラインをプログラムする制御ラインを更に含む、請求項６に記載のフィルタ。
【請求項９】
前記フィルタは、くし形フィルタである、請求項６に記載のフィルタ。
【請求項１０】
音響信号をコード化する方法であって、該音響信号は、ウェーブテーブルシンセサイザによって後で再作成され、
該方法は、
音響信号の時間領域波形を受け取ることと、
該時間領域波形が繰り返す期間を決定することと、
該決定する動作と同時に、該時間領域波形を周期的形状に強制することと
を包含し、
該強制する動作は、
該音響信号の非同調スペクトルコンテンツの除去が促進されるように時間に伴って選択的に変化する入力ゲインとフィードバックゲインとを有するフィルタを用いて、該時間領域波形をフィルタリングすることをさら包含し、
該入力ゲインにおける時間変化は、該フィードバックゲインにおける時間変化とは逆に関連付けられており、
該フィルタは、可変長遅延ラインを含むくし形フィルタであり、該フィルタリング動作は、
遅延ラインサンプルの大きさをあらかじめ選択することと、
該あらかじめ選択された遅延ラインサンプルの大きさで該フィルタを動作させることと、
該期間の始めにおいて可変長ゲインを０から選択的に変化させ、該可変長ゲインを約１に増加させることと
を包含する、方法。
【請求項１１】
前記フィルタ遅延ラインサンプルの大きさは、選択される音符の基本振動数から選択される期間および所望の音符の該基本振動数の整数倍の期間とほぼ等しくなるようにあらかじめ選択される、請求項１０に記載の方法。
【請求項１２】
前記決定する動作は、
複数の音響信号サンプルの振幅をサンプリングすることと、
複数の音響信号サンプルの振幅を分析することと、
該振幅サンプルに基づいて、該複数の音響信号サンプルが該サンプルの基本振動数に対して周期的である波形を示すか、または、該サンプルの基本振動数の期間の整数倍の期間である波形を示すかを決定することと
を更に包含する、請求項１０に記載の方法。
【請求項１３】
音響信号を符号化する方法であって、該音響信号は、ウェーブテーブルシンセサイザによって後で再作成され、
該方法は、
音響信号波形をサンプリングすることと、
該波形が繰り返す期間を決定するために該音響信号サンプルをルーピングすることと、
該音響信号をルーピングすることと同時に、該音響信号の非同調スペクトルコンテンツの除去を促進するように時間に伴って変化する入力ゲインとフィードバックゲインとを有するフィルタを用いて、該音響信号サンプルをフィルタリングすることであって、該入力ゲインにおける時間変化は、該フィードバックゲインにおける時間変化とは逆に関連付けられている、ことと
を包含し、
該フィルタは、可変長遅延ラインを含むくし形フィルタであり、該フィルタリング動作は、
遅延ラインサンプルの大きさで該フィルタを動作させることと、
該期間の始めにおいて可変長フィードバックゲインを０から変化させ、該可変長フィードバックゲインを約１に増加させることと
を包含する、方法。
【請求項１４】
前記フィルタ遅延ラインサンプルの大きさは、選択される音符の基本振動数の中から選択される期間および所望の音符の基本振動数の整数倍の期間とほぼ等しい、請求項１３に記載の方法。
【請求項１５】
前記ルーピングすることは、
複数の音響信号サンプルの振幅をサンプリングすることと、
複数の音響信号サンプルの振幅を分析することと、
該振幅サンプルに基づいて、該複数の音響信号サンプルが該サンプルの基本振動数に対して周期的な波形を示すか、または、該サンプルの基本振動数の期間の整数倍の期間である波形を示すかを決定することと
をさらに包含する、請求項１３に記載の方法。
【請求項１６】
音響信号を符号化する装置であって、該音響信号は、ウェーブテーブルシンセサイザによって後で再作成され、
該装置は、
音響信号波形をサンプリングする手段と、
該波形が繰り返す期間を決定するために該音響信号サンプルをルーピングする手段と、
該音響信号をルーピングすることと同時に動作可能な手段であって、該音響信号の非同調スペクトルコンテンツの除去を促進するように時間に伴って変化する入力ゲインとフィードバックゲインとを有するフィルタを用いて、該音響信号サンプルをフィルタリングし、該入力ゲインにおける時間変化は、該フィードバックゲインにおける時間変化とは逆に関連付けられている、手段と
を含み、
該フィルタは、可変長遅延ラインを含むくし形フィルタであり、該フィルタリング動作は、
遅延ラインサンプルの大きさで該フィルタを動作させる手段と、
該期間の始めにおいて可変長フィードバックゲインを０から変化させ、該可変長フィードバックゲインを約１に増加させる手段と
を含む、装置。
【請求項１７】
前記フィルタ遅延ラインサンプルの大きさは、選択される音符の基本振動数の中から選択される期間および所望の音符の基本振動数の整数倍の期間とほぼ等しい、請求項１６に記載の装置。
【請求項１８】
前記ルーピングする手段は、
複数の音響信号サンプルの振幅をサンプリングする手段と、
複数の音響信号サンプルの振幅を分析する手段と、
該振幅サンプルに基づいて、該複数の音響信号サンプルが該サンプルの基本振動数に対して周期的な波形を示すか、または、該サンプルの基本振動数の期間の整数倍の期間である波形を示すかを決定する手段と
をさらに含む、請求項１６に記載の装置。
【発明の詳細な説明】
技術分野
本発明は、電子楽器における使用を目的としたウェーブテーブルシンセサイザに関する。より具体的には、本発明はウェーブテーブルメモリに入れるため、おおびウェーブテーブルシンセサイザで使用するための音響サンプルを予め処理する装置および方法に関する。
背景技術
シンセサイザは、電気波形を発生し、かつ、周波数、音色、振幅、および期間を含む音の多様なパラメータをリアルタイムで制御することにより、音を生成する電子楽器である。音は、所望の形状の波形を生成する１個以上の発振器により発生される。
多くの種類のシンセサイザが開発されてきた。ある種のシンセサイザは、ウェーブテーブルシンセサイザである。ウェーブテーブルシンセサイザは、パルスコード変調（ＰＣＭ）形式の音響波形をメモリに格納し、格納された音響波形をメモリから読み出す事によっておよび規定された音響の演奏（performance）に対して音響波形を処理する事によって音響を再作成する。音響波形は典型的に大きく、ウェーブテーブルシンセサイザは一般に、多数の楽器に対する音響符を含む多くの音響の演奏を支持する。従って、ウェーブテーブルシンセサイザを有する一つの問題は、所望の音響のライブラリを格納し生成するために、多量のメモリが必要なことである。この問題は、演奏の進歩的な増進および改善を支持しながら、より小さいサイズであることを命じる電子デバイスの継続的な縮小によって強化されている。
幸運にも、音響波形が非常に反復的であるため、その音響波形の性質はメモリサイズの低減を助ける。記録されたサンプルから音響を正確に再作成しながらメモリを節約するために、この反復性を活用するような様々な方策が開発されている。これらの方策は一般に、波形において反復した構造を確認し、確認された構造を特徴とし、次に格納された波形から特徴とする構造を排除することを含む。
音響波形における重複性の確認および排除する一つの技術はルーピングと呼ばれ、ピッチ音響（pitched sound）に対する全体の波形を保持する代わりに、音響の始めの部分だけが保持される。ルーピングは波形分析を含み、サンプル波形が周期的またはほぼ周期的となる間隔を検出する。ピッチ音響のほとんどは時間的に重複するようになるので、ルーピングは効果的である。ルーピング動作は時折、波形の圧縮および人工のエンベロープの適用と組み合わされる。音響の物理的特性は、時間の進行とともに音響の振幅および周波数が減衰することである。減衰する音響信号のルーピングは、音響信号の振幅を人工的に平坦化することによって促進される。
ウェーブテーブルオーディオ合成を採用する高品質オーディオ再生は、典型的には１メガバイトを越える大量メモリを含み、かつ、通常は２個以上集積回路チップを含むシステムでのみ達成される。かかる高品質ウェーブテーブル合成システムは、コンシューマーエレクトロニクス、コンシューマーマルチメディアコンピュータシステム、ゲームボックス、低価格楽器、およびMIDI音響モジュールの分野ではコスト高である。
必要とされるのは、実質的にメモリサイズが低減され、卓越したオーディオ忠実度を達成した上での低減コストを備えるウェーブテーブルシンセサイザである。ウェーブテーブルメモリのメモリサイズを低減する技術が必要とされる。再生時の音質を保持しながらウェーブテーブル格納量を低減するための、音響波形信号を予め処理する技術が必要とされる。
発明の開示
本発明によると、非周期的波形は、周期的特性に強いられ、可聴な、従って不快な人工音響を導入することなく波形のルーピングを容易にする。非周期的波形は、非調和的な高周波数スペクトル成分のために典型的に非周期的である。やがて、高周波数成分は低周波数成分よりも早く減衰し、波形のルーピングが容易にされる。ルーピング強制処理およびルーピング強制フィルタは、非周期的な高周波数成分を取り除くことを増進することによって非周期的波形のルーピングを容易にする。ルーピング強制フィルタは、やがて変化する周波数選択性を有するコームフィルタを使用して、非周期的な高周波数成分を取り除くことを増進する。
期間強制フィルタおよび動作方法により多くの利点が得られる。基本的利点は、卓越したオーディオ忠実度を達成しながら、サンプリングROMのサイズが実質的に低減される点である。ROMメモリサイズの実質的な低減は、より低いサンプリングレートおよびより小さいデータ経路幅という結果を生じる点で有利である。低減されたROMメモリサイズは、回路全体で構成部品をより小型化し、全回路サイズを縮小するという結果を生じる点で有利である。
【図面の簡単な説明】
新規であると思われる記載の実施態様の特徴は、添付の特許請求の範囲で特に明確にされる。しかし、構造および動作方法の両方に関連する本発明の実施態様は、以下の説明および添付の図面を参照することにより最良に理解され得る
第１Ａ図および第１Ｂ図は、本発明の実施態様による、ウェーブテーブルシンセサイザ装置の実施態様の２つの高レベルブロック図を例示する概略ブロック図である。
第２図は、副帯域音声サンプルをコード化する方法の実施態様を例示するフローチャートである。
第３図は、第２図に例示された方法において使用される好適なサンプル生成低域通過フィルタの周波数応答を示すグラフである。
第４図は、低域通過ルーピング強制フィルタとして使用するためのくし形フィルタの実施態様を例示する概略ブロック回路図である。
第５図は、選択性因子αの典型的な修正を経時的に示すグラフである。
第６図は、第１図に示されるウェーブテーブルシンセサイザ装置のピッチ発生器およびエフェクトプロセッサの多様なRAM構造およびROM構造を有するミュージカルインスツルメントディジタルインターフェイス（MIDI）の相互接続を示す概略ブロック図である。
第７図は、第１図に示されるウェーブテーブルシンセサイザ装置のピッチ発生器を例示する概略ブロック図である。
第８図は、第７図に示されるピッチ発生器において使用される好適な12タップ補間フィルタの周波数応答を例示するグラフである。
第９図は、第７図に示されるピッチ発生器のサンプルグラバの動作を例示するフローチャートである。
第１０図は、第７図に示されるピッチ発生器のファーストインファーストアウト（FIFO）バッファのアーキテクチャを示す概略ブロック図である。
第１１図は、第１図に示されるウェーブテーブルシンセサイザ装置のエフェクトプロセッサの実施態様を例示する概略ブロック図である。
第１２図は、第１１図に示されるエフェクトプロセッサにおいて使用するための線形フィードバックシフトレジスタ（LFSR）の実施態様を示す概略図である。
第１３図は、第１１図に示されるエフェクトプロセッサにおいて使用するための状態スペースフィルタを示す概略回路図である。
第１４図は、ノート信号に適用するための振幅エンベロープ関数を示すグラフである。
第１５図は、チャネルエフェクト状態マシーンを示す概略ブロック図である。
第１６図は、コーラス処理回路の構成要素を例示する概略ブロック図である。
第１７図は、リバーブ処理回路の構成要素を示す概略ブロック図である。
発明の実施態様
第１Ａ図および第１Ｂ図を参照すると、１対の概略ブロック図はウェーブテーブルシンセサイザ装置100の２つの実施態様の高レベルブロック図を例示し、この装置は、メモリからの記憶されたウェーブテーブルデータにアクセスして演奏用の複数の音声の音楽信号を発生する。ウェーブテーブルシンセサイザ装置100は、従来技術のウェーブテーブルシンセサイザと比較して実質的に低減されたメモリサイズを有する。例示の実施態様において、ROMメモリのサイズは、例えば約300キロバイト等の、0.5メガバイトよりも小さい量まで低減され、RAMメモリのサイズはおよそ１キロバイトまで低減されるが、本明細書中に開示される複数のメモリ保存技術を用いて、高品質オーディオ信号を生成する。例示の実施態様において、ウェーブテーブルシンセサイザ装置100は32種の音声を支援する。大半の楽器用の音調（note）は、その各々がウェーブテーブルシンセサイザ装置100の音声に対応するが、２種の成分、すなわち、高周波数サンプルおよび低周波数サンプルに分離される。従って、32種の音声の各々についての２つの周波数成分は64個の独立オペレータとして実現される。オペレータは単一波形データストリームであり、１音声の１周波数成分に対応する。ある場合には、32よりも少ない別々の音声が場合により（occasionally）処理されるように、２つより多い周波数帯域サンプルが使用されて音調を再現する。別な場合、１つの周波数帯域信号が音調を再現するのに十分である。
場合により、オペレータの全部が、２つ以上のオペレータを使用した音調を奏でて、32音声全てが支援されるようにする。この条件を適合させるために、音に最も寄与しなかったものが判定され、新たな「ノートオン」メッセージが必要な場合には、最も寄与しなかった音調が終了される。
複数の独立オペレータの使用は、ウェーブテーブルシンセサイザにおける多層化（layering）技術およびクロスフェード技術の実現をも促進させる。多数の音および音響効果は複数のシンプルな音の組み合わせである。多層化は１度に複数の波形の組み合わせを用いる技術である。音響成分が多重音で用いられる場合、メモリは節約される。クロスフェードは多層化に類似の技術である。経時的に変化する多くの音は、経時的に変化する振幅を有する２個以上の成分音を使用することにより再生される。クロスフェードは、いくつかの音が特定音成分として始まると起こるが、経時的に異なる成分に変化する。
ウェーブテーブルシンセサイザ装置100は、ミュージカルインスツルメントディジタルインターフェイス（MIDI）インタープリタ102、ピッチ発生器104、サンプルリードオンリーメモリ（ROM）106、およびエフェクトプロセッサ108を含む。一般に、MIDIインタープリタ102は入来するMIDIシリアルデータストリームを受け、データストリームを解析し、サンプルROM 106から適用情報を抽出し、適用情報をピッチ発生器104およびエフェクトプロセッサ108に転送する。
第１Ａ図に示される一実施態様において、MIDIシリアルデータストリームはシステムバス122を介してホストプロセッサ120から受信される。典型的ホストプロセッサ120は、PentiumTMプロセッサまたはPentium ProTMプロセッサのようなｘ86プロセッサである。典型的なシステムバス122は、例えば、ISAバスである。
第１Ｂ図に示される第２の実施態様において、MIDIシリアルデータストリームは、ゲームまたはおもちゃ等の装置のキーボード130から受信される。
サンプルROM 106は、パルスコード変調（PCM）波形としてコード化され、かつ、低帯域および高帯域を含む２個のばらばらな周波数帯域に分割される音声音調の形態で、ウェーブテーブル音響情報サンプルを記憶する。音調を２個の周波数帯域に分割することにより、処理されるオペレータの数は２倍になる。しかし、低帯域と高帯域の間の好適に選択された周波数分割を利用して達成されるメモリサイズの実質的低減により、追加オペレータの不利な点は間違いなく相殺される。
音を持続させるために、実質的メモリ低減が達成されるが、それは,高周波数帯域が高周波数帯域信号の１周期サンプルから再構築されるように、高周波数スペクトル内容が正確に選択された周波数分割の境界についてほぼ一定だからである。高周波数成分が除去されると、低周波数帯域がより低いレートでサンプリングされ、低帯域信号の長いスペクトル進化（spectral evolution）を記憶するのに、より小さいメモリが使用される。
打楽器音（percussive sound）については、高周波数成分が急速に減衰しまたは静止状態になるので、高周波数帯域が高いレートでサンプリングされたとしても、実質的メモリ低減は達成される。高周波数成分は除去され、高周波数サンプリング時間より遥かに長いサンプリング期間の間、低周波数帯域はより低いレートでサンプリングされ、静的波形をフィルタ処理して、処理した静的信号成分を波形に加えることによっては容易に復元されないわずかなスペクトル変化を再生する。
サンプルROM 106に記憶されたパルスコード変調（PCM）波形は、信号のスペクトル内容により、サンプルが高周波数帯域成分を表しているのか、それとも、低周波数帯域成分を表しているのかを判定されたとおりに、実質的に可能な限り低いサンプリングレートでサンプリングされる。ある実施態様において、可能な限り低いサンプリングレートでのサンプリングは、サンプルを保持するためのRAM、多様なバッファ、およびFIFOの記憶サイズ、ならびにデータ経路幅を実質的に低減し、それにより、回路サイズを低減する。サンプルは、高周波数帯域成分および低周波数帯域成分を一貫したサンプリングレートに復元するように、処理より以前に実質的に補間される。
MIDIインタープリタ102は31.25キロボーの規格レートでMIDIシリアルデータストリームを受信し、シリアルデータをパラレルフォーマットに変換し、MIDIパラレルデータをMIDIコマンドおよびMIDIデータに構成要素分析する。MIDIインタープリタ102はMIDIコマンドをデータから分離し、MIDIコマンドを翻訳し、ピッチ発生器104およびエフェクトプロセッサ108による使用のための制御情報へとデータをフォーマットし、MIDIインタープリタ102とピッチ発生器104およびエフェクトプロセッサ108の多様なRAM構造およびROM構造との間でデータおよび制御情報を通信する。MIDIインタープリタ102は、MIDI音調数、サンプル数、ピッチチューニング、ピッチ曲げ、およびビブラートデプスを含む、ピッチ発生器104に付与するための制御情報を発生する。MIDIインタープリタ102は、チャネルボリューム、パンレフトおよびパンライト、リバーブデプス、およびコーラスデプスを含む、エフェクトプロセッサ108に付与するための制御情報をも発生する。MIDIインタープリタ102は、音響合成処理についての制御情報の初期化を調整する。
一般に、ピッチ発生器104はオリジナルに記録されたサンプリングレートと同等なレートでサンプルROM 106からサンプルを抽出する。ピッチ発生器104はサンプリングレートを変えるので、ビブラートエフェクトはピッチ発生器104により組み入れられる。ピッチ発生器104はまた、エフェクトプロセッサ108による使用のためのサンプルを組み入れる。
より特定的には、ピッチ発生器104は、ピッチチューニング、ビブラートデプス、およびピッチ曲げエフェクトを考慮に入れて、要求されたMIDI音調数により決定されるレートで、サンプルROM 106から未加工サンプルを読み出す。ピッチ発生器104は、オリジナルサンプリングレートを一定の44.1KHzのレートに補間することによりサンプリングレートを変換し、エフェクトプロセッサ108によって使用するためのサンプルを同期化する。補間されたサンプルは、ピッチ発生器104とエフェクトプロセッサ108との間でバッファ110に記憶される。
一般に、エフェクトプロセッサ108は時変フィルタリング処理、エンベロープ発生、ボリューム（volume）、MIDI特殊パン（pan）、コーラス、およびリバーブのようなエフェクトをデータストリームに追加して、一定レートで動作している間に、データのオペレータおよびチャネル特殊制御を発生する。
エフェクトプロセッサ108は補間されたサンプルを受け、エンベロープ発生およびフィルタリング動作により音響生成品質を向上させながら、ボリューム、パン、コーラス、およびリバーブのようなエフェクトを追加する。
第２図を参照すると、フローチャートは、サンプルエディタにより指示されるように実施される、持続音、打楽器音、およびそれ以外の音を含む音響についての副帯域音声サンプルをコード化する方法の実施態様を例示する。この方法は、第１低域通過フィルタ210工程、第２低域通過フィルタ220工程、高域通過フィルタ230工程、オプションの低域通過ルーピング強制フィルタ240工程、低域通過ルーピング250工程、オプションの高域通過ルーピング強制フィルタ260工程、高域通過ルーピング270工程、成分間引き280工程、および雑多な再構築パラメータ調整290工程を含む複数工程を含む。
第１低域通過フィルタ210工程は上限を高周波数帯域のためのサンプリングレートに設定するために使用され、これにより、音響信号再生の最大限の総合的忠実度を確立する。ウェーブテーブルシンセサイザ装置100は、８ビットPCMデータを支援することにより、最大スペクトル成分からのノイズ性能に対して50dB信号を維持する。高周波数帯域についてのサンプリングレート上限は、第１低域通過フィルタの周波数特性を決定する。
第３図は、好適なサンプル生成低域通過フィルタ（図示せず）の周波数応答を示すグラフである。例示の実施態様において、サンプル発生において使用されるフィルタは2048タップの有限インパルス応答（finite impulse response（FIR））フィルタであり、これは累乗された（raised）余弦ウインドウを正弦関数に適用することにより生成される。例示の具体例では5000Hzの、サンプルエディタにより特定されるカットオフ周波数は、フィルタリングプログラムによりアクセスされる１組の係数を発生する。この具体例では、余弦ウインドウ内部の係数は0.42、-0.5、および+0.08である。
第２の低域通過フィルタ220工程は、音の主要成分としてコード化される低周波数帯域信号を生成する。第２低域通過フィルタ220工程についてのカットオフ周波数は幾分かは任意で選択される。カットオフ周波数のより低い選択値はより少ないサンプルを有する低周波数帯域信号を有利に生成するが、高周波数帯域信号をコード化するという困難さを増大させるという点で不都合である。カットオフ周波数のより高い選択値は高周波数帯域信号をコード化するという困難さを有利に低減するが、節約できるメモリ量はより少ないという点で不都合である。好適な技術は、35dBを越える値で減衰される成分を高周波数帯域信号に置くカットオフ周波数の選択工程を最初に含む。第２低域通過フィルタの出力は、エンベロープ平坦化副工程222における可変ゲインステージを通過させられて、一定振幅を有する信号を生成する。
エンベロープ平坦化副工程222はサンプリングされた波形に人工エンベロープを圧縮および適用することを含む。経時的に減衰する音響は、オリジナルの音の振幅が人工的に平坦化または平滑化されなければ、通常はルーピングされることができる。エンベロープの適用は、最初の減衰が再生において再現される場合はルーピングされている非減衰音により、減衰する音響が近似されることを可能にする。
第２低域通過フィルタ220工程の出力信号は、オリジナルの信号と同じ振幅でダイナミックな範囲の多くを包含する。８ビットPCMフォーマットでコード化されるサンプルについては、量子化ノイズは信号強度減少につれ差し障りのあるものとなる。量子化ノイズに関して高信号強度を維持するためには、信号の減衰が自然処理により生成されて指数関数的減衰に近似させると仮定すれば、エンベロープ平坦化副工程222は減衰する信号を平坦化する。
エンベロープ平坦化副工程222はまず最初に、減衰する信号224のエンベロープを概算する。20ミリ秒ウインドウが審査され、各ウインドウは、そのウインドウにおける最大信号エクスケーションを表すエンベロープ値を指定される。エンベロープ平坦化副工程222は次に、ウインドウの最初の信号に関連して、例えば0.02から1.0の範囲にわたる指数についての値を用いて、真の指数関数的減衰226への最良の近似を探す。最良の指数関数的適合は再構築のために記録される。次いで、エンベロープ平坦化副工程222は逆エンベロープ228を有する音響サンプルを処理して、概ね平坦な信号を構築する。概ね平坦な信号は記録されたエンベロープを用いてオリジナルの波形に近似するように再構築される。
高域通過フィルタ230工程は、第２低域通過フィルタ220工程に相補的であり、同一カットオフ周波数を使用する。信号の高域通過部分は最大信号強度を維持するように増幅される。
ルーピングは、ピッチ処理された音響波形の早期部分のみが記憶されて、全波形の記憶を除去する、ウェーブテブル処理戦略である。大半のピッチ処理された音は一時的に冗長で、ピッチ処理された音の時間ドメイン波形は、ある時間間隔の後に反復する、または概ね反復する。副帯域コード化方法は、低域通過ルーピング強制フィルタ240工程、低域通過ルーピング250工程、オプションの高域通過ルーピング強制フィルタ260工程、および高域通過ルーピング270工程を含む幾つかのルーピング工程を含む。
オプションの低域通過ルーピング強制フィルタ240工程は、音をわずかに変化させることによって周期的にならない音をコード化して、音響信号を周期的になるように強制するのに最も好適に使用される。大半の打楽器音は決して周期的にならない。他の音は周期的になるが、極めて長い時間間隔が経た場合のみである。低域通過ルーピング強制フィルタ240工程は第１低域通過フィルタ210工程、第２低域通過フィルタ220工程、および高域通過フィルタ230工程から生じるサンプル波形に適用される。低域通過ルーピング強制フィルタ240工程は、好適なほぼ周期的な波形を発生するように使用されるが、この波形はループで再現され、可聴で差し障りのある人工物を導入することなく実施される。
非周期的波形は通常は、非調和高周波数スペクトル内容のせいで、非周期的形態を有する。波形のルーピングが重要な期間のルーピング処理により徐々に促進されるように、高周波数成分は低周波数成分よりも急速に減衰する。ルーピング時間は異なる楽器および音響ごとに変わる。様々の波形についてのルーピング手順および作用は、ウェーブテーブル合成の技術で周知である。低域通過ルーピング強制フィルタ240工程は、経時的に変化する選択性を有するくし形（comb）フィルタを使用して、非周期的波形からの非調和スペクトル成分の除去を加速する。一実施態様において、ループ強制処理は手動であるが、ここでは、選択性があまりに急速に増大する場合には、くし形フィルタの動作が好適である。一般的には、フィルタの期間が所望の音調の基本周波数の整数倍であるように選択される場合に、低域通過ルーピング強制フィルタが最善に機能する。差し障りのある人工物を導入することなく波形のルーピング処理を促進する係数が求められる。
第４図を参照すると、概略ブロック回路図は低域通過ルーピング強制フィルタとして使用するためのくし形フィルタ400の実施態様を例示する。ルーピング処理のコンセプトは、信号が反復する期間を検出するための信号のサンプリングおよび分析に関連する。低域通過ルーピング強制フィルタは、信号のサンプリングおよび分析に加えて、低域通過フィルタリングを含む。期間（period）が見つかっているかどうかを判断するのに、様々の規則が適用される。１つの規則は、波形がＤＣすなわちゼロ振幅レベルと交差する２点によりこの期間が限定され、この２点における導関数が均等と見なされる範囲内にあることである。２つ目の規則は、この期間がサンプルの基本周波数の期間に等しいか、基本周波数の期間の整数倍に等しいか、いずれかであるということである。
くし形フィルタ400は可変ゲインを有し、期間強制フィルタとして使用される。くし形フィルタ400は、遅延ライン402、フィードバック増幅器404、入力増幅器406、および加算器408を含む。入力信号は入力増幅器406の入力端子に付与される。遅延ライン402からのフィードバック信号は、フィードバック増幅器404の入力端子に付与される。増幅入力信号および増幅フィードバック信号は、入力増幅器406およびフィードバック増幅器404からそれぞれ、加算器408に付与される。遅延ライン402は、加算器408からの増幅フィードバック信号と増幅入力信号の和を受信する。くし形フィルタ400からの出力信号は加算器408からの出力信号である。フィードバック増幅器404は時変選択性因子αを有する。入力増幅器406は時変選択性因子１−αを有する。
くし形フィルタ400は２個の設計パラメータを有し、すなわち、サンプリング周波数（44.1KHz）でのサンプルにおける遅延ライン402のサイズＮと、時変選択性因子αである。一般的には、Ｎは、フィルタの期間が所望の音調の基本周波数の期間に等しくなるように選択されるか、フィルタの期間が基本周波数の整数の期間になるように選択されるか、いずれかである。選択性因子αの経時的変化は、一連のラインセグメントとしてモデル化される。選択性因子αは第５図に描かれており、通常はゼロで始まり、徐々に増大する。信号の調和内容のレベルは、選択性因子αが増大するにつれて、徐々に減少する。選択性因子αの典型的な最終値は0.9である。
第２図を再び参照すると、低域通過ルーピング250工程は伝統的ウェーブテーブルサンプル発生プロセスと一致する。従来技術のウェーブテーブルサンプル発生方法および伝統的ウェーブテーブルサンプル発生方法は全て、当該技術で公知であるが、低域通過ルーピング250工程において適用可能である。これらの方法は一般に、音響信号をサンプリングする工程、時間ドメイン波形が反復する期間を決定するように好適なサンプリング期間全体でサンプルをルーピングする工程、全期間においてサンプルを保持する工程を採用する。サンプルが実施されると、ループの全期間を通して波形の保持されたサンプルが反復してメモリから読み出され、処理され、音を再現するように実施される。
オプションの高域通過ルーピング強制フィルタ260工程は低域通過ルーピング強制フィルタ240工程に類似するが、音の高周波数成分について実施される。高域通過ルーピング強制フィルタ260工程は、高域通過フィルタ230工程の結果として生じるサンプル波形に適用される。高域通過ルーピング強制フィルタ260工程は、時変選択性を有する第４図に示されたくし形フィルタ400を使用して、非周期的波形からの非調和スペクトル成分の除去を加速する。くし形フィルタ400は、サンプリング周波数でのサンプルにおける遅延ライン402のサイズＮと、高周波数帯域サンプルに好適な、時変選択性因子αとを使用して作動される。
高域通過ルーピング270工程は低域通過ルーピング250工程に類似するが、音の高周波数成分について実施されるという点を例外とする。高域通過ルーピング270は、高域通過ルーピング強制フィルタ260工程の結果として生じるサンプル波形に適用される。
成分間引き280工程はサンプル生成のダウンサンプリング動作である。成分間引き280工程以前の副帯域音声サンプルコード化工程は、例えば44.1KHzのオリジナルの音信号のサンプリングレートで実施されるが、それは、音響信号の反復周期構造の生成は高サンプリングレートで促進されるからである。成分間引き280工程はサンプリングレートを低減してサンプルROM 106におけるメモリを保存し、低減サンプリングレートを有する高周波数帯域波形および低周波数帯域波形を含む２個のルーピングされたPCM波形を発生するが、それ以外ではこれら波形は低域通過ルーピング250工程および高域通過ルーピング270工程において発生されるルーピングされた信号と同一である。
ウェーブテーブルシンセサイザのための波形の調整の目標は、聞き取れないループを波形へ導入することである。波形の不連続性がループが導入されている場所に挿入されない場合、ループは聞き取り不可能であり、波形の第１次導関数（傾き）も連続であり、波形の振幅はほぼ一定であり、ループサイズは音の基本周波数の整数倍と等しい。これらの規定に適う波形は、例えば44.1KHzのオリジナルの音響信号のサンプリングレートで波形が過剰サンプリングされた場合に、最も容易に見つかる。成分間引き280工程は、低域通過ルーピング250工程および高域通過ルーピング270工程のそれぞれで生成された低周波数帯域ループ処理済みサンプルおよび高周波数ループ処理済みサンプルのように響く波形を生成するのに採用されるが、実質的にはサンプルを記憶するためのメモリサイズを低減する。
成分間引き280工程は、間引き比の決定282、間引きされた場合に整数のループサイズを生成するためのピッチシフト284、整数のループ端点を発生するためのゼロ挿入286、間引き288、および仮想サンプリングレートの算出289の副工程を含む。間引き比を決定する工程282は、第８図に示される補間フィルタの演算特性に基づいた間引き比の選択を含む。遷移帯域802の低周波数端縁は0.4fsであり、間引き比を規定する。間引き比は最初のフィルタリング工程により制約され、フィルタリング周波数は、補間フィルタと共に用いられた場合に有効となるように選択される。
ピッチシフトおよび補間は、楽器のトーン品質（音色）がピッチのわずかな変化と共に過激には変化しないので、メモリを保存するために使用される。従って、ピッチシフトおよび補間は、わずかに異なるサンプリングレートで再現された場合に、記録された波形がオリジナルの音にピッチが類似するトーンの代用にされ得るように使用される。大規模なピッチシフトは高ピッチビブラート音のようなオーディオ人工物を生成するけれども、ピッチシフトおよび補間は小規模ピッチシフトについても効果的である。
ピッチシフト284工程は立方補間によりピッチをシフトして、間引きと同時に整数ループサイズを生成する。ピッチシフト284は、具体例のウェーブテーブルシンセサイザ装置100のみが整数であるループサイズを支持するので、例示の実施態様において使用される。ウェーブテーブルシンセサイザの他の実施態様は、ピッチシフト284工程が省かれるように、整数ループサイズに制限されない。一具体例においては、44.1KHzのサンプリングレートでの37個のサンプルの長さを有するループは、４の間引き比で間引きされ、9.25のループ長を生じる。整数以外のループ長は例示のウェーブテーブルシンセサイザ装置100によっては支持されない。それゆえ、ピッチシフト284工程は、36個のサンプルの期間と共に44.1KHzでサンプリングされた新たな波形を生成するように、立方補間により1.027777の因子だけ波形の周波数をピッチシフトするために使用される。
ゼロ挿入286工程は、処理された波形が間引き比により完全には除算不可能である場合に採用される。サンプル波形の最初にゼロが追加されて、間引き比によりループ点を除算可能とするのに十分なだけ波形を移動させる。
間引き288工程は、波形からサンプルを捨てることにより、低減されたサンプリング比の新たな波形を生成する。捨てられたサンプル数は、間引き比282工程を決定する際に決定された間引き比により決定される。例えば、ゼロ挿入286工程の結果として生じる36サンプルの波形は、４個毎のサンプルが維持されて他のサンプルが捨てられるように、４の間引き比により間引きされる。
仮想サンプリングレート289工程の計算は、再現された信号が最初のサンプリングされた信号のピッチを再生するように、仮想サンプリングレートを調節するために使用される。この計算は、ピッチシフト284工程において生じる周波数変動に順応するように行われる。例えば、最初の音調が1191.89Hzの周波数を有していて、1.027777だけ調節されて36のループサイズを生成する場合、この音調の周波数は1225Hzにシフトされる。11025Hzのサンプリングレートを有する再現波形が９個のサンプルのループサイズで奏でられる場合、トーンのピッチは1225Hzである。1191.89Hzの最初の音調周波数を再生するために、再現波形の仮想サンプリング周波数が1.027777だけ下降調整され、その結果、新たな波形が10727Hzの仮想サンプリングレートと９のループサイズを有し、1191.89Hzでトーンを生成する。
雑多な再構築パラメータ調節290工程はオプションで採用されて、必要に応じて１音調ごとについてサンプルを改善し、あるいはメモリを保存する。可変サンプル比ウェーブテーブル合成技術は、持続音と打楽器音の両方に適用されるように、特定音響信号について様々の実現パラメータの注意深い選択を採用して、高度な音響品質を達成する。これらの実現パラメータは、分離周波数、フィルタ周波数、サンプリング期間などを含む。
例えば、可変フィルタが手動で適用された場合は、波形は改良された再現音調を時折生成する。別な具体例では、サンプルにおける１を越える周波数帯域により、または２個以上の楽器によっても単一サンプルが共有される場合は、メモリは保存される。波形共有の特定の例示は汎用MIDI仕様にあり、そこでは、４台のピアノが音響グランドピアノを含んで規定される。４台のピアノ全てについての波形は同一であり、各ピアノは１以上の再構築パラメータの変動により異なる音響を生成する。
別の具体例では、２個のパラメータが時変フィルタの初期フィルタカットオフを制御する。１個のパラメータは１音調の力に基づいてフィルタカットオフを降下させる。音調が穏やかに（softer）奏でられるほど、初期カットオフ周波数は低くなる。第２のパラメータは、音調のピッチシフトの量に基づいて初期カットオフ周波数を調節する。音調が上向きにピッチシフトされるにつれて、カットオフは低下される。下向きのピッチシフトはより強い調和内容を生成する。第２パラメータの調節は、スプリットを横断する平滑な音色遷移を促進する。
第６図を参照すると、ミュージカルインスツルメントディジタルインターフェイス（MIDI）インタープリタ102とピッチ発生器104およびエフェクトプロセッサ108から構成される様々のRAMおよびROM構造体との相互接続が概略ブロック図で示される。MIDIインタープリタ102はMIDIインタープリタROM 602に直接接続され、さらに、MIDIインタープリタRAMエンジン606を経由してMIDIインタープリタRAM 604に接続される。MIDIインタープリタRAMエンジン606は、ファーストインファーストアウト（FIFO）610およびピッチ発生器データエンジン612を介してピッチ発生器RAM 608にデータを供給する。MIDIインタープリタRAMエンジン606およびピッチ発生器データエンジン612は、エフェクト処理を制御するための制御器または状態マシーンであるのが典型的である。MIDIインタープリタRAMエンジン606は、ファーストインファーストアウト（FIFO）616およびエフェクトプロセッサデータエンジン618を介してエフェクトプロセッサRAM 614にデータを供給する。MIDIインタープリタRAMエンジン606は、ファーストインファーストアウト（FIFO）620およびエフェクトプロセッサデータエンジン618を介してエフェクトプロセッサRAM 614からデータを受信する。
MIDIインタープリタROM 602は、「ノートオン」コマンドの供給に応じてMIDIコマンドおよびフォーマットデータを翻訳するためにMIDIインタープリタ102が使用する情報を供給する。MIDIインタープリタROM 602は、楽器情報、音調情報、オペレータ情報、およびボリューム／表現（expression）ルックアップテーブルを含む。
楽器情報は楽器に特有である。MIDIインタープリタROM 602の楽器情報セクションにおける１エントリは、ウェーブテーブルシンセサイザ装置100により支援される各楽器に対して割り当ておよびコード化が行われる。１楽器についての楽器情報に含まれるものは以下の通りである：（1）複数サンプルの総数または最大数、（2）コーラスデプスデフォルト、（3）リバーブデプスデフォルト、（4）パンレフト／ライトデフォルト、および（5）音調情報へのインデックス。複数サンプル番号はMIDIインタープリタ102にその楽器に利用できる複数サンプルの数を知らせる。コーラスデプスデフォルトは、エフェクトプロセッサ108において処理するための楽器ごとに発生されるコーラスのデフォルト量を指定する。リバーブデプスデフォルトは、エフェクトプロセッサ108において処理するための楽器ごとに発生されるリバーブのデフォルト量を指定する。パンレフト／ライトデフォルトは、一般的には打楽器系（パーカッション）楽器について、デフォルトパン位置を指定する。音調へのインデックスは、１楽器ごとの複数サンプルに対応する音調情報の最初のエントリを指摘する。複数サンプル数パラメータは、楽器に関連する第１エントリ後のエントリを規定する。
音調情報は複数サンプル音調ごとに固有の情報を含み、さらに以下のものを含む：（1）最大ピッチ、（2）自然ピッチ、（3）オペレータ数、（4）エンベロープスケーリングフラグ、（5）オペレータROM（OROM）／エフェクトROM（EROM）インデックス、および（6）時変フィルタオペレータパラメータ（FROM）インデックス。最大ピッチは最大MIDIキー値すなわちMIDI「ノートオン」コマンドの一部に対応し、これに対して特定の複数サンプルが使用される。自然ピッチはMIDIキー値であり、これに対して記憶されたサンプルが記録される。音調のピッチシフトは、要求されたMIDIキー値と自然ピッチ値の間の差により決定される。オペレータ数は、組み合わさって音調を形成する個々のオペレータまたはサンプルの数を規定する。エンベロープスケーリング因子は、エンベロープ状態マシーン（図示せず）がピッチの変化を用いて共にエンベロープ時間定数を見積もる。通常は、エンベロープ状態マシーンは、音調の自然ピッチ値からのMIDIキー値の変動に基づいて、エンベロープ時間パラメータを見積もる。OROM／EROMインデックスは、オペレータ数により規定される後続シーケンスのエントリと組み合わさって全音調を包含する音調の第１オペレータROMエントリを指摘する。OROM／EROMインデックスはまた、オペレータごとのエンベロープパラメータを指摘する。FROMインデックスは、音調と関連するフィルタ情報ROM（図示せず）における構造を指摘する。
オペレータ情報は、複数サンプルを発生するために使用される個々のオペレータまたはサンプルに特有である情報を含む。オペレータ情報パラメータは以下のものを含む：（1）サンプルアドレスROMインデックス、（2）自然サンプリングレート、（3）4分の1ピッチシフトフラグ、および（4）ビブラート情報ROMポインタ。サンプルアドレスROMインデックスは、開始アドレス、終了アドレス、およびループカウントを含む記憶サンプルと関連するアドレスを含むサンプルアドレスROM（図示せず）におけるアドレスを指摘する。自然サンプル比は記憶サンプルのオリジナルのサンプリングレートを表す。自然サンプリングレートは「ノートオン」コマンドの受信時のピッチシフト変化を算出するために使用される。4分の1ピッチシフトフラグは、ピッチシフト値が半音でまたは4分の1半音で計算されるかどうかを指定する。ビブラート情報ROMポインタは、オペレータについてのビブラートパラメータを供給するMIDIインタープリタROM 602のビブラート情報へのインデックスである。
ボリューム／表現ルックアップテーブルは、MIDIインタープリタ102についてチャネルボリュームとチャネル表現制御を促進するためのデータを含む。
MIDIインタープリタRAM 604は、相互接続FIFOについての内部オペレータおよび一時記憶装置の状態に関する情報を記憶する。MIDIインタープリタRAM 604は、チャネル情報記憶装置、オペレータ情報記憶装置、ピッチ発生器FIFO記憶装置、およびエフェクトプロセッサFIFO記憶装置を含む。
チャネル情報記憶装置はMIDIインタープリタ102に割り当てられて、特定MIDIチャネルに関わる情報を記憶する。例えば、16チャネルウェーブテーブルシンセサイザ装置100において、チャネル情報記憶装置は16個の素子を１チャネルにつき１個ずつ含む。チャネル情報記憶装置素子は、特定MIDIチャネルに楽器を指定するチャネル楽器指定、MIDIチャネル圧コマンドにより指示された通りにエンベロープ発生器により音調に追加されるトレモロの量を変化させるためのチャネル圧値、MIDIピッチ曲げ変更コマンドにより指示された通りに位相デルタ算出期間中にピッチ発生器104により使用するためのピッチ曲げ値、および許容されたピッチ曲げ値の範囲の境界を規定するピッチ曲げ感度を含むパラメータを記憶する。チャネル情報記憶素子はまた、ピッチ発生器104の位相デルタ算出において音調を同調するための精の同調値および粗の同調値、パン制御器変更コマンドにより指示された通りにエフェクトプロセッサ108のパン発生器により使用するためのパン値、およびビブラートの量を制御してチャネルで誘導する際にピッチ発生器104により使用するための変調値を含むパラメータを記憶する。チャネル情報記憶素子はまた、チャネルボリューム制御器変更コマンドにより指示された通りにエフェクトプロセッサ108のボリューム発生器においてボリュームを設定するためのチャネルボリューム値、およびチャネル表現制御器変更コマンドに応答してチャネルのボリュームを制御するためのチャネル表現値を含むパラメータを記憶する。
オペレータ情報記憶装置はMIDIインタープリタ102に割り当てされて、オペレータに関わる情報を記憶する。オペレータ情報記憶素子は、オペレータに対する楽器の現在の指定を規定する楽器指定、「ノートオン」コマンドの受信と同時に新たな音調に指定するのにオペレータが利用できるかどうかを示す使用中オペレータ指定、および特定の音調−オペレータ指定について「ノートオフ」コマンドが発生したかどうかを示すオペレータオフフラグを含むパラメータを記憶する。楽器指定はMIDIインタープリタ102により使用され、同一MIDIチャネルで同一楽器から既に奏でられた音調を指定する「ノートオン」コマンドの受信と同時にいずれのオペレータを終結すべきかを決定する。オペレータオフフラグはMIDIインタープリタ102により使用されて、新たな「ノートオン」コマンドが適応され得るようにオペレータの終結が起ころうとしているかどうかを決定する。オペレータ情報記憶素子はまた、MIDIチャネルへのオペレータの指定を示すMIDIチャネルパラメータ、所与の音調と関連する多数のオペレータ、およびオペレータが奏でているチャネルについての「音響持続（sustain）制御器」コマンドの受信を示す持続フラグを含むパラメータを記憶する。持続フラグは、音響持続が解除されるまで、またはオペレータが無振幅状態まで減衰するまでエンベロープの減衰状態にエンベロープ状態マシーンを維持するために使用される。オペレータ情報記憶素子はまた、オペレータが奏でているチャネルについて「ソステヌート制御器」コマンドの受信を示すソステヌートフラグ、音調情報記憶インデックス、およびオペレータ情報記憶インデックスを記憶する。ソステヌートフラグは、「ソステヌートオフ」コマンドが受信されるまで既存の活性オペレータが「ノートオフ」コマンドにより終結されるべきでないことを示す。音調情報記憶インデックスは指定された音調情報について音調記憶装置を指摘する。オペレータ情報記憶インデックスは指定されたオペレータ情報についてオペレータ記憶装置を指摘する。
MIDIインタープリタ102からピッチ発生器104までデータ情報を搬送するためのFIFO 610は、情報を記憶し、かつ、ピッチ発生器104により使用するための完全なメッセージを組み立てるための１個以上の素子を含む一時バッファである。完全なメッセージは、メッセージタイプフィールド、オペレータが割り当てられたかそれともリリースされたかを示す使用中オペレータビット、いずれのオペレータが新たなデータで更新されるべきかを指定するオペレータ数、オペレータのMIDIチャネル指定を示すMIDIチャネル数を含む。有効なメッセージタイプには、オペレータデータのどのような変化にも応答してオペレータ情報を更新するための更新オペレータ情報タイプ、変調ホイールおよびピッチ曲げ値に影響するMIDIコマンドに応答する変調ホイール変更タイプおよびピッチ曲げ変更タイプ、ならびに全サウンドオフメッセージタイプが挙げられる。メッセージはまた、ピッチシフト情報、ビブラート選択インデックス、サンプルグラバ選択インデックス、オペレータごとのオリジナルのサンプリングレートの指定、および変調ホイール変更パラメータを含む。サンプリングレート指定は、サンプルグラバ706（第７図に示される）において新たなビブラート率および位相デルタ値を算出するために使用される。変調ホイール変更は、変調ホイール制御器変更コマンドに応答するサンプルグラバについて位相デルタ値を算出するために使用される。
MIDIインタープリタ102からエフェクトプロセッサ108までデータ情報を搬送するためのFIFO 616は、情報を記憶し、かつ、エフェクトプロセッサ108による使用のために完全なメッセージを組み立てるための１個以上の素子を含む一時バッファである。完全なメッセージは、メッセージタイプフィールド、オペレータが割り当てられているかまたは不活性状態にあるかを示す使用中オペレータビット、エンベロープ状態マシーンがピッチシフトに基づいて所与のオペレータについて時間パラメータを見積もるかどうかを決定するエンベロープスケーリングビット、いずれのオペレータがメッセージを受け取るべき化を指定するオペレータ数、オペレータのMIDIチャネル割り当てを示すMIDIチャネル数、および所与のオペレータを終結させるノートオフコマンドまたは他のコマンドが起こったかどうかを判断するためのオペレータオフフラグを含む。有効メッセージタイプは、チャネルボリューム、パン変更、リバーブデプス変更、コーラスデプス変更、音響持続変更、ソステヌート変更、プログラム変更、ノートオン、ノートオフ、ピッチ更新、全制御器リセット、オペレータスティール、全ノートオフ、および全サウンドオフの各メッセージである。メッセージはまた、エンベロープスケーリングを処理するためのエンベロープ状態マシーンにより使用されるピッチシフト情報、最大振幅値を算出するためにエンベロープ状態マシーンにより使用される新たなオペレータの割り当てをメッセージタイプが要求した場合の「ノートオンベロシティ」、およびメッセージタイプが新たなMIDIパン制御器変更コマンドである場合のパン値を含む。メッセージは、新たなMIDIチャネルボリュームコマンドが受信された場合のチャネルボリューム情報、新たなMIDIコーラスデプスコマンドが受信された場合のコーラスデプス情報、および新たなMIDIリバーブコマンドが受信された場合のリバーブデプス情報を更に含む。メッセージ中の追加情報は、フィルタ状態マシーン（図示せず）により使用するためのフィルタ情報へのインデックスと、エンベロープ状態マシーンにより使用するためのエンベロープ情報へのインデックスを含む。
FIFO 620は、「オペレータスティール」状態を判定するために使用されるレジスタである。各フレームにおいて、エフェクトプロセッサ108は全音響への最小寄与物を判定し、FIFO 620を介してMIDIインタープリタ102に最小寄与物の数を送信する。新たな「ノートオン」コマンドが受信される一方で、全てのオペレータが割り当てられた場合、MIDIインタープリタ102は複数フレームのうちで１個のオペレータまたは複数オペレータを必要に応じてスティールし、新たなノートを割り当てる。MIDIインタープリタ102がオペレータをスティールした場合、メッセージはFIFO 616を介して送られ、エフェクトプロセッサ108に状態を知らせる。
異なる実施態様において、音調のボリューム、オペレータのエンベロープ、他のオペレータのゲインと比較した場合のオペレータの相対的ゲイン、他の楽器または音響全てに関する楽器の音の大きさ、およびオペレータの表現を含む１個以上のパラメータの分析により、エフェクトプロセッサ108はオペレータの音調への寄与を判定する。表現（expression）は音調のボリュームに匹敵するが、静的な音の大きさに比して、トレモロを含む、音調の動的な振る舞いにより一層関わりがある。一実施態様においては、音調のボリューム、オペレータのエンベロープ、および他のオペレータのゲインと比較した場合のオペレータの相対的ゲインを監視することにより、エフェクトプロセッサ108は音調の寄与を評価する。エフェクトプロセッサ108は、サンプリング周波数における１期間ごとの64個のオペレータの寄与を評価し、MIDIインタープリタ102へ転送するためのFIFO 620への寄与値を書き込む。MIDIインタープリタ102は最小寄与物オペレータを終結し、新たなオペレータを活性状態にする。
図７を参照すると、概略ブロック図は、未加工サンプルがサンプルROM 106から読み出され、処理され、更にエフェクトプロセッサ108に送られるレートを決定するピッチ発生器104を図示する。１実施態様において、出力データ率は44.1KHzの各フレームごとに64個のサンプルで、１オペレータあたり１サンプルである。64個のオペレータについての64個のサンプルが本質的に並列に処理される。各音声音調は一般に２個のオペレータすなわち高周波数帯域オペレータと低周波数帯域オペレータへとコード化され、これらは同時に処理されて、２個のウェーブテーブルエンジンが事実上２個のサンプルを独立して同時に処理するようにする。
ピッチ発生器104は３個の主要計算エンジンすなわち、ビブラート状態マシーン702、サンプルグラバ704、およびサンプリングレート変換器706を含む。ビブラート状態マシーン702およびピッチ発生器データエンジン612は相互接続され、制御情報およびデータを相互に通信する。ビブラートが選択されると、ビブラート状態マシーン702は、未加工サンプルがサンプルROM 106から読み出される前にわずかな量だけピッチ位相を修正する。ビブラート状態マシーン702はまた、ピッチ発生器ROMデータエンジン708を介してピッチ発生器ROM 707からデータを受信する。ピッチ発生器データエンジン612およびピッチ発生器ROMデータエンジン708はデータ記憶装置へのアクセスを制御するための制御器または状態マシーンである。
サンプルグラバ704およびピッチ発生器データエンジン612はデータおよび制御信号を交換するように相互接続される。サンプルグラバ704はサンプルROM 106からの未加工サンプルデータとピッチ発生器ROM 707からのデータを受信する。サンプルグラバ704はFIFO 710を介してサンプリングレート変換器706にデータを通信する。サンプルグラバ704はピッチ発生器RAM 608から現在のサンプルROMアドレスを読み出し、後で論じられる態様でビブラート状態マシーン702により決定される修正された位相デルタを加算し、新たなサンプルが読み出されるべきかどうかを判定する。この判定は位相デルタ加算の結果に従って行われる。位相デルタ加算によりアドレスの整数部分がインクリメントされる場合は、サンプルグラバ704は次のサンプルを読み出し、例えば深さ12のFIFOについて先の11個のサンプルおよび新たなサンプルを保持する、ピッチ発生器FIFO 710の適切なFIFOにサンプルを書き込む。
サンプリングレート変換器706はサンプルROM 106から獲得されたPCM波形データを補間する。記憶されたPCM波形は、サンプルの周波数内容に依存して、低周波数成分を含んでいようと高周波数成分を含んでいようと、可能な限り低いレートでサンプリングされる。通常の線形補間技術は信号を十分に再現し損なう。音声信号の再生を実質的に改善するために、サンプリングレート変換器706は256の比率だけ過剰サンプリングされる12タップの補間フィルタを実装する。第８図は、好適な12タップの補間フィルタの周波数応答を例示するグラフである。
サンプリングレート変換器706はピッチ発生器FIFO 710を介してサンプルグラバ704に接続され、サンプリングレート変換器フィルタROM 712からデータを受信する。サンプリングレート変換器706はサンプリングレート変換器出力データバッファ714およびエフェクトプロセッサデータエンジン618を介してエフェクトプロセッサRAM 614にデータを送る。サンプリングレート変換器706はピッチ発生器FIFO 710の各FIFOを１度に１フレーム（例えば、44.1KHz）ずつ読み出し、ピッチ発生器FIFO 710における12個のサンプルについてのサンプリングレート変換動作を実施して、サンプルを指定されたフレームレート（この例では44.1KHz）に補間する。補間されたサンプルは、エフェクトプロセッサ108による後続処理のために、エフェクトプロセッサRAM 614に記憶される。
ビブラート状態マシーン702は、音調が演奏されている間に、ビブラートまたはピッチ変動エフェクトを音調に選択的に追加する。ミュージシャンは音に豊かさを加えるために、ピッチまたは強度のわずかな半周期的変化をつけることが多い。ピッチのわずかな変更はビブラートと称される。強度のわずかな変更はトレモロと称される。トランペットのような楽器によっては、自然にビブラートを含む。変調ホイール（図示せず）も楽器のビブラートデプスを制御する。２種のビブラートが図示の実施態様において実現される。第１タイプのビブラートは楽器の初期ピッチシフトとして実現される。ビブラートは複数のサイクルにわたるピッチ定着として生じる。ある実現例において、結果的にビブラートを生じるピッチシフト処理は記憶サンプルに記録される。第２タイプのビブラートは、ピッチ発生器ROM 707のビブラートセクションに記憶されるパラメータを使って実現され、これは選択された遅延の後にピッチ変動を発生しながら始まる。誘引されるピッチシフトの量、開始時間、および終了時間はピッチ発生器ROM 707のビブラートセクションに記憶される。ある実施態様において、ビブラートが自然なサンプルピッチに追加される割合を制御する波形は、MIDIインタープリタROM 602におけるビブラート情報内のビブラートルックアップテーブルに記憶される。
サンプルグラバ704は算出位相デルタ値を用いて、サンプルROM 106における現在のアドレスをインクリメントし、新たなサンプルがサンプルROM 106から読み出され、ピッチ発生器FIFO 710に書き込まれるべきかどうかを判定する。図９はサンプルグラバ704の動作を図示するフローチャートである。新たなフレームが始まると（902）、サンプルグラバ704はピッチ発生器RAM 608からサンプルアドレスフラグ（SAF）値904を読み出す。SAF値は、先のフレームアドレスのインクリメントにより、新たなサンプルが読み出されるべきかどうかをサンプルグラバ704に伝える。SAF値がゼロである場合、サンプルグラバ704は第２処理フェーズ940に移行する。SAF値がゼロでない場合には、サンプルグラバ704は、サンプルへのポインタとして現在のアドレスを用いて、サンプルROM 106から次のサンプルを読み出し（906）、ピッチ発生器FIFO 710にサンプルを書き込む。ROM／RAM帯域幅制限により、サンプルグラバ704だけが１オペレータにつき１フレームにつき２個までのサンプルを移動させる。サンプルが移動させられた後は、サンプルアドレスの整数部分がインクリメントされ（908）、ピッチ発生器RAM 608に戻って書き込まれる。
サンプルが移動させられると、サンプルグラバ704はサンプルROM 106におけるアドレスをインクリメントし（910）、必要ならば、次のフレームについてSAFフラグ912をセットする。オペレータについての位相デルタは、ビブラート状態マシーン702が位相デルタに対して何らかの修正を実施した後にピッチ発生器RAM 608から読み出され、現在のサンプルアドレス916に追加される。位相デルタにより少なくとも１整数値だけアドレスがインクリメントされる場合は、SAFは非ゼロ値を含み、更に次のフレームの期間は、新たなサンプルがサンプルROM 106からピッチ発生器FIFO 710に複写される。インクリメントされた整数アドレスはこの時点では記憶されない。サンプルグラバ704は、サンプルをサンプルROM 106からピッチ発生器FIFO 710まで移動させた後の次のフレーム期間に、アドレスの整数部分をインクリメントし、新たな値はピッチ発生器RAM 608に戻って記憶される。
サンプリングレート変換器706はピッチ発生器FIFO 710における各オペレータについてデータを受信し、そのデータに関してフィルタリング動作を実施して、例えば44.1KHzの規定のレートまでオリジナルのサンプリングレートを変換する。各クロックサイクルの間は、サンプリングレート変換器706はピッチ発生器FIFO 710からサンプルを読み出し、サンプリングレート変換器フィルタROM 712からフィルタ係数を読み出し、サンプルをフィルタ係数倍する。乗算結果の積はピッチ発生器FIFO 710から全てのサンプル（例えば、FIFOアドレスで始まる12個のサンプル）について累算される。累算結果の積はサンプリングレート変換器706内の累算器（図示せず）から移動させられ、更に、サンプリングレート変換器706の出力バッファ（図示せず）に移動させられ、累算器はクリアされる。サンプリングレート変換器706は、ピッチ発生器FIFO 710全て（例えば、64個のFIFO）が処理されるまで、この処理を反復する。
実施態様において、フィルタ係数はオペレータ多相値により決定される。サンプリングレート変換器フィルタROM 712は256組の12タップフィルタ係数として編成される。サンプルグラバ704多相は８ビット値であり、オペレータサンプルアドレスの分数部分の最上位８ビットに等しい。オペレータサンプルアドレスはインデックスとして使用され、サンプリングレート変換器フィルタROM 712における256組みの係数から１組の係数を選択する。
ピッチ発生器ROM 707は、サンプルアドレスROM、ビブラートデフォルトパラメータ記憶装置、およびビブラートエンベロープパラメータ記憶装置を含む３個のデータ構造体を含む。サンプルアドレスROMは、特定複数サンプルについての第１未加工サンプルの開始アドレス位置、サンプルグラバ704がいつ終了されるかを判定するために使用される未加工サンプルの終了アドレス、およびサンプルループ処理期間中に終了アドレスから開始アドレスまで逆方向にカウントを行うためのループ減算カウントを各サンプルごとに含むサンプルROM 106に記憶された複数サンプルについてのサンプルアドレスを記憶する。
ビブラートデフォルトパラメータ記憶装置は、MIDIインタープリタRAM 604における各オペレータ情報記憶装置に対応するパラメータを保持する。ビブラートデフォルトパラメータは、ビブラートが初期ピッチシフトとしてまたは自然なビブラートとして実現されるかを指定するモードフラグと、オペレータに加算されるまたはそこから減算されるピッチ変化の量を指定するセントパラメータとを含む。２種のビブラートは、時変周期的振動実現およびピッチランプまたはピッチシフト実現を含めて実現される。ビブラートデフォルトパラメータは、ビブラートが両方のタイプのビブラートについていつ開始されたかを指定する開始時間を含む。ビブラートデフォルトパラメータはまた、時変周期的ビブラート実現についてビブラートがいつ終了されるべきかを指定する終了時間か、ピッチシフトビブラート実現についてピッチが自然なピッチまで上昇させられるべき割合か、いずれかを含む。
ビブラートエンベロープパラメータ記憶装置は、サンプルグラバ704の位相デルタパラメータを修正するビブラート状態マシーン702により使用するためのエンベロープ形状を保持する。
ピッチ発生器RAM 608は、ビブラート状態マシーン702とサンプルグラバ704によりそれぞれ使用するためのビブラート状態マシーン情報および変調値を含む大型ブロックのランダムアクセスメモリである。ビブラート状態マシーン情報は、各オペレータについてサンプルアドレス値をインクリメントするための位相デルタパラメータ、最近の位相デルタパラメータを保持するための前の位相デルタ、およびオペレータに加算するための初期位相デルタを保持して初期ピッチシフトビブラートを実現するための開始位相デルタを含む。ビブラート状態マシーン情報はまた、位相デルタを算出するためのオリジナルのサンプリングレート、自然なビブラート実現のための最大の位相デルタを規定する位相デプス、要求されたキー値を達成するためにピッチシフトの量を示すピッチシフト半音およびピッチシフトセント値を含む。ビブラート状態マシーン情報は、64個のオペレータの各々についてビブラート状態マシーン702の現在の状態を記憶するビブラート状態パラメータ、ビブラートが始まる開始時間を指定する64期間にわたるサンプリング周波数での１カウントのサイクルを記憶するためのビブラートカウント、各フレームについて位相デルタに加算されるべきデルタ値を保持するビブラートデルタパラメータを更に含む。ビブラート状態マシーン情報としては、使用中オペレータフラグ、或る処理がデータを発生している対称のMIDIチャネルを示すMIDIチャネル識別子、およびMIDIインタープリタROM 602のビブラート情報へのインデックスおよびサンプルグラバ情報へのインデックスが挙げられる。
変調値は、MIDIインタープリタ102によりMIDIインタープリタRAM 604のピッチ発生器FIFOに書き込まれるチャネル変調値を記憶する。
サンプリングレート変換器706は、ランダムアクセスメモリRAMすなわちピッチ発生器RAM 608を含み、これはサンプルROM106におけるサンプルをピッチ発生器FIFO 710にアドレス指定するための現在のサンプルアドレスを記憶する。サンプリングレート変換器RAMはまた、各オペレータについてサンプルアドレスの分数部分を保持する多相パラメータを含む。全てのサンプリング周波数期間において、全てのオペレータについて、サンプリングレート変換器706は多相値をサンプルROM 106への整数アドレスに加算し、各フレームについての位相デルタ値を加算し、分数結果を多相記憶装置に記憶する。RAMはまた、サンプルグラバ704により算出されるサンプルアドレスと最初のサンプルアドレス値との間の差を保持するためのサンプル前進（advance）フラグを保持する。後続フレームにおいて、サンプリングレート変換器706はサンプル前進フラグを読み出し、これはサンプルROM 106からピッチ発生器FIFO 710まで移動させられるべきサンプル数を決定する。RAMはまた、ピッチ発生器FIFO 710における最新サンプルの位置をサンプリングレート変換器706に知らせるFIFOアドレスを含む。
図１０を参照すると、ピッチ発生器FIFO 710の構造を概略ブロック図に示す。図示の実施態様では、ピッチ発生器FIFO 710は64個のオペレータのうち各オペレータについて最近のサンプルと先行の11個のサンプルを保持する。ピッチ発生器FIFO 710は64個のバッファ1002および1004として編成され、各バッファは128ビットワードである。サンプリングレート変換器706は、１クロックサイクルあたり１FIFOワードを読み出し、各フレームにおいて768回の読み出しが実施。サンプルグラバ704は各フレーム期間中はピッチ発生器FIFO 710に最大128ワードを書き込む。従って、ピッチ発生器FIFO 710は２組のアドレスデコーダ1006および1008を有し、１組はバッファ1002の上半分のため、１組はバッファ1004の下半分のためのものである。サンプルグラバ704およびサンプリングレート変換器706のバッファアクセスが互いに異相にされるように、サンプルグラバ704およびサンプリングレート変換器706は、いつでもバッファ1002およびバッファ1004のうち、常に互いに異なるバッファにアクセスする。
動作の最初の位相の期間中は、バッファ1002のFIFO 0〜31が32個のオペレータの処理のためにサンプルグラバ704により書き込まれる。また、第１位相の期間中、サンプリングレート変換器706はバッファ1004のうちFIFO 32〜63から読み出しを行う。第２位相の期間中は、サンプルグラバ704はバッファ1004のFIFO 32〜63を更新し、サンプリングレート変換器706はバッファ1002のうちFIFO 0〜31から読み出しを行う。バッファアクセスは、位相に従って入力アドレスを多重化するアドレス多重化装置1010および1012ならびに位相に従ってサンプリングレート変換器706に渡されるべき出力を判定する出力デコーダ1014により制御される。
再び図７を参照すると、サンプリングレート変換器出力データバッファ714は、ピッチ発生器104をエフェクトプロセッサ108に同期させるために使用される記憶装置RAMである。サンプリングレート変換器706は、１フレームあたり64サンプルのレートでサンプリングレート変換器出力データバッファ714にデータを書き込む。エフェクトプロセッサ108は、処理されるべき各値として値を読み出す。エフェクトプロセッサ108およびピッチ発生器104はそれぞれ、同じレートで値の読み出しおよび書き込みを行う。サンプリングレート変換器出力データバッファ714は２個のバッファ（図示せず）を含み、一方はピッチ発生器104によりフレームに書き込まれ、次のフレームの最初で第２のバッファに連結される。第２バッファはエフェクトプロセッサ108により読み出される。この態様で、データは完全なフレームについてエフェクトプロセッサ108およびピッチ発生器104に関連して一定に保持される。
図１１を参照すると、概略ブロック図はエフェクトプロセッサ108の実施態様を図示する。エフェクトプロセッサ108はサンプリングレート変換器708からのサンプルにアクセスし、サンプルから発生された音調に特殊効果を追加する。エフェクトプロセッサ108は、オペレータサンプルを向上させる効果およびMIDIコマンドを実行する効果を含め、オペレータのサンプルに多くの種類のエフェクトを追加する。エフェクトプロセッサ108は２個の主要サブセクションを有するとして描かれており、第１のサブセクション1102は各MIDIチャネル間で共通するエフェクトを処理するためのもので、第２サブセクション1104は個別のMIDIチャネルで発生されるエフェクトを処理するためのものである。第１サブセクション1102エフェクトおよび第２サブセクション1104エフェクトの両方がオペレータに基づいて処理される。第１サブセクション1102および第２サブセクション1104は、エフェクトプロセッサROM1106に保持されたデータを用いてエフェクトを処理する。
第１サブセクション1102は、全てのエフェクトが１フレームあたり64回処理されてフレーム内の各オペレータを扱うように、オペレータに基づいてエフェクトを処理する。各MIDIチャネル間で共通するエフェクトとしては、ランダムノイズ発生、エンベロープ発生、相対ゲイン、およびオペレータ強化のための時変フィルタ処理が挙げられる。第２サブセクション1104は、チャネルボリューム、パンレフトおよびパンライト、コーラス、ならびにリバーブを含む、複数MIDIチャネルで発生されるエフェクトを処理する。第２サブセクション1104はまた、処理についての16個のMIDIチャネルパラメータを用いて、１フレームあたり64回、エフェクトを処理する。
第１サブセクション1102は、ホワイトノイズ発生、時変フィルタ処理、およびエンベロープ発生を含むエフェクトを処理する状態マシーンである。第１サブセクション1102ノイズ発生器は時変フィルタに実装され、可能化されると、音調の演奏期間中はランダムホワイトノイズを発生する。ホワイトノイズは、海辺の音のようなエフェクトを生成するために使用される。一実施態様において、第１サブセクション1102ノイズ発生器は、第１２図に描かれる線形フィードバックシフトレジスタ（LFSR）1200を用いて実現される。線形フィードバックシフトレジスタ（LFSR）1200は複数のカスケード式フリップフロップを含む。12個のカスケード式フリップフロップは、初期値に初期化される12ビットランダム数レジスタ1202を形成する。カスケード式フリップフロップは１サイクルごとに１度、左にシフトされる。線形フィードバックシフトレジスタ（LFSR）1200は高位ビット1204、14ビット中位レジスタ1206、3ビット下位レジスタ1208、第１排他ＯＲ（EXOR）ゲート1210、および第２排他ＯＲ（EXOR）ゲート1212を含む。12ビットランダム数レジスタ1202は、上位ビット1204および中位レジスタ1206の最上位11ビットを含む。第１EXORゲート1210は14ビット中位レジスタ1206の最上位ビットを第１入力端で受け、上位ビット1204を第２入力端で受け、上位ビット1204に転送されるEXOR結果を発生する。第２EXORゲート1212は３ビット下位レジスタ1208の最上位ビットを第１入力端で受け、上位ビット1204を第２入力端で受け、14ビット中位レジスタ1202の最下位ビットに転送されるEXOR結果を発生する。
図１３を参照すると、第１サブセクション1102時変フィルタ処理は、一実施態様においては、状態スペースフィルタを用いて実現される。例示の状態スペースフィルタは、一般に低域通過フィルタとして使用される二次無限入力応答（IIR）フィルタである。時変フィルタは、音調の期間が増大するにつれて、低域通過フィルタのカットオフ周波数を低下させるために実装される。一般に、音調が長く保持されるほど、透明度は一層失われ、というのも、高周波数音調情報がより少ないエネルギーを有して、低周波数内容との比較において急速に散逸するからである。
時変フィルタが有利なのは、減衰する自然音が低周波数よりは高周波数でより急速な減衰を有するからである。ルーピング技術および波形の人工レベル化を利用して生成される減衰音は、経時的に徐々により低い周波数で音響信号をフィルタリングすることにより、より現実的に再現される。ループは、トーン変動が維持される間は、波形のより早期に有利に生成される。
第１サブセクション1102エンベロープ発生器は、オペレータのためのエンベロープを発生する。第１４図は、音調信号に適用するための対数スケールに関して振幅エンベロープ関数1400を描いたグラフである。振幅エンベロープ関数1400は、アタック段1402、初期不自然減衰段1406、自然減衰段1408、およびリリース段1410を含む５段を有する。アタック段1402は、振幅がゼロレベルから最大規定レベルまで急速に増大する、短い期間を有する。アタック段1402に続く保持段1404は、選択された短期間の間、振幅を一定に保持するが、この選択された期間はゼロ期間であってもよい。保持段1404に続く不自然減衰段1406は、サンプルに記録される不自然ゲインを除去するように課される。サンプルは全スケール振幅で記録および記憶される。不自然な減衰段1406は、適切な楽器を演奏するために自然なレベルまで振幅を低減する。不自然な減衰段1406に続く自然な減衰段1408は、振幅エンベロープ関数1400の全段の最長期間を有するのが典型的である。自然な減衰段1408の期間中、音調振幅は実際のミュージカル信号の態様でゆっくりと漸減する。第１サブセクション1102状態マシーンは、「ノートオフ」メッセージが受信されるとリリース段1410に入り、音調を急速に終結させるが、自然な態様で行われる。リリース段1410の期間中は、振幅は現在のレベルからゼロレベルまで急速に低減される。
第１サブセクション1102エンベロープ発生器は音調についての規定されたキーベロシティパラメータを使用して、エンベロープの形態を決定する。より大きなキーベロシティはキーをより強く打ったことを示し、その結果、エンベロープの振幅は増大され、演奏された音調振幅はより大きい。
演奏された音調の振幅は第１サブセクション1102相対ゲイン動作に主として依存する。相対ゲインは計算され、他のオペレータエンベロープ情報と共にエフェクトROM（EROM）メモリに記憶される。相対ゲインパラメータは、楽器の相対ボリューム、１楽器についての音調の相対ボリューム、および組み合わさって音調を形成する他のオペレータに関連するオペレータについての相対ボリュームの組み合わせである。
第１サブセクション1102は、共有相対ゲイン乗算器を用いて、単一状態マシーン内で多くの複数オペレータベースの処理動作を実施する。従って、第１サブセクション1102状態マシーン全体が共通乗算器を時分割する。
オペレータゲインが第１サブセクション1102により計算されると、第２サブセクション1104状態マシーンは個別オペレータ出力信号へのチャネル特殊効果を処理する。チャネル特殊効果としては、チャネルボリューム、レフト／ライトパン、コーラス、およびリバーブが挙げられる。従って、第１５図を参照すると、第２サブセクション1104状態マシーンは、チャネルボリューム状態マシーン1502、パン状態マシーン1504、コーラス状態マシーン1506、コーラスエンジン1508、リバーブ状態マシーン1510、およびリバーブエンジン1512を含む。
チャネルボリューム状態マシーン1502はチャネルボリュームパラメータをまず処理および記憶するが、それは、他の残余のエフェクトが相対ボリュームパラメータを用いて並列に計算されるからである。一実施態様においては、チャネルボリュームは、以下に示す等式に従って、MIDIチャネルボリュームコマンドの線形範囲で相対値による乗算を利用して、単純に計算される。
0004181637.tif 000002
ここでは、デフォルトEXPRESSI0N_valueは127に等しい。
ボリューム決定に続いてチャネルボリューム状態マシーン1502により実施される第１エフェクトは、パン状態マシーン1504を用いたパンエフェクトである。MIDIパンコマンドは左にパンする量を特定し、余りは右にパンする量を特定する。例えば、0ないし127間でのパン範囲では、64の値が中心位置パンを示す。127という値は強いライト（右）パンを示し、0という値は強いレフト（左）パンを示す。図示の実施態様においては、左および右の積算は、累乗を一定に保つように最初の量にアクセスするよりはむしろ、平方根の量を保持するルックアップテーブル値にアクセスすることにより実施される。次の等式により、「イコール−累乗」パンスケーリングについての等式が示される。
0004181637.tif 000003
現実の被乗数は、パン値に基づくエフェクトプロセッサROMパン定数から読み出される。レフトパン値およびライトバン値は計算され、出力累算器に送信される。メロディ楽器チャネルにおいて、受けた値が特定チャネルに関して選択された楽器についてのデフォルト値を置換するように、PAN_valueは絶対的である。打楽器チャネルでは、PAN_valueは個々の打楽器音の各々についてのデフォルト値に相対的である。
エフェクトプロセッサ108はエフェクトプロセッサROM 1106に記憶された複数組のデフォルトパラメータにアクセスしてエフェクトを処理する。エフェクトプロセッサROM 1106は、チャネルボリューム状態マシーン1502、パン状態マシーン1504、コーラス状態マシーン1506、およびリバーブ状態マシーン1510についての共有リードオンリーメモリである。エフェクトプロセッサROM 1106に保持されたデフォルトパラメータとしては、時変フィルタオペレータパラメータ（FROM）、エンベロープ発生器オペレータパラメータ（EROM）、エンベロープスケーリングパラメータ、コーラス定数およびリバーブ定数、パン被乗数定数、トレモロエンベロープ形状定数、およびキーベロシティ定数が挙げられる。
時変フィルタオペレータパラメータ（FROM）は、典型的には高周波数情報を追加または除去することにより、より自然なリアリズムを楽器のトーンに追加するために使用される情報を含む。時変フィルタオペレータパラメータ（FROM）は、初期周波数、周波数シフト値、フィルタ減衰、活性開始時間、減衰時間カウント、初期ベロシティフィルタシフトカウント、ピッチシフトフィルタシフトカウント、およびＱ値を含む。初期周波数はフィルタの初期カットオフ周波数を設定する。周波数シフト値およびフィルタ減衰は周波数カットオフ減少の割合を制御する。活性開始時間は、フィルタ状態マシーン（図示せず）が、音調が活性状態になった後でデータのフィルタリングを開始するように待機する期間を決定する。減衰時間カウントは、一定周波数で停止する前にフィルタが継続して減衰する期間を制御する。初期ベロシティフィルタシフトカウント（IVFSC）は音調の初期ベロシティに基づいてフィルタカットオフ周波数が調節される量を制御する。一実施態様においては、初期ベロシティフィルタシフトカウント（IVFSC）は、次の等式に従って、初期カットオフ周波数を調節する。
0004181637.tif 000004
ピッチシフトフィルタシフトカウント（PSFSC）は、音調の初期ピッチシフトに基づいてフィルタカットオフ周波数が調節される量を制御する。一実施態様において、ピッチシフトフィルタシフトカウント（PSFSC）は、次の等式に従って、初期カットオフ周波数を調節する。
0004181637.tif 000005
Ｑシフトパラメータはフィルタカットオフの鋭さを決定し、最終出力信号を計算する前に高域通過因子をシフトするために、フィルタ計算の際に使用される。
エンベロープ発生器オペレータパラメータ（EROM）は、各オペレータがその段についてのエンベロープおよび振幅デルタの各状態に留まる時間長を規定する。エンベロープ発生器オペレータパラメータ（EROM）としては、アタックタイプ、アタックデルタ、時間保持、トレモロデプス、不自然減衰デルタ、不自然減衰時間カウント、自然減衰デルタ、リリースデルタ、オペレータゲイン、およびノイズゲインが挙げられる。アタックタイプはアタックのタイプを決定する。一実施態様において、アタックタイプは、Ｓ字状／二重双曲線アタック、基本線形傾斜アタック、および逆指数関数的アタックの中から選択される。アタックデルタは、アタックの振幅が増加するレートを決定する。時間保持は、保持段1404の期間を決定する。トレモロデプスは、エンベロープに追加するように振幅変調の量を決定して、トレモロエフェクトを生成する。不自然減衰デルタは、不自然な減衰段1406の期間中にエンベロープ振幅が低減される量を決定する。不自然減衰時間カウントは、不自然減衰段1406の期間を決定する。自然減衰デルタは、自然減衰段1408の期間中にエンベロープ振幅が低減される量を設定する。リリースデルタは、リリース段1410の期間中のエンベロープ減衰のレートを設定する。オペレータゲインは、他のオペレータと比較して、オペレータについての相対ゲイン値を設定する。オペレータゲインは、最大エンベロープ振幅値を決定するために使用される。ノイズゲインは、オペレータに追加するようにホワイトノイズの量を決定する。
エンベロープスケーリングパラメータとしては、２個のパラメータ、時間因子、および割合因子が挙げられる。時間因子および割合因子は、サンプルがオリジナルのサンプリングの時間からピッチシフトされた量に基づいて、記憶されたEROMパラメータを修正するために使用される。ピッチがシフトダウンされた場合、時間因子がスケーリングされ、レートスケールリングが減衰率を減少させている間に時定数を増大させる。逆に、ピッチがより高くシフトされる場合、時間因子が見積もられ、レートスケーリングが減衰率を増大させる間に時定数を減少させる。
トレモロエンベロープ形状定数は、音調の持続段の期間中にトレモロを発生するように、エンベロープ状態マシーン（図示せず）により使用される。トレモロエンベロープ形状は、トレモロ波形の形状を形成する複数の定数を含む。
キーベロシティ定数は、最大振幅等式の一部として、エンベロープ発生器により使用される。キーベロシティ値は、定数の被乗数を検索するために、エンベロープ発生器ルックアップROMにインデックスを付す。
エフェクトプロセッサRAM 614はエフェクトプロセッサ108により使用されるスクラッチパッドRAMであり、時変フィルタパラメータ、エンベロープ発生器パラメータ、オペレータ制御パラメータ、チャネル制御パラメータ、リバーブバッファ、およびコーラスRAMを含む。時変フィルタパラメータとしては、フィルタ状態、カットオフ周波数、カットオフ周波数シフト値、フィルタ時間カウント、フィルタデルタ、ピッチシフト半音パラメータ、遅延D1、遅延D2、および時変フィルタROMインデックスが挙げられる。フィルタ状態は、各オペレータについてのフィルタ状態マシーンの現在の状態を保持する。カットオフ周波数はフィルタの初期カットオフ周波数である。カットオフ周波数シフト値は、指数関数的遅延の近似に際して使用するための指数である。フィルタ時間カウントは、データを変えるためにフィルタが適用される期間を制御する。フィルタデルタは、指数関数的遅延近似に際して適用されるような、カットオフ周波数の経時的変化である。ピッチシフト半音パラメータは、要求された音調を供給するように最初のサンプルがシフトされるピッチシフトの量である。遅延D1および遅延D2は、無限インパルス応答（IIR）フィルタの第１遅延素子および第２遅延素子を指定する。時変フィルタROMインデックスは、オペレータについての時変フィルタROMへのインデックスである。
エンベロープ発生器パラメータは、データについて振幅乗数を計算し、かつ、エンベロープの各段について時間をカウントするために、エンベロープ発生器状態マシーンを使用する。エンベロープ発生器パラメータRAMは、エンベロープ状態、エンベロープシフト値、エンベロープデルタ、エンベロープ時間カウント、エンベロープ乗数、最大エンベロープ振幅、アタックタイプ、およびエンベロープスケーリングパラメータを含む。エンベロープ状態は、各オペレータについてエンベロープ状態マシーンの現在の状態を指定する。エンベロープシフト値は、エンベロープ振幅計算について現在のシフト値を含む。エンベロープデルタは現在のエンベロープ遅延振幅デルタを含み、エンベロープ状態マシーンが状態を変更した場合に更新される。エンベロープデータは各フレーム時間を読み出し、現在のエンベロープ振幅値を更新する。エンベロープ時間カウントは、0までカウントダウンするカウントダウン値を保持し、ゼロカウントで、エンベロープ状態マシーンに状態を変えさせる。エンベロープ時間カウントは、状態マシーンが状態を変えた時に書き込まれ、各フレームごとに読み出しおよび書き込みが行われる。エンベロープ時間カウントは各フレームについて書き込まれるが、サンプリング周波数の周期は64で除算される。エンベロープフレームカウントはフレームごとに書き込まれるが、フレームごとに修正される訳ではない。エンベロープ乗数は入来するデータを乗算してエンベロープを発生するための振幅値を含む。最大エンベロープ振幅は、新たなオペレータが割り当てられ、かつ、キーベロシティ、アタックタイプ、およびアタックデルタから得られた場合に算出される。新たなオペレータが割り当てられると、アタックタイプはエンベロープROMからエフェクトプロセッサRAM 614に複写される。エンベロープスケーリングフラグは、エンベロープROMからエフェクトプロセッサRAM 614への複写期間中に時間および割合定数が見積もられるかどうかをエンベロープ状態マシーンに知らせる。
オペレータ制御パラメータはエフェクトプロセッサ108により使用され、オペレータを処理するために各オペレータに関連するデータを保持する。オペレータ制御パラメータとしては、使用中オペレータフラグ、オペレータオフフラグ、オペレータオフソステヌートフラグ、MIDIチャネル数、キーオンベロシティ、オペレータゲイン、ノイズゲイン、オペレータ振幅、リバーブデプス、パン値、コーラスゲイン、およびエンベロープ発生器オペレータパラメータ（EROM）インデックスが挙げられる。使用中オペレータフラグは、オペレータが音響を発生しているかどうかを定める。オペレータオフフラグは、オペレータが発生している特定音調についてノートオフメッセージが受信された時に設定される。オペレータオフソステヌートフラグは、オペレータ活性状態になり、かつ、ソステヌートオンコマンドが特定MIDIチャネルについて受信された時に設定される。オペレータオフソステヌートフラグは、ソステヌートオフコマンドが受信されるまで、オペレータに持続状態を保たせる。MIDIチャネル数は、オペレータのMIDIチャネルを含む。キーオンベロシティは、ノートオンコマンドの一部であり、かつ、多様なパラメータを制御するようにエンベロープ状態マシーンにより使用されるベロシティ値である。オペレータゲインはオペレータの相対ゲインであり、ノートオンメッセージが受信され、かつ、オペレータが割り当てられた時に、MIDIインタープリタ102によりエフェクトプロセッサFIFOにより書き込まれる。ノイズゲインはオペレータと関連し、ノートオンメッセージが受信され、かつ、オペレータが割り当てられた時に、MIDIインタープリタ102によりエフェクトプロセッサFIFOに書き込まれる。オペレータ振幅は、オペレータがデータ経路を通して移動させられるとオペレータに適用される減衰である。リバーブデプスは、リバーブ制御器変更が起こると、MIDIインタープリタ102によりピッチ発生器FIFOに書き込まれる。パン値はパン定数にインデックスを付けるために使用され、メッセージがMIDIインタープリタ102からピッチ発生器FIFOに送られると、書き込みが行われる。パン状態マシーン1504はパン値を使用して、左チャネル出力および右チャネル出力に渡すための出力信号についての百分率を判定する。コーラスゲインは、ROMからのコーラス定数をインデックス指定するために使用される。コーラスゲインは、コーラスゲイン変化を起こすメッセージが発生した時に書き込まれ、コーラス状態マシーン1506によりフレームごとに読み出される。エンベロープ発生器オペレータパラメータ（EROM）インデックスはエンベロープ状態マシーンにより使用されて、エンベロープ発生器オペレータパラメータROMにインデックス指定を行う。
チャネル制御パラメータは、エフェクトプロセッサ108により使用するためのMIDIチャネルに特有の情報を供給する。チャネル制御パラメータとしては、チャネルボリューム、保持フラグ、およびソステヌートペダルフラグがある。チャネルボリュームは、チャネルボリューム制御器変更があった時にMIDIインタープリタ102によりピッチ発生器FIFOに書き込まれる。コマンドに関する持続ペダル制御がMIDIインタープリタ102により受信された時に、保持フラグが設定される。包絡状態マシーンは保持フラグを読み出して、ノートオフメッセージが発生した場合にオペレータリリース状態に入れるようにするかどうかを判定する。ソステヌートペダルフラグは、コマンドに関するソステヌートペダル制御がMIDIインタープリタ102により受信された場合に設定される。エンベロープ状態マシーンはソステヌートペダルフラグを読み出し、ノートオフコマンドが発生した時にオペレータリリース状態に入ったかどうかを判定する。オペレータオフソステヌートフラグか設定されたならば、エンベロープ状態マシーンは、フラグがリセットされるまで、オペレータを自然な減衰状態に保持する。
第１５図と組み合わせて第１６図を参照すると、概略ブロック図はコーラス状態マシーン1506の成分を例示する。パンが決定され、コーラスが処理される。まず、コーラスされるべきオペレータサンプルの量が、コーラスデプスパラメータに基づいて各チャネルについて決定される。コーラスデプスパラメータはMIDIコマンドを介して送られ、コーラスアルゴリズムに渡すべき信号の100分率を決定するために乗算器が使用される。コーラス100分率が決定されると、オーディオ信号がコーラスについて処理される。コーラス状態マシーン1506は、左チャネルについてのIIR全帯域通過フィルタ1602および右チャネルについてのIIR全帯域通過フィルタ1604を有する。IIR全帯域フィルタ1602および1604は各自、２個のカスケード式全帯域通過IIRフィルタを含み、その各自が異なる低周波数発振器（LFO）と共に作動する。LFOのカットオフ周波数は、コーラス状態マシーン1506が作動して音響信号の位相を引き延ばすように掃引される。２個のIIR全帯域フィルタ1602および1604は各自、２個のIIRフィルタを含む。４個のIIRフィルタは全て、実質的にいつでも４個のIIRフィルタが異なるカットオフ周波数を有するように、経時的に掃引されるカットオフ周波数を有する。
図１５と組み合わせて図１７を参照して、概略ブロック図は、リバーブ状態マシン1510を示す。リバーブ状態マシン1510はリバーブデプスMIDI制御パラメータを使用して、リバーブプロセッサに送るために、チャネルサンプルの割合を決定する。リバーブ計算は、信号の低域通過フィルタリング、および、フィルタリングされた複数の信号と、インクリメンタルに遅延され、フィルタリングされ、変調された、複数のフィルタ信号のコピーとの合計とを伴う。リバーブ状態マシン1510の出力は、エフェクトプロセッサ108にある他の状態マシンからの出力信号と合計するために、出力アキュムレータ（図示せず）に送られる。
リバーブ状態マシン1510は、デジタルリバーブレータである。デジタルリバーブレータは、複数の遅延を信号経路に挿入し、遅延および非遅延信号を蓄積して多重エコー音響信号を形成することによって、反響効果を発生させる。複数の遅延は、複数のタップを有する遅延ラインメモリ1702によって供給される。例示的な実施形態において、遅延ラインメモリ1702は、ファーストインファーストアウト（FIFO）バッファとして実施される。FIFOバッファは、12ビットまたは14ビットのワード長を有する、805ワードの長さである。しかし、多くの適切なバッファ長およびワード長が、遅延ラインメモリ1702に対して適切である。ある実施形態において、遅延ラインメモリ1702は、モノラルリバーブ決定用に、77、388、644、および779ワードにおいてタップを含む。他の実施形態において、タップは他の適切なワード位置に配置される。いくつかの実施形態において、遅延タップ配置がプログラムされる。77、388、644、および779ワードにおけるタップに対する遅延信号、および遅延ラインメモリ1702の端部における遅延信号は、第１次の低域通過フィルタ1710、1712、1714、1716、および1718にそれぞれ付与される。第１次の低域通過フィルタ1710、1712、1714、1716、および1718からのフィルタリング信号および遅延信号は、乗算器1720、1722、1724、1726、および1728における各々のゲインファクタＧ１、Ｇ２、Ｇ３、Ｇ４、およびＧ５によって、それぞれ乗算される。例示的な実施形態において、ゲインファクタＧ１、Ｇ２、Ｇ３、Ｇ４、およびＧ５は、プログラム可能である。
乗算器1720、1722、1724、および1726からの、遅延され、フィルタリングされ、および多重化された信号は、加算器1730において蓄積され、モノラルリバーブ結果を形成する。乗算器1728の末端出力にある遅延ラインメモリ1702の端部で、フィルタリングされ、遅延された信号は、加算器1732を用いて加算器1730の末端出力でのモノラルリバーブ結果に加算されて、左チャネルリバーブ信号を発生させる。乗算器1728の末端出力にある遅延ラインメモリ1702の端部で、フィルタリングされ、遅延された信号は、加算器1734を用いて加算器1730の末端出力でのモノラルリバーブ結果から減算されて、右チャネルリバーブ信号を発生させる。
加算器1730によって発生されたモノラルリバーブ結果は、モノラルリバーブ結果をフィードバックファクタＦで乗算する乗算器1736に付与される。フィードバックファクタＦは、例示的な実施形態においては1/8であるが、他のフィードバックファクタ値も適切である。乗算器1736によって発生される結果は、加算器1708において、リバーブ状態マシン1510への入力信号に対応する信号に付加され、遅延ラインメモリ1702に入力され、これにより、リバーブ状態マシン1510の内部のフィードバック経路が完成される。
メモリ要件を低減するために、リバーブ状態マシン1510は、4410Hzで動作させられる。加算器1708を介して遅延ラインメモリ1702に適用された入力音響信号は、44.1KHzから4410Hzに間引きされ、リバーブ状態マシン1510を出る際には再び44.1KHzに補間される。エフェクトプロセッサ108における音響信号は、44.1KHzで供給され、第６次低域通過フィルタ1704を使用してフィルタリングされ、且つデシメータ1706を使用して１０のファクタで間引きされる。第６次低域通過フィルタ1704は、３個の第２次IIR低域通過フィルタを使用して音響信号を2000Hzにフィルタリングする。図示した実施形態では、デシメータ1706は、回路面積および動作時間を保存するためにシフトおよび加算動作を使用するが、乗算動作は使用しない簡単な単極フィルタとして実行される第４次IIRフィルタである。リバーブ後の音響信号は、１０倍補間器1740および第６次低域通過フィルタ1742を通って左側のチャネルリバーブ信号を通過させることによって44.1KHzに復元され、44.1KHzの左側チャネルリバーブ信号を発生する。図示した実施形態では、１０倍補間器1740は、デシメータ1706と等しい。右側のチャネルリバーブ信号は、１０倍補間器1744および第６次低域通過フィルタ1746を通過し、44.1KHzの右側チャネルリバーブ信号を発生する。
特定回路の実施形態がリバーブ状態マシン1510について図示されているが、リバーブシミュレータの他の適切な実施形態は可能である。特に、適切なリバーブ状態マシンは、多数のまたは少数の格納素子を有する遅延ラインメモリを含み得、個々の格納素子は大きいまたは小さいビット幅を有し得る。例えば低域通過フィルタを全域通過フィルタで置き換えた、様々な他のフィルタが実行され得る。多数のまたは少数のタップは、遅延ラインメモリに適用され得る。さらに、ゲインファクタＧは、固定されるか、またはプログラム可能かのいずれかであり得、様々な適切なビット幅を有し得る。
リバーブの適用に先立つ音響信号の間引きは、リバーブ状態マシン1510のメモリ要件を実質的に低減するために非常に有利である。例えば図示した実施形態では、遅延ラインメモリ1702は、805個の12ビット格納素子を含み、それによって格納メモリの合計は約1200バイトとなる。間引きおよび補間なしに、約12,000バイトの比較的集積度の低いランダムアクセスメモリがリバーブシミュレーション機能性を実行するために使用され、はるかに多いメモリ量が、低コストの高機能性、または単一チップの高機能性シンセサイザアプリケーションにおいて可能である。
図示したリバーブ状態マシン1510の間引きファクタおよび補間ファクタは、10であるが、様々な実施形態において、リバーブ状態マシンは他の適切なファクタで間引かれ、補間され得る。
本発明は多様な実施態様を参照して記載されているが、これら実施態様は例示的であり、発明の範囲はそれらに限定されないことが理解されるであろう。記載された実施態様の多くの変更、修正、追加、および改良が可能である。例えば、一実施態様は、ペンティアムホストコンピュータおよび特定のマルチメディアプロセッサを含むマルチプロセッサシステムを利用するシステムとして説明されている。別な実施態様は、ゲームボックス、低コスト楽器、MIDI音響モジュールなどの応用例のためのキーボードにより制御されるシステムとして説明されている。音響発生器およびシンセサイザの技術分野で公知の他の構成が別な実施態様で使用されてもかまわない。
【図１ａ】
0004181637.tif 000006
【図１ｂ】
0004181637.tif 000007
【図２】
0004181637.tif 000008
【図３】
0004181637.tif 000009
【図４】
0004181637.tif 000010
【図５】
0004181637.tif 000011
【図６】
0004181637.tif 000012
【図７】
0004181637.tif 000013
【図８】
0004181637.tif 000014
【図９】
0004181637.tif 000015
【図１０】
0004181637.tif 000016
【図１１】
0004181637.tif 000017
【図１２】
0004181637.tif 000018
【図１３】
0004181637.tif 000019
【図１６】
0004181637.tif 000020
【図１４】
0004181637.tif 000021
【図１５】
0004181637.tif 000022
【図１７】
0004181637.tif 000023