(57)【特許請求の範囲】
【請求項１】
演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間の前側または後側のマーカーのいずれか一方を指定するとともに、指定されたマーカーを演奏進行方向または逆方向のいずれに移動するかを指定するマーカー指定手段と、
該指定されたマーカーを該指定された方向に移動することによって、該繰返し区間が拡大されるのか縮小されるのかを判定する拡大縮小判定手段と、
該拡大縮小判定手段の判定結果と該繰返し区間の現在の区間長に関連してマーカの移動量を決定する第１の決定手段と、
該指定されたマーカーを該指定された方向へ該第１の決定手段で決定された移動量だけ移動させる第１の制御手段とを備えた自動演奏装置のマーカー操作装置。
【請求項２】
演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間を拡大するか縮小するかを指定するとともに、指定された拡大または縮小を演奏進行方向または逆方向のいずれの方向に行うのかを指定する拡大縮小指定手段と、
該指定された拡大または縮小と該指定された方向とによって、該繰返し区間の前側または後側のマーカーのいずれを移動するのかを判定するとともに、該判定されたマーカーを演奏進行方向または逆方向のいずれの方向に移動するのかを判定するマーカー判定手段と、
該拡大縮小指定手段による指定と該繰返し区間の現在の区間長に関連してマーカーの移動量を決定する第２の決定手段と、
該マーカー判定手段で判定されたマーカーを該判定された方向へ該第２の決定手段で決定された移動量だけ移動させる第２の制御手段とを備えた自動演奏装置のマーカー操作装置。
【請求項３】
該第１の決定手段または該第２の決定手段で決定される移動量は、該繰返し区間が拡大される場合は該繰返し区間の現在の区間長の整数倍の長さであり、該繰返し区間が縮小される場合は該繰返し区間の現在の区間長の整数分の１の長さである請求項１〜２のいずれかに記載の自動演奏装置のマーカー操作装置。
【請求項４】
演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間を演奏進行方向または逆方向のいずれかに移動することを指示するシフト指示手段と、
該シフト指示手段で指示された方向に該繰返し区間の前後のマーカーをその区間長を保ったまま所定のシフト位置まで移動させる制御手段とを備えた自動演奏装置のマーカー操作装置。
【請求項５】
該制御手段でのシフト位置は、該繰返し区間の現在の区間長だけマーカーを移動させた位置であるよう構成される請求項４記載の自動演奏装置のマーカー操作装置。
【請求項６】
演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間の前または後のマーカーを指定するマーカー指定手段と、
該マーカー指定手段で指定されるマーカーを演奏進行方向または逆方向のいずれかに移動することを指示する移動指示手段と、
該移動指示手段で指示された方向に該マーカー指示手段で指定されたマーカーを所定の移動量だけ移動させる制御手段とを備えた自動演奏装置のマーカー操作装置。
【請求項７】
該マーカーの移動量の単位を設定する移動単位設定手段を更に備え、該制御手段は該移動単位設定手段で設定された単位の移動量だけ該マーカーを移動させるよう構成された請求項６記載の自動演奏装置のマーカー操作装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自動演奏装置において、演奏教習などに適したマーカー移動を行えるようにしたマーカー操作装置に関する。
【０００２】
【従来の技術】
一般に自動演奏装置においては、演奏データ中の任意の位置を指定することができ、指定された指標を「マーカー」と称している。こうしたマーカーを利用して、例えば特開平７−６４５４７号公報に示されるように、２箇所にマーカーを設定し、この間の部分を繰り返し演奏するリピート機能が提供されている。そして、こうしたリピート機能は、演奏教習において、繰返し練習を行う場合によく利用されている。
【０００３】
一般にある曲の練習を行う場合、曲を短い区間に区切って、なんども繰り返して演奏することによって、より習得が容易に行える。この繰返し練習の仕方としては、
１．  １小節目のみ練習
２．  ２小節目のみ練習
３．  １小節目と２小節目を通して練習
４．  ３小節目のみ練習
５．  ４小節目のみ練習
６．  ３小節目と４小節目を通して練習
７．  １小節目から４小節目まで通して練習
というように、小節の２のべき乗の単位で練習を行う方法がよくとられる。また、曲の始めから２小節単位に区切って順次に練習を行う方法もよくとられる。さらに、１小節でも練習が難しい場合は、さらに半分あるいは拍単位で繰り返し練習を行うこともある。
【０００４】
このような練習方法を自動演奏装置で採る場合、１小節あるいは２小節単位でリピート区間を移動させたり、リピート区間を前方あるいは後方に２倍に拡大したり半分に縮小したりするという操作が必要になる。
【０００５】
しかしながら、従来のマーカー設定方法によれば、リピート区間を前方あるいは後方に２倍あるいは半分の単位で変更する場合は、移動させる側のマーカーを一旦消去し、新たな位置に移動し、そこにマーカーを再設定するという煩雑な操作を必要としていた。
【０００６】
また、ｌ小節あるいは２小節単位でリピート区間を移動させる場合、リピート区間両端の２つのマーカーを消して、新たなリピート区間の先頭の位置および末尾の位置に移動して、マーカーを設定し直すという操作をとらなければならず、非常に煩雑な操作を必要としていた。
さらに、いずれかのマーカーを拍あるいは小節などの音楽的な区切りの意味のある単位で動かしたい場合でも、移動させるマーカーを一旦消去して、新たな位置に移動し、そこにマーカーを再度設定するという煩雑な操作を必要としていた。
【０００７】
本発明はかかる問題点に鑑みてなされたものであり、自動演奏装置において、少ない操作で、所望の位置にマーカーを移動できるようにすることを目的とする。
【０００８】
【課題を解決するための手段および作用】
上述の課題を解決するために、本発明に係る自動演奏装置のマーカー操作装置は、一つの形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間の前側または後側のマーカーのいずれか一方を指定するとともに、指定されたマーカーを演奏進行方向または逆方向のいずれに移動するかを指定するマーカー指定手段と、該指定されたマーカーを該指定された方向に移動することによって、該繰返し区間が拡大されるのか縮小されるのかを判定する拡大縮小判定手段と、該拡大縮小判定手段の判定結果と該繰返し区間の現在の区間長に関連してマーカの移動量を決定する第１の決定手段と、該指定されたマーカーを該指定された方向へ該第１の決定手段で決定された移動量だけ移動させる第１の制御手段とを備える。このマーカー操作装置によれば、マーカー指定手段で移動するマーカーとその方向を指定するだけで、リピート区間が希望する方向に拡大または縮小されるので、操作性が非常によい。
【０００９】
また、上述の課題を解決するために、本発明に係る自動演奏装置のマーカー操作装置は、別の一つの形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間を拡大するか縮小するかを指定するとともに、指定された拡大または縮小を演奏進行方向または逆方向のいずれの方向に行うのかを指定する拡大縮小指定手段と、該指定された拡大または縮小と該指定された方向とによって、該繰返し区間の前側または後側のマーカーのいずれを移動するのかを判定するとともに、該判定されたマーカーを演奏進行方向または逆方向のいずれの方向に移動するのかを判定するマーカー判定手段と、該拡大縮小指定手段による指定と該繰返し区間の現在の区間長に関連してマーカーの移動量を決定する第２の決定手段と、該マーカー判定手段で判定されたマーカーを該判定された方向へ該第２の決定手段で決定された移動量だけ移動させる第２の制御手段とを備える。このマーカー操作装置によれば、拡大縮小指定手段で繰返し区間の拡大または縮小とその方向を指定するだけで、リピート区間が希望する方向に拡大または縮小されるので、操作性が非常によい。
【００１２】
上記第１の決定手段または該第２の決定手段で決定される移動量は、該繰返し区間が拡大される場合は該繰返し区間の現在の区間長の整数倍の長さであり、該繰返し区間が縮小される場合は該繰返し区間の現在の区間長の整数分の１の長さであるようにすることができる。
【００１３】
また、本発明に係る自動演奏装置のマーカー操作装置は、他の形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間を演奏進行方向または逆方向のいずれかに移動することを指示するシフト指示手段と、該シフト指示手段で指示された方向に該繰返し区間の前後のマーカーをその区間長を保ったまま所定のシフト位置まで移動させる制御手段とを備える。このマーカー操作装置によれば、シフト指示手段で繰返し区間のシフトとその方向を指示するだけで、リピート区間が希望する方向にそのまま平行移動の形で移動されるので、操作性が非常によい。
【００１４】
上記の制御手段でのシフト位置は、該繰返し区間の現在の区間長だけマーカーを移動させた位置であるようにすることができる。
【００１５】
また、本発明に係る自動演奏装置のマーカー操作装置は、また他の形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間の前または後のマーカーを指定するマーカー指定手段と、該マーカー指定手段で指定されるマーカーを演奏進行方向または逆方向のいずれかに移動することを指示する移動指示手段と、該移動指示手段で指示された方向に該マーカー指示手段で指定されたマーカーを所定の移動量だけ移動させる制御手段とを備える。このマーカー操作装置によれば、マーカー指示手段によりマーカーを指定し、移動指示手段で移動方向を指示するだけで、希望するマーカーが希望する方向に移動されるので、リピート区間の長さを所望する方向に容易に変えることができ、操作性が非常によい。
【００１６】
上記のマーカー操作装置は、該マーカーの移動量の単位を設定する移動単位設定手段を更に備え、該制御手段は該移動単位設定手段で設定された単位の移動量だけ該マーカーを移動させるよう構成できる。
このように構成すれば、移動単位設定手段によりマーカーの移動量を任意に設定できるので、リピート区間の長さを所望する方向に所望の量だけ容易に変えることができ、操作性が向上する。
【００１７】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図２には本発明の一実施例としての自動演奏装置のマーカー操作装置が示される。図２において、３１はＲＯＭ３３に格納された制御プログラムに基づき各種処理を行うＣＰＵ（中央処理装置）である。３２は演奏データ、楽譜データ、各種操作子データ、各種フラグなどが格納されるＲＡＭ（ランダム・アクセス・メモリ）、３３は制御プログラム等を格納するＲＯＭ（リード・オンリー・メモリ）、３４はユーザーが各種状態を設定するスイッチなどの操作子群、３５はＬＣＤとＬＣＤの制御回路を含む表示器であって、楽譜やマーカータイプなどが表示される。３６はＣＰＵ１から指示されたテンポで、ＣＰＵ１に対してテンポクロック割込を発生させるテンポクロック部であり、このテンポクロックは自動演奏の基本クロックとなり、４分音符を９６等分したタイミング（ｃｌｏｃｋ）で割込が発生する。３７はＣＰＵ１からの指示により、指定された音高で発音また消音する楽音信号を生成する音源であり、楽音信号を増幅器３８、スピーカ３９を通して放音する。
【００１８】
この実施例のマーカー操作装置により実行されるマーカーの移動の態様としては、マーカーシフト、マーカージャンプ、マーカームーブの３つがある。ここで、マーカーシフトは、２つのマーカー（Ａ、Ｂ）により示される区間を、その区間の長さを保ったまま楽譜上で前後に移動する操作である。また、マーカージャンプは、区間を示す２つのマーカー（Ａ、Ｂ）のうちの片方のマーカーを、現在区間の２倍あるいは半分の位置にジャンプさせる操作である。また、マーカームーブは、指定したマーカーを小節あるいは拍の単位で移動させる操作である。。
【００１９】
図５にはパネル上に設けられた操作子群３４の詳細構成が示される。図５において、１〜４はマーカースイッチ、５は表示器３５の表示画面、６はプレイスイッチ、７はストップスイッチ、８はリピートスイッチ、１１、１２はマーカー左／右シフトスイッチ、１３〜１８はモードスイッチ群、１９、２０はムーブ単位指定スイッチ、２１はタイプ番号指定スイッチ、２２はＥＸＩＴスイッチである。以下、これらのスイッチについて詳説する。
【００２０】
マーカースイッチｌ〜４はそれぞれマーカーＡ、Ｂ、Ｃ、Ｄを操作するためのスイッチである。このマーカースイッチ１〜４を単独で押した場合、そのマーカーの位置に演奏位置をジャンプさせる。またマーカーＣ（またはＤ）の位置がまだ設定されていないときにマーカースイッチ３（または４）を単独で押した場合は、現在位置がそのマーカーに設定される。さらに、モードスイッチ１３〜１８のいずれかを押した状態で、マーカースイッチが押されると、そのマーカーの位置を変更したり、タイプを変更したりすることができる。また、マーカーＡ、Ｂは繰返し（リピート）演奏時には、リピート区間の指定にも兼用される。
【００２１】
マーカーシフトスイッチ１１、１２は、マーカーをその区間長を保ったまま楽譜上で左右にシフトさせるためのスイッチであり、マーカーシフトＬスイッチ１１は、マーカーＡ、Ｂを平行移動の形で楽譜上で左にシフトし、マーカーシフトＲスイッチ１２は、マーカーＡ、Ｂを平行移動の形で楽譜上で右にシフトする。
【００２２】
モードスイッチ群１３〜１８はマーカースイッチ１〜４のモードを指定するもので、マーカージャンプモードを指定するジャンプスイッチ１３、１４、マーカームーブモードを指定するムーブスイッチ１５、１６、クリアスイッチ１７、タイプスイッチ１８からなる。
【００２３】
ジャンプスイッチ１３、１４で指定されるマーカージャンブモードでは、マーカーＡとＢで指定される区間についてその長さを楽譜上で右または左に拡張したり縮小したりする。マーカージャンプＬスイッチ１３が押されると、マーカースイッチ１または２で指定されたマーカーＡまたはＢを、楽譜上の左にジャンプさせることでマーカー区間を２倍に拡張または半分に縮小し、マーカージャンプＲスイッチ１４が押されると、マーカースイッチ１または２で指定されたマーカーＡまたはＢを楽譜上の右にジャンプさせることでマーカー区間を２倍に拡張または半分に縮小する。
【００２４】
ムーブスイッチ１５、１６で指定されるマーカームーブモードでは、マーカーＡまたはＢをそれぞれ単独で楽譜上において左右に移動する。マーカームーブＬスイッチ１５が押されると、マーカースイッチ１または２で指定されたマーカーＡまたはＢを楽譜上で左に移動し、マーカームーブＲスイッチ１６が押されると、マーカースイッチ１または２で指定されたマーカーＡまたはＢを楽譜上で右に移動する。
【００２５】
クリアスイッチ１７で指定されるクリアモードでは、マーカーが消去される。クリアスイッチ１７が押されると、マーカースイッチ３または４で指定されたマーカーＡまたはＢを消去する。
【００２６】
タイプスイッチ１８で指定されるタイプモードでは、マーカーのタイブが指定される。タイプスイッチ１８が押されると、マーカースイッチ１〜４で指定されたマーカーのタイプを、後述のタイプ番号指定スイッチ２１を用いて指定できる状態にする。
【００２７】
ムーブ単位指定スイッチ１９、２０はマーカーを移動させるときの単位を指定するスイッチであり、メジャー（Ｍ）スイッチ１９は小節単位、ビート（Ｂ）スイッチ２０は拍単位でのマーカーの移動を指定する。なお、ムーブ単位指定スイッチ１９、２０は、いずれか一方が有効な択一的動作であり、一方が選択されると次の選択が行われるまでその状態を保持するスイッチである。
【００２８】
プレイスイッチ６は自動演奏を開始させるスイッチ、ストップスイッチ７は自勤演奏を停止させるスイッチであり、これらのスイッチ６、７はいずれか一方が有効な択一的動作であり、選択された状態を保持するスイッチである。
【００２９】
リピートスイッチ８はマーカーＡ、Ｂにより指定された区間を繰り返して演奏する状態を設定するスイッチである。このリピートスイッチ８は、押すたびにリピートのＯＮ／ＯＦＦ設定がトグル動作をする。
【００３０】
タイプ番号指定スイッチ２１は、表示画面５に表示された後述するマーカータイプのうちのいずれかを選択するためのものである。
ＥＸＴスイッチ２２は、タイプ選択中に作業を中断する場合に押すスイッチである。
【００３１】
図３にはこの実施例装置で用いられる演奏データのフォーマットが示される。図３において、０ｎは発音のタイミングｃｌｏｃｋで示し、Ｎｏｔｅ番号は音高を示し、長さは音長をｃｌｏｃｋで示したものである。音符種は、音長を量子化した長さに対応するように演算生成した音符の種類である。
【００３２】
図４には本実施例装置で用いられる音楽記号付きマーカーを説明するものである。例えば、図４（１）のように、第１、第２小節を繰り返す譜面の場合、実際の演奏データでは、繰返しの部分は２度演奏される。この演奏データから譜面を演算生成した場合、図４（２）のように繰返しの記号などは表示されず、図４（１）の譜例と異なってしまい、対応が取りにくいという問題がある。この場合、演算生成した譜面に後から繰返し記号などの目印を追加しておくことが考えれる。同時に、こういった繰返しの位置などは、練習の区切りとなるため、マーカーを設定することが多い。
【００３３】
そこで、図４（３）のように、マーカーに音楽記号の印を入れておくことで、マーカーを入力すると同時に音楽記号を目印として入力できる。このため、譜面の視認性が向上する。音楽記号付きのマーカーは図４（４）のように、音楽記号が５線譜上に描かれるようなデザインであってもよい。
【００３４】
図８には上述のようなマーカーの音楽記号の種類とそれを示す変数が示される。この実施例では、マーカーにセットされる音楽記号の種類には図８のようなデザインのものが用意されている。これは、タイプモードにある時に、タイプ番号指定スイッチ２１の番号によって指定され、後述するレジスタであるマーカータイプＭｋｔｙに格納される。マーカータイプＭｋｔｙの初期値は「１」である。また、マーカー番号に対応するマーカーＡ、Ｂ、Ｃ、Ｄの記号が、図中のＡの位置に表示される。
【００３５】
図６にはモードスイッチ１３〜１８に関する変数が示される。モードスイッチ１３〜１８はそのＯＮ／ＯＦＦの状態が、添字で区別されるレジスタＭｄｓｗに読み込まれる。また、押されているスイッチのモードによって、モード番号Ｍｄｎｕｍに「０」から「６」の値がセットされる。モード番号Ｍｄｎｕｍの初期値は「０」である。
【００３６】
図７にはマーカースイッチ１〜４に関する変数が示される。マーカースイッチ１〜４はそのＯＮ／ＯＦＦの状態が、添字で区別されるレジスタＭｋＳｗに読み込まれる。また、押されたスイッチによって、マーカー番号Ｍｋｎｕｍに「ｌ」から「４」の値がセットされる。各マーカーＡ、Ｂ、Ｃ、Ｄに設定される位置は、添字で区別されるマーカー位置Ｐｏｓに格納され、また各マーカーＡ、Ｂ、Ｃ、Ｄに設定されるタイプは添字で区別されるマーカータイプＭｋｔｙに格納される。各マーカー位置Ｐｏｓの値の初期値は、Ｐｏｓ（１）が「０」（＝曲の先頭位置＝第１小節の先頭位置）、Ｐｏｓ（２）が第２小節の先頭位置（＝第１小節の末尾位置）、Ｐｏｓ（３）とＰｏｓ（４）は共に「−１」である。なお、「−１」はマーカーが設定されていないことを意味する。
【００３７】
まず、この実施例装置におけるマーカー移動操作の仕方を図１を参照して概略的に説明する。なお、ここでの操作の仕方は最もオーソドックスなものを説明しているものであるが、ここで説明する他にも、スイッチ群を他の態様で操作して同様のマーカー移動をさせることができる。
【００３８】
１．図１（１）
ユーザーが練習を進める場合、まず、最初の第Ｉ小節を繰り返し練習する。このため、マーカーＡ、Ｂをマーカームーブ操作により第１小節の先頭と末尾に設定する。なお、本装置が初期状態であれば、マーカーＡ、Ｂは第１小節の先頭と末尾に設定されているので、この場合、設定は不要である。
【００３９】
２．図１（２）
次に、マーカーシフト操作により、次の第２小節に移動し練習する。このため、マーカーＡ、Ｂを次の第２小節の先頭と末尾に移動させる。この操作の仕方は、マーカーシフトＲスイッチ１２を押すことによる。
【００４０】
３．図１（３）
次に、マーカーＡを前にジャンプさせ、第１、第２の２小節を練習する。このため、マーカーＡを第１小節の先頭に移動させる。この操作の仕方は、マーカージャンプＬスイッチを押した状態で、マーカーＡを指定するマーカースイッチ１を押す。
【００４１】
４．図１（４）、図１（５）
次に、マーカーシフトより、次の２小節に移り、マーカーＢを前にジャンプさせ、３小節目を練習する。この操作の仕方は、まず、マーカーシフトＲスイッチ１２を押して、マーカーＡ、Ｂの区間長を保ったまま右側に移動させる。すなわちマーカーＡを第３小節の先頭、マーカーＢを第４小節の末尾に移動させる。次いで、マーカージャンプＬスイッチ１３を押した状態で、マーカーＢを指定するマーカースイッチ２を押す。これによりマーカーＡは第３小節の先頭に移動する。
【００４２】
５．図１（６）
次に、マーカーシフト操作により、４小節目を練習する。この操作の仕方は、マーカーシフトＲスイッチ１２を押すことで、マーカーＡ、Ｂをその区間長を保ったまま右側に移動させる。すなわち、マーカーＡは第４小節の先頭に、マーカーＢは第４小節の末尾に移動する。
【００４３】
６．図１（７）
次に、マーカーＡを前にジャンプさせ、３小節と４小節を練習する。この操作の仕方は、マーカージャンプＬスイッチ１３を押した状態で、マーカーＡを指定するマーカースイッチ１を押す。これによりマーカーＡは第３小節の先頭に移動する。
【００４４】
７．図１（８）
最後に、マーカーＡを前にジャンプさせ、ｌ小節から４小節までを練習する。この操作の仕方は、マーカージャンプＬスイッチ１３を押した状態で、マーカーＡを指定するマーカースイッチ１を押す。これによりマーカーＡは第１小節の先頭に移動する。
【００４５】
このように、従来ならマーカーＡ、Ｂをいちいちつけ直さなくてはならなかった操作が、１操作ないし２操作で完了するため、操作性が著しく向上する。
【００４６】
以下、図９〜図１６のフローチャートを参照して本実施例装置の動作を説明する。これらのフローチャートで用いられている変数には、前述のモードスイッチに関する変数〔レジスタＭｄｓｗ（ｉ）、モード番号Ｍｄｎｕｍ〕、マーカースイッチに関する変数〔レジスタＭｋｓｗ（ｉ）、マーカー番号Ｍｋｓｗ、位置Ｐｏｓ（ｉ）、マーカータイプＭｋｔｙ（ｉ）〕の他に、以下のものがある。
【００４７】
その他の変数
ＴｙＭｏｄ    ：タイプモードにある場合「１」、初期値は「０」
Ｄｍｐ        ：現在の演奏中の音の消音処理を指示する場合「１」、初期値は「０」
Ｃｕｒ        ：現在の演奏位置（ｃｌｏｃｋ）、初期値は「０」
Ｒｅｐ        ：リピート状態の場合「１」、初期値は「０」
ＲｅｐＳｔ    ：リピート先頭位置（ｃｌｏｃｋ）、初期値は「０」（＝曲の先頭＝第１小節の先頭）
ＲｅｐＥｎｄ  ：リピート末尾位置（ｃｌｏｃｋ）、初期値はＢａｓｅ×Ｂｅａｔ（＝第２小節の先頭＝第１小節の末尾）
ＤｉｓｐＳｔ  ：楽譜表示の先頭位置（Ｃｌｏｃｋ）、初期値は「０」（＝曲の先頭）
ＤｉｓｐＥｎｄ：楽譜表示の末尾位置（ｃｌｏｃｋ）、初期値はＭｅａｓＬ（＝楽譜表示範囲）
ＭｅａｓＬ    ：楽譜表示を行う範囲（ｃｌｏｃｋ）
ＳｏｎｇＥｎｄ：曲の末尾位置（ｃｌｏｃｋ）
Ｂａｓｅ      ：曲の拍子記号の分母の音符に相当する長さ（ｃｌｏｃｋ）
Ｂｅａｔ      ：曲の拍子の数
Ｍｏｖｅ      ：マーカーを移動させる単位（ｃｌｏｃｋ）
ｒｅｖ        ：マーカーＡがＢより後ろに設定されている場合「１」、初期値は「０」
ｄｉｓｔ      ：マーカーＡとＢの間隔（ｃｌｏｃｋ）＝区間長、初期値はＢａｓｅ×Ｂｅａｔ
【００４８】
まず、図９を参照して本発明のメインルーチンを説明する。
装置電源がＯＮになると、メインルーチンが起動され、まず、初期化処理が行われる（ステップＡ１）。この初期化処理においては、曲の演奏情報を読み込み、曲の末尾位置ＳｏｎｇＥｎｄ、ベースＢａｓｅ、ビートＢｅａｔ、および、楽譜表示範囲ＭｅａｓＬ（４小節分のｃｌｏｃｋに相当する）をセットする。また、音符種のデータを音長データから演算生成しておく。その他の変数は、前述した初期値に設定する。さらに、マーカーＡの位置Ｐｏｓ（１）をＲｅｐＳｔに設定するとともに、マーカーＢの位置Ｐｏｓ（２）をＲｅｐＥｎｄに設定する。これによりマーカーＡ、Ｂは第１小節の先頭と末尾を初期値として設定される。
【００４９】
初期化が終わったら、タイプモードＴｙＭｏｄが「１」か否かを判定する（ステップＡ２）。「１」であれば現在のモードはタイプモードであり、この場合にはマーカーへタイプの設定を行う（ステップＡ１３〜Ａ１７）。この処理については、後述する。
【００５０】
タイプモードＴｙＭｏｄが「０」の場合、現在のモードはタイプモードではなく、この場合は表示画面５上への楽譜表示処理を行う（ステップＡ３）。この楽譜表示処理では、後述するように、表示画面５に５線譜、小節線、音部記号、音符や休符を表示するとともに、マーカーの表示を行う。
【００５１】
この後、プレイスイッチ６がＯＮか否かを判定し（ステップＡ４）、ＯＮであれば、曲の自動演奏を行うためにテンポクロック割込許可を行う（ステップＡ５）。このテンポクロック割込許可を行うと、後述のテンポクロック割込処理が周期的に実行されて、曲の自動演奏が開始状態になる。
【００５２】
次に、ストップスイッチ７がＯＮか否かを判定し（ステップＡ６）、ＯＮであれば、曲の自動演奏を停止するためにテンポクロック割込禁止を行う（ステップＡ７）。このテンポクロック割込禁止を行うと、テンポクロック割込処理が実行されず、発音中の音を消音して、曲の自動演奏を停止する。
【００５３】
さらに、リピートスイッチ８がＯＮか否かを判定し（ステップＡ８）、「ＯＮ」であれば、ステップＡ９〜Ａ１１を実行する。このステップＡ９〜Ａ１１は、リピートスイッチ８のトグル動作を実現するもので、リピートＲｅｐが既に「１」すなわちリピート状態にあるかどうか判定し（ステップＡ９）、リピート状態であれば、リピートＲｅｐを「０」にしてリピート状態を解除し（ステップＡ１０）、「０」すなわちリピート状態でなければ、リピートＲｅｐを「１」にしてリピート状態を設定するとともに、消音Ｄｍｐを「１」にして演奏音を中断するようにし、現在位置Ｃｕｒをリピートの先頭ＲｅｐＳｔ−１にセットする（ステップＡ１１）。この「−１」の演算は演算の整合性を図るための操作である。これにより、演奏中にリピート状態になった場合、一旦演奏音を消すとともに，リピートの先頭位置ＲｅｐＳｔから新たに演奏が開始される。
【００５４】
次いで、マーカースイッチ処理を行う（ステップＡ１２）。このマーカースイッチ処理は、マーカースイッチ１〜４の設定に応じたマーカーの処理を行うルーチンであり、詳細は後述する。
【００５５】
一方、前述のステップＡ２の判定において、タイプモードＴｙＭｏｄが「１」すなわちマーカータイプの選択状態にある場合、表示画面５に図８のマーカーの種類と番号を表示し、ユーザーに番号によるタイプ選択を促す（ステップＡ１３）。また、マーカータイプの選択状態中にＥＸＴスイッチ２２が押されたかを判定し（ステップＡ１４）、押されたら、処理を中断するために、タイプモードＴｙＭｏｄを「０」にし（ステップＡ１７）、タイプモードを抜け出る。ＥＸＴスイッチ２２が押されてなければ（ステップＡ１４）、番号スイッチ２１がＯＮか否か判定して（ステップＡ１５）、いずれかの番号スイッチ２１が押されるまで、ステップＡ１４の間をループして待機する。いずれかの番号スイッチ２１が押された場合、後述するマーカースイッチ処理ルーチンで設定されたマーカー番号Ｍｋｎｕｍを添字とするマーカータイプＭｋｔｙ（Ｍｋｎｕｍ）に、番号をセットし（ステップＡ１６）、タイプモードＴｙＭｏｄを「０」にして（ステップＡ１７）、タイプモードを抜ける。
【００５６】
次に、上述の楽譜表示処理ルーチンを図１０のフローチャートを参照して説明する。楽譜表示処理ルーチンが起動されると、楽譜表示先頭位置ＤｉｓｐＳｔから、楽譜表示未尾位置ＤｉｓｐＥｎｄまでの、５線譜、小節線、音部記号などを表示する（ステップＢ１）そして、表示クロックのループ変数ｉ（ｃｌｏｃｋ）を楽譜表示先頭位置ＤｉｓｐＳｔに初期化する（ステップＢ２）。この表示クロックのループ変数ｉは表示処理を行っている現在位置をクロック数で示すものである。
【００５７】
ループ変数ｉが示す表示位置に演奏データが存在すれば、その位置に音符を表示する（ステップＢ３）。前述した演奏データの音高を５線譜上の縦の位置に対応させ、発音タイミングを横の位置に対応させることで、表示位置が特定され、その位置に音符種で指定された音符を表示する。また、前に表示した音符との関係で、休符が必要な場合はこれも表示する。
【００５８】
次いで、マーカー番号に相当するループ変数ｊを「１」に初期化する。このループ変数ｊは、「１」がマーカーＡを、「２」がマーカーＢを、「３」がマーカー「Ｃ」を、「４」がマーカーＤをそれぞれ表す。マーカー変数ｊで指定されるマーカーのマーカー位置Ｐｏｓ（ｊ）が、表示クロックのループ変数ｉに等しい場合は、そのループ変数ｉが示す表示位置にマーカーを表示する（ステップＢ６）。このマーカー表示処理は、表示クロックの位置で、５線譜の上部の所定位置にマーカー番号ｊのマーカーをマーカータイプＭｋｔｙ（ｊ）のタイプで表示する。
【００５９】
マーカーの位置Ｐｏｓ（ｉ）がループ変数ｉに等しくない場合、またはステップＢ６でマーカー表示をしたら、マーカー番号のループ変数ｊを１つインクリメントし（ステップＢ７）、その値が「４」に達したか否かで４つのマーカーＡ、Ｂ、Ｃ、Ｄの表示の有無を全部調べたかを判定する（ステップＢ８）。「４」に達していなければ、４つのマーカーＡ、Ｂ、Ｃ、Ｄのうちまだマーカー表示の有無を調べていないマーカーがあるので、ステップＢ５以降の処理を繰り返す。一方、「４」に達していれば（ステップＢ８）、マーカーＡ、Ｂ、Ｃ、Ｄについてマーカー表示の有無を全部調べたことになる。この場合には、ループ変数ｉを１つインクリメントし、そのインクリメントしたループ変数ｉが楽譜表示先頭位置ＤｉｓｐＥｎｄに達したか否かを判定し（ステップＢ１０）、達してないければ、新たにインクリメントしたループ変数ｉで示される表示位置について、上述のステップＢ３以降の処理を繰り返し、一方、ループ変数ｉが楽譜表示先頭位置ＤｉｓｐｌＥｎｄに達していれば、表示すべき区間のすべての演奏データとマーカーの有無を全部調べたことになるので、リターンする。
【００６０】
次に、テンポクロック割込処理を図１１のフローチャートを参照して説明する。このテンポクロック割込処理ルーチンは、メインルーチンにてテンポクロック割込許可がされると、テンポクロック部３６で発生したテンポクロック割込によって、テンポに応じた各クロック毎のタイミングで起動される。例えば、４分音符の場合、４分音符は９６クロックに相当し、その各クロック毎に本ルーチンが起動される。このテンポクロック割込処理ルーチンでは、発音処埋とリピートの処理、および自動演奏の進行に伴って楽譜表示の更新処理を行う。
【００６１】
まず、現在の演奏位置Ｃｕｒを１つインクリメントする（ステップＣ１）。次いで、リピートＲｅp が「１」か否かを判定する（ステップＣ２）。「０」すなわちリピート状態でなければ、現在の演奏位置Ｃｕｒが曲の末尾位置ＳｏｎｇＥｎｄに達しているかを判定し（ステップＣ３）、達していれば、消音処理を行い、テンポクロック割込禁止をして（ステップＣ４）、自動演奏をストップさせる。曲の末尾位置ＳｏｎｇＥｎｄに達していなければ（ステップＣ３）、後述のステップＣ７以降に進んで、自動演奏を続行する。
【００６２】
リピートＲｅp が「１」すなわちリピート状態であれば（ステップＣ２）、現在の演奏位置Ｃｕｒがリピート末尾位置ＲｅｐＥｎｄに達しているか否かを判定する（ステップＣ５）。達していれば、リピート区間の先頭位置に戻ってリピート演奏を行うための更新処理を行う（ステップＣ６）。具体的には、ステップＣ６の処理では、現在の演奏位置Ｃｕｒをリピート先頭位置ＲｅｐＳｔへ戻し、楽譜表示先頭位置ＤｉｓｐＳｔも同様にリピート先頭位置ＲｅｐＳｔへ戻し、楽譜表示末尾位置ＤｉｓｐＥｎｄをリピート先頭位置ＲｅｐＳｔから楽譜表示範囲ＭｅａｓＬだけ後に離れた位置、すなわち
ＤｉｓｐＥｎｄ←ＲｅｐＳｔ＋ＭｅａｓＬ
とするとともに、リピート末尾位置ＲｅｐＥｎｄで発音されていた音の消音を指示するために消音Ｄｍｐを「１」にする。
【００６３】
この更新処理が終わったら（ステップＣ６）、あるいはリピート状態でなく、かつ曲の末尾位置ＳｏｎｄＥｎｄに達していないと判定されたら（ステップＣ３）、ステップＣ７以降に進んで自動演奏を続行する。まず、消音Ｄｍｐが「１」か否かを判定する（ステップＣ７）。この消音Ｄｍｐは、演奏位置Ｃｕｒがリピート末尾位置ＲｅｐＥｎｄに達した場合やマーカーで他の位置にジャンプを指示した場合などに「１」にセットされ、現在位置での消音を指示するものである。「１」であれば現在発音中の音を消音するとともに、消音Ｄｍｐ＝０にして、消音完了の状態にする。
【００６４】
次いで、現在の演奏位置Ｃｕｒでの発音を指示し（ステップＣ９）、その現在の演奏位置Ｃｕｒが楽譜表示末尾位置ＤｉｓｐＥｎｄを超えているか否か判定し（ステップＣ１０）、超えていなければ、リターンして、今回のクロックサイクルでのテンポクロック割込処理を終了する。超えていれば、楽譜表示の更新処理を行う（ステップＣ１１〜Ｃ１３）。この更新処理では、現在の楽譜表示先頭位置ＤｉｓｐＳｔに楽譜表示範囲ＭｅａｓＬを足したものを新たな楽譜表示先頭位置ＤｉｓｐＳｔとし、現在の楽譜表示末尾位置ＤｉｓｐＥｎｄに楽譜表示範囲ＭｅａｓＬを足したものを新たな楽譜表示末尾位置ＤｉｓｐＥｎｄとする。さらに、更新した楽譜表示末尾位置ＤｉｓｐＥｎｄが曲の末尾位置ＳｏｎｇＥｎｄに達しているか否かを判定し（ステップＣ１２）、達していれば、楽譜表示末尾位置ＤｉｓｐＥｎｄは曲の末尾位置ＳｏｎｇＥｎｄとする（ステップＣ１３）。これらの処理の後、リターンして、今回のクロックサイクルでのテンポクロック割込を終了する。
【００６５】
次に、マーカースイッチ処理ルーチンを図１２〜図１７のフローチャートを参照して以下に詳細に説明する。このマーカースイッチ処理ルーチンでは、マーカースイッチ群１〜４、１１〜２０のＯＮ／ＯＦＦ状態を調べて、それらの状態に応じたマーカー操作を行うもので、マーカーＡ、Ｂにより指定される位置へのジャンプ処理およびマーカーＡ、Ｂにより指定されるリピート区間の変更操作や、マーカーＣ、Ｄのセットと演奏位置のジャンプ処理などが行われる。
【００６６】
まず、図１２のフローチャートにおいては、モードスイッチ１３〜１８とムーブ単位指定スイッチ１９、２０の状態が検出される。すなわち、マーカースイッチ処理が起動されると、メジャー（Ｍ）スイッチ１９がＯＮか否か判定され（ステップＤ１）、ＯＮであれば、マーカームーブの単位Ｍｏｖｅを、ベースＢａｓｅ×ビートＢｅａｔに設定する（ステップＤ２）。これは１小節の長さに相当する。一方、メジャースイッチ１９がＯＦＦであれば（ステップＤ１）、ビート（Ｂ）スイッチ２０がＯＮか否か判定し（ステップＤ３）、ＯＮであれば、マーカームーブの単位ＭｏｖｅをベースＢａｓｅに設定する（ステップＤ４）。これは１拍の長さに相当する。
【００６７】
この後、モード番号Ｍｄｎｕｍを「０」に、モード番号のループ変数ｉを「１」に初期化しておく（ステップＤ５）。次いで、ｉ番目のモードレジスタＭｄｓｗ（ｉ）がＯＮか否かを判定し（ステップＤ６）、ＯＦＦなら直ちに、あるいはＯＮならモード番号Ｍｄｎｕｍにループ変数ｉをセットした後に（ステップＤ７）、ループ変数ｉを１つインクリメントし（ステップＤ８）、このインクリメントしたループ変数ｉが「６」を超えているか否か判定する（ステップＤ９）。「６」を超えていれば、モードスイッチ１３〜１８の全てについてＯＮ／ＯＦＦ状態のチェックが終了したことになる。よって、「６」以下であれば、ステップＤ６に戻って以降のステップを繰り返す。これにより、モード番号Ｍｄｎｕｍには、モードスイッチ１３〜１８のうち、ＯＮのスイッチに相当する番号がセットされる。
【００６８】
すべてのモードスイッチのチェックを終えたら、マーカースイッチ群の操作状態に応じて、以下のように処理を変える。まず、シフトスイッチ１１、１２が操作された場合の処理を図１３のフローチャートに従って説明する。
【００６９】
図１３において、シフトスイッチ１１、１２がＯＮにされたか否かを判定し（ステップＥ０）、ＯＮである場合は以下のシフト処理を行う。シフト処理では、マーカーＡ、Ｂで区切られるリピート区間を、その区間長ｄｉｓｔを保ったまま、楽譜上で右側または左側に平行移動の形で区間長ｄｉｓｔだけ移動させる。
【００７０】
まず、リバースｒｅｖが「１」か否かを判定する（ステップＥ１）。リバースｒｅｖが「１」とは、マーカーＡ、Ｂの前後が逆になっていてマーカーＢの方が楽譜上で左側（前側）にある場合である。マーカーＡ、Ｂの前後状態に応じて以下のように、テンポラリ位置Ｐｏｓ１、Ｐｏｓ２を設定する。このテンポラリ位置Ｐｏｓ１、Ｐｏｓ２はシフト処理を行うために用いるテンポラリなレジスタの名称である。リバースｒｅｖが「０」の場合には、テンポラリ位置Ｐｏｓ１にマーカーＡの位置Ｐｏｓ（１）を、またテンポラリ位置Ｐｏｓ２にマーカーＢの位置Ｐｏｓ（２）をそれぞれセットし（ステップＥ２）、リバースｒｅｖが「１」の場合には、テンポラリ位置Ｐｏｓ１にマーカーＢの位置Ｐｏｓ（２）を、またテンポラリ位置Ｐｏｓ２にマーカーＡの位置Ｐｏｓ（１）をそれぞれセットする（ステップＥ３）。この処理は、リピート区間のうち、前側のマーカー位置をＰｏｓ１，後側のマーカー位置をＰｏｓ２として扱うためである。
【００７１】
次いで、マーカーシフトスイッチ１１、１２のうち、いずれがＯＮにされたかを判定する。すなわち、右シフトするためのマーカーシフトＲスイッチ１２がＯＮか否かを判定する。ＯＮすなわち右シフトである場合には、リピート区間の後側マーカー位置Ｐｏｓ２が曲の末尾位置ＳｏｎｇＥｎｄを超えているか否か判定し（ステップＥ９）、超えていなければ、前側マーカー位置Ｐｏｓ１に後側マーカー位置Ｐｏｓ２をセットし、後側マーカー位置Ｐｏｓ２に区間長ｄｉｓｔを加算する（ステップＥ１０）。これにより、リピート区間は区間長ｄｉｓｔだけ全体に右側にシフトする。さらに、シフト後の後側マーカー位置Ｐｏｓ２が曲の末尾位置ＳｏｎｇＥｎｄを超えたか否か判定し（ステップＥ１１）、超えていれば、後側マーカー位置Ｐｏｓ２に曲の末尾位置ＳｏｎｇＥｎｄをセットする（ステップＥ１２）。一方、シフト前の後側マーカー位置Ｐｏｓ２が既に曲の末尾位置ＳｏｎｇＥｎｄを超えていれば（ステップＥ９）、右シフトは不可能であるから、上記ステップＥ１０〜Ｅ１２は行わない。
【００７２】
一方、マーカーシフトＲスイッチ１２がＯＦＦ（すなわちマーカーシフトｌスイッチ１１がＯＮ）であれば（ステップＥ４）、これは左シフトである。この場合、リピート区間の前側マーカー位置Ｐｏｓ１が曲の先頭位置「０」より前か否か判定し（ステップＥ５）、前でなければ、後側マーカー位置Ｐｏｓ２に前側マーカー位置Ｐｏｓ１をセットし、前側マーカー位置Ｐｏｓ１から区間長ｄｉｓｔを減算する（ステップＥ６）。これにより、リピート区間は区間長ｄｉｓｔだけ全体に左側にシフトする。さらに、シフト後の前側マーカー位置Ｐｏｓ１が曲の先頭位置「０」より前か否か判定し（ステップＥ７）、前であれば、前側マーカー位置Ｐｏｓ１に曲の先頭位置「０」をセットする（ステップＥ８）。一方、シフト前の前側マーカー位置Ｐｏｓ１が既に曲の先頭位置「０」より前であれば（ステップＥ５）、左シフトは不可能であるから、上記ステップＥ６〜Ｅ８は行わない。
【００７３】
この後、リピート区間の先頭位置ＲｅｐＳｔに前側マーカー位置Ｐｏｓ１をセットし、リピート区間の末尾位置ＲｅｐＥｎｄに後側マーカー位置Ｐｏｓ２をセットする（ステップＥ１６）。そしてリバースｒｅｖが「１」か否かを判定し（ステップＥ１３）、その結果に応じて、右シフトまたは左シフトにより更新したテンポラリ位置Ｐｏｓ１、Ｐｏｓ２の内容を、マーカー位置Ｐｏｓ（１）、Ｐｏｓ（２）に書き戻す。すなわち、リバースｒｅｖが「０」であれば、マーカー位置Ｐｏｓ（ｌ）、Ｐｏｓ（２）  にテンポラリ位置ＰｏＳ１、Ｐｏｓ２をそれぞれ書き戻し（ステップＥ１４）、リバースｒｅｖが「１」であれば、マーカー位置Ｐｏｓ（１）、Ｐｏｓ（２）  にテンポラリ位置Ｐｏｓ２、Ｐｏｓ１をそれぞれ書き戻して（ステップＥ１５）、リターンする。
【００７４】
一方、操作されたスイッチがシフトスイッチ１１、１２でない場合には（ステップＥ０）、図１４〜図１７に示すような、モードスイッチ１３〜１８と組み合わせてマーカースイッチ１〜４を使用する場合の処埋となる。ここで、図１４は主としてマーカーＣ、Ｄに関するセットとジャンプ処理を説明するフローチャート、図１５は主としてマーカーＡ、Ｂに関するジャンプ処理、ムーブ処理を説明するフローチャート、図１６、図１７は主としてマーカーＡ、Ｂに関するリピート区間の拡大／縮小処理を説明するフローチャートである。
【００７５】
まず、図１４において、マーカー番号のループ変数ｊを「１」に初期化した後に（ステップＦ０）、ｊ番目のマーカースイッチＭｋｓｗ（ｊ）がＯＮか否かを判定し（ステップＦ１）、ＯＮでなければ、Ｍｋｏｎ（ｊ）を「０」にクリアする（ステップＦ２）。このＭｋｏｎ（ｊ）は、マーカースイッチがＯＮになった時の変化を検出するための変数である。マーカースイッチＭｋｓｗ（ｊ）がＯＮであれば、Ｍｋｏｎ（ｊ）が「１」か否かを判定し（ステップＦ３）、Ｍｋｏｎ（ｊ）が既に「１」になっている場含は、マーカースイッチが新たに押されたのではないので、次のマーカースイッチの状態を調べるためにループ変数ｊを１つインクリメントする（ステップＦ４）。Ｍｋｏｎ（ｊ）が「１」でない場合には、新たにマーカースイッチが押されたので、Ｍｋｏｎ（ｊ）に「１」をセットし（ステップＦ４）、ステップＦ５以降に進む。このように、ステップＦ１〜Ｆ３の処理は、ステップＦ５以降の処理を、マーカースイッチのＯＮ操作に対して１回だけ実行するようにするためのものである。
【００７６】
ステップＦ３でマーカースイッチが新たに押されたと判定された場合には、モード番号Ｍｄｎｕｍがマーカータイプモードを示す「６」か否かを調べて、「６」すなわちマーカータイプモードが指定されている場合は、マーカータイプモードに入るので、タイプモードＴｙＭｏｄに「１」をセットし、マーカー番号Ｍｋｎｕｍにループ変数ｊをセットして（ステップＦ６）、リターンする。この処理により、前述のようにメインルーチンでマーカータイプモードの処理が行われる。
【００７７】
モード番号Ｍｄｎｕｍがマーカータイプモードを示すものでなかった場合（ステップＦ５）、マーカー番号のループ変数ｊが「１」または「２」かを判定する（ステップＦ７）。これはマーカースイッチ１または２でマーカーＡまたはＢが指定されたかを判定するもので、マーカーＡまたはＢの場合には後述の図１５のフローチャートの処理に進む。マーカーＡまたはＢでない場合には、マーカーＣまたはＤが指定されたものとなる。この場合、マーカーＣまたはＤに関しての処理が実行される。まず、モード番号Ｍｄｎｕｍがマーカークリアモードを指定する「５」か否かを判定し（ステップＦ８）、マーカークリアモードが指定されている場合は、そのマーカーの位置Ｐｏｓ（ｊ）にクリアを意味する「−１」をセットして（ステップＦ９）、マーカーＣまたはＤの設定を解除する。
【００７８】
一方、マーカークリアモードが指定されていない場合には（ステップＦ８）、モード番号Ｍｄｎｕｍが、いずれのモードスイッチ１３〜１８も無操作であることを示す「０」か否かを判定する（ステップＦ１０）。「０」でない場合、すなわちいずれかのモードスイッチ１３〜１８が操作されていたとしても、マーカーＣ、Ｄについては、いずれのモードも機能しないので、ループ変数ｊを更新するステップＦ１４に抜ける。
【００７９】
モードスイッチ１３〜１８がいずれも無操作の場合、前述したように、マーカーＣ、Ｄについては、マーカーＣまたはＤのマーカースイッチ３または４が押されれば、まだマーカーＣまたはＤがセットされていなければ現在の演奏位置にマーカーＣまたはＤをセットし、既にセットされていれば現在の演奏位置をそのセット済のマーカー位置までジャンプさせる操作を行う。よって、マーカーＣまたはＤの位置Ｐｏｓ（ｊ）がクリアを意味する「−１」か否かを判定し（ステップＦ１１）、クリアすなわちマーカー未設定であれば、その位置Ｐｏｓ（ｊ）に現在の演奏位置Ｃｕｒをセッシする（ステップＦ１３）。マーカー既設定であれば（ステップＦ１１）、現在の演奏位置Ｃｕｒに位置Ｐｏｓ（ｊ）をセットし、楽譜表示の先頭位置ＤｉｓｐＳｔに位置Ｐｏｓ（ｊ）をセットし、楽譜表示の末尾位置ＤｉｓｐＳｔに位置Ｐｏｓ（ｊ）と楽譜表示範囲ＭｅａｓＬを加算したものをセットするとともに、消音Ｄｍｐに「１」をセットして現在発音中の音の消音処理を指示する（ステップＦ１４）。これにより、既に設定されているマーカーＣまたはＤの位置に、演奏位置、表示位置ともにジャンブする。
【００８０】
この後、ループ変数ｊをインクリメントし（ステップＦ１４）、すべてのマーカースイッチの処理を終えたかを判定し（ステップＦ１５）、終わっていない場合は、ステップＦ１へ戻り、終わったらリターンする。この処理は、後述の図１５、図１６のフローが終了した時にも行われる。
【００８１】
次に、ステップＦ７の判定で、マーカーＡ、Ｂに対応するマーカースイッチ１、２が操作されたと判定された場合の処理を図１５、図１６のフローチャートに従って説明する。まず、図１５のフローチャートについて説明する。この図１５の処理は、マーカーＡ、Ｂについてモード番号Ｍｄｎｕｍが「０」、「５」、「４」、「３」すなわちモードスイッチが押されていない、クリアモードにある、あるいは移動モードにある場合の処埋である。
【００８２】
まず、モード番号Ｍｄｎｕｍが全モードスイッチ１３〜１８の無操作を意味する「０」か否かを判定する（ステップＧ１）。全モードスイッチ１３〜１８が無操作であれば、マーカーＡ、Ｂは、現在の演奏位置をそのセット済のマーカー位置までジャンプさせる操作を行う。よって、現在の演奏位置Ｃｕｒに位置Ｐｏｓ（ｊ）をセットし、楽譜表示の先頭位置ＤｉｓｐＳｔに位置Ｐｏｓ（ｊ）をセットし、楽譜表示の末尾位置ＤｉｓｐＥｎｄに位置Ｐｏｓ（ｊ）と楽譜表示範囲ＭｅａｓＬを加算したものをセットするとともに、消音Ｄｍｐに「１」をセットして現在発音中の音の消音処理を指示する（ステップＧ３）。これにより、既に設定されているマーカーＡまたはＢの位置に、演奏位置、表示位置ともにジャンプする。
【００８３】
モードスイッチ１３〜１８のいずれかが操作されていると判定された場合（ステップＧ１）、モード番号ＭｄｎｕｍがマーカーＡまたはＢを右側に移動させるマーカームーブＲモードを指定する「４」であるか否かを判定する（ステップＧ６）。マーカームーブＲモードであれば、マーカーＡまたはＢの現在の位置Ｐｏｓ（ｊ）に移動単位Ｍｏｖｅを加算してマーカーＡまたはＢを楽譜の右（曲の後ろ方向）に移動させる（ステップＧ７）。そして、その移動の結果、マーカーＡまたはＢの位置Ｐｏｓ（ｊ）が曲の末尾位置ＳｏｎｇＥｎｄを超えたか否かを判定し（ステップＧ８）、超えてしまった場合は、マーカーＡまたはＢの位置Ｐｏｓ（ｊ）を曲の末尾位置ＳｏｎｇＥｎｄとする（ステップＧ９）。
【００８４】
一方、マーカームーブＲモードでなければ（ステップＧ６）、モード番号ＭｄｎｕｍがマーカーＡまたはＢを左側に移動させるマーカームーブＬモードを指定する「３」であるか否かを判定する（ステップＧ１０）。マーカームーブＬモードであれば、マーカーＡまたはＢの現在の位置Ｐｏｓ（ｊ）から移動単位Ｍｏｖｅを減算してマーカーＡまたはＢを楽譜の左（曲の前方向）に移動させる（ステップＧ１１）。そして、その移動の結果、マーカーＡまたはＢの位置Ｐｏｓ（ｊ）が曲の先頭位置「０」より前になったかを判定し（ステップＧ１２）、前になってしまった場合は、マーカーＡまたはＢの位置Ｐｏｓ（ｊ）を曲の先頭位置「０」とする（ステップＧ１３）。
【００８５】
以上のマーカーＡまたはＢのジャンプ処理、移動処理が終わったら、マーカーＡまたはＢの位置が変更されたので、関係する変数を更新する（ステップＧ３〜Ｇ５）。すなわち、マーカーＡとＢの位置Ｐｏｓ（１）とＰｏｓ（２）の大小を比較して（ステップＧ３）、マーカーＡとＢのいずれが前にあるかを調べる。マーカーがＡ、Ｂの順であれば、リバースｒｅｖを「０」に設定し、リピートの区間長ｄｉｓｔを「Ｐｏｓ（２）−Ｐｏｓ（１）」で求めてセットし、リピート区間の先頭位置ＲｅｐＳｔにマーカーＡの位置Ｐｏｓ（１）をセットし、リピート区間の末尾位置ＲｅｐＥｎｄにマーカーＢの位置Ｐｏｓ（２）をセットする（ステップＧ５）。一方、マーカーがＢ、Ａの順であれば、リバースｒｅｖを「１」に設定し、リピートの区間長ｄｉｓｔを「Ｐｏｓ（１）−Ｐｏｓ（２）」で求めてセットし、リピート区間の先頭位置ＲｅｐＳｔにマーカーＢの位置Ｐｏｓ（２）をセットし、リピート区間の末尾位置ＲｅｐＥｎｄにマーカーＡの位置Ｐｏｓ（１）をセットする（ステップＧ４）。
【００８６】
一方、モード番号Ｍｄｎｕｍがムーブのモードを指定していない場合には、図１６、図１７のフローチャートで示されるマーカージャンプモードの処理が実行される。このジャンプ処理では、リピート区間のうちの前方にあるマーカーＡまたはＢが前方にジャンプするよう指示された場合は、そのマーカーＡまたはＢはマーカー間の距離（区間長）が２倍になる位置にジャンブし、後方にジャンプするよう指示された場合は、マーカー間の距離（区間長）が２分の１になる位置にジャンブする。一方、リピート区間の後方にあるマーカーＢまたはＡが前方にジャンプするよう指示された場合は、そのマーカーはマーカー間の距離（区間長）が２分の１になる位置にジャンプし、後方にジャンプするよう指示された場合は、マーカー間の距離（区間長）が２倍になる位置にジャンプする。
【００８７】
まず、モード番号Ｍｄｎｕｍが、マーカーＡまたはＢを右側にジャンプさせる，マーカージャンプＲモードを指定する「２」か否かを判定する（ステップＨ１）。「２」ならマーカージャンプＲモード、「２」でなければマーカーＡまたはＢを左側にジャンプさせるマーカージャンプＬモードである。
【００８８】
マーカージャンプＲモードであれば、マーカーＡまたはＢのジャンプの仕方には次の４通りがある。
（１）リピート区間の前側のマーカーＡを右ジャンプ、後側のマーカーＢを固定。すなわち、マーカーの順序がＡ、Ｂの状態でリピート区間を縮小する。
（２）リピート区間の前側のマーカーＢを固定、後側のマーカーＡを右ジャンプ。すなわち、マーカーの順序がＢ、Ａでリピート区間を拡張する。
（３）リピート区間の前側のマーカーＡを固定、後側のマーカーＢを右ジャンプ。すなわち、マーカーの順序がＡ、Ｂの状態でリピート区間を拡大する。
（４）リピート区間の前側のマーカーＢを右ジャンプ、後側のマーカーＡを固定。すなわち、マーカーの順序がＢ、Ａの状態でリピート区間を縮小する。
【００８９】
一方、マーカージャンプＬモードであれば、マーカーＡまたはＢのジャンプの仕方には次の４通りがある。
（５）リピート区間の前側のマーカーＡを左ジャンプ、後側のマーカーＢを固定。すなわち、マーカーの順序がＡ、Ｂの状態でリピート区間を拡張する。
（６）リピート区間の前側のマーカーＢを固定、後側のマーカーＡを左ジャンプ。すなわち、マーカーの順序がＢ、Ａでリピート区間を縮小する。
（７）リピート区間の前側のマーカーＡを固定、後側のマーカーＢを左ジャンプ。すなわち、マーカーの順序がＡ、Ｂの状態でリピート区間を縮小する。
（８）リピート区間の前側のマーカーＢを左ジャンプ、後側のマーカーＡを固定。すなわち、マーカーの順序がＢ、Ａの状態でリピート区間を拡大する。
【００９０】
図１６、図１７中において、上述の（１）〜（８）に対応する処理のフロー経路には同じ（１）〜（８）の符号を付して対応付けてある。以下、これらの処理について詳細に説明する。
【００９１】
マーカージャンプＲモードと判定されると（ステップＨ１）、ループ変数ｊが「１」か否か、すなわち処理対象がマーカーＡかＢかを判定し（ステップＧ２）、マーカーＡであれば、リバースｒｅｖが「１」か否かでそのマーカーＡがリピート区間の前側か後側かを判定する（ステップＨ３）。リバースｒｅｖ＝０であれば、前記（１）のリピート前側にあるマーカーＡの処理であり、マーカーＡの位置Ｐｏｓ（１）を現在の間隔ｄｉｓｔの半分だけ右側の位置に進め（ステップＨ４）、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【００９２】
リバースｒｅｖ＝１であれば、前記（２）のリピート後側にあるマーカーＡの処理であり、マーカーＡの位置Ｐｏｓ（１）を現在の間隔ｄｉｓｔ分だけ右側の位置に進め（ステップＨ５）、リピート区間を現在の２倍にする。マーカーＡを右ジャンプさせた結果、その位置Ｐｏｓ（１）が曲の末尾位置ＳｏｎｇＥｎｄを超えたかを判定し（ステップＨ６）、超えた場合には、位置Ｐｏｓ（１）に曲の末尾位置ＳｏｎｇＥｎｄをセットする（ステップＨ７）。
【００９３】
一方、ステップＨ２の判定で、処理対象がマーカーＢと判定されると、リバースｒｅｖが「１」か否かでそのマーカーＢがリピート区間の前側か後側かを判定する（ステップＨ８）。リバースｒｅｖ＝０であれば、前記（３）のリピート後側にあるマーカーＢの処理であり、マーカーＢの位置Ｐｏｓ（２）を現在の間隔ｄｉｓｔ分だけ右側の位置に進め（ステップＨ９）、リピート区間を現在の２倍にする。マーカーＢを右ジャンプさせた結果、その位置Ｐｏｓ（２）が曲の末尾位置ＳｏｎｇＥｎｄを超えたかを判定し（ステップＨ１０）、超えた場合には、位置Ｐｏｓ（２）に曲の末尾位置ＳｏｎｇＥｎｄをセットする（ステップＨ１１）。
【００９４】
一方、ステップＨ８でリバースｒｅｖ＝１であれば、前記（４）のリピート前側にあるマーカーＢの処理であり、マーカーＢの位置Ｐｏｓ（２）を現在の間隔ｄｉｓｔの半分だけ右側の位置に進め（ステップＨ１２）、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【００９５】
一方、ステップＨ１においてマーカージャンプＬモードと判定されると、ループ変数ｊが「１」か否か、すなわち処理対象がマーカーＡかＢかを判定し（ステップＧ１３）、マーカーＡであれば、リバースｒｅｖが「１」か否かでそのマーカーＡがリピート区間の前側か後側かを判定する（ステップＨ１４）。リバースｒｅｖ＝０であれば、前記（５）のリピート前側にあるマーカーＡの処理であり、マーカーＡの位置Ｐｏｓ（１）を現在の間隔ｄｉｓｔ分だけ左側の位置に戻し（ステップＨ５）、リピート区間を現在の２倍にする。マーカーＡを左ジャンプさせた結果、その位置Ｐｏｓ（１）が曲の先頭位置「０」よりも前になったかを判定し（ステップＨ１６）、前になった場合には、位置Ｐｏｓ（１）に曲の先頭位置「０」をセットする（ステップＨ１７）。
【００９６】
ステップＨ１４においてリバースｒｅｖ＝１であれば、前記（６）のリピート後側にあるマーカーＡの処理であり、マーカーＡの位置Ｐｏｓ（１）を現在の間隔ｄｉｓｔの半分だけ左側の位置に戻し（ステップＨ４）、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【００９７】
一方、ステップＨ１３の判定で、処理対象がマーカーＢと判定されると、リバースｒｅｖが「１」か否かでそのマーカーＢがリピート区間の前側か後側かを判定する（ステップＨ１９）。リバースｒｅｖ＝０であれば、前記（７）のリピート後側にあるマーカーＢの処理であり、マーカーＢの位置Ｐｏｓ（２）を現在の間隔ｄｉｓｔの半分だけ左側の位置に戻し（ステップＨ２０）、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【００９８】
一方、ステップＨ１９においてリバースｒｅｖ＝１であれば、前記（８）のリピート前側にあるマーカーＢの処理であり、マーカーＢの位置Ｐｏｓ（２）を現在の間隔ｄｉｓｔ分だけ左側の位置に戻し（ステップＨ２１）、リピート区間を現在の２倍にする。マーカーＢを左ジャンプさせた結果、その位置Ｐｏｓ（２）が曲の先頭位置「０」よりも前になったかを判定し（ステップＨ２２）、前になった場合には、位置Ｐｏｓ（２）に曲の先頭位置「０」をセットする（ステップＨ２３）。
【００９９】
これらステップＨ１〜Ｈ２３の処理が終わると、マーカーＡ、Ｂの位置が変更されるので、新たなマーカー間隔ｄｉｓｔを計算するとともに、リピート区間の先頭位置ＲｅｐＳｔ、末尾位置ＲｅｐＥｎｄを設定する（ステップＨ２４〜Ｈ２６）。すなわち、リバースｒｅｖが「１」か否かでマーカーＡ、Ｂの順序を判定し（ステップＨ２４）、マーカーＡがＢより後ろに設定されている場合には、マーカー間隔ｄｉｓｔに「Ｐｏｓ（１）−Ｐｏｓ（２）」をセットするとともに、リピート区間の先頭位置ＲｅｐＳｔ、末尾位置ＲｅｐＥｎｄにそれぞれＰｏｓ（２）、Ｐｏｓ（１）を設定する（ステップＨ２６）。また、マーカーＡがＢより前に設定されている場合には、マーカー間隔ｄｉｓｔに「Ｐｏｓ（２）−Ｐｏｓ（１）」をセットするとともに、リピート区間の先頭位置ＲｅｐＳｔ、末尾位置ＲｅｐＥｎｄにそれぞれＰｏｓ（１）、Ｐｏｓ（２）を設定する（ステップＨ２５）。
【０１００】
本発明の実施にあたっては、上述したものの他にも種々の変形形態が可能である。例えば、上述の実施例では、マーカーシフトは、前のリピート区間の前または後に新たなリピート区間が来るようにリピート区間を移動させているが、本発明はこれに限られるものではなく、小節単位、拍単位でリピート区間の前後のマーカーＡ、Ｂを移動させるものでもよい。この場合、その移動量を設定する設定手段を設けて、設定した移動量だけ移動させるとよい。
【０１０１】
また、上述の実施例では、マーカージャンプモードでのリピート区間の拡大または縮小を、拡大の場合には現リピート区間の２倍、縮小の場合には現リピート区間の２分の１としたが、本発明はこれに限られるものではなく、この拡大量または縮小量は任意であり、例えば拡大の場合には整数倍、縮小の場合には整数分の１というように設定できるようにしてもよい。
【０１０２】
また、上述の実施例装置では、マーカージャンプモードでのリピート区間の拡大または縮小を、ジャンプスイッチ１３、１４とマーカーＡ、Ｂを指定するマーカースイッチ１、２を用いて指示するようにしたが、本発明はこのようなスイッチ配置に限られるものではなく、例えば、リピート区間を楽譜上で前側または後側に拡大することを指示する拡大指示操作子と、リピート区間を楽譜上で前側または後側に縮小することを指示する縮小指示操作子を設け、拡大指示操作子で前側への拡大が指示された場合にはリピート区間の前側のマーカーを前側に、また後側への拡大が指示された場合にはリピート区間の後側のマーカーを後側に移動とさせ、縮小指示操作子で後側への縮小が指示された場合にはリピート区間の前側のマーカーを後側に、また前側への縮小が指示された場合にはリピート区間の後側のマーカーを前側に移動とさせるようにしてもよい。
【０１０３】
【発明の効果】
以上に説明したように、本発明によれば、すくない操作回数でリピート区間のマーカーを演奏教習などに適した位置に簡単に移動させることができ、マーカー移動の操作性の向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の実施例装置におけるマーカー移動の操作態様を説明する図である。
【図２】本発明の一実施例としてのマーカー操作装置を搭載した自動演奏装置を示す図である。
【図３】実施例装置における演奏データのフォーマットを示す図である。
【図４】実施例装置で用いる音楽記号付きマーカーを説明する図である。
【図５】実施例装置におけるパネル上の操作子を説明する図である。
【図６】実施例装置におけるモードスイッチに関する変数を説明する図である。
【図７】実施例装置におけるマーカースイッチに関する変数を説明する図である。
【図８】実施例装置で使用されるマーカーの音楽記号の種類と変数を説明する図である。
【図９】実施例装置で実行されるメインルーチンを示すフローチャートである。
【図１０】実施例のメインルーチンにおける楽譜表示ルーチンを示すフローチャートである。
【図１１】実施例装置で実行されるテンポクロック割込処理ルーチンを示すフローチャートである。
【図１２】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン（モードスイッチのスキャン処理部分）を示すフローチャートである。
【図１３】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン（マーカーＡ、Ｂのシフト操作処理部分）を示すフローチャートである。
【図１４】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン（マーカーＣ、Ｄのセット／ジャンプ処理部分）を示すフローチャートである。
【図１５】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン（マーカーＡ、Ｂのセット／ジャンプ処理、クリア処理、ムーブ処理部分）を示すフローチャートである。
【図１６】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン（マーカーＡ、Ｂの拡大／縮小のジャンプ処理部分）を示すフローチャートである。
【図１７】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン（マーカーＡ、Ｂの拡大／縮小のジャンプ処理部分）を示すフローチャートである。
【符号の説明】
１〜４  マーカースイッチ
５  表示画面
６  プレイスイッチ
７  ストップスイッチ
８  リピートスイッチ
１１、１２  シフトスイッチ
１３、１４  ジャンプスイッチ
１５、１６  ムーブスイッチ
１７  クリアスイッチ
１８  タイプスイッチ
１９、２０  移動単位指定スイッチ
２１  タイプ番号指定スイッチ
２２  ＥＸＴスイッチ
３１  ＣＰＵ（中央処理装置）
３２  ＲＡＭ（ランダム・アクセス・メモリ）
３３  ＲＯＭ（リード・オンリー・メモリ）
３４  操作子群
３５  表示装置
３６  テンポクロック部
３７  音源
３８  増幅器
３９  スピーカ
【図１】
0003796001.tif 000002
【図２】
0003796001.tif 000003
【図３】
0003796001.tif 000004
【図４】
0003796001.tif 000005
【図５】
0003796001.tif 000006
【図６】
0003796001.tif 000007
【図７】
0003796001.tif 000008
【図８】
0003796001.tif 000009
【図９】
0003796001.tif 000010
【図１０】
0003796001.tif 000011
【図１１】
0003796001.tif 000012
【図１２】
0003796001.tif 000013
【図１３】
0003796001.tif 000014
【図１４】
0003796001.tif 000015
【図１５】
0003796001.tif 000016
【図１６】
0003796001.tif 000017
【図１７】
0003796001.tif 000018