(57)【要約】【課題】  打弦音の波形データおよび共鳴音の波形データをそれぞれ異なる記憶手段から読み出して、演奏条件に応じて様々な比率でミックスする場合に、同時に使用する発音チャンネル数を少なくする。【解決手段】  音源７は、ＣＰＵ１によって発音すべき楽音が最初の演奏であると検出された場合には、波形ＲＯＭ９から読み出して混合した波形データに基づく楽音信号をＤ／Ａコンバータ１１に出力しながら、その波形データを波形ＲＡＭ１０に記憶し、ＣＰＵ１によって発音すべき楽音が２度目以降の演奏であると検出された場合には、最初の演奏に応じて波形ＲＡＭ１０に記憶されている波形データを読み出して、その読み出した波形データに基づく楽音信号をＤ／Ａコンバータ１１に出力して、発音部１２によって発音させる。【選択図】  図１
2007316357.tif 000002
【特許請求の範囲】
【請求項１】
演奏に応じて発音すべき楽音に対応する第１の波形データを第１の記憶手段から読み出すと共に、当該発音すべき楽音に共鳴する楽音に対応する第２の波形データを第２の記憶手段から読み出す波形読出手段と、
前記波形読出手段によって読み出された第１および第２の波形データを混合して第３の波形データを生成する波形混合手段と、
前記波形混合手段によって生成された第３の波形データが第３の記憶手段に記憶されているか否かを検出するデータ検出手段と、
前記波形混合手段によって生成された第３の波形データが前記第３の記憶手段に記憶されていないことが前記データ検出手段によって検出されたときは、当該生成された第３の波形データに基づく楽音信号を発音手段に出力しながら、当該第３の波形データを第３の記憶手段に記憶し、前記波形混合手段によって生成された第３の波形データが前記第３の記憶手段に記憶されていることが前記データ検出手段によって検出されたときは、前記第３の記憶手段に記憶されている第３の波形データを読み出して、当該読み出された第３の波形データに基づく楽音信号を前記発音手段に出力する出力制御手段と、
を備えたことを特徴とする楽音発生装置。
【請求項２】
演奏の音高およびベロシティを検出する演奏検出手段をさらに備え、前記波形混合手段は前記演奏検出手段によって検出された音高およびベロシティに対応した比率で前記波形読出手段によって読み出された第１および第２の波形データを混合して第３の波形データを生成することを特徴とする請求項１に記載の楽音発生装置。
【請求項３】
演奏に応じて発音すべき楽音に対応する第１の波形データを第１の記憶手段から読み出すと共に、当該発音すべき楽音に共鳴する楽音に対応する第２の波形データを第２の記憶手段から読み出すステップＡと、
前記ステップＡによって読み出された第１および第２の波形データを混合して第３の波形データを生成するステップＢと、
前記ステップＢによって生成された第３の波形データが第３の記憶手段に記憶されているか否かを検出するステップＣと、
前記ステップＢによって生成された第３の波形データが前記第３の記憶手段に記憶されていないことが前記ステップＣによって検出されたときは、前記ステップＢによって生成された第３の波形データに基づく楽音信号を発音手段に出力しながら、当該第３の波形データを前記第３の記憶手段に記憶し、前記ステップＢによって生成された第３の波形データが前記第３の記憶手段に記憶されていることが前記ステップＣによって検出されたときは、前記第３の記憶手段に記憶されている第３の波形データを読み出して、当該読み出した第３の波形データに基づく楽音信号を前記発音手段に出力するステップＤと、
をコンピュータに実行させる楽音発生処理のプログラム。
【請求項４】
演奏の音高およびベロシティを検出するステップＤをさらに有し、前記ステップＢは前記ステップＤによって検出された音高およびベロシティに対応した比率で前記ステップＡによって読み出された第１および第２の波形データを混合して第３の波形データを生成することを特徴とする請求項３に記載の楽音発生処理のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音発生装置および楽音発生処理のプログラムに関し、特に、演奏された楽音と楽器内で共鳴する共鳴音とをミックスして発音させる楽音発生装置および楽音発生処理のプログラムに関するものである。
【背景技術】
【０００２】
アコースティックピアノにおいては、押鍵された楽音（一般に、「打弦音」という）を発音する際に、ペダルやその他の演奏補助操作子を操作しない場合には、その打弦音に余韻を持たせる共鳴音を発生し、操作した場合には、打弦音だけを発音して、多様な楽音を実現している。さらに、アコースティックピアノの弦の裏の共鳴板によって発生する共鳴音が打弦音とミックスして深みのある豊かな楽音を実現している。電子鍵盤楽器などの楽音発生装置においても、このようなアコースティックピアノなどの自然楽器の共鳴音を発生するための構成が多く提案されている。
例えば、ある提案の電子楽器によれば、指定された音高の楽音のみならず、それに共鳴する音高の楽音も発生して、深みのあるリバーブ効果を実現する。この提案においては、指定された音高に対応する第１の楽音信号を制御するエンベロープ波形信号よりも、ピークレベルが低く、かつ減衰時間が十分に長いエンベロープ波形信号で共鳴音高の第２の楽音信号を制御する。このために、複数のチャンネルを適宜に又は固定的に、指定された音高用および共鳴音高用に分けて発音する構成になっている。（特許文献１参照）
また、ある提案の電子楽器によれば、アコースティックピアノ等の鍵盤楽器の残響音を高い忠実度で再現する。この提案においては、ペダルが踏まれていない場合の打弦音と、ペダルが踏まれている場合の打弦音を収音し、各々波形データａおよび波形データｂとして波形メモリに記憶させる。楽音信号を形成する場合は、ペダルが踏まれていないときは、波形メモリ内の波形データａを選択し、ペダルが踏まれているときは、波形データｂを選択するような構成になっている。（特許文献２参照）
また、ある提案の楽音信号発生装置によれば、ピアノのダンパペダル効果を好適に模擬する。この提案においては、複数のピアノ音色の楽音信号を混合した混合楽音信号を形成し、混合楽音信号を演算処理して共鳴性のピアノ音色の楽音信号を生成し、ダンパペダルが非操作状態にあるときに混合楽音信号を送出し、ダンパペダルが非操作状態から操作状態になるのに応じて共鳴性の楽音信号を送出する。（特許文献３参照）
また、ある提案の楽音発生装置によれば、ペダルなどの演奏補助操作子の操作タイミングおよび操作量に基づいて、共鳴音などの付加音の発音およびその特性を動的に制御する。この提案においては、波形データメモリは、楽音波形データが複数の音成分のセットとして記憶されている。ミキサはｎ個の発音チャンネルを混合した楽音を出力する。（特許文献４参照）
また、ある提案の電子楽器においては、アコースティック楽器の常時ダンプされていない弦の共鳴音の波形を記憶する記憶手段を備え、入力された押鍵情報に含まれる音高情報に応じて記憶手段に記憶された共鳴音の波形に基づいて共鳴音を発生する構成になっている。（特許文献５参照）
【特許文献１】特開昭６０−９１３９３号公報
【特許文献２】特開平７−２７１３７１号公報
【特許文献３】特開平９−６３４３号公報
【特許文献４】特開２００１−２３６０６４号公報
【特許文献５】特開２００５−１２８２０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献１および特許文献３乃至特許文献５においては、下記のような問題があった。
打弦音の波形データおよび共鳴音の波形データをそれぞれ異なる記憶手段から読み出して、演奏条件、例えば、押鍵のベロシティに応じた比率でミックスするので、演奏された１つの音高に対して、同時に使用する発音チャンネル（「発音オシレータ」とも言う）が少なくとも２チャンネルが必要であり、ステレオの場合には少なくとも４チャンネルが必要である。このため、３２チャンネル、６４チャンネル、１２８チャンネルのように、多くの発音チャンネルを使用するポリフォニックサウンドの楽音発生装置においては、ポリ数が多くなると演奏された音高の楽音を発音できない事態が発生する。
これに対して、特許文献２のように、打弦音の波形データおよび打弦音と共鳴音とをミックスした混合波形データをそれぞれ異なる記憶手段にあらかじめ記憶する構成も考えられるが、この場合には、演奏条件に応じて様々な混合比率に対応する混合波形データを用意する必要があるので、記憶すべきデータ量が極めて多くなり、開発コストや製品コストの高騰を招くので現実的ではない。
本発明は、このような従来の課題を解決するためのものであり、打弦音の波形データおよび共鳴音の波形データをそれぞれ異なる記憶手段から読み出して、演奏条件に応じて様々な比率でミックスする場合に、同時に使用する発音チャンネル数を少なくできるようにすることを目的とする。
【課題を解決するための手段】
【０００４】
請求項１に記載の楽音発生装置は、演奏に応じて発音すべき楽音に対応する第１の波形データ（実施形態においては、打弦音の波形データに相当する）を第１の記憶手段（実施形態においては、図１の波形ＲＯＭ９の打弦領域に相当する）から読み出すと共に、当該発音すべき楽音に共鳴する楽音に対応する第２の波形データ（実施形態においては、共鳴音の波形データに相当する）を第２の記憶手段（実施形態においては、図１の波形ＲＯＭ９の共鳴領域に相当する）から読み出す波形読出手段（実施形態においては、図１の音源７に相当する）と、波形読出手段によって読み出された第１および第２の波形データを混合して第３の波形データ（実施形態においては、図１のＷＡＶＥ７ａに記憶される波形データに相当する）を生成する波形混合手段（実施形態においては、図１の音源７に相当する）と、波形混合手段によって生成された第３の波形データが第３の記憶手段（実施形態においては、図１の波形ＲＡＭ１０に相当する）に記憶されているか否かを検出するデータ検出手段（実施形態においては、図１のＣＰＵ１に相当する）と、波形混合手段によって生成された第３の波形データが第３の記憶手段に記憶されていないことがデータ検出手段によって検出されたときは、当該生成された第３の波形データに基づく楽音信号を発音手段（実施形態においては、図１のＤ／Ａコンバータ１１および発音部１２に相当する）に出力しながら、当該第３の波形データを第３の記憶手段に記憶し、波形混合手段によって生成された第３の波形データが第３の記憶手段に記憶されていることがデータ検出手段によって検出されたときは、第３の記憶手段に記憶されている第３の波形データを読み出して、当該読み出された第３の波形データに基づく楽音信号を発音手段に出力する出力制御手段（実施形態においては、図１の音源７に相当する）と、を備えた構成になっている。
【０００５】
請求項１の楽音発生装置において、請求項２に記載したように、演奏の音高およびベロシティを検出する演奏検出手段（実施形態においては、図１のＣＰＵ１に相当する）をさらに備え、波形混合手段は演奏検出手段によって検出された音高およびベロシティに対応した比率（実施形態においては、データ読み出しの歩進レートに相当する）で波形読出手段によって読み出された第１および第２の波形データを混合して第３の波形データを生成するような構成にしてもよい。
【０００６】
請求項３に記載の楽音発生処理のプログラムは、演奏に応じて発音すべき楽音に対応する第１の波形データ（実施形態においては、打弦音の波形データに相当する）を第１の記憶手段（実施形態においては、図１の波形ＲＯＭ９の打弦領域に相当する）から読み出すと共に、当該発音すべき楽音に共鳴する楽音に対応する第２の波形データ（実施形態においては、共鳴音の波形データに相当する）を第２の記憶手段（実施形態においては、図１の波形ＲＯＭ９の共鳴領域に相当する）から読み出すステップＡと、ステップＡによって読み出された第１および第２の波形データを混合して第３の波形データ（実施形態においては、図１のＷＡＶＥ７ａに記憶される波形データに相当する）を生成するステップＢと、ステップＢによって生成された第３の波形データが第３の記憶手段（実施形態においては、図１の波形ＲＡＭ１０に相当する）に記憶されているか否かを検出するステップＣと、ステップＢによって生成された第３の波形データが第３の記憶手段に記憶されていないことがステップＣによって検出されたときは、ステップＢによって生成された第３の波形データに基づく楽音信号を発音手段（実施形態においては、図１のＤ／Ａコンバータ１１および発音部１２に相当する）に出力しながら、当該第３の波形データを第３の記憶手段に記憶し、ステップＢによって生成された第３の波形データが第３の記憶手段に記憶されていることがステップＣによって検出されたときは、第３の記憶手段に記憶されている第３の波形データを読み出して、当該読み出した第３の波形データに基づく楽音信号を発音手段に出力するステップＤと、をコンピュータ（実施形態においては、図１のＣＰＵ１および音源７に相当する）に実行させる構成になっている。
【０００７】
請求項３の楽音発生処理のプログラムにおいて、請求項４に記載したように、演奏の音高およびベロシティを検出するステップＤをさらに有し、ステップＢはステップＤによって検出された音高およびベロシティに対応した比率（実施形態においては、データ読み出しの歩進レートに相当する）でステップＡによって読み出された第１および第２の波形データを混合して第３の波形データを生成するような構成にしてもよい。
【発明の効果】
【０００８】
本発明の楽音発生装置および楽音発生処理のプログラムによれば、打弦音の波形データおよび共鳴音の波形データをそれぞれ異なる記憶手段から読み出して、演奏条件に応じて様々な比率でミックスする場合に、同時に使用する発音チャンネル数を少なくできるという効果が得られる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明による楽音発生装置の実施形態について、電子鍵盤楽器を例に採って、図１乃至図１２を参照して詳細に説明する。
図１は、実施形態における電子鍵盤楽器の構成を示すブロック図である。図１において、ＣＰＵ１は、そのシステムバス２を介して、プログラムＲＯＭ３、ワークＲＡＭ４、鍵盤５、およびスイッチ部６に接続され、これら各部との間でデータおよびコマンドを授受する。プログラムＲＯＭ３は、ＣＰＵ１によって実行される制御プログラムおよび初期データをあらかじめ記憶している。ワークＲＡＭ４は、ＣＰＵ１によって処理されるデータを一時的に記憶するための各種のレジスタを備えている。鍵盤５は、演奏に応じて鍵番号すなわち音高およびベロシティをＣＰＵ１に入力する。スイッチ部６は、ピアノ、オルガン、チェンバロ等の鍵盤楽器の音色だけでなく、各種の弦楽器や管楽器の音色を選択する音色選択スイッチ、演奏環境すなわちホール、ライブハウス、教会などを選択する音色選択スイッチ、リバーブやエコーなどの効果音を選択する音色選択スイッチを備えている。なお、選択された音色に応じて、演奏された楽音に対する共鳴音の楽音が決定される。一般に、共鳴音の楽音のレベルは演奏された楽音のレベルよりも小さく、共鳴音の楽音の減衰特性は演奏された楽音の減衰特性よりも小さく消音までの時間が長い。
【００１０】
音源７は、そのシステムバス８を介して、波形ＲＯＭ９および波形ＲＡＭ１０に接続され、これら各部との間でデータおよびコマンドを授受すると共に、Ｄ／Ａコンバータ１１に接続されている。音源７のＩＣチップ内には、高速のデータ書き込みおよびデータ読み出しができるキャッシュメモリとしてのバッファＷＡＶＥ７ａおよび各種のレジスタ（図示せず）を備えている。ＷＡＶＥ７ａの詳細な機能についてはさらに後述する。Ｄ／Ａコンバータ１１は、音源７から出力される楽音信号をデジタルからアナログに変換して、発音部１２に出力する。発音部１２は、Ｄ／Ａコンバータ１１から入力されたアナログの楽音信号に含まれている高周波成分を除去するフィルタ処理、楽音信号を増幅する増幅処理などを行い、スピーカ（図示せず）から発音する。
【００１１】
ＣＰＵ１および音源７は通信バス１３によって双方向に接続されており、互いにデータおよびコマンドを通信する。通信の手順については周知の技術であるので説明は省略するが、ＣＰＵ１および音源７は互いに相手の状態および相手のシステムバスに接続されている各部の状態を常に把握している。言い換えれば、ＣＰＵ１および音源７は、あたかも１つの制御手段として機能する。したがって、電子鍵盤楽器は、図１の構成に限らず、ＣＰＵ１と音源７とが共通のシステムバスを使用して、バス占有権を調停（バスアービトレーション）する構成も可能である。
【００１２】
図２は、図１の波形ＲＯＭ９および波形ＲＡＭ１０におけるデータフォーマットを示す図である。波形ＲＯＭ９は、打弦領域と共鳴領域とに分かれている。
波形ＲＯＭ９の打弦領域には、図２（Ａ）に示すように、種々の音色の配列ＴＯＮＥ（０）、ＴＯＮＥ（１）…の各ＴＯＮＥ（  ）に対応して、各オクターブの配列ＯＣＴ（０）、ＯＣＴ（１）…が設けられ、各ＯＣＴ（  ）に対応してベロシティの配列ＶＥＬ（０）、ＶＥＬ（１）…の配列が設けられ、各ＶＥＬ（  ）に対応してアドレス（０）、アドレス（１）…のエリアに、自然楽器の各オクターブの最も低い打弦音の楽音信号を一定時間（Ｔｓ）ごとにサンプリングしたＰＣＭの波形データがあらかじめ記憶されている。
波形ＲＯＭ９の共鳴領域には、図２（Ｂ）に示すように、種々の音色の配列ＴＯＮＥ（０）、ＴＯＮＥ（１）…の各ＴＯＮＥ（  ）に対応して、各オクターブの配列ＯＣＴ（０）、ＯＣＴ（１）…が設けられ、各ＯＣＴ（  ）に対応してベロシティの配列ＶＥＬ（０）、ＶＥＬ（１）…の配列が設けられ、各ＶＥＬ（  ）に対応してアドレス（０）、アドレス（１）…のエリアに、自然楽器の打弦音に共鳴する共鳴音の楽音信号を一定時間ごとにサンプリングしたＰＣＭの波形データがあらかじめ記憶されている。
なお、同一のＴＯＮＥ、ＯＣＴ、およびＶＥＬに対応する波形ＲＯＭ９の打弦領域の各波形データと波形ＲＯＭ９の共鳴領域の波形データとは、必ずしも一対の波形データにはなっていない。共鳴音の波形データについては、オクターブを超えた範囲でその範囲の最も低い音に合わせた波形データを記憶して、記憶するデータ量を少なくしている。ただし、波形ＲＯＭ９の打弦領域および波形ＲＯＭ９の共鳴領域からは一対の波形データが読み出されて、選択されたＴＯＮＥ、演奏されたＫＥＹの値およびＶＥＬＯＣＩＴＹの値に応じた比率で混合されて楽音信号が生成される。
【００１３】
波形ＲＡＭ１０には、図２（Ｃ）に示すように、オクターブの配列ＯＣＴ（０）、ＯＣＴ（１）…の各ＯＣＴ（  ）に対応して、ベロシティの配列ＶＥＬ（０）、ＶＥＬ（１）…の配列が設けられ、各ＶＥＬ（  ）に対応してアドレス（０）、アドレス（１）…のエリアが設けられ、各アドレスに波形データが記憶されるようになっている。波形ＲＡＭ１０に波形データを記憶する手順については後述する。
【００１４】
音源７は、鍵盤５の演奏によって発音すべき楽音が最初の演奏である場合には、図２（Ａ）の打弦音の波形データと図２（Ｂ）の共鳴音の波形データとを混合した波形データを生成して、その波形データに基づく楽音信号をＤ／Ａコンバータ１１に出力すると共に、その波形データを波形ＲＡＭ１０に記憶する。ただし、発音する音高に応じて波形ＲＯＭ９のアドレスをスキップして読み出す場合でも、波形ＲＡＭ１０に記憶する際には、その音高と同じオクターブ内の他の音高にも対応できるように、アドレスをスキップすることなく各アドレスに波形データを記憶する。その後、鍵盤５の演奏によって発音すべき楽音が２度目以降の演奏である場合には、最初の演奏に応じて波形ＲＡＭ１０に記憶されている波形データを読み出して、その波形データに基づく楽音信号をＤ／Ａコンバータ１１に出力する。この場合には、発音する音高に応じて波形ＲＡＭ１０のアドレスをスキップして読み出すこともある。
【００１５】
次に、図１の電子鍵盤楽器の動作について、図３乃至図１２を参照して詳細に説明する。
図３乃至図６は、ＣＰＵ１の動作を示すフローチャートである。図３において、ＣＰＵ１は、所定のイニシャライズ（ステップＳＡ１）の後、音色選択スイッチがオンされたか否かを判別し（ステップＳＡ２）、このスイッチがオンされたときは、音源７に指示して波形ＲＡＭ１０の内容をクリアさせ（ステップＳＡ３）、レジスタＴＯＮＥに音色番号をストアし（ステップＳＡ４）、ＴＯＮＥの音色番号に対応するプログラムＲＯＭ３のミックス比率のテーブルであるＭＩＸ  ＴＡＢＬＥ（ＴＯＮＥ）の混合比率の値をレジスタＭＩＸにストアして（ステップＳＡ５）、ＭＩＸ、ＴＯＮＥのデータを音源７に送付する（ステップＳＡ６）。混合比率とは、演奏された楽音に混合する共鳴音の楽音の度合いを表す指標である。例えば、演奏環境として教会が選択された場合には、ホールが選択された場合よりも共鳴音の比率が高くなる。
【００１６】
ＣＰＵ１は、ステップＳＡ６においてＭＩＸ、ＴＯＮＥのデータを音源７に送付した後、又は、ステップＳＡ２において音色選択スイッチがオンされず、それ以前に選択されたＭＩＸ、ＴＯＮＥのデータが維持されている場合には、鍵番号を指定するポインタｎに「０」すなわち最も低い音高の鍵をセットし（ステップＳＡ７）、ｎの値を変えながら鍵盤５の各鍵の変化を検出する。すなわち、ＣＰＵ１は、鍵番号（ｎ）の鍵変化があるか否かを判別し（ステップＳＡ８）、鍵番号（ｎ）の鍵変化がない場合には、ｎの値をインクリメントするが（ステップＳＡ９）、インクリメントしたｎの値が最大鍵番号を超えたか否かを判別し（ステップＳＡ１０）、ｎの値が最大鍵番号を超えない場合は、ステップＳＡ８において再び鍵変化を判別する。
【００１７】
ＣＰＵ１は、ステップＳＡ８において、オフからオンの鍵変化（押鍵）があったときは、レジスタＫＥＹに鍵番号ｎの値をストアし（ステップＳＡ１１）、レジスタＶＥＬＯＣＩＴＹに押鍵の強さであるベロシティの値をストアして（ステップＳＡ１２）、ＫＥＹの値およびＶＥＬＯＣＩＴＹの値を引数とする２次元テーブルであるＡＲＥＡ  ＴＡＢＬＥ（ＫＥＹ）（ＶＥＬＯＣＩＴＹ）のデータをレジスタＡＲＥＡにストアする（ステップＳＡ１３）。例えば、グランドピアノの音色が選択されている場合において、その音色がＴＯＮＥ（０）であるとすると、図２に示した波形ＲＯＭ９および波形ＲＡＭ１０において、ＴＯＮＥ（０）に対応するＯＣＴ配列が指定されている。このため、ＫＥＹの値およびＶＥＬＯＣＩＴＹの値を引数とする波形データのアドレスがＡＲＥＡによって一意に決定される。
【００１８】
次に、ＣＰＵ１は音源７との通信によって、波形ＲＡＭ１０においてＡＲＥＡに対応するアドレスに既に波形データがストアされているか否かを判別する（ステップＳＡ１４）。すなわち、演奏されたＫＥＹと同じＯＣＴ配列のＫＥＹの値およびＶＥＬＯＣＩＴＹの値と同じ値の演奏が以前に行われていて、発音すべき楽音に対応する波形データが既に波形ＲＡＭ１０にストアされているか否かを判別する。発音すべき楽音に対応する波形データが既に波形ＲＡＭ１０にストアされている場合には、ＣＰＵ１は、図４のフローチャートにおいて、音源７の空きチャンネルをサーチして（ステップＳＡ１５）、サーチした空きチャンネル番号をレジスタＣＨにストアし（ステップＳＡ１６）、チャンネル番号ＣＨのチャンネルを「空き」から「使用」に変更する（ステップＳＡ１７）。
【００１９】
次に、ＣＰＵ１は、ＣＨに対応するフラグＭＥＭＯＲＹ（ＣＨ）に「０（波形ＲＡＭ指定）」をセットして（ステップＳＡ１８）、そのＭＥＭＯＲＹ（ＣＨ）を音源７に送付し（ステップＳＡ１９）、ＣＨの値、ＫＥＹの値、およびＶＥＬＯＣＩＴＹの値に基づくオンコマンドを作成し（ステップＳＡ２０）、音源７に送付する（ステップＳＡ２１）。
【００２０】
図２のステップＳＡ１４において、ＣＰＵ１は音源７との通信によって、波形ＲＡＭ１０においてＡＲＥＡに対応するアドレスには波形データがまだストアされていないと判別したときは、図５のフローチャートにおいて、打弦音に対する空きチャンネルおよび共鳴音に対する空きチャンネルの２チャンネル分の空きチャンネルをサーチし（ステップＳＡ２２）、サーチした２つの空きチャンネル番号をレジスタＣＨ１およびＣＨ２にそれぞれストアし（ステップＳＡ２３）、２つのチャンネル番号ＣＨ１およびＣＨ２を「空き」から「使用」に変更する（ステップＳＡ２４）。
【００２１】
次に、ＣＰＵ１は、ＣＨ１に対応するフラグＭＥＭＯＲＹ（ＣＨ１）に「１（波形ＲＯＭの打弦領域指定）」をセットし、ＣＨ２に対応するフラグＭＥＭＯＲＹ（ＣＨ２）に「２（波形ＲＯＭの共鳴領域指定）」をセットして（ステップＳＡ２５）、そのＭＥＭＯＲＹ（ＣＨ１）およびＭＥＭＯＲＹ（ＣＨ２）を音源７に送付し（ステップＳＡ）、ＣＨ１の値、ＫＥＹの値、およびＶＥＬＯＣＩＴＹの値に基づくオンコマンドを作成して（ステップＳＡ２７）、音源７に送付し（ステップＳＡ２８）、ＣＨ２の値、ＫＥＹの値、ＶＥＬＯＣＩＴＹの値に基づくオンコマンドを作成して（ステップＳＡ２９）、音源７に送付し（ステップＳＡ３０）、図２のフローチャートのステップＳＡ９に移行して、ｎの値をインクリメントする。
【００２２】
図２のステップＳＡ８において、鍵番号（ｎ）の鍵変化がオンからオフ（離鍵）の場合には、ＣＰＵ１は、図６のフローチャートにおいて、レジスタＫＥＹにｎの値をストアし（ステップＳＡ３１）、音源７における使用チャンネルをサーチし（ステップＳＡ３２）、サーチした使用チャンネルが２つであるか又は１つであるかを判別する（ステップＳＡ３３）。サーチした使用チャンネルが２つの場合には、図２（Ａ）の打弦音の波形データと図２（Ｂ）の共鳴音の波形データとを混合した波形データに基づいて発音している場合である。一方、サーチした使用チャンネルが１つの場合には、図２（Ｃ）の波形ＲＡＭの波形データに基づいて発音している場合である。
【００２３】
したがって、ＣＰＵ１は、サーチした使用チャンネルが２つのＣＨ１およびＣＨ２の場合には、ＣＨ１およびＣＨ２を空きチャンネルにして（ステップＳＡ３４）、ＣＨ１の値およびＫＥＹの値に基づきオフコマンドを作成して（ステップＳＡ３５）、音源７に送付し（ステップＳＡ３６）、ＣＨ２の値およびＫＥＹの値に基づきオフコマンドを作成して（ステップＳＡ３７）、音源７に送付する（ステップＳＡ３８）。一方、サーチした使用チャンネルが１つのＣＨの場合には、ＣＰＵ１は、ＣＨを空きチャンネルにして（ステップＳＡ３９）、ＣＨの値およびＫＥＹの値に基づきオフコマンドを作成して（ステップＳＡ４０）、音源７に送付する（ステップＳＡ４１）。
【００２４】
ステップＳＡ３８又はステップＳＡ４１において、オフコマンドを音源７に送付した後は、ＣＰＵ１は、図４のステップＳＡ９に移行して、ポインタｎの値をインクリメントして、ステップＳＡ１０において、インクリメントしたｎの値が最大鍵数を超えない場合には、鍵変化に応じて上記各処理を繰り返すが、ｎの値が最大鍵数を超えたときは、ステップＳＡ２に移行して、音色選択スイッチがオンされたか否かを判別する。
【００２５】
図７乃至図９は、音源７によって実行される発音処理および消音処理のメインルーチンのフローチャートである。
図７において、音源７は、所定のイニシャライズ（ステップＳＢ１）の後、ＣＰＵ１からデータ又はコマンドを受信したか否かを判別し（ステップＳＢ２）、受信したときは、それが混合比率および音色番号であるＭＩＸ、ＴＯＮＥであるか否かを判別し（ステップＳＢ３）、ＭＩＸ、ＴＯＮＥを受信したときは、それを対応するレジスタにストアする（ステップＳＢ４）。受信したものがＭＩＸ、ＴＯＮＥでない場合には、音源７は、ＭＥＭＯＲＹ（ＣＨ）を受信したか否かを判別し（ステップＳＢ５）、ＭＥＭＯＲＹ（ＣＨ）を受信したときは、それを対応するレジスタにストアする（ステップＳＢ６）。
【００２６】
受信したものがＭＩＸ、ＴＯＮＥおよびＭＥＭＯＲＹ（ＣＨ）でない場合には、音源７は、オンコマンドを受信したか否かを判別し（ステップＳＢ７）、オンコマンドを受信したときは、オンコマンドのチャンネルをレジスタＣＨにストアし（ステップＳＢ８）、オンコマンドの鍵番号をレジスタＫＥＹにストアし（ステップＳＢ９）、オンコマンドのベロシティをレジスタＶＥＬＯＣＩＴＹにストアする（ステップＳＢ１０）。
【００２７】
次に、音源７は、図８のフローチャートにおいて、ＣＨのチャンネルのフラグＯＮ（ＣＨ）を「１（発音）」にセットし（ステップＳＢ１１）、ＫＥＹの値およびＶＥＬＯＣＩＴＹの値を引数とする波形ＲＡＭ１０のアドレスを指定するテーブルであるＲＡＭ  ＴＡＢＬＥ｛（ＫＥＹ）（ＶＥＬＯＣＩＴＹ）｝のデータをＡＲＥＡ１にセットし（ステップＳＢ１２）、ＴＯＮＥの値、ＫＥＹの値およびＶＥＬＯＣＩＴＹの値を引数とする波形ＲＯＭ９のアドレスを指定するテーブルであるＲＯＭ  ＴＡＢＬＥ｛（ＴＯＮＥ）（ＫＥＹ）（ＶＥＬＯＣＩＴＹ）｝のデータをＡＲＥＡ２にセットする（ステップＳＢ１３）。
【００２８】
次に、音源７は、ＭＥＭＯＲＹ（ＣＨ）の値が「０」、「１」、「２」のいずれであるかを判別し（ステップＳＢ１４）、ＭＥＭＯＲＹ（ＣＨ）の値が「１」の場合には、図２（Ａ）に示した打弦領域の波形ＲＯＭにおいてＡＲＥＡ２に対応する波形データの初期アドレスを読出用のレジスタＡＤ（ＣＨ）にセットし（ステップＳＢ１５）、ＭＥＭＯＲＹ（ＣＨ）の値が「２」の場合には、図２（Ｂ）に示した共鳴領域の波形ＲＯＭにおいてＡＲＥＡ２に対応する波形データの初期アドレスを読出用のレジスタＡＤ（ＣＨ）にセットし（ステップＳＢ１６）、ＭＥＭＯＲＹ（ＣＨ）の値が「０」の場合には、図２（Ｃ）に示した波形ＲＡＭにおいてＡＲＥＡ１に対応する記憶エリアの初期アドレスを読出用のレジスタＡＤ（ＣＨ）にセットする（ステップＳＢ１７）。さらに音源７は、ステップＳＢ１５又はステップＳＢ１６において、打弦領域又は共鳴領域の波形ＲＯＭの初期アドレスをＡＤ（ＣＨ）にセットした場合には、波形ＲＡＭにおいてＡＲＥＡ１に対応する記憶エリアの初期アドレスを書込用のレジスタＡＤW（ＣＨ）にセットする（ステップＳＢ１８）。
【００２９】
音源７は、ステップＳＢ１７又はステップＳＢ１８において、ＡＤ（ＣＨ）又はＡＤＷ（ＣＨ）に初期アドレスをセットした後は、ＫＥＹの値に基づくアドレスの歩進レートをレジスタＲＡＴＥ（ＣＨ）にストアして（ステップＳＢ１９）、図７のステップＳＢ２においてＣＰＵ１からの受信の有無を判別する。波形ＲＯＭ９の波形データは、各オクターブで最も低い音高の鍵に対する打弦音の波形データ、および、オクターブを超えた範囲で最も低い音高の鍵に対する共鳴音の波形データを記憶しているので、その鍵より高い音高の鍵が演奏されたときは、１つ以上のアドレスをスキップしながら波形データを読み出すことになる。このため、演奏された鍵の音高に応じたスキップの度合いを歩進レートをＲＡＴＥ（ＣＨ）に設定する。
【００３０】
一方、図７のステップＳＢ７において、オンコマンドを受信しない場合には、音源７は、図９のフローチャートにおいて、オフコマンドを受信したか否かを判別し（ステップＳＢ２０）、オフコマンドを受信したときは、オフコマンドのチャンネルをレジスタＣＨにストアし（ステップＳＢ２１）、オフコマンドの鍵番号をレジスタＫＥＹにストアし（ステップＳＢ２２）、ＣＨのチャンネルのフラグＯＮ（ＣＨ）を「０（消音）」にリセットし（ステップＳＢ２３）、ＣＨのチャンネルのエンベロープ（ＣＨ）のリリース処理を行って（ステップＳＢ２４）、図７のステップＳＢ２においてＣＰＵ１からの受信の有無を判別する。
【００３１】
図１０乃至図１２は、一定時間（例えば、サンプリング周期Ｔｓ）ごとに音源７によって実行されるタイマインタラプトのフローチャートである。
図１０において、音源７は、内部のバッファＷＡＶＥ７ａを「０」にクリアし（ステップＳＣ１）、ＣＨにチャンネル番号「０」をセットして（ステップＳＣ２）、全てのチャンネルにおけるフラグＯＮ（ＣＨ）の状態「１」又は「０」を検索しながら、波形ＲＯＭ９又は波形ＲＡＭ１０から波形データを読み出す発音処理、又は、発音を停止する消音処理を行う。
【００３２】
音源７は、ＣＨのチャンネル番号に対応するフラグＯＮ（ＣＨ）が「１」であるか「０」であるかを判別し（ステップＳＣ３）、ＡＤ（ＣＨ）に基づいて読み出した波形データをＷＡＶＥ７ａ内のバッファＷ（ＣＨ）にストアして（ステップＳＣ４）、ＭＥＭＯＲＹ（ＣＨ）の値を判別する（ステップＳＣ５）。ＭＥＭＯＲＹ（ＣＨ）の値が「１」の場合には、Ｗ（ＣＨ）の波形データにＭＩＸの比率を乗算し（ステップＳＣ６）、ＭＥＭＯＲＹ（ＣＨ）の値が「２」の場合には、Ｗ（ＣＨ）の波形データに（１−ＭＩＸ）の比率を乗算し（ステップＳＣ７）、ＭＥＭＯＲＹ（ＣＨ）の値が「０」の場合には、比率の乗算は行わない。そして、Ｗ（ＣＨ）の波形データをＷＡＶＥに加算する（ステップＳＣ８）。
【００３３】
音源７は、ステップＳＣ８において、Ｗ（ＣＨ）の波形データをＷＡＶＥに加算した後、又は、ステップＳＣ３において、ＯＮ（ＣＨ）が「０」の場合には、ＣＨのチャンネル番号をインクリメントして（ステップＳＣ９）、ＣＨのチャンネル番号がチャンネル数を超えたか否かを判別し（ステップＳＣ１０）、チャンネル数を超えていない場合には、ステップＳＣ３からステップＳＣ１０までのループ処理を繰り返すが、ＣＨのチャンネル番号がチャンネル数を超えたとき、すなわち、発音するチャンネルにおける１サンプリングの全ての波形データがＷＡＶＥにストアされたときは、ＷＡＶＥの波形データをＤ／Ａコンバータ１１に出力する（ステップＳＣ１１）。
【００３４】
次に、音源７は、図１１のフローチャートにおいて、ＣＨのチャンネル番号を「０」にセットして（ステップＳＣ１２）、チャンネル番号をインクリメントしながら、打弦音の波形データの発音に指定されているチャンネルを捜す。すなわち、ＭＥＭＯＲＹ（ＣＨ）が「１」であるか否かを判別し（ステップＳＣ１３）、ＭＥＭＯＲＹ（ＣＨ）が「１」でない場合には、ＣＨの値をインクリメントし（ステップＳＣ１４）、ＣＨの値がチャンネル数を超えたか否かを判別し（ステップＳＣ１５）、チャンネル数を超えない場合には、ステップＳＣ１３において、ＭＥＭＯＲＹ（ＣＨ）が「１」であるか否かを判別する。
【００３５】
音源７は、ＭＥＭＯＲＹ（ＣＨ）が「１」である場合には、チャンネル番号のポインタｎを「０」にセットして（ステップＳＣ１６）、ｎの値をインクリメントしながら、共鳴音の波形データの発音に指定されているチャンネルを捜す。すなわち、ＭＥＭＯＲＹ（ｎ）が「２」であるか否かを判別し（ステップＳＣ１７）、ＭＥＭＯＲＹ（ｎ）が「２」である場合には、打弦音の波形データの歩進レートＲＡＴＥ（ＣＨ）と、共鳴音の波形データの歩進レートＲＡＴＥ（ｎ）とが同じであるか否かを判別する（ステップＳＣ１８）。ＭＥＭＯＲＹ（ｎ）が「２」でない場合、又は、ＲＡＴＥ（ＣＨ）とＲＡＴＥ（ｎ）とが同じでない場合には、ｎの値をインクリメントし（ステップＳＣ１９）、ｎの値がチャンネル数を超えたか否かを判別し（ステップＳＣ２０）、チャンネル数を超えない場合には、ＭＥＭＯＲＹ（ｎ）が「２」で、かつ、ＲＡＴＥ（ＣＨ）とＲＡＴＥ（ｎ）とが同じになっている共鳴音のチャンネルを捜す。図２のデータフォーマットにおいて説明したように、打弦領域の波形データと共鳴音領域の波形データとは必ずしも一対で記憶されてはいないので、両方の歩進レートが一致する波形データのアドレスを捜す必要がある。
【００３６】
音源７は、該当する共鳴音のチャンネルを検索したときは、ＲＡＴＥ（ＣＨ）とＲＡＴＥ（ｎ）とが同じの打弦音および共鳴音の波形データの各アドレスを指定するための変数ｍを「０」にセットして（ステップＳＣ２１）、打弦音の波形ＲＯＭおよび共鳴音の波形ＲＯＭからの波形データをＡＤ（ＣＨ）＋ｍおよびＡＤ（ｎ）＋ｍのアドレスで読み出し（ステップＳＣ２２）、両波形データを加算して（ステップＳＣ２３）、その加算した波形データを波形ＲＡＭ１０のＡＤＷ（ＣＨ）＋ｎのアドレスのエリアにストアする（ステップＳＣ２４）。波形ＲＯＭ９から波形データを読み出して発音処理を行う場合には、記憶した最も低い音高の波形データに対応する鍵以外は、演奏された鍵の音高に応じた歩進レートでアドレスをスキップしながら読み出すが、波形ＲＡＭ１０に記憶する際には、スキップせずに全ての波形データを読み出す必要があるので、変数ｍによって各アドレスを指定する。
【００３７】
音源７は、ｍの値をインクリメントして（ステップＳＣ２５）、ｍの値がＲＡＴＥ（ＣＨ）の歩進レートより大きくなったか否かを判別し（ステップＳＣ２６）、ｍの値が歩進レート以下である場合には、ステップＳＣ２２に移行して、ステップＳＣ２６までのループ処理を繰り返すが、ｍの値が歩進レートより大きくなったとき、すなわち、発音処理においてスキップした全てアドレスの波形データを読み出したときは、ステップＳＣ１４においてＣＨのチャンネル番号をインクリメントし、ＣＨの値がチャンネル数を超えたか否かを判別し（ステップＳＣ１５）、チャンネル数を超えない場合には、ステップＳＣ１３において、ＭＥＭＯＲＹ（ＣＨ）が「１」であるか否かを判別する。
【００３８】
ステップＳＣ１５において、ＣＨのチャンネル番号がチャンネル数を超えたとき、すなわち、演奏に応じて発音すべきチャンネルの波形データを読み出したときは、音源７は、図１２のフローチャートにおいて、再び、ＣＨのチャンネル番号を「０」にセットして（ステップＳＣ２７）、チャンネル番号をインクリメントしながら、歩進レートに基づく次のアドレスの設定を行う。すなわち、ＣＨのチャンネル番号のフラグＯＮ（ＣＨ）が「１」であるか否かを判別し（ステップＳＣ２８）、ＯＮ（ＣＨ）が「１」である場合には、そのチャンネルに対応する現在のＡＤ（ＣＨ）に歩進レートＲＡＴＥ（ＣＨ）を加算して（ステップＳＣ２９）、ＣＨのチャンネル番号をインクリメントする（ステップＳＣ３０）。そして、ＣＨのチャンネル番号がチャンネル数を超えたか否かを判別し（ステップＳＣ３１）、チャンネル数を超えない場合には、ステップＳＣ２８からステップＳＣ３１までのループ処理を繰り返し、ＣＨのチャンネル番号がチャンネル数を超えたときは、メインルーチンに戻る。
【００３９】
以上のように、この実施形態によれば、音源７は、演奏に応じて発音すべき楽音に対応する打弦音の波形データを波形ＲＯＭ９の打弦領域から読み出すと共に、その発音すべき楽音に共鳴する楽音に対応する共鳴音の波形データを波形ＲＯＭ９の共鳴領域から読み出し、読み出された打弦音および共鳴音の波形データを混合して波形データを生成する。ＣＰＵ１は、発音すべき楽音が最初の演奏であるか又は２度目以降の演奏であるかを検出する。音源７は、ＣＰＵ１によって発音すべき楽音が最初の演奏であると検出された場合には、波形ＲＯＭ９から読み出して混合した波形データに基づく楽音信号をＤ／Ａコンバータ１１に出力しながら、その波形データを波形ＲＡＭ１０に記憶し、ＣＰＵ１によって発音すべき楽音が２度目以降の演奏であると検出された場合には、最初の演奏に応じて波形ＲＡＭ１０に記憶されている波形データを読み出して、その読み出した波形データに基づく楽音信号をＤ／Ａコンバータ１１に出力する。
したがって、打弦音の波形データおよび共鳴音の波形データをそれぞれ異なる記憶手段から読み出して、演奏条件に応じて様々な比率でミックスする場合に、同時に使用する発音チャンネル数を少なくできる。
【００４０】
上記実施形態において、音源７は、図９乃至図１２のタイマインタラプトに示したように、波形ＲＯＭ９から読み出した打弦音の波形データおよび共鳴音の波形データをミックスした混合波形データに基づく楽音信号を出力して発音しながら、同時にその混合波形データを波形ＲＡＭ１０にストアするが、混合波形データをストアする手順としては、種々のテクニックがある。例えば、Ｄ／Ａコンバータ１１に出力した楽音信号がデジタルからアナログに変換される時間、および、発音部１２においてアナログ信号に含まれるサンプリング周波数の影響による高周波成分を除去するフィルタ処理の遅延時間を利用して、混合波形データを波形ＲＡＭ１０にストアする。あるいは、音源７内にＤＭＡコントローラを設けて、Ｄ／Ａコンバータ１１に楽音信号を出力すると同時に、混合波形データをＷＡＶＥ７ａから直接に波形ＲＡＭ１０にバースト転送する。
【００４１】
上記実施形態においては、各オクターブの最も低音の鍵番号の配列ＯＣＴ（０）、ＯＣＴ（１）…を設ける構成にしたが、鍵番号の配列は各オクターブに限定されず、任意の数の鍵域の最も低音の鍵番号の配列でもよい。あるいは、各鍵の鍵番号の配列を設ける構成にしてもよい。この場合には、ＫＥＹに基づく歩進レートは「１」となり、各アドレスから波形データを読み出す構成になる。
【００４２】
なお、上記実施形態においては、プログラムＲＯＭ３にあらかじめ記憶された楽音発生処理のプログラムを実行する装置の発明について説明したが、フレキシブルディスク（ＦＤ）、ＣＤ、メモリカードなどの外部記憶媒体に記録されている楽音発生処理のプログラムをハードディスクやフラッシュＲＯＭなどの書き込み可能な不揮発性メモリにインストールするか、又は、インターネットなどのネットワークからダウンロードした楽音発生処理のプログラムを不揮発性メモリにインストールして、そのプログラムをＣＰＵによって実行することも可能である。この場合には、プログラムの発明やそのプログラムを記録した記録媒体の発明を実現できる。
【００４３】
すなわち、本発明による楽音発生処理のプログラムは、
演奏に応じて発音すべき楽音に対応する第１の波形データを第１の記憶手段から読み出すと共に、当該発音すべき楽音に共鳴する楽音に対応する第２の波形データを第２の記憶手段から読み出すステップＡと、前記ステップＡによって読み出された第１および第２の波形データを混合して第３の波形データを生成するステップＢと、前記ステップＢによって生成された第３の波形データが第３の記憶手段に記憶されているか否かを検出するステップＣと、前記ステップＢによって生成された第３の波形データが第３の記憶手段に記憶されていないことが前記ステップＣによって検出されたときは、前記ステップＢによって生成された第３の波形データに基づく楽音信号を発音手段に出力しながら、当該第３の波形データを前記第３の記憶手段に記憶し、前記ステップＢによって生成された第３の波形データが第３の記憶手段に記憶されていることが前記ステップＣによって検出されたときは、前記第３の記憶手段に記憶されている第３の波形データを読み出して、当該読み出した第３の波形データに基づく楽音信号を発音手段に出力するステップＤと、をコンピュータに実行させる。
【００４４】
演奏の音高およびベロシティを検出するステップＤをさらに有し、前記ステップＢは前記ステップＤによって検出された音高およびベロシティに対応した比率で前記ステップＡによって読み出された第１および第２の波形データを混合して第３の波形データを生成することを特徴とする。
【００４５】
また、上記実施形態においては、楽音発生装置として電子鍵盤楽器を例に採って本発明を説明したが、本発明の楽音発生装置は電子鍵盤楽器に限定されるものではない。例えば、本発明の楽音発生装置は、キーボード装置などの外部の演奏手段によって入力された演奏情報を処理して内部又は外部のサウンドシステムによって楽音を発生する音源装置でもよい。あるいは、本発明の楽音発生装置は、電子鍵盤楽器内に組み込まれる電子部品搭載のプリント基板でもよい。あるいはまた、電子鍵盤楽器内に組み込まれる１つ又は複数のＬＳＩによって構成された半導体装置でもよい。
すなわち、上記実施形態は本発明を実現するための一例に過ぎず、この明細書に添付した特許請求の範囲に記載された技術的思想を逸脱しない限り、上記実施形態に基づいて当業者が容易に想到可能な様々な他の実施形態や変形例についても本発明に含まれる。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態における電子鍵盤楽器の構成を示すブロック図。
【図２】図１の波形ＲＯＭおよび波形ＲＡＭのデータフォーマットを示す図。
【図３】図１のＣＰＵによって実行される楽音発生処理のフローチャート。
【図４】図３に続くＣＰＵの楽音発生処理のフローチャート。
【図５】図３に続くＣＰＵの楽音発生処理のフローチャート。
【図６】図３に続くＣＰＵの演奏処理のフローチャート。
【図７】図１の音源によって実行される楽音発生処理のフローチャート。
【図８】図７に続く音源の楽音発生処理のフローチャート。
【図９】図７に続く音源の楽音発生処理のフローチャート。
【図１０】図１の音源によって実行されるタイマインタラプトのフローチャート。
【図１１】図１０に続く音源のタイマインタラプトのフローチャート。
【図１２】図１１に続く音源のタイマインタラプトのフローチャート。
【符号の説明】
【００４７】
１  ＣＰＵ
２  システムバス
３  プログラムＲＯＭ
４  ワークＲＡＭ
５  鍵盤
６  スイッチ部
７  音源
８  システムバス
９  波形ＲＯＭ
１０  波形ＲＡＭ
１１  Ｄ／Ａコンバータ
１２  発音部
１３  通信バス
【図１】
2007316357.tif 000003
【図２】
2007316357.tif 000004
【図３】
2007316357.tif 000005
【図４】
2007316357.tif 000006
【図５】
2007316357.tif 000007
【図６】
2007316357.tif 000008
【図７】
2007316357.tif 000009
【図８】
2007316357.tif 000010
【図９】
2007316357.tif 000011
【図１０】
2007316357.tif 000012
【図１１】
2007316357.tif 000013
【図１２】
2007316357.tif 000014