(57)【要約】【課題】　その再生が適正に行われるように、シーケンスデータの発音タイミングを管理する。【解決手段】　電子楽器１００は、楽曲データを記憶したＲＡＭを有し、テレビ１１０の画面上に、イベントデータ、及びカーソル（図示せず）を表示させる。ユーザは、スイッチＳＷ６〜ＳＷ９を操作してカーソルを任意のイベントデータ上に移動させた後、スイッチＳＷ２またはＳＷ３をオンすることで、発音タイミングの変更を指示する。電子楽器１００は、ユーザによるシーケンスデータの発音タイミングの変更を監視し、それが属する小節外への発音タイミングの変更であった場合にはその変更を無効として禁止する。【選択図】　　　図１
2004046280.tif 000002
【特許請求の範囲】
【請求項１】
　指定範囲内に存在するシーケンスデータの発音開始タイミングを変更するクウォンタイズを行う方法であって、
　前記指定範囲として複数の小節にまたがる範囲が指定されたとき、前記小節を処理単位として、各小節毎に、前記シーケンスデータの発音開始タイミングを、それが属する小節の拍子に基づいて変更していく、
　ことを特徴とするシーケンスデータのクウォンタイズ方法。
【請求項２】
　シーケンスデータの発音開始タイミングを制御する装置において、
　前記シーケンスデータの発音開始タイミングを変更させる範囲を指定するための指定手段と、
　前記指定手段により、複数の小節にまたがる範囲が指定されたとき、前記小節を処理単位として、各小節毎に、前記シーケンスデータの発音開始タイミングを、それが属する小節の拍子に基づいて変更する制御手段と、
　を具備したことを特徴とするシーケンスデータのタイミング処理装置。
【請求項３】
　シーケンスデータの発音開始タイミングを制御する装置において、
　前記シーケンスデータの発音開始タイミングを指定するための指定手段と、
　前記指定手段により指定された前記シーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内であるか否か判定する判定手段と、
　前記シーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内ではないと前記判定手段が判定したとき、前記指定手段による指定を無効とする制御手段と、
　を具備したことを特徴とするシーケンスデータのタイミング処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、シーケンスデータにより発音される楽音の発音タイミングを制御するための技術に関する。
【背景技術】
【０００２】
　近年、異なる装置間で音楽情報を伝達するための規格であるＭＩＤＩ（Musical Instrument Digital Interface）規格が制定されたことから、自動演奏の分野は大きな発展を遂げている。自動演奏を行うシーケンサー装置（以降、単にシーケンサーと記す）も数多く商品化され、また、その機能であるシーケンサー機能も様々な装置に搭載されている。
【０００３】
　シーケンサー機能としては、楽曲データ（シーケンスデータ）の記録／編集／再生がその主な機能である。このシーケンサー機能を搭載することで、例えば外部機器から送られた楽曲データを記録し、この記録した楽曲データを任意にアレンジし、このアレンジした楽曲データを再生させることができる。
【０００４】
　楽曲データ（シーケンスデータ）の編集機能により、音色、エフェクトといった楽音の発音形態に関わる音源パラメータの設定内容の変更を含め、楽音の音高やその発音タイミングの変更、発音させる楽音の追加等、様々なことを行うことができる。上記発音タイミングは、発音開始タイミング、及びその開始タイミングから発音が持続する期間を含めた意味である。発音開始タイミングの変更においては、そのタイミングのズレを自動的に修正するクウォンタイズという機能も広く搭載されている。
【０００５】
　上記のように、ユーザは編集機能を用いて楽曲データを自由に編集することができる。しかし、以下のような編集を行った場合、楽曲データが適正に再生されないということが発生していた。
【０００６】
　最初の例としては、例えば小節の拍子を変更した後、クウォンタイズ機能により発音開始タイミングのズレを修正させた場合である。
　クウォンタイズは、指定された範囲を均等割し、その範囲内で発音される各音符の発音開始タイミングを、均等割したタイミングにそれぞれ変更することを基本としている。このため、指定した範囲内の小節の拍子を変更すると、それが全体のクウォンタイズに影響する。これにより、例えば本来は小節の先頭で発音させるべき音符が、その小節の前の小節で発音されたり、或いは同じ小節内でも他のところで発音されたりする。このように、ユーザが意図していない形でクウォンタイズされることがあるという問題点があった。
【０００７】
　次の例は、音符の発音開始タイミングを、それが属している小節外としてしまった場合である。
　シーケンスデータの時間管理としては、前の音符との間隔で各音符の発音開始タイミングを管理するデルタタイム管理方法と、小節内で発音される音符の発音開始タイミングを、その小節の先頭からの間隔により管理する相対時間管理方法が広く用いられている。後者の方法では、音符を消去してもそれが他の音符に影響しないことから、前者の方法と比較すると、シーケンスデータの編集が容易であるという利点がある。
【０００８】
　シーケンサー機能により、上記相対時間管理方法で作成されたシーケンスデータを編集する場合、ユーザは小節内の音符の発音開始タイミングを任意に変更することができた。しかし、そのシーケンスデータを再生する自動演奏装置は、基本的に、各音符の発音を小節毎に管理することから、音符の発音開始タイミングをそれが属する小節の外に変更してしまうと、その音符が発音されないといった発音異常が発生することがあった。また、その変更を行ったことで、シーケンスデータが正常に表示されなくなることもあった。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
　本発明の課題は、その再生が適正に行われるように、シーケンスデータの発音タイミングを管理することにある。
【課題を解決するための手段】
【００１０】
　本発明のシーケンスデータのクウォンタイズ方法は、指定範囲内に存在するシーケンスデータの発音開始タイミングを変更することを前提とし、指定範囲として複数の小節にまたがる範囲が指定されたとき、小節を処理単位として、各小節毎に、シーケンスデータの発音開始タイミングを、それが属する小節の拍子に基づいて変更していく、ことでクウォンタイズを行う。
【００１１】
　本発明の第１の態様のシーケンスデータのタイミング処理装置は、シーケンスデータの発音開始タイミングを制御することを前提とし、シーケンスデータの発音開始タイミングを変更させる範囲を指定するための指定手段と、指定手段により、複数の小節にまたがる範囲が指定されたとき、小節を処理単位として、各小節毎に、シーケンスデータの発音開始タイミングを、それが属する小節の拍子に基づいて変更する制御手段と、を具備する。
【００１２】
　上記の発明においては、小節を処理単位としたことで、その小節の演奏時間等を変更しても、その変更が他の小節に影響することなく、クウォンタイズが行われる。
【００１３】
　本発明の第２の態様のシーケンスデータのタイミング処理装置は、シーケンスデータの発音開始タイミングを制御することを前提とし、シーケンスデータの発音開始タイミングを指定するための指定手段と、指定手段により指定されたシーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内であるか否か判定する判定手段と、シーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内ではないと判定手段が判定したとき、指定手段による指定を無効とする制御手段と、を具備する。
【００１４】
　これにより、シーケンスデータの発音開始タイミングに対する変更において、それが属する小節外となる変更が禁止され、ある小節に属しているシーケンスデータは、その小節内で発音を確実に開始することになる。
【発明の効果】
【００１５】
　本発明のシーケンスデータのクウォンタイズ方法、及びタイミング処理装置は、指定範囲として複数の小節にまたがる範囲が指定されたとき、小節を処理単位として、各小節毎に、シーケンスデータの発音開始タイミングを、それが属する小節の拍子に基づいて変更する。このため、その小節の演奏時間等を変更しても、その変更が他の小節のクウォンタイズに影響することがなくなり、ユーザは意図したクウォンタイズを容易にかけることができる。
【００１６】
　また、本発明のシーケンスデータのタイミング処理装置は、ユーザによるシーケンスデータの発音開始タイミングの変更を監視し、それが属する小節外への発音開始タイミングの変更であった場合にはその変更を無効として禁止するため、シーケンスデータの発音開始タイミングを常に適正な状態に維持しておくことができる。
【発明を実施するための最良の形態】
【００１７】
　以下、本発明を適用した実施の形態について、図面を参照しながら詳細に説明する。
【００１８】
　図１は、第１の実施の形態が適用されたシステムの外観を示す図である。第１の実施の形態は、電子楽器１００として実現されている。
　電子楽器１００は、発音させる楽音の指定に用いられる鍵盤１０１と、図示しているスイッチＳＷ１〜ＳＷ９、及び特には図示していない他の複数のスイッチからなるスイッチ群１０２とを備えている。この電子楽器１００は、マルチ音源として動作する機能、シーケンサー機能等を備えた、ＧＭ（ジェネラルＭＩＤＩ）対応機種である。
【００１９】
　この電子楽器１００には、テレビ１１０が接続されている。電子楽器１００は、テレビ１１０の画面上に、音符データ（イベントデータ）や、現在設定されている音源パラメータ等の表示を行う。なお、ユーザは、テレビ１１０に表示させる内容を、スイッチ群１０２の所定のスイッチに対する操作によって指定することができる。
【００２０】
　電子楽器１００には、シーケンサー等の外部機器と接続するための端子が設けられている。外部機器とは、例えばＭＩＤＩデータで音楽情報をやりとりする。電子楽器１００は、例えば接続されたシーケンサーからＭＩＤＩデータが送られてくると、そのＭＩＤＩデータを解析し、その解析結果に従って楽音の発音や、音源パラメータの設定等を行うとともに、そのＭＩＤＩデータの内容をテレビ１１０に表示させる処理等を行う。
【００２１】
　図２は、上記電子楽器１００の構成のブロック図である。
　図２に示すように、この電子楽器１００は、楽器（及びシステム）全体の制御を行うＣＰＵ２０１と、各種プログラムや制御用データを記憶したＲＯＭ２０２と、主にＣＰＵ２０１がワーク領域として用いるＲＡＭ２０３と、上述した鍵盤１０１、及びスイッチ群１０２と、テレビ１１０の画面上に画像を表示させるための画像データを出力する画像データ出力部２０４と、ＣＰＵ２０１から送られた発音コマンドに従って楽音を発音するサウンドシステム２０５と、外部機器とのＭＩＤＩデータの授受を行うＭＩＤＩインターフェイス２０６とを備えて構成されている。
【００２２】
　上記の構成において、その概略動作を説明する。
　ＣＰＵ２０１は、ＲＯＭ２０２に記憶されている制御プログラムに基づいて、楽器１００全体の動作を制御し、これにより、図１に示すシステム全体の動作を制御する。
【００２３】
　ユーザが鍵盤１０１を操作すると、ＣＰＵ２０１は、操作された鍵を特定するとともに、その鍵が操作されたときの速さ（ベロシティ）を求めて、ユーザの操作内容に応じて発音コマンドを生成し、これをサウンドシステム２０５に出力する。
【００２４】
　このサウンドシステム２０５は、特には図示しないが、例えば各種の楽音波形データを格納した波形ＲＯＭ、この波形ＲＯＭから波形データを読み出す音源部、音源部が読み出した波形データに音響効果等を付加するエフェクタ、エフェクタから出力されたデジタルの波形データをＤ／Ａ変換し、アナログの波形（楽音）信号を出力するＤ／Ａコンバータ、Ｄ／Ａコンバータが出力した波形信号により楽音を発音するスピーカからなる。ＣＰＵ２０１から入力した発音コマンドに従って楽音を発音することにより、ユーザが鍵盤１０１に対して行った操作に応じて楽音が発音されることになる。
【００２５】
　ＣＰＵ２０１は、このサウンドシステム２０５に発音コマンドを出力する他に、発音される楽音を特徴づける音源パラメータの設定を行う。音源パラメータの設定は、ユーザがスイッチ群１０２の所定のスイッチを操作したとき、或いは外部機器から音響パラメータを指定するＭＩＤＩデータをＭＩＤＩインターフェイス２０６が受け取ったときに行う。なお、音源パラメータとは、波形ＲＯＭから読み出す波形データ（音色に相当する）の種類、エフェクタが付加する音響効果の種類、及びその深さ、ボリューム、パン等のことである。
【００２６】
　ＭＩＤＩインターフェイス２０６がＭＩＤＩデータを受け取った場合、ＣＰＵ１０２は、そのＭＩＤＩデータの内容に従って発音コマンドの生成、及びそれのサウンドシステム２０５への出力、音響パラメータの設定の他に、ユーザの指定に応じて、そのＭＩＤＩデータの内容のテレビ１１０への表示や、ＭＩＤＩデータのＲＡＭ２０３への記録を行う。
【００２７】
　テレビ１１０への画像の表示は、以下のようにして行われる。
　例えば、上記したように、ＭＩＤＩインターフェイス２０６が受信したＭＩＤＩデータを表示させる場合、ＣＰＵ２０１は、このＭＩＤＩデータを解析し、その内容を表示させるために必要な画像データを特定する。その後、特定した画像データをＲＯＭ２０２から読み出し、必要があればこれを加工して画像データ出力部２０４に出力する。また、ＣＰＵ２０１は、この画像データの他に、その画像データを表示させる位置を指定する座標データを画像データ出力部２０４に出力する。
【００２８】
　画像データ出力部２０４は、上記座標データが示す表示位置に画像データを表示させるように、テレビ１１０に画像データを出力する。この画像データは、テレビ１１０の画面表示の方式に対応させて、１操作ライン毎の、ＮＴＳＣ方式に基づくビデオコンポジット信号の形でテレビ１１０に出力する。これにより、テレビ１１０の表示画面上にＭＩＤＩデータが予め設定された表示形式で表示される。
【００２９】
　一方、受信したＭＩＤＩデータのＲＡＭ２０３への記録は以下のようにして行われる。
　ＲＡＭ２０３には、楽曲データを記録する記録領域（楽曲データ記憶領域）が割り当てられ、この記録領域は、複数の記録対象トラックに分割されている。記録対象トラックは、ユーザが予めスイッチ群１０２を操作して指定する。ＭＩＤＩデータのＲＡＭ２０３への記録は、ユーザが指定したＲＡＭ２０３の楽曲データ記録領域上の記録対象トラックに、ＭＩＤＩデータにおいてチャンネルメッセージとして送られるイベントデータを、その入力タイミングとともに順次書き込むことで行われる。
【００３０】
　また、ＲＡＭ２０３に記録された楽曲（イベント）データは、編集することができる。ＣＰＵ２０１は、ユーザがスイッチ群１０２において指定した内容に従って、ＲＡＭ２０３の楽曲データ記録領域上の所望のトラックに記録されている楽曲データ（イベントデータ）を読み出して、例えば図７に示すように、そのデータを演奏順に表形式でテレビ１１０に表示させる。ユーザは、スイッチ群１０２を用いて、テレビ１１０に表示されている楽曲（イベント）データに対して、楽曲（イベント）データの挿入、削除、移動、複写などを行うことができる。
【００３１】
　上記のようにして、ユーザが編集した結果、及び音響パラメータを変更させた結果は、ＲＡＭ２０３の楽曲データ記録領域の楽曲データの内容、或いは受信中のＭＩＤＩデータによる自動演奏に反映される。
【００３２】
　ＲＡＭ２０３の楽曲データ記録領域の楽曲データの再生は、ＣＰＵ２０１が、その記憶領域上の再生対象トラックからイベントデータを順次読み出し、読み出したイベントデータで楽音を発音させる発音コマンドを作成して、それをサウンドシステム２０５に出力することで行われる。これにより、ＭＩＤＩデータの受信時と同様に、自動演奏が行われる。
【００３３】
　以上が電子楽器１００の構成、及び各部の概略動作である。次に図３〜図６を参照して、ＲＡＭ２０３に記憶される楽曲データのデータフォーマットについて説明する。
【００３４】
　第１の実施の形態では、楽曲データは、各小節のイベントデータと、連続する１２８小節分のイベントデータを単位とする小節ブロックと、最大で８個の小節ブロックを含むトラック、１６トラックを単位とする楽曲という各単位を用いて、階層的に管理される点が特徴である。
【００３５】
　まず、図３に示されるトラック使用状況データＳＮＧ＿ＴＲＫ＿ＵＳＥは、１６ビットのデータであって、各楽曲毎に設定される。各データには、トラック０〜１５の各トラックが楽曲の自動演奏において使用されるか否かが、“１”又は“０”のフラグによって設定される。このデータの、最下位ビットがトラック０に対応し、最上位ビットがトラック１５に対応する。
【００３６】
　図４(a) に示される配列ＳＮＧ＿ＢＡＲ＿ＴＢＬには、楽曲毎及び各楽曲内のトラック毎に、第０小節〜第１０２３小節の１０２４小節を１２８小節ずつ分割して得られる８つの小節ブロックのそれぞれに対応する、図４(b) に示される配列ＳＮＧ＿ＢＡＲ＿ＰＴＲ内の１２８個ずつの配列データ群の各先頭要素情報が記憶される。配列ＳＮＧ＿ＢＡＲ＿ＰＴＲに定義可能な小節ブロックの数は、例えば最大で３２である。その場合、配列ＳＮＧ＿ＢＡＲ＿ＴＢＬには、小節ブロック先頭要素情報として、０ｘ００〜０ｘ１ｆ（１０進数の０〜３１に対応）の何れかの値が記憶される。この小節ブロック先頭要素情報の値を１２８倍して得られる値が、その小節ブロックに対応する配列ＳＮＧ＿ＢＡＲ＿ＰＴＲ内の１２８個の配列データ群の先頭要素番号となる。但し、未使用のトラックのそれぞれの小節ブロックの先頭要素情報及び使用トラック内の未使用の小節ブロックの先頭要素情報としては、値０ｘｆｆが設定される。
【００３７】
　図４(b) に示される配列ＳＮＧ＿ＢＡＲ＿ＰＴＲには、上述の小節ブロック毎に、各小節ブロック内の１２８小節のそれぞれに対応する、図４(c) に示される配列ＳＮＧ＿ＳＯＮＧ内のイベントデータ群の各先頭要素番号が記憶される。配列ＳＮＧ＿ＳＯＮＧに定義可能なイベントデータの数は、例えば最大で１６３８４イベントである。その場合、配列ＳＮＧ＿ＢＡＲ＿ＰＴＲには、各小節に対応するイベントデータ群の先頭要素番号として、０ｘ００００〜０ｘ４０００（１０進数の０〜１６３８３に対応）の何れかの値が記憶される。但し、全休符の小節に対応する先頭要素番号としては、値０ｘｆｆｆｆが設定される。
【００３８】
　図４(c) に示される配列ＳＮＧ＿ＳＯＮＧには、上述したように小節単位で連続したイベントデータが記憶される。１つのイベントデータは、後述するように３ワードのデータとして構成される。但し、配列ＳＮＧ＿ＳＯＮＧは、５１２個のイベントデータを単位とする３２個のイベントデータブロック（１６３８４イベントデータ分）に分割される。ここで、１つの小節内のイベントデータ群が２つのイベントデータブロックに分割される場合には、第１番目のイベントデータブロックの末尾に後述するジャンプイベントデータが記憶され、また、第２番目のイベントデータブロックの先頭に後述するジャンプソースイベントデータが記憶される。
【００３９】
　図５は、図４(c) の配列ＳＮＧ＿ＳＯＮＧに記憶されるイベントデータ群を構成するノートイベントデータとコントロールイベントデータのデータフォーマットを示す図であり、各イベントデータは３ワードのデータとして構成される。
【００４０】
　図５(a) に示されるノートイベントデータは、楽譜の音符に対応するものであり、単音の発音処理に必要な複数の情報を含む。即ち、ノートイベントデータの第１ワードは、上位７ビットが音高番号、下位７ビットがベロシティを表わす。ノートイベントデータの第２ワードは、そのノートイベントデータに対応する音符について、それが含まれる小節の先頭からの時間位置を、適当な単位（第１の実施の形態では４８０分の１拍のクロック）でカウントした値である。そして、ノートイベントデータの第３ワードは、そのノートイベントデータに対応する音符の発音時間を前述の適当な単位でカウントしたゲートタイムである。
【００４１】
　図５(b) に示されるコントロールイベントデータは、楽曲の再生を制御するために必要な、上述のノートイベントデータ以外のイベントデータであり、第１ワードの最上位ビットが１であることによって、ノートイベントデータと区別される。このコントロールイベントデータは、更に、メタイベントデータ群、ジャンプイベントデータ群、及びコマンドイベントデータ群の３つに分類される。メタイベントデータ群は、楽曲全体のテンポ、拍子、調に関する情報を含む。ジャンプイベントデータ群は、図６で後述するように、トラック終了、小節終了、次処理データへのジャンプ等の、イベントデータの位置制御に関する情報を含む。更に、コマンドイベントデータ群は、音量、プログラムチェンジ（音色）、ベンダー等の、楽音に対する修飾的な効果を付加するための情報を含む。コントロールイベントデータの第１ワードの下位７ビットはコントロールコードを示し、このコードによって制御内容が決定される。例えば、メタイベントデータ群のテンポイベントデータに対応する第１ワードの値は０ｘｆｆ００、ジャンプイベントデータ群の小節終了イベントデータに対応する第１ワードの値は０ｘｆｆ１１（図６(b) 参照）、コマンドイベントデータ群のプログラムチェンジイベントデータに対応する第１ワードの値は０ｘｆｆ２０となる。コントロールイベントデータの第２ワードは、そのコントロールイベントデータに対応する制御が実行される小節の先頭からの時間位置を、前述した適当な単位でカウントした値である。コントロールイベントデータの第３ワードには、コントロールコード以外に必要なコントロール値が格納される。例えばメタイベントデータ群のテンポイベントデータの第３ワードにはテンポ番号、ジャンプイベントデータ群のジャンプイベントデータの第３ワードには配列ＳＮＧ＿ＳＯＮＧ（図４(c) ）内でのジャンプ先のイベントデータの要素番号、コマンドイベントデータ群のプログラムチェンジイベントデータの第３ワードには音色番号が格納される。
【００４２】
　次に、上述したコントロールイベントデータのうちのジャンプイベントデータ群を構成する４種類のイベントデータについて説明する。図６は、これら４種類のイベントデータのそれぞれのデータフォーマットを示す図である。
【００４３】
　まず、図６(a) のトラック終了イベントデータは、各トラックのイベントデータ群の終了位置にそのトラックの最終のイベントデータとして挿入される。
　次に、図６(b) の小節終了イベントデータは、各小節のイベントデータ群の終了位置にその小節の最終イベントデータとして挿入される。
【００４４】
　更に、図６(c) のジャンプイベントデータと図６(d) のジャンプソースイベントデータは、図４(c) の配列ＳＮＧ＿ＳＯＮＧにおいて、１つの小節内のイベントデータ群が５１２イベントずつの２つのイベントデータブロックに分割される場合に、それぞれ、第１番目のイベントデータブロックの末尾と第２番目のイベントデータブロックの先頭に記憶される。この場合、ジャンプイベントデータの第３ワードには配列ＳＮＧ＿ＳＯＮＧ内でのジャンプ先のイベントデータの要素番号が格納され、ジャンプソースイベントデータの第３ワードには同じくジャンプ元のイベントデータの要素番号が格納される。
【００４５】
　なお、図６(a) 〜(d) に示される４種類のイベントデータについて、イベントデータの編集処理及び再生処理においては、第１ワードにより現在処理イベントデータがジャンプイベントデータ群に属するイベントであることが認識された時点で、各々のイベントデータに対応した処理が即座に実行される。従って、これら各イベントデータの第２ワードは任意の値でよい。また、トラック終了イベントデータと小節終了イベントデータの第３ワードも任意の値でよい。
【００４６】
　以上説明した図３〜図６の楽曲データのデータフォーマットが採用されることにより、自動演奏に関する制御を非常に効率的に実行することが可能となる。なお、ここでは、自動演奏全体のデータを主に意図する場合に楽曲データの表現を用いており、この楽曲データがシーケンスデータに対応する。
【００４７】
　上記データフォーマットでＲＡＭ２０３に記録された楽曲データに対し、ユーザはクウォンタイズを行うことができる。このクウォンタイズは、指定された範囲内のイベントデータの発音開始タイミングを自動的に変更するものである。
【００４８】
　クウォンタイズする範囲の指定は、以下のようにして行う。図７を参照して説明する。図７は、クウォンタイズ処理の範囲指定方法を説明する図である。テレビ１１０に表示されているイベントデータに対して実際に範囲を指定し、その後、クウォンタイズを行った結果までの様子を表している。
【００４９】
　先ず、図７（ａ）に表示されているイベントデータの見方について、最上段、及び最下段の行のイベントデータを例にとり、その順序で説明する。
　最上段に表示されているイベントデータは、基本的に３つの項目からなる。具体的には、“０００１／１／０００”、“ＰＲＧＣＨＧ ００１”、“ＰＩＡＮＯ”の３項目である。
【００５０】
　最初の項目“０００１／１／０００”は、そのイベントデータによる処理が行われる開始タイミングを示すタイミング項目である。スラッシュで区切られた各数値は、左から、小節番号、拍数、その拍数内におけるタイミング（ステップ数）を表している。第１の実施の形態では、１拍の分解能を４８０クロックとしている。そのタイミングは、この分解能を基に表現された値である。上記ステップ数は、クロック数で表現したその拍数内におけるタイミングを示している。
【００５１】
　次の項目“ＰＲＧＣＨＧ ００１”は、そのイベントデータのコマンドの種類を示すコマンド項目である。この場合は、音色の変更を指定するコントロールイベントデータであり、音色番号が“００１”の音色を指定したことを表している。
【００５２】
　最後の項目“ＰＩＡＮＯ”は、音色番号“００１”に対応する音色の種類を示すパラメータ項目である。この場合、音色番号“００１”はピアノであることを表している。
【００５３】
　最下段に表示されているイベントデータは、そのデータが以下の内容であることを示している。その最初の項目“０００１／３／１２０”については、上記最上段のそれと見方は同じである。このため、それに続く項目の意味について説明する。
【００５４】
　最初の項目に続く２番目の項目“ＮＯＴＥ”は、そのイベントデータのコマンドの種類が発音コマンドであることを示す。以下、３番目の項目“Ｇ４”はその音高、４番目の項目“８０”はベロシティ、最後の項目“７２０”はゲートタイムをそれぞれ示している。
【００５５】
　上記のように表現されているイベントデータに対する範囲の指定、及びクウォンタイズ処理の開始は、カーソルキーであるスイッチＳＷ６〜ＳＷ９、及びスイッチＳＷ１を用いて行う。
【００５６】
　具体的には、先ず、スイッチＳＷ６〜ＳＷ９を用いて、画面上に枠で表示されているカーソルを所望する範囲の先頭に移動させた後、スイッチＳＷ１を操作する。これにより、範囲の先頭位置が指定される。図７（ａ）は初期状態であり、図７（ｂ）は、図７（ａ）の初期状態からカーソルを移動させて、範囲の先頭位置を指定したときの状態を示している。
【００５７】
　範囲の先頭位置を指定した後は、次に範囲の終了位置を指定する。これは、範囲の先頭位置の指定と同様の操作で指定する。図７（ｃ）は、図７（ｂ）の状態からカーソルを移動させて、範囲の終了位置を指定した状態を示している。
【００５８】
　このようにして先頭位置と終了位置を指定することで、クウォンタイズする範囲が確定する。その後、再度スイッチＳＷ１を操作すると、指定された範囲内を処理対象としたクウォンタイズ処理が行われる。図７（ｄ）は、クウォンタイズ処理後の状態を示している。
【００５９】
　次に、上記ＣＰＵ２０１がＲＯＭ２０２に記憶された制御プログラムを実行する動作として実現される各種処理について、図８〜図１０の動作フローチャート、及び図１１の説明図を参照して説明する。
【００６０】
　最初に、全体処理について、図８に示すその動作フローチャートを参照して説明する。
　特には図示しない電源スイッチをユーザが投入（オン）すると、先ず、ステップ８０１において、ＣＰＵ２０１内のレジスタ、及びＲＡＭ２０３のワーク領域のクリア、及び初期設定といったイニシャル処理を行う。このイニシャル処理が終了すると、ステップ８０２の処理に移行する。
【００６１】
　ステップ８０２では、ユーザがスイッチ群１０２に行った操作内容に応じるための処理であるスイッチ処理を行う。続くステップ８０３において、ユーザが鍵盤１０１に行った操作内容に応じて楽音を発音させる鍵盤処理といったその他の処理を実行し、その後、ステップ８０２の処理に戻る。
【００６２】
　このように、ステップ８０２〜８０３の処理を繰り返すことにより、ユーザがスイッチ群１０２、鍵盤１０１等に対して行った操作に対応して、電子楽器１００が動作する。
【００６３】
　次に、上記ステップ８０２のスイッチ処理について、図９に示すその動作フローチャートを参照して詳細に説明する。
　先ず、ステップ９０１では、スイッチＳＷ１がオンされたか否か判定する。スイッチＳＷ１は、上述したように、イベントデータに対するクウォンタイズを指示するためのスイッチである。ユーザがこのスイッチＳＷ１を操作した場合、その判定はＹＥＳとなってステップ９０２の処理に移行する。そうでない場合、その判定はＮＯとなってステップ９０７の処理に移行する。
【００６４】
　ステップ９０２では、クウォンタイズ処理フラグの値の判定を行う。ステップ９０２に続く処理は、クウォンタイズ処理フラグの値に応じて行われる。
　図７を参照して説明したように、クウォンタイズ処理する範囲指定、及びその処理の実行は、スイッチＳＷ１を用いて行われる。上記クウォンタイズ処理フラグは、スイッチＳＷ１に対する操作に応じて、範囲指定からクウォンタイズ処理の実行までの進行を管理するための変数である。この変数は、ＣＰＵ２０１内のレジスタ、或いはＲＡＭ２０３に保持される。
【００６５】
　ステップ９０２において、クウォンタイズ処理フラグの値は０と判定した場合、次にステップ９０３の処理が実行される。
　ステップ９０３では、クウォンタイズ範囲の先頭位置が指定されたとして、カーソルが表示されているイベントデータをその先頭位置として登録する。また、この先頭位置の登録の他に、クウォンタイズ処理フラグのインクリメント（＝１）を行う。その後、ステップ９０６の処理に移行する。
【００６６】
　ステップ９０２において、クウォンタイズ処理フラグの値は１と判定した場合、次にステップ９０４の処理が実行される。
　ステップ９０４では、クウォンタイズ範囲の終了位置が指定されたとして、カーソルが表示されているイベントデータをその終了位置として登録する。また、この終了位置の登録の他に、クウォンタイズ処理フラグのインクリメント（＝２）を行う。その後、ステップ９０６の処理に移行する。
【００６７】
　ステップ９０２において、クウォンタイズ処理フラグの値は２と判定した場合、次にステップ９０５の処理が実行される。
　ステップ９０５では、ステップ９０３、及び９０４の処理が実行されたことで確定した範囲のイベントデータを対象として、クウォンタイズ処理を実行する。このクウォンタイズ処理が実行されることで、クウォンタイズ処理フラグはリセット、即ちクウォンタイズ処理フラグには０が代入される。その後、ステップ９０６の処理に移行する。このクウォンタイズ処理の詳細については後述する。
【００６８】
　ステップ６０３では、スイッチ群１０２の他のスイッチ対してユーザが行った操作に応じたその他の処理を実行する。このその他の処理が終了すると、ここで一連の処理を終了し、その後、図８のステップ８０３のその他の処理が実行される。
【００６９】
　上記ステップ９０１において、スイッチＳＷ１がオンされなかったと判定した場合、ステップ９０７の処理に移行する。
　ステップ９０７では、スイッチＳＷ２がオンされたか否か判定する。このスイッチＳＷ２は、クウォンタイズ処理への進行をキャンセル、即ち最初の状態に戻すことを指示するためのスイッチである。ユーザがスイッチＳＷ２を操作した場合、その判定はＹＥＳとなってステップ９０８の処理に移行する。そうでない場合、その判定はＮＯとなってステップ９０６の処理に移行する。
【００７０】
　ステップ９０８では、それまでの進行を全て無効とするためのキャンセル処理を行う。このキャンセル処理が実行されることで、それまでに先頭位置、及び終了位置が指定されていた場合にはそれらの情報が消去され、クウォンタイズ処理フラグには０が代入される。この処理が終了すると、ステップ９０６の処理に移行する。
【００７１】
　図１０は、上記ステップ９０５のクウォンタイズ処理の動作フローチャートである。同図を参照して、その処理動作を詳細に説明する。
　処理動作を説明する前に、第１の実施の形態によるクウォンタイズの処理方法について、図１１を参照して説明する。図１１は、各拍子における１小節の時間的長さを示す図である。時間的長さは、第１の実施の形態における分解能、即ち１拍あたりのクロック数を４８０として表現している。なお、拍子は、小節のクロック数により定義（設定）されるパラメータである。
【００７２】
　図１１では、上段から、４／４拍子、１７／１６拍子、９／８拍子の各拍子におけるその時間的長さをクロック数で表現している。１拍（４分音符）あたりのクロック数、即ち分解能は、第１の実施の形態にあわせて４８０としている。従って、例えば４／４拍子を例にとれば、その小節のクロック数は１９２０（＝４８０×４）となる。実際上では、小節の先頭のクロック数の値を０とすることから、４／４拍子の１小節内の時間的位置は、０〜１９１９までのクロック数で表現される。同じ理由により、１拍目とは０〜４７９までのクロック数であり、４８０は２拍目の先頭となる。以下同様であり、クロック数が１９２０のときは次の小節の先頭となる。
【００７３】
　なお、他の拍子においては、１７／１６拍子のクロック数は２０４０（＝４８０×４×１７／１６）、９／８拍子のクロック数は２１６０（＝４８０×４×９／８）である。
【００７４】
　従来、クウォンタイズ処理は、指定された範囲を均等割し、その均等割したタイミングに、イベントデータの発音開始タイミングを変更することで、そのタイミングのズレを修正することを基本としている。しかし、第１の実施の形態では、たとえ複数の小節を含む範囲が指定されたとしても、各小節毎に分けて、その小節内のイベントデータに対するクウォンタイズを行うようにしている。
【００７５】
　小節毎のクウォンタイズ処理は、以下のようにして行われる。
　例えば４／４拍子で４分音符単位のクウォンタイズ処理を行う場合、小節内のイベントデータの発音開始タイミングは、図１１において縦線で示す何れかのタイミングに合わせられる。同様に、１７／１６拍子、９／８拍子の各拍子の小節に対し、１拍の単位となる音符でクウォンタイズ処理を行った場合、その小節のイベントデータの発音開始タイミングは、それぞれにおいて縦線で示す何れかのタイミングに修正される。
【００７６】
　発音開始タイミングの修正は、例えば隣り合う縦線で示す修正後のタイミングの間に位置している発音開始タイミングを、その何れかのタイミングに合わせるかを示す比率（オフセット）に従って行われる。例えばそのオフセットを５０パーセントとした場合、４／４拍子の小節において、３拍目（クロック数が１４４０）と４拍目（クロック数が１９１９）の間に位置している発音タイミングは、クロック数１６８０（＝１９２０−４８０／２）を境として、それよりもクロック数が小さければそのクロック数を１４４０に、反対にそれよりも大きければそのクロック数を１９２０、即ち次小節の先頭にそれぞれ修正される。
【００７７】
　このようなクウォンタイズ処理を、各小節毎に独立させて行うことにより、クウォンタイズ処理される範囲内のある小節の拍子（クロック数）を変更させても、その変更が他の小節に影響することが回避される。このため、小節の拍子（クロック数）を変更したことで、イベントデータの発音開始タイミングがユーザが意図したものと大きくかけ離れるということがなくなり、ユーザは意図したクウォンタイズを容易にかけることができるようになる。
【００７８】
　図１０の説明に戻り、第１の実施の形態によるクウォンタイズ処理について、その動作フローチャートを参照して説明する。
　先ず、ステップ１００１では、クウォンタイズ処理の実行のために、ＲＡＭ２０３のワーク領域の確保といったイニシャル処理を実行する。このイニシャル処理が終了すると、ステップ１００２の処理に移行する。
【００７９】
　ステップ１００２では、現在小節が示す小節のクロック数の調査を行う。この現在小節は、ＣＰＵ２０１内のレジスタ、或いはＲＡＭ２０３に保持される変数であり、現在において処理すべき小節を示す値が代入される。ステップ１００１のイニシャル処理では、この現在小節に、図９のステップ９０３で登録された先頭位置の小節を示す値を代入している。
【００８０】
　なお、小節のクロック数は、次小節の先頭のイベントデータに、第２ワードとして格納されている（図５参照）。その次小節の先頭のイベントデータは、図４に示すように、配列ＳＮＧ＿ＢＡＲ＿ＴＢＬから配列ＳＮＧ＿ＢＡＲ＿ＰＴＲのクウォンタイズ処理するトラックの先頭要素番号が格納されている領域を特定し、その特定した配列ＳＮＧ＿ＢＡＲ＿ＰＴＲの領域内の先頭要素番号を順次検索していくことで、配列ＳＮＧ＿ＳＯＮＧ内のそのデータにアクセスする。
【００８１】
　ステップ１００２で小節のクロック数を得ると、ステップ１００３の処理に移行する。このステップ１００３では、次小節に移動させるべき発音開始タイミングのクロック数を調査する。
【００８２】
　この調査により、例えば小節の拍子が４／４拍子で、オフセットが５０パーセントとした場合には、図１１に示すように、次小節に移動させるべきタイミングとしてクロック数１６８０が算出されることになる。
【００８３】
　ステップ１００３に続くステップ１００４では、現在小節が示す小節にイベントデータがないか否か判定する。その小節内にイベントデータがなかった場合、その判定はＹＥＳとなってステップ１０１１の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１００５の処理に移行する。
【００８４】
　ステップ１００５では、その小節の先頭イベントデータを設定する。このときには、図１１を参照して説明したように、４分音符等のクウォンタイズにおける単位、及びオフセットに基づき、それの発音開始タイミングが修正される。
【００８５】
　ステップ１００５に続くステップ１００６では、前に処理したイベントデータが小節の最後のイベントデータか否か判定する。処理対象の小節内のイベントデータを全て処理した場合、その判定はＹＥＳとなってステップ１０１１の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１００７の処理に移行する。
【００８６】
　ステップ１００７では、次に処理するイベントデータは次小節に移動させるべきイベントデータであるか否か判定する。この判定は、ステップ１００３の調査で得たクロック数と、そのイベントデータの小節先頭からのクロック数（図５参照）とを比較することで行われる。そのイベントデータの小節先頭からのクロック数が調査で得たクロック数以上であった場合、その判定はＹＥＳとなってステップ１００９の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１００８の処理に移行する。
【００８７】
　ステップ１００８では、それが属する小節内でそのイベントデータの発音開始タイミング、即ち小節先頭からのクロック数の変更を行う。他方のステップ１００９では、次小節の先頭タイミングとなるように、それの小節先頭からのクロック数を変更する。このステップ１００９の処理では、必要に応じて、図４に示す配列ＳＮＧ＿ＢＡＲ＿ＰＴＲ内のデータの書き換えも行われる。
【００８８】
　ステップ１００８、或いは１００９の処理が終了すると、ステップ１０１０の処理に移行する。このステップ１０１０では、現在小節が示す小節内の次のイベントデータの読み出しを行う。この読み出しが終了した後、ステップ１００６の処理に戻る。
【００８９】
　上記ステップ１００６〜１０１０の処理ループを繰り返し行うことで、現在小節が示す小節内の各イベントデータは、順次処理され、その発音開始タイミング、即ち小節先頭からのクロック数が必要に応じて変更される。
【００９０】
　一方、ステップ１０１１では、現在小節が示す小節は処理最終小節か否か判定する。現在小節が示す小節が、図９のステップ９０４で登録された終了位置の小節であった場合、その判定はＹＥＳとなってステップ１０１２の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１０１３の処理に移行する。
【００９１】
　ステップ１０１２では、ユーザが指定した範囲のクウォンタイズが終了したことから、クウォンタイズ処理フラグに０を代入する。その後、一連の処理を終了する。
【００９２】
　ステップ１０１３では、ユーザが指定した範囲のクウォンタイズが終了していないことから、現在小節をインクリメントする。このインクリメントが終了した後、ステップ１００２の処理に戻る。
【００９３】
　なお、第１の実施の形態では、イベントデータの種類に関わらず、クウォンタイズを行っているが、例えばノートイベントデータのみに限定して、クウォンタイズを行うようにしても良い。また、場合によっては、その逆としても良い。
【００９４】
　また、クウォンタイズの範囲指定、及びクウォンタイズ処理の実行は、同一のスイッチＳＷ１を用いて行うようにしているが、複数のスイッチに役割分担させて、それらを行わせるようにしても良い。
【００９５】
　また、幅広いクウォンタイズがかけられるように、上記オフセットを任意に指定できるようにしたり、基準からの有効範囲をきめるセンシティビティ等を用意しても良い。
【００９６】
　次に、第２の実施の形態について説明する。
　第１の実施の形態では、小節毎にクウォンタイズを行った結果、イベントデータを次小節に移動させても、クウォンタイズ処理した小節がフォーマット上の最終小節であった場合、移動させる小節が存在しないことから、その移動させたイベントデータは発音されないことになる。第２の実施の形態は、このような発音されなくなるイベントデータの発生を回避するようにしたものである。
【００９７】
　この第２の実施の形態は、第１の実施の形態の構成と基本的に同じである。このため、第１の実施の形態と同じ符号を用いて、第１の実施の形態から異なる部分についてのみ説明する。
【００９８】
　図１２は、第２の実施の形態によるクウォンタイズ処理の動作フローチャートである。このクウォンタイズ処理は、図９のステップ９０５の処理として実行される。この図１２を参照して、その処理動作を説明する。
【００９９】
　先ず、ステップ１２０１では、クウォンタイズ処理の実行のために、ＲＡＭ２０３のワーク領域の確保といったイニシャル処理を実行する。このイニシャル処理が終了すると、ステップ１２０２の処理に移行する。
【０１００】
　ステップ１２０２では、現在小節が示す小節のクロック数の調査を行う。この現在小節は、ＣＰＵ２０１内のレジスタ、或いはＲＡＭ２０３に保持される変数であり、現在において処理すべき小節を示す値が代入される。ステップ１２０１のイニシャル処理では、この現在小節に、図９のステップ９０３で登録された先頭位置の小節を示す値を代入している。
【０１０１】
　なお、小節のクロック数は、次小節の先頭のイベントデータに、第２ワードとして格納されている（図５参照）。その次小節の先頭のイベントデータは、図４に示すように、配列ＳＮＧ＿ＢＡＲ＿ＴＢＬから配列ＳＮＧ＿ＢＡＲ＿ＰＴＲのクウォンタイズ処理するトラックの先頭要素番号が格納されている領域を特定し、その特定した配列ＳＮＧ＿ＢＡＲ＿ＰＴＲの領域内の先頭要素番号を順次検索していくことで、配列ＳＮＧ＿ＳＯＮＧ内のそのデータにアクセスする。
【０１０２】
　ステップ１２０２で小節のクロック数を得ると、ステップ１２０３の処理に移行する。このステップ１２０３では、次小節に移動させるべき発音開始タイミングのクロック数を調査する。
【０１０３】
　この調査により、例えば小節の拍子が４／４拍子で、オフセットが５０パーセントとした場合には、図１１に示すように、次小節に移動させるべきタイミングとしてクロック数１６８０が算出されることになる。
【０１０４】
　ステップ１２０３に続くステップ１２０４では、現在小節が示す小節にイベントデータがないか否か判定する。その小節内にイベントデータがなかった場合、その判定はＹＥＳとなってステップ１２１３の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１００５の処理に移行する。
【０１０５】
　ステップ１２０５では、その小節の先頭イベントデータを設定する。このときには、図１１を参照して説明したように、４分音符等のクウォンタイズにおける単位、及びオフセットに基づき、それの発音開始タイミングが修正される。
【０１０６】
　ステップ１２０５に続くステップ１２０６では、前に処理したイベントデータが小節の最後のイベントデータか否か判定する。処理対象の小節内のイベントデータを全て処理した場合、その判定はＹＥＳとなってステップ１２１３の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１２０７の処理に移行する。
【０１０７】
　ステップ１２０７では、次に処理するイベントデータは次小節に移動させるべきイベントデータであるか否か判定する。この判定は、ステップ１２０３の調査で得たクロック数と、そのイベントデータの小節先頭からのクロック数（図５参照）とを比較することで行われる。そのイベントデータの小節先頭からのクロック数が調査で得たクロック数以上であった場合、その判定はＹＥＳとなってステップ１２１０の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１００８の処理に移行する。
【０１０８】
　ステップ１２０８では、それが属する小節内でそのイベントデータの発音開始タイミング、即ち小節先頭からのクロック数の変更を行う。続くステップ１２０９では、現在小節が示す小節内の次のイベントデータの読み出しを行う。この読み出しが終了した後、ステップ１２０６の処理に戻る。
【０１０９】
　ステップ１２１０では、現在小節が示す小節はフォーマット上の最終小節か否か判定する。その最終小節のクウォンタイズを行っている場合、その判定はＹＥＳとなってステップ１２１１の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１２１２の処理に移行する。
【０１１０】
　ステップ１２１１では、現在処理しているイベントデータの小節先頭からのクロック数（発音開始タイミング）を、それが属している小節の最終タイミングに変更する処理を行う。これにより、そのイベントデータが発音されなくなるのが回避されることになる。このとき、最終小節が４／４拍子であった場合、その小節先頭からのクロック数は１９１９に変更される。
【０１１１】
　他方のステップ１２１２では、次小節の先頭タイミングとなるように、それの小節先頭からのクロック数を変更する。このステップ１２１２の処理では、必要に応じて、図４に示す配列ＳＮＧ＿ＢＡＲ＿ＰＴＲ内のデータの書き換えも行われる。
【０１１２】
　上記ステップ１２１１、或いは１２１２の処理が終了すると、ステップ１２０９の処理に移行する。
　次に、第３の実施の形態について説明する。
【０１１３】
　シーケンサー機能により、ユーザは各種イベントデータの編集（複写、削除、変更等）を行うことができる。しかし、例えばイベントデータの発音開始タイミングを、それが属する小節外の発音開始タイミングに変更してしまった場合には、そのイベントデータ、更にはそれに続くイベントデータが発音されなかったりすることがある。その変更が、他の表示等に関わる処理においても悪影響を及ぼすこともある。第３の実施の形態は、このような問題が生じないように、発音開始タイミングの変更を制限するようにしたものである。
【０１１４】
　この第３の実施の形態は、第２の実施の形態と同様に、第１の実施の形態の構成と基本的に同じである。このため、第１の実施の形態と同じ符号を用いて、第１の実施の形態から異なる部分についてのみ説明する。
【０１１５】
　図１３は、第３の実施の形態における、発音開始タイミングの変更方法を説明する図である。同図を参照して、その変更方法について説明する。
　第３の実施の形態では、図１のスイッチＳＷ２、及びスイッチＳＷ３を、イベントデータ変更用のスイッチとしている。また、画面に表示されているカーソルは、第１の実施の形態と同様に、スイッチＳＷ６〜ＳＷ９に対する操作に応じて画面上を移動する。
【０１１６】
　図１３（ａ）は、スイッチＳＷ２、及びＳＷ３を操作する前、即ち変更前の状態を示している。この図１３（ａ）においては、最下段の行のステップ数“２４０”がカーソルによって指定されている。この状態において、スイッチＳＷ６（上スイッチ）を操作すると、カーソルはその一つ上の行のステップ数“０００”に移動し、スイッチＳＷ７（下スイッチ）を操作すると、画面が下方向にスクロールして、その下の行の現在表示されていないステップ数に移動し、スイッチＳＷ８（左スイッチ）を操作すると、その左の拍数“３”に移動し、スイッチＳＷ９（右スイッチ）を操作すると、その右の“ＮＯＴＥ”に移動する。
【０１１７】
　図１３（ｂ）は、図１３（ａ）の状態から、スイッチＳＷ３を１回操作した後の状態を示している。図１３（ａ）と図１３（ｂ）とを対比すれば判るように、スイッチＳＷ３はカーソルで指定された項目の値の減少を指示するスイッチである。他方のスイッチＳＷ２は、その逆に、値の増加を指示するスイッチである。なお、“ＮＯＴＥ”のようにイベントデータのコマンドの種類を表す項目においては、スイッチＳＷ２、或いはＳＷ３を操作する度に、イベントデータのコマンドの種類を示す用語が予め定められた順序で変化する。
【０１１８】
　このようにして、ユーザは、スイッチＳＷ２、ＳＷ３、及びＳＷ６〜ＳＷ９を操作することにより、イベントデータの変更を行うことができる。
　次に、第３の実施の形態における各種制御処理について、図１４〜図１８を参照して詳細に説明する。なお、上述したように、制御処理においても、第１の実施の形態から異なる部分についてのみ説明する。
【０１１９】
　図１４は、第３の実施の形態によるスイッチ処理の動作フローチャートである。このスイッチ処理は、図８のステップ８０２の処理として実行される。図１４を参照して、第３の実施の形態によるスイッチ処理について詳細に説明する。
【０１２０】
　先ず、ステップ１４０１では、スイッチＳＷ１がオンされたか否か判定する。スイッチＳＷ１は、テレビ１１０にイベントデータを表示させるイベントリストモードを設定するためのスイッチである。ユーザがこのスイッチＳＷ１を操作し、イベントリストモードを設定した場合、その判定はＹＥＳとなってステップ１４０２の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１４０３の処理に移行する。
【０１２１】
　ステップ１４０２では、設定されたイベントリストモードの機能を実現するためのイベントリストモード処理を実行する。その後、ステップ１４０３の処理に移行する。このイベントリストモード処理についての詳細は後述する。
【０１２２】
　ステップ１７０３では、スイッチ群１０２の他のスイッチ対してユーザが行った操作に応じたその他の処理を実行する。このその他の処理が終了すると、ここで一連の処理も終了し、その後、図８のステップ８０３のその他の処理が実行される。
【０１２３】
　図１５は、上記ステップ１４０２で実行されるイベントリストモード処理の動作フローチャートである。この図１５を参照して、イベントリストモード処理について詳細に説明する。
【０１２４】
　先ず、ステップ１５０１では、イベントリストモードが設定されたことに伴う、ＣＰＵ２０１のレジスタ、ＲＡＭ２０３のワーク領域のクリア、初期設定等のイニシャル処理を行う。このイニシャル処理では、ユーザが指定したＲＡＭ２０３の楽曲データ記録領域上のトラックに記憶されている楽曲データを読み出し、それをテレビ１１０に表示させる処理も行われる。なお、このイベントデータが表示された画面を、以降、イベントリスト画面と呼ぶことにする。
【０１２５】
　ステップ１５０１に続くステップ１５０２では、スイッチ群１０２の各スイッチに割り当てたイベントリストモード設定時の機能に対応したリストモードスイッチ処理を実行する。その後、ステップ１５０３において、カーソルスイッチであるスイッチＳＷ６〜ＳＷ９の移動に伴い、画面をスクロールさせるといった表示に関わる処理等を含むその他の処理を実行した後、一連の処理を終了する。
【０１２６】
　図１６は、上記ステップ１５０２で実行されるリストモードスイッチ処理の動作フローチャートである。この図１６を参照して、リストモードスイッチ処理について詳細に説明する。
【０１２７】
　先ず、ステップ１６０１では、スイッチＳＷ２がオンされたか否か判定する。上述したように、このスイッチＳＷ２は、カーソルで指定された項目の値の増加を指示するために用いられる。ユーザがスイッチＳＷ２を操作した場合、その判定はＹＥＳとなってステップ１６０２の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１６０３の処理に移行する。
【０１２８】
　ステップ１６０２では、アップダウンフラグに０を代入する。このアップダウンフラグは、ユーザの指示が増加か否かを示す値が代入される、ＣＰＵ２０１、或いはＲＡＭ２０３に保持される変数である。ユーザの指示が増加指示であれば０、減少指示であれば１が代入される。このステップ１６０２の処理が終了すると、ステップ１６０５の処理に移行する。
【０１２９】
　他方のステップ１６０３では、スイッチＳＷ３がオンされたか否か判定する。上述したように、このスイッチＳＷ３は、カーソルで指定された項目の値の減少を指示するために用いられる。ユーザがスイッチＳＷ３を操作した場合、その判定はＹＥＳとなってステップ１６０４の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１６１１の処理に移行する。
【０１３０】
　ステップ１６０４では、アップダウンフラグに１を代入する。このステップ１６０４の処理が終了すると、ステップ１６０５の処理に移行する。
　ステップ１６０５では、現在選択されている項目の判定を行う。この判定は、現在カーソルを表示させている表示位置により行われる。その判定結果に従って、ステップ１６０５に続く処理が決定される。
【０１３１】
　ステップ１６０５において、現在選択されている項目がタイミングであると判定すると、ステップ１６０６の処理に移行する。
　ステップ１６０６では、タイミングの項目のなかで選択されている項目は拍か否か判定する。例えば図１３（ａ）において、カーソルが表示されている“２４０”がステップであり、それの左隣の“３”が拍数である。カーソルが拍数の位置に表示されていた場合、その判定はＹＥＳとなってステップ１６０７の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１６０８の処理に移行する。
【０１３２】
　ステップ１６０７では、ユーザが操作したスイッチの種類（ＳＷ２、或いはＳＷ３）に応じて、拍数を変更する拍変更処理を行う。その後、一連の処理を終了する。
【０１３３】
　他方のステップ１６０８では、ユーザが操作したスイッチの種類（ＳＷ２、或いはＳＷ３）に応じて、ステップ数を変更するステップ変更処理を行う。その後、一連の処理を終了する。
【０１３４】
　ステップ１６０５において、現在選択されている項目がコマンドであると判定すると、ステップ１６０９の処理に移行する。
　ステップ１６０９では、ユーザが操作したスイッチの種類（ＳＷ２、或いはＳＷ３）に応じて、イベントデータのコマンドの種類を変更する処理を行う。その後、一連の処理を終了する。
【０１３５】
　ステップ１６０５において、現在選択されている項目がパラメータであると判定すると、ステップ１６１０の処理に移行する。
　ステップ１６１０では、ユーザが操作したスイッチの種類（ＳＷ２、或いはＳＷ３）に応じて、パラメータの種類を変更する処理を行う。その後、一連の処理を終了する。
【０１３６】
　一方、ステップ１６０３でＮＯと判定した場合、ステップ１６１１の処理に移行する。このステップ１６１１では、スイッチＳＷ６〜ＳＷ９、即ちカーソルスイッチがオンされたか否か判定する。ユーザがカーソルスイッチを操作した場合、その判定はＹＥＳとなってステップ１６１２の処理に移行する。そうでない場合、その判定はＮＯとなり、ここで一連の処理を終了する。
【０１３７】
　ステップ１６１２では、オンされたスイッチの種類に応じて、カーソルを移動させるカーソル移動処理を行う。このカーソル移動処理により、カーソルは、スイッチＳＷ６〜ＳＷ９に対する操作に対応して、イベントリスト画面上を項目単位で移動することになる。このカーソル移動処理を終了した後、一連の処理を終了する。
【０１３８】
　このようにして、ユーザが行った操作内容に対応して、イベントデータの各項目の内容が変更される。
　図１７は、上記ステップ１６０７の拍変更処理の動作フローチャートである。この図１７を参照して、次に拍変更処理について詳細に説明する。
【０１３９】
　ステップ１７０１〜１７０４では、各種変数に対し、拍の変更において必要となる値を代入することが行われる。
　先ず、ステップ１７０１では、カーソルで指定されているイベントデータの第２ワード、即ち小節先頭からのクロック数（図５参照）を、変数timing＿dataに代入する。続くステップ１７０２では、この変数timing＿dataの値から、拍数、ステップ数を求め、それらの値を変数beat＿num 、変数step＿num にそれぞれ代入する。その後、ステップ１７０３の処理に移行する。
【０１４０】
　変数beat＿num 、及び変数step＿num は、表示されているタイミングの項目の拍部分、ステップ部分に対応する値である。例えば小節先頭からのクロック数、即ち変数timing＿dataの値が１２００で、拍子が４／４拍子であった場合（１拍のクロック数は４８０である）、変数beat＿num 、及び変数step＿num の各値は、それぞれ、２、２４０となる。即ち、変数beat＿num 、及び変数step＿num の各値は、小節先頭からのクロック数を１拍のクロック数で除算した際の商と余りとなる。なお、上記の例は、図１３（ａ）において、カーソルが表示されている最下段の行のタイミング項目を例としたものである。
【０１４１】
　ステップ１７０３では、変数bar clock に、カーソルで指定されたイベントデータが属する小節（以降、現在小節と記す）のクロック数を代入する。その後、ステップ１７０４において、変数bar clock の値から、現在小節における拍数の最大値、及び拍数をその最大値とした際のステップ数を求め、それらの値を変数beat＿max 、及び変数step＿max にそれぞれ代入する。
【０１４２】
　例えば、拍子が４／４拍子であった場合、変数 bar＿clock 、変数beat＿num、及び変数step＿num の各値は、それぞれ、１９２０、３、４７９となる。また、拍子が９／８拍子であった場合、変数 bar＿clock 、変数beat＿num 、及び変数step＿num の各値は、それぞれ、２１６０、４、２３９となる。変数beat＿num 、及び変数step＿num の各値は、小節のクロック数を１拍のクロック数で除算した際の商と余りである。
【０１４３】
　なお、現在小節のクロック数は、次小節の先頭のイベントデータに、第２ワードとして格納されている（図５参照）。その次小節の先頭のイベントデータは、図４に示すように、配列ＳＮＧ＿ＢＡＲ＿ＴＢＬから配列ＳＮＧ＿ＢＡＲ＿ＰＴＲのクウォンタイズ処理するトラックの先頭要素番号が格納されている領域を特定し、その特定した配列ＳＮＧ＿ＢＡＲ＿ＰＴＲの領域内の先頭要素番号を順次検索していくことで、配列ＳＮＧ＿ＳＯＮＧ内のそのデータにアクセスする。
【０１４４】
　ステップ１７０４に続くステップ１７０５では、変数step＿num の値は変数step＿max の値よりも大きいか否か判定する。変数step＿num の値は変数step＿max の値よりも大きい場合、その判定はＹＥＳとなってステップ１７０６の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１７０７の処理に移行する。ステップ１７０６では、変数beat＿max の値をデクリメントし、その後、ステップ１７０７の処理に移行する。
【０１４５】
　上記ステップ１７０５、１７０６の処理は、以下の理由により行われる。
　第３の実施の形態では、イベントデータの小節先頭からのクロック数が小節のクロック数を超えないようにしている。例えば現在小節の拍子が９／８拍子であれば、変数step＿max には２３９、変数beat＿max には４がそれぞれ代入される。
【０１４６】
　各変数beat＿num(拍数)の値において許される変数step＿num(ステップ数)の値は、変数beat＿num(拍数)の値が４（変数beat＿max）のときは０〜２３９、変数beat＿num(拍数)が０〜３のときには０〜４７９である。
【０１４７】
　上記の例において、変数step＿num の値が変数step＿max の値より大きい場合、変数beat＿num の値を３から４に変更すると、変更後の小節先頭からのクロック数は小節のクロック数を超えてしまうことになる。しかし、その場合に、変数beat＿max の値をデクリメントすると、変数beat＿num の値としては３が上限値となり、変更後の小節先頭からのクロック数が小節のクロック数を超えてしまうことが回避される。即ち例えば拍数が３でステップ数が４７９から、拍数が４でステップ数が４７９に変更されることはなくなる。ステップ１７０５、１７０６は、これを実現するために、変数beat＿max の値を補正する処理である。
【０１４８】
　ステップ１７０７以降の処理では、ユーザのスイッチＳＷ２、或いはＳＷ３に対する操作に応じて、拍数、即ち変数beat＿num の値を変更し、その変更をＲＡＭ２０３に格納されているイベントデータに反映されることが行われる。
【０１４９】
　先ず、ステップ１７０７では、アップダウンフラグの値の判定を行う。ユーザがスイッチＳＷ２を操作した場合、アップダウンフラグの値は０となってステップ１７０８の処理に移行する。
【０１５０】
　ステップ１７０８では、変数beat＿num の値は変数beat＿max の値とは等しくないか否か判定する。変数beat＿num の値は変数beat＿max の値と等しい、即ち変数beat＿num の値が上限値であった場合、その判定はＮＯとなってステップ１７１０の処理に移行する。そうでない場合、その判定はＹＥＳとなってステップ１７０９の処理に移行する。
【０１５１】
　ステップ１７０９では、変数beat＿num の値をインクリメントする。これにより、ユーザが指示した内容に応じて表示されている拍数が増加することになる。変数beat＿max の値は、上述したように、変数step＿num の値に応じて補正されている。このため、変数beat＿num をインクリメントしても、これによって小節先頭からのクロック数が小節のクロック数を超えることはない。ステップ１７０９の処理を終了した後、ステップ１７１０の処理に移行する。
【０１５２】
　ステップ１７１０では、変数beat＿num の値、及び変数step＿num の値から、変数timing＿dataの値、即ち小節先頭からのクロック数を求める。これは、ステップ１７０２とは逆の方法により算出される。小節先頭からのクロック数を求めると、次にステップ１７１１において、そのクロック数を、イベントデータの第２ワードとしてＲＡＭ２０３に書き込む処理を行う。
【０１５３】
　一方、ステップ１７０７において、アップダウンフラグの値は１と判定した場合、ステップ１７１２の処理に移行する。この場合は、ユーザがスイッチＳＷ３の操作を行った場合である。
【０１５４】
　ステップ１７１２では、変数beat＿num の値が０に等しくないか否か判定する。拍数として０が表示されていた場合、その判定はＮＯとなってステップ１７１０の処理に移行する。そうでない場合、その判定はＹＥＳとなってステップ１７１３の処理に移行する。
【０１５５】
　ステップ１７１３では、変数beat＿num の値をデクリメントする。これにより、ユーザが指示した内容に応じて表示されている拍数が減少することになる。その後、ステップ１７１０の処理に移行する。
【０１５６】
　このように、ユーザが拍数の変更を指示した場合、その指示内容に従って変更した後の発音開始タイミング（小節先頭からのクロック数）が、小節の外のタイミングとならないように監視しながら、拍数の変更が行われる。
【０１５７】
　図１８は、上記ステップ１６０８のステップ変更処理の動作フローチャートである。この図１８を参照して、ステップ変更処理について詳細に説明する。
　ステップ１８０１〜１８０４では、各種変数に対し、ステップ数の変更において必要となる値を代入することが行われる。
【０１５８】
　先ず、ステップ１８０１では、カーソルで指定されているイベントデータの第２ワード、即ち小節先頭からのクロック数（図５参照）を、変数timing＿dataに代入する。続くステップ１８０２では、この変数timing＿dataの値から、拍数、ステップ数を求め、それらの値を変数beat＿num 、変数step＿num にそれぞれ代入する。その後、ステップ１８０３の処理に移行する。
【０１５９】
　変数beat＿num 、及び変数step＿num は、表示されているタイミングの項目の拍部分、ステップ部分に対応する値である。例えば小節先頭からのクロック数、即ち変数timing＿dataの値が１２００で、拍子が４／４拍子であった場合（１拍のクロック数は４８０である）、変数beat＿num 、及び変数step＿num の各値は、それぞれ、２、２４０となる。即ち、変数beat＿num 、及び変数step＿num の各値は、小節先頭からのクロック数を１拍のクロック数で除算した際の商と余りとなる。
【０１６０】
　ステップ１８０３では、変数 bar＿clock に、カーソルで指定されたイベントデータが属する現在小節のクロック数を代入する。その後、ステップ１８０４において、変数 bar＿clock の値から、現在小節における拍数の最大値、及び拍数をその最大値とした際のステップ数を求め、それらの値を変数beat＿max 、及び変数step＿max にそれぞれ代入する。
【０１６１】
　例えば、拍子が４／４拍子であった場合、変数 bar＿clock 、変数beat＿num、及び変数step＿num の各値は、それぞれ、１９２０、３、４７９となる。また、拍子が９／８拍子であった場合、変数 bar＿clock 、変数beat＿num 、及び変数step＿num の各値は、それぞれ、２１６０、４、２３９となる。変数beat＿num 、及び変数step＿num の各値は、小節のクロック数を１拍のクロック数で除算した際の商と余りである。
【０１６２】
　なお、現在小節のクロック数は、次小節の先頭のイベントデータに、第２ワードとして格納されている（図５参照）。その次小節の先頭のイベントデータは、図４に示すように、配列ＳＮＧ＿ＢＡＲ＿ＴＢＬから配列ＳＮＧ＿ＢＡＲ＿ＰＴＲのクウォンタイズ処理するトラックの先頭要素番号が格納されている領域を特定し、その特定した配列ＳＮＧ＿ＢＡＲ＿ＰＴＲの領域内の先頭要素番号を順次検索していくことで、配列ＳＮＧ＿ＳＯＮＧ内のそのデータにアクセスする。
【０１６３】
　ステップ１８０４に続くステップ１８０５では、変数beat＿num の値は変数beat＿max の値と等しいか否か判定する。変数beat＿num の値は変数beat＿max の値に等しくない場合、その判定はＹＥＳとなってステップ１８０６の処理に移行する。そうでない場合、その判定はＮＯとなってステップ１８０７の処理に移行する。ステップ１８０６では、変数step＿max に４７９を代入する。その後、ステップ１８０７の処理に移行する。
【０１６４】
　上記ステップ１８０５、１８０６の処理は、以下の理由により行われる。
　第３の実施の形態では、イベントデータの小節先頭からのクロック数が小節のクロック数を超えないようにしている。例えば現在小節の拍子が９／８拍子であれば、変数step＿max には２３９、変数beat＿max には４がそれぞれ代入される。
【０１６５】
　各変数beat＿num(拍数)の値において許される変数step＿num(ステップ数)の値は、変数beat＿num(拍数)の値が４（変数beat＿max）のときは０〜２３９、変数beat＿num （拍数）が０〜３のときには０〜４７９である。
【０１６６】
　上記の例のように、変数beat＿num の値が変数beat＿max の値と等しいか否かにより、変数step＿num の値としての上限値は変化する。ステップ１８０５、１８０６は、このように拍数に応じて変化するステップ数の上限値を適正な値に補正するための処理である。
【０１６７】
　ステップ１８０７以降の処理では、ユーザのスイッチＳＷ２、或いはＳＷ３に対する操作に応じて、ステップ数、即ち変数step＿num の値を変更し、その変更をＲＡＭ２０３に格納されているイベントデータに反映されることが行われる。
【０１６８】
　先ず、ステップ１８０７では、アップダウンフラグの値の判定を行う。ユーザがスイッチＳＷ２を操作した場合、アップダウンフラグの値は０となってステップ１８０８の処理に移行する。
【０１６９】
　ステップ１８０８では、変数step＿num の値は変数step＿max の値とは等しくないか否か判定する。変数step＿num の値は変数step＿max の値と等しい、即ち変数step＿num の値が上限値であった場合、その判定はＮＯとなってステップ１８１０の処理に移行する。そうでない場合、その判定はＹＥＳとなってステップ１８０９の処理に移行する。
【０１７０】
　ステップ１８０９では、変数step＿num の値をインクリメントする。これにより、ユーザが指示した内容に応じて表示されているステップ数が増加することになる。変数step＿num の値は、上述したように、変数beat＿num の値に応じて補正されている。このため、変数step＿num をインクリメントしても、これによって小節先頭からのクロック数が小節のクロック数を超えることはない。ステップ１８０９の処理を終了した後、ステップ１８１０の処理に移行する。
【０１７１】
　ステップ１８１０では、変数beat＿num の値、及び変数step＿num の値から、変数timing＿dataの値、即ち小節先頭からのクロック数を求める。これは、ステップ１８０２とは逆の方法により算出される。小節先頭からのクロック数を求めると、次にステップ１８１１において、そのクロック数を、イベントデータの第２ワードとしてＲＡＭ２０３に書き込む処理を行う。
【０１７２】
　一方、ステップ１８０７において、アップダウンフラグの値は１と判定した場合、ステップ１８１２の処理に移行する。この場合は、ユーザがスイッチＳＷ３の操作を行った場合である。
【０１７３】
　ステップ１８１２では、変数beat＿num の値が０に等しくないか否か判定する。拍数として０が表示されていた場合、その判定はＮＯとなってステップ１８１０の処理に移行する。そうでない場合、その判定はＹＥＳとなってステップ１８１３の処理に移行する。
【０１７４】
　ステップ１８１３では、変数step＿num の値をデクリメントする。これにより、ユーザが指示した内容に応じて表示されているステップ数が減少することになる。その後、ステップ１８１０の処理に移行する。
【０１７５】
　このように、ユーザがステップ数の変更を指示した場合、その指示内容に従って変更した後の発音開始タイミング（小節先頭からのクロック数）が、小節の外のタイミングとならないように監視しながら、ステップ数の変更が行われる。
【０１７６】
　なお、第３の実施の形態では、図１３に示すようにイベントデータの小節先頭からのクロック数を拍数、及びステップ数で画面上に表現しているが、例えば小節先頭からのクロック数をそのまま画面上に数値として表示させても良い。
【０１７７】
　また、第３の実施の形態では、イベントデータの発音開始タイミングの変更を制限しているが、予め存在するイベントデータに対しては、その発音開始タイミングを、それが属する小節内となるように、自動的に発音タイミングを修正するようにしても良い。
【０１７８】
　また、第１〜第３の実施の形態は、電子楽器１００に本発明を適用したものであるが、適用はこれに限定されるものではない。本発明は、シーケンサーをはじめ、シーケンサー機能を搭載した装置に幅広く適用できるものである。
【図面の簡単な説明】
【０１７９】
【図１】第１の実施の形態が適用されたシステムの外観を示す図である。
【図２】電子楽器の構成のブロック図である。
【図３】ＲＡＭ２０３に記憶される楽曲データのデータフォーマットを示す図である（その１）。
【図４】ＲＡＭ２０３に記憶される楽曲データのデータフォーマットを示す図である（その２）。
【図５】ノートイベントデータとコントロールイベントデータのデータフォーマットを示す図である。
【図６】ジャンプイベントデータ群のデータフォーマットを示す図である。
【図７】クウォンタイズ処理の範囲指定方法を説明する図である。
【図８】全体処理の動作フローチャートである。
【図９】スイッチ処理の動作フローチャートである。
【図１０】第１の実施の形態によるクウォンタイズ処理の動作フローチャートである。
【図１１】各拍子における１小節の時間的長さを示す図である。
【図１２】第２の実施の形態によるクウォンタイズ処理の動作フローチャートである。
【図１３】発音開始タイミングの変更方法を説明する図である。
【図１４】第３の実施の形態によるスイッチ処理の動作フローチャートである。
【図１５】イベントリストモード処理の動作フローチャートである。
【図１６】リストモードスイッチ処理の動作フローチャートである。
【図１７】拍変更処理の動作フローチャートである。
【図１８】ステップ変更処理の動作フローチャートである。
【符号の説明】
【０１８０】
１００　　電子楽器
１０２　　スイッチ群
１１０　　テレビ
２０１　　ＣＰＵ
２０２　　ＲＯＭ
２０３　　ＲＡＭ
２０４　　画像データ出力部
２０５　　サウンドシステム
２０６　　ＭＩＤＩインターフェイス
【図１】
2004046280.tif 000003
【図２】
2004046280.tif 000004
【図３】
2004046280.tif 000005
【図４】
2004046280.tif 000006
【図５】
2004046280.tif 000007
【図６】
2004046280.tif 000008
【図７】
2004046280.tif 000009
【図８】
2004046280.tif 000010
【図９】
2004046280.tif 000011
【図１０】
2004046280.tif 000012
【図１１】
2004046280.tif 000013
【図１２】
2004046280.tif 000014
【図１３】
2004046280.tif 000015
【図１４】
2004046280.tif 000016
【図１５】
2004046280.tif 000017
【図１６】
2004046280.tif 000018
【図１７】
2004046280.tif 000019
【図１８】
2004046280.tif 000020
【手続補正書】
【提出日】平成15年11月20日(2003.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
　シーケンスデータの発音開始タイミングを制御する装置において、
　前記シーケンスデータの発音開始タイミングを指定するための指定手段と、
　前記指定手段により指定された前記シーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内であるか否か判定する判定手段と、
　前記シーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内ではないと前記判定手段が判定したとき、前記指定手段による指定を無効とする制御手段と、
　を具備したことを特徴とするシーケンスデータのタイミング処理装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
　本発明の課題は、ユーザによるシーケンスデータの発音開始タイミングの変更を監視し、シーケンスデータの発音開始タイミングを常に適正な状態に維持することにある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
　本発明のシーケンスデータのタイミング処理装置は、シーケンスデータの発音開始タイミングを制御することを前提とし、シーケンスデータの発音開始タイミングを指定するための指定手段と、指定手段により指定されたシーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内であるか否か判定する判定手段と、シーケンスデータの発音開始タイミングが、該シーケンスデータが属する小節内ではないと判定手段が判定したとき、指定手段による指定を無効とする制御手段と、を具備する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
　本発明のシーケンスデータのタイミング処理装置は、ユーザによるシーケンスデータの発音開始タイミングの変更を監視し、それが属する小節外への発音開始タイミングの変更であった場合にはその変更を無効として禁止するため、シーケンスデータの発音開始タイミングを常に適正な状態に維持しておくことができる。