JP3796001B2 - 自動演奏装置のマーカー操作装置 - Google Patents
自動演奏装置のマーカー操作装置 Download PDFInfo
- Publication number
- JP3796001B2 JP3796001B2 JP10031097A JP10031097A JP3796001B2 JP 3796001 B2 JP3796001 B2 JP 3796001B2 JP 10031097 A JP10031097 A JP 10031097A JP 10031097 A JP10031097 A JP 10031097A JP 3796001 B2 JP3796001 B2 JP 3796001B2
- Authority
- JP
- Japan
- Prior art keywords
- marker
- section
- repeat
- switch
- designated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、自動演奏装置において、演奏教習などに適したマーカー移動を行えるようにしたマーカー操作装置に関する。
【0002】
【従来の技術】
一般に自動演奏装置においては、演奏データ中の任意の位置を指定することができ、指定された指標を「マーカー」と称している。こうしたマーカーを利用して、例えば特開平7−64547号公報に示されるように、2箇所にマーカーを設定し、この間の部分を繰り返し演奏するリピート機能が提供されている。そして、こうしたリピート機能は、演奏教習において、繰返し練習を行う場合によく利用されている。
【0003】
一般にある曲の練習を行う場合、曲を短い区間に区切って、なんども繰り返して演奏することによって、より習得が容易に行える。この繰返し練習の仕方としては、
1. 1小節目のみ練習
2. 2小節目のみ練習
3. 1小節目と2小節目を通して練習
4. 3小節目のみ練習
5. 4小節目のみ練習
6. 3小節目と4小節目を通して練習
7. 1小節目から4小節目まで通して練習
というように、小節の2のべき乗の単位で練習を行う方法がよくとられる。また、曲の始めから2小節単位に区切って順次に練習を行う方法もよくとられる。さらに、1小節でも練習が難しい場合は、さらに半分あるいは拍単位で繰り返し練習を行うこともある。
【0004】
このような練習方法を自動演奏装置で採る場合、1小節あるいは2小節単位でリピート区間を移動させたり、リピート区間を前方あるいは後方に2倍に拡大したり半分に縮小したりするという操作が必要になる。
【0005】
しかしながら、従来のマーカー設定方法によれば、リピート区間を前方あるいは後方に2倍あるいは半分の単位で変更する場合は、移動させる側のマーカーを一旦消去し、新たな位置に移動し、そこにマーカーを再設定するという煩雑な操作を必要としていた。
【0006】
また、l小節あるいは2小節単位でリピート区間を移動させる場合、リピート区間両端の2つのマーカーを消して、新たなリピート区間の先頭の位置および末尾の位置に移動して、マーカーを設定し直すという操作をとらなければならず、非常に煩雑な操作を必要としていた。
さらに、いずれかのマーカーを拍あるいは小節などの音楽的な区切りの意味のある単位で動かしたい場合でも、移動させるマーカーを一旦消去して、新たな位置に移動し、そこにマーカーを再度設定するという煩雑な操作を必要としていた。
【0007】
本発明はかかる問題点に鑑みてなされたものであり、自動演奏装置において、少ない操作で、所望の位置にマーカーを移動できるようにすることを目的とする。
【0008】
【課題を解決するための手段および作用】
上述の課題を解決するために、本発明に係る自動演奏装置のマーカー操作装置は、一つの形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間の前側または後側のマーカーのいずれか一方を指定するとともに、指定されたマーカーを演奏進行方向または逆方向のいずれに移動するかを指定するマーカー指定手段と、該指定されたマーカーを該指定された方向に移動することによって、該繰返し区間が拡大されるのか縮小されるのかを判定する拡大縮小判定手段と、該拡大縮小判定手段の判定結果と該繰返し区間の現在の区間長に関連してマーカの移動量を決定する第1の決定手段と、該指定されたマーカーを該指定された方向へ該第1の決定手段で決定された移動量だけ移動させる第1の制御手段とを備える。このマーカー操作装置によれば、マーカー指定手段で移動するマーカーとその方向を指定するだけで、リピート区間が希望する方向に拡大または縮小されるので、操作性が非常によい。
【0009】
また、上述の課題を解決するために、本発明に係る自動演奏装置のマーカー操作装置は、別の一つの形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間を拡大するか縮小するかを指定するとともに、指定された拡大または縮小を演奏進行方向または逆方向のいずれの方向に行うのかを指定する拡大縮小指定手段と、該指定された拡大または縮小と該指定された方向とによって、該繰返し区間の前側または後側のマーカーのいずれを移動するのかを判定するとともに、該判定されたマーカーを演奏進行方向または逆方向のいずれの方向に移動するのかを判定するマーカー判定手段と、該拡大縮小指定手段による指定と該繰返し区間の現在の区間長に関連してマーカーの移動量を決定する第2の決定手段と、該マーカー判定手段で判定されたマーカーを該判定された方向へ該第2の決定手段で決定された移動量だけ移動させる第2の制御手段とを備える。このマーカー操作装置によれば、拡大縮小指定手段で繰返し区間の拡大または縮小とその方向を指定するだけで、リピート区間が希望する方向に拡大または縮小されるので、操作性が非常によい。
【0012】
上記第1の決定手段または該第2の決定手段で決定される移動量は、該繰返し区間が拡大される場合は該繰返し区間の現在の区間長の整数倍の長さであり、該繰返し区間が縮小される場合は該繰返し区間の現在の区間長の整数分の1の長さであるようにすることができる。
【0013】
また、本発明に係る自動演奏装置のマーカー操作装置は、他の形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間を演奏進行方向または逆方向のいずれかに移動することを指示するシフト指示手段と、該シフト指示手段で指示された方向に該繰返し区間の前後のマーカーをその区間長を保ったまま所定のシフト位置まで移動させる制御手段とを備える。このマーカー操作装置によれば、シフト指示手段で繰返し区間のシフトとその方向を指示するだけで、リピート区間が希望する方向にそのまま平行移動の形で移動されるので、操作性が非常によい。
【0014】
上記の制御手段でのシフト位置は、該繰返し区間の現在の区間長だけマーカーを移動させた位置であるようにすることができる。
【0015】
また、本発明に係る自動演奏装置のマーカー操作装置は、また他の形態として、演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、該マーカー設定手段で設定された繰返し区間の前または後のマーカーを指定するマーカー指定手段と、該マーカー指定手段で指定されるマーカーを演奏進行方向または逆方向のいずれかに移動することを指示する移動指示手段と、該移動指示手段で指示された方向に該マーカー指示手段で指定されたマーカーを所定の移動量だけ移動させる制御手段とを備える。このマーカー操作装置によれば、マーカー指示手段によりマーカーを指定し、移動指示手段で移動方向を指示するだけで、希望するマーカーが希望する方向に移動されるので、リピート区間の長さを所望する方向に容易に変えることができ、操作性が非常によい。
【0016】
上記のマーカー操作装置は、該マーカーの移動量の単位を設定する移動単位設定手段を更に備え、該制御手段は該移動単位設定手段で設定された単位の移動量だけ該マーカーを移動させるよう構成できる。
このように構成すれば、移動単位設定手段によりマーカーの移動量を任意に設定できるので、リピート区間の長さを所望する方向に所望の量だけ容易に変えることができ、操作性が向上する。
【0017】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図2には本発明の一実施例としての自動演奏装置のマーカー操作装置が示される。図2において、31はROM33に格納された制御プログラムに基づき各種処理を行うCPU(中央処理装置)である。32は演奏データ、楽譜データ、各種操作子データ、各種フラグなどが格納されるRAM(ランダム・アクセス・メモリ)、33は制御プログラム等を格納するROM(リード・オンリー・メモリ)、34はユーザーが各種状態を設定するスイッチなどの操作子群、35はLCDとLCDの制御回路を含む表示器であって、楽譜やマーカータイプなどが表示される。36はCPU1から指示されたテンポで、CPU1に対してテンポクロック割込を発生させるテンポクロック部であり、このテンポクロックは自動演奏の基本クロックとなり、4分音符を96等分したタイミング(clock)で割込が発生する。37はCPU1からの指示により、指定された音高で発音また消音する楽音信号を生成する音源であり、楽音信号を増幅器38、スピーカ39を通して放音する。
【0018】
この実施例のマーカー操作装置により実行されるマーカーの移動の態様としては、マーカーシフト、マーカージャンプ、マーカームーブの3つがある。ここで、マーカーシフトは、2つのマーカー(A、B)により示される区間を、その区間の長さを保ったまま楽譜上で前後に移動する操作である。また、マーカージャンプは、区間を示す2つのマーカー(A、B)のうちの片方のマーカーを、現在区間の2倍あるいは半分の位置にジャンプさせる操作である。また、マーカームーブは、指定したマーカーを小節あるいは拍の単位で移動させる操作である。。
【0019】
図5にはパネル上に設けられた操作子群34の詳細構成が示される。図5において、1〜4はマーカースイッチ、5は表示器35の表示画面、6はプレイスイッチ、7はストップスイッチ、8はリピートスイッチ、11、12はマーカー左/右シフトスイッチ、13〜18はモードスイッチ群、19、20はムーブ単位指定スイッチ、21はタイプ番号指定スイッチ、22はEXITスイッチである。以下、これらのスイッチについて詳説する。
【0020】
マーカースイッチl〜4はそれぞれマーカーA、B、C、Dを操作するためのスイッチである。このマーカースイッチ1〜4を単独で押した場合、そのマーカーの位置に演奏位置をジャンプさせる。またマーカーC(またはD)の位置がまだ設定されていないときにマーカースイッチ3(または4)を単独で押した場合は、現在位置がそのマーカーに設定される。さらに、モードスイッチ13〜18のいずれかを押した状態で、マーカースイッチが押されると、そのマーカーの位置を変更したり、タイプを変更したりすることができる。また、マーカーA、Bは繰返し(リピート)演奏時には、リピート区間の指定にも兼用される。
【0021】
マーカーシフトスイッチ11、12は、マーカーをその区間長を保ったまま楽譜上で左右にシフトさせるためのスイッチであり、マーカーシフトLスイッチ11は、マーカーA、Bを平行移動の形で楽譜上で左にシフトし、マーカーシフトRスイッチ12は、マーカーA、Bを平行移動の形で楽譜上で右にシフトする。
【0022】
モードスイッチ群13〜18はマーカースイッチ1〜4のモードを指定するもので、マーカージャンプモードを指定するジャンプスイッチ13、14、マーカームーブモードを指定するムーブスイッチ15、16、クリアスイッチ17、タイプスイッチ18からなる。
【0023】
ジャンプスイッチ13、14で指定されるマーカージャンブモードでは、マーカーAとBで指定される区間についてその長さを楽譜上で右または左に拡張したり縮小したりする。マーカージャンプLスイッチ13が押されると、マーカースイッチ1または2で指定されたマーカーAまたはBを、楽譜上の左にジャンプさせることでマーカー区間を2倍に拡張または半分に縮小し、マーカージャンプRスイッチ14が押されると、マーカースイッチ1または2で指定されたマーカーAまたはBを楽譜上の右にジャンプさせることでマーカー区間を2倍に拡張または半分に縮小する。
【0024】
ムーブスイッチ15、16で指定されるマーカームーブモードでは、マーカーAまたはBをそれぞれ単独で楽譜上において左右に移動する。マーカームーブLスイッチ15が押されると、マーカースイッチ1または2で指定されたマーカーAまたはBを楽譜上で左に移動し、マーカームーブRスイッチ16が押されると、マーカースイッチ1または2で指定されたマーカーAまたはBを楽譜上で右に移動する。
【0025】
クリアスイッチ17で指定されるクリアモードでは、マーカーが消去される。クリアスイッチ17が押されると、マーカースイッチ3または4で指定されたマーカーAまたはBを消去する。
【0026】
タイプスイッチ18で指定されるタイプモードでは、マーカーのタイブが指定される。タイプスイッチ18が押されると、マーカースイッチ1〜4で指定されたマーカーのタイプを、後述のタイプ番号指定スイッチ21を用いて指定できる状態にする。
【0027】
ムーブ単位指定スイッチ19、20はマーカーを移動させるときの単位を指定するスイッチであり、メジャー(M)スイッチ19は小節単位、ビート(B)スイッチ20は拍単位でのマーカーの移動を指定する。なお、ムーブ単位指定スイッチ19、20は、いずれか一方が有効な択一的動作であり、一方が選択されると次の選択が行われるまでその状態を保持するスイッチである。
【0028】
プレイスイッチ6は自動演奏を開始させるスイッチ、ストップスイッチ7は自勤演奏を停止させるスイッチであり、これらのスイッチ6、7はいずれか一方が有効な択一的動作であり、選択された状態を保持するスイッチである。
【0029】
リピートスイッチ8はマーカーA、Bにより指定された区間を繰り返して演奏する状態を設定するスイッチである。このリピートスイッチ8は、押すたびにリピートのON/OFF設定がトグル動作をする。
【0030】
タイプ番号指定スイッチ21は、表示画面5に表示された後述するマーカータイプのうちのいずれかを選択するためのものである。
EXTスイッチ22は、タイプ選択中に作業を中断する場合に押すスイッチである。
【0031】
図3にはこの実施例装置で用いられる演奏データのフォーマットが示される。図3において、0nは発音のタイミングclockで示し、Note番号は音高を示し、長さは音長をclockで示したものである。音符種は、音長を量子化した長さに対応するように演算生成した音符の種類である。
【0032】
図4には本実施例装置で用いられる音楽記号付きマーカーを説明するものである。例えば、図4(1)のように、第1、第2小節を繰り返す譜面の場合、実際の演奏データでは、繰返しの部分は2度演奏される。この演奏データから譜面を演算生成した場合、図4(2)のように繰返しの記号などは表示されず、図4(1)の譜例と異なってしまい、対応が取りにくいという問題がある。この場合、演算生成した譜面に後から繰返し記号などの目印を追加しておくことが考えれる。同時に、こういった繰返しの位置などは、練習の区切りとなるため、マーカーを設定することが多い。
【0033】
そこで、図4(3)のように、マーカーに音楽記号の印を入れておくことで、マーカーを入力すると同時に音楽記号を目印として入力できる。このため、譜面の視認性が向上する。音楽記号付きのマーカーは図4(4)のように、音楽記号が5線譜上に描かれるようなデザインであってもよい。
【0034】
図8には上述のようなマーカーの音楽記号の種類とそれを示す変数が示される。この実施例では、マーカーにセットされる音楽記号の種類には図8のようなデザインのものが用意されている。これは、タイプモードにある時に、タイプ番号指定スイッチ21の番号によって指定され、後述するレジスタであるマーカータイプMktyに格納される。マーカータイプMktyの初期値は「1」である。また、マーカー番号に対応するマーカーA、B、C、Dの記号が、図中のAの位置に表示される。
【0035】
図6にはモードスイッチ13〜18に関する変数が示される。モードスイッチ13〜18はそのON/OFFの状態が、添字で区別されるレジスタMdswに読み込まれる。また、押されているスイッチのモードによって、モード番号Mdnumに「0」から「6」の値がセットされる。モード番号Mdnumの初期値は「0」である。
【0036】
図7にはマーカースイッチ1〜4に関する変数が示される。マーカースイッチ1〜4はそのON/OFFの状態が、添字で区別されるレジスタMkSwに読み込まれる。また、押されたスイッチによって、マーカー番号Mknumに「l」から「4」の値がセットされる。各マーカーA、B、C、Dに設定される位置は、添字で区別されるマーカー位置Posに格納され、また各マーカーA、B、C、Dに設定されるタイプは添字で区別されるマーカータイプMktyに格納される。各マーカー位置Posの値の初期値は、Pos(1)が「0」(=曲の先頭位置=第1小節の先頭位置)、Pos(2)が第2小節の先頭位置(=第1小節の末尾位置)、Pos(3)とPos(4)は共に「−1」である。なお、「−1」はマーカーが設定されていないことを意味する。
【0037】
まず、この実施例装置におけるマーカー移動操作の仕方を図1を参照して概略的に説明する。なお、ここでの操作の仕方は最もオーソドックスなものを説明しているものであるが、ここで説明する他にも、スイッチ群を他の態様で操作して同様のマーカー移動をさせることができる。
【0038】
1.図1(1)
ユーザーが練習を進める場合、まず、最初の第I小節を繰り返し練習する。このため、マーカーA、Bをマーカームーブ操作により第1小節の先頭と末尾に設定する。なお、本装置が初期状態であれば、マーカーA、Bは第1小節の先頭と末尾に設定されているので、この場合、設定は不要である。
【0039】
2.図1(2)
次に、マーカーシフト操作により、次の第2小節に移動し練習する。このため、マーカーA、Bを次の第2小節の先頭と末尾に移動させる。この操作の仕方は、マーカーシフトRスイッチ12を押すことによる。
【0040】
3.図1(3)
次に、マーカーAを前にジャンプさせ、第1、第2の2小節を練習する。このため、マーカーAを第1小節の先頭に移動させる。この操作の仕方は、マーカージャンプLスイッチを押した状態で、マーカーAを指定するマーカースイッチ1を押す。
【0041】
4.図1(4)、図1(5)
次に、マーカーシフトより、次の2小節に移り、マーカーBを前にジャンプさせ、3小節目を練習する。この操作の仕方は、まず、マーカーシフトRスイッチ12を押して、マーカーA、Bの区間長を保ったまま右側に移動させる。すなわちマーカーAを第3小節の先頭、マーカーBを第4小節の末尾に移動させる。次いで、マーカージャンプLスイッチ13を押した状態で、マーカーBを指定するマーカースイッチ2を押す。これによりマーカーAは第3小節の先頭に移動する。
【0042】
5.図1(6)
次に、マーカーシフト操作により、4小節目を練習する。この操作の仕方は、マーカーシフトRスイッチ12を押すことで、マーカーA、Bをその区間長を保ったまま右側に移動させる。すなわち、マーカーAは第4小節の先頭に、マーカーBは第4小節の末尾に移動する。
【0043】
6.図1(7)
次に、マーカーAを前にジャンプさせ、3小節と4小節を練習する。この操作の仕方は、マーカージャンプLスイッチ13を押した状態で、マーカーAを指定するマーカースイッチ1を押す。これによりマーカーAは第3小節の先頭に移動する。
【0044】
7.図1(8)
最後に、マーカーAを前にジャンプさせ、l小節から4小節までを練習する。この操作の仕方は、マーカージャンプLスイッチ13を押した状態で、マーカーAを指定するマーカースイッチ1を押す。これによりマーカーAは第1小節の先頭に移動する。
【0045】
このように、従来ならマーカーA、Bをいちいちつけ直さなくてはならなかった操作が、1操作ないし2操作で完了するため、操作性が著しく向上する。
【0046】
以下、図9〜図16のフローチャートを参照して本実施例装置の動作を説明する。これらのフローチャートで用いられている変数には、前述のモードスイッチに関する変数〔レジスタMdsw(i)、モード番号Mdnum〕、マーカースイッチに関する変数〔レジスタMksw(i)、マーカー番号Mksw、位置Pos(i)、マーカータイプMkty(i)〕の他に、以下のものがある。
【0047】
その他の変数
TyMod :タイプモードにある場合「1」、初期値は「0」
Dmp :現在の演奏中の音の消音処理を指示する場合「1」、初期値は「0」
Cur :現在の演奏位置(clock)、初期値は「0」
Rep :リピート状態の場合「1」、初期値は「0」
RepSt :リピート先頭位置(clock)、初期値は「0」(=曲の先頭=第1小節の先頭)
RepEnd :リピート末尾位置(clock)、初期値はBase×Beat(=第2小節の先頭=第1小節の末尾)
DispSt :楽譜表示の先頭位置(Clock)、初期値は「0」(=曲の先頭)
DispEnd:楽譜表示の末尾位置(clock)、初期値はMeasL(=楽譜表示範囲)
MeasL :楽譜表示を行う範囲(clock)
SongEnd:曲の末尾位置(clock)
Base :曲の拍子記号の分母の音符に相当する長さ(clock)
Beat :曲の拍子の数
Move :マーカーを移動させる単位(clock)
rev :マーカーAがBより後ろに設定されている場合「1」、初期値は「0」
dist :マーカーAとBの間隔(clock)=区間長、初期値はBase×Beat
【0048】
まず、図9を参照して本発明のメインルーチンを説明する。
装置電源がONになると、メインルーチンが起動され、まず、初期化処理が行われる(ステップA1)。この初期化処理においては、曲の演奏情報を読み込み、曲の末尾位置SongEnd、ベースBase、ビートBeat、および、楽譜表示範囲MeasL(4小節分のclockに相当する)をセットする。また、音符種のデータを音長データから演算生成しておく。その他の変数は、前述した初期値に設定する。さらに、マーカーAの位置Pos(1)をRepStに設定するとともに、マーカーBの位置Pos(2)をRepEndに設定する。これによりマーカーA、Bは第1小節の先頭と末尾を初期値として設定される。
【0049】
初期化が終わったら、タイプモードTyModが「1」か否かを判定する(ステップA2)。「1」であれば現在のモードはタイプモードであり、この場合にはマーカーへタイプの設定を行う(ステップA13〜A17)。この処理については、後述する。
【0050】
タイプモードTyModが「0」の場合、現在のモードはタイプモードではなく、この場合は表示画面5上への楽譜表示処理を行う(ステップA3)。この楽譜表示処理では、後述するように、表示画面5に5線譜、小節線、音部記号、音符や休符を表示するとともに、マーカーの表示を行う。
【0051】
この後、プレイスイッチ6がONか否かを判定し(ステップA4)、ONであれば、曲の自動演奏を行うためにテンポクロック割込許可を行う(ステップA5)。このテンポクロック割込許可を行うと、後述のテンポクロック割込処理が周期的に実行されて、曲の自動演奏が開始状態になる。
【0052】
次に、ストップスイッチ7がONか否かを判定し(ステップA6)、ONであれば、曲の自動演奏を停止するためにテンポクロック割込禁止を行う(ステップA7)。このテンポクロック割込禁止を行うと、テンポクロック割込処理が実行されず、発音中の音を消音して、曲の自動演奏を停止する。
【0053】
さらに、リピートスイッチ8がONか否かを判定し(ステップA8)、「ON」であれば、ステップA9〜A11を実行する。このステップA9〜A11は、リピートスイッチ8のトグル動作を実現するもので、リピートRepが既に「1」すなわちリピート状態にあるかどうか判定し(ステップA9)、リピート状態であれば、リピートRepを「0」にしてリピート状態を解除し(ステップA10)、「0」すなわちリピート状態でなければ、リピートRepを「1」にしてリピート状態を設定するとともに、消音Dmpを「1」にして演奏音を中断するようにし、現在位置Curをリピートの先頭RepSt−1にセットする(ステップA11)。この「−1」の演算は演算の整合性を図るための操作である。これにより、演奏中にリピート状態になった場合、一旦演奏音を消すとともに,リピートの先頭位置RepStから新たに演奏が開始される。
【0054】
次いで、マーカースイッチ処理を行う(ステップA12)。このマーカースイッチ処理は、マーカースイッチ1〜4の設定に応じたマーカーの処理を行うルーチンであり、詳細は後述する。
【0055】
一方、前述のステップA2の判定において、タイプモードTyModが「1」すなわちマーカータイプの選択状態にある場合、表示画面5に図8のマーカーの種類と番号を表示し、ユーザーに番号によるタイプ選択を促す(ステップA13)。また、マーカータイプの選択状態中にEXTスイッチ22が押されたかを判定し(ステップA14)、押されたら、処理を中断するために、タイプモードTyModを「0」にし(ステップA17)、タイプモードを抜け出る。EXTスイッチ22が押されてなければ(ステップA14)、番号スイッチ21がONか否か判定して(ステップA15)、いずれかの番号スイッチ21が押されるまで、ステップA14の間をループして待機する。いずれかの番号スイッチ21が押された場合、後述するマーカースイッチ処理ルーチンで設定されたマーカー番号Mknumを添字とするマーカータイプMkty(Mknum)に、番号をセットし(ステップA16)、タイプモードTyModを「0」にして(ステップA17)、タイプモードを抜ける。
【0056】
次に、上述の楽譜表示処理ルーチンを図10のフローチャートを参照して説明する。楽譜表示処理ルーチンが起動されると、楽譜表示先頭位置DispStから、楽譜表示未尾位置DispEndまでの、5線譜、小節線、音部記号などを表示する(ステップB1)そして、表示クロックのループ変数i(clock)を楽譜表示先頭位置DispStに初期化する(ステップB2)。この表示クロックのループ変数iは表示処理を行っている現在位置をクロック数で示すものである。
【0057】
ループ変数iが示す表示位置に演奏データが存在すれば、その位置に音符を表示する(ステップB3)。前述した演奏データの音高を5線譜上の縦の位置に対応させ、発音タイミングを横の位置に対応させることで、表示位置が特定され、その位置に音符種で指定された音符を表示する。また、前に表示した音符との関係で、休符が必要な場合はこれも表示する。
【0058】
次いで、マーカー番号に相当するループ変数jを「1」に初期化する。このループ変数jは、「1」がマーカーAを、「2」がマーカーBを、「3」がマーカー「C」を、「4」がマーカーDをそれぞれ表す。マーカー変数jで指定されるマーカーのマーカー位置Pos(j)が、表示クロックのループ変数iに等しい場合は、そのループ変数iが示す表示位置にマーカーを表示する(ステップB6)。このマーカー表示処理は、表示クロックの位置で、5線譜の上部の所定位置にマーカー番号jのマーカーをマーカータイプMkty(j)のタイプで表示する。
【0059】
マーカーの位置Pos(i)がループ変数iに等しくない場合、またはステップB6でマーカー表示をしたら、マーカー番号のループ変数jを1つインクリメントし(ステップB7)、その値が「4」に達したか否かで4つのマーカーA、B、C、Dの表示の有無を全部調べたかを判定する(ステップB8)。「4」に達していなければ、4つのマーカーA、B、C、Dのうちまだマーカー表示の有無を調べていないマーカーがあるので、ステップB5以降の処理を繰り返す。一方、「4」に達していれば(ステップB8)、マーカーA、B、C、Dについてマーカー表示の有無を全部調べたことになる。この場合には、ループ変数iを1つインクリメントし、そのインクリメントしたループ変数iが楽譜表示先頭位置DispEndに達したか否かを判定し(ステップB10)、達してないければ、新たにインクリメントしたループ変数iで示される表示位置について、上述のステップB3以降の処理を繰り返し、一方、ループ変数iが楽譜表示先頭位置DisplEndに達していれば、表示すべき区間のすべての演奏データとマーカーの有無を全部調べたことになるので、リターンする。
【0060】
次に、テンポクロック割込処理を図11のフローチャートを参照して説明する。このテンポクロック割込処理ルーチンは、メインルーチンにてテンポクロック割込許可がされると、テンポクロック部36で発生したテンポクロック割込によって、テンポに応じた各クロック毎のタイミングで起動される。例えば、4分音符の場合、4分音符は96クロックに相当し、その各クロック毎に本ルーチンが起動される。このテンポクロック割込処理ルーチンでは、発音処埋とリピートの処理、および自動演奏の進行に伴って楽譜表示の更新処理を行う。
【0061】
まず、現在の演奏位置Curを1つインクリメントする(ステップC1)。次いで、リピートRep が「1」か否かを判定する(ステップC2)。「0」すなわちリピート状態でなければ、現在の演奏位置Curが曲の末尾位置SongEndに達しているかを判定し(ステップC3)、達していれば、消音処理を行い、テンポクロック割込禁止をして(ステップC4)、自動演奏をストップさせる。曲の末尾位置SongEndに達していなければ(ステップC3)、後述のステップC7以降に進んで、自動演奏を続行する。
【0062】
リピートRep が「1」すなわちリピート状態であれば(ステップC2)、現在の演奏位置Curがリピート末尾位置RepEndに達しているか否かを判定する(ステップC5)。達していれば、リピート区間の先頭位置に戻ってリピート演奏を行うための更新処理を行う(ステップC6)。具体的には、ステップC6の処理では、現在の演奏位置Curをリピート先頭位置RepStへ戻し、楽譜表示先頭位置DispStも同様にリピート先頭位置RepStへ戻し、楽譜表示末尾位置DispEndをリピート先頭位置RepStから楽譜表示範囲MeasLだけ後に離れた位置、すなわち
DispEnd←RepSt+MeasL
とするとともに、リピート末尾位置RepEndで発音されていた音の消音を指示するために消音Dmpを「1」にする。
【0063】
この更新処理が終わったら(ステップC6)、あるいはリピート状態でなく、かつ曲の末尾位置SondEndに達していないと判定されたら(ステップC3)、ステップC7以降に進んで自動演奏を続行する。まず、消音Dmpが「1」か否かを判定する(ステップC7)。この消音Dmpは、演奏位置Curがリピート末尾位置RepEndに達した場合やマーカーで他の位置にジャンプを指示した場合などに「1」にセットされ、現在位置での消音を指示するものである。「1」であれば現在発音中の音を消音するとともに、消音Dmp=0にして、消音完了の状態にする。
【0064】
次いで、現在の演奏位置Curでの発音を指示し(ステップC9)、その現在の演奏位置Curが楽譜表示末尾位置DispEndを超えているか否か判定し(ステップC10)、超えていなければ、リターンして、今回のクロックサイクルでのテンポクロック割込処理を終了する。超えていれば、楽譜表示の更新処理を行う(ステップC11〜C13)。この更新処理では、現在の楽譜表示先頭位置DispStに楽譜表示範囲MeasLを足したものを新たな楽譜表示先頭位置DispStとし、現在の楽譜表示末尾位置DispEndに楽譜表示範囲MeasLを足したものを新たな楽譜表示末尾位置DispEndとする。さらに、更新した楽譜表示末尾位置DispEndが曲の末尾位置SongEndに達しているか否かを判定し(ステップC12)、達していれば、楽譜表示末尾位置DispEndは曲の末尾位置SongEndとする(ステップC13)。これらの処理の後、リターンして、今回のクロックサイクルでのテンポクロック割込を終了する。
【0065】
次に、マーカースイッチ処理ルーチンを図12〜図17のフローチャートを参照して以下に詳細に説明する。このマーカースイッチ処理ルーチンでは、マーカースイッチ群1〜4、11〜20のON/OFF状態を調べて、それらの状態に応じたマーカー操作を行うもので、マーカーA、Bにより指定される位置へのジャンプ処理およびマーカーA、Bにより指定されるリピート区間の変更操作や、マーカーC、Dのセットと演奏位置のジャンプ処理などが行われる。
【0066】
まず、図12のフローチャートにおいては、モードスイッチ13〜18とムーブ単位指定スイッチ19、20の状態が検出される。すなわち、マーカースイッチ処理が起動されると、メジャー(M)スイッチ19がONか否か判定され(ステップD1)、ONであれば、マーカームーブの単位Moveを、ベースBase×ビートBeatに設定する(ステップD2)。これは1小節の長さに相当する。一方、メジャースイッチ19がOFFであれば(ステップD1)、ビート(B)スイッチ20がONか否か判定し(ステップD3)、ONであれば、マーカームーブの単位MoveをベースBaseに設定する(ステップD4)。これは1拍の長さに相当する。
【0067】
この後、モード番号Mdnumを「0」に、モード番号のループ変数iを「1」に初期化しておく(ステップD5)。次いで、i番目のモードレジスタMdsw(i)がONか否かを判定し(ステップD6)、OFFなら直ちに、あるいはONならモード番号Mdnumにループ変数iをセットした後に(ステップD7)、ループ変数iを1つインクリメントし(ステップD8)、このインクリメントしたループ変数iが「6」を超えているか否か判定する(ステップD9)。「6」を超えていれば、モードスイッチ13〜18の全てについてON/OFF状態のチェックが終了したことになる。よって、「6」以下であれば、ステップD6に戻って以降のステップを繰り返す。これにより、モード番号Mdnumには、モードスイッチ13〜18のうち、ONのスイッチに相当する番号がセットされる。
【0068】
すべてのモードスイッチのチェックを終えたら、マーカースイッチ群の操作状態に応じて、以下のように処理を変える。まず、シフトスイッチ11、12が操作された場合の処理を図13のフローチャートに従って説明する。
【0069】
図13において、シフトスイッチ11、12がONにされたか否かを判定し(ステップE0)、ONである場合は以下のシフト処理を行う。シフト処理では、マーカーA、Bで区切られるリピート区間を、その区間長distを保ったまま、楽譜上で右側または左側に平行移動の形で区間長distだけ移動させる。
【0070】
まず、リバースrevが「1」か否かを判定する(ステップE1)。リバースrevが「1」とは、マーカーA、Bの前後が逆になっていてマーカーBの方が楽譜上で左側(前側)にある場合である。マーカーA、Bの前後状態に応じて以下のように、テンポラリ位置Pos1、Pos2を設定する。このテンポラリ位置Pos1、Pos2はシフト処理を行うために用いるテンポラリなレジスタの名称である。リバースrevが「0」の場合には、テンポラリ位置Pos1にマーカーAの位置Pos(1)を、またテンポラリ位置Pos2にマーカーBの位置Pos(2)をそれぞれセットし(ステップE2)、リバースrevが「1」の場合には、テンポラリ位置Pos1にマーカーBの位置Pos(2)を、またテンポラリ位置Pos2にマーカーAの位置Pos(1)をそれぞれセットする(ステップE3)。この処理は、リピート区間のうち、前側のマーカー位置をPos1,後側のマーカー位置をPos2として扱うためである。
【0071】
次いで、マーカーシフトスイッチ11、12のうち、いずれがONにされたかを判定する。すなわち、右シフトするためのマーカーシフトRスイッチ12がONか否かを判定する。ONすなわち右シフトである場合には、リピート区間の後側マーカー位置Pos2が曲の末尾位置SongEndを超えているか否か判定し(ステップE9)、超えていなければ、前側マーカー位置Pos1に後側マーカー位置Pos2をセットし、後側マーカー位置Pos2に区間長distを加算する(ステップE10)。これにより、リピート区間は区間長distだけ全体に右側にシフトする。さらに、シフト後の後側マーカー位置Pos2が曲の末尾位置SongEndを超えたか否か判定し(ステップE11)、超えていれば、後側マーカー位置Pos2に曲の末尾位置SongEndをセットする(ステップE12)。一方、シフト前の後側マーカー位置Pos2が既に曲の末尾位置SongEndを超えていれば(ステップE9)、右シフトは不可能であるから、上記ステップE10〜E12は行わない。
【0072】
一方、マーカーシフトRスイッチ12がOFF(すなわちマーカーシフトlスイッチ11がON)であれば(ステップE4)、これは左シフトである。この場合、リピート区間の前側マーカー位置Pos1が曲の先頭位置「0」より前か否か判定し(ステップE5)、前でなければ、後側マーカー位置Pos2に前側マーカー位置Pos1をセットし、前側マーカー位置Pos1から区間長distを減算する(ステップE6)。これにより、リピート区間は区間長distだけ全体に左側にシフトする。さらに、シフト後の前側マーカー位置Pos1が曲の先頭位置「0」より前か否か判定し(ステップE7)、前であれば、前側マーカー位置Pos1に曲の先頭位置「0」をセットする(ステップE8)。一方、シフト前の前側マーカー位置Pos1が既に曲の先頭位置「0」より前であれば(ステップE5)、左シフトは不可能であるから、上記ステップE6〜E8は行わない。
【0073】
この後、リピート区間の先頭位置RepStに前側マーカー位置Pos1をセットし、リピート区間の末尾位置RepEndに後側マーカー位置Pos2をセットする(ステップE16)。そしてリバースrevが「1」か否かを判定し(ステップE13)、その結果に応じて、右シフトまたは左シフトにより更新したテンポラリ位置Pos1、Pos2の内容を、マーカー位置Pos(1)、Pos(2)に書き戻す。すなわち、リバースrevが「0」であれば、マーカー位置Pos(l)、Pos(2) にテンポラリ位置PoS1、Pos2をそれぞれ書き戻し(ステップE14)、リバースrevが「1」であれば、マーカー位置Pos(1)、Pos(2) にテンポラリ位置Pos2、Pos1をそれぞれ書き戻して(ステップE15)、リターンする。
【0074】
一方、操作されたスイッチがシフトスイッチ11、12でない場合には(ステップE0)、図14〜図17に示すような、モードスイッチ13〜18と組み合わせてマーカースイッチ1〜4を使用する場合の処埋となる。ここで、図14は主としてマーカーC、Dに関するセットとジャンプ処理を説明するフローチャート、図15は主としてマーカーA、Bに関するジャンプ処理、ムーブ処理を説明するフローチャート、図16、図17は主としてマーカーA、Bに関するリピート区間の拡大/縮小処理を説明するフローチャートである。
【0075】
まず、図14において、マーカー番号のループ変数jを「1」に初期化した後に(ステップF0)、j番目のマーカースイッチMksw(j)がONか否かを判定し(ステップF1)、ONでなければ、Mkon(j)を「0」にクリアする(ステップF2)。このMkon(j)は、マーカースイッチがONになった時の変化を検出するための変数である。マーカースイッチMksw(j)がONであれば、Mkon(j)が「1」か否かを判定し(ステップF3)、Mkon(j)が既に「1」になっている場含は、マーカースイッチが新たに押されたのではないので、次のマーカースイッチの状態を調べるためにループ変数jを1つインクリメントする(ステップF4)。Mkon(j)が「1」でない場合には、新たにマーカースイッチが押されたので、Mkon(j)に「1」をセットし(ステップF4)、ステップF5以降に進む。このように、ステップF1〜F3の処理は、ステップF5以降の処理を、マーカースイッチのON操作に対して1回だけ実行するようにするためのものである。
【0076】
ステップF3でマーカースイッチが新たに押されたと判定された場合には、モード番号Mdnumがマーカータイプモードを示す「6」か否かを調べて、「6」すなわちマーカータイプモードが指定されている場合は、マーカータイプモードに入るので、タイプモードTyModに「1」をセットし、マーカー番号Mknumにループ変数jをセットして(ステップF6)、リターンする。この処理により、前述のようにメインルーチンでマーカータイプモードの処理が行われる。
【0077】
モード番号Mdnumがマーカータイプモードを示すものでなかった場合(ステップF5)、マーカー番号のループ変数jが「1」または「2」かを判定する(ステップF7)。これはマーカースイッチ1または2でマーカーAまたはBが指定されたかを判定するもので、マーカーAまたはBの場合には後述の図15のフローチャートの処理に進む。マーカーAまたはBでない場合には、マーカーCまたはDが指定されたものとなる。この場合、マーカーCまたはDに関しての処理が実行される。まず、モード番号Mdnumがマーカークリアモードを指定する「5」か否かを判定し(ステップF8)、マーカークリアモードが指定されている場合は、そのマーカーの位置Pos(j)にクリアを意味する「−1」をセットして(ステップF9)、マーカーCまたはDの設定を解除する。
【0078】
一方、マーカークリアモードが指定されていない場合には(ステップF8)、モード番号Mdnumが、いずれのモードスイッチ13〜18も無操作であることを示す「0」か否かを判定する(ステップF10)。「0」でない場合、すなわちいずれかのモードスイッチ13〜18が操作されていたとしても、マーカーC、Dについては、いずれのモードも機能しないので、ループ変数jを更新するステップF14に抜ける。
【0079】
モードスイッチ13〜18がいずれも無操作の場合、前述したように、マーカーC、Dについては、マーカーCまたはDのマーカースイッチ3または4が押されれば、まだマーカーCまたはDがセットされていなければ現在の演奏位置にマーカーCまたはDをセットし、既にセットされていれば現在の演奏位置をそのセット済のマーカー位置までジャンプさせる操作を行う。よって、マーカーCまたはDの位置Pos(j)がクリアを意味する「−1」か否かを判定し(ステップF11)、クリアすなわちマーカー未設定であれば、その位置Pos(j)に現在の演奏位置Curをセッシする(ステップF13)。マーカー既設定であれば(ステップF11)、現在の演奏位置Curに位置Pos(j)をセットし、楽譜表示の先頭位置DispStに位置Pos(j)をセットし、楽譜表示の末尾位置DispStに位置Pos(j)と楽譜表示範囲MeasLを加算したものをセットするとともに、消音Dmpに「1」をセットして現在発音中の音の消音処理を指示する(ステップF14)。これにより、既に設定されているマーカーCまたはDの位置に、演奏位置、表示位置ともにジャンブする。
【0080】
この後、ループ変数jをインクリメントし(ステップF14)、すべてのマーカースイッチの処理を終えたかを判定し(ステップF15)、終わっていない場合は、ステップF1へ戻り、終わったらリターンする。この処理は、後述の図15、図16のフローが終了した時にも行われる。
【0081】
次に、ステップF7の判定で、マーカーA、Bに対応するマーカースイッチ1、2が操作されたと判定された場合の処理を図15、図16のフローチャートに従って説明する。まず、図15のフローチャートについて説明する。この図15の処理は、マーカーA、Bについてモード番号Mdnumが「0」、「5」、「4」、「3」すなわちモードスイッチが押されていない、クリアモードにある、あるいは移動モードにある場合の処埋である。
【0082】
まず、モード番号Mdnumが全モードスイッチ13〜18の無操作を意味する「0」か否かを判定する(ステップG1)。全モードスイッチ13〜18が無操作であれば、マーカーA、Bは、現在の演奏位置をそのセット済のマーカー位置までジャンプさせる操作を行う。よって、現在の演奏位置Curに位置Pos(j)をセットし、楽譜表示の先頭位置DispStに位置Pos(j)をセットし、楽譜表示の末尾位置DispEndに位置Pos(j)と楽譜表示範囲MeasLを加算したものをセットするとともに、消音Dmpに「1」をセットして現在発音中の音の消音処理を指示する(ステップG3)。これにより、既に設定されているマーカーAまたはBの位置に、演奏位置、表示位置ともにジャンプする。
【0083】
モードスイッチ13〜18のいずれかが操作されていると判定された場合(ステップG1)、モード番号MdnumがマーカーAまたはBを右側に移動させるマーカームーブRモードを指定する「4」であるか否かを判定する(ステップG6)。マーカームーブRモードであれば、マーカーAまたはBの現在の位置Pos(j)に移動単位Moveを加算してマーカーAまたはBを楽譜の右(曲の後ろ方向)に移動させる(ステップG7)。そして、その移動の結果、マーカーAまたはBの位置Pos(j)が曲の末尾位置SongEndを超えたか否かを判定し(ステップG8)、超えてしまった場合は、マーカーAまたはBの位置Pos(j)を曲の末尾位置SongEndとする(ステップG9)。
【0084】
一方、マーカームーブRモードでなければ(ステップG6)、モード番号MdnumがマーカーAまたはBを左側に移動させるマーカームーブLモードを指定する「3」であるか否かを判定する(ステップG10)。マーカームーブLモードであれば、マーカーAまたはBの現在の位置Pos(j)から移動単位Moveを減算してマーカーAまたはBを楽譜の左(曲の前方向)に移動させる(ステップG11)。そして、その移動の結果、マーカーAまたはBの位置Pos(j)が曲の先頭位置「0」より前になったかを判定し(ステップG12)、前になってしまった場合は、マーカーAまたはBの位置Pos(j)を曲の先頭位置「0」とする(ステップG13)。
【0085】
以上のマーカーAまたはBのジャンプ処理、移動処理が終わったら、マーカーAまたはBの位置が変更されたので、関係する変数を更新する(ステップG3〜G5)。すなわち、マーカーAとBの位置Pos(1)とPos(2)の大小を比較して(ステップG3)、マーカーAとBのいずれが前にあるかを調べる。マーカーがA、Bの順であれば、リバースrevを「0」に設定し、リピートの区間長distを「Pos(2)−Pos(1)」で求めてセットし、リピート区間の先頭位置RepStにマーカーAの位置Pos(1)をセットし、リピート区間の末尾位置RepEndにマーカーBの位置Pos(2)をセットする(ステップG5)。一方、マーカーがB、Aの順であれば、リバースrevを「1」に設定し、リピートの区間長distを「Pos(1)−Pos(2)」で求めてセットし、リピート区間の先頭位置RepStにマーカーBの位置Pos(2)をセットし、リピート区間の末尾位置RepEndにマーカーAの位置Pos(1)をセットする(ステップG4)。
【0086】
一方、モード番号Mdnumがムーブのモードを指定していない場合には、図16、図17のフローチャートで示されるマーカージャンプモードの処理が実行される。このジャンプ処理では、リピート区間のうちの前方にあるマーカーAまたはBが前方にジャンプするよう指示された場合は、そのマーカーAまたはBはマーカー間の距離(区間長)が2倍になる位置にジャンブし、後方にジャンプするよう指示された場合は、マーカー間の距離(区間長)が2分の1になる位置にジャンブする。一方、リピート区間の後方にあるマーカーBまたはAが前方にジャンプするよう指示された場合は、そのマーカーはマーカー間の距離(区間長)が2分の1になる位置にジャンプし、後方にジャンプするよう指示された場合は、マーカー間の距離(区間長)が2倍になる位置にジャンプする。
【0087】
まず、モード番号Mdnumが、マーカーAまたはBを右側にジャンプさせる,マーカージャンプRモードを指定する「2」か否かを判定する(ステップH1)。「2」ならマーカージャンプRモード、「2」でなければマーカーAまたはBを左側にジャンプさせるマーカージャンプLモードである。
【0088】
マーカージャンプRモードであれば、マーカーAまたはBのジャンプの仕方には次の4通りがある。
(1)リピート区間の前側のマーカーAを右ジャンプ、後側のマーカーBを固定。すなわち、マーカーの順序がA、Bの状態でリピート区間を縮小する。
(2)リピート区間の前側のマーカーBを固定、後側のマーカーAを右ジャンプ。すなわち、マーカーの順序がB、Aでリピート区間を拡張する。
(3)リピート区間の前側のマーカーAを固定、後側のマーカーBを右ジャンプ。すなわち、マーカーの順序がA、Bの状態でリピート区間を拡大する。
(4)リピート区間の前側のマーカーBを右ジャンプ、後側のマーカーAを固定。すなわち、マーカーの順序がB、Aの状態でリピート区間を縮小する。
【0089】
一方、マーカージャンプLモードであれば、マーカーAまたはBのジャンプの仕方には次の4通りがある。
(5)リピート区間の前側のマーカーAを左ジャンプ、後側のマーカーBを固定。すなわち、マーカーの順序がA、Bの状態でリピート区間を拡張する。
(6)リピート区間の前側のマーカーBを固定、後側のマーカーAを左ジャンプ。すなわち、マーカーの順序がB、Aでリピート区間を縮小する。
(7)リピート区間の前側のマーカーAを固定、後側のマーカーBを左ジャンプ。すなわち、マーカーの順序がA、Bの状態でリピート区間を縮小する。
(8)リピート区間の前側のマーカーBを左ジャンプ、後側のマーカーAを固定。すなわち、マーカーの順序がB、Aの状態でリピート区間を拡大する。
【0090】
図16、図17中において、上述の(1)〜(8)に対応する処理のフロー経路には同じ(1)〜(8)の符号を付して対応付けてある。以下、これらの処理について詳細に説明する。
【0091】
マーカージャンプRモードと判定されると(ステップH1)、ループ変数jが「1」か否か、すなわち処理対象がマーカーAかBかを判定し(ステップG2)、マーカーAであれば、リバースrevが「1」か否かでそのマーカーAがリピート区間の前側か後側かを判定する(ステップH3)。リバースrev=0であれば、前記(1)のリピート前側にあるマーカーAの処理であり、マーカーAの位置Pos(1)を現在の間隔distの半分だけ右側の位置に進め(ステップH4)、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【0092】
リバースrev=1であれば、前記(2)のリピート後側にあるマーカーAの処理であり、マーカーAの位置Pos(1)を現在の間隔dist分だけ右側の位置に進め(ステップH5)、リピート区間を現在の2倍にする。マーカーAを右ジャンプさせた結果、その位置Pos(1)が曲の末尾位置SongEndを超えたかを判定し(ステップH6)、超えた場合には、位置Pos(1)に曲の末尾位置SongEndをセットする(ステップH7)。
【0093】
一方、ステップH2の判定で、処理対象がマーカーBと判定されると、リバースrevが「1」か否かでそのマーカーBがリピート区間の前側か後側かを判定する(ステップH8)。リバースrev=0であれば、前記(3)のリピート後側にあるマーカーBの処理であり、マーカーBの位置Pos(2)を現在の間隔dist分だけ右側の位置に進め(ステップH9)、リピート区間を現在の2倍にする。マーカーBを右ジャンプさせた結果、その位置Pos(2)が曲の末尾位置SongEndを超えたかを判定し(ステップH10)、超えた場合には、位置Pos(2)に曲の末尾位置SongEndをセットする(ステップH11)。
【0094】
一方、ステップH8でリバースrev=1であれば、前記(4)のリピート前側にあるマーカーBの処理であり、マーカーBの位置Pos(2)を現在の間隔distの半分だけ右側の位置に進め(ステップH12)、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【0095】
一方、ステップH1においてマーカージャンプLモードと判定されると、ループ変数jが「1」か否か、すなわち処理対象がマーカーAかBかを判定し(ステップG13)、マーカーAであれば、リバースrevが「1」か否かでそのマーカーAがリピート区間の前側か後側かを判定する(ステップH14)。リバースrev=0であれば、前記(5)のリピート前側にあるマーカーAの処理であり、マーカーAの位置Pos(1)を現在の間隔dist分だけ左側の位置に戻し(ステップH5)、リピート区間を現在の2倍にする。マーカーAを左ジャンプさせた結果、その位置Pos(1)が曲の先頭位置「0」よりも前になったかを判定し(ステップH16)、前になった場合には、位置Pos(1)に曲の先頭位置「0」をセットする(ステップH17)。
【0096】
ステップH14においてリバースrev=1であれば、前記(6)のリピート後側にあるマーカーAの処理であり、マーカーAの位置Pos(1)を現在の間隔distの半分だけ左側の位置に戻し(ステップH4)、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【0097】
一方、ステップH13の判定で、処理対象がマーカーBと判定されると、リバースrevが「1」か否かでそのマーカーBがリピート区間の前側か後側かを判定する(ステップH19)。リバースrev=0であれば、前記(7)のリピート後側にあるマーカーBの処理であり、マーカーBの位置Pos(2)を現在の間隔distの半分だけ左側の位置に戻し(ステップH20)、リピート区間を現在の半分にする。なお、除算は四捨五入で整数にする。
【0098】
一方、ステップH19においてリバースrev=1であれば、前記(8)のリピート前側にあるマーカーBの処理であり、マーカーBの位置Pos(2)を現在の間隔dist分だけ左側の位置に戻し(ステップH21)、リピート区間を現在の2倍にする。マーカーBを左ジャンプさせた結果、その位置Pos(2)が曲の先頭位置「0」よりも前になったかを判定し(ステップH22)、前になった場合には、位置Pos(2)に曲の先頭位置「0」をセットする(ステップH23)。
【0099】
これらステップH1〜H23の処理が終わると、マーカーA、Bの位置が変更されるので、新たなマーカー間隔distを計算するとともに、リピート区間の先頭位置RepSt、末尾位置RepEndを設定する(ステップH24〜H26)。すなわち、リバースrevが「1」か否かでマーカーA、Bの順序を判定し(ステップH24)、マーカーAがBより後ろに設定されている場合には、マーカー間隔distに「Pos(1)−Pos(2)」をセットするとともに、リピート区間の先頭位置RepSt、末尾位置RepEndにそれぞれPos(2)、Pos(1)を設定する(ステップH26)。また、マーカーAがBより前に設定されている場合には、マーカー間隔distに「Pos(2)−Pos(1)」をセットするとともに、リピート区間の先頭位置RepSt、末尾位置RepEndにそれぞれPos(1)、Pos(2)を設定する(ステップH25)。
【0100】
本発明の実施にあたっては、上述したものの他にも種々の変形形態が可能である。例えば、上述の実施例では、マーカーシフトは、前のリピート区間の前または後に新たなリピート区間が来るようにリピート区間を移動させているが、本発明はこれに限られるものではなく、小節単位、拍単位でリピート区間の前後のマーカーA、Bを移動させるものでもよい。この場合、その移動量を設定する設定手段を設けて、設定した移動量だけ移動させるとよい。
【0101】
また、上述の実施例では、マーカージャンプモードでのリピート区間の拡大または縮小を、拡大の場合には現リピート区間の2倍、縮小の場合には現リピート区間の2分の1としたが、本発明はこれに限られるものではなく、この拡大量または縮小量は任意であり、例えば拡大の場合には整数倍、縮小の場合には整数分の1というように設定できるようにしてもよい。
【0102】
また、上述の実施例装置では、マーカージャンプモードでのリピート区間の拡大または縮小を、ジャンプスイッチ13、14とマーカーA、Bを指定するマーカースイッチ1、2を用いて指示するようにしたが、本発明はこのようなスイッチ配置に限られるものではなく、例えば、リピート区間を楽譜上で前側または後側に拡大することを指示する拡大指示操作子と、リピート区間を楽譜上で前側または後側に縮小することを指示する縮小指示操作子を設け、拡大指示操作子で前側への拡大が指示された場合にはリピート区間の前側のマーカーを前側に、また後側への拡大が指示された場合にはリピート区間の後側のマーカーを後側に移動とさせ、縮小指示操作子で後側への縮小が指示された場合にはリピート区間の前側のマーカーを後側に、また前側への縮小が指示された場合にはリピート区間の後側のマーカーを前側に移動とさせるようにしてもよい。
【0103】
【発明の効果】
以上に説明したように、本発明によれば、すくない操作回数でリピート区間のマーカーを演奏教習などに適した位置に簡単に移動させることができ、マーカー移動の操作性の向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の実施例装置におけるマーカー移動の操作態様を説明する図である。
【図2】本発明の一実施例としてのマーカー操作装置を搭載した自動演奏装置を示す図である。
【図3】実施例装置における演奏データのフォーマットを示す図である。
【図4】実施例装置で用いる音楽記号付きマーカーを説明する図である。
【図5】実施例装置におけるパネル上の操作子を説明する図である。
【図6】実施例装置におけるモードスイッチに関する変数を説明する図である。
【図7】実施例装置におけるマーカースイッチに関する変数を説明する図である。
【図8】実施例装置で使用されるマーカーの音楽記号の種類と変数を説明する図である。
【図9】実施例装置で実行されるメインルーチンを示すフローチャートである。
【図10】実施例のメインルーチンにおける楽譜表示ルーチンを示すフローチャートである。
【図11】実施例装置で実行されるテンポクロック割込処理ルーチンを示すフローチャートである。
【図12】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン(モードスイッチのスキャン処理部分)を示すフローチャートである。
【図13】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン(マーカーA、Bのシフト操作処理部分)を示すフローチャートである。
【図14】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン(マーカーC、Dのセット/ジャンプ処理部分)を示すフローチャートである。
【図15】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン(マーカーA、Bのセット/ジャンプ処理、クリア処理、ムーブ処理部分)を示すフローチャートである。
【図16】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン(マーカーA、Bの拡大/縮小のジャンプ処理部分)を示すフローチャートである。
【図17】実施例のメインルーチンにおけるマーカースイッチ処理ルーチン(マーカーA、Bの拡大/縮小のジャンプ処理部分)を示すフローチャートである。
【符号の説明】
1〜4 マーカースイッチ
5 表示画面
6 プレイスイッチ
7 ストップスイッチ
8 リピートスイッチ
11、12 シフトスイッチ
13、14 ジャンプスイッチ
15、16 ムーブスイッチ
17 クリアスイッチ
18 タイプスイッチ
19、20 移動単位指定スイッチ
21 タイプ番号指定スイッチ
22 EXTスイッチ
31 CPU(中央処理装置)
32 RAM(ランダム・アクセス・メモリ)
33 ROM(リード・オンリー・メモリ)
34 操作子群
35 表示装置
36 テンポクロック部
37 音源
38 増幅器
39 スピーカ
Claims (7)
- 演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間の前側または後側のマーカーのいずれか一方を指定するとともに、指定されたマーカーを演奏進行方向または逆方向のいずれに移動するかを指定するマーカー指定手段と、
該指定されたマーカーを該指定された方向に移動することによって、該繰返し区間が拡大されるのか縮小されるのかを判定する拡大縮小判定手段と、
該拡大縮小判定手段の判定結果と該繰返し区間の現在の区間長に関連してマーカの移動量を決定する第1の決定手段と、
該指定されたマーカーを該指定された方向へ該第1の決定手段で決定された移動量だけ移動させる第1の制御手段とを備えた自動演奏装置のマーカー操作装置。 - 演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間を拡大するか縮小するかを指定するとともに、指定された拡大または縮小を演奏進行方向または逆方向のいずれの方向に行うのかを指定する拡大縮小指定手段と、
該指定された拡大または縮小と該指定された方向とによって、該繰返し区間の前側または後側のマーカーのいずれを移動するのかを判定するとともに、該判定されたマーカーを演奏進行方向または逆方向のいずれの方向に移動するのかを判定するマーカー判定手段と、
該拡大縮小指定手段による指定と該繰返し区間の現在の区間長に関連してマーカーの移動量を決定する第2の決定手段と、
該マーカー判定手段で判定されたマーカーを該判定された方向へ該第2の決定手段で決定された移動量だけ移動させる第2の制御手段とを備えた自動演奏装置のマーカー操作装置。 - 該第1の決定手段または該第2の決定手段で決定される移動量は、該繰返し区間が拡大される場合は該繰返し区間の現在の区間長の整数倍の長さであり、該繰返し区間が縮小される場合は該繰返し区間の現在の区間長の整数分の1の長さである請求項1〜2のいずれかに記載の自動演奏装置のマーカー操作装置。
- 演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間を演奏進行方向または逆方向のいずれかに移動することを指示するシフト指示手段と、
該シフト指示手段で指示された方向に該繰返し区間の前後のマーカーをその区間長を保ったまま所定のシフト位置まで移動させる制御手段とを備えた自動演奏装置のマーカー操作装置。 - 該制御手段でのシフト位置は、該繰返し区間の現在の区間長だけマーカーを移動させた位置であるよう構成される請求項4記載の自動演奏装置のマーカー操作装置。
- 演奏データにおける繰返し演奏を行う繰返し区間の前後にマーカーを設定するマーカー設定手段と、
該マーカー設定手段で設定された繰返し区間の前または後のマーカーを指定するマーカー指定手段と、
該マーカー指定手段で指定されるマーカーを演奏進行方向または逆方向のいずれかに移動することを指示する移動指示手段と、
該移動指示手段で指示された方向に該マーカー指示手段で指定されたマーカーを所定の移動量だけ移動させる制御手段とを備えた自動演奏装置のマーカー操作装置。 - 該マーカーの移動量の単位を設定する移動単位設定手段を更に備え、該制御手段は該移動単位設定手段で設定された単位の移動量だけ該マーカーを移動させるよう構成された請求項6記載の自動演奏装置のマーカー操作装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10031097A JP3796001B2 (ja) | 1997-04-17 | 1997-04-17 | 自動演奏装置のマーカー操作装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10031097A JP3796001B2 (ja) | 1997-04-17 | 1997-04-17 | 自動演奏装置のマーカー操作装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10293579A JPH10293579A (ja) | 1998-11-04 |
JP3796001B2 true JP3796001B2 (ja) | 2006-07-12 |
Family
ID=14270609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10031097A Expired - Lifetime JP3796001B2 (ja) | 1997-04-17 | 1997-04-17 | 自動演奏装置のマーカー操作装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3796001B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4649785B2 (ja) * | 2001-07-03 | 2011-03-16 | ヤマハ株式会社 | 楽譜表示装置 |
JP2007333836A (ja) * | 2006-06-13 | 2007-12-27 | Casio Comput Co Ltd | 演奏練習装置および演奏練習処理のプログラム |
JPWO2008035431A1 (ja) * | 2006-09-22 | 2010-01-28 | 興和株式会社 | 音再生装置、録音装置、及びファイル転送・再生システム |
JP4687759B2 (ja) * | 2008-08-25 | 2011-05-25 | ヤマハ株式会社 | 演奏データ再生装置及びプログラム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2679546B2 (ja) * | 1992-09-11 | 1997-11-19 | ヤマハ株式会社 | 自動演奏装置 |
JPH06259072A (ja) * | 1993-03-02 | 1994-09-16 | Kawai Musical Instr Mfg Co Ltd | 電子楽器のパラメータ設定装置 |
JP3219917B2 (ja) * | 1993-10-12 | 2001-10-15 | ローランド株式会社 | 自動演奏装置 |
JP3586904B2 (ja) * | 1994-11-02 | 2004-11-10 | ヤマハ株式会社 | 演奏情報処理装置 |
JP2780655B2 (ja) * | 1994-12-16 | 1998-07-30 | カシオ計算機株式会社 | 電子楽器 |
JP3632258B2 (ja) * | 1995-09-28 | 2005-03-23 | 株式会社河合楽器製作所 | 譜面編集装置 |
JP3411736B2 (ja) * | 1995-09-29 | 2003-06-03 | 株式会社河合楽器製作所 | 楽譜認識装置 |
-
1997
- 1997-04-17 JP JP10031097A patent/JP3796001B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH10293579A (ja) | 1998-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5605040B2 (ja) | 電子楽器 | |
JP3796001B2 (ja) | 自動演奏装置のマーカー操作装置 | |
US5239124A (en) | Iteration control system for an automatic playing apparatus | |
JP5696435B2 (ja) | コード検出装置及びプログラム | |
JP4337515B2 (ja) | 演奏指示装置及びプログラム | |
US5756915A (en) | Electronic musical instrument having a search function and a replace function | |
JP4265452B2 (ja) | 演奏データ再生装置及びプログラム | |
JPH04146497A (ja) | リズム演奏装置 | |
JP3801722B2 (ja) | 楽音制御パラメータ生成装置 | |
JP2756799B2 (ja) | 自動リズム演奏装置 | |
JPH08179773A (ja) | 自動リズム発生装置 | |
JP4059155B2 (ja) | 自動演奏装置および自動演奏方法を実現するためのプログラム | |
JP3931872B2 (ja) | パラメータ編集装置およびパラメータ編集方法を実現するためのプログラム | |
JP3872186B2 (ja) | 自動演奏装置 | |
JP2621077B2 (ja) | 演奏情報置換装置 | |
JP3586904B2 (ja) | 演奏情報処理装置 | |
JP2003066958A (ja) | 演奏教習装置及び演奏教習処理のプログラム | |
JP4687759B2 (ja) | 演奏データ再生装置及びプログラム | |
JPH11109966A (ja) | 出力先設定装置 | |
JP4148091B2 (ja) | パラメータ編集装置およびパラメータ編集方法を実現するためのプログラム | |
JP2963074B2 (ja) | 自動演奏装置 | |
JP3883270B2 (ja) | 自動演奏装置 | |
JPH08137472A (ja) | 電子楽器 | |
JP2569829B2 (ja) | 電子楽器 | |
JP4684168B2 (ja) | 鍵盤表示装置および鍵盤表示プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040409 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040413 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060117 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060315 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060414 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090421 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130421 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140421 Year of fee payment: 8 |
|
EXPY | Cancellation because of completion of term |