(57)【特許請求の範囲】
【請求項１】
音量エンベロープが時間変化する複数の波形データを記憶する波形データ記憶手段と、
新たな楽音の発生を指示する指示手段と、
該新たな楽音の発生が指示されたときに、形成された複数の発音チャンネルからいずれかを選択して発音割り当てを行う割り当て手段と、
該割り当て手段によって割り当てられた各発音チャンネルにおいて、前記指示手段により、それぞれ指示された楽音に対応する各波形データを読み出す読み出し手段と、
該読み出された各波形データの音量を、当該各発音チャンネル毎に制御するための各音量制御エンベロープを発生するエンベロープ発生手段と、
該発生された各音量制御エンベロープに基づいて、前記読み出された各波形データの音量を、当該各発音チャンネル毎に制御する音量制御手段と、
該音量の制御された各波形データに基づいて、当該各発音チャンネル毎に楽音を発生する楽音発生手段と、
前記読み出された各波形データの音量エンベロープを、当該各発音チャンネル毎に抽出する抽出手段と、
該抽出された各音量エンベロープおよび前記発生された各音量制御エンベロープに基づいて、当該各発音チャンネルにおいてそれぞれ発生中の各楽音の音量レベルを検出する検出手段と
を有し、
前記割り当て手段は、前記新たな楽音の発生が指示されたときに、前記複数の発音チャンネルがすべて発音割り当てされている場合には、前記各発音チャンネルにおいてそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行う
ことを特徴とする楽音発生装置。
【請求項２】
前記割り当て手段は、前記トランケートすべき発音チャンネルを選定するときに、前記複数の発音チャンネルから、所定の条件を満たす発音チャンネルを選択し、該選択された各発音チャンネルにおいて、前記検出手段によりそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行う
ことを特徴とする請求項１に記載の楽音発生装置。
【請求項３】
音量エンベロープが時間変化する複数の波形データを記憶手段に記憶する記憶ステップと、
指示手段によって新たな楽音の発生が指示されたときに、形成された複数の発音チャンネルからいずれかを選択して発音割り当てを行う割り当てステップと、
該割り当てステップで割り当てられた各発音チャンネルにおいて、前記指示手段により、それぞれ指示された楽音に対応する各波形データを読み出す読み出しステップと、
該読み出された各波形データの音量を、当該各発音チャンネル毎に制御するための各音量制御エンベロープを発生するエンベロープ発生ステップと、
該発生された各音量制御エンベロープに基づいて、前記読み出された各波形データの音量を、当該各発音チャンネル毎に制御する音量制御ステップと、
該音量の制御された各波形データに基づいて、当該各発音チャンネル毎に楽音を発生する楽音発生ステップと、
前記読み出された各波形データの音量エンベロープを、当該各発音チャンネル毎に抽出する抽出ステップと、
該抽出された各音量エンベロープおよび前記発生された各音量制御エンベロープに基づいて、当該各発音チャンネルにおいてそれぞれ発生中の各楽音の音量レベルを検出する検出ステップと
を有する楽音発生方法をコンピュータに実行させるプログラムを格納した、コンピュータ読み取り可能な記憶媒体であって、
前記割り当てステップでは、前記新たな楽音の発生が指示されたときに、前記複数の発音チャンネルがすべて発音割り当てされている場合には、前記各発音チャンネルにおいてそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行う
ことを特徴とする記憶媒体。
【請求項４】
前記割り当てステップでは、前記トランケートすべき発音チャンネルを選定するときに、前記複数の発音チャンネルから、所定の条件を満たす発音チャンネルを選択し、該選択された各発音チャンネルにおいて、前記検出手段によりそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行う
ことを特徴とする請求項３に記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、波形メモリに記憶された、音量エンベロープが時間変化する波形データを読み出し、この波形データに基づいて楽音を発生する楽音発生装置および記憶媒体に関する。
【０００２】
【従来の技術】
波形メモリに記憶された波形データを読み出し、この波形データに基づいて楽音を発生する楽音発生装置は、従来より知られており、たとえば次のようなものがある。
【０００３】
すなわち、各音色および各周波数毎の波形データを波形メモリに記憶し、この波形メモリから、発生すべき楽音に対応する波形データを読み出し、読み出された波形データの音量を、振幅エンベロープ発生器（ＡＥＧ；amplitude envelope generator）で発生した音量制御エンベロープにより制御する。そして、同時に複数の楽音を発生させるために、複数の発音チャンネルを形成し、各発音チャンネルでの楽音発生処理を時分割で行うようにしている。なお、楽音発生処理は、通常、ＣＰＵ制御下でのＤＳＰ（digital signal processor）により行われる。
【０００４】
また、各発音チャンネルは、上述のように、時分割動作しているので、発音チャンネル数を無制限に多くすることはできず、楽音の同時発音数を有限個に制限せざるを得ない。このため、新たな発音指示（ノートオンイベント）が発生したときに、すべての発音チャンネルにおいて楽音生成処理がなされていた場合、すなわち、すべての発音チャンネルに対して発音割り当てがなされていた場合には、いずれかの発音チャンネルを選択し、その発音チャンネルで発音中の楽音の音量を急速に減衰（ダンプ）させ、その発音チャンネルを新たな楽音生成のために解放する、いわゆるトランケート処理を行う必要がある。そして、トランケート処理を施すべきチャンネル（トランケートチャンネル）としては、全発音チャンネル中、現在発音中の楽音の音量が最も小さいチャンネルを選択する方法が一般的である。
【０００５】
このように、各発音チャンネルでそれぞれ発音中の楽音の音量を検出する必要があり、上記従来の楽音発生装置では、上記振幅エンベロープ発生部で発生した音量制御エンベロープの値を検出できるようになっていた。
【０００６】
発音中の楽音の音量を検出する必要性は、これに限らず、たとえば、ある発音チャンネルで発音中の楽音に対応した残響音を発生させるときに、当該発音チャンネルで発音中の楽音の音量に基づいて残響音の音量を決定し、別の発音チャンネルで、この決定された音量の残響音を発生させる場合や、現在発音中の楽音の音量に基づいて、当該楽音のピッチや音色、自動演奏の演奏テンポ、自動伴奏のパート数、付加音の数等を制御する場合等にある。
【０００７】
【発明が解決しようとする課題】
しかし、上記従来の楽音発生装置では、発音中の楽音の音量を検出するために、発音中の楽音の音量そのものではなく、その音量制御に用いている音量制御エンベロープの値を検出するようにしていた、換言すると、発音中の楽音の音量を間接的に検出するようにしていたので、発音中の楽音の音量が音量制御エンベロープにのみ依存する場合には、音量制御エンベロープの値は当該楽音の音量レベルに対応した値になるため問題は生じないが、発音中の楽音の音量が音量制御エンベロープにのみ依存しない場合には、音量制御エンベロープの値は当該楽音の音量レベルに対応した値にならないため、音量制御エンベロープの値を検出したとしても、発音中の楽音の音量を検出したことにならない。
【０００８】
特に、近年の波形メモリを備えた楽音発生装置では、波形メモリに記憶されている波形データは、音量エンベロープが時間変化するものを含む場合が多い。この種の波形データとしては、最初に１度だけ読み出すアタック部と、アタック部の読み出しに続いて繰り返し読み出すループ部を備えたものがあり、そのうちのアタック部は、通常、その音量エンベロープが時間変化する。
【０００９】
図６は、音量エンベロープが時間変化する波形データに基づいて発生させた楽音の推移の一例を示す図であり、（ａ）は、アタック部とループ部からなる波形データを読み出したときのアタック部Ｗａとループ部Ｗｂの読み出し状態の推移を示し、（ｂ）は、（ａ）の読み出し状態における音量エンベロープの推移を示し、（ｃ）は、（ｂ）の音量エンベロープを制御するための音量制御エンベロープの推移を示し、（ｄ）は、（ｂ）の音量エンベロープを（ｃ）の音量制御エンベロープで制御することにより発生した楽音の音量レベルの推移を示している。
【００１０】
同図（ｂ）に示すように、波形データのアタック部Ｗａの音量エンベロープは時間変化するため、アタック部Ｗａの音量レベルを制御すべき音量制御エンベロープとしては、同図（ｃ）に示すように、時間変化しない所定値が採られている。一方、波形データのループ部Ｗｂの音量エンベロープは時間変化しないため、ループ部Ｗｂの音量レベルを制御すべき音量制御エンベロープとしては、時間変化する値（図示例では、線形的に変化する値）が採られ、ノートオフが指示された後の音量制御エンベロープも、同様に、時間変化する値（ただし、ダンプさせるため、ノートオフが指示される前よりも傾きが急で線形的に変化する値）が採られている。
【００１１】
このように音量制御エンベロープの値を制御する結果、同図（ｄ）に示すように、ノートオンからノートオフに亘って、自然な楽音が発生するようにしている。
【００１２】
すなわち、図６のように、音量エンベロープが時間変化する波形データに対しては、その波形データに付与すべき音量制御エンベロープを検出しただけでは、当該発音中の楽音の実際の音量レベルを検出したことにならないので、このような場合には、その後の音量レベルを用いた各種制御に支障をきたすことがある。たとえば、上記トランケートチャンネルを決定するときに、各発音チャンネル間で発生されている各楽音を、当該各楽音の実際の音量レベルに基づいて比較できないため、大きな音量レベルで発音中の発音チャンネルを、実際にはそれより小さな音量レベルで発音中の発音チャンネルより先にトランケートしてしまうことがあった。また、トランケート処理以外の、音量レベルに応じた制御処理においても、各発音チャンネルそれぞれで発生中の各楽音の実際の音量レベルを検出できないために、適切な楽音制御を行えないこともあった。
【００１３】
本発明は、この点に着目してなされたものであり、波形メモリに記憶された、音量エンベロープが時間変化する波形データを読み出し、この波形データに基づいて楽音を発生する場合に、発生中の楽音の音量レベルを正確に検出し、この検出された音量レベルに応じて的確な楽音制御を行うことが可能な楽音発生装置および記憶媒体を提供することを目的とする。
【００１４】
【課題を解決するための手段】
【００１６】
上記目的を達成するため、請求項１に記載の楽音発生装置は、音量エンベロープが時間変化する複数の波形データを記憶する波形データ記憶手段と、新たな楽音の発生を指示する指示手段と、該新たな楽音の発生が指示されたときに、形成された複数の発音チャンネルからいずれかを選択して発音割り当てを行う割り当て手段と、該割り当て手段によって割り当てられた各発音チャンネルにおいて、前記指示手段により、それぞれ指示された楽音に対応する各波形データを読み出す読み出し手段と、該読み出された各波形データの音量を、当該各発音チャンネル毎に制御するための各音量制御エンベロープを発生するエンベロープ発生手段と、該発生された各音量制御エンベロープに基づいて、前記読み出された各波形データの音量を、当該各発音チャンネル毎に制御する音量制御手段と、該音量の制御された各波形データに基づいて、当該各発音チャンネル毎に楽音を発生する楽音発生手段と、前記読み出された各波形データの音量エンベロープを、当該各発音チャンネル毎に抽出する抽出手段と、該抽出された各音量エンベロープおよび前記発生された各音量制御エンベロープに基づいて、当該各発音チャンネルにおいてそれぞれ発生中の各楽音の音量レベルを検出する検出手段とを有し、前記割り当て手段は、前記新たな楽音の発生が指示されたときに、前記複数の発音チャンネルがすべて発音割り当てされている場合には、前記各発音チャンネルにおいてそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行うことを特徴とする。
ここで、波形データの読み出し方法としては、たとえば、波形データをサンプリングしたときの周波数と波形データを読み出すときの周波数とが必ずしも一致しないようにした場合には、整数部と小数部とを含む実数アドレスを発生させ、波形メモリ中、発生したアドレスの整数部が示す位置の波形データと、その隣接する所定数の波形データを読み出し、これら読み出された波形データを、発生したアドレスの小数部に基づいて、所定の補間方法で補間する方法がある。この事情は、以下、請求項が変わっても同様である。
【００１７】
好ましくは、前記割り当て手段は、前記トランケートすべき発音チャンネルを選定するときに、前記複数の発音チャンネルから、所定の条件を満たす発音チャンネルを選択し、該選択された各発音チャンネルにおいて、前記検出手段によりそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行うことを特徴とする（請求項２）。
【００１８】
ここで、所定の条件としては、たとえば、「所定のパートの楽音を発生中の発音チャンネル」、「所定の音域の楽音を発生中の発音チャンネル」、「所定の音色グループの楽音を発生中の発音チャンネル」等を挙げることができる。そして、「所定のパートの楽音を発生中の発音チャンネル」という条件を採用した場合には、さらに具体的な条件として、「１つ以上の発音チャンネルに発音割り当てがされているパートであって、かつ、楽音を発生させる優先度の低いパート」や、「各パート毎に発音割り当て予約チャンネル数を決定しておき、現在発音割り当てされている発音チャンネル数が、その予約チャンネル数を最も多く超えているパート」等を挙げることができる。この事情は、以下、請求項が変わっても同様である。
【００２０】
また、請求項３に記載の記憶媒体は、音量エンベロープが時間変化する複数の波形データを記憶手段に記憶する記憶ステップと、指示手段によって新たな楽音の発生が指示されたときに、形成された複数の発音チャンネルからいずれかを選択して発音割り当てを行う割り当てステップと、該割り当てステップで割り当てられた各発音チャンネルにおいて、前記指示手段により、それぞれ指示された楽音に対応する各波形データを読み出す読み出しステップと、該読み出された各波形データの音量を、当該各発音チャンネル毎に制御するための各音量制御エンベロープを発生するエンベロープ発生ステップと、該発生された各音量制御エンベロープに基づいて、前記読み出された各波形データの音量を、当該各発音チャンネル毎に制御する音量制御ステップと、該音量の制御された各波形データに基づいて、当該各発音チャンネル毎に楽音を発生する楽音発生ステップと、前記読み出された各波形データの音量エンベロープを、当該各発音チャンネル毎に抽出する抽出ステップと、該抽出された各音量エンベロープおよび前記発生された各音量制御エンベロープに基づいて、当該各発音チャンネルにおいてそれぞれ発生中の各楽音の音量レベルを検出する検出ステップとを有する楽音発生方法をコンピュータに実行させるプログラムを格納した、コンピュータ読み取り可能な記憶媒体であって、前記割り当てステップでは、前記新たな楽音の発生が指示されたときに、前記複数の発音チャンネルがすべて発音割り当てされている場合には、前記各発音チャンネルにおいてそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行うことを特徴とする。
【００２１】
好ましくは、前記割り当てステップでは、前記トランケートすべき発音チャンネルを選定するときに、前記複数の発音チャンネルから、所定の条件を満たす発音チャンネルを選択し、該選択された各発音チャンネルにおいて、前記検出手段によりそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てを行うことを特徴とする（請求項４）。
【００２２】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００２３】
図１は、本発明の一実施の形態に係る楽音発生装置の概略構成を示すブロック図である。
【００２４】
同図に示すように、本実施の形態の楽音発生装置は、音高情報を入力するための鍵盤１と、各種情報を入力するための複数の操作子を備えたパネル操作子２と、鍵盤１の各鍵の押鍵状態を検出する押鍵検出回路３と、パネル操作子２の各操作子の操作状態を検出する操作子検出回路４と、装置全体の制御を司るＣＰＵ５と、該ＣＰＵ５が実行する制御プログラムや、各種テーブルデータ等を記憶するＲＯＭ６と、演奏データ、各種入力情報および演算結果等を一時的に記憶するＲＡＭ７と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ８と、各種情報等を表示する、たとえば液晶ディスプレイ（ＬＣＤ）および発光ダイオード（ＬＥＤ）等を備えたパネル表示器９と、記憶媒体であるフロッピディスク（ＦＤ）２０をドライブするフロッピディスクドライブ（ＦＤＤ）１０と、前記制御プログラムを含む各種アプリケーションプログラムや各種データ等を記憶するハードディスク（図示せず）をドライブするハードディスクドライブ（ＨＤＤ）１１と、前記制御プログラムを含む各種アプリケーションプログラムや各種データ等を記憶するコンパクトディスク−リード・オンリ・メモリ（ＣＤ−ＲＯＭ）２１をドライブするＣＤ−ＲＯＭドライブ（ＣＤ−ＲＯＭＤ）１２と、外部からのＭＩＤＩ（Musical Instrument Digital Interface）信号を入力したり、ＭＩＤＩ信号を外部に出力したりするＭＩＤＩインターフェース（Ｉ／Ｆ）１３と、通信ネットワーク１０１を介して、たとえばサーバコンピュータ１０２とデータの送受信を行う通信インターフェース（Ｉ／Ｆ）１４と、各音色および各周波数毎の波形データを記憶した波形メモリを備え、鍵盤１から入力された演奏データや予め設定された演奏データ等に基づいて、波形メモリから波形データを読み出し、この波形データを加工することにより、デジタル楽音信号を生成する波形メモリ音源１５と、該波形メモリ音源１５からのデジタル楽音信号をアナログ楽音信号に変換するＤＡＣ（Digital-to-Analog Converter）１６と、該ＤＡＣ１６からのアナログ楽音信号を音響に変換する、たとえばアンプやスピーカ等からなるサウンドシステム１７とにより構成されている。
【００２５】
上記構成要素３〜１６は、バス１８を介して相互に接続され、ＣＰＵ５にはタイマ８が接続され、ＭＩＤＩＩ／Ｆ１３には他のＭＩＤＩ機器１００が接続され、通信Ｉ／Ｆ１４には通信ネットワーク１０１が接続され、波形メモリ音源１５にはＤＡＣ１６が接続され、ＤＡＣ１６にはサウンドシステム１７が接続されている。
【００２６】
ＨＤＤ１１のハードディスクには、前述のように、ＣＰＵ５が実行する制御プログラムも記憶でき、ＲＯＭ６に制御プログラムが記憶されていない場合には、このハードディスクに制御プログラムを記憶させておき、それをＲＡＭ７に読み込むことにより、ＲＯＭ６に制御プログラムを記憶している場合と同様の動作をＣＰＵ５にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００２７】
ＣＤ−ＲＯＭドライブ１２のＣＤ−ＲＯＭ２１から読み出された制御プログラムや各種データは、ＨＤＤ１１内のハードディスクにストアされる。これにより、制御プログラムの新規インストールやバージョンアップ等が容易に行える。なお、このＣＤ−ＲＯＭドライブ１２以外にも、外部記憶装置として、光磁気ディスク（ＭＯ）装置等、様々な形態のメディアを利用するための装置を設けるようにしてもよい。
【００２８】
ＭＩＤＩＩ／Ｆ１３は、専用のものに限らず、ＲＳ−２３２ＣやＵＳＢ（ユニバーサル・シリアル・バス）、ＩＥＥＥ１３９４（アイトリプルイー１３９４）等の汎用のインターフェースより構成してもよい。この場合、ＭＩＤＩメッセージ以外のデータをも同時に送受信してもよい。
【００２９】
通信Ｉ／Ｆ１４は、上述のように、たとえばＬＡＮ（Local Area Network）やインターネット、電話回線等の通信ネットワーク１０１に接続されており、該通信ネットワーク１０１を介して、サーバコンピュータ１０２に接続される。ＨＤＤ１１内のハードディスクに上記各プログラムや各種パラメータが記憶されていない場合には、通信Ｉ／Ｆ１４は、サーバコンピュータ１０２からプログラムやパラメータをダウンロードするために用いられる。クライアントとなるコンピュータ（本実施の形態では、楽音発生装置）は、通信Ｉ／Ｆ１４および通信ネットワーク１０１を介してサーバコンピュータ１０２へとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータ１０２は、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワーク１０１を介してコンピュータへと配信し、コンピュータが通信Ｉ／Ｆ１４を介して、これらプログラムやパラメータを受信してＨＤＤ１１内のハードディスクに蓄積することにより、ダウンロードが完了する。
【００３０】
この他、外部コンピュータ等との間で直接データのやりとりを行うためのインターフェースを備えてもよい。
【００３１】
なお、本実施の形態の楽音発生装置は、上述の構成から分かるように、汎用的なパーソナルコンピュータ上に構築されたものであるが、これに限らず、本発明を実施できる最小限要素のみから構成した専用装置上に構築してもよい。
【００３２】
図２は、波形メモリ音源１５の詳細な構成を示すブロック図である。同図には、バス１８も図示されており、波形メモリ音源１５とバス１８とは、音源レジスタ１５０を介して接続されている。ＣＰＵ５は、バス１８を介して、音源レジスタ１５０に各種情報を書き込むことで、波形メモリ音源１５に対する楽音制御を行う。なお、波形メモリ音源１５は、複数の発音チャンネルを形成し、該各発音チャンネルでの楽音発生処理を時分割で行うようにして、同時に複数の楽音を発生するように構成されている。つまり、図２に示される各ブロックは、機能毎に１つのブロックで表されているが、それぞれ時分割で複数ブロック分の動作を行っている。特に、各発音チャンネルの楽音発生処理に関わる１５１〜１５５，１６１，１６２の各ブロック、および、音量レベル検出に関わる１５７〜１６０の各ブロックは、それぞれ発音チャンネル数分の動作を時分割で行っている。以下に述べる各ブロックの説明では、その時分割チャンネル動作の中の１つのチャンネルに注目して説明を行っている。
【００３３】
音源レジスタ１５０には、アドレス発生部１５１、音色フィルタ部１５４、ＡＥＧ（振幅エンベロープ発生器）部１６１および合成部Ａ１６２に供給されるデータ（各発音チャンネルで生成する楽音を制御するためのデータ）を記憶する領域、混合＆エフェクト処理部１５６に供給されるデータを記憶する領域、選択部Ａ１５７および選択部Ｂ１５９等に供給されるデータ（セレクトデータ）を記憶する領域が設けられ、ＣＰＵ５は、バス１８を介して、これら各領域にデータを書き込むことができるように構成されている。
【００３４】
また、音源レジスタ１５０には、各発音チャンネル毎に、該各発音チャンネルでそれぞれ生成中の各楽音の音量レベルを示すデータを記憶する領域も設けられ、ＣＰＵ５は、この領域に記憶されているデータを読み出すことができるように構成されている。ただし、ＣＰＵ５は、音量レベル等のデータを読み出すに先立って、その読み出し動作を制御するためのデータ、具体的には、読み出したい発音チャンネルを示すデータや選択部Ａ１５７および選択部Ｂ１５９の各状態を決定するためのデータ等を、音源レジスタ１５０の所定領域に書き込んでおく必要がある。すなわち、この所定領域に目的のデータを書き込むと、これに対応する音量レベルを示すデータが、対応する領域に格納され、ＣＰＵ５は、この格納された音量レベルを読み出すことができる。
【００３５】
音源レジスタ１５０は、ＣＰＵ５によって書き込まれた、当該発音チャンネルの楽音制御のための情報をアドレス発生部１５１に供給し、アドレス発生部１５１は、この情報に基づいて、波形メモリ１５２から読み出すべき波形データのアドレスを発生する。本実施の形態では、波形データをサンプリングしたときの周波数と波形データを読み出すときの周波数とが必ずしも一致しないように構成されているため、発生するアドレスは、通常、サンプリングされていない音高の波形データ、すなわち、波形メモリ１５２に記憶されていない波形データを指示する。換言すると、発生するアドレスは、整数部と小数部を含む実数値となる。そして、アドレス発生部１５１は、発生したアドレス値の整数部を波形メモリ１５２に供給し、小数部をサンプル間補間部１５３に供給する。
【００３６】
波形メモリ１５２からは、供給されたアドレス値の整数部により示される波形データと、その次に位置する波形データの２つの波形データが読み出されて、サンプル間補間部１５３に供給される。サンプル間補間部１５３は、この２つの波形データを、前記供給されたアドレス値の小数部に応じて、たとえば線形補間することにより、発生されたアドレス値（実数値）に相当する波形データを生成する。なお、本実施の形態では、隣接する２つの波形データを用いて線形補間することにより、目的の波形データを生成するようにしたが、用いる波形データの数は、２つに限らず、３つ以上であってもよいし、補間方法も線形補間に限らず、たとえばラグランジュ補間等の非線形補間であってもよい。サンプル間補間部１５３は、補間により生成した波形データを音色フィルタ部１５４および選択部Ａ１５７に供給する。
【００３７】
音色フィルタ部１５４は、前記音源レジスタ１５０から供給された、当該発音チャンネルの楽音制御のための情報に基づいて、サンプル間補間部１５３から供給された波形データをフィルタリングした後、音量制御部１５５および前記選択部Ａ１５７に供給する。音量制御部１５５は、合成部Ａ１６２から出力される合成出力（合成後の音量制御エンベロープ）に応じて、フィルタリング後の波形データの音量エンベロープを制御し、混合＆エフェクト処理部１５６に供給する。混合＆エフェクト処理部１５６は、前記音源レジスタ１５０から供給された楽音制御のための情報に基づいて、音量エンベロープが制御された（各発音チャンネル毎の）波形データ混合処理およびエフェクト処理を行い（楽音制御情報によっては、効果を付与しない場合もある）、各発音チャンネル毎の波形データを複数の系列で混合するとともに、混合後の波形データに、前記楽音制御情報に基づいて、当該系列毎に効果を付与して、前記ＤＡＣ１６に出力する。
【００３８】
選択部Ａ１５７は、サンプル間補間部１５３および音色フィルタ部１５４からそれぞれ供給された波形データのいずれかを選択して、当該波形データの音量エンベロープを抽出するために、ピーク抽出部１５８に供給する。ここで、いずれの波形データを選択するかを示すセレクトデータは、前述のように、音源レジスタ１５０に設けられた領域に書き込まれており、選択部Ａ１５７は、このセレクトデータによって示される波形データを選択して、ピーク抽出部１５８に出力する。
【００３９】
前述のように、波形メモリ１５２から読み出された波形データは、音色フィルタ部１５４によってフィルタリングされた後に、音量制御部１５５によって音量制御エンベロープに応じた音量制御が行われる。ここで、音色フィルタ部１５４によって波形データをフィルタリングしたときに、その波形データの主要な周波数成分の一部または全部が、音色フィルタ部１５４の周波数特性における減衰量が大きい周波数帯域に入ることがあり、この場合には、当該周波数成分の一部または全部がカットされることになる。これにより、その波形データによって生成される楽音全体としての音量レベルが減少する。すなわち、当該楽音の実際の音量レベル（実音量レベル）は、音色フィルタ部１５４によるフィルタリング後の波形データに、さらに音量制御エンベロープに応じた音量制御を施したものによって生成される楽音の音量レベルである。したがって、この場合には、音色フィルタ部１５４から出力された波形データの音量エンベロープを抽出することにより、その楽音の実音量レベルを取得することができる。
【００４０】
一方、音色フィルタ部１５４に供給される前の波形データの音量エンベロープを抽出することにより、音色フィルタ部１５４のフィルタ特性に左右されない音量エンベロープを抽出することができる。たとえば、前記パネル操作子２の操作に応じて、音色フィルタ部１５４のカットオフ周波数が一時的に変更された後に再び元に戻された場合には、フィルタリング後の波形データの音量レベルが一時的に減少した後に再び元に戻ることがある。このときに、フィルタリング後の波形データの音量エンベロープを抽出し、この抽出結果に基づいてトランケートを行うと、一時的に音量レベルが低下し再び元に戻る楽音を発生中の発音チャンネルをトランケートしてしまう可能性がある。したがって、この場合には、音色フィルタ部１５４に供給される前の波形データの音量エンベロープを抽出することにより、音色フィルタ部１５４によって一時的に音量レベルが低下している楽音をトランケートしないようにすることができる。
【００４１】
図３は、ピーク抽出部１５８の詳細な構成を示すブロック図であり、同図に示すように、ピーク抽出部１５８は、絶対値化部１７０、ラッチ部Ａ１７１、ラッチ部Ｂ１７２および比較部１７３によって構成されている。
【００４２】
選択部Ａ１５７から供給された波形データは、絶対値化部１７０に入力され、絶対値化部１７０は、この入力された波形データを絶対値化した後に、ラッチ部Ａ１７１および比較部１７３に供給する。
【００４３】
ラッチ部Ａ１７１は、ラッチした波形データ（絶対値）をラッチ部Ｂ１７２および比較部１７３に供給する。比較部１７３は、絶対値化部１７０からの波形データと、ラッチ部Ａ１７１からの波形データとを比較し、絶対値化部１７０からの波形データの値がラッチ部Ａ１７１からの波形データの値より大きくなったときに、ラッチ部Ａ１７１に対して、絶対値化部１７０からの波形データをラッチするように指示する。ラッチ部Ａ１７１は、この指示に応じて、絶対値化部１７０からの波形データをラッチする。
【００４４】
ラッチ部Ａ１７１およびラッチ部Ｂ１７２には、所定周期のタイミング信号（パルス信号）φが供給されており、たとえばその立ち上がりで、ラッチ部Ａ１７１にラッチされている波形データがラッチ部Ｂ１７２にラッチされるとともに、ラッチ部Ａ１７１にラッチされている値がゼロクリアされる。そして、ラッチ部Ｂ１７２にラッチされた値が、後述する合成部Ｂ１６０に出力される。ここで、タイミング信号φの周期は、入力される波形データの基本波の周期より長い周期（たとえば、数Ｈｚ〜数十Ｈｚ）に設定されている。
【００４５】
なお、ピーク抽出部１５８も、各発音チャンネルに対応して時分割動作をしている。具体的には、ラッチ部Ａ１７１およびラッチ部Ｂ１７２は、それぞれ、全発音チャンネル分の記憶領域を備え、検出中のピーク値と、検出されたピーク値を保持している。
【００４６】
図２に戻り、ピーク抽出部１５８によって検出された波形データの音量エンベロープは、合成部Ｂ１６０に供給される。合成部Ｂ１６０には、選択部Ｂ１５９からの出力、すなわち、ＡＥＧ部１６１からの出力および合成部Ａ１６２からの出力のうち、選択されたいずれか一方の出力が供給される。
【００４７】
ＡＥＧ部１６１は、前記音源レジスタ１５０から供給された、当該発音チャンネルの楽音制御のための情報に基づいて、音量制御エンベロープを生成し、この音量制御エンベロープを選択部Ｂ１５９および合成部Ａ１６２に供給する。合成部Ａ１６２は、前記音源レジスタ１５０から供給された楽音制御のための情報、具体的には音量データＶＯＬに基づいて、音量制御エンベロープを合成する。そして、この合成後の音量制御エンベロープを選択部Ｂ１５９および音量制御部１５５に出力する。
【００４８】
選択部Ｂ１５９は、選択部Ａ１５７と同様にして、いずれの波形データを選択するかを示すセレクトデータ（音源レジスタ１５０に設けられた領域に書き込まれたデータ）によって示される音量制御エンベロープ、すなわち、ＡＥＧ部１６１が発生した音量制御エンベロープそのもの、または、この音量制御エンベロープと音量データＶＯＬを合成した合成後の音量制御エンベロープのいずれかを選択して、合成部Ｂ１６０に出力する。
【００４９】
前述のように、波形メモリ音源１５で発生される楽音の音量レベルは、音量制御部１５５により、合成部Ａ１６２から出力された、合成後の音量制御エンベロープに基づいて制御されるため、この合成後の音量制御エンベロープを検出することで、当該楽音の実音量レベルを取得することができる（ただし、波形データが持つ音量エンベロープも時間変化しているため、該音量制御エンベロープは、波形メモリ音源１５の当該発音チャンネルで発生される楽音の音量レベルそのものではない）。
【００５０】
しかし、前記パネル操作子２の操作に応じて、音量データＶＯＬの値が一時的に絞られる場合があり、このような場合に、合成後の音量制御エンベロープを検出したのでは、当該発音チャンネルで発生する楽音の実質的な音量レベル（または、一時的ではない音量レベル）を正確に取得しているとは言い得ない。
【００５１】
このため、選択部Ｂ１５９は、合成部Ａ１６２による合成前後の音量制御エンベロープのうち、いずれかの音量制御エンベロープを選択するようにしている。
【００５２】
合成部Ｂ１６０は、ピーク抽出部１５８から出力された音量エンベロープと、選択部Ｂ１５９から出力された音量制御エンベロープとを合成し、合成後のエンベロープを、音源レジスタ１５０の所定位置に確保されたエンベロープ記憶領域に書き込む。このように、音量エンベロープと音量制御エンベロープとを合成したものを、最終的な音量レベルとして検出するようにしたのは、当該楽音の実音量レベルは両エンベロープによって決定されるため、その実音量レベルを正確に求めるようにしたからである。ここで、合成の方法は、音量エンベロープおよび音量制御エンベロープがともにデシベル（ｄＢ）値で表されているときには、単なる加算演算に相当し、音量エンベロープおよび音量制御エンベロープがともに実値で表されているときには、乗算演算に相当する。
【００５３】
ここで、ＡＥＧ部１６が発生する音量制御エンベロープ、および、合成部Ｂ１６０から出力される音量制御エンベロープは、ともにデシベル値である場合が多い。そのため、ピーク抽出部１５８の絶対値化部１７０またはラッチ部Ｂ１７２の内部に実値からデシベル値に変換する変換手段を設け、ピーク抽出部１５８から出力される波形データの音量エンベロープがデシベル値となるようにすると好都合である。この変換手段が行う具体的な変換方法としては、波形データの実値の上位の符号と同じ値の連続するビット数をカウントしてその数に応じたデシベル値を生成する方法や、波形データの実値で、実値からデシベル値に変換するテーブルを参照して、対応するデシベル値を得る方法や、その他、演算式を用いる方法等がある。
【００５４】
ＣＰＵ５は、このようにして合成され、エンベロープ記憶領域に書き込まれたエンベロープ値を読み出し、このエンベロープ値に応じて、チャンネルトランケート等の制御を行う。
【００５５】
なお、本実施の形態では、音量エンベロープおよび音量制御エンベロープの合成結果を音源レジスタ１５０のエンベロープ記憶領域に書き込むようにしているが、これに限らず、図２中、波線で示すように、ピーク抽出部１５８から出力された音量エンベロープをそのまま、音源レジスタ１５０の所定位置に確保された音量エンベロープ記憶領域に書き込むとともに、選択部Ｂ１５９から出力された音量制御エンベロープをそのまま、音源レジスタ１５０の所定位置に確保された音量制御エンベロープ記憶領域に書き込み、ＣＰＵ５は、音量エンベロープ記憶領域および音量制御エンベロープ記憶領域に書き込まれた各値をそれぞれ読み出した後、自ら合成し、その合成結果を各種制御に使用するようにしてもよい。
【００５６】
また、本実施の形態では、波形メモリ音源１５は、波形メモリ１５２を外部メモリとするＤＳＰによって構成しているため、図２中、波形メモリ１５２および一部のブロック（音源レジスタ１５０等）を除いた各ブロックの機能は、マイクロプログラムの実行によるソフトウェアで実現されている。もちろん、これに限らず、すべてハードウェアにより波形メモリ音源を実現するようにしてもよい。
【００５７】
以上のように構成された楽音発生装置が実行する制御処理を、図４および図５を参照して説明する。
【００５８】
図４は、本実施の形態の楽音発生装置において、楽音の発生開始を指示するイベント（ノートオンイベント）が発生したときに、ＣＰＵ５が実行するノートオンイベント処理の手順を示すフローチャートである。
【００５９】
同図において、まず、発生されたノートオンイベントから、そのパート番号、ノート番号およびベロシティ値を検出し、各検出値を、前記ＲＡＭ７の所定位置に確保された領域ＰＴ，ＮＮ，ＶＬにそれぞれ格納する（ステップＳ１）。
【００６０】
次に、全発音チャンネルから、発音割り当てされていない空きチャンネル（ｃｈ）を検出し、その結果、空きチャンネルが検出されたときには、その空きチャンネルのチャンネル番号を、ＲＡＭ７の所定位置に確保された領域ＡＳ（その内容を、以下、「ＡＳｃｈ」という）に格納する一方、空きチャンネルが検出されないときには、トランケートチャンネルを決定し、その決定されたチャンネルのチャンネル番号を上記領域ＡＳに格納するトランケートチャンネル決定処理サブルーチンを実行した（ステップＳ５）後に、ＡＳｃｈで発生中の楽音に対する急速減衰処理（ダンプ処理）を実行する（ステップＳ６）。
【００６１】
ここで、空きチャンネルとは、波形メモリ音源１５の複数の発音チャンネルのうち、ＣＰＵ５が、「楽音生成に使用されていない発音チャンネル」として認定した発音チャンネルをいう。ＣＰＵ５は、発音チャンネルに対するノートオフから充分な時間が経過したとき、または、発音チャンネルで生成される楽音の音量レベルが十分に小さいことが検出されたとき、等に上記認定を行う。このステップＳ４またはＳ５，Ｓ６の処理により、波形メモリ音源１５のＡＳｃｈが、当該ノートオンイベントに応じた新規の楽音を発生するための発音チャンネルとして確保されたことになる。
【００６２】
図５は、上記ステップＳ５のトランケートチャンネル決定処理サブルーチンの詳細な手順を示すフローチャートである。
【００６３】
同図において、まず、全パートの中から、トランケートチャンネルをサーチするパート範囲、すなわちサーチ対象パートｐｔを決定する（ステップＳ１１）。ここで、サーチ対象パートｐｔの決定方法としては、たとえば、「１つ以上の発音チャンネルに発音割り当てがされているパートであって、かつ、楽音を発生させる優先度の低いパート」や、「各パート毎に発音割り当て予約チャンネル数を決定しておき、現在発音割り当てされている発音チャンネル数が、その予約チャンネル数を最も多く超えているパート」等を挙げることができる。
【００６４】
なお、サーチ範囲の規制の方法は、上記パート単位に限る必要はなく、たとえば、音域単位、音色グループ単位等であってもよい。
【００６５】
また、トランケートチャンネルのサーチ範囲を規制するようにしたのは、これにより、トランケートチャンネルの決定が高速化されるからである。したがって、ＣＰＵ５として、トランケートチャンネルの決定を高速化する意味がないほど十分高速な演算速度のものを採用した場合には、トランケートチャンネルのサーチ範囲を規制しないようにしてもよい。
【００６６】
次に、決定されたパートｐｔで発音中の発音チャンネルを、前記音源レジスタ１５０の、各発音チャンネル毎に設けられた領域に記憶されているパート番号ＰＴ（後述するステップＳ７参照）に基づいて、全発音チャンネルから検出し（ステップＳ１２）、この検出された発音チャンネル（通常、複数個検出される）の各チャンネルでそれぞれ発音中の楽音の音量レベルを、前記エンベロープ記憶領域中、当該各チャンネルに対応する領域から読み出して取得する（ステップＳ１３）。
【００６７】
そして、取得された音量レベル（エンベロープ値）中、音量レベルが最小の発音チャンネルを検出して、トランケートチャンネルに決定し（ステップＳ１４）、この決定されたトランケートチャンネルのチャンネル番号を前記領域ＡＳに格納した（ステップＳ１５）後に、本トランケートチャンネル決定処理を終了する。
【００６８】
図４に戻り、ステップＳ７では、音源レジスタ１５０に、各発音チャンネル毎に設けられた記憶領域であって、該各発音チャンネルでそれぞれ生成する楽音を制御するためのデータを記憶する領域中、ＡＳｃｈに対応する領域に、前記パート番号ＰＴ、ノート番号ＮＮおよびベロシティ値ＶＬに応じた楽音を生成するための各種パラメータを書き込む。
【００６９】
続くステップＳ８では、上記ＡＳｃｈに対応する領域に、発音開始を指示する情報を書き込んだ後に、本ノートオンイベント処理を終了する。
【００７０】
本ノートオンイベント処理により、波形メモリ音源１５に対する当該ノートオンイベントに応じた新規の楽音の発音指示がなされ、当該発音指示に応じた楽音の生成は、専ら波形メモリ音源１５が行う。
【００７１】
なお、本実施の形態では、音色フィルタ部１５４の直前または直後の波形データの音量エンベロープを抽出するようにしたが、これに代えて、音量制御部１５５が出力する波形データの音量エンベロープを抽出するようにしてもよい。または、サンプル間補間部１５３の直前の波形データの音量エンベロープを抽出するようにしてもよい。
【００７２】
また、本実施の形態では、音色フィルタ部１５４の直前または直後の波形データのいずれかの音量エンベロープを抽出するようにしたが、これに限らず、その両方の音量エンベロープを抽出して、波形メモリ音源１５の制御を行うようにしてもよい。または、サンプル間補間部１５３の直前、音色フィルタ部１５４の直前、音色フィルタ部１５４の直後、音量制御部１５５の直後のいずれか２個所以上の波形データの音量エンベロープを抽出して、波形メモリ音源１５の制御を行うようにしてもよい。
【００７３】
ここで、サンプル間補間部１５３の直前および音色フィルタ部１５４の直前の波形データは、波形メモリ１５２から読み出されたままの波形データであり、音色フィルタ部１５４の直後および音量制御部１５５の直後の波形データは、波形メモリ１５２から読み出された波形データが加工された後の波形データである。その両者の音量エンベロープを用いれば、入力する演奏データに応じた波形メモリ音源１５の制御をより適切に行うことができる。
【００７４】
このように、本実施の形態では、各発音チャンネル毎に、当該各チャンネルで発生中の楽音の音量レベルを正確に検出するようにしたので、音量レベルに応じた楽音制御を的確に行うことができる。
【００７５】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵ５やＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００７６】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７７】
プログラムコードを供給するための記憶媒体としては、たとえば、前記フロッピーディスク２０、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ２１、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ６などを用いることができる。また、他のＭＩＤＩ機器１００や通信ネットワーク１０１を介してサーバコンピュータ１０２からプログラムコードが供給されるようにしてもよい。
【００７８】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００７９】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ５などが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００８０】
【発明の効果】
【００８１】
以上説明したように、請求項１または３に記載の発明によれば、発音割り当てされた各発音チャンネルにおいて、指示手段により、それぞれ指示された楽音に対応する各波形データが読み出され、該読み出された各波形データの音量を、当該各発音チャンネル毎に制御するための各音量制御エンベロープが発生され、前記読み出された各波形データの音量エンベロープが、当該各発音チャンネル毎に抽出され、該抽出された各音量エンベロープおよび前記発生された各音量制御エンベロープに基づいて、当該各発音チャンネルにおいてそれぞれ発生中の各楽音の音量レベルが検出される。そして、新たな楽音の発生が指示されたときに、前記複数の発音チャンネルがすべて発音割り当てされている場合には、前記各発音チャンネルにおいてそれぞれ検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルを選定し、該選定された発音チャンネルに対して発音割り当てがなされるので、意図通りのチャンネルをトランケートチャンネルとして選定することができる。
【００８２】
さらに、前記トランケートすべき発音チャンネルを選定するときに、前記複数の発音チャンネルから、所定の条件を満たす発音チャンネルが選択され、該選択された各発音チャンネルにおいて、前記検出された各楽音の音量レベルに基づいて、トランケートすべき発音チャンネルが選定され、該選定された発音チャンネルに対して発音割り当てがなされるので、トランケートチャンネルの選定に要する演算処理の処理量および処理時間を削減でき、これにより、演算処理装置として、演算能力があまり高くなく、価格が廉価なものを採用することができ、装置全体のコストを低減させることができる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態に係る楽音発生装置の概略構成を示すブロック図である。
【図２】  図１の波形メモリ音源の詳細な構成を示すブロック図である。
【図３】  図２のピーク抽出部の詳細な構成を示すブロック図である。
【図４】  図１の楽音発生装置において、楽音の発生開始を指示するイベント（ノートオンイベント）が発生したときに、ＣＰＵが実行するノートオンイベント処理の手順を示すフローチャートである。
【図５】  図４のトランケートチャンネル決定処理サブルーチンの詳細な手順を示すフローチャートである。
【図６】  音量エンベロープが時間変化する波形データに基づいて発生させた楽音の推移の一例を示す図である。
【符号の説明】
１  鍵盤（指示手段）
５  ＣＰＵ（楽音制御手段、割り当て手段）
１６  ＤＡＣ（楽音発生手段）
１７  サウンドシステム（楽音発生手段）
１５１  アドレス発生部（読み出し手段）
１５２  波形メモリ（波形データ記憶手段）
１５５  音量制御部（音量制御手段）
１５６  混合＆エフェクト処理部（楽音発生手段）
１５８  ピーク抽出部（抽出手段）
１６０  合成部Ｂ（検出手段）
１６１  ＡＥＧ部（エンベロープ発生手段）
【図１】
0003666346.tif 000002
【図２】
0003666346.tif 000003
【図３】
0003666346.tif 000004
【図４】
0003666346.tif 000005
【図５】
0003666346.tif 000006
【図６】
0003666346.tif 000007