(57)【要約】【課題】履歴として残す記録範囲や、記録し始める基点をユーザが任意指定でき、しかも表示画面上の表示領域端に達するまで、以前の操作を連続的に繰り返し実行させる履歴記憶再生装置およびその方法を実現する。【解決手段】ＲＡＭ３に履歴エリアＲＥを設けておき、アイコンＩＣ１のクリックに応じて、履歴記憶するオン状態に設定されてから履歴記憶しないオフ状態に設定されるまでの間、入力されるコマンドを履歴エリアＲＥに記憶するので、操作履歴として残す範囲や記録し始める基点を任意指定できる。また、表示画面上の表示領域端に達するまで連続的に繰り返し実行させ得る。【選択図】      図４
2007115278.tif 000002
【特許請求の範囲】
【請求項１】
履歴記憶の開始または停止を指示する第１の指示手段と、
この第１の指示手段が履歴記憶の開始を指示してから停止を指示するまでの間、ユーザにより入力され、所定処理を実行させるコマンドを履歴として記憶する履歴記憶手段と、
この履歴記憶手段に記憶されたコマンドの再生を指示する第２の指示手段と、
表示画面上の表示領域端に達するまで繰り返し実行することを指示する第３の指示手段と、
前記第２の指示手段により再生指示され、かつ前記第３の指示手段により繰り返し実行指示された場合、前記履歴記憶手段に記憶されたコマンドを、表示画面上の表示領域端に達するまで連続的に繰り返し実行する実行手段と
を具備することを特徴とする履歴記憶再生装置。
【請求項２】
履歴記憶の開始または停止を指示する第１の指示過程と、
この第１の指示過程が履歴記憶の開始を指示してから停止を指示するまでの間、ユーザにより入力され、所定処理を実行させるコマンドを履歴として記憶する履歴記憶過程と、
この履歴記憶過程にて記憶されたコマンドの再生を指示する第２の指示過程と、
表示画面上の表示領域端に達するまで繰り返し実行することを指示する第３の指示過程と、
前記第２の指示過程にて再生指示され、かつ前記第３の指示過程にて繰り返し実行指示された場合、前記履歴記憶過程にて記憶されたコマンドを、表示画面上の表示領域端に達するまで連続的に繰り返し実行する実行過程と
を具備することを特徴とする履歴記憶再生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ入力を操作履歴として記憶しておき、その後に同じ入力を必要とする時に、記憶した操作履歴を再生して入力操作の代替として利用する技術に関し、特に、エンベロープ波形等を描画する機能を備えた電子楽器に用いて好適な履歴記憶再生装置および履歴記憶再生方法に関する。
【背景技術】
【０００２】
従来より、入力される操作を操作履歴として記憶しておき、誤った操作を実行させてしまった場合に、操作履歴の内から誤操作する前の操作を再実行させて操作ミス以前の状況に戻したり、操作履歴の内から選択した、以前の操作を繰り返し実行させるＵｎｄｏ／Ｒｅｄｏ技術が知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、従来のＵｎｄｏ／Ｒｅｄｏ技術では、操作が行われる毎にそれを新たな履歴として記憶しつつ、最古の履歴を破棄する履歴更新を行い、常に一定範囲の操作、すなわち過去複数回分の操作を操作履歴として保存する場合が多い。この為、操作履歴として残す記録範囲や、操作履歴として記録し始める基点をユーザが任意に指定することができない、という問題がある。
また、従来のＵｎｄｏ／Ｒｅｄｏ技術では、操作履歴の内から選択した、以前の操作を１度繰り返し実行させるだけなので、ユーザが指定した回数分、自動的に以前の操作を連続的に繰り返し実行させることができない、という問題もある。
【０００４】
そこで本発明は、このような事情に鑑みてなされたもので、操作履歴として残す記録範囲や、操作履歴として記録し始める基点をユーザが任意指定でき、しかも表示画面上の表示領域端に達するまで、以前の操作を連続的に繰り返し実行させることができる履歴記憶再生装置および履歴記憶再生方法を提供することを目的としている。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１に記載の発明では、履歴記憶の開始または停止を指示する第１の指示手段と、この第１の指示手段が履歴記憶の開始を指示してから停止を指示するまでの間、ユーザにより入力され、所定処理を実行させるコマンドを履歴として記憶する履歴記憶手段と、この履歴記憶手段に記憶されたコマンドの再生を指示する第２の指示手段と、表示画面上の表示領域端に達するまで繰り返し実行することを指示する第３の指示手段と、前記第２の指示手段により再生指示され、かつ前記第３の指示手段により繰り返し実行指示された場合、前記履歴記憶手段に記憶されたコマンドを、表示画面上の表示領域端に達するまで連続的に繰り返し実行する実行手段とを具備することを特徴とする。
【０００６】
請求項２に記載の発明では、履歴記憶の開始または停止を指示する第１の指示過程と、この第１の指示過程が履歴記憶の開始を指示してから停止を指示するまでの間、ユーザにより入力され、所定処理を実行させるコマンドを履歴として記憶する履歴記憶過程と、この履歴記憶過程にて記憶されたコマンドの再生を指示する第２の指示過程と、表示画面上の表示領域端に達するまで繰り返し実行することを指示する第３の指示過程と、前記第２の指示過程にて再生指示され、かつ前記第３の指示過程にて繰り返し実行指示された場合、前記履歴記憶過程にて記憶されたコマンドを、表示画面上の表示領域端に達するまで連続的に繰り返し実行する実行過程とを具備することを特徴とする。
【発明の効果】
【０００７】
本発明では、第１の指示手段が履歴記憶の開始を指示してから停止を指示するまでの間、ユーザにより入力され、所定処理を実行させるコマンドを履歴として履歴記憶手段に記憶しておき、第２の指示手段により再生指示され、かつ第３の指示手段により繰り返し実行指示されると、履歴記憶手段に記憶されたコマンドを、表示画面上の表示領域端に達するまで連続的に繰り返し実行するので、繰り返し実行回数を指定せずとも表示画面上の表示領域端に達するまで連続的に繰り返し実行させることができる。
【発明を実施するための最良の形態】
【０００８】
本発明による履歴記憶再生装置は、ユーザ入力を必須とするインタラクティブなコンピュータ制御装置一般に適用される。以下では、本発明の実施の形態による履歴記憶再生装置を搭載した楽音発生装置を実施例とし、これについて図面を参照して説明する。本実施例による楽音発生装置は、エンベロープ波形等を描画する機能を有し、本発明による履歴記憶再生装置がその機能をアシストするように構成されている。
【０００９】
Ａ．構成
図１は実施例の構成を示すブロック図である。この図において、１はＣＰＵであり、ＭＩＤＩインタフェース４（後述する）を介して外部から供給されるＭＩＤＩデータを受信し、受信したＭＩＤＩデータを、ユーザ操作に応じて形成されるエンペロープ波形に基づき修飾して発音指示コマンドや消音指示コマンド等の楽音パラメータを生成して音源８に与えて楽音発生を指示する。
また、ＣＰＵ１は、上記エンベロープ波形を形成する際のユーザ入力を操作履歴として記憶し、それを再生する機能を備え、操作履歴として残す記録範囲や、操作履歴として記録し始める基点を任意指定可能とし、しかも指定された回数分、自動的に以前の操作を連続的に繰り返し実行する。なお、こうした本発明の要旨に係わるＣＰＵ１の動作については追って詳述する。
【００１０】
２は上記ＣＰＵ１にロードされる各種制御プログラムや、後述するエンベロープ形成画面ＥＫＧ等の各種画面を形成する画面データを記憶するＲＯＭである。３は履歴エリアＲＥ、ワークエリアＷＥ、バッファエリアＢＥおよびエンベロープ波形エリアＥＷＥを備えるＲＡＭである。
ここで、図２を参照してＲＡＭ３のメモリ構成について説明する。履歴エリアＲＥには、エンベロープ波形を形成する際にユーザが入力する波形生成用のコマンドがアドレスポインタＡＤに従って格納される。ワークエリアＷＥには、各種レジスタ・フラグデータが一時記憶されるようになっており、これらレジスタ・フラグデータが意図するところについては追って述べる。バッファエリアＢＥには、ＭＩＤＩインタフェース４を介して外部から供給されるＭＩＤＩデータが一時記憶される。エンベロープ波形エリアＥＷＥには、波形形成モード下でユーザが作成したエンベロープ波形データが格納される。
【００１１】
ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、外部のＭＩＤＩ楽器（不図示）から供給されるＭＩＤＩデータを受信してＲＡＭ３のバッファエリアＢＥに転送する。５はクリック操作に応じてクリックイベントを発生するマウスである。６は装置パネルに配設されるパネルスイッチ群であり、各スイッチ操作に応じたスイッチイベントを発生する。図示していないが、このパネルスイッチ群には例えば装置電源をオンオフする電源スイッチの他、外部から供給されるＭＩＤＩデータに応じて楽音を発生する楽音発生モードとエンベロープ波形を形成する波形形成モードとに切り換えるモードスイッチ等が設けられている。
７はＬＣＤパネル等から構成される表示部である。この表示部７は、楽音発生モード下にある場合にはＣＰＵ１から供給される表示制御信号に応じて装置各部の動作状態や設定状態を表示する。また、波形形成モード下にあれば、ユーザの入力操作（コマンド入力）にて形成されるエンベロープ波形を画面表示したり、そのエンベロープ波形形成に用いる各種アイコンを画面表示する。
【００１２】
ここで、図３を参照して、波形形成モード下で表示部７に画面表示されるエンベロープ形成画面ＥＫＧの構成について説明する。この画面ＥＫＧは、波形表示エリアＷＤＥとアイコンＩＣ１〜ＩＣ７とから構成される。波形表示エリアＷＤＥには、ユーザのコマンド入力に応じて描画されるエンベロープ波形あるいは履歴記憶されたコマンドの再生（繰り返し実行）により描画されるエンベロープ波形が画面表示される。
アイコンＩＣ１はマウス５のクリックに応じて、履歴記憶するＯＮ状態あるいは履歴記憶しないＯＦＦ状態に設定する。アイコンＩＣ２はマウス５によりクリックされた場合に、履歴記憶されたコマンドの繰り返し実行を指示する。ここで言うコマンドとは、後述するアイコンＩＣ６，ＩＣ７のクリック操作に応じて実行される波形形成コマンドおよび波形表示エリアＷＤＥでのクリック操作に応じて実行されるポイント表示コマンドを指す。
【００１３】
アイコンＩＣ３はマウス５によりクリックされた場合に、履歴記憶されたコマンドを、設定された回数分繰り返し実行させる。アイコンＩＣ４はマウス５によりクリックされた場合に、履歴として記憶されたコマンドを、波形表示エリアＷＤＥの表示範囲内で繰り返し実行させる。アイコンＩＣ５はマウス５によりクリックされた場合に、履歴記憶されたコマンドの繰り返し実行を取り消す。アイコンＩＣ６はマウス５によりクリックされた場合に、波形表示エリアＷＤＥ内でポインティングされた始点から終点までを直線で描画する直線描画コマンドの実行を指示する。アイコンＩＣ７はマウス５によりクリックされた場合に、波形表示エリアＷＤＥ内でポインティングされた始点から終点までを曲線で描画する曲線描画コマンドの実行を指示する。
【００１４】
次に、再び図１を参照して実施例の構成について説明を進める。８は波形メモリ読み出し方式で構成される音源である。音源８は、各種音色の波形データが記憶される波形メモリを有し、ＣＰＵ１から供給される楽音パラメータに従い、波形メモリから対応する波形データを読み出し、この波形データとＣＰＵ１の指示に応じてＲＡＭ３のエンベロープ波形エリアＥＷＥから読み出されるエンベロープ波形とに基づいて楽音Ｗを生成して次段のサウンドシステム９に出力する。サウンドシステム９は音源８が発生する楽音Ｗをアナログ波形信号に変換して不要ノイズを除去する等のフィルタリングを施した後、これを増幅してスピーカＳＰから発音させる。
【００１５】
Ｂ．動作
次に、図４〜図２１を参照して実施例の動作について説明する。
（１）波形形成処理の動作
先ず図４〜図５を参照して波形形成処理の動作について説明する。実施例が波形形成モードに設定されている場合に電源投入されると、ＣＰＵ１は図４に示す波形形成処理ルーチンを実行してステップＳＡ１に処理を進める。ステップＳＡ１では、図５に示すステップＳＢ１〜ＳＢ５からなるイニシャライズを実行する。
【００１６】
すなわち、ステップＳＢ１では、レジスタｘ0，ｙ0に初期値をストアする。このレジスタｘ0，ｙ0にストアされる初期値は、エンベロープ形成画面ＥＫＧの波形表示エリアＷＤＥ（図３参照）における基点Ｏの座標位置を表す。次に、ステップＳＢ２に進むと、前述したアイコンＩＣ３に割り当てられる繰り返し回数を保持するレジスタＮに初期値「１」をストアする。続いて、ステップＳＢ３では、履歴記憶するか否かを表す履歴フラグＲＦをゼロリセットする。この履歴フラグＲＦは、前述したアイコンＩＣ１のクリックに応じて反転されるようになっており、当該フラグＲＦが「０」の場合に履歴記憶しないオフ状態、「１」の場合に履歴記憶するオン状態を表す。
そして、ステップＳＢ４では、フラグＥＦをゼロリセットする。このフラグＥＦは、前述したアイコンＩＣ４のクリックに応じて反転される。当該フラグＥＦが「１」の場合に、履歴として記憶されたコマンドを波形表示エリアＷＤＥの表示範囲内で繰り返し実行する動作を有効とし、「０」の場合にそれを無効にする。
【００１７】
こうして、イニシャライズが完了すると、ＣＰＵ１は図４のステップＳＡ２に処理を進め、ＲＯＭ２から読み出した画面データに基づき、表示部７にエンベロープ形成画面ＥＫＧを画面表示する。
次いで、ステップＳＡ３〜ＳＡ１９では、エンベロープ形成画面ＥＫＧ上でのクリックの有無を判断し、クリックされた場合にはマウス５のカーソルがポインティングする位置に対応した処理、つまり波形表示エリア内でクリックするポインティング操作あるいはアイコンＩＣ１〜１Ｃ７のいずれかをクリックするアイコン操作に応じた処理を実行する。以下ではこれら各処理についてユーザ操作を交えて説明して行く。
【００１８】
（２）履歴記憶処理の動作
いま例えば、履歴記憶を開始させるべく、ユーザがエンベロープ形成画面ＥＫＧのアイコンＩＣ１にマウス５のカーソルをポインティングしてクリックしたとする。
そうすると、図４に示すステップＳＡ６の判断結果が「ＹＥＳ」となり、ステップＳＡ７に進み、履歴記憶処理を開始する。履歴記憶処理が開始されると、ＣＰＵ１は図６に示すステップＳＣ１に処理を進め、履歴フラグＲＦを反転する。次いで、ステップＳＣ２では、反転した履歴フラグＲＦが「１」であるか否かを判断する。
【００１９】
反転した履歴フラグＲＦが「１」であると、判断結果は「ＹＥＳ」となり、次のステップＳＣ４に進み、アイコンＩＣ１内部に「ＯＮ」表示する。これにより、図７に図示するように、アイコンＩＣ１では内部に「ＯＮ」表示がなされ、履歴記憶するオン状態に設定されたことを表す。次に、ステップＳＣ５では、ＲＡＭ３の履歴エリアＲＥ（図２参照）をクリアし、続くステップＳＣ６では、アドレスポインタＡＤに開始アドレスをセットする。
一方、反転した履歴フラグＲＦが「０」の場合には、上記ステップＳＣ２の判断結果が「ＮＯ」となり、ステップＳＣ３に処理を進め、履歴記憶しないオフ状態に設定されたことを表示すべくアイコンＩＣ１内部に「ＯＦＦ」表示して本ルーチンを完了させる。
【００２０】
（３）ポインティング処理の動作
アイコンＩＣ１のクリックにて履歴記憶するオン状態に設定した後、例えば図７に図示するように、ユーザが波形表示エリアＷＤＥ内の点Ｐ１の位置にマウス５のカーソルをポインティングしてクリックしたとする。
そうすると、図４に示すステップＳＡ４の判断結果が「ＹＥＳ」となり、ステップＳＡ５に進み、ポインティング処理を開始する。ポインティング処理が開始されると、ＣＰＵ１は図８に示すステップＳＤ１に処理を進め、波形表示エリアＷＤＥ内でクリックされた点Ｐ１の位置座標（ｘ，ｙ）をそれぞれレジスタＸ，Ｙにストアする。次いで、ステップＳＤ２では、図９に示すポイント描画処理を実行してステップＳＤ２−１に進み、レジスタＸ，Ｙにストアされた位置座標（ｘ，ｙ）に従って波形表示エリアＷＤＥ内でクリックされた点Ｐ１をポイント表示し、続くステップＳＤ２−２ではポイント表示した旨を表す為、フラグＷＦを「１」にセットする。
【００２１】
クリックされた点Ｐ１が波形表示エリアＷＤＥ内にポイント表示されると、ＣＰＵ１は図８に示すステップＳＤ３に進み、履歴フラグＲＦが「１」であるか否かを判断する。ここでは、先に述べた通り、アイコンＩＣ１のクリックにて履歴記憶するオン状態に設定されている為、判断結果は「ＹＥＳ」となり、次のステップＳＤ４に進み、コマンド１を作成する。このコマンド１とは、ポイント描画処理の実行を指示する命令、つまりレジスタＸ，Ｙに格納された座標位置にポイント表示する命令である。
そして、ステップＳＤ５では、アドレスポインタＡＤに従って、ＲＡＭ３の履歴エリアＲＥにコマンド１およびレジスタＸ，Ｙの値を格納する。この後、ステップＳＤ６では、アドレスポインタＡＤを歩進させて本ルーチンを完了させる。これにより、ポイント表示させるユーザ操作が履歴記憶される。
一方、履歴フラグＲＦが「０」の場合には、上記ステップＳＤ３の判断結果が「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
【００２２】
（４）直線処理の動作
次に、波形表示エリアＷＤＥ内にポイント表示した点Ｐ１と基点Ｏとを直線で結ぶべく、ユーザがアイコンＩＣ６にマウス５のカーソルをポインティングしてクリックしたとする。
そうすると、図４に示すステップＳＡ１６の判断結果が「ＹＥＳ」となり、ステップＳＡ１７に進み、図１０に示す直線処理を開始してステップＳＥ１に処理を進める。ステップＳＥ１では直線描画処理を実行する。ステップＳＥ１を介して直線描画処理が実行されると、ＣＰＵ１は図１１のステップＳＥ１−１に進み、フラグＷＦが「１」、つまりポイント描画済みであるか否かを判断する。
【００２３】
ポイント描画済みでなければ、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させるが、上述したように、波形表示エリアＷＤＥ内で点Ｐ１を描画させた場合には、判断結果が「ＹＥＳ」となり、ステップＳＥ１−２に処理を進める。そして、ステップＳＥ１−２では、レジスタｘ0，ｙ0に格納される基点Ｏ（ｘ0，ｙ0）と、レジスタＸ，Ｙに格納され、ポインティングされた点Ｐ１（ｘ，ｙ）との間を直線描画する。
これにより、図１２に図示するように、波形表示エリアＷＤＥの基点Ｏ（ｘ0，ｙ0）と、ユーザによってポインティングされた点Ｐ１（ｘ，ｙ）とが直線で結ばれることになる。次いで、ステップＳＥ１−３では、レジスタＸ，Ｙの値をレジスタｘ0，ｙ0に格納して点Ｐ１（ｘ，ｙ）を基点に更新し、続くステップＳＥ１−４ではフラグＷＦをゼロリセットする。
【００２４】
こうして直線描画がなされると、ＣＰＵ１は図１０のステップＳＥ２に処理を進め、履歴フラグＲＦが「１」、つまり履歴記憶するオン状態に設定されているかどうかを判断する。履歴記憶しないオフ状態であれば、判断結果が「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。一方、先に述べた通り、ユーザがアイコンＩＣ１をクリックして履歴記憶するオン状態に設定していると、判断結果は「ＹＥＳ」となり、ステップＳＥ３に進む。
【００２５】
ステップＳＥ３ではコマンド２を作成する。このコマンド２とは、上述した直線描画処理の実行を指示する命令、つまりレジスタｘ0，ｙ0に格納された基点の座標と、レジスタＸ，Ｙに格納され、ポインティングされた点Ｐ１（ｘ，ｙ）との間を直線描画する命令である。
そして、ステップＳＥ４では、アドレスポインタＡＤに従って、ＲＡＭ３の履歴エリアＲＥにコマンド２およびレジスタｘ0，ｙ0，Ｘ，Ｙの各値を格納する。この後、ステップＳＥ５に進み、アドレスポインタＡＤを歩進させて本ルーチンを完了させる。これにより、直線描画させるユーザ操作が履歴記憶される。
【００２６】
（５）曲線処理の動作
上述した直線処理は、波形表示エリアＷＤＥ内にポイント表示した点Ｐ１と基点Ｏとの間を直線描画するものであるが、点Ｐ１と基点Ｏとの間を曲線描画する場合にはアイコンＩＣ７をクリックする。アイコンＩＣ７がクリックされると、図４に示すステップＳＡ１８の判断結果が「ＹＥＳ」となり、ステップＳＡ１９に進み、図１３に示す曲線処理を開始してステップＳＦ１に処理を進める。ステップＳＦ１では曲線描画処理を実行する。ステップＳＦ１を介して曲線描画処理が実行されると、ＣＰＵ１は図１４のステップＳＦ１−１に進み、フラグＷＦが「１」、つまりポイント描画済みであるか否かを判断する。
【００２７】
ポイント描画済みでなければ、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させるが、上述したように、波形表示エリアＷＤＥ内で点Ｐ１を描画させた場合には、判断結果が「ＹＥＳ」となり、ステップＳＦ１−２に処理を進める。そして、ステップＳＦ１−２では、レジスタｘ0，ｙ0に格納される基点位置と、レジスタＸ，Ｙに格納され、ポインティングされた点Ｐ１（ｘ，ｙ）との間を曲線描画する。
これにより、図１２に図示するように、波形表示エリアＷＤＥの基点（ｘ0，ｙ0）と、ユーザによってポインティングされた点Ｐ１（ｘ，ｙ）とが曲線（破線で表示）で結ばれることになる。次いで、ステップＳＦ１−３では、レジスタＸ，Ｙの値をレジスタｘ0，ｙ0に格納して点Ｐ１（ｘ，ｙ）を基点に更新し、続くステップＳＥ１−４ではフラグＷＦをゼロリセットする。
【００２８】
こうして曲線描画がなされると、ＣＰＵ１は図１３のステップＳＥ２に処理を進め、履歴フラグＲＦが「１」、つまり履歴記憶するオン状態に設定されているかどうかを判断する。履歴記憶するオフ状態であれば、判断結果が「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
一方、アイコンＩＣ１のクリックにて履歴記憶するオン状態に設定されていれば、判断結果は「ＹＥＳ」となり、ステップＳＦ３に進み、コマンド３を作成する。このコマンド３とは、上述した曲線描画処理の実行を指示する命令、つまりレジスタｘ0，ｙ0に格納された基点の座標と、レジスタＸ，Ｙに格納され、ポインティングされた点Ｐ１（ｘ，ｙ）との間を曲線描画する命令である。そして、ステップＳＦ４では、アドレスポインタＡＤに従って、ＲＡＭ３の履歴エリアＲＥにコマンド３およびレジスタｘ0，ｙ0，Ｘ，Ｙの各値を格納する。この後、ステップＳＦ５に進み、アドレスポインタＡＤを歩進させて本ルーチンを完了させる。
【００２９】
（６）繰り返し実行処理の動作
履歴記憶するオン状態に設定した後、前述したポインティング処理および直線処理によって、波形表示エリアＷＤＥ内にポイント表示した点Ｐ１と基点Ｏとの間を直線描画し、さらに新たにポイント表示した点Ｐ２と点Ｐ１との間を直線描画して図１５に図示するような三角波形ＴＷを形成したとする。
そして、この状態でユーザがアイコンＩＣ２にマウス５のカーソルをポインティングしてクリックすると、図４に示すステップＳＡ８の判断結果が「ＹＥＳ」となり、ステップＳＡ９に進み、図１６に示す繰り返し実行処理を開始してステップＳＧ１に処理を進める。
【００３０】
ステップＳＧ１では、繰り返し回数を計数するカウンタｎをゼロリセットし、続くステップＳＧ２では、ＲＡＭ３の履歴エリアＲＥに操作履歴が格納されているか否かを判断する。操作履歴が無い場合には、判断結果が「ＮＯ」となり、繰り返し実行することなく本ルーチンを完了させるが、このユーザ操作の一例では、上述の三角波形ＴＷ（図１５参照）を形成したユーザ操作が履歴エリアＲＥに格納されているので、判断結果は「ＹＥＳ」となり、ステップＳＧ３に処理を進める。
ステップＳＧ３では、履歴エリアＲＥの開始アドレスをアドレスポインタＡＤにストアし、続くステップＳＧ４では、このアドレスポインタＡＤに応じて履歴エリアＲＥから読み出されるコマンド種を判定する。
【００３１】
コマンド１が読み出された場合には、ステップＳＧ５に進み、コマンド１と共に読み出されるレジスタＸ，Ｙの座標位置にポイント表示するコマンド１処理を実行する。
コマンド２が読み出された場合には、ステップＳＧ６に進み、コマンド２と共に読み出され、レジスタｘ0，ｙ0に格納される基点位置と、レジスタＸ，Ｙに格納されるポインティング位置との間を直線描画するコマンド２処理を実行する。
コマンド３が読み出された場合には、ステップＳＧ７に進み、コマンド３と共に読み出され、レジスタｘ0，ｙ0に格納される基点位置と、レジスタＸ，Ｙに格納されるポインティング位置との間を直線描画するコマンド３処理を実行する。
【００３２】
履歴エリアＲＥから読み出したコマンドに応じた処理が完了すると、ＣＰＵ１はステップＳＧ８に処理を進め、アドレスポインタＡＤをインクリメントして歩進させ、続くステップＳＧ９では、歩進したアドレスポインタＡＤに従って履歴エリアＲＥから次のコマンドを読み出せるか否か、つまり、操作履歴の有無を判断する。
操作履歴が有り、歩進したアドレスポインタＡＤに従って履歴エリアＲＥから次のコマンドを読み出せる場合には、判断結果が「ＮＯ」となり、ステップＳＧ４に処理を戻し、以後、履歴エリアＲＥに格納されたコマンドを全て実行し終えるまでステップＳＧ４〜ＳＧ９を繰り返す。
【００３３】
そして、履歴エリアＲＥに格納されたコマンドを全て実行し終えると、ステップＳＧ９の判断結果が「ＹＥＳ」となり、ステップＳＧ１０に進む。ステップＳＧ１０では、フラグＥＦが「１」、つまり、読み出したコマンドを波形表示エリアＷＤＥの表示範囲内で繰り返し実行する動作を行うかどうかを判断する。  後述するように、ユーザがアイコンＩＣ４をクリックしてフラグＥＦが「１」となった場合には、判断結果が「ＹＥＳ」となり、次のステップＳＧ１１に進み、レジスタＸの値が最大値以上であるか、つまり波形表示エリアＷＤＥの表示範囲を超えるまで描画し終えたかどうかを判断する。
【００３４】
波形表示エリアＷＤＥの表示範囲を超えるまで描画し終えていなければ、上記ステップＳＧ１１の判断結果が「ＮＯ」となり、ステップＳＧ３に処理を戻し、再び履歴エリアＲＥからコマンドを読み出し、読み出したコマンドによる描画が波形表示エリアＷＤＥの表示範囲を超えるまで当該コマンドを繰り返し実行させる。そして、波形表示エリアＷＤＥの表示範囲を超えるまで描画し終えると、上記ステップＳＧ１１の判断結果が「ＹＥＳ」となり、本ルーチンを完了させる。
【００３５】
一方、フラグＥＦが「０」の場合には、上記ステップＳＧ１０の判断結果が「ＮＯ」となり、ステップＳＧ１２に進み、繰り返し回数を計数するカウンタｎをインクリメントして歩進させる。次いで、ステップＳＧ１３では、歩進されたカウンタｎの値が、レジスタＮに格納される繰り返し回数に一致するか否かを判断する。
一致しなければ、判断結果は「ＮＯ」となり、ステップＳＧ３に処理を戻し、再び履歴エリアＲＥからコマンドを読み出し、このコマンドをレジスタＮに格納される繰り返し回数分実行させる。そして、繰り返し回数分実行し終えると、上記ステップＳＧ１３の判断結果が「ＹＥＳ」となり、本ルーチンを完了させる。
したがって、上述したユーザ操作、すなわち図１５に図示するような三角波形ＴＷを形成してからアイコンＩＣ２をクリックすると、履歴エリアＲＥに記憶したコマンドが１回だけ繰り返し実行され、この結果、図１５に図示する通り、ユーザ操作により描画された三角波形ＴＷと同一の繰り返し波形ＲＷが自動生成される。
【００３６】
（７）繰り返し回数処理の動作
図１５に図示したように、ユーザ操作により描画された三角波形ＴＷと履歴記憶したコマンドの繰り返し実行にて描画された繰り返し波形ＲＷとが画面表示された状態において、ユーザがアイコンＩＣ３にマウス５のカーソルをポインティングしてクリックしたとする。
そうすると、図４に示すステップＳＡ１０の判断結果が「ＹＥＳ」となり、ステップＳＡ１１に進み、図１７に示す繰り返し回数処理を開始してステップＳＨ１に処理を進める。
【００３７】
ステップＳＨ１では、フラグＥＦをゼロリセットし、波形表示エリアＷＤＥの表示範囲を超えるまで描画する動作を無効にする。次に、ステップＳＨ２では、繰り返し回数Ｎをインクリメントして歩進し、続くステップＳＨ３では歩進された繰り返し回数ＮをアイコンＩＣ３内部に数値表示して本ルーチンを完了させる。
なお、前述のイニシャライズ処理（図５参照）により繰り返し回数Ｎは初期値「１」に設定されており、今回アイコンＩＣ３をクリックしたことで「２」に歩進される。この結果、図１９に示すように、アイコンＩＣ３中に繰り返し回数「２」が表示されるようになっている。
【００３８】
さて、繰り返し回数を設定した後、ユーザがアイコンＩＣ２をクリックすると、上述した繰り返し実行処理（図１６参照）により履歴エリアＲＥに記憶したコマンドが２回繰り返し実行され、この結果、図１９に図示する通り、ユーザ操作により描画された三角波形ＴＷと同一の繰り返し波形ＲＷが２つ連続して自動生成される。
【００３９】
（８）繰り返し回数最後まで処理の動作
図１５に図示したように、ユーザ操作により描画された三角波形ＴＷと履歴記憶したコマンドの繰り返し実行にて描画された繰り返し波形ＲＷとが画面表示された状態において、ユーザがアイコンＩＣ４にマウス５のカーソルをポインティングしてクリックしたとする。
そうすると、図４に示すステップＳＡ１２の判断結果が「ＹＥＳ」となり、ステップＳＡ１３に進み、図１８に示す繰り返し回数最後まで処理を開始してステップＳＪ１に進み、フラグＥＦを反転する。
【００４０】
これにより、フラグＥＦは「１」となり、波形表示エリアＷＤＥの表示範囲を超えるまで描画する動作が有効になる。そして、この状態でユーザがアイコンＩＣ２をクリックすると、上述した繰り返し実行処理（図１６参照）において、ステップＳＧ１０の判断結果が「ＹＥＳ」となるので、波形表示エリアＷＤＥの表示範囲を超えるまで履歴エリアＲＥから読み出したコマンドを繰り返し実行して描画させる結果、図２０に図示する通り、ユーザ操作により描画された三角波形ＴＷと同一の繰り返し波形ＲＷが波形表示エリアＷＤＥの表示範囲を超えるまで連続して自動生成される。
【００４１】
（９）キャンセル処理の動作
次に、キャンセル処理の動作について説明する。エンベロープ形成画面ＥＫＧにおいて、ユーザがアイコンＩＣ５にマウス５のカーソルをポインティングしてクリックすると、図４に示すステップＳＡ１４の判断結果が「ＹＥＳ」となり、ステップＳＡ１５に進み、キャンセル処理を実行する。キャンセル処理が実行されると、ＣＰＵ１は図２１に示すステップＳＫ１に処理を進め、履歴フラグＲＦが「１」、つまり履歴記憶するオン状態に設定されているかどうかを判断する。
履歴フラグＲＦが「０」であると、判断結果は「ＮＯ」となり、この場合、取り消しする対象が存在しない為、何も処理せずに本ルーチンを完了させるが、履歴フラグＲＦが「１」であれば、判断結果が「ＹＥＳ」となり、次のステップＳＫ２に処理を進める。
【００４２】
ステップＳＫ２では、アドレスポインタＡＤが履歴エリアＲＥの開始アドレスを指し示しているか否かを判断する。アドレスポインタＡＤが履歴エリアＲＥの開始アドレスを指し示している場合、すなわち履歴記憶したコマンドを実行していない場合には、取り消しする対象が存在しないので、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
一方、アドレスポインタＡＤが履歴エリアＲＥの開始アドレスを指し示していなければ、履歴記憶したコマンドを実行した状態であるから、判断結果は「ＹＥＳ」となり、次のステップＳＧ３に進み、アドレスポインタＡＤをデクリメントする。次いで、ステップＳＫ４では、履歴エリアＲＥに記憶されるコマンドの内、デクリメントされたアドレスポインタＡＤに対応するコマンドを消去し、続くステップＳＫ５では、その消去コマンドに対応した描画を消去して本ルーチンを完了させる。
【００４３】
以上のように、本実施例によれば、ＲＡＭ３に履歴エリアＲＥを設けておき、アイコンＩＣ１のクリックに応じて、履歴記憶するオン状態に設定されてから履歴記憶しないオフ状態に設定されるまでの間、ユーザが入力するコマンドを入力順に履歴エリアＲＥに記憶するので、操作履歴として残す記録範囲や、操作履歴として記録し始める基点をユーザが任意指定し得るようになっている。
また、アイコンＩＣ３のクリック操作に応じて繰り返し回数を設定した後にアイコンＩＣ２をクリックした場合には、履歴エリアＲＥに記憶されたコマンドを、設定された繰り返し回数分実行させるので、ユーザが指定した回数分、自動的に以前の操作を連続的に繰り返し実行させることが可能になっている。
【００４４】
Ｃ．変形例
次に、図２２〜図２５を参照して変形例について説明する。前述した実施例と同様、ユーザがアイコンＩＣ１をクリックして履歴記憶するオン状態に設定した後、図２２に示す変形例のポインティング処理および前述した実施例の直線処理（図１０参照）によって、波形表示エリアＷＤＥ内にポイント表示した点Ｐ１と基点Ｏとの間を直線描画し、さらに新たにポイント表示した点Ｐ２と点Ｐ１との間を直線描画して図２４に図示するような三角波形ＴＷを形成したとする。
なお、変形例のポインティング処理は、図２２に示すように、そのステップＳＬ１〜ＳＬ６は実施例のポインティング処理（図８参照）におけるステップＳＤ１〜ＳＤ６と同一なので、その動作については説明を省略する。
【００４５】
三角波形ＴＷを形成後、ユーザがアイコンＩＣ１をクリックして履歴記憶しないオフ状態に設定し、さらにアイコンＩＣ３をクリックしたとする。そうすると、図２３に示す変形例の繰り返し実行処理が実行され、ステップＳＭ１に進み、操作履歴の有無を判断する。
この場合、図２４に図示した三角波形ＴＷを形成したコマンドが履歴エリアＲＥに記憶されているので、判断結果は「ＹＥＳ」となり、次のステップＳＭ２に進み、フラグＫＦを「１」にセットする。このフラグＫＦは、履歴記憶されたコマンドを、波形表示エリアＷＤＥ内にポイント表示された任意の点から繰り返し実行するか否かを表すフラグであり、「１」にセットされた場合に繰り返し実行する旨を表す。
【００４６】
アイコンＩＣ３をクリックした後に、図２４に図示するように、ユーザが波形表示エリアＷＤＥ内に新たな点Ｐ３をクリックしたとする。そうすると、図２２に図示した変形例のポインティング処理が実行され、その点Ｐ３をポイント表示した後、ステップＳＬ３の判断結果が「ＮＯ」となり、ステップＳＬ７に処理を進める。
ステップＳＬ７では、フラグＫＦが「１」であるか否かを判断する。この場合、先のユーザ操作（アイコンＩＣ３のクリック）によりフラグＫＦは「１」にセットされているので、判断結果は「ＹＥＳ」となり、ステップＳＬ８に進む。ステップＳＬ８では、レジスタレジスタｘ0，ｙ0に格納される点Ｐ２の位置と、レジスタＸ，Ｙに格納される点Ｐ３の位置との間を直線描画して連結する。この結果、点Ｐ３がポイント表示されると同時に、点Ｐ２と直線で結ばれる。
【００４７】
次いで、ステップＳＬ９では、レジスタＸ，Ｙの値をレジスタｘ0，ｙ0に格納して点Ｐ３を基点に更新する。この後、ステップＳＬ１０では、前述した実施例の繰り返し実行処理（図１６参照）を実行し、ＲＡＭ３の履歴エリアＲＥに格納されたコマンド、すなわち、図２４に図示した三角波形ＴＷを形成したコマンド群をすべて繰り返し実行する。
これにより、図２５に示すように、点Ｐ２と点Ｐ３とを直線で結んだ後に、点Ｐ３の位置から三角波形ＴＷと同一の繰り返し波形ＲＷが自動生成される。そして、繰り返し波形ＲＷが生成された後、ＣＰＵ１はステップＳＬ１１に進み、フラグＫＦをゼロリセットして本ルーチンを完了させる。このように、変形例によれば、波形エリアＷＤＥ内で繰り返し実行する位置を指定すると、最後に描画された位置と指定位置との間を直線補間した後、その指定位置から履歴として記憶したコマンドを繰り返し実行して波形形成し得るようになっている。
【００４８】
なお、前述した実施例および変形例では、アイコンＩＣ３のクリックに応じて、履歴エリアＲＥに記憶されたコマンドの全てを繰り返し実行するようにしたが、これに限らず、例えばアイコンＩＣ３がクリックされた場合、履歴エリアＲＥに記憶されたコマンドの全てをウインドウに表示し、このウインドウ中に表示されたコマンドの内から選択したものだけを繰り返し実行させたり、あるいはウインドウ中から選択したコマンドの繰り返し実行回数を指定して実行指示させる形態にすることも可能であり、そのようにすればより一層ユーザ操作を軽減させることが出来る。
【００４９】
また、前述した実施例では、アイコンＩＣ５をクリックした場合、直前に記憶した履歴を消去するようにしたが、これに限らず、例えばアイコンＩＣ５のクリックに応じて、履歴エリアＲＥに記憶されたコマンドの全てをウインドウに表示し、このウインドウ中に表示されたコマンドの内から選択したものだけを消去する態様としてもよい。加えて、本実施例では、アイコンＩＣ４をクリックした場合、履歴として記憶したコマンドを、波形表示エリアＷＤＥの表示範囲を超えるまで連続的に繰り返し実行させるようにしたが、これに限らず、例えばユーザが指定した位置まで連続的に繰り返し実行させるようにしてもよい。
【図面の簡単な説明】
【００５０】
【図１】本発明による一実施例の構成を示すブロック図である。
【図２】ＲＡＭ３のメモリ構成を示すメモリマップである。
【図３】エンベロープ形成画面ＥＫＧの一例を示す図である。
【図４】波形形成処理ルーチンの動作を示すフローチャートである。
【図５】イニシャライズ処理ルーチンの動作を示すフローチャートである。
【図６】履歴記録処理ルーチンの動作を示すフローチャートである。
【図７】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【図８】ポインティング処理ルーチンの動作を示すフローチャートである。
【図９】ポイント描画処理ルーチンの動作を示すフローチャートである。
【図１０】直線処理ルーチンの動作を示すフローチャートである。
【図１１】直線描画処理ルーチンの動作を示すフローチャートである。
【図１２】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【図１３】曲線処理ルーチンの動作を示すフローチャートである。
【図１４】曲線描画処理ルーチンの動作を示すフローチャートである。
【図１５】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【図１６】繰り返し実行処理ルーチンの動作を示すフローチャートである。
【図１７】繰り返し回数処理ルーチンの動作を示すフローチャートである。
【図１８】最後まで処理ルーチンの動作を示すフローチャートである。
【図１９】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【図２０】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【図２１】キャンセル処理ルーチンの動作を示すフローチャートである。
【図２２】変形例によるポインティング処理ルーチンの動作を示すフローチャートである。
【図２３】変形例による繰り返し実行処理ルーチンの動作を示すフローチャートである。
【図２４】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【図２５】ユーザ操作に対応したエンベロープ形成画面ＥＫＧの一例を示す図である。
【符号の説明】
【００５１】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
５  マウス
６  パネルスイッチ群
７  表示部
８  音源
９  サウンドシステム
【図１】
2007115278.tif 000003
【図２】
2007115278.tif 000004
【図３】
2007115278.tif 000005
【図４】
2007115278.tif 000006
【図５】
2007115278.tif 000007
【図６】
2007115278.tif 000008
【図７】
2007115278.tif 000009
【図８】
2007115278.tif 000010
【図９】
2007115278.tif 000011
【図１０】
2007115278.tif 000012
【図１１】
2007115278.tif 000013
【図１２】
2007115278.tif 000014
【図１３】
2007115278.tif 000015
【図１４】
2007115278.tif 000016
【図１５】
2007115278.tif 000017
【図１６】
2007115278.tif 000018
【図１７】
2007115278.tif 000019
【図１８】
2007115278.tif 000020
【図１９】
2007115278.tif 000021
【図２０】
2007115278.tif 000022
【図２１】
2007115278.tif 000023
【図２２】
2007115278.tif 000024
【図２３】
2007115278.tif 000025
【図２４】
2007115278.tif 000026
【図２５】
2007115278.tif 000027