(57)【特許請求の範囲】
【請求項１】
楽音データ及び楽音データのパラメータを制御する制御データを含む曲データを入力する入力手段と、
同一の楽音データのパラメータを制御する複数の制御データについて制御処理の順序を操作に応じて指定する操作子と、
前記入力手段から入力された任意の楽音データに対して複数の制御データが前記入力手段から入力されたときは、当該楽音データに対して前記操作子によって指定された制御データの順序に従った制御処理を行って波形データを生成する波形生成手段と、
を備えたことを特徴とする楽音発生装置。
【請求項２】
前記制御データは、楽音データの音色のパラメータを制御するデータであることを特徴とする請求項１に記載の楽音発生装置。
【請求項３】
前記波形生成手段は、楽音データのパラメータに対して制御データによるソフトウェア演算処理を行って波形データを生成することを特徴とする請求項１又は２に記載の楽音発生装置。
【請求項４】
前記複数の制御データの中には鍵盤演奏のアフタータッチによる制御データを含むことを特徴とする請求項１〜３のいずれかに記載の楽音発生装置。
【請求項５】
同一の楽音データのパラメータを制御する複数の制御データについて制御処理の順序を操作子の操作に応じて指定する指定手順と、
任意の楽音データに対して複数の制御データが入力されたときは、当該楽音データに対して前記指定手順によって指定された制御データの順序に従った制御処理を行って波形データを生成する波形生成手順と、
を実行する楽音発生処理のプログラムを記憶していることを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音発生装置及び楽音発生処理のプログラムを記憶している記憶媒体に関する。
【０００２】
【従来の技術】
楽音発生装置の中には、外部から入力した曲データに含まれている楽音データ及びその楽音データのパラメータを制御する制御データに応じて制御処理を行って、その処理されたパラメータに基づいて波形データを生成するものがある。例えば、ブライトネスの制御データを入力したときは、音色の明るさを制御するためにフィルタの高音域を強調又は減衰する等の制御処理を行ってパラメータを変更する。また、鍵盤のアフタータッチに応じた制御データを入力したときは、パラメータの値を増加させる制御処理を行う。
【０００３】
【発明が解決しようとする課題】
しかしながら、同一の楽音データに対して複数の制御データがある場合には、その制御処理を行う場合に問題が生じてしまう。特に、ＭＩＤＩデータのようなシーケンシャルな曲データを入力するシステムの場合には、常に入力した制御データの順序で制御処理を行うので、演奏者が意図したものとは異なる音色で発音されてしまう場合がある。例えば、ブライトネスの制御データとアフタータッチの制御データとを入力したときは制御処理の順序によって異なる音色のパラメータになるので、入力した制御データの順序で制御処理を行うと演奏者の意図が正しく伝わらないという問題がある。
【０００４】
本発明の課題は、同一の楽音データに対して複数の制御データがある場合でも、演奏者の意図した音色で発音できるようにすることである。
【０００５】
【課題を解決するための手段】
請求項１に記載の楽音発生装置の発明は、楽音データ及び楽音データのパラメータを制御する制御データを含む曲データを入力する入力手段（実施形態においては、図１のＭＩＤＩインターフェース４に対応する）と、同一の楽音データのパラメータを制御する複数の制御データについて制御処理の順序を操作に応じて指定する操作子（実施形態においては、図１の操作子７に対応する）と、前記入力手段から入力された任意の楽音データに対して複数の制御データが前記入力手段から入力されたときは、当該楽音データに対して前記操作子によって指定された制御データの順序に従った制御処理を行って波形データを生成する波形生成手段（実施形態においては、図１のＣＰＵ１に対応する）と、を備えた構成になっている。
【０００６】
請求項５に記載の記憶媒体の発明は、同一の楽音データのパラメータを制御する複数の制御データについて制御処理の順序を操作子の操作に応じて指定する指定手順と、任意の楽音データに対して複数の制御データが入力されたときは、当該楽音データに対して前記指定手順によって指定された制御データの順序に従った制御処理を行って波形データを生成する波形生成手順と、を実行する楽音発生処理のプログラムを記憶している。
【０００７】
請求項１又は請求項５に記載の発明によれば、任意の楽音データに対して複数の制御データが入力されたときは、その楽音データに対して操作によって指定された制御データの順序に従った制御処理を行って波形データを生成する。
【０００８】
【発明の実施の形態】
以下、本発明による 楽音発生装置の実施形態について図１〜図１１を参照して説明する。
図１は、パソコン上でソフトウェアによる演算処理で楽音の波形データを生成する楽音発生装置のシステム構成を示している。図１において、ＣＰＵ１は、システムバス２を介して、ＲＯＭ３、ＲＡＭ４、ＭＩＤＩインターフェース５、表示部６、操作子７、及びＤ／Ａコンバータ８に接続されている。ＣＰＵ１は、システムバス２を介して各部との間でコマンド及びデータの授受を行って、このシステム全体を制御する。
【０００９】
ＲＯＭ３は、ＣＰＵ１によって実行される楽音発生処理のプログラムやイニシャライズにおける初期データ及び処理演算に用いるテーブル等を記憶している。ＲＡＭ４は、ＣＰＵ１のワークエリアであり、操作子７から入力されたデータやＣＰＵ１の演算処理によって生成された楽音の波形データを一時的に記憶する。また、ＲＡＭ４内には楽音発生処理に必要な各種のレジスタ、フラグ等のエリアが設けられている。ＭＩＤＩインターフェース５は、外部のＭＩＤＩ機器に接続して、ＭＩＤＩデータ形式の曲データを送受信する。
【００１０】
表示部６は、ＣＲＴやＬＣＤで構成され、ＣＰＵ１による表示コマンドに応じて曲名等のデータやメッセージを表示する。操作子７は、各種のスイッチからなるキーボード及びマウスで構成され、スイッチのオン・オフ操作に応じてコマンドやデータを入力する。Ｄ／Ａコンバータ８は、ＣＰＵ１から出力される波形データをアナログ信号に変換して、サウンドシステム９から発音させる。
【００１１】
次に、実施形態における楽音発生処理の動作について、ＣＰＵ１のフローチャート及び表示部５の画面を示す図を参照して説明する。
図２は、ＣＰＵ１の楽音発生処理のメインフローである。所定のイニシャライズ処理(ステップＡ１)の後、設定処理（ステップＡ２）、ＭＩＤＩ処理（ステップＡ３）、スイッチ処理や発音処理等のその他の処理（ステップＡ４）を繰り返し実行する。
【００１２】
図３及び図４は、メインフローにおけるステップＡ２の設定処理のフローである。図３のフローにおいて、フィルタ係数変更スイッチがオンされたか否かを判別し（ステップＢ１）、このスイッチがオンされない場合にはメインフローに戻る。このスイッチがオンされたときは、表示部６に図５に示すようなフィルタ処理選択のウインドウ画面を表示し（ステップＢ２）、レジスタＭの値に対応するラジオボタンＡ、Ｂ、Ｃを表示する（ステップＢ３）。Ｍの値は、フィルタ係数の演算処理の手順を示している。
【００１３】
図５の画面において、ラジオボタンＡは、フィルタ演算をＯＦＦとする選択メニューを表している。ラジオボタンＢは、最初にブライトネスによるフィルタ演算を処理し、その後にアフタータッチによるフィルタ演算を処理する選択メニューを表している。ラジオボタンＣは、最初にアフタータッチによるフィルタ演算を処理し、その後にブライトネスによるフィルタ演算を処理する選択メニューを表している。なお、画面には選択したメニューを確定する「ＯＫ」スイッチ、選択したメニューを取り消す「キャンセル」スイッチが表示されている。
【００１４】
次に、操作子７の選択スイッチの操作によってラジオボタンが選択されたときは、その選択に応じた処理を実行する。すなわち、「ＯＦＦ」に対応するラジオボタンのスイッチがオンされたか否かを判別し（ステップＢ４）、このボタンがオンされたときはモードレジスタＭＯＤＥに０をセットする（ステップＢ５）。「ブライトネス→アフタータッチ」に対応するラジオボタンのスイッチがオンされたか否かを判別し（ステップＢ６）、このボタンがオンされたときはＭＯＤＥに１をセットする（ステップＢ７）。「アフタータッチ→ブライトネス」に対応するラジオボタンのスイッチがオンされたか否かを判別し（ステップＢ８）、このボタンがオンされたときはＭＯＤＥに２をセットする（ステップＢ９）。
【００１５】
そして、ＭＯＤＥにセットした値を判別する（ステップＢ１０）。ＭＯＤＥの値が０である場合には、ラジオボタン「Ａ」を点灯し、「Ｂ」及び「Ｃ」を消灯する（ステップＢ１１）。ＭＯＤＥの値が１である場合には、ラジオボタン「Ｂ」を点灯し、「Ａ」及び「Ｃ」を消灯する（ステップＢ１２）。ＭＯＤＥの値が２である場合には、ラジオボタン「Ｃ」を点灯し、「Ａ」及び「Ｂ」を消灯する（ステップＢ１３）。
【００１６】
ラジオボタンの点灯及び消灯を行った後、又はいずれのラジオボタンのスイッチもオンされない場合は、図４のフローにおいて、「ＯＫ」スイッチがオンされたか否かを判別する（ステップＢ１４）。このスイッチがオンされたときは、ＭＯＤＥの値をレジスタＭにセットする（ステップＢ１５）。このスイッチがオンされない場合には、「キャンセル」スイッチがオンされたか否かを判別する（ステップＢ１６）。このスイッチもオンされない場合には、図３のステップＢ４に移行する。「キャンセル」スイッチがオンされたとき、又は、ステップＢ１５においてＭにＭＯＤＥの値をセットした後は、図５のウインドウ画面を消去する（ステップＢ１７）。そして図２のメインフローに戻る。
【００１７】
図６は、メインフローにおけるステップＡ３のＭＩＤＩ処理のフローである。ＭＩＤＩインターフェース５を介してＭＩＤＩ入力があるか否かを判別し（ステップＣ１）、入力がない場合には直ちにこのフローを終了する。入力があったときは、そのＭＩＤＩデータをＲＡＭ３のＭＩＤＩバッファにストアする（ステップＣ２）。そしてメインフローに戻る。
【００１８】
図７は、メインフローの実行中に割込みが発生したときの、割込み処理のフローである。割込みが発生すると、ＭＩＤＩ制御処理（ステップＤ１）、生成処理（ステップＤ２）を実行してメインフローに戻る。
ステップＤ１のＭＩＤＩ制御処理では、ＲＡＭ４のＭＩＤＩバッファのイベントに応じた処理を行う。すなわち、図８に示すように、ＭＩＤＩバッファ内にノートオンのイベントがあるか否かを判別し（ステップＥ１）、ノートオンのイベントがある場合にはオントリガフラグＯＮＴＦに１（発音開始）をセットする（ステップＥ２）。また、レジスタＮＯＴＥにそのイベントのノートをセットする（ステップＥ３）。さらに、レジスタＶＥＬにそのイベントのベロシティをセットする（ステップＥ４）。ステップＥ１においてＭＩＤＩバッファ内にノートオンのイベントがない場合には、ノートオフのイベントがＭＩＤＩバッファ内にあるか否かを判別する（ステップＥ５）。ノートオフのイベントがある場合には、オフトリガフラグＯＦＦＴＦに１（消音開始）をセットする（ステップＥ６）。
【００１９】
次に、ＭＩＤＩバッファ内にアフターイベントがあるか否かを判別する（ステップＥ７）。アフターイベントがある場合には、レジスタＡＦＴＥＲにそのアフターイベントのデータをセットする（ステップＥ８）。また、ＭＩＤＩバッファ内にブライトネスのイベントがあるか否かを判別する（ステップＥ９）。ブライトネスのイベントがある場合には、レジスタＢＲＩＧＨＴにそのブライトネスのデータをセットする（ステップＥ１０）。次に、その他のＭＩＤＩイベントの処理を行い（ステップＥ１１）、ＭＩＤＩバッファのデータをクリアする（ステップＥ１２）。そしてこのフローを終了して図７のステップＤ２の生成処理に移行する。
【００２０】
図９及び図１０は、生成処理のフローである。図９において、ＯＮＴＦが１（発音開始）であるか否かを判別する（ステップＦ１）。このフラグが１である場合には、ピッチ用、フィルタ用、及び音量用の各エンベロープの読み出しを開始する（ステップＦ２）。そして、ＯＮＴＦに０をセットし（ステップＦ３）、オンフラグＯＮＦに１（発音中）をセットする（ステップＦ４）。ステップＦ１においてＯＮＴＦが０である場合には、ＯＦＦＴＦが１（消音開始）であるか否かを判別する（ステップＦ５）。このフラグが１である場合には、ピッチ用、フィルタ用、及び音量用の各リリースエンベロープの読み出しを開始する（ステップＦ６）。そして、ＯＦＦＴＦに０をセットし（ステップＦ７）、リリースフラグＲＦに１（消音）をセットする（ステップＦ８）。
【００２１】
ステップＦ１においてＯＮＴＦが０であり、ステップＦ５においてＯＦＦＴＦが０である場合には、ＲＦが１（消音中）であるか否かを判別する（ステップＦ９）。このフラグが１である場合には、発音中の楽音の波形レベルが０になったか否かを判別する（ステップＦ１０）。レベルが０になったとき（消音になったとき）は、ＲＦに０をセットし（ステップＦ１１）、ＯＮＦに０をセットする（ステップＦ１２）。そしてメインフローに戻る。
【００２２】
ステップＦ９においてＲＦが０である場合、又はステップＦ１０において波形レベルがまだ０になっていない場合には、図１０のフローにおいて、ＯＮＦが１（発音中）であるか否かを判別する（ステップＦ１３）。このフラグが０である場合にはこのフローを終了するが、このフラグが１である場合には、ピッチエンベロープによる演算処理であるＤＣＯ処理（ステップＦ１４）、フィルタエンベロープによる演算処理であるＤＣＦ処理（ステップＦ１５）、音量エンベロープによる演算処理であるＤＣＡ処理（ステップＦ１６）を実行する。そしてメインフローに戻る。
【００２３】
図１１にステップＦ１５のＤＣＦ処理のフローを示す。まず、フィルタ用のエンベロープの読出してレジスタＦＥＮＶにセットする（ステップＧ１）。次に、ＶＥＬのベロシティデータの値を１２８（最大値）で除算して正規化し、その除算値をＦＥＮＶの値に乗算する（ステップＧ２）。次に、Ｍの値を判別して（ステップＧ３）、その値に対応する処理を行う。
【００２４】
Ｍの値が１である場合には、最初にＢＲＩＧＨＴのブライトネスデータから６４（中間値）を減算し、その減算値をＦＥＮＶの値に加算する（ステップＧ４）。この後にＡＦＴＥＲのアフターデータを１２８（最大値）で除算して、その除算値をＦＥＮＶの値に加算する（ステップＧ５）。ステップＧ３においてＭの値が２である場合には、最初にＡＦＴＥＲのアフターデータを１２８で除算して、その除算値をＦＥＮＶの値に加算する（ステップＧ６）。この後にＢＲＩＧＨＴのブライトネスデータから６４（中間値）を減算し、その減算値をＦＥＮＶの値に加算する（ステップＧ７）。
【００２５】
Ｍの値が１若しくは２の場合における上記演算処理を実行した後、又は、ステップＧ３においてＭの値が０である場合には、ＲＯＭ３におけるＦＥＮＶのテーブルを参照してフィルタ係数を設定する（ステップＧ８）。次に、その設定したフィルタ係数に基づいてフィルタリング処理を実行する（ステップＧ９）。そしてメインフローに戻る。
【００２６】
このように上記実施形態においては、任意の楽音データに対してブライトネス及びアフタータッチの複数の制御データが入力されたときは、その楽音データに対して操作によって指定された制御データの順序に従った制御処理を行って波形データを生成する。
したがって、曲同一の楽音データに対して複数の制御データがある場合でも、演奏者の意図した音色で発音できる。
【００２７】
なお、上記実施形態においては、ブライトネスや鍵盤のアフタータッチによる２つの制御データによって音色のパラメータを制御する場合について説明したが、他の複数の制御データによって楽音データの他のパラメータを制御する場合にも本発明を適用できる。すなわち、楽音を制御するための複数の制御データが入力された場合において、それぞれ制御データに応じた制御処理を行う場合に、その制御処理の順序によって異なる楽音が発生するようなシステムに本発明を適用することができる。
【００２８】
また、上記実施形態においては、ＲＯＭ３に記憶されている楽音発生処理のプログラムをＣＰＵ１が実行する構成、すなわち装置の発明について説明したが、フロッピーディスク、ＣＤ、ＭＤ等の記憶媒体に楽音発生処理のプログラムを記憶させて、そのプログラムを読み出して実行する記憶媒体の発明も実現できる。
【００２９】
この場合には、同一の楽音データのパラメータを制御する複数の制御データについて制御処理の順序を操作子の操作に応じて指定する指定手順と、任意の楽音データに対して複数の制御データが入力されたときは、当該楽音データに対して前記指定手順によって指定された制御データの順序に従った制御処理を行って波形データを生成する波形生成手順と、を実行する楽音発生処理のプログラムをその記憶媒体に記憶する。
【００３０】
【発明の効果】
本発明によれば、任意の楽音データに対して複数の制御データが入力されたときは、その楽音データに対して操作によって指定された制御データの順序に従った制御処理を行って波形データを生成する。
したがって、曲同一の楽音データに対して複数の制御データがある場合でも、演奏した楽音について演奏者の意図した音色で発音できる。
【図面の簡単な説明】
【図１】本発明の実施形態における楽音発生装置のシステム構成を示すブロック図。
【図２】図１におけるＣＰＵのメインフローチャート。
【図３】図２における設定処理のフローチャート。
【図４】図３に続く設定処理のフローチャート。
【図５】図１における表示部に表示されたフィルタ処理選択の画面を示す図。
【図６】図２におけるＭＩＤＩ処理のフローチャート。
【図７】図１におけるＣＰＵの割込み処理のフローチャート。
【図８】図７におけるＭＩＤＩ制御処理のフローチャート。
【図９】図７における生成処理のフローチャート。
【図１０】図９に続く生成処理のフローチャート。
【図１１】図１０におけるＤＣＦ処理のフローチャート。
【符号の説明】
１  ＣＰＵ
３  ＲＯＭ
４  ＲＡＭ
５  ＭＩＤＩインターフェース
６  表示部
７  操作子
８  Ｄ／Ａコンバータ
９  サウンドシステム
【図１】
0003899762.tif 000002
【図２】
0003899762.tif 000003
【図３】
0003899762.tif 000004
【図４】
0003899762.tif 000005
【図５】
0003899762.tif 000006
【図６】
0003899762.tif 000007
【図７】
0003899762.tif 000008
【図８】
0003899762.tif 000009
【図９】
0003899762.tif 000010
【図１０】
0003899762.tif 000011
【図１１】
0003899762.tif 000012