(57)【要約】【課題】  外部から入力される演奏情報や内部で発生する演奏情報の情報量が多いときでも、音切れなどの現象を発生することなく高い音質で発音を行うようにする。【解決手段】  ＣＰＵ１は、演奏情報を受信したときは、ＲＡＭ４を検索し、受信した演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、その検出した要素に対応する発音パラメータをＲＡＭ４から読み出し、受信した演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータが検出できない場合には、その検出できない発音パラメータを演算によって生成し、読み出した全ての要素に対応する発音パラメータ、又は、読み出した一部の要素に対応する発音パラメータおよび生成した残りの要素に対応する発音パラメータ、又は、生成した全ての要素に対応する発音パラメータを楽音信号の発生のために音源ＬＳＩ６に出力する。【選択図】  図１
2006337438.tif 000002
【特許請求の範囲】
【請求項１】
外部あるいは内部で発生した演奏情報を受信する受信手段と、
演奏情報を構成する要素およびその要素に基づいて楽音信号の発生に用いられる発音パラメータを対応させて所定の記憶手段に記憶する記憶制御手段と、
前記受信手段によって演奏情報が受信されたときは前記記憶手段を検索し、受信された演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、当該検出した要素に対応する発音パラメータを前記記憶手段から読み出す検索手段と、
受信された演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータが前記検索手段によって検出できない場合には、当該検出できない発音パラメータを演算によって生成する演算手段と、
前記検索手段によって読み出された全ての要素に対応する発音パラメータ、又は、前記検索手段によって読み出された一部の要素に対応する発音パラメータおよび前記演算手段によって生成された残りの要素に対応する発音パラメータ、又は、前記演算手段によって生成された全ての要素に対応する発音パラメータを楽音信号の発生のために出力する出力手段と、
を備えた楽音発生装置。
【請求項２】
前記受信手段は、前記出力手段によって出力される発音パラメータである音色、音高、および音量のそれぞれに対応するチャンネル番号、キー番号、およびベロシティ値を要素とする演奏情報を受信することを特徴とする請求項１に記載の楽音発生装置。
【請求項３】
前記記憶手段は、発音のチャンネル数に対応する複数のチャンネルエリアを有し、各チャンネルエリアは複数のキャッシュエリアをさらに有し、前記記憶制御手段は、各キャッシュエリアに音色、音高、および音量の発音パラメータを記憶することを特徴とする請求項１に記載の楽音発生装置。
【請求項４】
前記各キャッシュエリアは、カウント値を記憶するカウントエリアをさらに有し、前記記憶制御手段は、前記検索手段によって演奏情報の要素に対応する発音パラメータがキャッシュエリアから読み出されるたびに当該キャッシュエリアにおけるカウントエリアのカウント値を増加することを特徴とする請求項３に記載の楽音発生装置。
【請求項５】
前記記憶制御手段は、前記受信手段によって受信された演奏情報の要素の中で前記記憶手段のキャッシュエリアに記憶されている発音パラメータに対応する要素数が多いほどそのキャッシュエリアにおけるカウントエリアのカウント値の増加率を大きくすることを特徴とする請求項４に記載の楽音発生装置。
【請求項６】
前記各キャッシュエリアは、前記出力手段によって出力された発音パラメータの履歴情報を記憶するヒストリエリアをさらに有し、前記記憶制御手段は、最も古い履歴情報が記憶されているヒストリエリアを有するキャッシュエリアに前記出力手段によって出力された発音パラメータを記憶することを特徴とする請求項１に記載の楽音発生装置。
【請求項７】
外部あるいは内部で発生した演奏情報を受信するステップＡと、
演奏情報を構成する要素およびその要素に基づいて楽音信号の発生に用いられる発音パラメータを対応させて所定の記憶手段に記憶するステップＢと、
前記ステップＡによって演奏情報が受信されたときは前記記憶手段を検索し、受信された演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、当該検出した要素に対応する発音パラメータを前記記憶手段から読み出すステップＣと、
受信された演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータが前記ステップＣによって検出できない場合には、当該検出できない発音パラメータを演算によって生成するステップＤと、
前記ステップＣによって読み出された全ての要素に対応する発音パラメータ、又は、前記ステップＣによって読み出された一部の要素に対応する発音パラメータおよび前記ステップＤによって生成された残りの要素に対応する発音パラメータ、又は、前記ステップＤによって生成された全ての要素に対応する発音パラメータを楽音信号の発生のために出力するステップＥと、
をコンピュータに実行させる楽音発生処理のプログラム。
【請求項８】
前記ステップＡは、前記ステップＥによって出力される発音パラメータである音色、音高、および音量のそれぞれに対応するチャンネル番号、キー番号、およびベロシティ値を要素とする演奏情報を受信することを特徴とする請求項７に記載の楽音発生処理のプログラム。
【請求項９】
前記記憶手段は、発音のチャンネル数に対応する複数のチャンネルエリアを有し、各チャンネルエリアは複数のキャッシュエリアをさらに有し、前記ステップＢは、各キャッシュエリアに音色、音高、および音量の発音パラメータを記憶することを特徴とする請求項７に記載の楽音発生処理のプログラム。
【請求項１０】
前記各キャッシュエリアは、カウント値を記憶するカウントエリアをさらに有し、前記ステップＤは、前記ステップＣによって演奏情報に対応する発音パラメータが読み出されるたびに当該キャッシュエリアにおけるカウントエリアのカウント値を増加することを特徴とする請求項９に記載の楽音発生処理のプログラム。
【請求項１１】
前記ステップＢは、前記ステップＡによって受信された演奏情報の中で前記記憶手段のキャッシュエリアに記憶されている発音パラメータに対応する要素数が多いほどそのキャッシュエリアにおけるカウントエリアのカウント値の増加率を大きくすることを特徴とする請求項１０に記載の楽音発生処理のプログラム。
【請求項１２】
前記各キャッシュエリアは、前記ステップＥによって出力された発音パラメータの履歴情報を記憶するヒストリエリアをさらに有し、前記ステップＢは、最も古い履歴情報が記憶されているヒストリエリアを有するキャッシュエリアに前記ステップＥによって出力された発音パラメータを記憶することを特徴とする請求項７に記載の楽音発生処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音発生装置および楽音発生処理のプログラムに関し、特に、演奏情報に対応する発音パラメータを生成して楽音を発生する楽音発生装置および楽音発生処理のプログラムに関するものである。
【背景技術】
【０００２】
楽音発生装置の中には、ＭＩＤＩ機器としてのキーボード（鍵盤装置）やシーケンサなどに接続して、外部のＭＩＤＩ機器からキーボードに入力されるＭＩＤＩ形式の演奏情報、又は、シーケンサ内部で発生するＭＩＤＩ形式の演奏情報を受信して、楽音信号を発生するものがある。従来このような楽音発生装置では、受信する演奏情報の要素であるチャンネル番号、キー番号、およびベロシティ値に応じて演算処理を行って、音色、音高（ピッチ）、および音量の発音パラメータを生成し、ＤＳＰ（デジタル信号プロセッサ）などで構成された音源回路に入力する。音源回路は、これらの発音パラメータに対応する波形データをメモリから読み出して楽音信号を発生し、Ｄ／Ａ変換回路や出力回路などからなるサウンドシステムに送出して発音させる。
【０００３】
例えば、ある特許文献のエンベロープ制御装置およびエンベロープ制御方法においては、演奏パートを構成する各発音チャンネルの楽音を個別に音量制御および音色制御しながら、各演奏パート毎に音量制御および音色制御を行うために、演奏パートの楽音を制御するパートエンベロープ波形によって、その演奏パートを形成するボイスエンベロープ波形を修飾し、各発音チャンネル毎の修飾エンベロープ波形を発生させて、演奏情報に応じて生成される各発音チャンネル毎の波形データの音量および音色を、それぞれ対応する発音チャンネルの修飾エンベロープ波形に応じて制御する構成になっている。（特許文献１参照）
また、他の特許文献の電子楽器のキーオンディレイ効果付加装置においては、マイクロコントローラや音源ＬＳＩなどに負荷がかからないようにして、できるだけ多くの楽音発音チャンネル数を確保するとともに、波形メモリに必要な記憶容量も少なくするために、１つのキーオン情報に基づき、複数の発音発生チャンネルに対して、波形読出アドレスやエンベロープ係数を含む制御パラメータ（発音パラメータ）を同時に転送し、任意の楽音波形を波形記憶手段に記憶し、転送された複数の楽音発生チャンネルに割り振られた制御パラメータに基づき、波形記憶手段からの楽音波形データの読出を行うとともに、この波形データにエンベロープの付与を行って楽音信号を生成し、楽音発生チャンネル毎に生成された楽音信号に基づいて楽音を発生する構成になっている。（特許文献２参照）
【特許文献１】特開２００３−２８０６５４号公報
【特許文献１】特開平１１−３０５７７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献１および特許文献２の構成は、発音チャンネルが少ない場合、例えば８チャンネルや１６チャンネル程度の場合には有効であるが、近年の電子楽器などの楽音発生装置においては、３２チャンネル、６４チャンネル、１２８チャンネルのように、発音チャンネル数が次第に増加しているので、上記特許文献１および特許文献２のような演算処理によって楽音信号を生成すると、外部から入力される演奏情報や内部で発生する演奏情報を受信したときに、演算処理が間に合わず音切れなどの現象が発生するという課題があった。
本発明は、このような従来の課題を解決するためのものであり、外部から入力される演奏情報や内部で発生する演奏情報の情報量が多いときでも、音切れなどの現象を発生することなく高い音質で発音を行うことを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に記載の楽音発生装置は、外部あるいは内部で発生した演奏情報を受信する受信手段（実施形態においては、図１のＣＰＵ１に相当する）と、演奏情報を構成する要素およびその要素に基づいて楽音信号の発生に用いられる発音パラメータを対応させて所定の記憶手段（実施形態においては、図１のＲＡＭ５に相当する）に記憶する記憶制御手段と、受信手段によって演奏情報が受信されたときは記憶手段を検索し、受信された演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、当該検出した要素に対応する発音パラメータを記憶手段から読み出す検索手段（実施形態においては、図１のＣＰＵ１に相当する）と、受信された演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータが検索手段によって検出できない場合には、当該検出できない発音パラメータを演算によって生成する演算手段（実施形態においては、図１のＣＰＵ１に相当する）と、検索手段によって読み出された全ての要素に対応する発音パラメータ、又は、検索手段によって読み出された一部の要素に対応する発音パラメータおよび演算手段によって生成された残りの要素に対応する発音パラメータ、又は、演算手段によって生成された全ての要素に対応する発音パラメータを楽音信号の発生のために出力する出力手段（実施形態においては、図１のＣＰＵ１に相当する）と、を備えた構成になっている。
【０００６】
請求項１の楽音発生装置において、請求項２に記載したように、受信手段は、出力手段によって出力される発音パラメータである音色、音高、および音量のそれぞれに対応するチャンネル番号、キー番号、およびベロシティ値を要素とする演奏情報を受信するような構成にしてもよい。
【０００７】
請求項１の楽音発生装置において、請求項３に記載したように、記憶手段は、発音のチャンネル数に対応する複数のチャンネルエリアを有し、各チャンネルエリアは複数のキャッシュエリアをさらに有し、記憶制御手段は、各キャッシュエリアに音色、音高、および音量の発音パラメータを記憶するような構成にしてもよい。
【０００８】
請求項３の楽音発生装置において、請求項４に記載したように、各キャッシュエリアは、カウント値を記憶するカウントエリアをさらに有し、記憶制御手段は、検索手段によって演奏情報の要素に対応する発音パラメータがキャッシュエリアから読み出されるたびに当該キャッシュエリアにおけるカウントエリアのカウント値を増加するような構成にしてもよい。
【０００９】
請求項４の楽音発生装置において、請求項５に記載したように、記憶制御手段は、受信手段によって受信された演奏情報の要素の中で記憶手段のキャッシュエリアに記憶されている発音パラメータに対応する要素数が多いほどそのキャッシュエリアにおけるカウントエリアのカウント値の増加率を大きくするような構成にしてもよい。
【００１０】
請求項１の楽音発生装置において、請求項６に記載したように、各キャッシュエリアは、出力手段によって出力された発音パラメータの履歴情報を記憶するヒストリエリアをさらに有し、記憶制御手段は、最も古い履歴情報が記憶されているヒストリエリアを有するキャッシュエリアに出力手段によって出力された発音パラメータを記憶するような構成にしてもよい。
【００１１】
請求項７に記載の楽音発生処理のプログラムは、外部あるいは内部で発生した演奏情報を受信するステップＡと、演奏情報を構成する要素およびその要素に基づいて楽音信号の発生に用いられる発音パラメータを対応させて所定の記憶手段（実施形態においては、図１のＲＡＭ５に相当する）に記憶するステップＢと、ステップＡによって演奏情報が受信されたときは記憶手段を検索し、受信された演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、当該検出した要素に対応する発音パラメータを記憶手段から読み出すステップＣと、受信された演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータがステップＣによって検出できない場合には、当該検出できない発音パラメータを演算によって生成するステップＤと、ステップＣによって読み出された全ての要素に対応する発音パラメータ、又は、ステップＣによって読み出された一部の要素に対応する発音パラメータおよびステップＤによって生成された残りの要素に対応する発音パラメータ、又は、ステップＤによって生成された全ての要素に対応する発音パラメータを楽音信号の発生のために出力するステップＥと、をコンピュータに実行させる。
【００１２】
請求項７の楽音発生処理のプログラムにおいて、請求項８に記載したように、ステップＡは、ステップＥによって出力される発音パラメータである音色、音高、および音量のそれぞれに対応するチャンネル番号、キー番号、およびベロシティ値を要素とする演奏情報を受信するような構成にしてもよい。
【００１３】
請求項７の楽音発生処理のプログラムにおいて、請求項９に記載したように、記憶手段は、発音のチャンネル数に対応する複数のチャンネルエリアを有し、各チャンネルエリアは複数のキャッシュエリアをさらに有し、ステップＢは、各キャッシュエリアに音色、音高、および音量の発音パラメータを記憶するような構成にしてもよい。
【００１４】
請求項９の楽音発生処理のプログラムにおいて、請求項１０に記載したように、各キャッシュエリアは、カウント値を記憶するカウントエリアをさらに有し、ステップＤは、ステップＣによって演奏情報に対応する発音パラメータが読み出されるたびに当該キャッシュエリアにおけるカウントエリアのカウント値を増加するような構成にしてもよい。
【００１５】
請求項１０の楽音発生処理のプログラムにおいて、請求項１１に記載したように、ステップＢは、ステップＡによって受信された演奏情報の中で記憶手段のキャッシュエリアに記憶されている発音パラメータに対応する要素数が多いほどそのキャッシュエリアにおけるカウントエリアのカウント値の増加率を大きくするような構成にしてもよい。
【００１６】
請求項７の楽音発生処理のプログラムにおいて、請求項１２に記載したように、各キャッシュエリアは、ステップＥによって出力された発音パラメータの履歴情報を記憶するヒストリエリアをさらに有し、ステップＢは、最も古い履歴情報が記憶されているヒストリエリアを有するキャッシュエリアにステップＥによって出力された発音パラメータを記憶するような構成にしてもよい。
【発明の効果】
【００１７】
本発明の楽音発生装置および楽音発生処理のプログラムによれば、外部から入力される演奏情報や内部で発生する演奏情報の情報量が多いときでも、音切れなどの現象を発生することなく高い音質で発音を行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明による楽音発生装置の実施形態について図１ないし図7を参照して説明する。
図１は、実施形態における楽音発生装置の構成を示すブロック図である。図１において、ＣＰＵ１は、システムバスおよび入出力ポートに接続されている各部との間で指令およびデータの授受を行って、この装置に接続されている電子楽器２から入力される演奏情報に応じて楽音を発生する。電子楽器２は、例えば、キーボードやシーケンサで構成され、外部のＭＩＤＩ機器からキーボードに入力されるＭＩＤＩデータ、シーケンサの内部で発生されるＭＩＤＩデータを演奏情報として楽音発生装置に出力する。
【００１９】
ＣＰＵ１のシステムバスには、キースキャナ３、ＲＯＭ４、ＲＡＭ５が接続されている。キースキャナ３は、電子楽器２の演奏による演奏情報又は電子楽器２から出力されるＭＩＤＩデータの演奏情報をシステムバスに取り込んでＣＰＵ１に入力する。演奏情報は、一般にチャンネル番号、キー番号、ベロシティ値、エフェクト値などで構成されているが、この実施形態においては、チャンネル番号、キー番号、およびベロシティ値を演奏情報の要素とする。ＲＯＭ４は、ＣＰＵ１によって実行される楽音発生処理のプログラムおよび初期データをあらかじめ格納している。ＲＡＭ５は、ＣＰＵ１のワークエリアであり、後述するように、各種のレジスタを有する。
【００２０】
ＣＰＵ１の入出力ポートには音源ＬＳＩ６が接続されている。音源ＬＳＩ６は、ＣＰＵ１から出力される発音指示および演奏情報に応じて、発音パラメータを生成するための演算処理を行い、波形ＲＯＭ７から波形データを読み出して楽音信号を発生する。また、音源ＬＳＩ６は、複数（ｎ個）の発音チャンネルを備えており、ポリフォニックの楽音信号を発生することができる。Ｄ／Ａ変換回路８は、音源ＬＳＩ６で発生された楽音信号をデジタルからアナログに変換して出力回路９に供給する。出力回路９は、フィルタ回路や増幅回路などを有するサウンドシステムであり、Ｄ／Ａ変換回路８から供給される楽音信号に対してフィルタ処理や増幅処理を施してスピーカから発音させる。
【００２１】
図２は、図１の音源ＬＳＩ６のｎ個の発音チャンネルの構成を示す図である。各発音チャンネルは、入力される波形データに対してフィルタ処理を行うフィルタ１１、入力されるフィルタ周波数およびフィルタエンベロープレートに応じてフィルタ１１のエンベロープを制御するエンベロープジェネレータ１２、フィルタ１１から出力される波形データに対して増幅処理を行うアンプ１３、入力される音量レベルおよび音量エンベロープレートに応じてアンプ１３のエンベロープを制御するエンベロープジェネレータ１４で構成されている。合成回路１５は、ｎ個の発音チャンネルのアンプ１３から出力される各楽音信号を合成して、図１のＤ／Ａ変換回路８に出力する。
【００２２】
図３は、図１のＲＡＭ５のレジスタに一時的に記憶されるデータの構成を示す図である。まず、ＲＡＭ５に記憶される発音パラメータのレジスタであるRxChannel 、RxKey 、RxVelocity 、Adrs 、FilterFreq 、FilterEnvRate 、AmpLvl 、AmpEnvRate 、Pitch 、HistoryCounter 、HitCounter について説明する。
RxChannel 、RxKey 、およびRxVelocityはそれぞれ、電子楽器２が受信する演奏情報の要素であるチャンネル番号、キー番号、およびベロシティ値のＭＩＤＩデータをセットするレジスタである。Adrsは、チャンネル番号およびキー番号によって決定する波形ＲＯＭ７のアドレスをセットするレジスタである。Pitchは、チャンネル番号およびキー番号によって決定される音高をセットするレジスタである。チャンネル番号毎に音色が割り当てられ、さらに、キー番号によっても異なる波形データが割り当てられている。したがって、チャンネル番号およびキー番号によって波形データの読出開始アドレスが決定する。FilterFreq は、チャンネル番号、キー番号、およびベロシティ値によって決定するフィルタ周波数をセットするレジスタである。チャンネル毎に基本的なフィルタ周波数が設定されているが、これをベースにキースケーリングが行われ、さらにベロシティ値によってもフィルタ周波数が変動するので、これら３つの要素によって最終的なフィルタ周波数が決定する。FilterEnvRateは、チャンネル番号によって決定されるフィルタの開始エンベロープレートをセットするレジスタである。FilterFreqおよびFilterEnvRateは、音源ＬＳＩ６のエンベロープジェネレータ１２に入力される。AmpLvl は、チャンネル番号およびベロシティ値によって決定される音量レベルをセットするレジスタである。チャンネル番号に応じた基本的な音量レベルにベロシティ値を乗算して最終的な音量レベルが決定する。AmpEnvRateは、チャンネル番号によって決定されるアンプの開始エンベロープレートをセットするレジスタである。AmpLvlおよびAmpEnvRateは、音源ＬＳＩ６のエンベロープジェネレータ１４に入力される。
【００２３】
図４は、発音パラメータのレジスタと演奏情報の要素であるチャンネル番号、キー番号、およびベロシティ値との相関性を示す図である。すなわち、上記したように、波形アドレスAdrs は、チャンネル番号およびキー番号に依存する。フィルタ周波数FilterFreq は、チャンネル番号、キー番号、およびベロシティ値に依存する。フィルタエンベロープレートFilterEnvRate は、チャンネル番号のみに依存する。音量レベルAmpLvl は、チャンネル番号およびベロシティ値に依存する。音量エンベロープレートAmpEnvRate は、チャンネル番号のみに依存する。ピッチPitch は、チャンネル番号およびキー番号に依存する。
【００２４】
また、図３において、ＲＡＭ５には、ｎ個の発音チャンネルバッファに対応して、チャンネル（１）キャッシュ配列、チャンネル（２）キャッシュ配列、……チャンネル（ｎ）キャッシュ配列からなるｎ個のチャンネルエリアが設けられている。さらに、各チャンネル（  ）キャッシュ配列には、キャッシュ（１）、キャッシュ（２）、……キャッシュ（ｍ）からなる複数のキャッシュエリア、およびチャンネルのHistoryCounterが設けられている。各キャッシュ（  ）には、複数のレジスタが設けられている。図３に示すように、これらのレジスタには、HitCounter、HistoryCounter、チャンネル番号、キー番号、ベロシティ値、波形アドレス、フィルタ周波数、フィルタエンベロープレート、音量レベル、音量エンベロープレート、ピッチからなる演奏情報の要素および発音パラメータが記憶される。HitCounterは、自身のキャッシュからデータが読み出されるたびにカウント値が増加されるカウンタである。HistoryCounterは、自身のキャッシュからデータが読み出されるたびに日時の履歴情報が更新されるカウンタである。
【００２５】
次に、図１の楽音発生装置の動作について、図５ないし図７のフローチャートに基づいて説明する。
図５は、ＣＰＵ１のメインルーチンのフローチャートである。所定のイニシャライズ（ステップＳＡ１）の後、以下のループ処理を行う。電子楽器２からＭＩＤＩ  ＩＮすなわち演奏情報の入力があるか否かを判別し（ステップＳＡ２）、演奏情報の入力があったときは、その演奏情報がノートオンであるか否かを判別する（ステップＳＡ３）。ノートオンの場合にはノートオン処理を実行する（ステップＳＡ４）。その演奏情報がノートオンでない場合には、ノートオフであるか否かを判別し（ステップＳＡ５）、ノートオフである場合にはノートオフ処理を実行する（ステップＳＡ６）。その演奏情報がノートオフでない場合、例えば、音色変更などのその他の制御情報である場合には、その他の処理を実行する（ステップＳＡ７）。ステップＳＡ４、ステップＳＡ６、又はステップＳＡ７の処理の後は、ステップＳＡ２に移行して、上記ループ処理を繰り返す。
【００２６】
図６および図７は、図５のステップＳＡ４のノートオン処理のフローチャートである。図６において、キースキャナ３を介して電子楽器２から受信したチャンネル番号をRxChannelにストアし（ステップＳＢ１）、受信したキー番号をRxKey にストアし（ステップＳＢ２）、受信したベロシティ値をRxVelocity にストアする（ステップＳＢ３）。次に、RxChannelが示すチャンネル番号のキャッシュ配列の中から、RxKey のキー番号およびRxVelocityのベロシティ値に一致するものを検索し（ステップＳＢ４）、RxKey のキー番号とキャッシュのキー番号とが一致するか否かを判別する（ステップＳＢ５）。
【００２７】
両方のキー番号が一致したときは、キャッシュのHitCounterを１だけインクリメントする（ステップＳＢ６）。さらに、RxVelocityのベロシティ値とキャッシュのベロシティ値とが一致するか否かを判別する（ステップＳＢ７）。両方のベロシティ値が一致したときは、キャッシュのHitCounterをさらに１だけインクリメントする（ステップＳＢ８）。すなわち、一致する要素が多いほどHitCounterのカウント値を増加する。次に、キャッシュの全ての発音パラメータである波形アドレス、フィルタ周波数、フィルタエンベロープレート、音量レベル、音量エンベロープレート、およびピッチの値を、対応するレジスタAdrs 、FilterFreq 、FilterEnvRate 、AmpLvl 、AmpEnvRate 、およびPitchにセットする（ステップＳＢ９）。そして、セットしたレジスタの発音パラメータの値を音源ＬＳＩ６に供給して発音を指示する（ステップＳＢ１０）。この後は、メインルーチンに戻る。
【００２８】
ステップＳＢ７において、RxVelocityのベロシティ値とキャッシュのベロシティ値とが一致しない場合には、キャッシュの発音パラメータのうち、波形アドレス、フィルタエンベロープレート、音量エンベロープレート、およびピッチを、Adrs 、FilterEnvRate 、AmpEnvRate 、およびPitchにセットする（ステップＳＢ１１）。次に、RxVelocityのベロシティ値によりフィルタ周波数および音量レベルを演算し、その演算した値をFilterFreq およびAmpLvl にセットする（ステップＳＢ１２）。そして、セットしたレジスタの発音パラメータおよびキャッシュから読み出した発音パラメータの値を音源ＬＳＩ６に供給して発音を指示する（ステップＳＢ１０）。この後は、メインルーチンに戻る。
【００２９】
ステップＳＢ５において、RxKey のキー番号とキャッシュのキー番号とが一致しない場合には、図７のフローチャートにおいて、パラメータ演算で求めた値をAdrs 、FilterFreq 、FilterEnvRate 、AmpLvl 、AmpEnvRate 、およびPitchにセットする（ステップＳＢ１３）。次に、RxChannelのチャンネル番号のキャッシュ配列の中からHitCounterが最小のものをさがす（ステップＳＢ１４）。すなわち、受信した演奏情報の発音パラメータとして最も利用頻度が低いキャッシュをさがす。そして、HitCounterが最小のものがひとつであるか又は複数であるかを判別する（ステップＳＢ１５）。HitCounterが最小のキャッシュが複数の場合には、それら複数のキャッシュの中でHistoryCounterが最小のものを選択する（ステップＳＢ１６）。すなわち、複数のキャッシュの中でHistoryCounterの履歴情報が最も古い履歴のものを選択する。HitCounterが最小のキャッシュがひとつの場合、又は、ひとつのキャッシュを選択した場合には、各レジスタにセットした発音パラメータと、RxChannel 、RxKey 、およびRxVelocityの値をそのキャッシュに上書きする（ステップＳＢ１７）。この後、キャッシュのHistoryCounterにチャンネルのHistoryCounterの値をストアし（ステップＳＢ１８）、チャンネルのHistoryCounterの値を１だけインクリメントする（ステップＳＢ１９）。そして、キャッシュのHistoryCounterを０にリセットして（ステップＳＢ２０）、図６のステップＳＢ１０に移行して、セットしたレジスタの発音パラメータの値を音源ＬＳＩ６に供給して発音を指示する。この後は、メインルーチンに戻る。
【００３０】
以上のように、この実施形態によれば、ＣＰＵ１は、外部あるいは内部で発生した演奏情報を受信し、演奏情報を構成する要素およびその要素に基づいて楽音信号の発生に用いられる発音パラメータを対応させてＲＡＭ４に記憶する。演奏情報を受信したときは、ＲＡＭ４を検索し、受信した演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、その検出した要素に対応する発音パラメータをＲＡＭ４から読み出し、受信した演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータが検出できない場合には、その検出できない発音パラメータを演算によって生成する。そして、読み出した全ての要素に対応する発音パラメータ、又は、読み出した一部の要素に対応する発音パラメータおよび生成した残りの要素に対応する発音パラメータ、又は、生成した全ての要素に対応する発音パラメータを楽音信号の発生のために音源ＬＳＩ６に出力する。
したがって、外部から入力される演奏情報や内部で発生する演奏情報の情報量が多いときでも、音切れなどの現象を発生することなく高い音質で発音を行うことができる。
【００３１】
また、ＣＰＵ１は、音源ＬＳＩ６によって発生される発音信号の発音パラメータである音色、音高、および音量のそれぞれに対応するチャンネル番号、キー番号、およびベロシティ値を要素とする演奏情報を受信して、各要素に対応する発音パラメータと同じものがＲＡＭ５にあるかどうかを検索する。
したがって、受信した演奏情報の全ての要素に対応する発音パラメータだけでなく、一部の発音パラメータと同じものがＲＡＭ５にある場合でも、その発音パラメータを再利用することで、発音パラメータを生成する演算処理を低減することが可能になる。
【００３２】
また、ＲＡＭ５は、発音のチャンネル数に対応する複数のチャンネルエリアを有し、各チャンネルエリアは複数のキャッシュエリアをさらに有し、ＣＰＵ１は、各キャッシュエリアに音色、音高、および音量の発音パラメータを記憶する。
したがって、同じ音色の演奏情報について、異なる音高および異なる音量に対応する豊富な発音パラメータを再利用するために記憶できるので、発音パラメータを生成する演算処理を低減することが可能になる。
【００３３】
また、各キャッシュエリアは、カウント値を記憶するカウントエリアをさらに有し、ＣＰＵ１は、演奏情報の要素に対応する発音パラメータをキャッシュエリアから読み出すたびに、そのキャッシュエリアにおけるカウントエリアのカウント値を増加する。
したがって、ＲＡＭ５に記憶された発音パラメータの利用頻度を把握できるので、キャッシュエリアに新たに発音パラメータを上書きする場合に、利用頻度が最も低いキャッシュエリアを容易に選択できる。
【００３４】
ＣＰＵは、受信した演奏情報の要素の中で、ＲＡＭ５のキャッシュエリアに記憶されている発音パラメータに対応する要素数が多いほど、そのキャッシュエリアにおけるカウントエリアのカウント値の増加率を大きくする。
したがって、再利用する発音パラメータの要素数に応じて利用頻度に重み付けをすることで、キャッシュエリアに新たに発音パラメータを上書きする場合に、重み付けした利用頻度が最も低いキャッシュエリアを容易に選択できる。
【００３５】
各キャッシュエリアは、音源ＬＳＩ６によって発生された楽音信号の発音パラメータの履歴情報を記憶するヒストリエリアをさらに有し、ＣＰＵ１は、最も古い履歴情報が記憶されているヒストリエリアを有するキャッシュエリアに音源ＬＳＩ６によって発生された楽音信号の発音パラメータを記憶する。
したがって、キャッシュエリアに新たに発音パラメータを上書きする場合に、再利用した時が最も古いキャッシュエリアを容易に選択できる。
【００３６】
なお、上記実施形態においては、図１のＲＯＭ４にあらかじめ格納されている楽音発生処理のプログラムをＣＰＵ１が実行する装置の発明、すなわち物の発明について説明したが、ＦＤ（フレキシブルディスク）、ＣＤ−ＲＯＭ、ＤＶＤ、メモリカードなどの外部記憶媒体からフラッシュメモリなどの不揮発性メモリにインストールした楽音発生処理のプログラム、又は、インターネットなどのネットワークからダウンロードして不揮発性メモリにインストールした楽音発生処理のプログラムをＣＰＵが実行する構成も可能である。この場合には、楽音発生処理のプログラムの発明、そのプログラムを記憶した記憶媒体の発明、および、そのプログラムを実行する楽音発生処理方法の発明を構成する。
【００３７】
すなわち、本発明の楽音発生処理のプログラムは、
外部あるいは内部で発生した演奏情報を受信するステップＡと、演奏情報を構成する要素およびその要素に基づいて楽音信号の発生に用いられる発音パラメータを対応させて所定の記憶手段に記憶するステップＢと、前記ステップＡによって演奏情報が受信されたときは前記記憶手段を検索し、受信された演奏情報を構成する全ての要素を検出したとき又は一部の要素を検出したときは、当該検出した要素に対応する発音パラメータを前記記憶手段から読み出すステップＣと、受信された演奏情報を構成する一部の要素又は全ての要素に対応する発音パラメータが前記ステップＣによって検出できない場合には、当該検出できない発音パラメータを演算によって生成するステップＤと、前記ステップＣによって読み出された全ての要素に対応する発音パラメータ、又は、前記ステップＣによって読み出された一部の要素に対応する発音パラメータおよび前記ステップＤによって生成された残りの要素に対応する発音パラメータ、又は、前記ステップＤによって生成された全ての要素に対応する発音パラメータを楽音信号の発生のために出力するステップＥと、をコンピュータに実行させる。
【００３８】
前記ステップＡは、前記ステップＥによって出力される発音パラメータである音色、音高、および音量のそれぞれに対応するチャンネル番号、キー番号、およびベロシティ値を要素とする演奏情報を受信することを特徴とする。
【００３９】
前記記憶手段は、発音のチャンネル数に対応する複数のチャンネルエリアを有し、各チャンネルエリアは複数のキャッシュエリアをさらに有し、前記ステップＢは、各キャッシュエリアに音色、音高、および音量の発音パラメータを記憶することを特徴とする。
【００４０】
前記各キャッシュエリアは、カウント値を記憶するカウントエリアをさらに有し、前記ステップＤは、前記ステップＣによって演奏情報に対応する発音パラメータが読み出されるたびに当該キャッシュエリアにおけるカウントエリアのカウント値を増加することを特徴とする。
【００４１】
前記ステップＢは、前記ステップＡによって受信された演奏情報の中で前記記憶手段のキャッシュエリアに記憶されている発音パラメータに対応する要素数が多いほどそのキャッシュエリアにおけるカウントエリアのカウント値の増加率を大きくすることを特徴とする。
【００４２】
前記各キャッシュエリアは、前記ステップＥによって出力された発音パラメータの履歴情報を記憶するヒストリエリアをさらに有し、前記ステップＢは、最も古い履歴情報が記憶されているヒストリエリアを有するキャッシュエリアに前記ステップＥによって出力された発音パラメータを記憶することを特徴とする。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施形態における楽音発生装置の構成を示すブロック図。
【図２】図１の音源ＬＳＩのｎ個の発音チャンネルの構成を示す図。
【図３】図１のＲＡＭのレジスタの構成を示す図。
【図４】演奏情報の要素と発音パラメータとの相関性を示す図。
【図５】図１のＣＰＵのメインルーチンのフローチャート。
【図６】図５におけるノートオン処理のフローチャート。
【図７】図６に続くノートオン処理のフローチャート。
【符号の説明】
【００４４】
１  ＣＰＵ
２  電子楽器
３  キースキャナ
４  ＲＯＭ
５  ＲＡＭ
６  音源ＬＳＩ
７  波形ＲＯＭ
８  Ｄ／Ａ変換回路
９  出力回路
１１  フィルタ
１２  エンベロープジェネレータ
１３  アンプ
１４  エンベロープジェネレータ
１５  合成回路
【図１】
2006337438.tif 000003
【図２】
2006337438.tif 000004
【図３】
2006337438.tif 000005
【図４】
2006337438.tif 000006
【図５】
2006337438.tif 000007
【図６】
2006337438.tif 000008
【図７】
2006337438.tif 000009