(57)【要約】【課題】編集によって作成されたパターンを複数の編集方法により編集が行えるパターン編集装置を提供する。【解決手段】エンベロープの編集は、時間とレベルの組み合わせを指定する時間編集方法、及びそれを描画する直接編集方法で行うことができ、編集・作成されたエンベロープのデータはＲＡＭ１０３に保存される。ＣＰＵ１０１は、ユーザーが入力装置１０６を操作して、ＲＡＭ１０３に保存された時間編集方法でデータが作成のエンベロープを選択し、その編集方法として直接編集方法を選択した場合、そのデータを直接編集方法用のそれに変換して、直接編集方法で編集を行わせる。【選択図】            図１
2004309522.tif 000002
【特許請求の範囲】
【請求項１】
状態量の変化を表すパターンの編集が行えるパターン編集装置において、
異なる編集方法で前記パターンの編集をユーザーに行わせる複数のパターン編集手段と、
前記複数のパターン編集手段でそれぞれ採用された編集方法のなかから所望の編集方法を選択させるための編集方法選択手段と、
前記複数のパターン編集手段でそれぞれ編集されるパターンのデータを共有化させるデータ共有化手段と、
前記編集方法選択手段によって選択された編集方法を採用のパターン編集手段により、前記データ共有化手段が共有化するデータを対象にしたパターンの編集をユーザーに行わせる制御を実行する編集制御手段と、
を具備することを特徴とするパターン編集装置。
【請求項２】
前記複数のパターン編集手段は、前記パターンの形状を数値で指定させる第１の編集方法を採用した第１のパターン編集手段、及び該形状を描画によって指定させる第２の編集方法を採用した第２のパターン編集手段を少なくとも含み、
前記編集方法選択手段により前記第２の編集方法を選択して、前記第１のパターン編集手段での編集により作成されたデータを対象にしたパターンの編集をユーザーが要求した場合に、前記編集制御手段は、該データを前記データ共有化手段によって共有化させることにより、該データで表されるパターンを描画させて、前記第２のパターン編集手段による編集を行わせる、
ことを特徴とする請求項１記載のパターン編集装置。
【請求項３】
状態量の変化を表すパターンの編集が行えるパターン編集装置に実行させるプログラムであって、
異なる編集方法で前記パターンの編集をユーザーに行わせる複数のパターン編集機能と、
前記複数のパターン編集機能でそれぞれ採用された編集方法のなかから所望の編集方法を選択させるための機能と、
前記複数のパターン編集機能によりそれぞれ編集されるパターンのデータを共有化させる機能と、
前記選択させるための機能によって選択された編集方法を採用のパターン編集機能により、前記共有化させる機能により共有化するデータを対象にしたパターンの編集をユーザーに行わせる制御を実行する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、状態量の変化を表すパターンの編集を行うための技術に関する。
【０００２】
【従来の技術】
楽音を放音するための波形データは、音量の時間変化を表す音量エンベロープ、音高の時間変化を表すピッチエンベロープ、などの各種エンベロープ（パターン）を反映させる形で生成される。そのようにして、放音される楽音の音色を実際の楽器におけるそれに近づけている。
【０００３】
エンベロープを変えることで、楽音に対する印象も変化する。このことから、音源装置やシンセサイザなどの楽音発生装置には、エンベロープを変更できるように、エンベロープエディタと呼ばれるパターン編集装置が搭載されているものがある。
【０００４】
パターン編集装置としては、例えば特許文献２に記載されたものがある。それに記載された従来のパターン編集装置では、マウスなどのポインティングデバイスを用いてエンベロープを描画することにより、その編集を行えるようになっている。その描画は、エンベロープを表す線が通るポイントを指定することにより行うようになっている。
【０００５】
それ以外の編集方法としては、エンベロープの形状を数値で指定するものがある。その数値とは、予め用意されたパラメータの値として設定されるものか、或いはテーブル形式で形状を指定するためのものである。そのテーブル形式では、音量エンベロープを例にとれば、例えば発音開始から経過した時間を示す値、その時間での音量レベルを示す値を少なくとも含む数値の組み合わせを時間別に指定するようになっている。一方、パラメータの値を設定させる場合には、アタック時間などの時間やサスティンレベルなどを設定するためのものが複数、パラメータとして用意されているのが普通である。なお、音量エンベロープは、通常、ＡＤＳＲ（Ａ：アタック，Ｄ：ディケイ、Ｓ：サスティン、Ｒリリース）の４つの部分に区分けされる。
【０００６】
【特許文献１】
特開２００２−１８９４７０号公報
【特許文献２】
特開２００２−１９６７６２号公報
【０００７】
【発明が解決しようとする課題】
上述したように、パターンの編集方法は複数、存在する。ユーザーの好みは様々であることを考えれば、複数の編集方法に対応させることが望ましいと言える。パターンの編集は、新規にそれを作成する他に、既存のパターンを変更するためにも行われる。後者の目的で行われることも多い。このことから、編集によって作成されたパターンを別の編集方法で編集できるようにすることも重要であると考えられる。そのようにすることにより、例えば或る人が編集・作成したパターンを、別の人が好みの編集方法で編集するといったことが可能となることから、ユーザーの要望に対してより幅広く対応できるようになると考えられる。
【０００８】
本発明の課題は、編集によって作成されたパターンを複数の編集方法により編集が行えるパターン編集装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明のパターン編集装置は、状態量の変化を表すパターンの編集が行えることを前提とし、異なる編集方法でパターンの編集をユーザーに行わせる複数のパターン編集手段と、複数のパターン編集手段でそれぞれ採用された編集方法のなかから所望の編集方法を選択させるための編集方法選択手段と、複数のパターン編集手段でそれぞれ編集されるパターンのデータを共有化させるデータ共有化手段と、編集方法選択手段によって選択された編集方法を採用のパターン編集手段により、データ共有化手段が共有化するデータを対象にしたパターンの編集をユーザーに行わせる制御を実行する編集制御手段と、を具備する。
【００１０】
なお、上記複数のパターン編集手段は、パターンの形状を数値で指定させる第１の編集方法を採用した第１のパターン編集手段、及び該形状を描画によって指定させる第２の編集方法を採用した第２のパターン編集手段を少なくとも含み、編集方法選択手段により第２の編集方法を選択して、第１のパターン編集手段での編集により作成されたデータを対象にしたパターンの編集をユーザーが要求した場合に、編集制御手段は、該データをデータ共有化手段によって共有化させることにより、該データで表されるパターンを描画させて、第２のパターン編集手段による編集を行わせる、ことが望ましい。
【００１１】
本発明のプログラムは、上記本発明のパターン編集装置が具備する各手段を実現させるための機能を備えている。
本発明では、異なる編集方法で編集・作成されたパターンのデータを共有化し、或る編集方法でデータが編集・作成されたパターンをそれとは異なる編集方法でユーザーが編集する場合に、そのデータをその異なる編集方法用のものに変換して、その異なる編集方法でユーザーに編集させる。それにより、ユーザーは、既存のパターンの編集・作成に用いられた編集方法に係わらず、そのパターンを所望の編集方法で編集することが可能となる。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施の形態によるパターン編集装置を搭載した音源装置の回路構成図である。
【００１３】
その音源装置は、図１に示すように、装置全体の制御を行うＣＰＵ１０１と、プログラムや各種データを格納したＲＯＭ１０２と、ＣＰＵ１０１がワーク用に用いるＲＡＭ１０３と、そのＣＰＵ１０１から送られたデータを表示する表示器１０４と、外部装置とＭＩＤＩデータをやりとりするＭＩＤＩインターフェース１０５と、ユーザが操作の対象とする入力装置１０６と、楽音を発音させるためのオーディオ信号を生成する音源ＬＳＩ１０７と、それら各部１０１〜１０７を相互に接続するバス１０８と、音源ＬＳＩ１０７から出力されたオーディオ信号の増幅を行うアンプ１０９と、そのアンプ１０９から出力されたオーディオ信号を入力して楽音を放音するスピーカー１１０と、を備えて構成されている。
【００１４】
上記表示器１０４は例えば液晶表示器である。その表示器１０４の代わりに、外部の表示装置に信号、或いはデータを出力するインターフェースを備えても良い。入力装置１０６は、例えば各種キーやポインティングデバイスなどの操作子を備えたものである。各種キーとしては、数値入力用のテンキーを含む多数のキーが備えられている。ポインティングデバイスは、クリック操作などを行えるように備えられている。音源ＬＳＩ１０７は、例えばＣＰＵ１０１の指示に従い、発音させる楽音の波形データを生成し、生成した波形データに対して、必要に応じて音響効果を付加させる処理を施した後、それをＤ／Ａ変換することでオーディオ信号を生成し出力するものである。
【００１５】
上述したような構成の音源装置は、ＭＩＤＩインターフェース１０５を介して受信したＭＩＤＩデータを処理することにより、そのＭＩＤＩデータで指定された楽音を放音する。本実施の形態によるパターン編集装置は、放音される楽音の波形を加工するうえで用いられる各種パターンの編集をユーザが行えるようにするために搭載されている。各種パターンとしては、音量エンベロープやピッチ・エンベロープ、パン・エンベロープなどがある。ユーザが編集を行ったエンベロープのデータを保存しておけるように、ＲＡＭ１０３は特には図示しないバッテリによって不揮発性化されている。
【００１６】
以上の構成において動作を説明する。
ユーザが電源をオンさせると、ＣＰＵ１０１はＲＯＭ１０２からプログラムを読み出して実行することにより、装置全体の制御を開始する。その制御は、ＭＩＤＩインターフェース１０５のＭＩＤＩデータの受信、入力装置１０６へのユーザの操作に対応する形で行う。それにより、ＭＩＤＩインターフェース１０５がＭＩＤＩデータを受信すると、そのＭＩＤＩデータ、或いはそれに対応するコマンドを音源ＬＳＩ１０７に送出することにより、楽音をスピーカー１１０から放音させる。入力装置１０６をユーザが操作した場合には、ユーザが操作した操作子の種類に応じた処理を行う。パターンの編集は、その処理を行うことで実現される。
【００１７】
そのパターンの編集を実現させるために、ＣＰＵ１０１は以下のようなデータをＲＡＭ１０３に格納する。図２を参照して、そのデータについて詳細に説明する。
図２は、ＲＡＭ１０３のマップを示す図である。編集可能な１種類のエンベロープに着目して、そのデータの保存や編集のために確保されたエリア、及びそのデータ構成を示したものである。そのエンベロープは、ここではピッチ・エンベロープとしている。そのピッチ・エンベロープとは、楽音の音高の時間変化を示すパターンである。以降、混乱を避けて理解を容易とするために、特に断らない限り、編集の対象はピッチ・エンベロープであるとの前提で説明を行うこととする。それにより、特に断らない限り「エンベロープ」とはピッチ・エンベロープを指す意味で用いる。
【００１８】
図２中の「エンベロープ保存エリア」は、編集・作成されたエンベロープのデータ（以降「エンベロープデータ」と呼ぶ）保存用に確保されたエリアである。「編集エリア」は、エンベロープの編集用に確保したエリアである。その編集エリアには、エンベロープ保存エリアに保存されたエンベロープデータと同じ構成のものが格納される。
【００１９】
エンベロープ保存エリアには、図中「Ｎ」で示すエンベロープ数が先頭に格納され、そのエンベロープ数Ｎ分、エンベロープデータを保存するためのエリア（図中「エンベロープ（０）」などと表記。以降「エンベロープエリア」と呼び、そのなかの特定のエリアを指す際には「エンベロープ（０）エリア」などと表記する）が確保されている。
【００２０】
本実施の形態では、描画によってエンベロープを編集する方法と、数値によってエンベロープを編集する方法と、の２種類の編集方法をサポートしている。前者については、エンベロープの形状を直接的に指定する形で編集することから、以降「直接編集方法」と呼ぶことにする。後者については、以降「時間編集方法」と呼ぶことにする。その後者では、発音開始から経過した時間、及びその時間でのレベルを指定して編集が行われる。
【００２１】
図２中「Ｎａｍｅ（０）」「ｆｌａｇ（０）」は、それぞれエンベロープ名、その編集方法を示すフラグである。これらは編集方法に係わらず、各エンベロープエリアに格納される。それ以外には、編集方法に応じて以下のようなデータが格納される。
【００２２】
エンベロープ（０）エリアに格納されたデータは直接編集方法により編集された場合のものである。その編集方法では、横（Ｘ）軸が時間、縦（Ｙ）軸がレベルのエリア内において、例えば入力装置１０６のポインティングデバイスにより所望の位置をクリックすることでポイントを指定すると、指定したポイントをエンベロープの形状の一部として設定するようになっている（図５参照）。Ｘ軸上でポイントが指定されていない部分は、予め定めた固定値のままとしている。それにより、エンベロープを描画させる形で編集を行わせている。
【００２３】
そのようにして設定されるエンベロープは、Ｘ（時間）軸上の位置別に、そのレベルを示す数値として保存している。図２中「Ｅｎｖ（０）（０）」などは、その数値を表したものである。その１番目の添字（シンボル「Ｅｎｖ」の隣に位置する括弧内の数値）は、エンベロープエリアを示す数値であり、２番目の添字は、指定されたポイントのＸ（時間）軸上の位置を示す数値である。また、「ＥｎｖＮｕｍ（０）」はエンベロープが設定されたＸ軸上の最大位置を示す数値を表している。「Ｅｎｖ（０）（ＥｎｖＮｕｍ（０））」を表記しているのはこのためである。
【００２４】
エンベロープ（Ｎ）エリアに格納されたデータは時間編集方法により編集された場合のものである。その編集方法では、ポイントを直接、指定する代わりに、その位置、つまり時間とその時間でのレベルを数値の組み合わせで指定するようになっている（図６参照）。図２中「ＴｉｍｅＮｕｍ（Ｎ）」は指定された数値の組み合わせ数を示している。それ以降に表記の「Ｔｉｍｅ（Ｎ）（０）」などは、指定された時間を示す数値である。その次に位置する「Ｌｅｖｅｌ（Ｎ）（０）」などは、指定された時間でのレベルを示す数値である。それらにおいて、１番目の添字は、エンベロープエリアを示す数値であり、２番目の添字は、指定された数値の組み合わせのなかで先頭からの位置を示す数値である。その２番目の添字は、指定された時間とレベルの対応関係を示している。
【００２５】
本実施の形態では、レベルはその変位量で指定させ、時間は、その変位量だけ変化させるのに要する時間で指定させるようにしている。そのようにして、時間で指定される区間毎に、そのレベルの変化量を指定させるようにしている（図６参照）。
【００２６】
なお、以降は、混乱を避けるために、エンベロープ保存エリアに保存されたデータは図２に名称が表記された変数、或いは配列変数の要素に代入されているとの前提で説明を行うことにする。このため、例えばエンベロープ数Ｎは変数Ｎに代入された値、エンベロープ（０）エリアに保存されたエンベロープ名Ｎａｍｅ（０）は１次元の配列変数Ｎａｍｅの０を添字として指定される要素Ｎａｍｅ（０）に代入されたエンベロープ名といったように表現することとする。
【００２７】
上述したように、エンベロープ保存エリアには、直接編集方法、及び時間編集方法の各編集方法で編集・作成されたエンベロープデータが保存される。保存したエンベロープデータは、それを変更するための編集を行えるようにさせている。その編集では、時間編集方法で作成されたエンベロープデータの編集を、直接編集方法でも行えるようにさせている。このことから、エンベロープ保存エリアに保存されたエンベロープデータの編集では、所望の編集方法をユーザーに選択させている。
【００２８】
そのように、複数の編集方法でエンベロープデータの編集を行えるようにすると、ユーザーは別の人が作成したエンベロープデータを好みの編集方法で編集することができる。各編集方法にはそれぞれ短所や長所が存在するが（例えば時間編集方法は、数値で形状を指定するために、直接編集方法と比較して微細な変更を容易に行える傾向がある）、そのような短所や長所を考慮してエンベロープデータの編集が行えることから、その編集をより適切、且つ容易に行えるようになる。このようなことから、ユーザーの要望に対してより幅広く対応できるようになる。
【００２９】
ＣＰＵ１０１は、エンベロープ保存エリアに保存したエンベロープデータをそのまま、或いは加工したものを音源ＬＳＩ１０７に必要に応じて送出する。それにより、ユーザが編集したエンベロープを反映させた楽音の放音を行わせる。
その音源ＬＳＩ１０７は、例えば楽音波形データを格納したメモリを備え、そのメモリから楽音波形データを読み出す速さを変更することにより、放音する楽音の音高に対応する楽音波形データを生成する。そのようにして楽音波形データを生成する場合、音源ＬＳＩ１０７は、ＣＰＵ１０１から送られたエンベロープ（ピッチ・エンベロープ）のデータに従って、メモリから楽音波形データを読み出す速さを変更する。それにより、楽音波形データの生成にピッチ・エンベロープを反映させる。オーディオ信号は、そのようにして生成された波形データをＤ／Ａ変換したものである。
【００３０】
次に、上述したようなエンベロープの編集をユーザに行わせるＣＰＵ１０１の動作について、図３〜図７に示す各説明図、及び図８〜図２３に示す各種フローチャートを参照して詳細に説明する。なお、図８〜図２３に示す各種フローチャートで表される処理は、例えばＣＰＵ１０１が、ＲＯＭ１０２に格納されたプログラムを実行することで実現される。
【００３１】
図８は、全体処理のフローチャートである。電源がオンされている間、ＣＰＵ１０１が実行する処理のなかでエンベロープの編集に係わる処理を抜粋して、全体的な流れを表したものである。始めに、図８を参照して、全体処理について詳細に説明する。
【００３２】
先ず、ステップ８０１では、電源がオンされたことに合わせて、音源装置を予め定められた状態に設定するイニシャライズを行う。続くステップ８０２では、図３に示すような初期画面を表示器１０４に表示させる。その後はステップ８０３に移行する。
【００３３】
その初期画面は、エンベロープの編集に係る選択をユーザーに行わせるためのものである。図３に示すように、直接編集方法でエンベロープを新規に作成する編集を要求するための「エンベロープ作成（直接）」アイコン、時間編集方法でエンベロープを新規に作成する編集を要求するための「エンベロープ作成（時間・レベル）」アイコン、既存のエンベロープデータの読み込みを要求するための「読み込み」アイコン、編集に係る処理の終了を指示するための「終了」アイコン、が配置されている。
【００３４】
ステップ８０３〜８１０では、図３に示す初期画面上に配置されたアイコン（ボタン）のなかでユーザがクリックしたアイコンを特定して、特定したアイコンに割り当てた機能を実現するための処理が行われる。それにより、「エンベロープ作成（直接）」アイコンをユーザーがクリックした場合には、ステップ８０３の判定がＹＥＳとなってステップ８０４に移行し、直接編集方法によるエンベロープの新規の作成を行わせる作成（直接）処理を実行する。「エンベロープ作成（時間・レベル）」アイコンをユーザーがクリックした場合には、ステップ８０３の判定がＮＯとなることで移行するステップ８０５の判定がＹＥＳとなってステップ８０６に移行し、時間編集方法によるエンベロープの新規の作成を行わせる作成（時間）処理を実行する。「読み込み」アイコンをユーザーがクリックした場合には、ステップ８０３、８０５の判定がそれぞれＮＯとなることで移行するステップ８０７の判定がＹＥＳとなってステップ８０８に移行し、既存のエンベロープデータをエンベロープ保存エリアから読み込んで編集を行わせる読込処理を実行する。ステップ８０４、８０６、及び８０８の各処理を実行した後は上記ステップ８０２に戻り、図３に示す初期画面を再度、表示器１０４に表示させる。
【００３５】
一方、「キャンセル」アイコンをユーザーがクリックした場合には、ステップ８０３、８０５、及び８０７の各判定がそれぞれＮＯとなることで移行するステップ８０９の判定がＹＥＳとなってステップ８１０に移行し、図３に示す初期画面を表示器１０４から消去させる。その後に一連の処理を終了する。そのアイコンをユーザーがクリックしていない場合には、判定はＮＯとなって上記ステップ８０３に戻る。それにより、初期画面上に配置された何れかのアイコンがクリックされるのを待つ。
【００３６】
次に、上記全体処理内で実行されるサブルーチン処理について詳細に説明する。
図９及び図１０は、上記ステップ８０４として実行される作成（直接）処理のフローチャートである。全体処理内で実行されるサブルーチン処理では、始めに図９及び図１０を参照して、その作成（直接）処理について詳細に説明する。
【００３７】
先ず、ステップ９０１では、図３に示す初期画面を表示器１０４から消去させる。次のステップ９０２では、図５に示すような直接枠画面を表示器１０４に表示させる。その次に移行するステップ９０３では、エンベロープの新規作成であることから、変数Ｎの値をインクリメントし、その値で指定される配列変数ＥｎｖＮｕｍの要素ＥｎｖＮｕｍ（Ｎ）に０を代入する。エンベロープの先頭のレベルが固定であれば、要素Ｅｎｖ（Ｎ）（０）にその固定値を併せて代入する。そのようなことを行った後、ステップ９０４に移行する。
【００３８】
エンベロープの編集は、新規の作成か否かに係わらず編集エリア（図２参照）を用いて行われる。本実施の形態では、そのエリア内に、編集方法別にエリアを更に確保している。編集エリア内に確保したエリアについては、以降、直接編集方法用のものを「編集（直接）エリア」、時間編集方法用のものを「編集（時間）エリア」とそれぞれ呼ぶことにする。
【００３９】
上記直接枠画面には、図５に示すように、新規作成のキャンセルを指示するための「キャンセル」アイコン、新規作成のエンベロープの保存を指示するための「保存」アイコンが配置されている。新規作成のエンベロープは、「キャンセル」アイコンの上方に配置された波形表示エリアに表示（描画）される。
【００４０】
ステップ９０４では、波形表示エリア内がオン、即ちそのエリア内がクリックされたか否か判定する。そのエリア内でユーザーがクリック操作を行わなかった場合、判定はＮＯとなってステップ９１０に移行する。そうでない場合には、判定はＹＥＳとなってステップ９０５に移行する。
【００４１】
ステップ９０５では、ユーザーがクリックしたポイントのｘ座標値を変数Ｘに代入する。次のステップ９０６では、変数Ｎ、Ｘの各値で指定される要素Ｅｎｖ（Ｎ）（Ｘ）に、ユーザーがクリックしたポイントのＹ座標値に対応するレベルを示す値を代入する。その値を代入した後は、ステップ９０７に移行して、編集（時間）エリアにそれをストアし、波形表示エリアに表示するエンベロープを必要に応じて更新する。
【００４２】
その波形表示エリアの更新は、特に詳細な説明は省略するが、ユーザーが新たに指定したポイントのＸ軸上のそれまでのレベル、及びその前後のＸ軸上のレベルを結ぶ線の代わりに、そのポイントで指定されたレベルとその前後のＸ軸上のレベルを結ぶ線を新たに表示させることで行われる。
【００４３】
ステップ９０７に続くステップ９０８では、変数Ｘの値が要素ＥｎｖＮｕｍ（Ｎ）の値より大きいか否か判定する。要素ＥｎｖＮｕｍ（Ｎ）には、ユーザーが指定したポイントのなかでＸ軸上の位置が最大のポイントのＸ座標値を示す値が保持される。このため、それまでに指定したポイントよりもＸ軸上の位置が大きいポイントを新たに指定した場合、判定はＹＥＳとなり、次にステップ９０９で変数Ｘの値を要素ＥｎｖＮｕｍ（Ｎ）に代入した後、上記ステップ９０４に戻る。それにより、新たなポイント指定に備える。一方、そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、そのステップ９０４に戻る。
【００４４】
そのステップ９０４の判定がＮＯとなって移行するステップ９１０では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックしていない場合、判定はＮＯとなって図１０のステップ９１４に移行する。そうでない場合には、判定はＹＥＳとなってステップ９１１に移行する。
【００４５】
ステップ９１１では、編集（直接）エリアのクリアを行う。続くステップ９１２では、変数Ｎの値をデクリメントする。その次のステップ９１３では、図５に示すような直接枠画面を表示器１０４から消去する。その後、一連の処理を終了する。
【００４６】
図１０のステップ９１４では、「保存」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックしていない場合、判定はＮＯとなって図９のステップ９０４に戻る。それにより、直接枠画面上で行われた操作に対応できる状態を維持する。一方、そうでない場合には、判定はＹＥＳとなってステップ９１５に移行し、図７に示すような保存画面を表示器１０４に表示させる。
【００４７】
その保存画面は、編集したエンベロープの保存を行うか否かの最終的な確認を行うためのものである。図７に示すように、保存しないことを指示するための「キャンセル」アイコン、保存を指示するための「決定」アイコン、及び編集したエンベロープの名称を入力するためのボックスが配置されている。それにより、エンベロープの保存は、ボックス内に名称を入力した後、「決定」アイコンをクリックすれば良いようになっている。
【００４８】
ステップ９１５に続くステップ９１６では、ボックス内に名称が入力されたか否か判定する。入力装置１０６のキーを操作してユーザーがデータ入力を行った場合、判定はＹＥＳとなり、入力したデータをボックス内に表示させ（ステップ９１７）、更にボックス内に名称として表示させたデータを要素Ｎａｍｅ（Ｎ）に代入した（ステップ９１８）後、そのステップ９１６に戻る。そうでない場合には、判定はＮＯとなってステップ９１９に移行する。
【００４９】
ステップ９１９では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなり、要素Ｎａｍｅ（Ｎ）の値をクリアし（ステップ９２０）、更に保存画面を消去させて直接枠画面を再度、表示器１０４に表示させた（ステップ９２１）後、図９のステップ９０４に戻る。それにより、エンベロープの編集を継続して行える状態に復帰させる。反対にそうでない場合には、判定はＮＯとなってステップ９２２に移行する。
【００５０】
ステップ９２２では、「決定」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックしなかった場合、判定はＮＯとなってステップ９１６に戻る。それにより、保存画面上での操作を行える状態を維持させる。反対にそうでない場合には、判定はＹＥＳとってステップ９２３に移行し、変数ｍに０を代入する。その変数ｍは、編集（直接）エリアに保存した各要素の値を確定させるためのものである。
【００５１】
ステップ９２３に続くステップ９２４では、変数ｍの値が要素ＥｎｖＮｕｍ（Ｎ）の値よりも大きいか否か判定する。前者が後者以下であった場合、判定はＮＯとなってステップ９２８に移行する。そうでない場合には、判定はＹＥＳとなってステップ９２５に移行する。
【００５２】
ステップ９２５では、２番目の添字を変数ｍの値として指定される要素Ｅｎｖ（Ｎ）（ｍ）に値が代入されていないか否か判定する。それに値が代入されていないような場合、判定はＹＥＳとなり、それに０を代入し（ステップ９２６）、更に変数ｍの値をインクリメントした（ステップ９２７）後、上記ステップ９２４に戻る。それにより、要素Ｅｎｖ（Ｎ）（０〜ＥｎｖＮｕｍ（Ｎ））の各値を確定するまで、つまりステップ９２４の判定がＮＯとなるまで、ステップ９２４〜９２７で形成される処理ループを繰り返し実行する。一方、そうでない場合には、判定はＮＯとなり、次にステップ９２７の処理を実行する。
【００５３】
そのステップ９２４の判定がＮＯとなって移行するステップ９２８では、要素ｆｌａｇ（Ｎ）に、直接編集方法で作成されたことを示す値の１を代入する。続くステップ９２９では、ステップ９２８でデータが代入された要素Ｎａｍｅ（Ｎ）、その要素ｆｌａｇ（Ｎ）、図９のステップ９０９で値が更新される要素ＥｎｖＮｕｍ（Ｎ）、及び編集（直接）エリアにストアした要素Ｅｎｖ（Ｎ）（０〜ＥｎｖＮｕｍ（Ｎ））の各値を、エンベロープ保存エリア（図２参照）に新たに確保したエンベロープ（Ｎ）エリアにストアする。その後は、編集エリアのクリアを行い（ステップ９３０）、更に表示器１０４の表示をクリアして図３に示す初期画面を再度、表示させる（ステップ９３１）。一連の処理はその後に終了する。
【００５４】
図１１、及び図１２は、図８に示す全体処理内でステップ８０６として実行される作成（時間）処理のフローチャートである。次に図１１、及び図１２を参照して、その作成（時間）処理について詳細に説明する。
先ず、ステップ１１０１では、図３に示す初期画面を表示器１０４から消去させる。次のステップ１１０２では、図６に示すような時間表示枠画面を表示器１０４に表示させる。その次に移行するステップ１１０３では、エンベロープの新規作成であることから、変数Ｎの値をインクリメントし、そのインクリメント後に移行するステップ１１０４では、要素ＴｉｍｅＮｕｍ（Ｎ）に０を代入する。エンベロープの先頭のレベルが固定であれば、例えば要素Ｔｉｍｅ（Ｎ）（０）には０、要素Ｌｅｖｅｌ（Ｎ）（０）にはその固定値を併せて代入する。そのようなことを行った後、ステップ１１０５に移行する。図６に示す例は、その固定値として共に０を代入した場合のものである。
【００５５】
上記時間表示枠画面には、図６に示すように、新規作成のキャンセルを指示するための「キャンセル」アイコン、及び新規作成のエンベロープの保存を指示するための「保存」アイコンが配置されたテーブルが用意されている。そのテーブルは、エンベロープの形状を指定する時間、及びレベル入力用のものである。Ｙ軸上に沿って枠内に配置された「時間」「レベル」は、それらのシンボルによって特定されるボックス内に入力すべきデータの種類を表している。Ｘ軸上に沿って枠内に配置された「１」〜「１２」は、時間、及びレベルを入力していく順序を表しており、配列変数Ｔｉｍｅの要素を指定する２番目の添字の値に１を足した値に相当、つまり例えばその添字の値の０はシンボル「１」に相当する。その添字の値は、ボックスに割り当てた番号（枠番号）としても用いている。本実施の形態では、シンボル「１」が配置された列のボックスから、時間、レベルの順序で順次、ユーザーに入力させるようにしている。そのテーブルの上方に配置されたエリアは、そのテーブルに入力された時間、レベルで形状が指定されたエンベロープを描画するために用意した波形表示エリアである。
【００５６】
ステップ１１０５では、現在、入力を有効としているボックスに時間が入力されたか否か判定する。入力装置１０６のキーを操作してユーザーが時間を入力した場合、判定はＹＥＳとなってステップ１１０７に移行する。そうでない場合には、判定はＮＯとなってステップ１１０６に移行する。
【００５７】
ステップ１１０６では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなって後述するステップ１１１４に移行し、そうでない場合には、判定はＮＯとなってステップ１１０５に戻る。
【００５８】
一方、ステップ１１０７では、ユーザーが入力した時間を、要素Ｔｉｍｅ（Ｎ）（ＴｉｍｅＮｕｍ（Ｎ））に代入する。次のステップ１１０８では、入力した時間をテーブルのボックス内に表示させる。そのボックスとは、Ｘ軸に沿って配置した数値は要素ＴｉｍｅＮｕｍ（Ｎ）の値に１を加算した値（図中「ｍ」と表記）、Ｙ軸に沿って配置したシンボルは「時間」で指定されるボックスである。そのボックスに時間を表示させた後はステップ１１０９に移行する。
【００５９】
ステップ１１０９では、現在、入力を有効としているボックスにレベルが入力されたか否か判定する。入力装置１０６のキーを操作してユーザーがレベルを入力した場合、判定はＹＥＳとなってステップ１１１０に移行する。そうでない場合には、判定はＮＯとなってステップ１１１３に移行する。
【００６０】
ステップ１１１０では、ユーザーが入力したレベルを、要素Ｌｅｖｅｌ（Ｎ）（ＴｉｍｅＮｕｍ（Ｎ））に代入する。次のステップ１１１１では、入力したレベルをテーブルのボックス内に表示させ、今回、ユーザーが入力した時間、及びレベルに従って波形表示エリアに表示するエンベロープを更新する。その後は、ステップ１１１２で要素ＴｉｍｅＮｕｍ（Ｎ）の値をインクリメントしてから図１２のステップ１１１７に移行する。
【００６１】
その波形表示エリアでの更新は、特に詳細な説明は省略するが、それまでに描画したエンベロープの最後と、今回、ユーザーが入力した時間、及びレベルで指定されるポイントとを結ぶ線を描画することで行われる。レベルを表示させるボックスとは、Ｘ軸に沿って配置した数値は要素ＴｉｍｅＮｕｍ（Ｎ）の値に１を加算した値（図中「ｍ」と表記）、Ｙ軸に沿って配置したシンボルは「レベル」で指定されるボックスである。
【００６２】
一方、ステップ１１１３では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなってステップ１１１４に移行し、そうでない場合には、判定はＮＯとなって上記ステップ１１０９に戻る。
【００６３】
ステップ１１１４では、変数Ｎの値をデクリメントする。次のステップ１１１５では、編集エリアのクリアを行う。それに続くステップ１１１６では、図６に示すような時間表示枠画面を表示器１０４から消去する。その後、一連の処理を終了する。
【００６４】
図１２のステップ１１１７では、「保存」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなってステップ１１１８に移行し、そうでない場合には、判定はＮＯとなってステップ１１３０に移行する。それにより、「保存」アイコンへのクリック操作は、レベルの入力が終了する度に有効とさせている。
【００６５】
ステップ１１３０では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなって図１１のステップ１１１４に移行し、そうでない場合には、判定はＮＯとなって図１１のステップ１１０５に戻る。
【００６６】
一方、ステップ１１１８では、図７に示すような保存画面を表示器１０４に表示させる。続くステップ１１１９では、ボックス内に名称が入力されたか否か判定する。入力装置１０６のキーを操作してユーザーがデータ入力を行った場合、判定はＹＥＳとなり、入力したデータをボックス内に表示させ（ステップ１１２０）、更にボックス内に名称として表示させたデータを要素Ｎａｍｅ（Ｎ）に代入した（ステップ１１２１）後、そのステップ１１１９に戻る。そうでない場合には、判定はＮＯとなってステップ１１２２に移行する。
【００６７】
ステップ１１２２では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなり、要素Ｎａｍｅ（Ｎ）の値をクリアし（ステップ１１２３）、更に保存画面を消去させて時間表示枠画面を再度、表示器１０４に表示させた（ステップ１１２４）後、図１１のステップ１１０５に戻る。それにより、エンベロープの編集を継続して行える状態に復帰させる。反対にそうでない場合には、判定はＮＯとなってステップ１１２５に移行する。
【００６８】
ステップ１１２５では、「決定」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックしなかった場合、判定はＮＯとなって上記ステップ１１１９に戻る。それにより、保存画面上での操作を行える状態を維持させる。反対にそうでない場合には、即ち「決定」アイコンをユーザーがクリックした場合には、判定はＹＥＳとってステップ１１２６に移行する。
【００６９】
ステップ１１２６では、要素ｆｌａｇ（Ｎ）に、時間編集方法で作成されたことを示す値の０を代入する。続くステップ１１２７では、ステップ１１２１でデータが代入された要素Ｎａｍｅ（Ｎ）、その要素ｆｌａｇ（Ｎ）、要素ＴｉｍｅＮｕｍ（Ｎ）、図１１のステップ１１０７、１１１０で値が代入される要素Ｔｉｍｅ、Ｌｅｖｅｌの各値を、エンベロープ保存エリア（図２参照）に新たに確保したエンベロープ（Ｎ）エリアにストアする。その後は、編集エリアのクリアを行い（ステップ１１２８）、更に表示器１０４の表示をクリアして図３に示す初期画面を再度、表示させる（ステップ１１２９）。一連の処理はその後に終了する。
【００７０】
次に、図１３に示すフローチャートを参照して、図８に示す全体処理内でステップ８０８として実行される読み込み処理について詳細に説明する。その読み込み処理は、エンベロープ保存エリアにデータが保存された既存のエンベロープを変更する編集をユーザーに行わせるために実行される処理である。
【００７１】
先ず、ステップ１３０１では、図３に示す初期画面を表示器１０４からクリアする。次のステップ１３０２では、図４に示すようなリスト枠画面を表示器１０４に表示させる。その表示後は、ステップ１３０３で変数ｎに０を代入してからステップ１３０４に移行する。
【００７２】
上記リスト枠画面は、編集の対象とするエンベロープ、及びそのエンベロープの編集方法をユーザーに選択させるためのものである。図４に示すように、エンベロープの名称（配列変数Ｎａｍｅの要素に保持されている）のリストが配置されるテーブルが用意されている。それ以外には、直接編集方法を選択するための「編集（直接）」アイコン、時間編集方法を選択するための「編集（時間）」アイコン、及び編集のキャンセルを指示するための「キャンセル」アイコンが配置されている。エンベロープの編集は、テーブル中の所望の名称を選択した後、「編集（直接）」アイコン、或いは「編集（時間）」アイコンをクリックすることで行えるようにさせている。
【００７３】
ステップ１３０４では、テーブル（リスト）のｎ番目に、変数ｎの値で指定される要素Ｎａｍｅ（ｎ）に代入された名称を黒色で表示させる。続くステップ１３０５では、要素ｆｌａｇ（ｎ）の値が１か否か判定する。その名称のエンベロープが直接編集方法で編集・作成されていた場合、その要素には１が代入されていることから、判定はＹＥＳとなり、表示させた名称の表示色を赤色に変更し（ステップ１３０６）、更に変数ｎの値をインクリメントする。ステップ１３０８にはその後に移行する。一方、そうでない場合には、判定はＮＯとなり、次にステップ１３０７の処理を実行する。
【００７４】
ステップ１３０８では、変数ｎの値が変数Ｎの値より大きいか否か判定する。エンベロープ保存エリアに保存したエンベロープの名称を全て表示させた場合、変数ｎの値は変数Ｎの値より大きくなることから、判定はＹＥＳとなってステップ１３０９に移行する。そうでない場合には、判定はＮＯとなってステップ１３０４に戻る。それにより、他のエンベロープの名称の表示を継続して行う。
【００７５】
ステップ１３０９では、変数ｎに０を代入する。続くステップ１３１０では、変数ｎの値で指定されるリストのｎ番目の名称、その背景の表示色を反転させる。その後に移行するステップ１３１１では、「編集（直接）」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなってステップ１３１２に移行し、選択状態の名称（表示色を反転させた名称）を持つエンベロープを直接編集方法でユーザーに編集させる編集（直接）処理を実行する。その実行後はステップ１３１１に戻る。一方、そうでない場合には、判定はＮＯとなってステップ１３１３に移行する。
【００７６】
ステップ１３１３では、「編集（時間）」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなってステップ１３１４に移行し、そうでない場合には、判定はＮＯとなってステップ１３１６に移行する。
【００７７】
ステップ１３１４では、要素ｆｌａｇ（ｎ）の値が０か否か、即ち選択状態の名称を持つエンベロープが時間編集方法で編集・作成されたか否か判定する。そのエンベロープが時間編集方法で編集・作成されていた場合、判定はＹＥＳとなってステップ１３１５に移行し、そのエンベロープを時間編集方法でユーザーに編集させる編集（時間）処理を実行する。その実行後はステップ１３１１に戻る。一方、そうでない場合には、判定はＮＯとなってステップ１３１６に移行する。それにより、本実施の形態では、直接編集方法で編集・作成されたエンベロープは時間編集方法での編集を禁止させている。
【００７８】
ステップ１３１６では、テーブル（リスト）上の枠がオンされたか否か判定する。そのテーブル上にリストとして配置した名称の何れもユーザーがクリックしなかった場合、判定はＮＯとなってステップ１３１８に移行する。そうでない場合には、即ちそのテーブル上にリストとして配置した名称の何れかをユーザーがクリックした場合には、判定はＹＥＳとなってステップ１３１７に移行し、ユーザーがクリックした名称に対応する枠番号（その名称を持つエンベロープデータが保存されたエンベロープエリアを示す数値）を変数ｎに代入する。その後はステップ１３１０に戻り、ユーザーがクリックした名称、その背景の表示色のみを反転させて、選択状態となっているエンベロープをユーザーに通知する。
【００７９】
ステップ１３１８では、「キャンセル」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなり、図４に示すリスト枠画面を表示器１０４からクリアさせる（ステップ１３１９）。一連の処理はその後に終了する。一方、そうでない場合には、判定はＮＯとなって上記ステップ１３１１に戻る。それにより、リスト枠画面上での操作に対応できる状態を維持させる。
【００８０】
以降は、上記読み込み処理内で実行されるサブルーチン処理について詳細に説明する。
図１４、及び図１５は、上記ステップ１３１２として実行される編集（直接）処理のフローチャートである。読み込み処理内で実行されるサブルーチン処理では、始めに図１４、及び図１５を参照して、編集（直接）処理について詳細に説明する。
【００８１】
先ず、ステップ１４０１では、図４に示すリスト枠画面を表示器１０４からクリアする。続くステップ１４０２では、図５に示す直接枠画面上の「キャンセル」アイコンを「クリア」アイコンに変更した画面（以降「直接枠画面」と呼ぶ）を表示器１０４に表示させる。その後はステップ１４０３に移行する。
【００８２】
ステップ１４０３では、要素ｆｌａｇ（ｎ）の値が０か否か判定する。ユーザーが編集の対象として選択したエンベロープが時間編集方法で編集・作成されていた場合、要素ｆｌａｇ（ｎ）には０が代入されていることから、判定はＹＥＳとなり、ステップ１４０４でエンベロープ保存エリアのエンベロープ（ｎ）エリアにストアされているエンベロープデータを編集エリア内の編集（時間）エリアにストアする。そのストア後は、そのエンベロープデータを直接編集方法用のそれに変換する変換処理、及び編集の対象となるエンベロープを波形表示エリアに表示させる表示（直接）処理をその順序で実行する（ステップ１４０５、１４０６）。一方、そうでない場合には、判定はＮＯとなり、ステップ１４０６でエンベロープ（ｎ）エリアにストアされているエンベロープデータを編集（直接）エリアにストアする。その後はステップ１４０７に移行して、エンベロープデータを表示させるために表示（直接）処理を実行する。
【００８３】
ステップ１４０７に続くステップ１４０８では、「保存」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックしなかった場合、判定はＮＯとなってステップ１４１２に移行し、そうでない場合には、判定はＹＥＳとなってステップ１４０９に移行する。
【００８４】
ステップ１４０９では、エンベロープ（ｎ）エリアに、編集（直接）エリアにストアされているエンベロープデータを上書きしてコピーする。続くステップ１４１０では、編集エリアのクリアを行い、その次に移行するステップ１４１１では、図５に示すような直接枠画面を表示器１０４からクリアし、図４に示すリスト枠画面を表示器１０４に表示させる。一連の処理はその後に終了する。
【００８５】
一方、ステップ１４１２では、「クリア」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなってステップ１４１０に移行する。それにより、エンベロープ（ｎ）エリアへの上書きコピーを行うことなく、一連の処理を終了させる。これに対し、そうでない場合には、判定はＮＯとなって図１５のステップ１４１３に移行する。
【００８６】
そのステップ１４１３では、波形表示エリア内がオンされたか否か判定する。そのエリア内にカーソルを位置させた状態でユーザーがクリック操作を行った場合、判定はＹＥＳとなってステップ１４１４に移行する。そうでない場合には、判定はＮＯとなって図１４のステップ１４０８に戻る。
【００８７】
ステップ１４１４〜１４２１では、波形表示エリア内でのクリック操作、つまりエンベロープの編集を目的として行われたポイント指定に対応するための処理が行われる。
先ず、ステップ１４１４では、変数Ｘにはクリック操作により指定されたポイントのｘ座標値、変数Ｙにはそのｙ座標値をそれぞれ代入する。続くステップ１４１５では、変数Ｘの値が要素ＥｎｖＮｕｍ（ｎ）の値より大きいか否か判定する。Ｘ軸上において、それまでより大きい位置でポイントをユーザーが新たに指定した場合、変数Ｘには要素ＥｎｖＮｕｍ（ｎ）の値より大きい値が代入されることから、判定はＹＥＳとなってステップ１４１６に移行する。そうでない場合には、判定はＮＯとなってステップ１４１８に移行する。
【００８８】
ステップ１４１６では、要素ＥｎｖＮｕｍ（ｎ）の値をインクリメントする。その次に移行するステップ１４１７では、変数Ｘの値が要素ＥｎｖＮｕｍ（ｎ）の値と等しいか否か判定する。それらの値が等しくなかった場合、つまり、変数Ｘの値のほうが大きい場合、判定はＮＯとなってステップ１４２０に移行する。そうでない場合には、判定はＹＥＳとなってステップ１４１８に移行する。
【００８９】
ステップ１４１８では、要素Ｅｎｖ（ｎ）（Ｘ）に、変数Ｙの値を代入する。次のステップ１４１９では、値を代入した要素Ｅｎｖ（ｎ）（Ｘ）を編集（直接）エリアにストアする。その後は図１４のステップ１４０８に戻る。
一方、ステップ１４２０では、要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））に０を代入する。続くステップ１４２１では、その要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））を編集（直接）エリアにストアする。その後はステップ１４１６に戻って要素ＥｎｖＮｕｍ（ｎ）の値のインクリメントを行う。
【００９０】
このようにして、要素ＥｎｖＮｕｍ（ｎ）の値より大きい値のＸ軸上の位置をユーザーがポイント指定すると、そのポイントのＸ軸上の位置に対応する要素Ｅｎｖ（ｎ）（Ｘ）にはそのＹ軸上の位置に対応する値が代入され、要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ）〜（Ｘ−１））にはそれぞれ０が代入だれる。要素ＥｎｖＮｕｍ（ｎ）には、その代入の過程で変数Ｘの値が代入される。
【００９１】
ここで、上記編集（直接）処理内で実行されるサブルーチン処理について、図１６〜図１８に示す各フローチャートを参照して詳細に説明する。
図１６、及び図１７は、上記ステップ１４０５として実行される変換処理のフローチャートである。始めに図１６、及び図１７を参照して、その変換処理について詳細に説明する。
【００９２】
時間編集方法では、ユーザーが指定した時間とレベルの組み合わせをデータとして保存する。これに対し、直接編集方法では、ユーザーが指定したポイントのＹ座標値を、そのＸ座標値に対応する配列変数Ｅｎｖの要素に保存する。このことから、変換処理では、配列変数Ｅｎｖの変数ｎで指定される各要素に、ユーザーが時間とレベルの組み合わせで指定したエンベロープで対応するＹ座標値を代入することが行われる。
【００９３】
先ず、ステップ１６０１では、編集（時間）エリアにストアされている要素Ｎａｍｅ（ｎ）、ｆｌａｇ（ｎ）を編集（直接）エリアにストアする。続くステップ１６０２では、編集（直接）エリアにストアした要素ｆｌａｇ（ｎ）の値を１にする。その次に移行するステップ１６０３では、要素ＥｎｖＮｕｍ（ｎ）、変数ｍ、及びＴＬにそれぞれ０を代入する。ステップ１６０４にはその後に移行する。
【００９４】
上記変数ｍは、ユーザーが指定した時間とレベルの組み合わせのなかで着目する対象を管理するために用意したものである。そのレベルは、上述したように、変更量で入力するようになっている。変数ＴＬは、変更量で入力されたレベルの累算値を計算・保持するために用意したものである。それに０を代入するのは、図６に示すように、レベルの先頭の値、つまり要素Ｌｅｖｅｌ（ｎ）（０）の値は０に固定させているためである。
【００９５】
ステップ１６０４以降では、変数ｍ、及び要素ＥｎｖＮｕｍ（ｎ）の値を順次、インクリメントしながら、変数ｍの値で指定される組み合わせに着目して、要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））に値を代入していくための処理が行われる。
【００９６】
先ず、ステップ１６０４では、変数ｍの値が要素ＴｉｍｅＮｕｍ（ｎ）の値以下か否か判定する。前者が後者より大きい場合、判定はＮＯとなってステップ１６１０に移行する。そうでない場合には、判定はＹＥＳとなってステップ１６０５に移行する。
【００９７】
ステップ１６０５では、変数ｔに０を代入し、変数ＴＬには、それまでの値に要素Ｌｅｖｅｌ（ｎ）（ｍ−１）の値を代入する。そのようにして、変数ｍの値で指定される時間内に、その値で指定されるレベルの変更量だけエンベロープのレベルを変更していくうえでの起点となるレベルの値を変数ＴＬに代入すると、次にステップ１６０６に移行して、要素Ｌｅｖｅｌ（ｎ）（ｍ）の値を要素Ｔｉｍｅ（ｎ）（ｍ）の値で割って得られる値に変数ｔの値を乗算し、その乗算結果に変数ＴＬの値を加算した値（＝ＴＬ＋ｔ×Ｌｅｖｅｌ（ｎ）（ｍ）／Ｔｉｍｅ（ｎ）（ｍ））を要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））に代入する。
【００９８】
そのようにして要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））に代入される値は、上記起点のレベルから、変数ｔの値と要素Ｔｉｍｅ（ｎ）（ｍ）の値の比を要素Ｌｅｖｅｌ（ｎ）（ｍ）の値に掛けた分だけ変化させたものとなる。上記ステップ１６０５では、変数ｍが０であれば、つまり要素Ｌｅｖｅｌ（ｎ）（ｍ−１）が存在しなければ、変数ＴＬの値は０のままとしている。
【００９９】
ステップ１６０６に続くステップ１６０７では、要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））の値を編集（直接）エリアにストアする。次のステップ１６０８では、要素ＥｎｖＮｕｍ（ｎ）の値をインクリメントする。その後は図１７のステップ１６１３に移行する。
【０１００】
そのステップ１６１３では、変数ｔの値をインクリメントする。その次に移行するステップ１６１４では、変数ｔの値が要素Ｔｉｍｅ（ｎ）（ｍ）の値と等しいか否か判定する。それらの値が等しい場合、判定はＹＥＳとなり、ステップ１６１５で変数ｍの値をインクリメントした後、図１６のステップ１６０４に戻る。それにより、着目する組み合わせを次のものに変えて、それ以降の処理を同様に実行する。そうでない場合には、判定はＮＯとなって図１６のステップ１６０６に戻る。
【０１０１】
図１６のステップ１６０４の判定がＮＯとなって移行するステップ１６１０では、要素Ｅｎｖ（ｎ）（ＥｎｖＮｕｍ（ｎ））に、変数ＴＬの値に要素Ｌｅｖｅｌ（ｎ）（ｍ）の値を加算した値を代入する。次のステップ１６１１では、要素Ｌｅｖｅｌ（ｎ）（ｍ）の値を編集（直接）エリアにストアする。その次に移行するステップ１６１２では、要素ＥｎｖＮｕｍ（ｎ）を編集（直接）エリアにストアする。その後、一連の処理を終了する。
【０１０２】
このようにして、編集（時間）エリアにストアされたデータから、要素Ｅｎｖ（ｎ）（０〜ＥｎｖＮｕｍ（ｎ））に代入すべき値を求めて代入し、他の要素の値とともに編集（直接）エリアにストアされる。それにより、時間編集方法で編集・作成されたエンベロープを直接編集方法で編集できるようにさせている。
【０１０３】
次に、図１８に示すフローチャートを参照して、図１４、及び図１５に示す編集（直接）処理内でステップ１４０７として実行される表示（直接）処理について詳細に説明する。
先ず、ステップ１８０１では、変数ｍに０を代入する。次のステップ１８０２では、変数ｘに変数ｍの値を代入する。その次のステップ１８０３では、編集（直接）エリアにストアされている要素Ｅｎｖ（ｎ）（ｍ）の値を変数ｙに代入する。その後に移行するステップ１８０４では、図５に示すような直接枠画面の波形表示エリア内の変数ｘ、ｙの各値で指定される位置に、エンベロープの形状を表示するためのポイントを表示させる。
【０１０４】
ステップ１８０４に続くステップ１８０５では、変数ｍの値をインクリメントする。その後に移行するステップ１８０６では、変数ｍの値が要素ＥｎｖＮｕｍ（ｎ）の値より大きいか否か判定する。編集（直接）エリアにデータがストアされたエンベロープの描画が終了した場合、変数ｍの値のほうが大きくなることから、判定はＹＥＳとなり、ここで一連の処理が終了する。そうでない場合には、判定はＮＯとなって上記ステップ１８０２に戻る。
【０１０５】
図１３に示す読み込み処理内で実行されるサブルーチン処理の説明に戻る。
図１９〜図２１は、その読み込み処理内でステップ１３１５として実行される編集（時間）処理のフローチャートである。次に図１９〜図２１を参照して、その編集（時間）処理について詳細に説明する。
【０１０６】
先ず、ステップ１９０１では、図４に示すリスト枠画面を表示器１０４からクリアする。続くステップ１９０２では、図６に示す時間表示枠画面上の「キャンセル」アイコンを「クリア」アイコンに変更した画面（以降、同様に「時間表示枠画面」と呼ぶ）を表示器１０４に表示させる。その後はステップ１９０３に移行する。
【０１０７】
ステップ１９０３では、エンベロープ保存エリア内のエンベロープ（ｎ）エリアのデータを編集（時間）エリアにストアする。次のステップ１９０４では、そのエリアにデータとしてストアした時間、及びレベルをテーブル上の対応するボックスに表示させる表示（時間）処理を実行する。その実行後は、ステップ１９０５に移行して、「保存」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックしなかった場合、判定はＮＯとなってステップ１９０９に移行し、そうでない場合には、判定はＹＥＳとなってステップ１９０６に移行する。
【０１０８】
ステップ１９０６では、エンベロープ（ｎ）エリアに、編集（時間）エリアにストアされているエンベロープデータを上書きしてコピーする。続くステップ１９０７では、編集エリアのクリアを行い、その次に移行するステップ１９０８では、図６に示すような時間表示枠画面を表示器１０４からクリアし、図４に示すリスト枠画面を表示器１０４に表示させる。一連の処理はその後に終了する。
【０１０９】
一方、ステップ１９０９では、「クリア」アイコンがオンされたか否か判定する。そのアイコンをユーザーがクリックした場合、判定はＹＥＳとなってステップ１９０７に移行する。それにより、エンベロープ（ｎ）エリアへの上書きコピーを行うことなく、一連の処理を終了させる。これに対し、そうでない場合には、判定はＮＯとなって図２０のステップ１９１０に移行する。
【０１１０】
そのステップ１９１０では、テーブル上の時間入力用のボックスがオンされたか否か判定する。そのボックスの何れもユーザーがクリックしなかった場合、判定はＮＯとなって図２１のステップ１９１６に移行し、そうでない場合には、判定はＹＥＳとなってステップ１９１１に移行する。
【０１１１】
ステップ１９１１では、ユーザーがクリックしたボックスの表示形態を変更させ、そのボックスへのデータ入力が有効であることをユーザーに通知する。続くステップ１９１２では、そのボックスに割り当てられた枠番号を変数ｍに代入する。その後は、ユーザーが時間を入力するのを待ち（ステップ１９１３）、ユーザーが入力した時間を要素Ｔｉｍｅ（ｎ）（ｍ）に代入し（ステップ１９１４）、その時間をそのボックスに表示させる（ステップ１９１５）。その表示を行った後は、図２１のステップ１９２２に移行する。
【０１１２】
時間を入力する対象は、既に時間が表示されたボックス、或いは隣まで時間が入力されたボックスである。図６に示す例では、シンボル「１〜４」が配置された列のボックスの何れかである。しかし、そのようなボックスを必ずしもユーザーがクリックするとは限らない。このことから、それ以外のボックスをユーザーがクリックした場合には、隣まで時間が入力されたボックスを時間入力有効とさせている。このため、図６に示す例では、シンボル「４」が配置された列のボックスを時間入力有効とさせることになる。これは、レベル入力用のボックスでも同様であるが、レベル入力用のボックスでは、隣までレベルが入力されていても、その列の時間入力用のボックスに時間が入力されていないボックスはレベル入力を有効とさせないようにしている。
【０１１３】
上記ステップ１９１０の判定がＮＯとなって移行する図２１のステップ１９１６では、テーブル上のレベル入力用のボックスがオンされたか否か判定する。そのボックスの何れもユーザーがクリックしなかった場合、判定はＮＯとなって図１９のステップ１９０５に戻り、そうでない場合には、判定はＹＥＳとなってステップ１９１７に移行する。
【０１１４】
ステップ１９１７では、ユーザーがクリックしたボックスの表示形態を変更させ、そのボックスへのデータ入力が有効であることをユーザーに通知する。続くステップ１９１８では、そのボックスに割り当てられた枠番号を変数ｍに代入する。その後は、ユーザーがレベルを入力するのを待ち（ステップ１９１９）、ユーザーが入力したレベルを要素Ｌｅｖｅｌ（ｎ）（ｍ）に代入し（ステップ１９２０）、そのレベルをそのボックスに表示させる（ステップ１９２１）。そのレベルを表示させたボックスにそれまでレベルを表示させていなかった場合には、つまり指定された時間とレベルの組み合わせ数が増えた場合には、要素ＴｉｍｅＮｕｍ（ｎ）への変数ｍの値の代入、そのストアも併せて行っている。
【０１１５】
その表示を行った後に移行するステップ１９２２では、新たな時間、若しくはレベルの入力、或いは、既に入力された時間、若しくはレベルの変更に応じて波形表示エリアに描画したエンベロープを更新するための波形表示処理を実行する。その実行後は、図１９のステップ１９０５に戻る。
【０１１６】
このようにして、本実施の形態では、既に時間、或いはレベルが入力されたボックス内は任意に、その入力が行われていないボックスは次に入力すべきボックスに限定して、エンベロープの編集を行わせている。
上記編集（時間）処理内で実行されるサブルーチン処理では、以下のような処理が行われる。図２２、及び図２３に示す各フローチャートを参照して、詳細に説明する。
【０１１７】
図２２は、上記ステップ１９０４として実行される表示（時間）処理のフローチャートである。始めに図２２を参照して、その表示（時間）処理について詳細に説明する。その表示（時間）処理は、上述したように、時間表示枠画面に配置されたテーブル上のボックス内に時間、レベルを表示させるために行われる処理である。
【０１１８】
先ず、ステップ２２０１では、変数ｍに０を代入する。続くステップ２２０２では、変数ｍの値を枠番号として持つ時間入力用のボックスに、要素Ｔｉｍｅ（ｎ）（ｍ）の値を表示させる。次のステップ２２０３では、同様にして、変数ｍの値を枠番号として持つレベル入力用のボックスに、要素Ｌｅｖｅｌ（ｎ）（ｍ）の値を表示させる。その後はステップ２２０４に移行する。
【０１１９】
ステップ２２０４では、変数ｍの値をインクリメントする。次に移行するステップ２２０５では、変数ｍの値が要素ＴｉｍｅＮｕｍ（ｎ）の値より大きいか否か判定する。表示すべき時間、及びレベルを全て対応するボックス内に表示させた場合、変数ｍの値のほうが大きくなることから、判定はＹＥＳとなり、次にステップ２２０６で波形表示処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなって上記ステップ２２０２に戻る。それにより、枠番号の小さい方から順に、時間、及びレベルを表示させる。
【０１２０】
図２３は、図１９〜図２１に示す編集（時間）処理内ではステップ１９２２として、上記表示（時間）処理内ではステップ２２０６として実行される波形表示処理である。次に図２３を参照して、その表示処理について詳細に説明する。
先ず、ステップ２３０１では、変数ｍに０を代入する。次のステップ２３０２では、変数Ｘ１に要素Ｔｉｍｅ（ｎ）（ｍ）の値、変数Ｙ１に要素Ｌｅｖｅｌ（ｎ）（ｍ）の値をそれぞれ代入する。その後はステップ２３０３に移行する。
【０１２１】
本実施の形態では、時間とレベルで指定されたポイント間を直線で結ぶようにしている。このことから、ステップ２３０３では、変数ｍの値をインクリメントした値が要素ＴｉｍｅＮｕｍ（ｎ）の値以下か否か判定する。そのインクリメントした値で指定される要素Ｔｉｍｅ（ｎ）（ｍ＋１）などに値が代入されている場合、判定はＹＥＳとなって２３０４に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１２２】
ステップ２３０４では、変数Ｘ２には変数Ｘ１の値に要素Ｔｉｍｅ（ｎ）（ｍ＋１）の値を加算した値、変数Ｙ２には変数Ｙ１の値に要素Ｌｅｖｅｌ（ｎ）（ｍ＋１）の値を加算した値をそれぞれ代入する。その次のステップ２３０５では、変数Ｘ１、Ｙ１の各値で指定される波形表示エリア上のポイントと、変数Ｘ２、Ｙ２の各値で指定されるそのエリア上のポイントとを結ぶ直線を表示させる。その直線を表示させた後は、ステップ２３０６に移行して、変数Ｘ１に変数Ｘ２の値、変数Ｙ１に変数Ｙ２の値をそれぞれ代入する。その後、上記ステップ２３０３に戻る。
【０１２３】
なお、本実施の形態では、サポートしているのは直接編集方法、及び時間編集方法の２種類であるが、その以上の数の編集方法をサポートするようにしても良い。編集方法の種類としては、そのようなものに限定されるわけではない。つまり、編集方法の種類、その数、及びそれらの組み合わせは任意に選択して良いものである。
【０１２４】
本実施の形態は、音源装置（楽音発生装置）に搭載されたパターン編集装置に本発明を適用したものであるが、本発明が適用できるのは楽音発生装置に搭載されたパターン編集装置に限定されるわけではない。編集の対象とするパターンの種類や搭載される装置などに係わらず、本発明はパターン編集装置に幅広く適用させることができる。
【０１２５】
上述したようなパターン編集装置、或いはその変形例の動作を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、フロッピー（登録商標）ディスク、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【０１２６】
【発明の効果】
以上、説明したように本発明は、異なる編集方法で編集・作成されたパターンのデータを共有化し、或る編集方法でデータが編集・作成されたパターンをそれとは異なる編集方法でユーザーが編集する場合に、そのデータをその異なる編集方法用のものに変換して、その異なる編集方法でユーザーに編集させる。このため、ユーザーは、既存のパターンの編集・作成に用いられた編集方法に係わらず、そのパターンを所望の編集方法で編集することができる。
【図面の簡単な説明】
【図１】本実施の形態によるパターン編集装置を搭載した音源装置の回路構成図である。
【図２】ＲＡＭのマップを説明する図である。
【図３】初期画面を示す図である。
【図４】リスト枠画面を示す図である。
【図５】直接枠画面を示す図である。
【図６】時間表示枠画面を示す図である。
【図７】保存画面を示す図である。
【図８】全体処理のフローチャートである。
【図９】作成（直接）処理のフローチャートである。
【図１０】作成（直接）処理のフローチャートである（続き）。
【図１１】作成（時間）処理のフローチャートである。
【図１２】作成（時間）処理のフローチャートである（続き）。
【図１３】読み込み処理のフローチャートである。
【図１４】編集（直接）処理のフローチャートである。
【図１５】編集（直接）処理のフローチャートである（続き）。
【図１６】変換処理のフローチャートである。
【図１７】変換処理のフローチャートである（続き）。
【図１８】表示処理のフローチャートである。
【図１９】編集（時間）処理のフローチャートである。
【図２０】編集（時間）処理のフローチャートである（続き１）。
【図２１】編集（時間）処理のフローチャートである（続き２）。
【図２２】表示（時間）処理のフローチャートである。
【図２３】波形表示処理のフローチャートである。
【符号の説明】
１０１    ＣＰＵ
１０２    ＲＯＭ
１０３    ＲＡＭ
１０４    表示器
１０５    ＭＩＤＩインターフェース
１０６    入力装置
１０７    音源ＬＳＩ
１０８    バス
【図１】
2004309522.tif 000003
【図２】
2004309522.tif 000004
【図３】
2004309522.tif 000005
【図４】
2004309522.tif 000006
【図５】
2004309522.tif 000007
【図６】
2004309522.tif 000008
【図７】
2004309522.tif 000009
【図８】
2004309522.tif 000010
【図９】
2004309522.tif 000011
【図１０】
2004309522.tif 000012
【図１１】
2004309522.tif 000013
【図１２】
2004309522.tif 000014
【図１３】
2004309522.tif 000015
【図１４】
2004309522.tif 000016
【図１５】
2004309522.tif 000017
【図１６】
2004309522.tif 000018
【図１７】
2004309522.tif 000019
【図１８】
2004309522.tif 000020
【図１９】
2004309522.tif 000021
【図２０】
2004309522.tif 000022
【図２１】
2004309522.tif 000023
【図２２】
2004309522.tif 000024
【図２３】
2004309522.tif 000025