(57)【特許請求の範囲】
【請求項１】
所定の和音情報が入力された場合に発生させるべき音高からなる伴奏パターンを記憶手段から順次読み出す読出手段と、
和音情報を入力する入力手段と、
前記読出手段により読み出された伴奏パターンの音高を、前記入力手段により入力された和音情報における根音に対応する音高にシフトするシフト手段と、
を有する自動伴奏装置において、
前記シフト手段により前回のシフトに用いられた和音情報の根音の音名と、今回のシフトに際して用いる和音情報の根音の音名との音高差を、両音の音程が小さい度数となる方向で算出する算出手段と、
この算出手段により算出された前記音高差と前記方向と前記前回シフト時のシフト量とに基づき、前記シフト手段が今回シフトすべきシフト量とそのシフト方向とを演算する演算手段と、
この演算手段により演算されたシフト量とシフト方向とに従って、前記シフト手段に前記伴奏パターンの音高をシフトさせる制御手段と、
を備え、
前記演算手段は、前記伴奏パターンの種類に応じて決定される最大シフト量を超えないように、前記シフト量又は前記シフト方向を演算する
ことを特徴とする自動伴奏装置。
【請求項２】
所定の和音情報が入力された場合に発生させるべき音高からなる伴奏パターンを記憶手段から順次読み出す読出手段と、
和音情報を入力する入力手段と、
前記読出手段により読み出された伴奏パターンの音高を、前記入力手段により入力された和音情報における根音に対応する音高にシフトするシフト手段と、
を有する自動伴奏装置において、
前記シフト手段により前回のシフトに用いられた和音情報の根音の音名と、今回のシフトに際して用いる和音情報の根音の音名との音高差を、両音の音程が小さい度数となる方向で算出する算出手段と、
この算出手段により算出された前記音高差と前記方向と前記前回シフト時のシフト量とに基づき、前記シフト手段が今回シフトすべきシフト量とそのシフト方向とを演算する演算手段と、
この演算手段により演算されたシフト量とシフト方向とに従って、前記シフト手段に前記伴奏パターンの音高をシフトさせる制御手段と、
を備え、
前記演算手段は、前記伴奏パターンに基づいて発音する際の音色に応じて決定される最大シフト量を超えないように、前記シフト量又は前記シフト方向を演算する
ことを特徴とする自動伴奏装置。
【請求項３】
所定の和音情報が入力された場合に発生させるべき音高からなる伴奏パターンを記憶手段から順次読み出す読出手段と、
和音情報を入力する入力手段と、
前記読出手段により読み出された伴奏パターンの音高を、前記入力手段により入力された和音情報における根音に対応する音高にシフトするシフト手段と、
を有する自動伴奏装置において、
前記シフト手段により前回のシフトに用いられた和音情報の根音の音名と、今回のシフトに際して用いる和音情報の根音の音名との音高差を、両音の音程が小さい度数となる方向で算出すると共に、この音高差に基づいて、今回のシフトに際して用いるシフト量を算出する算出手段と、
前記算出手段により算出されたシフト量でシフトした後の音高が、予め設定されている伴奏音域を超える場合には、前記伴奏音域に収まるようにオクターブ制御して前記シフト量を修正する第１の修正手段と、
前記シフト後の音高が前記伴奏音域を超えない場合であっても、前記算出された音高差及びシフト量がそれぞれ所定の値であるときには、オクターブ制御して前記シフト量を修正する手段であって、当該オクターブ制御量を前記算出されたシフト量に応じて決定する第２の修正手段と、
を備えたことを特徴とする自動伴奏装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、鍵盤等で入力された和音の種類に応じて伴奏を構成する和音の構成音を変化させつつ自動伴奏を行う自動伴奏装置に関する。
【０００２】
【従来の技術】
従来、自動伴奏装置にはメモリに、例えば図９（ａ）に楽譜で示した伴奏パターンが記憶されており、この伴奏パターンは、各音符で示す発音タイミングと、コードとしてＣメジャーが入力された場合の和音の音高とで構成されている。また、他のメモリ内のテーブルには、図１０（ａ）に示すように、“Ｃ”から“Ｂ”までの１オクターブ分の半音毎のルート（根音）とシフト量とが対応して記憶されている。このシフト量は、同図（ｂ）に並び替えて示したように、“Ｃ”のシフト量を“０”とするとともに、“Ｃ”を中心にして１オクターブの音名をマイナス側とプラス側とに二分し、“Ｃ”から離れるにつれてその絶対値が大きくなるように、半音単位で設定されている。
【０００３】
そして、自動伴奏を開始させると、メモリに記憶されている伴奏パターンが順次読み出され、その発音タイミング及び音高に従って和音からなる伴奏音を発生させる。また、押鍵によりＣメジャー以外のコードが入力された場合には、当該コードのルートに対応するシフト量をテーブルから読み出し、このシフト量で伴奏パターンの和音の根音をシフトするとともに、他の和音構成音もこれに伴ってシフトし、このシフトした音高の和音を伴奏パターンの発音タイミングで発生させる。したがって、ルートが“Ｆ”であるコードを押鍵すると、このルート“Ｆ”のシフト量は“＋５”であることから、伴奏パターンの和音の根音“Ｃ”が＋５半音シフトされることにより“Ｆ”となり、他の和音構成音もシフトされて“Ｆ”のコード音が発音タイミングで発生する。また、ルートが“Ｇ”であるコードを押鍵すると、このルート“Ｇ”のシフト量は“−５”であることから、伴奏パターンの和音の根音“Ｃ”が−５半音シフトされることにより“Ｇ”となり、他の和音構成音もシフトされて“Ｇ”のコード音が発音タイミングで発生する。したがって、図９（ｂ）に示すように、Ｔ１時点では押鍵することなく、Ｔ２時点でルートが“Ｆ”であるコードを押鍵し、Ｔ３時点でルートが“Ｇ”であるコードを押鍵すると、図示したように、コードはＣ，Ｆ，Ｇと進行することとなる。
【０００４】
【発明が解決しようとする課題】
このように、従来の自動伴奏装置にあっては、予めルートとシフト量との関係をテーブルに設定しておき、鍵盤にてコード入力があった場合には、入力されたコードのルートに対応する一定のシフト量で伴奏パターンの基本となるコードのルートをシフトすることにより、指定されたコードの和音構成音を伴奏パターンのタイミングで発生させるように構成されている。したがって、図９（ｂ）に示した例のように、Ｔ２時点とＴ３時点で各々“Ｆ”“Ｇ”のコードを入力すると、Ｔ２時点では“Ｃ”に対して＋５半音、Ｔ３時点では“Ｃ”に対して−５半音変化することにより、“Ｆ”“Ｇ”間には１０半音（短７度）のコードの跳躍が生じてしまう。この跳躍するコードの進行は、和声学においては問題とされない場合もあるが、一般音楽上は好ましいコード進行形態ではなく、聴感上も好ましいものではなかった。
【０００５】
本発明は、このような従来の課題に鑑みてなされたものであり、連続する伴奏音に跳躍を生じさせることなく自動伴奏を行うことのできる自動伴奏装置を提供することを目的とするものである。
【０００６】
【課題を解決するための手段】
前記課題を解決するために請求項１及び２記載の発明にあっては、所定の和音情報が入力された場合に発生させるべき音高からなる伴奏パターンを記憶手段から順次読み出す読出手段と、和音情報を入力する入力手段と、前記読出手段により読み出された伴奏パターンの音高を、前記入力手段により入力された和音情報における根音に対応する音高にシフトするシフト手段とを有する自動伴奏装置において、前記シフト手段により前回のシフトに用いられた和音情報の根音の音名と、今回のシフトに際して用いる和音情報の根音の音名との音高差を、両音の音程が小さい度数となる方向で算出する算出手段と、この算出手段により算出された前記音高差と前記方向と前記前回シフト時のシフト量とに基づき、前記シフト手段が今回シフトすべきシフト量とそのシフト方向とを演算する演算手段と、この演算手段により演算されたシフト量とシフト方向とに従って、前記シフト手段に前記伴奏パターンの音高をシフトさせる制御手段とを有しており、前記演算手段が、前記伴奏パターン（の種類や音色）に応じて決定される最大シフト量を超えないように、前記シフト量又は前記シフト方向を演算することを特徴としている。
【０００７】
かかる構成において、算出手段は前回のシフトに用いられた和音情報の根音の音名と、今回のシフトに際して用いる和音情報の根音の音名との音高差を算出するが、このとき該音高差が小さくなる方向で算出を行う。つまり、根音は半音単位で音高順に“Ｃ”〜“Ｂ”までの１２音名が存在するが、この音高方向（プラス方向）で音高差を算出する場合、両端の“Ｃ”から“Ｂ”までは１１半音の音高差となる。しかし、音名“Ｂ”は、音名“Ｃ”より１半音低い音名でもあるから、逆方向（マイナス方向）で音高差を算出すると両者の音高差は１半音となり、よって、この場合算出手段は音高差“１半音”を算出する。したがって、この算出した音高差“１半音”及び方向（逆方向＝マイナス方向）と、前回シフト時に用いられたシフト量とに基づいて、伴奏パターンに応じて決まる最大シフト量を超えないように演算手段が今回シフトすべきシフト量とシフト方向とを演算し、制御手段が、この演算されたシフト量とシフト方向でシフト手段に伴奏パターンの音高をシフトさせれば、前回シフトされた音高と今回シフトされた音高との間に大幅な音高差が生ずることがなく、伴奏音域（最大シフト量）を超えることもない。
【０００８】
また、請求項３記載の発明にあっては、所定の和音情報が入力された場合に発生させるべき音高からなる伴奏パターンを記憶手段から順次読み出す読出手段と、和音情報を入力する入力手段と、前記読出手段により読み出された伴奏パターンの音高を、前記入力手段により入力された和音情報における根音に対応する音高にシフトするシフト手段とを有する自動伴奏装置において、前記シフト手段により前回のシフトに用いられた和音情報の根音の音名と、今回のシフトに際して用いる和音情報の根音の音名との音高差を、両音の音程が小さい度数となる方向で算出すると共に、この音高差に基づいて、今回のシフトに際して用いるシフト量を算出する算出手段と、前記算出手段により算出されたシフト量でシフトした後の音高が、予め設定されている伴奏音域を超える場合には、前記伴奏音域に収まるようにオクターブ制御して前記シフト量を修正する第１の修正手段と、前記シフト後の音高が前記伴奏音域を超えない場合であっても、前記算出された音高差及びシフト量がそれぞれ所定の値であるときには、オクターブ制御して前記シフト量を修正する手段であって、当該オクターブ制御量を前記算出されたシフト量に応じて決定する第２の修正手段とを有している。
【０００９】
かかる構成においては、請求項１及び２記載の発明と同様に、前回シフトされた音高と今回シフトされた音高との間に大幅な音高差が生ずることがなく、伴奏音域を超えることもなく、更に、伴奏音域を超えそうになるよりも前に逆方向へシフトされるようになる。
【００１１】
【発明の実施の形態】
以下、本発明の一実施の形態を図にしたがって説明する。この実施形態は、本発明を電子楽器に適用したものであり、この電子楽器には、図１のブロック図に示すように、鍵盤１及びスイッチ部２が設けられている。鍵盤１には、複数の鍵が設けられているとともに押鍵に伴ってオンとなる鍵スイッチが各鍵毎に設けられている。スイッチ部２には、電源スイッチ、音量スイッチ等の通常電子楽器に配設される各種スイッチが設けられているとともに、後述するフロー中に示した音色選択スイッチ、伴奏パターン選択スイッチ、モードスイッチ、自動伴奏スタート／ストップスイッチ等が設けられている。
【００１２】
これら鍵盤１及びスイッチ部２からのスイッチ情報は、ＣＰＵ３に入力される。ＣＰＵ３は、これら入力情報と内部のＲＯＭに記憶されているプログラム及び記憶装置４に記憶されているデータに基づいて動作し、この電子楽器において必要な全ての処理を実行するとともに、音源５を制御する。すなわち、ＣＰＵ３は、後述するフローに従って処理を実行することにより、本実施例において読出手段、シフト手段、検出手段、演算手段、及び制御手段等を構成するものであり、音源５は、ＣＰＵ３からの指示に従った音色番号に対応する波形であって、指示された周波数の楽音波形を生成し、この楽音波形がアンプ及びスピーカ等で構成されるサウンドシステム６に与えられることにより、該サウンドシステム６から指示されたタイミングで指示された音色及び音高の楽音が発生するように構成されている。
【００１３】
前記記憶装置４には、複数種の自動伴奏パターンデータが伴奏パターン番号に対応して記憶されている。各自動伴奏パターンデータは、例えば図９（ａ）にその一部を楽譜で示したように、各和音の音符で示す発音タイミングと、押鍵によりコードとしてＣメジャー入力された場合の和音の構成音高とで構成されている（ここでは説明しやすくするために、自動伴奏パターンデータはＣメジャーコードのみを示したが、他の種類のコード等を混在させておいて、Ｃメジャーコードと同様にシフトさせても良い）。また、ＣＰＵ４は、下記に示す各データを格納するレジスタを有している。
【００１４】
Ｒ：押鍵により指定された現在のコードのルート
Ｐ：１つ前に指定されたコードのルート
Ｄ：ＲとＰの差分値
Ｓ：伴奏パターンの音高シフト量
ａ：伴奏パターン番号
ｔ：音色番号
ＭＦ：モードフラグであって、自動伴奏モード設定中は“１”、非設定中は“０”を格納
ＡＦ：自動伴奏フラグであって、自動伴奏進行中は“１”、停止中は  “０”を格納
なお、ＣＰＵ３は、処理を実行するに際し、１オクターブ内における半音単位の１２音高Ｃ，Ｃ＃，Ｄ，・・・，Ｂを対応する０，１，２，・・・，１１に値に符号化して用い、よって、レジスタＲ，Ｐにはルートとして、これらの値が格納される。
【００１５】
次に、以上の構成にかかる本実施例の動作を図３以降に示したフローチャートに従って説明する。すなわち、ＣＰＵ３は、電源スイッチの投入に伴って図２に示すゼネラルフローに従って動作を開始し、先ずイニシャライズ処理（ステップＡ１）を実行して、前述の各種レジスタをクリアする。引き続き、後述するスイッチ処理（ステップＡ２）、鍵盤処理（ステップＡ３）、自動伴奏処理（ステップＡ４）及びその他の処理（ステップＡ５）を実行し、電源スイッチがオンとなっている間、ステップＡ２〜Ａ５のループを繰り返す。
【００１６】
前記スイッチ処理（ステップＡ２）は、図３に示すフローに従って行われ、スイッチ部２に設けられているいずれかのスイッチの操作の有無を監視し（ステップＢ１）、いずれのスイッチも操作されなければ、ゼネラルフロー（図２）にリターンする。しかし、いずれかのスイッチが操作されたならば、それが音色選択スイッチであるか否かを判別し（ステップＢ２）、音色選択スイッチであるならば、この音色選択スイッチの操作により選択された音色番号をｔに格納するとともに（ステップＢ３）、発音時には音源５がこの選択された音色の波形を成形するように、音色設定処理を実行する（ステップＢ４）。
【００１７】
また、操作されたスイッチが伴奏パターン選択スイッチであるならば（ステップＢ５がＹＥＳ）、この伴奏パターン選択スイッチの操作により選択された伴奏パターン番号をａに格納するとともに（ステップＢ６）、自動伴奏の開始に伴ってこの伴奏パターン番号に対応する伴奏パターンデータを記憶装置４から読み出すべく伴奏パターン設定処理を実行する（ステップＢ７）。さらに、操作されたスイッチがモードスイッチであるならば（ステップＢ８がＹＥＳ）、ＭＦを反転し（ステップＢ９）、よって、このモードフラグＭＦは、モードスイッチが操作される都度“１”“０”に変化する。
【００１８】
また、操作されたスイッチが自動伴奏スタート／ストップスイッチであるならば（ステップＢ１０がＹＥＳ）、ＭＦがセットされているか否かを判別する（ステップＢ１１）。そして、ＭＦがセットされておらず、自動伴奏モードが設定されていない場合には、ステップＢ１２の処理を行うことなく、ステップＢ１３に進み、設定されている場合には、ＡＦを反転させる（ステップＢ１２）。したがって、この自動伴奏フラグＡＦは、自動伴奏モードにおいてのみ反転し、前述のように“１”で自動伴奏進行中を示し“０”で自動伴奏停止中を示す。さらに、操作されたスイッチがこれら以上のいずれのスイッチでもない場合には、操作されたスイッチに対応するその他のスイッチ処理を行って（ステップＢ１３）、ゼネラルフローにリターンする。
【００１９】
前記鍵盤処理（ステップＡ３）は、図４に示すフローに従って行われ、鍵盤１の各鍵に設けられている鍵スイッチを走査して、この操作した鍵スイッチに基づき各鍵の状態を識別し（ステップＣ１）、鍵スイッチの状態に変化がなければ、ゼネラルフロー（図２）にリターンする。また、鍵スイッチがオフからオンに変化し、押鍵が発生したならば、複数鍵が同時押鍵されたか否かを判別し（ステップＣ２）、複数鍵が同時押鍵されたならば、このときＭＦがセットされているか否かを判別する（ステップＣ３）。そして、このステップＣ３と前述のステップＣ２での判別の結果、複数鍵が同時に押鍵され、このときＭＦがセットされており自動伴奏モードが設定されているならば、ステップＣ４の処理を行うことなく、ゼネラルフローにリターンする。
【００２０】
しかし、このステップＣ２及びステップＣ２での判別の結果、複数鍵の同時押鍵ではない場合、及び同時押鍵であってもＭＦがリセットされており自動伴奏モードが設定されていない場合には、押鍵された鍵に対応する音高での発音を指示する（ステップＣ４）。すなわち、ＣＰＵ３は、押鍵された音高での発音を音源５に指示し、音源５が対応する周波数の楽音波形を生成することにより、サウンドシステム６からは押鍵に対応するタイミングで押鍵に対応する音高の楽音が音色設定処理された音色で発生する。また、ステップＣ１での判別の結果、離鍵が発生したならば、この離鍵された鍵に係る楽音の消音を指示する（ステップＣ５）。この指示に従って音源５が対応する楽音波形を減衰させることにより、サウンドシステム６から発生していた離鍵に対応する楽音が消音される。
【００２１】
前記自動伴奏処理（ステップＡ４）は、図５に示すフローに従って行われ、モードフラグＭＦがセットされているか否かを判別し（ステップＤ１）、モードフラグＭＦがセットされていない場合には、以降の処理を行うことなく、ゼネラルフローにリターンする。また、モードフラグＭＦがセットされて自動伴奏モードが設定されているならば、鍵盤１で複数鍵の同時押しが発生したか否かを判別し（ステップＤ２）、同時押しが発生していない場合には、ステップＤ３、Ｄ４の処理を行うことなくステップＤ５に進む。また複数鍵の同時押しが発生している場合には、この複数鍵の同時押しがコードとして成立しているか否かを判別し（ステップＤ４）、成立している場合には後述するシフト処理（ステップＤ４）を実行する。しかし、成立していない場合には、このステップＤ４の処理を実行することなく、伴奏パターンデータの読出・発音処理を実行する（ステップＤ５）。
【００２２】
よって、このステップＤ５の伴奏パターンデータの読出・発音処理は、自動伴奏モードの状態において複数鍵の同時押しがない場合、及び複数鍵の同時押しがあってもコードとして成立していない場合には、シフト処理（ステップＤ４）を伴うことなく実行され、この場合には、予め伴奏パターン設定処理（ステップＢ７）により設定されている伴奏パターン番号の伴奏パターンデータを読み出して、その発音タイミング及びそのままの音高での発音を音源５に指示する。したがって、シフト処理（ステップＤ４）を伴わない場合には、サウンドシステム６からは予め設定されている伴奏パターン番号の伴奏パターンの発音タイミングで、コード音が順次発生する。
【００２３】
このシフト処理（ステップＤ４）は、図６に示すフローに従って行われ、鍵盤からのコードのルートを取り込んでＲに格納する（ステップＥ１）。すなわち前述したステップＤ３の判別により、複数鍵の同時押しがコードとして成立していることから、この成立したコードのルートを対応する０〜１１の値でレジスタＲに格納する。引き続き、このＲの値から、前回のフローに従った処理により後述するステップＥ１０でＰに格納されている値、つまり１つ前の押鍵により入力されたコードのルート値を減じて、両者の差分を算出し、このＲとＰとの差分値をレジスタＤに格納する（ステップＥ２）。このステップＥ２の処理により、前回と今回の入力コードのルートの音高差がＤに格納される。
【００２４】
次に、このＤに格納した値の絶対値が６より大きいか否か、つまり半音を単位とした場合、両者の音高差が６より大きいか否かを判別し、６以下である場合には、ステップＥ４の処理を行うことなく、ステップＥ５に進む。しかし、６を超えている場合には、Ｄ／｜Ｄ｜（｜Ｄ｜−１２）を演算して、その演算結果によりレジスタＤを更新する（ステップＥ４）。このステップＥ４に示す式において、Ｄ／｜Ｄ｜は、ステップＥ２でレジスタＤに格納された値の正負を（｜Ｄ｜−１２）の値に影響させるためであり、また、この演算により、前回のルートと今回のルートとの音高差が小さくなる方向で、両者の音高差が算出されることとなる。
【００２５】
すなわち、レジスタＲ及びレジスタＰに格納されるルートの値は０〜１１であるから、レジスタＰにルートＢの値である“１１”が格納されており、レジスタＲにルートＣの値である“０”が格納されたとすると、Ｒ−Ｐ＝０−１１＝−１１となり、両者の音高差は音高が低くなる方向（マイナス方向）で検出すると“１１”である。また、その値は６を超えていることから、ステップＥ４の演算を行うと−（１１−１２）＝１となり、この値“１”は音高が高くなる方向（プラス方向）における“Ｂ”“Ｃ”の音高差であり、よって、ステップＥ２〜ステップＥ４の処理により、前回と今回のルートの音高差が小さくなる方向で（１オクターブずらして）両者の音高差が検出されることとなる。
【００２６】
また、次のステップＥ５では、伴奏パターンの前回の音高シフト量を格納しているレジスタＳの値に、前述のステップＥ２でレジスタＤに格納した差分値を加算してこれを更新し、引き続き、Ｄ×Ｓ＞０、且つ｜Ｄ｜＞３、且つ｜Ｓ｜＞９であるか否かを判別する（ステップＥ６）。このステップＥ６において、Ｄ×Ｓ＞０は、Ｄに格納されている差分値とＳに格納されているシフト量の値の正負が同一であるか否かを判別し、｜Ｄ｜＞３と｜Ｓ｜＞９は、前回のコードから“３”半音より大きな移動がなされようとしており、基準“Ｃ”からの今回のシフト予定量が“９”半音超えているか否かを判別する。そして、この三つの条件のいずれかが満たされていない場合には、ステップＥ７の処理を行うことなく、ステップＥ８に進み、全て満たされレジスタＤ，Ｓに格納されている値の正負が同一であり、前回のコードから“３”半音より大きな移動がなされようとしており、今回の基準“Ｃ”からのシフト予定量が“９”半音超えている場合には、ステップＥ７の処理を行う。
【００２７】
このステップＥ７の処理は、前述したステップＥ４と同様の処理をＳの値に対して実行するものであり、この処理によりＳの音高シフト量は１オクターブ分ずらされる。引き続き、このステップＥ７の処理によりＳに格納されたシフト量、及びステップＥ７の処理が行われずステップＥ６から進んで来た場合にＳに格納されているシフト量の絶対値が１２より大きいか否かを判別し（ステップＥ８）、１２を超えている場合には、再度前述したステップＥ７と同一の処理を実行する（ステップＥ９）。このステップＥ９の処理は、基準“Ｃ”からの最大シフト量を上下１２半音つまり上下１オクターブ以内に制限するための処理であり、ステップＥ８での判別の結果、シフト量が１２より大きい場合にステップＥ９の処理を行うことにより、シフト量は基準“Ｃ”から上下１オクターブ以内に押さえられる。しかる後に、今回のコードのルートであるレジスタＲの値をレジスタＰに格納して、これを更新しゼネラルフローにリターンする。
【００２８】
次に、以上に説明した図６のシフト処理について、Ｃ→Ｆ→Ｇ→Ｆ→Ａ・・・Ｇ→Ｂ→Ｃ→Ａ＃→Ｆ＃→Ｅ→Ｄ→Ｃ→Ａ＃と鍵盤１でコードを順次押鍵した場合を想定して詳述する。
【００２９】
（１）Ｃ→Ｆ
前回のコードのルートが“Ｃ”であって今回のコードのルートが“Ｆ”であると、ステップＥ１の処理によりＲ＝５となり、ステップＥ２の処理によりＤ＝５−０＝５（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝０＋５＝５（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであり、且つ｜Ｄ｜（差分値の絶対値）は“３”を超えているが、｜Ｓ｜（シフト量の絶対値）は“９”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（１）の場合、シフト量は“５”となり、伴奏パターンデータのコードはその根音Ｃがプラス方向に５半音シフトされることとなる。この“Ｃ”のプラス方向に５半音シフトされた音高は、“Ｆ”であるから、コードＦを入力すれば、図７の（１）に示すように、伴奏コードはコードＦに変換され、前述した図５のステップＤ５により発音処理される。
【００３０】
（２）Ｆ→Ｇ
前回のコードのルートが“Ｆ”であって今回のコードのルートが“Ｇ”であると、ステップＥ１の処理によりＲ＝７となり、ステップＥ２の処理によりＤ＝７−５＝２（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝５＋２＝７（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであるが、｜Ｄ｜（差分値の絶対値）は“３”を超えておらず、｜Ｓ｜（シフト量の絶対値）も“９”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（２）の場合、シフト量は“７”となり、伴奏パターンデータのコードはその根音Ｃがプラス方向に７半音シフトされることとなる。この“Ｃ”のプラス方向に７半音シフトされた音高は、“Ｇ”であるから、コードＧを入力すれば、図７の（２）に実線で示すように、伴奏コードはコードＧに変換され、前述した図５のステップＤ５により発音処理される。したがって、図１０をもって前述し且つ図７の（２）に点線で示した従来の装置のように、“Ｆ”“Ｇ”間には１０半音（短７度）のコードの跳躍が生じてしまうことはなく、両者の音高差は僅か２半音（長２度）となり、跳躍するコードの進行の発生を防止して、一般音楽上及び聴感上好ましいコード進行形態を形成することができる。
【００３１】
（３）Ｇ→Ｆ
前回のコードのルートが“Ｇ”であって今回のコードのルートが“Ｆ”であると、ステップＥ１の処理によりＲ＝５となり、ステップＥ２の処理によりＤ＝５−７＝−２（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝７−２＝５（シフト量）となる。引き続きステップＥ６の判別を行うと、ＤとＳ（差分値とシフト量）の符号が異なることから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（３）の場合、シフト量は“５”となり、伴奏パターンデータのコードはその根音Ｃがプラス方向に５半音シフトされることとなる。この“Ｃ”のプラス方向に５半音シフトされた音高は、“Ｆ”であるから、コードＦを入力すれば、図７の（３）に実線で示すように、伴奏コードはコードＦに変換され、前述した図５のステップＤ５により発音処理される。
【００３２】
（４）Ｆ→Ａ
前回のコードのルートが“Ｆ”であって今回のコードのルートが“Ａ”であると、ステップＥ１の処理によりＲ＝９となり、ステップＥ２の処理によりＤ＝９−５＝４（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝５＋４＝９（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであり、｜Ｄ｜（差分値の絶対値）は“３”を超えているが、｜Ｓ｜（シフト量の絶対値）は“９”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（４）の場合、シフト量は“９”となり、伴奏パターンデータのコードはその根音Ｃがプラス方向に９半音シフトされることとなる。この“Ｃ”のプラス方向に９半音シフトされた音高は、“Ａ”であるから、コードＡを入力すれば、図７の（４）に実線で示すように、伴奏コードはコードＡに変換され、前述した図５のステップＤ５により発音処理される。したがって、図７の（４）に点線で示した従来の装置のように、“Ｆ”“Ａ”間には８半音（短６度）のコードの跳躍が生じてしまうことはなく、両者の音高差は僅か４半音（長３度）となり、跳躍するコードの進行の発生を防止して、一般音楽上及び聴感上好ましいコード進行形態を形成することができる。
【００３３】
（５）Ｇ→Ｂ
前回のコードのルートが“Ｇ”であって（ここでは、“Ｃ”のプラス方向に７半音シフトされた“Ｇ”とする）、今回のコードのルートが“Ｂ”であると、ステップＥ１の処理によりＲ＝１１となり、ステップＥ２の処理によりＤ＝１１−７＝４（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝７＋４＝１１（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであり、｜Ｄ｜（差分値の絶対値）は“３”を超えており、｜Ｓ｜（シフト量の絶対値）も“９”超えていることから、ステップＥ６はＹＥＳとなり、ステップＥ７に進み、Ｓ＝＋（１１−１２）＝−１（シフト量）を算出する。したがって、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（５）の場合、シフト量は“−１”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に１半音シフトされることとなる。この“Ｃ”のマイナス方向に１半音シフトされた音高は、“Ｂ”であるから、コードＢを入力すれば、伴奏コードはコードＢに変換され、前述した図５のステップＤ５により発音処理される。
【００３４】
（６）Ｂ→Ｃ
前回のコードのルートが“Ｂ”であって今回のコードのルートが“Ｃ”であると、ステップＥ１の処理によりＲ＝０となり、ステップＥ２の処理によりＤ＝０−１１＝−１１（差分値）となる。レジスタＤの絶対値は“６”を超えていることから、ステップＥ３はＹＥＳとなってステップＥ４の処理が行われ、Ｄ＝−（１１−１２）＝１（差分値）となる。次に、ステップＥ５の処理が行われ、Ｓ＝−１＋１＝０（シフト量）となる。引き続きステップＥ６の判別を行うと、ＤとＳ（差分値とシフト量）の符号が異なることから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（６）の場合、シフト量は“０”となり、伴奏パターンデータのコードはその根音Ｃが０半音シフトされることとなる。この“Ｃ”の０半音シフトされた音高は、そのまま“Ｃ”であるから、コードＣを入力すれば、伴奏コードは該伴奏コードの音高のまま、前述した図５のステップＤ５により発音処理される。
【００３５】
（７）Ｃ→Ａ＃
前回のコードのルートが“Ｃ”であって今回のコードのルートが“Ａ＃”であると、ステップＥ１の処理によりＲ＝１０となり、ステップＥ２の処理によりＤ＝１０−０＝−１０（差分値）となる。レジスタＤの絶対値は“６”を超えていることから、ステップＥ３はＹＥＳとなってステップＥ４の処理が行われ、Ｄ＝＋（１０−１２）＝−２（差分値）となる。次に、ステップＥ５の処理が行われ、Ｓ＝０−２＝−２（シフト量）となる。引き続きステップＥ６の判別を行うと、ＤとＳ（差分値とシフト量）の符号は同じであるが、｜Ｄ｜（差分値の絶対値）は“３”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（７）の場合、シフト量は“−２”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に２半音シフトされることとなる。この“Ｃ”のマイナス方向に２半音シフトされた音高は、“Ａ＃”であるから、コードＡ＃を入力すれば、伴奏コードはコードＡ＃に変換され、前述した図５のステップＤ５により発音処理される。
【００３６】
（８）Ａ＃→Ｆ＃
前回のコードのルートが“Ａ＃”であって今回のコードのルートが“Ｆ＃”であると、ステップＥ１の処理によりＲ＝６となり、ステップＥ２の処理によりＤ＝６−１０＝−４（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝−２−４＝−６（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであり、且つ｜Ｄ｜（差分値の絶対値）は“３”を超えているが、｜Ｓ｜（シフト量の絶対値）は“９”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（８）の場合、シフト量は“−６”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に６半音シフトされることとなる。この“Ｃ”のマイナス方向に６半音シフトされた音高は、“Ｆ＃”であるから、コードＦ＃を入力すれば、伴奏コードはコードＦ＃に変換され、前述した図５のステップＤ５により発音処理される。
【００３７】
（９）Ｆ＃→Ｅ
前回のコードのルートが“Ｆ＃”であって今回のコードのルートが“Ｅ”であると、ステップＥ１の処理によりＲ＝４となり、ステップＥ２の処理によりＤ＝４−６＝−２（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝−６−２＝−８（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであるが、｜Ｄ｜（差分値の絶対値）は“３”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（９）の場合、シフト量は“−８”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に８半音シフトされることとなる。この“Ｃ”のマイナス方向に８半音シフトされた音高は、“Ｅ”であるから、コードＥを入力すれば、伴奏コードはコードＥに変換され、前述した図５のステップＤ５により発音処理される。
【００３８】
（１０）Ｅ→Ｄ
前回のコードのルートが“Ｅ”であって今回のコードのルートが“Ｄ”であると、ステップＥ１の処理によりＲ＝２となり、ステップＥ２の処理によりＤ＝２−４＝−２（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝−８−２＝−１０（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであるが、｜Ｄ｜（差分値の絶対値）は“３”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（１０）の場合、シフト量は“−１０”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に６半音シフトされることとなる。この“Ｃ”のマイナス方向に１０半音シフトされた音高は、“Ｄ”であるから、コードＤを入力すれば、伴奏コードはコードＤに変換され、前述した図５のステップＤ５により発音処理される。
【００３９】
（１１）Ｄ→Ｃ
前回のコードのルートが“Ｄ”であって今回のコードのルートが“Ｃ”であると、ステップＥ１の処理によりＲ＝０となり、ステップＥ２の処理によりＤ＝０−２＝−２（差分値）となる。レジスタＤの絶対値は“６”を超えていないことから、ステップＥ３はＮＯとなってステップＥ５の処理が行われ、Ｓ＝−１０−２＝−１２（シフト量）となる。引き続きステップＥ６の判別を行うが、ＤとＳ（差分値とシフト量）の符号は同じであるが、｜Ｄ｜（差分値の絶対値）は“３”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていないことから、ステップＥ９の処理を行うことなく、ステップＥ１０の処理を行ってリターンする。したがって、この（９）の場合、シフト量は“−１２”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に１２半音シフトされることとなる。この“Ｃ”のマイナス方向に１２半音シフトされた音高は、“Ｃ”であるから、コードＣを入力すれば、伴奏コードはコードＣに変換され、前述した図５のステップＤ５により発音処理される。
【００４０】
（１２）Ｃ→Ａ＃
前回のコードのルートが“Ｃ”であって今回のコードのルートが“Ａ＃”であると、ステップＥ１の処理によりＲ＝１０となり、ステップＥ２の処理によりＤ＝１０−０＝１０（差分値）となる。レジスタＤの絶対値は“６”を超えていることから、ステップＥ３はＹＥＳとなってステップＥ４の処理が行われ、Ｄ＝＋（１０−１２）＝−２（差分値）となる。次に、ステップＥ５の処理が行われ、Ｓ＝−１２−２＝−１４（シフト量）となる。引き続きステップＥ６の判別を行うと、ＤとＳ（差分値とシフト量）の符号は同じであるが、｜Ｄ｜（差分値の絶対値）は“３”を超えていないことから、ステップＥ６はＮＯとなり、ステップＥ８に進む。また、｜Ｓ｜（シフト量の絶対値）は“１２”を超えていることから、ステップＥ９の処理が行われ、Ｓ＝−（１４−１２）＝−２（シフト量）となる。したがって、この（１２）の場合、シフト量は“−２”となり、伴奏パターンデータのコードはその根音Ｃがマイナス方向に２半音シフトされることとなる。この“Ｃ”のマイナス方向に２半音シフトされた音高は、“Ａ＃”であるから、コードＡ＃を入力すれば、伴奏コードはコードＡ＃に変換され、前述した図５のステップＤ５により発音処理される。
【００４１】
このとき、前述の（１１）で伴奏パターンデータのコードはその根音Ｃがマイナス方向に１２半音シフトされることにより、本実施の形態においてシフト量の下限である基準の“Ｃ”より１オクターブ低い“Ｃ”に達しているが、ステップＥ９での処理により“−２”が算出されることにより、シフト量及びシフト方向は、基準の“Ｃ”より１オクターブ以内に押さえられる。よって、前回のシフトに用いたルートの音高と今回のシフトに用いるルートの音高との音高差に基づいて、シフト量を演算しても、伴奏のコードが最大シフト量である上下１オクターブ（１２半音）を超えてしまうようなことはなく、伴奏音高の変動音域を適正に維持することができる。
【００４２】
図８は、本発明の他の実施の形態を示すものであり、この実施の形態においては、ＣＰＵ３はさらに下記の定数を格納するレジスタを用いる。
【００４３】
Ｘａ，Ｙａ：伴奏パターンａの音高シフト量を制限するための定数
Ｚｔ：音色番号ｔの音色の音高シフト量を制限するための定数
このレジスタＸａ，Ｙａに格納される定数は、前記スイッチ部２に設けられている伴奏パターン選択スイッチの操作により選択された伴奏パターンに応じて異なる値であり、また、Ｚｔは音色選択スイッチの操作により選択された音色に応じて異なる値である。
【００４４】
また、この実施の形態において、前記シフト処理（ステップＤ４）は、図８に示すフローに従って行われる。この図８に示すフローにおいて、ステップＦ１〜Ｆ５、Ｆ７、Ｆ９、Ｆ１０の処理は、前述した図６のフローにおける、ステップＥ１〜Ｅ５、Ｅ７、Ｅ９、Ｅ１０の処理と同一であり、ステップＦ６とＦ８の処理のみが異なる。そして、図６のフローと異なるステップＦ６では、Ｄ×Ｓ＞、且つ｜Ｄ｜＞Ｘａ、且つ｜Ｓ｜＞Ｙａであるか否かを判別する。このとき、Ｘａ、Ｙａには、選択された伴奏パターンに応じて異なる値が設定されていることから、ステップＦ６の処理により、シフト量を制限する範囲が伴奏パターンに応じて変化することとなる。また、ステップＦ８では、｜Ｓ｜＞Ｚｔであるか否かを判別するが、Ｚｔには、選択された音色に応じて異なる値が設定されることから、シフト量を制限する範囲は音色によっても変化することとなる。
【００４５】
すなわち、伴奏パターンに関しては伴奏音を広い音域で変化させても音楽的に支障がないものや一般的に狭い音域でのみ変化されるものもあり、また、音色に関しても、その楽器の種類に応じて広い音域で伴奏音を変化させるものや、狭い音域でのみ伴奏音を変化させるものが存在する。したがって、ステップＦ６及びＦ８で用いるＸａ、Ｙａ、Ｚｔの値を伴奏パターンや音色に応じて可変とすることにより、伴奏パターンや音色に応じた適正な音域内で、伴奏音を指定されたコードに応じて、変化させることが可能となる。
【００４６】
【発明の効果】
以上説明したように本発明は、前回のシフトに用いられた和音情報の根音の音名と今回のシフトに際して用いる和音情報の根音の音名との音高差を、該音高差が小さくなる方向で算出し、この算出した前記音高差に基づき、今回シフトすべきシフト量を演算して、この演算したシフト量に応じて伴奏パターンの音高をシフトするようにした。よって、前回シフトされた音高と今回シフトされる音高との間に大幅な音高差が生ずることがなく、跳躍する伴奏音の発生を防止して、音楽的及び聴感上好ましい音高変化状態で伴奏音を発生させることができる。また、読み出された伴奏パターンの音高を入力された和音情報における根音に対応する音高にシフトする構成としたことから、和声学以外の他の音楽分野において問題とされる跳躍するコード進行を伴うことなく、自動伴奏を進行させることができる。
【００４７】
また、所定の最大シフト量（伴奏音域）を超えないように、シフト量やシフト方向を演算するようにしたことから、前回シフトされた音高と今回のシフトに際して用いる和音情報の根音との音高差により順次シフトを行っても、シフト量が最大シフト量を超えることがなく、また、最大シフト量を超える前に逆方向へシフトすることが可能となる。よって、伴奏音高の変動音域を適正に維持することができるとともに、最大シフト量を超える前にシフト方向を変化させることにより、音高の変動を抑制することもできる。さらに、最大シフト量を、伴奏パターンの種類や音色に応じて変更可能としたことから、伴奏パターンに応じた異なる適正な音域内で、伴奏音を指定されたコードに応じて変化させることができる。
【００４８】
【図面の簡単な説明】
【図１】本発明の一実施例を適用した電子楽器のブロック図である。
【図２】同実施の形態のゼネラルフローを示すフローチャートである。
【図３】スイッチ処理の処理手順を示すフローチャートである。
【図４】鍵盤処理の処理手順を示すフローチャートである。
【図５】自動伴奏処理の処理手順を示すフローチャートである。
【図６】シフト処理の処理手順を示すフローチャートである。
【図７】本実施の形態においてシフトされた音高及び該音高と従来装置によりシフトされた音高とを示す譜面図である。
【図８】本発明の他の実施の形態におけるシフト処理の処理手順を示すフローチャートである。
【図９】伴奏パターンの音高と発生する伴奏の音高との関係を示す譜面図である。
【図１０】従来の自動伴奏装置のルートとシフト量との関係を示す説明図である。
【符号の説明】
１    鍵盤
３    ＣＰＵ
４    記憶装置
【図１】
0003658633.tif 000002
【図２】
0003658633.tif 000003
【図３】
0003658633.tif 000004
【図４】
0003658633.tif 000005
【図５】
0003658633.tif 000006
【図６】
0003658633.tif 000007
【図７】
0003658633.tif 000008
【図８】
0003658633.tif 000009
【図９】
0003658633.tif 000010
【図１０】
0003658633.tif 000011