(57)【特許請求の範囲】
【請求項１】
楽音のパラメータの時間経過による変化態様を示すエンベロープの形状をエンベロープ波形として表わした場合、少なくとも波形のスタート、アタック、ディケイ、及びリリースの各ポイントの位置を記憶するとともに、前記各ポイント以外の追加ポイントの位置を記憶可能な記憶手段と、
この記憶手段に記憶された各ポイントに基づいて所定の表示手段にエンベロープ波形を描画させる描画制御手段と、
前記表示手段上の位置を特定するための操作子と、
前記操作子により特定された位置が前記記憶手段に記憶されたアタック、ディケイ、及びリリースの各ポイントを示す位置と一致していない場合には、当該位置をエンベロープデータの追加ポイントとして前記記憶手段に記憶するとともに、スタート、アタック、ディケイ、及びリリースの各ポイントを示す位置及び当該追加ポイントを示す位置に基づいてエンベロープ波形を再描画するポイント追加手段と、
前記操作子により特定された位置が前記記憶手段に記憶された追加ポイントを示す位置と一致している場合に、当該記憶された追加ポイントの位置を前記記憶手段から削除するとともに、前記記憶手段に記憶された残りのポイントの位置に基づいてエンベロープ波形を再描画するポイント消去手段と、
を備えた楽音編集装置。
【請求項２】
楽音のパラメータの時間経過による変化態様を示すエンベロープの形状をエンベロープ波形として表わした場合、少なくとも波形のスタート、アタック、ディケイ、及びリリースの各ポイントの位置を記憶するとともに、前記各ポイント以外の追加ポイントの位置を記憶可能な記憶手段に記憶された各ポイントに基づいて所定の表示手段にエンベロープ波形を描画させる第１のステップと、
前記表示手段上の位置を特定するための操作子により特定された位置が前記記憶手段に記憶されたアタック、ディケイ、及びリリースの各ポイントを示す位置と一致していない場合には、当該位置をエンベロープデータの追加ポイントとして前記記憶手段に記憶するとともに、スタート、アタック、ディケイ、及びリリースの各ポイントを示す位置及び当該追加ポイントを示す位置に基づいてエンベロープ波形を再描画する第２のステップと、
前記操作子により特定された位置が前記記憶手段に記憶された追加ポイントを示す位置と一致している場合に、当該記憶された追加ポイントの位置を前記記憶手段から削除するとともに、前記記憶手段に記憶された残りのポイントの位置に基づいてエンベロープ波形を再描画する第３のステップと、
を有する楽音編集方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音編集装置及び楽音編集方法に関し、特に、生成された楽音のエンベロープデータを編集する楽音編集装置及び楽音編集方法に関する。
【０００２】
【従来の技術】
従来、楽音波形を生成する場合には、音高の変化を表すピッチエンベロープ、楽器の音色を表すフィルタエンベロープ、音量の変化を表すアンプエンベロープ、左右の音のバランスを表すパンエンベロープの種々のエンベロープデータが必要である。エンベロープデータとして最もポピュラーなものにＡＤＳＲ（Ａ；アタック、Ｄ；ディケイ、Ｓ；サスティン、Ｒ；リリース）がある。このＡＤＳＲを用いて実際の楽器の音色に近づけることができる。
【０００３】
ＡＤＳＲを用いてエンベロープデータを生成するには、時間軸に対応する横軸を読出アドレスとし縦軸をレベルとして、レベルが一定のサスティンを除くアタック、ディケイ、リリースのそれぞれについて、読出アドレスの座標及びレベルの座標をピッチ、アンプ、フィルタ、パン等の各パラメータごとに設定する。すなわち、ピッチエンベロープ、フィルタエンベロープ、アンプエンベロープ、パンエンベロープについて座標設定を行う。そして、設定された座標のデータは制御プログラムの中に組み込まれて、発音処理の際にアンプ等からなるサウンドシステムに送られ、各パラメータのエンベロープデータに応じた発音がなされる。
【０００４】
【発明が解決しようとする課題】
しかしながら、従来の楽音編集装置及び楽音編集方法においては、既存のエンベロープデータを修正する場合には、制御プログラムの中に組み込まれている読出アドレス及びレベルの座標のプログラムリストをエディタ等で修正しなければならず、極めて煩雑な作業を伴うという問題があった。また、修正する内容が数値データであるため、楽音のイメージとして把握することが困難であった。
本発明の課題は、既存のエンベロープデータを簡単な作業で修正するとともに、修正する内容が楽音のイメージとして把握することである。
【０００５】
【課題を解決するための手段】
本発明の楽音編集装置は、楽音のパラメータの時間経過による変化態様を示すエンベロープの形状をエンベロープ波形として表わした場合、少なくとも波形のスタート、アタック、ディケイ、及びリリースの各ポイントの位置を記憶するとともに、前記各ポイント以外の追加ポイントの位置を記憶可能な記憶手段と、この記憶手段に記憶された各ポイントに基づいて所定の表示手段にエンベロープ波形を描画させる描画制御手段と、前記表示手段上の位置を特定するための操作子と、前記操作子により特定された位置が前記記憶手段に記憶されたアタック、ディケイ、及びリリースの各ポイントを示す位置と一致していない場合には、当該位置をエンベロープデータの追加ポイントとして前記記憶手段に記憶するとともに、スタート、アタック、ディケイ、及びリリースの各ポイントを示す位置及び当該追加ポイントを示す位置に基づいてエンベロープ波形を再描画するポイント追加手段と、前記操作子により特定された位置が前記記憶手段に記憶された追加ポイントを示す位置と一致している場合に、当該記憶された追加ポイントの位置を前記記憶手段から削除するとともに、前記記憶手段に記憶された残りのポイントの位置に基づいてエンベロープ波形を再描画するポイント消去手段と、を備えた構成になっている。
【０００６】
本発明の楽音編集方法は、楽音のパラメータの時間経過による変化態様を示すエンベロープの形状をエンベロープ波形として表わした場合、少なくとも波形のスタート、アタック、ディケイ、及びリリースの各ポイントの位置を記憶するとともに、前記各ポイント以外の追加ポイントの位置を記憶可能な記憶手段に記憶された各ポイントに基づいて所定の表示手段にエンベロープ波形を描画させる第１のステップと、前記表示手段上の位置を特定するための操作子により特定された位置が前記記憶手段に記憶されたアタック、ディケイ、及びリリースの各ポイントを示す位置と一致していない場合には、当該位置をエンベロープデータの追加ポイントとして前記記憶手段に記憶するとともに、スタート、アタック、ディケイ、及びリリースの各ポイントを示す位置及び当該追加ポイントを示す位置に基づいてエンベロープ波形を再描画する第２のステップと、前記操作子により特定された位置が前記記憶手段に記憶された追加ポイントを示す位置と一致している場合に、当該記憶された追加ポイントの位置を前記記憶手段から削除するとともに、前記記憶手段に記憶された残りのポイントの位置に基づいてエンベロープ波形を再描画する第３のステップと、を有するものである。各ステップは、実施形態においては図１のＣＰＵ１によって実行される制御プログラムに含まれる。
【０００７】
上記楽音編集装置及び楽音編集方法によれば、表示されたエンベロープ波形に対してマウス等の操作により修正指示を行うことにより、その修正指示に応じたエンベロープ波形を画面上で修正する。
【０００８】
【発明の実施の形態】
以下、本発明による 図を参照して説明する。
図１は、本発明の実施形態における楽音編集装置のシステム構成を示している。
図１において、ＣＰＵ１はシステムバス２に接続されているＲＯＭ３、ＲＡＭ４、表示器５、ＭＩＤＩインターフェース６、操作子７、アンプ８との間で、データ及びコマンドを授受してこの装置を制御する。
ＣＰＵ１は、ソフトウェアによって楽音のエンベロープデータを生成する。図２は、楽音のエンベロープデータを生成する示すＣＰＵ１の機能をハードウェア的に示したブロック図である。図において、アドレス生成部１０１に入力されたキーコードは、ＬＦＯＰＥ１０２からのピッチ用ＬＦＯデータ及びＰＥ１０３からのピッチエンベロープデータと加算器１０４で加算される。この加算データは楽音波形部１０５に入力され、スペクトル部１０６からのスペクトルデータによってピッチ処理された楽音波形が生成されて、フィルタ部１０７に入力される。
【０００９】
フィルタ部１０７では、ＬＦＯＦＥ１０９からのフィルタ用ＬＦＯデータ及びＦＥ１０８からのフィルタエンベロープデータによって楽音波形がフィルタ処理されてＡＭＰ部１１０に入力される。ＡＭＰ部１１０では、ＬＦＯＶＥ１１２からのアンプ用ＬＦＯデータ及びＶＥ１１１からのアンプエンベロープデータによって楽音波形の音量が制御される。次に、２つの加算器１１３及び１１４に入力された楽音波形は、ＰＡＮ（定位）生成部１１５からの定位データであるＰＡＮ及び（１−ＰＡＮ）がそれぞれ乗算されて出力される。
【００１０】
図１のＲＯＭ３は、ＣＰＵ１によって実行される楽音編集方法の制御プログラム、初期データ等を格納している。また、ＲＡＭ４は、ＣＰＵ１のワークエリアであり、ＣＰＵ１によって処理されるデータを一時的に記憶する。すなわち、図３に示すように、表示エリア、並びに、表示用ポイントデータ、ピッチエンベロープポイントデータ、フィルタエンベロープポイントデータ、及びアンプエンベロープポイントデータからなるデータエリアが設けられている。各ポイントデータは、スタートポイント、アタックポイント、ディケイポイント、リリースポイント、及び必要に応じて追加ポイントのデータで構成される。表示用ポイントデータは、Ｘ座標のデータ及びＹ座標のデータで構成される。なお、図には示さないが、制御プログラムの実行に必要なエリア、各種のレジスタ、フラグ等が設けられている。
【００１１】
図１において、ＭＩＤＩインターフェース５には、鍵盤等の演奏操作部や制御部を備えたＭＩＤＩ演奏装置（図示せず）に接続される。このＭＩＤＩ演奏装置からのＭＩＤＩデータがＭＩＤＩインターフェース５を介してこの装置に入力される。表示器６は、楽音編集の対象となるエンベロープデータのエンベロープの形状を表す波形を表示する。操作子７はマウスで構成され、表示器６の画面操作に用いられる。アンプ８はスピーカ９に接続され、ＣＰＵ１からのソフトウェア音源の各パラメータに対応するエンベロープデータに従った楽音信号を増幅してスピーカ９から発音させる。
【００１２】
次に、実施形態の楽音編集方法について、ＣＰＵ１によって実行される制御プログラムのフローチャートを参照して説明する。
図４はメインフローであり、所定のイニシャライズ処理（ステップＡ１）の後、設定処理（ステップＡ２）、入力処理（ステップＡ３）、発音処理（ステップＡ４）、その他の処理（ステップＡ５）を繰り返し実行する。
【００１３】
図５〜図７はメインフローにおける設定処理のフローである。図５のフローにおいて、モードスイッチ（ＭＯＤＥ  ＳＷ）がオンされたか否かを判別し（ステップＢ１）、オンされたときはモードフラグＭＯＤＥＦが０であるか否かを判別する（ステップＢ２）。ＭＯＤＥＦが１（設定モード）である場合には０（通常モード）に設定し（ステップＢ３ａ）、表示を消去して（ステップＢ３ｂ）、このフローを終了してメインフローに戻る。
【００１４】
ステップＢ２において、ＭＯＤＥＦが０である場合には１にセットする（ステップＢ４）。次に、レジスタＥＮＶにストアされている指定エンベロープが、ピッチエンベロープ、フィルタエンベロープ、又はアンプエンベロープのいずれであるかを判別する（ステップＢ５）。
【００１５】
指定エンベロープがピッチエンベロープである場合には、ピッチエンベロープエリアからポイントデータを取り出す（ステップＢ６）。そして、ポイントデータを表示用ポイントデータのＸ座標及びＹ座標に変換する（ステップＢ７）。次に、表示用ポイントエリアに変換したポイントデータをストアする（ステップＢ８）。そして、まだピッチエンベロープエリア内にポイントデータがあるか否かを判別する（ステップＢ９）。ポイントデータがある場合にはステップＢ６に移行して上記処理を繰り返す。
【００１６】
指定エンベロープがフィルタエンベロープである場合には、フィルタエンベロープエリアからポイントデータを取り出す（ステップＢ１０）。そして、ポイントデータを表示用ポイントデータのＸ座標及びＹ座標に変換する（ステップＢ１１）。次に、表示用ポイントエリアに変換したポイントデータをストアする（ステップＢ１２）。そして、まだフィルタエンベロープエリア内にポイントデータがあるか否かを判別する（ステップＢ１３）。ポイントデータがある場合にはステップＢ１０に移行して上記処理を繰り返す。
【００１７】
指定エンベロープがアンプエンベロープである場合には、アンプエンベロープエリアからポイントデータを取り出す（ステップＢ１４）。そして、ポイントデータを表示用ポイントデータのＸ座標及びＹ座標に変換する（ステップＢ１５）。次に、表示用ポイントエリアに変換したポイントデータをストアする（ステップＢ１６）。そして、まだアンプエンベロープエリア内にポイントデータがあるか否かを判別する（ステップＢ１７）。ポイントデータがある場合にはステップＢ１４に移行して上記処理を繰り返す。
【００１８】
ステップＢ９、ステップＢ１３、又はステップＢ１７において対応するエンベロープエリア内にポイントデータがない場合には、表示用ポイントエリアのポイントデータによりエンベロープの形状を表示器の画面に表示する（ステップＢ１８）。そして、画面内にカーソルを表示する（ステップＢ１９）。なお、この画面内には、相対スイッチ、独立スイッチ、アタック入替えスイッチ、及びディケイ入替えスイッチのアイコンスイッチが表示される。各アイコンスイッチの機能については後述する。
【００１９】
この後、又はステップＢ１においてモードスイッチがオンでない場合には、図６のフローにおいて、ＭＯＤＥＦが１（設定モード）であるか否かを判別する（ステップＢ２０）。このフラグが０である場合にはこのフローを終了してメインフローに戻るが、このフラグが１である場合には、操作子であるマウスが移動されたか否かを判別する（ステップＢ２１）。マウスが移動されたときは、その移動に応じてカーソル位置を移動する（ステップＢ２２）。そして、マウスの左クリック、右クリック、若しくは左ドラッグの操作、又はアイコンスイッチのオン操作がされた場合には、その操作に対応する処理を実行する。
【００２０】
すなわち、マウスの左クリックがされたか否かを判別し（ステップＢ２３）、この操作がされた場合にはポイント追加処理を実行する（ステップＢ２４）。マウスの右クリックがされたか否かを判別し（ステップＢ２５）、この操作がされた場合にはポイント消去処理を実行する（ステップＢ２６）。マウスの左ドラッグがされたか否かを判別し（ステップＢ２７）、この操作がされた場合には移動処理を実行する（ステップＢ２８）。
【００２１】
図７のフローにおいて、画面上のアイコンスイッチのうち相対スイッチがオンされたか否かを判別し（ステップＢ２９）、このスイッチがオンされた場合にはフラグＩＤＦに１をセットする（ステップＢ３０）。独立スイッチがオンされたか否かを判別し（ステップＢ３１）、このスイッチがオンされた場合にはＩＤＦに０をセットする（ステップＢ３２）。
【００２２】
アタック入替えスイッチがオンされたか否かを判別し（ステップＢ３３）、このスイッチがオンされた場合にはアタック入替え処理を実行する（ステップＢ３４）。ディケイ入替えスイッチがオンされたか否かを判別し（ステップＢ３５）、このスイッチがオンされた場合にはディケイ入替え処理を実行する（ステップＢ３６）。左クリックがされたか否かを判別し（ステップＢ３７）、この操作がされた場合にはポイント指定処理を実行する（ステップＢ３８）。
いずれかの処理が実行された後は、図６のフローのステップＢ２１に移行してマウスの移動を判別する。
【００２３】
図８は、図６のフローのステップＢ２４におけるポイント追加処理のフローである。まず、クリック操作時のカーソル位置のＸ座標及びＹ座標を取り込む（ステップＣ１）。そして、取り込んだ座標がＡＤＲの座標以外であるか否かを判別する（ステップＣ２）。すなわち、表示されているエンベロープデータのアタック、ディケイ、及びリリースの座標と同じでないか否かを判別する。ＡＤＲの座標以外である場合には、さらにその取り込んだ座標が他の追加ポイントの座標以外であるか否かを判別する（ステップＣ３）。すなわち、取り込んだ座標がすでに追加されたポイントの座標と同じでないか否かを判別する。
【００２４】
他の追加ポイントの座標以外である場合には、表示されているエンベロープがピッチエンベロープであるか、フィルタエンベロープであるか、アンプエンベロープであるかを判別する（ステップＣ４）。ピッチエンベロープである場合には、ピッチエンベロープの座標に変換する（ステップＣ５）。フィルタエンベロープである場合には、フィルタエンベロープの座標に変換する（ステップＣ６）。アンプエンベロープである場合には、アンプエンベロープの座標に変換する（ステップＣ７）。いずれかのエンベロープの座標に変換した後は、追加ポイントとしてエンベロープデータに挿入し（ステップＣ８）、取り込んだＸ、Ｙ座標でエンベロープ波形を表示する再描画を行う（ステップＣ９）。
再描画の後、又は取り込んだ座標がステップＣ２においてＡＤＲの座標である場合、若しくは取り込んだ座標がステップＣ３において他の追加ポイントの座標である場合には、このフローを終了して図６のステップＢ２１に移行する。
【００２５】
図９は、図６のフローのステップＢ２６におけるポイント消去処理のフローである。まず、クリック操作時のカーソル位置のＸ座標及びＹ座標を取り込む（ステップＤ１）。次に、表示されているエンベロープがピッチエンベロープであるか、フィルタエンベロープであるか、アンプエンベロープであるかを判別する（ステップＤ２）。ピッチエンベロープである場合には、ピッチエンベロープの座標に変換する（ステップＤ３）。フィルタエンベロープである場合には、フィルタエンベロープの座標に変換する（ステップＤ４）。アンプエンベロープである場合には、アンプエンベロープの座標に変換する（ステップＤ５）。
【００２６】
いずれかのエンベロープの座標に変換した後は、取り込んだ座標がそのエンベロープの追加座標と一致するか否かを判別する（ステップＤ６）。一致する場合には、一致した追加ポイントを削除する（ステップＤ７）。次に、残りのエンベロープポイントを表示用ポイントの座標に変換する（ステップＤ８）。そして、変換した座標でエンベロープ波形を再描画する（ステップＤ９）。再描画の後、又はステップＤ６において取り込んだ座標がエンベロープの追加座標と一致しない場合には、このフローを終了して図６のステップＢ２１に移行する。
【００２７】
図１０は、図６のフローのステップＢ２８における移動処理のフローである。最初にドラッグスタート座標は表示ポイントと一致するか否かを判別する(ステップＥ１)。すなわち、ドラッグを開始した位置が表示されているエンベロープ波形上であるか否かを判別する。ドラッグスタート座標が表示ポイントと一致しない場合には、波形の移動ができないのでこのフローを終了して図６のステップＢ２１に移行する。
【００２８】
ドラッグスタート座標が表示ポイントと一致する場合には、ドラッグ位置の移動がされたか否かを判別する（ステップＥ２）。移動されたときは、フラグＩＤＦが１であるか否かを判別する（ステップＥ３）。このフラグが１である場合には、カーソルの移動分のみ表示用ポイント全ての座標を変更する（ステップＥ４）。一方、このフラグが０である場合には、カーソルの移動分のみ対応するポイントの座標を変更する（ステップＥ５）。ステップＥ４又はステップＥ５においてポインタの座標を変更した後は、エンベロープ波形を再描画する（ステップＥ６）。そして、ドラッグ操作が終了したか否かを判別する（ステップＥ７）。終了していない場合には、ステップＥ２に移行してドラッグ位置の移動を判別する。
【００２９】
ドラッグ操作が終了したときは、表示されているエンベロープがピッチエンベロープであるか、フィルタエンベロープであるか、アンプエンベロープであるかを判別する（ステップＥ８）。ピッチエンベロープである場合には、表示用ポイントの座標全てをピッチエンベロープ用座標に変換する（ステップＥ９）。そして、ピッチエンベロープデータとしてストアする（ステップＥ１０）。フィルタエンベロープである場合には、表示用ポイントの座標全てをフィルタエンベロープ用座標に変換する（ステップＥ１１）。そして、フィルタエンベロープデータとしてストアする（ステップＥ１２）。アンプエンベロープである場合には、表示用ポイントの座標全てをアンプエンベロープ用座標に変換する（ステップＥ１３）。そして、アンプエンベロープデータとしてストアする（ステップＥ１４）。
エンベロープデータをストアした後は、このフローを終了して図６のステップＢ２１に移行する。
【００３０】
図１１は、図７のフローのステップＢ３８におけるポイント指定処理のフローである。まず、クリック操作時のカーソル位置のＸ座標及びＹ座標を取り込む（ステップＦ１）。そして、取り込んだ座標が表示用ポイント上であるか否かを判別する（ステップＦ２）。表示用ポイント上である場合には、フラグＣＫＦに１（入替え可能）をセットして（ステップＦ３）、指定ポイントの座標をストアする（ステップＦ４）。この後、又はステップＦ２において取り込んだ座標が表示用ポイント上でない場合には、このフローを終了して図６のフローのステップＢ２１に移行する。
【００３１】
図１２は、図７のフローのステップＢ３６におけるディケイ入替え処理のフローである。最初にＣＫＦが１（入替え可能）であるか否かを判別する（ステップＧ１）。ＣＫＦが１である場合には、指定ポイントがアタックポイントより前にないか否かを判別する（ステップＧ２）。すなわち、指定ポイントが入替えできない範囲にないか否かを判別する。ステップＧ１においてＣＫＦが０（入替え不可）である場合、又はステップＧ２において指定ポイントがアタックポイントより前にある場合には、このフローを終了して図６のフローのステップＢ２１に移行する。
【００３２】
指定ポイントがアタックポイントより前にない場合には、表示用指定ポイントのディケイ座標を指定ポイント座標に変換する（ステップＧ３）。次に、ディケイ座標のポイントを追加ポイントとしてストアする（ステップＧ４）。そして、エンベロープ波形を再描画する（ステップＧ５）。次に、表示されているエンベロープがピッチエンベロープであるか、フィルタエンベロープであるか、アンプエンベロープであるかを判別する（ステップＧ６）。
【００３３】
ピッチエンベロープである場合には、表示用ポイント座標をピッチエンベロープ用に変換する（ステップＧ７）。フィルタエンベロープである場合には、表示用ポイント座標をフィルタエンベロープ用に変換する（ステップＧ８）。アンプエンベロープである場合には、表示用ポイント座標をアンプエンベロープ用に変換する（ステップＧ９）。ステップＧ７、ステップＧ８、又はステップＧ９においてエンベロープ用に座標変換が終了した後は、変換したポイントデータを対応するエンベロープとしてストアする（ステップＧ１０）。そして、このフローを終了して図６のフローのステップＢ２１に移行する。
【００３４】
図１３は、図７のフローのステップＢ３４におけるアタック入替え処理のフローである。最初にＣＫＦが１（入替え可能）であるか否かを判別する（ステップＨ１）。ＣＫＦが１である場合には、指定ポイントがディケイポイントより後にないか否かを判別する（ステップＨ２）。すなわち、指定ポイントが入替えできない範囲にないか否かを判別する。ステップＨ１においてＣＫＦが０（入替え不可）である場合、又はステップＨ２において指定ポイントがディケイポイントより後にある場合には、このフローを終了して図６のフローのステップＢ２１に移行する。
【００３５】
指定ポイントがディケイポイントより後にない場合には、表示用指定ポイントのアタック座標を指定ポイント座標に変換する（ステップＨ３）。次に、アタック座標のポイントを追加ポイントとしてストアする（ステップＨ４）。そして、エンベロープ波形を再描画する（ステップＨ５）。次に、表示されているエンベロープがピッチエンベロープであるか、フィルタエンベロープであるか、アンプエンベロープであるかを判別する（ステップＨ６）。
【００３６】
ピッチエンベロープである場合には、表示用ポイント座標をピッチエンベロープ用に変換する（ステップＨ７）。フィルタエンベロープである場合には、表示用ポイント座標をフィルタエンベロープ用に変換する（ステップＨ８）。アンプエンベロープである場合には、表示用ポイント座標をアンプエンベロープ用に変換する（ステップＨ９）。ステップＨ７、ステップＨ８、又はステップＨ９においてエンベロープ用に座標変換が終了した後は、変換したポイントデータを対応するエンベロープとしてストアする（ステップＨ１０）。
【００３７】
図１４は、図４のメインフローのステップＡ３における入力処理のフローである。まず、ＭＯＤＥＦが０（通常モード）であるか否かを判別し（ステップＪ１）、このフラグが０である場合にはＭＩＤＩインターフェース５を介して鍵盤からイベントの入力があるか否かを判別する（ステップＪ２）。フラグが１（設定モード）である場合、又は鍵盤からのイベント入力がない場合には、このフローを終了してメインフローに戻る。
【００３８】
鍵盤からイベントの入力があったときは、そのイベントがノートオンであるか否かを判別する（ステップＪ３）。ノートオンである場合には、そのノート番号すなわち音高データをレジスタＮＯＴＥにストアする（ステップＪ４）。そして、フラグＯＮＴＦに１（発音開始）をセットする（ステップＪ５）。ステップＪ３においてイベントがノートオフである場合には、そのノート番号をＮＯＴＥにストアする（ステップＪ６）。そして、フラグＮＦＴＦに１（消音開始）をセットする（ステップＪ７）。ステップＪ５又はステップＪ７においてフラグをセットした後は、このフローを終了してメインフローに戻る。
【００３９】
図１５及び図１６は、図４のメインフローのステップＡ４における発音処理のフローである。まず、ＭＯＤＥＦが０（通常モード）であるか否かを判別し（ステップＫ１）、このフラグが１（設定モード）である場合には、このフローを終了してメインフローに戻る。このフラグが１である場合には、ＯＮＴＦが１（発音開始）であるか否かを判別する（ステップＫ２）。このフラグが１である場合には、エンベロープデータ生成エリアをイニシャライズする（ステップＫ３）。
【００４０】
そして、エンベロープ初期設定を実行する（ステップＫ４）。次に、ＯＮＴＦに０をセットし（ステップＫ５）、フラグＯＮＦに１（発音）をセットする（ステップＫ６）。また、波形レジスタＷＡＶＥに０をストアする（ステップＫ７）。さらに、ピッチ用、フィルタ用、アンプ用の座標レジスタＸ（Ｐ）、Ｘ（Ｆ）、Ｘ（Ａ）に０をストアする（ステップＫ８）。
【００４１】
ステップＫ２においてＯＮＴＦが０である場合には、ＯＦＴＦが１（消音開始）であるか否かを判別する（ステップＫ９）。このフラグが０である場合には、このフローを終了してメインフローに戻る。このフラグが１である場合には、フラグＲＦに１（消音）をセットして（ステップＫ１０）、ＯＦＴＦに０をセットする（ステップＫ１１）。また、ピッチ、フィルタ、アンプ用の３つのフラグＥＦ１〜ＥＦ３に０をセットする（ステップＫ１２）。そして、ＯＮＦに０をセットする（ステップＫ１３）。
【００４２】
ステップＫ８において各座標レジスタに０をストアした後、又はステップＫ１３においてＯＮＦに０をセットした後は、図１６のフローにおいてエンベロープ処理の最小時間である１ｍｓが経過したか否かを判別する（ステップＫ１４）。１ｍｓが経過したときは、ＯＮＦが１（発音）であるか否かを判別する（ステップＫ１５）。このフラグが１である場合には、発音のためのエンベロープ生成処理を実行する（ステップＫ１６）。
【００４３】
ステップＫ１５においてＯＮＦが０である場合には、ＲＦが１（消音）であるか否かを判別する（ステップＫ１７）。このフラグが１である場合には、消音のためのエンベロープリリース処理を実行する（ステップＫ１８）。次に、フラグＥＦ１〜ＥＦ３の全てが１であるか否かを判別する（ステップＫ１９）。これらのフラグが１である場合には、消音完了であるので、ＲＦに０をセットする（ステップＫ２０）。
【００４４】
ステップＫ１４において１ｍｓが経過していない場合、ステップＫ１６においてエンベロープ生成処理が終了した場合、又はステップＫ１９においてＥＦ１〜ＥＦ３のいずれかが０である場合には、発音又は消音の波形出力のサンプリング周期に達したか否かを判別する（ステップＫ２１）。サンプリング周期に達したときは、ＤＣＯ処理（ステップＫ２２）、ＤＣＦ処理（ステップＫ２３）、ＤＣＡ処理（ステップＫ２４）を実行する。これらの処理の後、又は、ステップＫ２１においてサンプリング周期に達していない場合、若しくはステップＫ１７においてＲＦが０である場合には、このフローを終了してメインフローに戻る。
【００４５】
図１７は、図１５のフローのステップＫ４におけるエンベロープ初期処理のフローである。このフローでは、ピッチエンベロープ初期処理（ステップＭ１）、フィルタエンベロープ初期処理（ステップＭ２）、アンプエンベロープ初期処理（ステップＭ３）を実行して、図１５のフローのステップＫ５に移行する。
【００４６】
図１８は、図１６のフローのステップＫ１６におけるエンベロープ生成処理のフローである。このフローでは、ピッチエンベロープ生成処理（ステップＮ１）、フィルタエンベロープ生成処理（ステップＮ２）、アンプエンベロープ生成処理（ステップＮ３）を実行して、図１６のフローのステップＫ２１に移行する。
【００４７】
図１９は、図１６のフローのステップＫ１８におけるエンベロープリリース処理のフローである。このフローでは、ピッチエンベロープリリース処理（ステップＰ１）、フィルタエンベロープリリース処理（ステップＰ２）、アンプエンベロープリリース処理（ステップＰ３）を実行して、図１６のフローのステップＫ１９に移行する。
【００４８】
図２０は、図１７のフローのステップＭ１におけるピッチエンベロープ初期処理のフローである。最初にレジスタａ１（Ｐ）に０をストアし、レジスタｂ１（Ｐ）にピッチエンベロープのスタートＹ座標をストアする（ステップＱ１）。この後、次のポイントを指定する（ステップＱ２）。そして、レジスタａ２（Ｐ）にピッチエンベロープの次のポイントのＸ座標をストアし、レジスタｂ２（Ｐ）にピッチエンベロープの次のポイントのＹ座標をストアする（ステップＱ３）。そして、ａ１（Ｐ）、ｂ１（Ｐ）、ａ２（Ｐ）、ｂ２（Ｐ）の値に基づいてエンベロープのレート計算を行う。
【００４９】
すなわち、これらの値に基づいて、ピッチエンベロープの波形を一次関数で表す。その一次関数の勾配をａ（Ｐ）とすると、次の数式により勾配を演算する（ステップＱ４）。
ａ（Ｐ）＝｛ｂ２（Ｐ）−ｂ１（Ｐ）｝／｛ａ２（Ｐ）−ａ１（Ｐ）｝
また、一次関数の切片をｂ（Ｐ）とすると、次の数式により切片を演算する（ステップＱ５）。
ｂ（Ｐ）＝ｂ１（Ｐ）−ａ（Ｐ）・ａ１（Ｐ）
なお、ステップＭ２におけるフィルタエンベロープ初期処理及びステップＭ３におけるアンプエンベロープ初期処理についても、基本的にはピッチエンベロープ初期処理と同じであるので、そのフロー及び説明は省略する。
【００５０】
図２１は、図１８のフローのステップＮ１におけるピッチエンベロープ生成処理のフローである。まず、ディケイポイントのＸ座標とＸ（Ｐ）とが異なるか否かを判別する（ステップＲ１）。ディケイポイントのＸ座標とＸ（Ｐ）とが同じで、アタックのエンベロープが終わっている場合には、このフローを終了して図１８のフローのＮ２に移行する。ディケイポイントのＸ座標とＸ（Ｐ）とが異なる場合には、Ｘ（Ｐ）の値を１だけインクリメントする（ステップＲ２）。
【００５１】
次に、ピッチエンベロープのレジスタＥＮＶ（Ｐ）に下記の一次関数の演算式をストアする（ステップＲ３）。
ａ（Ｐ）・Ｘ（Ｐ）＋ｂ（Ｐ）
そして、Ｘ（Ｐ）が現在ポイントのＸ座標であるか否かを判別する（ステップＲ４）。Ｘ（Ｐ）が現在ポイントのＸ座標でない場合には、このフローを終了して図１８のフローのＮ２に移行する。
【００５２】
Ｘ（Ｐ）が現在ポイントのＸ座標である場合には、次のポイントを指定する（ステップＲ５）。そして、ａ１（Ｐ）にＸ（Ｐ）をストアし、ｂ１（Ｐ）に上記演算式で求めたＥＮＶ（Ｐ）をストアする（ステップＲ６）。すなわち、ピッチエンベロープデータのレート計算の始点をストアする。この後、ステップＲ５で指定したポイントのＸ座標をａ２（Ｐ）にストアし、指定したポイントのＹ座標をｂ２（Ｐ）にストアする（ステップＲ７）。
【００５３】
次に、下記の数式によりピッチエンベロープのａ（Ｐ）勾配を演算する（ステップＲ８）。
ａ（Ｐ）＝｛ｂ２（Ｐ）−ｂ１（Ｐ）｝／｛ａ２（Ｐ）−ａ１（Ｐ）｝
また、一次関数の切片をｂ（Ｐ）とすると、下記の数式により切片を演算する（ステップＲ９）。
ｂ（Ｐ）＝ｂ１（Ｐ）−ａ（Ｐ）・ａ１（Ｐ）
そして、このフローを終了して図１８のＮ２に移行する。
なお、ステップＮ２におけフィルタエンベロープ生成処理及びステップＮ３におけアンプエンベロープ生成処理についても、基本的にはピッチエンベロープ生成処理と同じであるので、そのフロー及び説明は省略する。
【００５４】
図２２は、図１９のフローのステップＰ１におけるピッチエンベロープリリース処理のフローである。まず、ピッチエンベロープフラグＥＦ１が０（消音）であるか否かを判別する（ステップＳ１）。ＥＦ１が０である場合にはＸ（Ｐ）がリリースポイントのＸ座標より前にあるか否かを判別する（ステップＳ２）。Ｘ（Ｐ）がリリースポイントのＸ座標より後にある場合には、ＥＦ１に１（消音完了）をセットする（ステップＳ３）。この後、又はステップＳ１においてＥＦ１が１である場合には、このフローを終了して図１９のステップＰ２に移行する。
【００５５】
Ｘ（Ｐ）がリリースポイントのＸ座標より前にある場合には、さらに、Ｘ（Ｐ）がディケイポイントのＸ座標より後にあるか否かを判別する（ステップＳ４）。Ｘ（Ｐ）がディケイポイントのＸ座標より後にある場合には、ＥＮＶ（Ｐ）にディケイポイントのＹ座標をストアし（ステップＳ５）、Ｘ（Ｐ）にディケイポイントのＸ座標をストアする（ステップＳ６）。
【００５６】
ステップＳ４において、Ｘ（Ｐ）がディケイポイントのＸ座標より前にある場合には、Ｘ（Ｐ）の値を１だけインクリメントする（ステップＳ７）。次に、ピッチエンベロープのレジスタＥＮＶ（Ｐ）に下記の一次関数の演算式をストアする（ステップＳ８）。
ａ（Ｐ）・Ｘ（Ｐ）＋ｂ（Ｐ）
次に、Ｘ（Ｐ）が指定ポイントのＸ座標であるか否かを判別する（ステップＳ９）。Ｘ（Ｐ）が指定ポイントのＸ座標でない場合には、このフローを終了して図１９のステップＰ２に移行する。
【００５７】
ステップＳ６においてＸ（Ｐ）にディケイポイントのＸ座標をストアした後、又はステップＳ９においてＸ（Ｐ）が指定ポイントのＸ座標である場合には、次のポイントを指定する（ステップＳ１０）。そして、ａ１（Ｐ）にＸ（Ｐ）をストアし、ｂ１（Ｐ）に上記演算式で求めたＥＮＶ（Ｐ）をストアする（ステップＳ１１）。すなわち、ピッチエンベロープリリース波形のレート計算の始点をストアする。この後、ステップＳ１０で指定したポイントのＸ座標をａ２（Ｐ）にストアし、指定したポイントのＹ座標をｂ２（Ｐ）にストアする（ステップＳ１２）。
【００５８】
次に、下記の数式によりピッチエンベロープリリースのａ（Ｐ）勾配を演算する（ステップＳ１３）。
ａ（Ｐ）＝｛ｂ２（Ｐ）−ｂ１（Ｐ）｝／｛ａ２（Ｐ）−ａ１（Ｐ）｝
また、一次関数の切片をｂ（Ｐ）とすると、下記の数式により切片を演算する（ステップＳ１４）。
ｂ（Ｐ）＝ｂ１（Ｐ）−ａ（Ｐ）・ａ１（Ｐ）
そして、このフローを終了して図１９のＰ２に移行する。
なお、ステップＰ２におけフィルタエンベロープリリース処理及びステップＰ３におけアンプエンベロープリリース処理についても、基本的にはピッチエンベロープリリース処理と同じであるので、そのフロー及び説明は省略する。
【００５９】
図２３、図２４、及び図２５は、それぞれ図１６のフローのステップＫ２２、ステップＫ２３、及びステップＫ２４におけるＤＣＯ処理、ＤＣＦ処理、ＤＣＡ処理のフローである。
図２３において、レジスタＮＯＴＥよりアドレス歩進値を作成し（ステップＴ１）、その作成したアドレス歩進値にＥＮＶ（Ｐ）の値を加算したものをアドレス歩進値とする（ステップＴ２）。そして、アドレス歩進値によりアドレスを生成する（ステップＴ３）。すなわち、鍵盤から入力された音高データによるデータ読出しピッチをピッチエンベロープのＥＮＶ（Ｐ）の値で補正して（エンベロープ処理して）アドレスを生成する。次に、メモリからアドレスによりＷＡＶＥの波形データを読出し（ステップＴ４）、図１６のステップＫ２３すなわち図２４のフローに移行する。
【００６０】
図２４において、ＥＮＶ（Ｆ）より係数を演算する（ステップＵ１）。次に、算出された係数でＷＡＶＥの波形データをフィルタリングする（ステップＵ２）。そして、図１６のステップＫ２４すなわち図２５のフローに移行する。
図２５において、ＷＡＶＥの波形データにＥＮＶ（Ａ）の値を乗算したものをＷＡＶＥの波形データとする（ステップＶ１）。次に、そのＷＡＶＥの波形データを出力する（ステップＶ２）。そして、図４のメインフローに戻る。
【００６１】
このように、上記実施形態によれば、表示されたエンベロープ波形に対してマウス等の操作により修正指示を行うことにより、その修正指示に応じたエンベロープ波形を画面上で修正する。例えば、図８のフローのポイント追加処理によって、図２６（１）に示すように、マウスの操作でアタックポイントＡとディケイポイントＤとの間に、●マークの追加ポイントを容易に挿入することができる。また、図１２のフローのディケイ入替え処理によって、図２６（２）に示すように、図２６（１）におけるディケイポイントと追加ポイントの位置をマウスの操作で容易に入替えることができる。
【００６２】
また、図１０の移動処理によれば、設定するフラグＩＤＦの値によって、２通りのエンベロープ波形の移動が可能になる。例えば、表示されているエンベロープ波形のポイントＡからマウスをドラッグすることにより、図２７に示すように、表示されているエンベロープ波形の全体を移動することができる。あるいは、表示されているエンベロープ波形のポイントＡからマウスをドラッグすることにより、図２８に示すように、表示されているエンベロープ波形のポイントＡのみを移動することができる。
したがって、既存のエンベロープデータを簡単な作業で修正できるとともに、修正する内容が楽音のイメージとして把握できる。
【００６３】
また、上記実施形態によれば、マウスによって入力される修正指示は、表示されているエンベロープ波形の特定の位置をカーソルによって指定する位置指定指示と、この位置指定指示によって指定された特定の位置であるポイントを変更（追加、消去、移動、入替え）する位置変更指示とを含む。
したがって、マウスの移動操作とクリック操作又はドラッグ操作によって、極めて容易に既存のエンベロープデータを修正できる。
【００６４】
【発明の効果】
本発明によれば、表示されたエンベロープ波形に対してマウス等の操作により修正指示を行うことにより、その修正指示に応じたエンベロープ波形を画面上で修正する。
したがって、既存のエンベロープデータを簡単な作業で修正できるとともに、修正する内容が楽音のイメージとして把握できるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施形態における楽音編集装置のシステム構成を示すブロック図。
【図２】図１におけるＣＰＵの楽音編集処理の機能をハードウェア的に示すブロック図。
【図３】図１におけるＲＡＭのメモリマップを示す図。
【図４】図１のＣＰＵのメインフローチャート。
【図５】図４における設定処理のフローチャート。
【図６】図５に続く設定処理のフローチャート。
【図７】図６に続く設定処理のフローチャート。
【図８】図６におけるポイント追加処理のフローチャート。
【図９】図６におけるポイント消去処理のフローチャート。
【図１０】図６における移動処理のフローチャート。
【図１１】図７におけるポイント指定処理のフローチャート。
【図１２】図７におけるディケイ入替え処理のフローチャート。
【図１３】図７におけるアタック入替え処理のフローチャート。
【図１４】図４における入力処理のフローチャート。
【図１５】図４における発音処理のフローチャート。
【図１６】図１５に続く発音処理のフローチャート。
【図１７】図１５におけるエンベロープ初期設定処理のフローチャート。
【図１８】図１６におけるエンベロープ生成処理のフローチャート。
【図１９】図１６におけるエンベロープリリース処理のフローチャート。
【図２０】図１７におけるピッチエンベロープ初期設定処理のフローチャート。
【図２１】図１８におけるピッチエンベロープ生成処理のフローチャート。
【図２２】図１９におけるピッチエンベロープリリース処理のフローチャート。
【図２３】図１６におけるＤＣＯ処理のフローチャート。
【図２４】図１６におけるＤＣＦ処理のフローチャート。
【図２５】図１６におけるＤＣＡ処理のフローチャート。
【図２６】実施形態におけるポイント追加処理及びディケイ入替え処理の画面を示す図。
【図２７】実施形態におけるエンベロープ波形の全体を移動する画面を示す図。
【図２８】実施形態におけるエンベロープ波形の指定ポイントを移動する画面を示す図。
【符号の説明】
１  ＣＰＵ
３  ＲＯＭ
４  ＲＡＭ
５  ＭＩＤＩインターフェース
６  表示器
７  操作子
８  アンプ
９  スピーカ
【図１】
0003925082.tif 000002
【図２】
0003925082.tif 000003
【図３】
0003925082.tif 000004
【図４】
0003925082.tif 000005
【図５】
0003925082.tif 000006
【図６】
0003925082.tif 000007
【図７】
0003925082.tif 000008
【図８】
0003925082.tif 000009
【図９】
0003925082.tif 000010
【図１０】
0003925082.tif 000011
【図１１】
0003925082.tif 000012
【図１２】
0003925082.tif 000013
【図１３】
0003925082.tif 000014
【図１４】
0003925082.tif 000015
【図１５】
0003925082.tif 000016
【図１６】
0003925082.tif 000017
【図１７】
0003925082.tif 000018
【図１８】
0003925082.tif 000019
【図１９】
0003925082.tif 000020
【図２０】
0003925082.tif 000021
【図２１】
0003925082.tif 000022
【図２２】
0003925082.tif 000023
【図２３】
0003925082.tif 000024
【図２４】
0003925082.tif 000025
【図２５】
0003925082.tif 000026
【図２６】
0003925082.tif 000027
【図２７】
0003925082.tif 000028
【図２８】
0003925082.tif 000029