(57)【特許請求の範囲】
【請求項１】
演算処理装置による演算により楽音波形サンプルを生成する楽音生成方法において、
生成する楽音のサンプリング周波数を予め設定されている第１のサンプリング周波数よりも低い第２のサンプリング周波数に変更設定する第１のステップと、
前記第１のステップにより前記第２のサンプリング周波数に設定されたときは、波形テーブルから読み出される波形データを、前記第１のサンプリング周波数を用いる場合よりも精度の低い補間方法により補間する第２のステップと
を含むことを特徴とする楽音生成方法。
【請求項２】
特定の音色を生成するときにのみ、前記第２のステップを実行するようにしたことを特徴とする前記請求項１記載の楽音生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＣＰＵやＤＳＰ（Digital Signal Processor）などのプログラマブルな演算処理装置を用いて演算により楽音波形サンプルを生成する楽音生成方法に関する。
【０００２】
【従来の技術】
従来より、ＣＰＵやＤＳＰなどの演算処理装置を用いて楽音波形サンプルを波形生成演算により生成するようにした音源装置や、あるいは、楽音波形を生成する楽音生成プログラムを用いてパーソナルコンピュータなどの汎用コンピュータ上で特別のハードウエアを使用することなく楽音を生成することが行なわれている。
【０００３】
楽音を発生させるためには、サンプリング周期、すなわち、ＤＡＣ（Digital Analog Converter）における変換タイミング毎に演算生成した波形サンプルをＤＡＣに供給することが必要であり、このために演算処理装置（以下、単に「ＣＰＵ」という）における演算量は非常に大きいものとなっている。すなわち、ＣＰＵは、楽音を演算生成するために、入力されるＭＩＤＩイベントなどの演奏情報から楽音制御情報を生成する処理および波形生成処理を実行しなければならない。
【０００４】
この波形生成処理は、波形メモリ方式の音源の場合を例にとれば、演奏情報から生成された楽音制御情報に基づいて、各発音チャンネル毎に、ＬＦＯ（Low Frequency Oscillator）、フィルタＥＧおよび音量ＥＧなどの波形演算を実行し、対応する波形メモリ（波形テーブル）から波形データを読み出し、該読み出した波形データに対して補間演算を行い、その結果得られた波形データに対して各種ＥＧ波形のサンプルを乗算して当該発音チャンネル分の波形データを演算生成し、これを全発音チャンネルについて繰り返し実行して各発音チャンネル分の波形サンプルデータを累算することにより１サンプリングタイミングに対応する楽音波形データの生成を行っている。
【０００５】
【発明が解決しようとする課題】
上述したように、楽音波形サンプルを演算生成するためにＣＰＵにおいて実行される演算量は非常に大きいものである。また、この演算量は、発音中のチャンネル数や楽音生成演算の内容によってダイナミックに変動するものである。
このようにＣＰＵの処理負担が大きいために、発音可能チャンネル数を多くすることができない、あるいは、汎用コンピュータで他のアプリケーションプログラムと並行してソフトウエア音源プログラム（以下、「ソフト音源」という。）を実行する場合、このソフト音源の処理量の変動（特に演算量の増加）により、他のアプリケーションの動作が不安定になることがあった。
【０００６】
また、ソフト音源の処理に割り当てることのできる演算量は、上記のように並行しているアプリケーションの数や種類のほか、それを実行する演算装置の演算能力により制限を受ける。割り当てられる演算量が厳しく制限される場合でも、従来のソフトウエア音源プログラムでは、生成演算が固定的に決定されていたため、ユーザが、生成演算クォリティを落としても発音数を増やしたい場合や、発音数は少なくてもよいので高いクォリティで生成演算したい場合等の選択を行うことができなかった。
【０００７】
そこで、このようなＣＰＵの処理負担を軽減するために、楽音のサンプリング周波数を低下させることが考えられる。楽音のサンプリング周波数を低下させることにより、波形生成演算の回数を減少させることができ、ＣＰＵの処理負荷を軽減することが可能となる。
【０００８】
一般に、楽音のサンプリング周波数を低下させると生成された楽音が含有することのできる周波数帯域の上限周波数も低下する。すなわち、図９の（ａ）に示すように、サンプリング周波数がｆｓの場合にはｆｓ／２を上限周波数とする周波数帯域（図の実線）を有する楽音とすることができるが、サンプリング周波数をｆｘ（ｆｘ＜ｆｓ）とすると、上限周波数がｆｘ／２まで周波数帯域（図の点線）を有する楽音となる。
したがって、高い周波数成分を有するシンバルやスネアドラムの響き線のような楽音を発生させる場合に、低いサンプリング周波数を使用するときには、高音域のエネルギーが少なくなり、エネルギーバランスの悪い楽音となってしまうという問題点があった。
【０００９】
そこで、本発明は、楽音波形生成演算におけるＣＰＵの処理負担を軽減するためにサンプリングレートを低下させたときにおいても、高音側のエネルギーを低下させないようにすることを目的としている。
また、高音が強調された楽音を演算生成する楽音生成方法を提供することを目的としている。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明の楽音生成方法は、演算処理装置による演算により楽音波形サンプルを生成する楽音生成方法において、生成する楽音のサンプリング周波数を予め設定されている第１のサンプリング周波数よりも低い第２のサンプリング周波数に変更設定する第１のステップと、前記第１のステップにより前記第２のサンプリング周波数に設定されたときは、波形テーブルから読み出される波形データを、前記第１のサンプリング周波数を用いる場合よりも精度の低い補間方法により補間する第２のステップとを含むようにしたものである。そして、前記第２のステップは特定の音色を生成するときにのみ実行されるものである。
【００１２】
【発明の実施の形態】
図１に本発明の楽音生成方法が実行される楽音生成装置の一実施例の構成を示す。この図において、１０は楽音波形サンプルの生成や各種アプリケーションプログラムなどを実行する中央処理装置（ＣＰＵ）、１１はプリセット音色データなどが記憶されているＲＯＭ、１２は実行するプログラムやデータが読み込まれるとともにワークエリアや各種バッファ領域として使用されるＲＡＭ、１３は各種のアプリケーションプログラムなどが記憶されているハードディスク装置、１４は各種のデータやプログラムなどを記憶したＣＤ−ＲＯＭを駆動するＣＤ−ＲＯＭ装置、１５は外部接続されるＭＩＤＩキーボードなどの演奏装置との間で演奏データや制御信号の送受信を行うためのＭＩＤＩインタフェース、１６および１７は、それぞれ、パーソナルコンピュータに一般的なキーボードおよびディスプレイ装置である。
【００１３】
１８はＣＰＵ１０を介さずにＲＡＭ１２内の出力バッファ領域からサンプリング周期毎に波形サンプルデータを読み出してＤＡＣ１９に出力するＤＭＡ制御回路（Direct Memory Access Controller ）、１９はこの波形データをアナログの楽音信号に変換してサウンドシステム２０に出力するＤＡＣ、２０はこの楽音信号を増幅して外部出力するサウンドシステムである。また、２１は所定時間毎にＣＰＵ１０に対して割込をかけるとともに、ＤＭＡ制御回路１８にサンプリングクロックを供給するタイマである。そして、これら各構成要素１０〜１８はバスを介して相互に接続されている。以上の構成は、通常のパーソナルコンピュータやワークステーションなどと同等であり、それらの上で本発明の楽音生成方法を実行することができる。
【００１４】
図２は、このような楽音生成装置上で実行される本発明の楽音生成方法の一実施の形態であるソフト音源における処理の時間的な流れを説明する図である。このソフト音源は、通常時には例えば４８ｋＨｚのサンプリング周波数（レート）で楽音波形データを発生するが、その楽音波形データ生成処理は例えば１２８サンプル（１フレーム）時間毎に行うようになされている。そして、あるフレームに対応するタイムスロットに演奏入力があると、次のフレームでその演奏入力に対応する楽音波形データの算出処理を行い、さらに次のフレームでこの楽音波形データを４８ｋＨｚの周期毎に１サンプルずつ読み出して楽音信号を形成する。したがって、演奏入力があってから実際に楽音が発音されるまで（または楽音が消音されるまで）は約２フレームの時間ずれが生じることになるが、１フレームが１２８サンプル（約２．６７ミリ秒）であるため、その時間ずれはわずかである。なお、この１フレームのサンプル数は任意に設定することができるが、サンプル数を大きくすると発音に遅れが生じ、小さくすると時間的マージンが減少して一時的な演算量の増加時に応答が悪くなることがある。
【００１５】
なお、本実施の形態では、ＲＡＭ１２上に用意された波形テーブルに記憶された波形サンプルに基づいて楽音を生成するいわゆるテーブルルックアップ方式の楽音生成を行うものとして説明する。また、このソフト音源は最大で３２チャンネルの楽音発生チャンネルを有しているものとする。
【００１６】
図３は前記ソフト音源の動作時にＲＡＭ１２に設定される記憶エリアを説明する図である。同図（Ａ）は入力バッファを示しており、この入力バッファは、ＭＩＤＩインタフェース１５から演奏入力があったとき、その演奏入力の内容とその発生時刻を記憶するバッファである。このバッファの内容は、後述するＭＩＤＩ処理で読み出され、対応する処理が実行される。
【００１７】
同図（Ｂ）はサンプルバッファＷＢ、同図（Ｃ）は出力バッファＯＢを示している。両バッファとも、１２８サンプル分の波形データ記憶エリア（ＳＤ１〜ＳＤ１２８、ＯＤ１〜ＯＤ１２８）を備えている。出力バッファＯＢは３２チャンネルの発音チャンネルの楽音波形データを順次加算合成した波形データを記憶する。波形データ生成演算は、１つのチャンネル毎に１フレーム時間分の１２８サンプルを演算し、これを最大３２チャンネル分（発音しているチャンネル分）繰り返すという手順で行われるが、１つのチャンネルの波形データを記憶するのがサンプルバッファＷＢであり、１つのチャンネルの波形データが演算される毎にこの波形データをサンプルタイミング毎に累算してゆくのが出力バッファＯＢである。
【００１８】
同図（Ｄ）は音色データレジスタである。この音色データレジスタは、各ＭＩＤＩチャンネル（演奏パート）で生成される楽音波形を決定する音色データを記憶するレジスタであり、この音色データとしては、各音色の各音域毎に素材とする波形テーブルを指定する波形指定データ、ＥＧ制御データ、補間制御データ（ＣＤ２）などが記憶される。
【００１９】
同図（Ｅ）は音源レジスタである。この音源レジスタには、各発音チャンネル別に該発音チャンネルで生成される楽音波形を決定するためのデータが記憶される。このデータとしてはノートナンバ、いずれか１つの波形テーブルのアドレスを示す波形指定アドレス（アタックスタートアドレスＡＳ、アタックエンドアドレスＡＥ、ループスタートアドレスＬＳ、ループエンドアドレスＬＥ）、フィルタ制御データ、ＥＧ制御データ、ノートオンデータ、補間制御データ（ＣＤ２）などが記憶される。
【００２０】
前述したように、本発明のソフトウエア音源は、通常時には４８ｋＨｚのサンプリング周波数ｆｓで楽音を生成するようになされているが、ＣＰＵの負荷を軽減するために４８ｋＨｚよりも低いサンプリング周波数で楽音を生成するように操作者がサンプリング周波数を任意に設定変更することができるようになされている。そして、操作者がサンプリング周波数を低い周波数ｆｘ（ｆｘ＜ｆｓ）に設定したときは、図９の（ａ）について説明したように発生される楽音の周波数帯域がｆｘ／２よりも低い周波数帯域となってしまい、シンバルやスネアドラムの響き線などの楽音は高音域が減衰したエネルギーバランスの悪い楽音となってしまうのであるが、本発明においては、このような楽音については補間演算を実行しないようにすることによって、エネルギーバランスのくずれを防止するようにしている。
【００２１】
すなわち、サンプリング周波数をｆｓからｆｘに低下させたときに波形データの中間点に位置するデータを補間計算により算出しないようにしたときには、該補間演算をしないことにより発生する誤差に起因するノイズが発生する。この誤差は、単位時間当たりの振幅変動量が大きい高い周波数の信号において多くなるため、高い周波数域に多くのノイズ成分が発生することとなる。このノイズ成分は、図９の（ｂ）および（ｃ）に斜線で示すように、いわゆる折り返し雑音となる。生成する楽音が図９の（ｂ）に示すような低音域に大きなエネルギーを有しているが高音域のエネルギーは小さい楽音、例えば、打楽器でも低音部の多い打楽器などであるときには、図９の（ｂ）に斜線で示すような折り返しノイズとなるが、この場合は高音域のエネルギー量は多くないため、この折り返しノイズによる影響は大きくない。一方、図９の（ｃ）に示すような高音域に大きなエネルギーを有する楽音、例えば、シンバルやスネアドラムの響き線などのノイズ的な高音部を有する楽音の場合には、折り返しノイズ成分が大きくなり、これにより高音域のエネルギーが強調されて、サンプリング周波数を低下させたことによるエネルギーバランスのくずれを補うことが可能となる。
【００２２】
また、補間演算をしないのであるからそのための演算量を減少させることもでき、ＣＰＵの処理負担をより一層軽減することが可能となる。
【００２３】
次に、フローチャートを参照して本発明のソフト音源の動作を説明する。
図４（ａ）はメインルーチンを示すフローチャートである。プログラムが起動されると、まず、レジスタエリアの確保などの初期設定を実行（Ｓ１）したのち、何らかの起動要因（トリガ）があるまで、Ｓ２、Ｓ３で待機する。起動要因が発生した場合には、その起動要因をＳ４で判断して対応する処理動作を実行する。起動要因としては、（１）入力バッファにＭＩＤＩデータが書き込まれた場合、（２）１フレームに対応する時間毎に発生されるタイマ２１などからの割込、（３）その他パネルやウインドウ画面からのスイッチイベントの発生、および、（４）終了コマンドの入力の４種類の要因があり、それぞれの要因に応じて、ＭＩＤＩ処理（Ｓ５）、音源処理（Ｓ６）、その他処理（Ｓ７）、および終了処理（Ｓ８）が実行される。
【００２４】
終了処理Ｓ８は設定データの退避やレジスタのクリアなどの処理であり、この処理が終了したのち動作を終える。その他処理Ｓ７は、各種のパネル入力やコマンド入力に対応する処理であり、パネルあるいはウインドウ画面からサンプリングレート設定変更コマンドが入力された場合に実行されるサンプリングレート変更設定イベント処理もこのなかで実行される。このサンプリングレート変更設定イベント処理については、図８を参照して後述する。音源処理（Ｓ６）は、タイマ２１から１２８サンプルクロックをカウントしたことにより発生される割り込みまたはＤＭＡ制御回路１８からのトリガ等によって図２における読み出し再生が次のフレームに進行したのを検出して実行される処理である。
【００２５】
図４の（ｂ）は最優先の割込処理として実行されるＭＩＤＩ割込処理のフローチャートである。この割込処理はＭＩＤＩインタフェース１５からＭＩＤＩデータを受信したときに起動されるものであり、当該ＭＩＤＩデータを取り込み（Ｓ１０）、該受信したＭＩＤＩデータとともにその受信時刻データを図３の（Ａ）に示した入力バッファに書き込む（Ｓ１１）。
【００２６】
ＭＩＤＩ処理（Ｓ５）は、前記入力バッファにＭＩＤＩデータが書き込まれていることが検出されたときに起動され、書き込まれたＭＩＤＩデータに対応した処理が行われる。
図５は、ＭＩＤＩ処理の１つであるノートオンイベント処理における動作を示す図である。この処理は、入力バッファにノートオンイベントデータが書き込まれていたときに実行される。まず、そのノートオンイベントデータのノートナンバ、ベロシティデータ、パート別音色をそれぞれＮＮ、ＶＥＬ、ｔレジスタに記憶する（Ｓ２０）。次に、３２チャンネルの発音チャンネルのなかからこのノートオンにかかる楽音を発音する発音チャンネルを割り当てｉに記憶する（Ｓ２１）。このノートオンにかかる音色データＴＰ（ｔ）をＮＮ、ＶＥＬに応じて加工する（Ｓ２２）。次に、Ｆナンバ（ＦＮ）をサンプリングレートに応じて加工し（Ｓ２３）、加工された音色データ（ＦＮを含む）をノートオンを示すデータとともにｉチャンネルの音源レジスタに書き込む（Ｓ２４）。
【００２７】
Ｆナンバ（ＦＮ）は、当該ノートナンバの楽音を生成するために波形テーブルからサンプリング周期毎に読み出す波形データの進み量を指定するデータであり、サンプリング周波数を基準となるサンプリング周波数ｆｓ（この例においては４８ｋＨｚ）から他の周波数ｆｘに変更させたときには、指定されたピッチの楽音を発生させるためにこのＦナンバを変更することが必要となる。例えば、４８ｋＨｚのサンプリング周波数を半減させて２４ｋＨｚにしたときには、Ｆナンバ、すなわち、波形テーブルから読み出す波形データの進み量を当初の２倍にする必要がある。したがって、Ｓ２３において、基準となるサンプリング周波数をｆｓ、使用するサンプリング周波数をｆｘとしたときに、ＦナンバをＦＮ’＝（ｆｓ／ｆｘ）・ＦＮに変更する処理を実行する。
【００２８】
図６は１フレーム時間に対応する周期で起動される音源処理Ｓ６を示すフローチャートである。まず、出力バッファＯＢをクリアするとともに演算順位を示すポインタｉに１をセットする（Ｓ３０）。次に、ｉチャンネルの波形データ演算処理（Ｓ３１）を実行する。このｉチャンネルの波形データ演算処理の詳細については図７を参照して後述する。このｉチャンネルの波形データ演算処理（Ｓ３１）が終わったら、全チャンネルについての波形データ演算が終了した否かを判定し（Ｓ３２）、終了していないときは、ｉをｉ＋１にインクリメントして（Ｓ３４）、新たなｉチャンネルの波形データ演算処理（Ｓ３１）を実行する。また、全チャンネル分の波形データ演算が終了したときには、出力バッファＯＢ中に生成された波形データの再生を再生部（ＤＭＡ制御回路１８）に再生予約する（Ｓ３３）。この再生予約は、ＲＡＭ１２内の記憶アドレスをＤＭＡ制御回路１８に通知することにより行なわれる。
【００２９】
図７に前記ｉチャンネルの波形データ演算処理（Ｓ３１）のフローチャートを示す。この処理は、ｉで指定されているチャンネルの波形データを１フレーム（１２８サンプル）分まとめて演算生成する処理である。まず、サンプル数カウンタｓに１をセットする（Ｓ４０）。次に、サンプリングレート変更データＣＤ１を参照して、サンプリングレートが変更されているか否かを判定する（Ｓ４１）。ここで、ＣＤ１＝０のときはサンプリングレートの変更がなく、デフォルトの４８ｋＨｚのサンプリング周波数が使用されることを示しており、また、ＣＤ＝１のときは４８ｋＨｚよりも低いサンプリング周波数にレートダウンされていることを示している。
【００３０】
ＣＤ１＝０でレートダウンされているときは、補間制御データＣＤ２を参照して、この発音チャンネルは補間なしのチャンネルであるのか、あるいは補間を実行するチャンネルであるのかを判定する（Ｓ４２）。ここで、ＣＤ２＝１の場合はこのチャンネルは補間を省略するチャンネルであることを示しており、ＣＤ＝０の場合は補間を行うチャンネルであることを示している。通常は、ピッチ変換のないドラム音などのノイズ系の楽音を発生する発音チャンネルについては、補間を省略するようにし、音階音を発生する発音チャンネルについては補間を行なうようにするのが望ましい。
【００３１】
この判定の結果、補間省略（ＣＤ２＝１）である場合は、直前の演算のアドレス（この処理チャンネルの前のフレームにおける波形読出で最後に生成したアドレス）にＦナンバ（前述したＳ２３において加工されたＦナンバ）を加算してアドレスの更新を行う（Ｓ４３）。このようにして更新されたアドレスの整数部で指定された波形テーブルから波形サンプルを読み出し、サンプルバッファＳＤ（ｓ）にセットする（Ｓ４４）。この動作をｓ＝１からｓ＝１２８になるまで繰り返し実行して（Ｓ４５、Ｓ４６）、１２８回の処理が完了すれば音量制御・累算処理（Ｓ５２）を実行し、音源処理（図６）に戻る。
【００３２】
この場合は、補間を省略してアドレスの小数部は無視しているので、折り返しノイズが生じることとなる。前述したように、このノイズ成分により高音域が強調され、エネルギーバランスの良い楽音を生成することが可能となる。
【００３３】
また、サンプリングレート変更データＣＤ１＝０でサンプリングレートが変更されておらずデフォルトの４８ｋＨｚのサンプリング周波数で動作するとき（Ｓ４１の判定結果がＹＥＳ）、および、補間制御データＣＤ２＝０でレート変更時であっても補間を行う発音チャンネルである場合（Ｓ４２の判定結果がＹＥＳ）には、直前のアドレスにＦナンバを加算してアドレスの更新を行う（Ｓ４７）。
【００３４】
このとき、通常は整数部と小数部とからなるアドレスが生成されるため、指定された波形テーブルからこのアドレスを含む２サンプル（整数部のアドレスで指定されるサンプルと整数部＋１のアドレスで指定されるサンプル）の波形データを読み出す（Ｓ４８）。これら２サンプルのデータを前記小数部の値で直線補間し、その値をサンプルバッファＳＤ（ｓ）にセットする（Ｓ４９）。この動作をｓ＝１からｓ＝１２８になるまで繰り返し実行し（Ｓ５０、Ｓ５１）、１２８回の処理が完了すれば音量制御・累算処理（Ｓ５２）を実行し、音源処理（図６）に戻る。
この場合は、アドレスの小数部を用いて一次補間を行っているため、折り返しノイズは発生しない。
【００３５】
音量制御・累算処理（Ｓ５２）においては、サンプルバッファＷＢ（ＳＤ（１）〜ＳＤ（１２８））の値に振幅ＥＧおよびチャンネル音量パラメータに基づいて楽音の立ち上がりから立ち下がりに至る音量時間変化を付与する音量制御を施す。なお、振幅ＥＧは一般的に緩やかな曲線であるため、１２８サンプル当たり１つのＥＧ値でよい。このレベル制御されたサンプルバッファＷＢの値を出力バッファＯＢ（ＯＤ（１）〜ＯＤ（１２８））の対応するサンプルに足し込む。この加算動作がｉ番目の演算順序を持つチャンネルについて順次繰り返し実行されることにより、出力バッファＯＢにはそれまでに生成した全チャンネルの楽音波形データの累算値が記憶されることとなる。
【００３６】
次に、前記メインルーチン（図４）において、パネルあるいはウインドウ画面からサンプリングレート設定変更コマンドが入力されたときに実行されるサンプリングレート設定変更イベント処理の詳細について、図８を参照して説明する。サンプリングレート設定変更コマンドが入力されたとき、操作者により設定されたサンプリングレートが４８ｋＨｚであるか否かが判定される（Ｓ６０）。サンプリングレートとして４８ｋＨｚが設定されたときはサンプリングレート変更データＣＤ１に０をセットし（Ｓ６１）、４８ｋＨｚよりも低いサンプリング周波数が設定されたときはＣＤ１に１をセットする（Ｓ６２）。そして、設定されたサンプリング周波数に対応したデータをタイマ２１、ＤＭＡ制御回路１８あるいはＤＡＣ１９にセットして（Ｓ６３）、このサンプリングレート設定変更イベント処理を終了する。
【００３７】
これにより、タイマ２１からＣＰＵ１０に対して発生されるタイマ割込の周期は、設定されたサンプリング周波数に対応する周期となる。また、ＤＭＡ制御回路１８には設定されたサンプリング周波数に対応するサンプリングクロックが供給されることとなる。したがって、ＣＰＵ１０においては設定されたサンプリング周波数に対応する時間間隔で波形生成演算が実行されるようになり、また、ＤＡＣ１９には設定されたサンプリング周期毎に楽音波形サンプルが供給されて楽音が出力されることとなる。
【００３８】
すなわち、通常時は波形生成演算が起動される周期は、ｆｓ＝４８ｋＨｚとして、１２８×（１／４８ｋＨｚ）≒２．６７（ミリ秒）であるが、サンプリング周波数がｆｘ（＜ｆｓ）のときは、１２８×（１／ｆｘ）＞２．６７ミリ秒となり、ＣＰＵの処理負担が軽減する。例えば、サンプリング周波数を２４ｋＨｚに設定したときは、波形生成演算が起動される周期は、サンプリング周波数が４８ｋＨｚの場合の２倍の約５．３３ミリ秒となり、ＣＰＵ１０における処理負担が軽減される。
【００３９】
また、上述の場合は、一度の波形生成演算において１２８サンプルの波形サンプルを演算生成しているが、これとは逆に、波形生成演算の起動周期は４８ｋＨｚの場合と同一とし、一度の波形生成演算において演算生成する波形サンプルの数を減少させるようにしてもよい。この場合にも、１度の波形生成演算に要する時間が短縮されるため、ＣＰＵ１０の処理負荷を同様に減少させることができる。
【００４０】
さらにまた、上述した実施の形態においては、サンプリングレートを低下させないときに線形補間を行ない、サンプリングレートを低下させたときに補間を行なわないようにしているが、サンプリングレートを低下させたときに補間演算の精度を下げるようにすることにより、同様の効果を得ることができる。すなわち、サンプリングレートが高い通常時には３次関数を用いる４点補間などの高精度の補間演算を行なうようにし、サンプリングレートを低下させたときには１次関数を用いる２点補間などのそれよりも精度の低い補間演算を行なうようにしても、前述した実施の形態の場合と同様の効果を得ることができる。
【００４１】
さらにまた、補間演算を省略することによって前述のように高音域のエネルギーが強調されることはサンプリングレートに関係なく、一般的に言えることである。したがって、サンプリングレートの遅速にかかわらず、補間演算を省略するようにしてもよい。このようにすれば、補間演算に要する処理負担を軽減することが可能となるばかりでなく、リズム音などノイズ成分の多い音色に対して、高音域をより強調することが可能となる。
【００４２】
なお、上述した実施形態においては、操作者の設定により、サンプリングレートの設定変更を行なうようにしていたが、これに限られることはなく、ＣＰＵの演算処理能力あるいは負荷状態に応じて最適なサンプリングレートを自動的に設定するようにしても良い。
【００４３】
【発明の効果】
本発明によれば、サンプリング周波数を低くすること、および、補間演算を簡略化することの両面から、波形生成に要する演算量を低減することが可能になるとともに、エネルギーバランスのよい楽音を生成することが可能となる。
また、高音域を強調した楽音を演算生成することが可能となる。
【図面の簡単な説明】
【図１】  本発明の楽音生成方法を実行するための装置の一構成例を示す図である。
【図２】  本発明の楽音生成方法における処理の時間的な流れを説明するための図である。
【図３】  本発明の楽音生成方法において使用される記憶エリアを示す図である。
【図４】  本発明の楽音生成方法における処理のフローチャートである。
【図５】  本発明におけるノートオンイベント処理のフローチャートである。
【図６】  本発明における音源処理のフローチャートである。
【図７】  本発明における波形データ生成演算のフローチャートである。
【図８】  本発明におけるサンプリングレート変更イベント処理のフローチャートである。
【図９】  サンプリングレートの変更について説明するための図である。
【符号の説明】
１０  ＣＰＵ、１１  ＲＯＭ、１２  ＲＡＭ、１３  ハードディスク装置、１４  ＣＤ−ＲＯＭ装置、１５  ＭＩＤＩインターフェース、１６  ディスプレイ、１７  キーボード、１８  ＤＭＡ制御回路、１９  ＤＡＣ、２０  サウンドシステム、２１  タイマ
【図１】
0003658826.tif 000002
【図２】
0003658826.tif 000003
【図３】
0003658826.tif 000004
【図４】
0003658826.tif 000005
【図５】
0003658826.tif 000006
【図６】
0003658826.tif 000007
【図７】
0003658826.tif 000008
【図８】
0003658826.tif 000009
【図９】
0003658826.tif 000010