(57)【要約】【課題】従来技術のリバーブシミュレータと比較して、揮発性記憶装置、ランダムアクセスメモリ、またはバッファのサイズが実質的に低減されたリバーブシミュレータを含むサウンドシミュレータまたはミュージックシミュレータを提供すること。【解決手段】本発明によるサウンドシミュレータまたはミュージックシミュレータでは、サイズの低減は、リバーブ器に音響信号を付与する前に音響信号を間引きし、次に、リバーブ器により生成された音響信号を補間してサンプリング周波数を復元することにより実施される。バッファサイズの実質的低減により、低コスト、小型化、および単一チップの環境でのリバーブ器の使用が可能になる。【選択図】図１
2008112183.tif 000002
【特許請求の範囲】
【請求項１】
音響信号経路の音響信号にリバーブエフェクトを生成する方法であって、
該方法は、
該音響信号経路において該音響信号を間引くことにより、低減されたサンプリングレートの音響信号を形成することと、
該音響信号経路に複数の遅延を挿入することであって、該複数の遅延が直列に配置されている、ことと、
該複数の遅延において、遅延された音響信号をフィルタリングすることと、
該複数の遅延において、該フィルタリングされた音響信号を変調することにより、該低減されたサンプリングレートの音響信号が比較的遅延され、フィルタリングされ、変調された複数の音響信号を形成することと、
該低減されたサンプリングレートの音響信号が比較的遅延され、フィルタリングされ、変調された複数の音響信号と該音響信号とを累算することにより、低減されたサンプリングレートを有する多重エコー音響信号を形成することと
を包含する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の背景
発明の分野
本発明は、電子楽器における使用を目的としたウエーブテーブルシンセサイザに関する。より具体的には、本発明は間引きおよび補間フィルタの利用により低減メモリサイズを有するディジタルリバーブシミュレータおよびその動作方法に関する。
【背景技術】
【０００２】
関連技術の説明
シンセサイザは、電気波形を発生し、かつ、周波数、音色、振幅、および期間を含む音の多様なパラメータをリアルタイムで制御することにより、音を生成する電子楽器である。音は、所望の形状の波形を生成する１個以上の発振器により発生される。
【０００３】
最良のコンサートホールおよび音楽堂を含む音楽会場での音響特性は、リバーブ特性に大きく依存する。シンセサイザは、一般に特殊効果の異なる形態を利用して、好ましい音を生成する。１つの非常に魅力的な特殊効果として、リバーブシミュレーションがある。
【０００４】
初期の電子リバーブシミュレータは、従来のアナログ回路を使用して設計された。アナログリバーブ器は設計が困難であったため、設計者は、一般的には、ばねおよび特殊な金属プレートのような機械的装置を用いたリバーブに頼っていた。
【０００５】
ディジタル回路の発展は、リバーブシミュレータを製造する際の諸問題を大いに緩和した。ディジタルリバーブ器は高度にフレキシブルで、概ねどのような想像し得る形態のリバーブをも生成する。簡単なディジタルリバーブ器は、遅延音響信号と非遅延音響信号とをミキシングする遅延素子およびミキサを含み、それにより、単一のエコーを発生する。多重エコーは、遅延出力信号の一部を遅延素子の入力端にフィードバックすることにより、一連のエコーを作成しながら、ディジタルリバーブ器でシミュレートされる。１つのエコーについてのリバーブパラメータは、遅延の期間ならびに遅延音響および非遅延音響の相対的振幅を含む。
【０００６】
ディジタルリバーブ器のパラメータの一例はフィードバック因子Ｆであり、これは遅延素子にフィードバックされる信号の強度を示す。フィードバック因子Ｆは０〜１の範囲にある値を有する。フィードバック因子Ｆが大きいほど、連続する可聴なエコーが長くなる。ディジタルリバーブ器がアナログリバーブ器に勝る利点は、遅延素子を多重通過する期間中に信号の忠実度が喪失され、その結果、フィードバック因子Ｆが、単一フィードバックを超過して発振を引き起こす二次的振幅応答ピークが無い状態で可能な限り１に近づくことである。
【０００７】
しかし、完全な遅延ラインを用いたとしても、均等な間隔の一連のエコーはコンサートホールタイプのリバーブを生成することはない。コンサートホールで聴かれるリバーブは、物理的過程でよく起こる、時間に対してエコー振幅が逆指数関数的に減衰する結果として生じる。エコー信号振幅の減少率は通常は、エコー振幅を60-dB 低減するのに要する時間として表現されるが、この場合、60-dB レベルはリバーブ信号が聞き取り不能となるレベルに近似する。典型的なコンサートホールタイプのリバーブ時間は、およそ1.5秒から3.0秒の範囲にわたる。
【０００８】
リバーブプロセスはエコー密度パラメータによっても特徴づけられる。単一遅延ラインから形成されるリバーブ器は、約0.03 エコー数/msec の低い一定エコー密度を受ける。これと対比して、コンサートホールタイプのリバーブは、エコーが全く認識されない程度まで急速に増えるエコー密度を有する。シミュレートされたリバーブの質の測定の１つとして、初期信号とエコー密度が単位msec あたりエコー数１に達する時間との間の間隔がある。良質なリバーブは約100 msec でこのエコー密度に達する。遠位の音響の認知を回避するために、初期信号と最初のエコーとの間に10msec ないし20 msec の遅延が挿入されるべきである。
【０００９】
リバーブ過程は本質的に、遅延時間の逆数に等しい周期性をもって上昇および下降する不均一な振幅応答を有する。コンサートホール品質のリバーブの不均一な振幅応答は、間隔が狭く、不規則で、高さと深さが極端でないピークと谷とを有する。一般に、コンサートホールリバーブは、ピークと谷との間の典型的なエクスカーション(excursion)がおよそ12 dB である、帯域幅のヘルツ単位あたり複数のピークと谷とを有する。共鳴チャンバーが小さい場合は、音は高エコー密度と低エコー密度とを伴って生成されるが、それは、適度な周波数音の多数の波長をスパンとする共鳴モードが反射性表面間の制限された距離により排除されるからである。高共鳴密度と低エコー密度との逆の条件は、フィードバック遅延リバーブ器の冗長な遅延時間により生成されて、典型的なリバーブ音とは相容れない音を作り出す。
【００１０】
コンサートホール品質のリバーブは、選択されたコンサートホールのインパルス応答を記録し、リバーブされる音にトランスバーサルフィルタ(transversal filter)技術を適用することにより、厳密に再生され得る。２秒の典型的リバーブ時間は、集積回路で実現するには明らかに非現実的なサイズである、50Ｋ〜100Ｋのサンプル長のフィルタの使用が必要である。しかし、遅延素子、加算機、および乗算器から作成される多くの回路は、回路が安定しており、発振しない限り、リバーブエコーを生成する。
【００１１】
コンサートホール品質のリバーブシミュレータの実際の集積回路実現例は、等しくない遅延長を有する幾つかの遅延素子を含むのが普通である。例えば、１遅延ラインにおけるタップの配置のような、複数の遅延長の値は、シミュレータの音の質を決定する。高度な快感音は、ほぼ指数関数的分布であるがタップが素数箇所に置かれる分布に従ってタップを置くことにより、生成される。リバーブ遅延ラインのこの構造は、エコー振幅成長の最大レートを生成する。
【００１２】
ウエーブテーブルオーディオ合成のような合成を採用する高品質オーディオ再生は、典型的には１メガバイトを越える大量メモリを含み、かつ、通常は２個以上集積回路チップを含むシステムでのみ達成される。かかる高品質ウエーブテーブル合成システムは、コンシューマーエレクトロニクス、コンシューマーマルチメディアコンピュータシステム、ゲームボックス、低価格楽器、およびMIDI音響モジュールの分野ではコスト高である。
【００１３】
シンセサイザにより生成される音の質を大幅に改良するためのリバーブシミュレーションの実現により、揮発性記憶装置またはバッファ記憶装置のサイズが実質的に増大される。例えば、44.1 kHz で16ビットのディジタルオーディオストリームを発生するシンセサイザは、約32キロバイトの遅延バッファサイズを採用するのが典型的であり、これより遥かに大きい量が低価格の単一チップ環境での実現に適している。
【００１４】
必要とされるのは、実質的にメモリサイズおよび演算負荷が低減され、卓越したオーディオ忠実度を達成した上での低減コストを備えるリバーブシミュレータである。
【００１５】
EP-A-0568789およびUS-A-4731835から、音響信号経路に遅延を挿入して遅延音響信号を形成する工程と、遅延音響信号および音響信号を累算して多重エコー音響信号を形成する工程とを含む、音響信号経路の音響信号にリバーブエフェクトを発生する方法が公知である。
【発明の開示】
【課題を解決するための手段】
【００１６】
本発明は、音響信号経路の音響信号を間引きして、遅延挿入工程および累算工程の前に低サンプリングレート音響信号を形成する工程と、多重エコー音響信号を補間してそのサンプリングレートを間引き工程前の音響信号の初期サンプリングレートに復元する工程とを更に含むことを特徴とする。
【００１７】
本発明によれば、音響シンセサイザまたはミュージックシンセサイザは、従来技術のリバーブシミュレータに比べて実質的に低減されたサイズの揮発性記憶装置、ランダムアクセスメモリ、またはバッファを有するリバーブシミュレータ含み、これは、音響信号をリバーブ器に付与する前に音響信号を間引きし、次に、リバーブ器により発生された音響信号を補間してサンプリング周波数を復元することにより実現される。バッファサイズの実質的低減は、低コスト、低減サイズ、および単一チップ環境でのリバーブ器の使用を可能にする。
【００１８】
本発明の一実施態様によれば、音響信号経路内の音響信号にリバーブエフェクトを発生する方法は、音響信号経路の音響信号を間引きして低減サンプリングレートの音響信号を形成する工程と、音響信号経路に遅延を挿入して低減サンプリングレート音響信号および比較的遅延された低減サンプリングレート音響信号を形成する工程とを含む。この方法は、比較的遅延された音響信号および音響信号を累算(accumulate)して低減サンプリングレートを有する多重エコー音響信号を形成する工程を更に含む。実質的には、多重エコー音響信号は補間され、サンプリングレートを間引き工程前のサンプリングレートに復元する。
【００１９】
本発明の別な実施態様によれば、音響シンセサイザは、音響信号を搬送する音響信号経路と、音響信号経路に接続されて間引き因子により音響信号の実効サンプリングレートを低減する間引き器とを含む。音響シンセサイザは、音響信号経路の間引き器に接続されて音響信号および比較的遅延された音響信号を発生する記憶素子の遅延ラインを更に含む。遅延ラインは、間引き因子に従って低減された複数の記憶素子を有する。音響シンセサイザは、音響信号経路の遅延ラインに接続されて比較的遅延された音響信号および音響信号を累算する累算器を有し、それにより、低減実効サンプリングレートを有する多重エコー音響信号を形成する。音響シンセサイザはまた、累算器に接続されて多重エコー音響信号を補間する補間器を含み、それにより、サンプリングレートを間引き前の音響信号のサンプリングレートに復元する。
【００２０】
上述のリバーブシミュレータおよび動作方法により多くの利点が得られる。基本的利点は、卓越したオーディオ忠実度を達成しながら、揮発性記憶装置、一時的記憶装置、バッファ、またはランダムアクセスメモリのサイズが実質的に低減される点である。有利なことに、実質的に低減された一時的記憶容量は、低コストまたは単一集積回路チップ応用およびその環境下におけるリバーブシミュレーション機能の実現を可能にする。低減されたROMおよびRAMのメモリサイズと低減されたデータ経路幅とは、回路全体で構成部品をより小型化し、全回路サイズを縮小するという結果を生じる点で有利である。ある実施態様においては、より低いサンプリング率が利用されて、有利に電力を保存し、信号忠実度を改善する。
【発明を実施するための最良の形態】
【００２１】
好ましい実施例の説明
図16と組み合わせて図１を参照すると、概略ブロック図はリバーブ状態マシーン1510の構成要素を例示する。リバーブ状態マシーン1510は、チャネルサンプルの100分率を判定してリバーブプロセッサに送信するリバーブデプスMIDI制御パラメータを使用する。リバーブ計算は、信号の低域通過フィルタ処理と、複数のフィルタ処理済み信号をフィルタ処理済み信号の複数のインクリメントして遅延され、フィルタ処理され、変調された複製と加算する処理とを含む。リバーブ状態マシーン1510の出力は、図２Ａおよび図２Ｂに示されるエフェクトプロセッサ108における他の状態マシーンからの出力信号と加算するための出力累算器（図示せず）に送信される。
【００２２】
リバーブ状態マシーン1510は、信号経路に複数の遅延を挿入し、遅延信号と非遅延信号とを累算して多重エコー音響信号を形成することによりリバーブエフェクトを発生するディジタルリバーブ器である。複数の遅延は、複数のタップを有する遅延ラインメモリ1702により供給される。例示の実施態様において、遅延ラインメモリ1702は、14ビットのワード長に関して長さが805ワードのファーストインファーストアウト（FIFO）バッファとして実現される。しかし、多くの好適なバッファ長およびワード長は遅延ラインメモリ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/4であるが、他のフィードバック因子の値も好適である。乗算器1736により発生された結果は、加算器1708におけるリバーブ状態マシーン1510への入力信号に対応する信号に加算され、遅延ラインメモリ1702に入力され、リバーブ状態マシーン1510内でフィードバック経路を完結させる。
【００２５】
メモリ要件を低減するために、リバーブ状態マシーン1510は4410 Hz で動作される。加算器1708を介して遅延ラインメモリ1702に付与される入力音響信号は44.1KHz から4410 Hz に間引きされ、リバーブ状態マシーン1510を出ると同時に補間されて44.1 KHz に戻る。エフェクトプロセッサ108の音響信号は44.1KHz で供給され、六次低域通過フィルタ1704を用いてフィルタ処理され、間引き器1706を用いて10の因数で間引きされる。３つの六次低域通過フィルタ1704は、３つの２次IIR低域通過フィルタを用いて、音響信号を2000Hz までフィルタ処理する。例示の実施態様においては、間引き器1710は、シフト動作および加算動作は用いるが回路領域と動作時間を保存するために乗算動作は用いない、簡単な１極フィルタとして実現される一次IIRフィルタである。リバーブ後の音響信号は44.1KHz に復元されるが、これは、左チャネルリバーブ信号に10倍補間器1740および六次低域通過フィルタ1742を通過させ、44.1 KHz 左チャネルリバーブ信号を発生させることにより行われる。例示の実施態様においては、10倍補間器1740は間引き器1706と同一である。右チャネルリバーブ信号は10倍補間器1744および六次低域通過フィルタ1746を通過させられて、44.1KHz 右チャネルリバーブ信号を発生する。
【００２６】
特定の回路実施態様はリバーブ状態マシーン1510について例示されるが、リバーブシミュレータの他の好適な実施態様が可能である。特に、好適なリバーブ状態マシーンは、より多くのまたはより少ない記憶素子を有する遅延ラインメモリを含むことがあり、個々の記憶素子は、より大きなまたはより小さなビット幅を有することがある。例えば、低域通過フィルタを全帯域通過フィルタと置換したり等、多様な他のフィルタが実現され得る。より多数またはより少数のタップが遅延ラインメモリに付与されることもある。更に、ゲイン因子Ｇは、固定かまたはプログラム可能かいずれかであればよく、多様な好適なビット幅を有し得る。
【００２７】
リバーブの付与の前の音響信号の間引きは大いに有利であり、というのも、リバーブ状態マシーン1510のメモリ要件を実質的に低減するからである。例えば、例示の実施態様において、遅延ラインメモリ1702は805個の12ビット記憶素子を含み、全メモリ記憶がおよそ1200バイトである。間引きおよび補間を採用しなければ、約12,000バイトの比較的低密度ランダムアクセスメモリが使用されてリバーブシミュレーション機能を実現し、低コスト、高機能または単一チップの高機能シンセサイザ応用において、遥かにより大きいメモリ量が可能となる。
【００２８】
例示のリバーブ状態マシーン1510の間引き因子と補間因子とは10の値を有するが、多様な実施態様において、リバーブ状態マシーンは他の好適な因子により間引きおよび補間され得る。
【００２９】
図２Ａおよび図２Ｂを参照すると、１対の概略ブロック図はウエーブテーブルシンセサイザ装置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シリアルデータストリームを受け、データストリームを解析し、サンプルROM106から適用情報を抽出し、適用情報をピッチ発生器104およびエフェクトプロセッサ108に転送する。
【００３３】
図２Ａに示される一実施態様において、MIDIシリアルデータストリームはシステムバス122を介してホストプロセッサ120から受信される。典型的ホストプロセッサ120は、Pentium（登録商標）プロセッサまたはPentium（登録商標） Proプロセッサのようなｘ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はオリジナルに記録されたサンプリングレートと同等なレートでサンプルROM106からサンプルを抽出する。ピッチ発生器104はサンプリングレートを変えるので、ビブラートエフェクトはピッチ発生器104により組み入れられる。ピッチ発生器104はまた、エフェクトプロセッサ108による使用のためのサンプルを組み入れる。
【００４１】
より特定的には、ピッチ発生器104は、ピッチチューニング、ビブラートデプス、およびピッチ曲げエフェクトを考慮に入れて、要求されたMIDI音調数により決定されるレートで、サンプルROM106から未加工サンプルを読み出す。ピッチ発生器104は、オリジナルサンプリングレートを一定の44.1 KHz のレートに補間することによりサンプリングレートを変換し、エフェクトプロセッサ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工程はサンプリングレートを低減してサンプルROM106におけるメモリを保存し、低減サンプリングレートを有する高周波数帯域波形および低周波数帯域波形を含む２個のルーピングされたPCM波形を発生するが、それ以外ではこれら波形は低域通過ルーピング250工程および高域通過ルーピング270工程において発生されるルーピングされた信号と同一である。
【００６２】
ウエーブテーブルシンセサイザのための波形の調整の目標は、聞き取れないループを波形へ導入することである。波形の不連続性がループが導入されている場所に挿入されない場合、ループは聞き取り不可能であり、波形の第１次導関数（傾き）も連続であり、波形の振幅はほぼ一定であり、ループサイズは音の基本周波数の整数倍と等しい。これらの規定に適う波形は、例えば44.1 KHz のオリジナルの音響信号のサンプリングレートで波形が過剰サンプリングされた場合に、最も容易に見つかる。成分間引き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のループサイズを生成する場合、この音調の周波数は1225 Hz にシフトされる。11025 Hzのサンプリングレートを有する再現波形が９個のサンプルのループサイズで奏でられる場合、トーンのピッチは1225 Hzである。1191.89 Hzの最初の音調周波数を再生するために、再現波形の仮想サンプリング周波数が1.027777だけ下降調整され、その結果、新たな波形が10727Hz の仮想サンプリングレートと９のループサイズを有し、1191.89 Hz でトーンを生成する。
【００６９】
雑多な再構築パラメータ調節290工程はオプションで採用されて、必要に応じて１音調ごとについてサンプルを改善し、あるいはメモリを保存する。可変サンプル比ウエーブテーブル合成技術は、持続音と打楽器音の両方に適用されるように、特定音響信号について様々の実現パラメータの注意深い選択を採用して、高度な音響品質を達成する。これらの実現パラメータは、分離周波数、フィルタ周波数、サンプリング期間などを含む。
【００７０】
例えば、可変フィルタが手動で適用された場合は、波形は改良された再現音調を時折生成する。別な具体例では、サンプルにおける１を越える周波数帯域により、または２個以上の楽器によっても単一サンプルが共有される場合は、メモリは保存される。波形共有の特定の例示は汎用MIDI仕様にあり、そこでは、４台のピアノが音響グランドピアノを含んで規定される。４台のピアノ全てについての波形は同一であり、各ピアノは１以上の再構築パラメータの変動により異なる音響を生成する。
【００７１】
別の具体例では、２個のパラメータが時変フィルタの初期フィルタカットオフを制御する。１個のパラメータは１音調の力に基づいてフィルタカットオフを降下させる。音調が穏やかに(softer)奏でられるほど、初期カットオフ周波数は低くなる。第２のパラメータは、音調のピッチシフトの量に基づいて初期カットオフ周波数を調節する。音調が上向きにピッチシフトされるにつれて、カットオフは低下される。下向きのピッチシフトはより強い調和内容を生成する。第２パラメータの調節は、スプリットを横断する平滑な音色遷移を促進する。
【００７２】
図７を参照すると、ミュージカルインスツルメントディジタルインターフェイス（MIDI）インタープリタ102とピッチ発生器104およびエフェクトプロセッサ108から構成される様々のRAMおよびROM構造体との相互接続が概略ブロック図で示される。MIDIインタープリタ102はMIDIインタープリタROM602に直接接続され、さらに、MIDIインタープリタRAMエンジン606を経由してMIDIインタープリタRAM 604に接続される。MIDIインタープリタRAMエンジン606は、ファーストインファーストアウト（FIFO）610およびピッチ発生器データエンジン612を介してピッチ発生器RAM608にデータを供給する。MIDIインタープリタRAMエンジン606およびピッチ発生器データエンジン612は、エフェクト処理を制御するための制御器または状態マシーンであるのが典型的である。MIDIインタープリタRAMエンジン606は、ファーストインファーストアウト（FIFO）616およびエフェクトプロセッサデータエンジン618を介してエフェクトプロセッサRAM614にデータを供給する。MIDIインタープリタRAMエンジン606は、ファーストインファーストアウト（FIFO）620およびエフェクトプロセッサデータエンジン618を介してエフェクトプロセッサRAM614からデータを受信する。
【００７３】
MIDIインタープリタROM 602は、「ノートオン」コマンドの供給に応じてMIDIコマンドおよびフォーマットデータを翻訳するためにMIDIインタープリタ102が使用する情報を供給する。MIDIインタープリタROM602は、楽器情報、音調情報、オペレータ情報、およびボリューム／表現（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インタープリタROM602のビブラート情報へのインデックスである。
【００７７】
ボリューム／表現ルックアップテーブルは、MIDIインタープリタ102についてチャネルボリュームとチャネル表現制御を促進するためのデータを含む。
【００７８】
MIDIインタープリタRAM 604は、相互接続FIFOについての内部オペレータおよび一時記憶装置の状態に関する情報を記憶する。MIDIインタープリタRAM604は、チャネル情報記憶装置、オペレータ情報記憶装置、ピッチ発生器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までデータ情報を搬送するためのFIFO610は、情報を記憶し、かつ、ピッチ発生器104により使用するための完全なメッセージを組み立てるための１個以上の素子を含む一時バッファである。完全なメッセージは、メッセージタイプフィールド、オペレータが割り当てられたかそれともリリースされたかを示す使用中オペレータビット、いずれのオペレータが新たなデータで更新されるべきかを指定するオペレータ数、オペレータのMIDIチャネル指定を示すMIDIチャネル数を含む。有効なメッセージタイプには、オペレータデータのどのような変化にも応答してオペレータ情報を更新するための更新オペレータ情報タイプ、変調ホイールおよびピッチ曲げ値に影響するMIDIコマンドに応答する変調ホイール変更タイプおよびピッチ曲げ変更タイプ、ならびに全サウンドオフメッセージタイプが挙げられる。メッセージはまた、ピッチシフト情報、ビブラート選択インデックス、サンプルグラバ選択インデックス、オペレータごとのオリジナルのサンプリングレートの指定、および変調ホイール変更パラメータを含む。サンプリングレート指定は、サンプルグラバ706（図８に示される）において新たなビブラート率および位相デルタ値を算出するために使用される。変調ホイール変更は、変調ホイール制御器変更コマンドに応答するサンプルグラバについて位相デルタ値を算出するために使用される。
【００８２】
MIDIインタープリタ102からエフェクトプロセッサ108までデータ情報を搬送するためのFIFO616は、情報を記憶し、かつ、エフェクトプロセッサ108による使用のために完全なメッセージを組み立てるための１個以上の素子を含む一時バッファである。完全なメッセージは、メッセージタイプフィールド、オペレータが割り当てられているかまたは不活性状態にあるかを示す使用中オペレータビット、エンベロープ状態マシーンがピッチシフトに基づいて所与のオペレータについて時間パラメータを見積もるかどうかを決定するエンベロープスケーリングビット、いずれのオペレータがメッセージを受け取るべき化を指定するオペレータ数、オペレータのMIDIチャネル割り当てを示すMIDIチャネル数、および所与のオペレータを終結させるノートオフコマンドまたは他のコマンドが起こったかどうかを判断するためのオペレータオフフラグを含む。有効メッセージタイプは、チャネルボリューム、パン変更、リバーブデプス変更、コーラスデプス変更、音響持続変更、ソステヌート変更、プログラム変更、ノートオン、ノートオフ、ピッチ更新、全制御器リセット、オペレータスティール、全ノートオフ、および全サウンドオフの各メッセージである。メッセージはまた、エンベロープスケーリングを処理するためのエンベロープ状態マシーンにより使用されるピッチシフト情報、最大振幅値を算出するためにエンベロープ状態マシーンにより使用される新たなオペレータの割り当てをメッセージタイプが要求した場合の「ノートオンベロシティ」、およびメッセージタイプが新たなMIDIパン制御器変更コマンドである場合のパン値を含む。メッセージは、新たなMIDIチャネルボリュームコマンドが受信された場合のチャネルボリューム情報、新たなMIDIコーラスデプスコマンドが受信された場合のコーラスデプス情報、および新たなMIDIリバーブコマンドが受信された場合のリバーブデプス情報を更に含む。メッセージ中の追加情報は、フィルタ状態マシーン（図示せず）により使用するためのフィルタ情報へのインデックスと、エンベロープ状態マシーンにより使用するためのエンベロープ情報へのインデックスを含む。
【００８３】
FIFO 620は、「オペレータスティール」状態を判定するために使用されるレジスタである。各フレームにおいて、エフェクトプロセッサ108は全音響への最小寄与物を判定し、FIFO620を介してMIDIインタープリタ102に最小寄与物の数を送信する。新たな「ノートオン」コマンドが受信される一方で、全てのオペレータが割り当てられた場合、MIDIインタープリタ102は複数フレームのうちで１個のオペレータまたは複数オペレータを必要に応じてスティールし、新たなノートを割り当てる。MIDIインタープリタ102がオペレータをスティールした場合、メッセージはFIFO616を介して送られ、エフェクトプロセッサ108に状態を知らせる。
【００８４】
異なる実施態様において、音調のボリューム、オペレータのエンベロープ、他のオペレータのゲインと比較した場合のオペレータの相対的ゲイン、他の楽器または音響全てに関する楽器の音の大きさ、およびオペレータの表現を含む１個以上のパラメータの分析により、エフェクトプロセッサ108はオペレータの音調への寄与を判定する。表現（expression）は音調のボリュームに匹敵するが、静的な音の大きさに比して、トレモロを含む、音調の動的な振る舞いにより一層関わりがある。一実施態様においては、音調のボリューム、オペレータのエンベロープ、および他のオペレータのゲインと比較した場合のオペレータの相対的ゲインを監視することにより、エフェクトプロセッサ108は音調の寄与を評価する。エフェクトプロセッサ108は、サンプリング周波数における１期間ごとの64個のオペレータの寄与を評価し、MIDIインタープリタ102へ転送するためのFIFO620への寄与値を書き込む。MIDIインタープリタ102は最小寄与物オペレータを終結し、新たなオペレータを活性状態にする。
【００８５】
図８を参照すると、概略ブロック図は、未加工サンプルがサンプルROM 106から読み出され、処理され、更にエフェクトプロセッサ108に送られるレートを決定するピッチ発生器104を図示する。１実施態様において、出力データ率は44.1KHz の各フレームごとに64個のサンプルで、１オペレータあたり１サンプルである。64個のオペレータについての64個のサンプルが本質的に並列に処理される。各音声音調は一般に２個のオペレータすなわち高周波数帯域オペレータと低周波数帯域オペレータへとコード化され、これらは同時に処理されて、２個のウエーブテーブルエンジンが事実上２個のサンプルを独立して同時に処理するようにする。
【００８６】
ピッチ発生器104は３個の主要計算エンジンすなわち、ビブラート状態マシーン702、サンプルグラバ704、およびサンプリングレート変換器706を含む。ビブラート状態マシーン702およびピッチ発生器データエンジン612は相互接続され、制御情報およびデータを相互に通信する。ビブラートが選択されると、ビブラート状態マシーン702は、未加工サンプルがサンプルROM106から読み出される前にわずかな量だけピッチ位相を修正する。ビブラート状態マシーン702はまた、ピッチ発生器ROMデータエンジン708を介してピッチ発生器ROM707からデータを受信する。ピッチ発生器データエンジン612およびピッチ発生器ROMデータエンジン708はデータ記憶装置へのアクセスを制御するための制御器または状態マシーンである。
【００８７】
サンプルグラバ704およびピッチ発生器データエンジン612はデータおよび制御信号を交換するように相互接続される。サンプルグラバ704はサンプルROM106からの未加工サンプルデータとピッチ発生器ROM 707からのデータを受信する。サンプルグラバ704はFIFO 710を介してサンプリングレート変換器706にデータを通信する。サンプルグラバ704はピッチ発生器RAM608から現在のサンプルROMアドレスを読み出し、後で論じられる態様でビブラート状態マシーン702により決定される修正された位相デルタを加算し、新たなサンプルが読み出されるべきかどうかを判定する。この判定は位相デルタ加算の結果に従って行われる。位相デルタ加算によりアドレスの整数部分がインクリメントされる場合は、サンプルグラバ704は次のサンプルを読み出し、例えば深さ12のFIFOについて先の11個のサンプルおよび新たなサンプルを保持する、ピッチ発生器FIFO710の適切なFIFOにサンプルを書き込む。
【００８８】
サンプリングレート変換器706はサンプルROM 106から獲得されたPCM波形データを補間する。記憶されたPCM波形は、サンプルの周波数内容に依存して、低周波数成分を含んでいようと高周波数成分を含んでいようと、可能な限り低いレートでサンプリングされる。通常の線形補間技術は信号を十分に再現し損なう。音声信号の再生を実質的に改善するために、サンプリングレート変換器706は256の比率だけ過剰サンプリングされる12タップの補間フィルタを実装する。図９は、好適な12タップの補間フィルタの周波数応答を例示するグラフである。
【００８９】
サンプリングレート変換器706はピッチ発生器FIFO 710を介してサンプルグラバ704に接続され、サンプリングレート変換器フィルタROM712からデータを受信する。サンプリングレート変換器706はサンプリングレート変換器出力データバッファ714およびエフェクトプロセッサデータエンジン618を介してエフェクトプロセッサRAM614にデータを送る。サンプリングレート変換器706はピッチ発生器FIFO 710の各FIFOを１度に１フレーム（例えば、44.1 KHz）ずつ読み出し、ピッチ発生器FIFO710における12個のサンプルについてのサンプリングレート変換動作を実施して、サンプルを指定されたフレームレート（この例では44.1 KHz）に補間する。補間されたサンプルは、エフェクトプロセッサ108による後続処理のために、エフェクトプロセッサRAM614に記憶される。
【００９０】
ビブラート状態マシーン702は、音調が演奏されている間に、ビブラートまたはピッチ変動エフェクトを音調に選択的に追加する。ミュージシャンは音に豊かさを加えるために、ピッチまたは強度のわずかな半周期的変化をつけることが多い。ピッチのわずかな変更はビブラートと称される。強度のわずかな変更はトレモロと称される。トランペットのような楽器によっては、自然にビブラートを含む。変調ホイール（図示せず）も楽器のビブラートデプスを制御する。２種のビブラートが図示の実施態様において実現される。第１タイプのビブラートは楽器の初期ピッチシフトとして実現される。ビブラートは複数のサイクルにわたるピッチ定着として生じる。ある実現例において、結果的にビブラートを生じるピッチシフト処理は記憶サンプルに記録される。第２タイプのビブラートは、ピッチ発生器ROM707のビブラートセクションに記憶されるパラメータを使って実現され、これは選択された遅延の後にピッチ変動を発生しながら始まる。誘引されるピッチシフトの量、開始時間、および終了時間はピッチ発生器ROM707のビブラートセクションに記憶される。ある実施態様において、ビブラートが自然なサンプルピッチに追加される割合を制御する波形は、MIDIインタープリタROM602におけるビブラート情報内のビブラートルックアップテーブルに記憶される。
【００９１】
サンプルグラバ704は算出位相デルタ値を用いて、サンプルROM 106における現在のアドレスをインクリメントし、新たなサンプルがサンプルROM106から読み出され、ピッチ発生器FIFO 710に書き込まれるべきかどうかを判定する。図10はサンプルグラバ704の動作を図示するフローチャートである。新たなフレームが始まると（902）、サンプルグラバ704はピッチ発生器RAM608からサンプルアドレスフラグ（SAF）値904を読み出す。SAF値は、先のフレームアドレスのインクリメントにより、新たなサンプルが読み出されるべきかどうかをサンプルグラバ704に伝える。SAF値がゼロである場合、サンプルグラバ704は第２処理フェーズ940に移行する。SAF値がゼロでない場合には、サンプルグラバ704は、サンプルへのポインタとして現在のアドレスを用いて、サンプルROM106から次のサンプルを読み出し（906）、ピッチ発生器FIFO 710にサンプルを書き込む。ROM／RAM帯域幅制限により、サンプルグラバ704だけが１オペレータにつき１フレームにつき２個までのサンプルを移動させる。サンプルが移動させられた後は、サンプルアドレスの整数部分がインクリメントされ（908）、ピッチ発生器RAM608に戻って書き込まれる。
【００９２】
サンプルが移動させられると、サンプルグラバ704はサンプルROM 106におけるアドレスをインクリメントし（910）、必要ならば、次のフレームについてSAFフラグ912をセットする。オペレータについての位相デルタは、ビブラート状態マシーン702が位相デルタに対して何らかの修正を実施した後にピッチ発生器RAM608から読み出され、現在のサンプルアドレス916に追加される。位相デルタにより少なくとも１整数値だけアドレスがインクリメントされる場合は、SAFは非ゼロ値を含み、更に次のフレームの期間は、新たなサンプルがサンプルROM106からピッチ発生器FIFO 710に複写される。インクリメントされた整数アドレスはこの時点では記憶されない。サンプルグラバ704は、サンプルをサンプルROM106からピッチ発生器FIFO 710まで移動させた後の次のフレーム期間に、アドレスの整数部分をインクリメントし、新たな値はピッチ発生器RAM 608に戻って記憶される。
【００９３】
サンプリングレート変換器706はピッチ発生器FIFO 710における各オペレータについてデータを受信し、そのデータに関してフィルタリング動作を実施して、例えば44.1KHz の規定のレートまでオリジナルのサンプリングレートを変換する。各クロックサイクルの間は、サンプリングレート変換器706はピッチ発生器FIFO 710からサンプルを読み出し、サンプリングレート変換器フィルタROM712からフィルタ係数を読み出し、サンプルをフィルタ係数倍する。乗算結果の積はピッチ発生器FIFO 710から全てのサンプル（例えば、FIFOアドレスで始まる12個のサンプル）について累算される。累算結果の積はサンプリングレート変換器706内の累算器（図示せず）から移動させられ、更に、サンプリングレート変換器706の出力バッファ（図示せず）に移動させられ、累算器はクリアされる。サンプリングレート変換器706は、ピッチ発生器FIFO710全て（例えば、64個のFIFO）が処理されるまで、この処理を反復する。
【００９４】
実施態様において、フィルタ係数はオペレータ多相値により決定される。サンプリングレート変換器フィルタROM 712は256組の12タップフィルタ係数として編成される。サンプルグラバ704多相は８ビット値であり、オペレータサンプルアドレスの分数部分の最上位８ビットに等しい。オペレータサンプルアドレスはインデックスとして使用され、サンプリングレート変換器フィルタROM712における256組みの係数から１組の係数を選択する。
【００９５】
ピッチ発生器ROM 707は、サンプルアドレスROM、ビブラートデフォルトパラメータ記憶装置、およびビブラートエンベロープパラメータ記憶装置を含む３個のデータ構造体を含む。サンプルアドレスROMは、特定複数サンプルについての第１未加工サンプルの開始アドレス位置、サンプルグラバ704がいつ終了されるかを判定するために使用される未加工サンプルの終了アドレス、およびサンプルループ処理期間中に終了アドレスから開始アドレスまで逆方向にカウントを行うためのループ減算カウントを各サンプルごとに含むサンプルROM106に記憶された複数サンプルについてのサンプルアドレスを記憶する。
【００９６】
ビブラートデフォルトパラメータ記憶装置は、MIDIインタープリタRAM 604における各オペレータ情報記憶装置に対応するパラメータを保持する。ビブラートデフォルトパラメータは、ビブラートが初期ピッチシフトとしてまたは自然なビブラートとして実現されるかを指定するモードフラグと、オペレータに加算されるまたはそこから減算されるピッチ変化の量を指定するセントパラメータとを含む。２種のビブラートは、時変周期的振動実現およびピッチランプまたはピッチシフト実現を含めて実現される。ビブラートデフォルトパラメータは、ビブラートが両方のタイプのビブラートについていつ開始されたかを指定する開始時間を含む。ビブラートデフォルトパラメータはまた、時変周期的ビブラート実現についてビブラートがいつ終了されるべきかを指定する終了時間か、ピッチシフトビブラート実現についてピッチが自然なピッチまで上昇させられるべき割合か、いずれかを含む。
【００９７】
ビブラートエンベロープパラメータ記憶装置は、サンプルグラバ704の位相デルタパラメータを修正するビブラート状態マシーン702により使用するためのエンベロープ形状を保持する。
【００９８】
ピッチ発生器RAM 608は、ビブラート状態マシーン702とサンプルグラバ704によりそれぞれ使用するためのビブラート状態マシーン情報および変調値を含む大型ブロックのランダムアクセスメモリである。ビブラート状態マシーン情報は、各オペレータについてサンプルアドレス値をインクリメントするための位相デルタパラメータ、最近の位相デルタパラメータを保持するための前の位相デルタ、およびオペレータに加算するための初期位相デルタを保持して初期ピッチシフトビブラートを実現するための開始位相デルタを含む。ビブラート状態マシーン情報はまた、位相デルタを算出するためのオリジナルのサンプリングレート、自然なビブラート実現のための最大の位相デルタを規定する位相デプス、要求されたキー値を達成するためにピッチシフトの量を示すピッチシフト半音およびピッチシフトセント値を含む。ビブラート状態マシーン情報は、64個のオペレータの各々についてビブラート状態マシーン702の現在の状態を記憶するビブラート状態パラメータ、ビブラートが始まる開始時間を指定する64期間にわたるサンプリング周波数での１カウントのサイクルを記憶するためのビブラートカウント、各フレームについて位相デルタに加算されるべきデルタ値を保持するビブラートデルタパラメータを更に含む。ビブラート状態マシーン情報としては、使用中オペレータフラグ、或る処理がデータを発生している対称のMIDIチャネルを示すMIDIチャネル識別子、およびMIDIインタープリタROM602のビブラート情報へのインデックスおよびサンプルグラバ情報へのインデックスが挙げられる。
【００９９】
変調値は、MIDIインタープリタ102によりMIDIインタープリタRAM 604のピッチ発生器FIFOに書き込まれるチャネル変調値を記憶する。
【０１００】
サンプリングレート変換器706は、ランダムアクセスメモリRAMすなわちピッチ発生器RAM608を含み、これはサンプルROM106におけるサンプルをピッチ発生器FIFO 710にアドレス指定するための現在のサンプルアドレスを記憶する。サンプリングレート変換器RAMはまた、各オペレータについてサンプルアドレスの分数部分を保持する多相パラメータを含む。全てのサンプリング周波数期間において、全てのオペレータについて、サンプリングレート変換器706は多相値をサンプルROM106への整数アドレスに加算し、各フレームについての位相デルタ値を加算し、分数結果を多相記憶装置に記憶する。RAMはまた、サンプルグラバ704により算出されるサンプルアドレスと最初のサンプルアドレス値との間の差を保持するためのサンプル前進(advance)フラグを保持する。後続フレームにおいて、サンプリングレート変換器706はサンプル前進フラグを読み出し、これはサンプルROM106からピッチ発生器FIFO 710まで移動させられるべきサンプル数を決定する。RAMはまた、ピッチ発生器FIFO 710における最新サンプルの位置をサンプリングレート変換器706に知らせるFIFOアドレスを含む。
【０１０１】
図11を参照すると、ピッチ発生器FIFO 710の構造を概略ブロック図に示す。図示の実施態様では、ピッチ発生器FIFO710は64個のオペレータのうち各オペレータについて最近のサンプルと先行の11個のサンプルを保持する。ピッチ発生器FIFO 710は64個のバッファ1002および1004として編成され、各バッファは128ビットワードである。サンプリングレート変換器706は、１クロックサイクルあたり１FIFOワードを読み出し、各フレームにおいて768回の読み出しが実施。サンプルグラバ704は各フレーム期間中はピッチ発生器FIFO710に最大128ワードを書き込む。従って、ピッチ発生器FIFO 710は２組のアドレスデコーダ1006および1008を有し、１組はバッファ1002の上半分のため、１組はバッファ1004の下半分のためのものである。サンプルグラバ704およびサンプリングレート変換器706のバッファアクセスが互いに異相にされるように、サンプルグラバ704およびサンプリングレート変換器706は、いつでもバッファ1002およびバッファ1004のうち、常に互いに異なるバッファにアクセスする。
【０１０２】
動作の最初の位相の期間中は、バッファ1002のFIFO 0〜31が32個のオペレータの処理のためにサンプルグラバ704により書き込まれる。また、第１位相の期間中、サンプリングレート変換器706はバッファ1004のうちFIFO32〜63から読み出しを行う。第２位相の期間中は、サンプルグラバ704はバッファ1004のFIFO 32〜63を更新し、サンプリングレート変換器706はバッファ1002のうちFIFO0〜31から読み出しを行う。バッファアクセスは、位相に従って入力アドレスを多重化するアドレス多重化装置1010および1012ならびに位相に従ってサンプリングレート変換器706に渡されるべき出力を判定する出力デコーダ1014により制御される。
【０１０３】
再び図８を参照すると、サンプリングレート変換器出力データバッファ714は、ピッチ発生器104をエフェクトプロセッサ108に同期させるために使用される記憶装置RAMである。サンプリングレート変換器706は、１フレームあたり64サンプルのレートでサンプリングレート変換器出力データバッファ714にデータを書き込む。エフェクトプロセッサ108は、処理されるべき各値として値を読み出す。エフェクトプロセッサ108およびピッチ発生器104はそれぞれ、同じレートで値の読み出しおよび書き込みを行う。サンプリングレート変換器出力データバッファ714は２個のバッファ（図示せず）を含み、一方はピッチ発生器104によりフレームに書き込まれ、次のフレームの最初で第２のバッファに連結される。第２バッファはエフェクトプロセッサ108により読み出される。この態様で、データは完全なフレームについてエフェクトプロセッサ108およびピッチ発生器104に関連して一定に保持される。
【０１０４】
図12を参照すると、概略ブロック図はエフェクトプロセッサ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ノイズ発生器は、図13に描かれる線形フィードバックシフトレジスタ（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結果を発生する。
【０１０７】
図14を参照すると、第１サブセクション1102時変フィルタ処理は、一実施態様においては、状態スペースフィルタを用いて実現される。例示の状態スペースフィルタは、一般に低域通過フィルタとして使用される二次無限入力応答（IIR）フィルタである。時変フィルタは、音調の期間が増大するにつれて、低域通過フィルタのカットオフ周波数を低下させるために実装される。一般に、音調が長く保持されるほど、透明度は一層失われ、というのも、高周波数音調情報がより少ないエネルギーを有して、低周波数内容との比較において急速に散逸するからである。
【０１０８】
時変フィルタが有利なのは、減衰する自然音が低周波数よりは高周波数でより急速な減衰を有するからである。ルーピング技術および波形の人工レベル化を利用して生成される減衰音は、経時的に徐々により低い周波数で音響信号をフィルタリングすることにより、より現実的に再現される。ループは、トーン変動が維持される間は、波形のより早期に有利に生成される。
【０１０９】
第１サブセクション1102エンベロープ発生器は、オペレータのためのエンベロープを発生する。図15は、音調信号に適用するための対数スケールに関して振幅エンベロープ関数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状態マシーンは個別オペレータ出力信号へのチャネル特殊効果を処理する。チャネル特殊効果としては、チャネルボリューム、レフト／ライトパン、コーラス、およびリバーブが挙げられる。従って、図16を参照すると、第２サブセクション1104状態マシーンは、チャネルボリューム状態マシーン1502、パン状態マシーン1504、コーラス状態マシーン1506、コーラスエンジン1508、リバーブ状態マシーン1510、およびリバーブエンジン1512を含む。
【０１１４】
チャネルボリューム状態マシーン1502はチャネルボリュームパラメータをまず処理および記憶するが、それは、他の残余のエフェクトが相対ボリュームパラメータを用いて並列に計算されるからである。一実施態様においては、チャネルボリュームは、以下に示す等式に従って、MIDIチャネルボリュームコマンドの線形範囲で相対値による乗算を利用して、単純に計算される。
【０１１５】
フルスケールからの減衰（dB）＝ 40in((V0LUME_value*EXPRESSION_value)/27＾2)．
ここでは、デフォルトEXPRESSION_value は127に等しい。
【０１１６】
ボリューム決定に続いてチャネルボリューム状態マシーン1502により実施される第１エフェクトは、パン状態マシーン1504を用いたパンエフェクトである。MIDIパンコマンドは左にパンする量を特定し、余りは右にパンする量を特定する。例えば、0ないし127間でのパン範囲では、64の値が中心位置パンを示す。127という値は強いライト（右）パンを示し、0という値は強いレフト（左）パンを示す。図示の実施態様においては、左および右の積算は、累乗を一定に保つように最初の量にアクセスするよりはむしろ、平方根の量を保持するルックアップテーブル値にアクセスすることにより実施される。次の等式により、「イコール−累乗」パンスケーリングについての等式が示される。
【０１１７】
Left_Scaling＝((127-PAN_value)127)＾0.5． 
Right_Scaling＝(PAN_value/127)＾0.5．
現実の被乗数は、パン値に基づくエフェクトプロセッサROMパン定数から読み出される。レフトパン値およびライトパン値は計算され、出力累算器に送信される。メロディ楽器チャネルにおいて、受けた値が特定チャネルに関して選択された楽器についてのデフォルト値を置換するように、PAN_valueは絶対的である。打楽器チャネルでは、PAN_valueは個々の打楽器音の各々についてのデフォルト値に相対的である。
【０１１８】
エフェクトプロセッサ108はエフェクトプロセッサROM 1106に記憶された複数組のデフォルトパラメータにアクセスしてエフェクトを処理する。エフェクトプロセッサROM1106は、チャネルボリューム状態マシーン1502、パン状態マシーン1504、コーラス状態マシーン1506、およびリバーブ状態マシーン1510についての共有リードオンリーメモリである。エフェクトプロセッサROM1106に保持されたデフォルトパラメータとしては、時変フィルタオペレータパラメータ（FROM）、エンベロープ発生器オペレータパラメータ（EROM）、エンベロープスケーリングパラメータ、コーラス定数およびリバーブ定数、パン被乗数定数、トレモロエンベロープ形状定数、およびキーベロシティ定数が挙げられる。
【０１１９】
時変フィルタオペレータパラメータ（FROM）は、典型的には高周波数情報を追加または除去することにより、より自然なリアリズムを楽器のトーンに追加するために使用される情報を含む。時変フィルタオペレータパラメータ（FROM）は、初期周波数、周波数シフト値、フィルタ減衰、活性開始時間、減衰時間カウント、初期ベロシティフィルタシフトカウント、ピッチシフトフィルタシフトカウント、およびＱ値を含む。初期周波数はフィルタの初期カットオフ周波数を設定する。周波数シフト値およびフィルタ減衰は周波数カットオフ減少の割合を制御する。活性開始時間は、フィルタ状態マシーン（図示せず）が、音調が活性状態になった後でデータのフィルタリングを開始するように待機する期間を決定する。減衰時間カウントは、一定周波数で停止する前にフィルタが継続して減衰する期間を制御する。初期ベロシティフィルタシフトカウント（IVFSC）は音調の初期ベロシティに基づいてフィルタカットオフ周波数が調節される量を制御する。一実施態様においては、初期ベロシティフィルタシフトカウント（IVFSC）は、次の等式に従って、初期カットオフ周波数を調節する。
【０１２０】
2008112183.tif 000003
【０１２１】
ピッチシフトフィルタシフトカウント（PSFSC）は、音調の初期ピッチシフトに基づいてフィルタカットオフ周波数が調節される量を制御する。一実施態様において、ピッチシフトフィルタシフトカウント（PSFSC）は、次の等式に従って、初期カットオフ周波数を調節する。
【０１２２】
2008112183.tif 000004
【０１２３】
Ｑシフトパラメータはフィルタカットオフの鋭さを決定し、最終出力信号を計算する前に高域通過因子をシフトするために、フィルタ計算の際に使用される。
【０１２４】
エンベロープ発生器オペレータパラメータ（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からエフェクトプロセッサRAM614に複写される。エンベロープスケーリングフラグは、エンベロープ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により受信された場合に設定される。エンベロープ状態マシーンはソステヌートペダルフラグを読み出し、ノートオフコマンドが発生した時にオペレータリリース状態に入ったかどうかを判定する。オペレータオフソステヌートフラグか設定されたならば、エンベロープ状態マシーンは、フラグがリセットされるまで、オペレータを自然な減衰状態に保持する。
【０１３２】
図16と組み合わせて図17を参照すると、概略ブロック図はコーラス状態マシーン1506の成分を例示する。パンが決定され、コーラスが処理される。まず、コーラスされるべきオペレータサンプルの量が、コーラスデプスパラメータに基づいて各チャネルについて決定される。コーラスデプスパラメータはMIDIコマンドを介して送られ、コーラスアルゴリズムに渡すべき信号の100分率を決定するために乗算器が使用される。コーラス100分率が決定されると、オーディオ信号がコーラスについて処理される。コーラス状態マシーン1506は、左チャネルについてのIIR全帯域通過フィルタ1602および右チャネルについてのIIR全帯域通過フィルタ1604を有する。IIR全帯域フィルタ1602および1604は各自、２個のカスケード式全帯域通過IIRフィルタを含み、その各自が異なる低周波数発振器（LFO）と共に作動する。LFOのカットオフ周波数は、コーラス状態マシーン1506が作動して音響信号の位相を引き延ばすように掃引される。２個のIIR全帯域フィルタ1602および1604は各自、２個のIIRフィルタを含む。４個のIIRフィルタは全て、実質的にいつでも４個のIIRフィルタが異なるカットオフ周波数を有するように、経時的に掃引されるカットオフ周波数を有する。
【０１３３】
本発明は多様な実施態様を参照して記載されているが、これら実施態様は例示的であり、発明の範囲はそれらに限定されないことが理解されるであろう。記載された実施態様の多くの変更、修正、追加、および改良が可能である。例えば、一実施態様は、ペンティアム（登録商標）ホストコンピュータおよび特定のマルチメディアプロセッサを含むマルチプロセッサシステムを利用するシステムとして説明されている。別な実施態様は、ゲームボックス、低コスト楽器、MIDI音響モジュールなどの応用例のためのキーボードにより制御されるシステムとして説明されている。音響発生器およびシンセサイザの技術分野で公知の他の構成が別な実施態様で使用されてもかまわない。
【図面の簡単な説明】
【０１３４】
図面の簡単な説明
新規であると思われる記載の実施態様の特徴は、添付の特許請求の範囲で特に明確にされる。しかし、構造および動作方法の両方に関連する本発明の実施態様は、以下の説明および添付の図面を参照することにより最良に理解され得る。異なる図面の同一参照番号の使用は類似物または同一物を示す。
【図１】図１は、本発明によるリバーブ処理回路の構成要素を例示する概略ブロック図である。
【図２Ａ】図２Ａおよび図２Ｂは、本発明の実施態様によるウエーブテーブルシンセサイザ装置の実施態様の２つの高レベルブロック図を例示する概略ブロック図である。
【図２Ｂ】図２Ａおよび図２Ｂは、本発明の実施態様によるウエーブテーブルシンセサイザ装置の実施態様の２つの高レベルブロック図を例示する概略ブロック図である。
【図３】図３は、副帯域音声サンプルをコード化する方法の実施態様を例示するフローチャートである。
【図４】図４は、図３に例示された方法において使用される好適なサンプル生成低域通過フィルタの周波数応答を示すグラフである。
【図５】図５は、低域通過ルーピング強制フィルタとして使用するためのくし形フィルタの実施態様を例示する概略ブロック回路図である。
【図６】図６は、選択性因子αの典型的な修正を経時的に示すグラフである。
【図７】図７は、図１に示されるウエーブテーブルシンセサイザ装置のピッチ発生器およびエフェクトプロセッサの多様なRAM構造およびROM構造を有するミュージカルインスツルメントディジタルインターフェイス（MIDI）の相互接続を示す概略ブロック図である。
【図８】図８は、図１に示されるウエーブテーブルシンセサイザ装置のピッチ発生器を例示する概略ブロック図である。
【図９】図９は、図８に示されるピッチ発生器において使用される好適な12タップ補間フィルタの周波数応答を例示するグラフである。
【図１０】図10は、図８に示されるピッチ発生器のサンプルグラバの動作を例示するフローチャートである。
【図１１】図11は、図８に示されるピッチ発生器のファーストインファーストアウト（FIFO）バッファのアーキテクチャを示す概略ブロック図である。
【図１２】図12は、図１に示されるウエーブテーブルシンセサイザ装置のエフェクトプロセッサの実施態様を例示する概略ブロック図である。
【図１３】図13は、第12図に示されるエフェクトプロセッサにおいて使用するための線形フィードバックシフトレジスタ（LFSR）の実施態様を示す概略図である。
【図１４】図14は、図12に示されるエフェクトプロセッサにおいて使用するための状態スペースフィルタを示す概略回路図である。
【図１５】図15はノート信号に適用するための振幅エンベロープ関数を示すグラフである。
【図１６】図16は、チャネルエフェクト状態マシーンを示す概略ブロック図である。
【図１】
2008112183.tif 000005
【図２Ａ】
2008112183.tif 000006
【図２Ｂ】
2008112183.tif 000007
【図３】
2008112183.tif 000008
【図４】
2008112183.tif 000009
【図５】
2008112183.tif 000010
【図６】
2008112183.tif 000011
【図７】
2008112183.tif 000012
【図８】
2008112183.tif 000013
【図９】
2008112183.tif 000014
【図１０】
2008112183.tif 000015
【図１１】
2008112183.tif 000016
【図１２】
2008112183.tif 000017
【図１３】
2008112183.tif 000018
【図１４】
2008112183.tif 000019
【図１５】
2008112183.tif 000020
【図１６】
2008112183.tif 000021