以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本実施の形態にかかる電子楽器の外観を示す図である。図1に示すように、本実施の形態にかかる電子楽器10は、鍵盤11を有する。また、鍵盤11の上部には、音色の指定、自動伴奏の開始・終了、リズムパターンの指定などを行なうためのスイッチ(符号12、13参照)や、演奏される楽曲に関する種々の情報、たとえば、音色、リズムパターン、コードネームなどを表示する表示部15を有する。本実施の形態にかかる電子楽器10は、たとえば、61個の鍵(C2〜C7)を有する。また、電子楽器10は、自動伴奏をオンする自動伴奏モード、および、自動伴奏をオフにする通常モードの2つの演奏モードのうち、何れかの下での演奏が可能である。自動伴奏モードの下では、C2〜F3の18鍵(符号101参照)が、伴奏用の鍵盤として使用され、F#4〜C7の43鍵(符号102参照)がメロディ用の鍵盤として使用される。符号101で示す鍵域を伴奏鍵域とも称し、符号102で示す鍵域をメロディ鍵域とも称する。
図2は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。図2に示すように、本実施の形態にかかる電子楽器10は、CPU21、ROM22、RAM23、サウンドシステム24、スイッチ群25、鍵盤11および表示部15を備える。
CPU21は、電子楽器10全体の制御、鍵盤11の鍵の押鍵やスイッチ群25を構成するスイッチ(たとえば、図1の符号12、13参照)の操作の検出、鍵やスイッチの操作にしたがったサウンドシステム24の制御、自動伴奏パターンにしたがった自動伴奏の演奏など、種々の処理を実行する。
ROM22は、CPU21に実行させる種々の処理、たとえば、スイッチの操作、鍵盤の何れかの鍵の押鍵、押鍵に応じた楽音の発音、自動伴奏パターンを構成する楽音の発音データなどのプログラムを記憶する。また、ROM22は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した波形データエリア、および、種々の自動伴奏パターンを示すデータ(自動伴奏データ)を格納した自動伴奏パターンエリアを有する。RAM23は、ROM22から読み出されたプログラムや、処理の過程で生じたデータを記憶する。なお、本実施の形態において、自動伴奏パターンは、メロディ音およびオブリガート音を含むメロディ自動伴奏パターン、コード音を含むコード自動伴奏パターン、並びに、ドラム音を含むリズムパターンを有する。たとえば、メロディ自動伴奏パターンのデータのレコードは、楽音の音色、音高、発音タイミング(発音時刻)、音長などを含む。コード自動伴奏パターンのデータのレコードは、上記情報に加えて、コード構成音を示すデータを含む。また、リズムパターンのデータは、楽音の音色、発音タイミングを含む。
サウンドシステム24は、音源部26、オーディオ回路27およびスピーカ28を有する。音源部26は、たとえば、押鍵された鍵についての情報或いは自動伴奏パターンについての情報をCPU21から受信すると、ROM22の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部26は、波形データ、特に、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音データとして出力することもできる。オーディオ回路27は、楽音データをD/A変換して増幅する。これによりスピーカ28から音響信号が出力される。
本実施の形態にかかる電子楽器10は、通常モードの下においては、鍵盤11の鍵の押鍵に基づいて楽音を発生する。その一方、電子楽器10は、自動伴奏スイッチ(図示せず)が操作されることにより、自動伴奏モードとなる。自動伴奏モードの下では、メロディ鍵域の鍵の押鍵により、その鍵の音高の楽音が発生する。また、伴奏鍵域の鍵の押鍵にしたがって自動伴奏パターンが制御され、制御された自動伴奏パターンにしたがった楽音が発生する。なお、自動伴奏パターンは、ピアノやギターなど音高の変化を伴うメロディ自動伴奏パターン、コード自動伴奏パターンと、バスドラム、スネアドラム、シンバルなど音高の変化を伴わないリズムパターンとを含む。
本実施の形態においては、伴奏鍵域の鍵の押鍵タイミングにしたがって、自動伴奏パターン、特に、コード自動伴奏パターンの発音タイミングが制御される。また、本実施の形態においては、伴奏鍵域において押鍵された複数の鍵の間隔によって、コード自動伴奏パターンにおいて発音する和音の転回形が制御される。さらに、伴奏鍵域の押鍵が無い場合には、メロディ自動伴奏パターンおよびコード自動伴奏パターンの発音が停止され、リズムパターンのみの発音となる。
図3は、本実施の形態にかかる伴奏鍵域の押鍵と、自動伴奏パターンの制御との関係を概略的に示すタイミングチャート、図4は、自動伴奏パターンのデータ中、コード伴奏データの例を概略的に説明する図、図5は、図4の自動伴奏パターンに対応する楽譜を示す図である。
図3において、符号300は、想定操作を示す。演奏者が、想定操作300と同一音タイミングで押鍵および離鍵を行なうと、コード伴奏データ初期値(符号320参照)と同一のタイミングで、コード自動伴奏パターンが発音される。すなわち、想定操作は、演奏者がコード伴奏データ初期値と同一のコード自動伴奏パターンを演奏するときの操作を想定している。また、この想定操作における押鍵時間(符合351参照)は、想定音長値として、後述する図15の処理において利用される。
図3では、コード自動伴奏データ初期値を、例示的に、1拍を2分割したパルスとして表している。楽曲が4/4拍子と考えた場合に、コード自動伴奏データ初期値におけるパルスの立ち上がりおよび立下りが、それぞれ、16分音符の先頭位置を示す。
演奏者による実際の操作が符号310に示すようなものであったと考える。たとえば、1拍目の演奏者の押鍵のタイミング(符号311)は、想定操作より早くなっている。この場合には、本実施の形態にかかるCPU21は、コード自動伴奏データの読み出し時刻を早めるような処理を実行する(符号310参照)。したがって、制御されたコード自動伴奏データは、コード自動伴奏データ初期値よりも発音タイミングが早められたものとなる(符号331参照)。
その一方、2拍目の演奏者の押鍵タイミング(符号312参照)は、想定操作より遅くなっている。この場合には、CPU21は、コード自動伴奏データの読み出し時刻を遅くするような処理を実行する(符号322参照)。したがって、制御されたコード自動伴奏データは、コード自動伴奏データ初期値よりも発音タイミングが早められたものとなる(符号332参照)。なお、演奏者による実際の押鍵タイミングが変化する場合であっても、ドラムパターン(符号340参照)およびメロディ自動伴奏パターン(図3においては図示せず)は変化しない。
また、本実施の形態においては、ユーザが伴奏鍵域の鍵を、所定の期間だけ押鍵しないことにより(符号313参照)、自動伴奏パターンの発音、より詳細には、メロディ自動伴奏パターンおよびコード自動伴奏パターンの楽音の発音が停止され、リズムパターンのみが発音される(符号323、333参照)。
さらに、本実施の形態においては、押鍵タイミングが相対操作における押鍵タイミングより早いか、遅いかだけではなく、押鍵されている時間長が、想定操作における時間長よりも長いか短いかによっても、コード音自動伴奏データを制御できるようになっている。たとえば、5拍目(第2小節1拍目)の演奏者の押鍵の時間長(符号314参照)は、想定操作における押鍵の時間長よりも短い。この場合には、CPU21は、コード自動伴奏データにおいて、発音される楽音の音長を短くするような処理を実行する(符号324参照)。したがって、制御されたコード自動伴奏データにおいては、音長が、コード自動伴奏データ初期値に含まれる楽音の音長よりも短くなる(符号334参照)。
また、6拍目(第2小節2拍目)の演奏者の押鍵の時間長は、想定操作における時間長よりも長い。この場合には、CPU21は、コード自動伴奏データにおいて、発音された楽音の音長を長くするような処理を実行する(符号325参照)。したがって、制御されたコード自動伴奏データにおいては、音長が、コード自動伴奏データ初期値に含まれる楽音の音長よりも長くなる(符号335参照)。
上記例において、コード自動伴奏データの発音タイミングを早めること(符号331参照)により、いわゆる「前ノリ」の演奏を実現でき、或いは、コード自動伴奏データの発音タイミングを遅くすること(符号332参照)により、いわゆる「後ノリ」の演奏を実現できる。また、コード自動伴奏データを構成する楽音の音長を短くすること(符号334参照)により、いわゆる「タイト」な演奏を実現でき、或いは、楽音の音長を長くすること(符号335参照)により、いわゆる「ゆるやか」な演奏を実現することができる。
図4に示すように、本実施の形態において、コード自動伴奏データは、ベース音、第1のコード構成音(ルート音)、第2のコード構成音(第3音)、第3のコード構成音(第5音)、第4のコード構成音(第7音、テンションノート等)を含む。実際には、伴奏データは、上記ベース音およびコード構成音のほか、コード名、発音開始時刻および音長などを含む。
図4に示す例では、1拍目および2拍目は、コード名「C7」に基づく楽音となり、3拍目および4拍目は、コード名「F7」に基づく楽音となり、5拍目および6拍目(第2小節1拍目および2拍目)は、コード名「G7」に基づく楽音となり、7拍目および8拍目(第2小節3拍目および4拍目)は、コード名「C6」に基づく楽音となる。
また、図4の例では、1拍目および2拍目では、最初に1.5拍(4/4拍子では符点4分音符)の音長、引き続いて、0.5拍(4/4拍子では8分音符)の音長でコード構成音が発音し、0.5拍(4/4拍では8分音符)の音長で、4つのベース音が順次発音する。3拍目および4拍目、並びに、5拍目および6拍目においても同様である。図4に示すコード自動伴奏データを5線譜上に表したものが、図5に示す楽譜である。
さらに、本実施の形態においては、伴奏鍵域において、演奏者が押鍵した鍵の間隔に基づいて、コード構成音の順序を変更することができる。コード構成音の順序は、いわゆる3和音の転回形に相当する。転回形には、最低音が根音である場合の基本形、基本形と比較して根音をオクターブ上げることにより、最低音が第3音となる第一転回形、第一転回形と比較して、第3音をオクターブ上げることにより(基本形と比較して、第5音をオクターブ下げることにより)、最低音が第5音となる第二転回形が含まれる。
図25は、本実施の形態にかかるコード自動伴奏データの他の例を示す図である。この例では、図4に示す第4のコード構成音は省略されている。その一方、図25に示す例では、コード転回情報が示されている。コード転回情報は、各コードの転回形を示す情報であり、基本形、第一転回形および第二転回形の何れかを示す。コード転回情報は、後述する転回型反映処理(図15のステップ1501)において、コード自動伴奏データに付加される情報である。図25に示すコード自動伴奏データを5線譜上に表したものが、図26に示す楽譜である。
なお、コード自動伴奏データは、コード音伴奏処理(図14)において、その押鍵数に応じてコード構成音が決定され、また、押鍵数が3であるときには、所定の転回形でコード構成音が作られる。したがって、ROM22に、初期的には、コード名、発音開始時刻および音長を、コード自動伴奏データとして格納しておき、コード音伴奏処理において、押鍵数に基づいて、コード構成音を決定し、最終的なコード自動伴奏データを生成しても良い。或いは、ROM22に、コード名、発音開始時刻および音長に加えて、コード構成音を格納しておき、コード音伴奏処理において、ROM22に格納されたコード構成音から、所定のコード構成音を選択して、最終的なコード自動データを生成しても良い。
以下、コード自動伴奏データの制御を含む、本実施の形態にかかる電子楽器10において実行される処理についてより詳細に説明する。図6(a)は、本実施の形態にかかる電子楽器において実行されるメインフローの例を示すフローチャートである。また、図6(b)は、本実施の形態にかかるタイマ割り込み処理の例を示す図である。
タイマ割り込み処理においては、図6(a)に示すメインフローが実行されているときに、所定の時間間隔で、割込カウンタのカウンタ値がインクリメントされる(ステップ611)。
図6(a)に示すように、電子楽器10のCPU21は、電子楽器10の電源が投入されると、RAM23中のデータや、表示部15の画像のクリアクリアを含むイニシャル処理(初期化処理)を実行する(ステップ601)。イニシャル処理(ステップ601)が終了すると、CPU21は、スイッチ群25を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する(ステップ602)。
たとえば、スイッチ処理(ステップ602)においては、音色指定スイッチや、自動伴奏パターンの種別の指定スイッチ、自動伴奏パターンのオン・オフの指定スイッチなど、種々のスイッチの操作が検出される。自動伴奏パターンがオンとなったときには、CPU21は、演奏モードを、伴奏モードに切り換える。演奏モードを示すデータは、RAM23の所定の領域に指定される。音色や自動伴奏パターンの種別を示すデータも、同様に、RAM23の所定の領域に格納される。
次いで、CPU21は、鍵盤処理を実行する(ステップ603)。図7は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。鍵盤処理において、CPU21は、鍵盤11の鍵を走査する。鍵の走査結果であるイベント(鍵オン或いはオフ)は、RAM23に一時的に記憶される。CPU21は、RAM23に記憶された鍵の走査結果を参照して、ある鍵についてイベントが有るか否かを判断する(ステップ702)。ステップ702でYesと判断された場合には、CPU11は、当該イベントが生じている鍵が、メロディ鍵域の鍵(メロディ鍵)であるか否かを判断する(ステップ703)。ステップ703でYesと判断された場合には、CPU21は、メロディ鍵処理を実行する(ステップ704)。
図8は、本実施の形態にかかるメロディ鍵処理の例をより詳細に示すフローチャートである。図8に示すように、CPU21は、イベントが鍵オンであるか否かを判断する(ステップ801)。ステップ801でYesと判断された場合には、CPU21は、当該鍵オンがあった鍵について発音処理を実行する(ステップ802)。発音処理においては、CPU21は、RAM23に記憶されていたメロディ鍵用の音色データ、および、鍵の音高を示すデータを読み出してRAM23に一時的に記憶する。後述する音源発音処理(図6のステップ605)において、音色や音高を示すデータは音源部26に与えられる。音源部26は、音色および音高を示すデータにしたがって、ROM22の波形データを読み出して、所定の音高の楽音データを生成する。これにより、スピーカ28から所定の楽音が発生する。
ステップ801でNoと判断された場合には、イベントが鍵オフであったことになる。したがって、CPU21は、鍵オフになった鍵についての消音処理を実行する(ステップ803)。消音処理においては、CPU21は、消音すべき楽音の音高を示すデータを生成し、RAM23に一時的に記憶する。この場合にも、後述する音源発音処理(ステップ605)において、消音すべき楽音の音色および音高を示すデータが、音源部26に与えられる。音源部26は、与えられたデータに基づいて、所定の楽音を消音する。
ステップ703でNoと判断された場合には、CPU21は、自動伴奏パターンが演奏中か否かを判断する(ステップ705)。たとえば、ステップ705においては、CPU21は、自動伴奏パターンがオンとなっており演奏モードが伴奏モードであるか否かを判断する。ステップ705でNoと判断された場合には、CPU21は、メロディ鍵処理(ステップ704)を実行する。
その一方、ステップ705でYesと判断された場合、つまり、自動伴奏パターンの演奏中であった場合には、CPU21は、伴奏鍵処理を実行する(ステップ706)。図9は、本実施の形態にかかる伴奏鍵処理の一例を示すフローチャートである。図9に示すように、伴奏鍵処理においては、CPU21は、まず、イベントが鍵オンであるか否かを判断する(ステップ901)。ステップ901でYesと判断された場合には、CPU21は、当該鍵の押鍵タイミングが、評価対象範囲であるかどうかを判断する(ステップ902)。評価対象範囲とは、想定操作における押鍵時間に、前後所定の時間を加えた所定の時間範囲である。図3において、想定操作において、1拍目の押鍵時間を符号351で示す。この押鍵時間351の前後に所定の時間を加えた時間範囲(符号350参照)が、評価対象範囲となる。なお、伴奏鍵域における鍵のオンがあった場合(ステップ901でYes)には、当該オンとなった鍵の情報(たとえば鍵番号)がRAM23に格納される。なお、鍵のオフがあった場合(ステップ901でNo)には、たとえば、オフとなった鍵の情報(鍵番号)がRAM23から削除される。
ステップ902でYesと判断された場合には、CPU21は、タイマをスタートさせて音長カウントを開始する(ステップ903)。なお、本実施の形態においては、複数の押鍵が考えられるが、ステップ902でYesと判断されるのは、評価対象範囲での最初の押鍵についてである。次いで、CPU21は、想定操作における押鍵時刻と、実際の押鍵時刻との間のズレを算出して、タイミング評価値として、RAM23に一時的に記憶する(ステップ904)。たとえば、図3において、1拍目の鍵オンについて考える。想定操作における押鍵時刻は、符号351に示す押鍵時間における立ち上がり時刻である。そこで、「(立ち上がり時刻)−(実際の押鍵時刻)」を算出すればよい。このタイミング評価値は、後述するコード自動伴奏パターン演奏の際に、楽音の発音タイミングの制御に利用される。
その後、CPU21は、RAM23に一時的に記憶された、押鍵された鍵数を示す押鍵数カウント値をインクリメントする(ステップ905)。押鍵数カウント値は、後述するコード自動伴奏パターン演奏の際に、コード種別を決定するために利用される。なお、ステップ902でNoと判断された場合にも、ステップ905の押鍵数カウント値のインクリメントは実行される。
次いで、CPU21は、押鍵数カウント値を参照して、押鍵数が4以上であるか否かを判断する(ステップ906)。本実施の形態において、コード自動伴奏パターンにおけるコード種別を決定するために押鍵数の最高数が4であるため、4以上となった段階(ステップ906でYes)で、CPU21は、押鍵されている鍵のそれぞれの音高を参照して、白鍵と黒鍵との比率を示す白鍵黒鍵比率評価値を算出する(ステップ907)。白鍵黒鍵比率評価値は、たとえば、「黒鍵の押鍵数/白鍵の押鍵数」であっても良いし、「黒鍵の押鍵数/(黒鍵+白鍵)の押鍵数」であっても良い。算出された白鍵黒鍵比率評価値は、RAM23に一時的に記憶される。
このように、伴奏鍵域の鍵のオンによってタイマが起動されるとともに、タイミング評価値、押鍵数カウント値、白鍵黒鍵比率表値が得られ、RAM23に一時的に記憶される。
ステップ906でNoと判断された場合には、CPU21は、押鍵数カウント値を参照して、押鍵数が3であるかを判断する(ステップ908)。ステップ908でNoと判断された場合には処理を終了する。その一方、ステップ908でYesと判断された場合には、CPU21は、指間度数評価処理を実行する(ステップ909)。指間度数評価処理においては、CPU21は、後述する処理にしたがって、コード自動伴奏パターンにしたがって発音する和音の転回形を示すコード転回情報を決定し、決定されたコード転回情報を、RAM23に一時的に記憶する。
ステップ901でNoと判断された場合、つまり、鍵オフ(離鍵)と判断された場合には、CPU21は、当該鍵の離鍵タイミングが、評価対象範囲であるかどうかを判断する(ステップ910)。評価対象範囲は、前述したステップ902におけるものと同様である。ステップ910でYesと判断された場合には、CPU21は、タイマを停止して、音長カウントを終了する(ステップ911)。CPU21は、タイマの値を、操作音長値として、RAM23に一時的に記憶する。
次いで、CPU21は、RAM23に一時的に記憶された押鍵数カウント値をデクリメントする(ステップ912)。また、CPU21は、押鍵数カウント値を参照して、押鍵数が4以上であるか否かを判断する(ステップ913)。ステップ913でYesと判断された場合には、CPU21は、押鍵されている鍵のそれぞれの音高を参照して、白鍵と黒鍵との比率を示す白鍵黒鍵比率評価値を算出する(ステップ914)。
また、ステップ913でNoと判断された場合には、CPU21は、押鍵数カウント値を参照して、押鍵数が3であるかを判断する(ステップ915)。ステップ915でNoと判断された場合には処理を終了する。その一方、ステップ915でYesと判断された場合には、CPU21は、指間度数評価処理を実行する(ステップ916)。
次に、指間度数評価処理についてより詳細に説明する。図20(a)〜(c)は、それぞれ、鍵盤においてCMaj(Cメジャー)の和音を演奏したときに押鍵される鍵を示す図である。図20(a)は、基本形の和音で押鍵される鍵(下から、C、E、G)を示している。一般に、和音は左手の小指、中指および親指にて、最低音、中間音および最高音がそれぞれ押鍵される。そこで、本実施の形態において、指間の度数とは、小指、中指、親指で押鍵された鍵のそれぞれの間の半音の数、すなわち、押鍵された鍵の鍵番号の差をいう。
CMajの基本形において、最低音Cと中間音Eとの間では、鍵番号の差は4であるため、最低音と中間音との指間の度数D1=4となる。また、中間音Eと最高音Gとの間では、鍵番号の差は3であるため、中間音と最高音との指間の度数D2=3となる。また、最低音と最高音との指間の度数D3=D1+D2=7となる。
図20(b)は、第一転回形の和音で押鍵される鍵(下から、E、G、C)を示している。CMajの第一転回形において、最低音Eと中間音Gとの指間の度数D1=3であり、中間音Gと最高音Cとの指間の度数D2=5である。また、最低音と最高音との指間の度数D3=8である。図20(c)は、第二転回形の和音で押鍵される鍵(下から、G、C、E)を示している。CMajの第二転回形において、最低音Gと中間音Cとの指間の度数D1=5であり、中間音Cと最高音Eとの指間の度数D2=4である。また、最低音と最高音との指間の度数D3=9である。
図21は、メジャーコードおよびマイナーコードのそれぞれにおける、基本形、第一転回形、第二転回形について、最低音から中間音、中間音から最高音、最低音から最低音のそれぞれの指間の度数D1、D2、D3を示す表である。表2100においては、メジャーコード(Maj)の指間度数(符号2110参照)、および、マイナーコード(min)の指間度数(符号2120参照)が示される。また、表2100において、指間度数の下に、全体の度数、つまり、最低音から最高音までの指間度数D3に対する比率(D1/D3或いはD2/D3)が示されている。たとえば、メジャーコード(Maj)において、転回形によって、最低音から中間音までの指間度数D1の、最低音から最高音までの指間度数D3に対する比率に差異があることがわかる。
また、図22は、メジャーコードCおよびマイナーコードAmのそれぞれにおける、基本形、第一転回形、第二転回形について、最低音から中間音、中間音から最高音、最低音から最低音のそれぞれの、白鍵数の差を示す表である。図22の表2100に従うと、直感的には以下のことが理解できる。
基本形においては、最低音から中間音、中間音から最高音までの白鍵数は等しく、
第1転回形においては、最低音から中間音までの白鍵数の方が、中間音から最高音までの白鍵数より小さく、また、
第2転回形においては、最低音から中間音までの白鍵数の方が、中間音から最高音までの白鍵数より大きい。
本実施の形態においては、上述した指間度数の差異、或いは、白鍵数の差異、つまりは、演奏者の指の開き具合に応じて、発音すべきコードの転回形を決定している。
図23は、本実施の形態にかかる指間度数評価処理の例を示すフローチャートである。図23に示すように、CPU21は、RAM23に格納された伴奏鍵域におけるオン状態の鍵の情報を取得して、指間度数D1、D2およびD3を算出する(ステップ2301)。
以下の演算では、D1およびD3のみが用いられる。D3は、D1とD2との和であるため、D1およびD2を求めた上で、これらを加算してD3を求めても良いし、D2を求めることなく、鍵の情報(鍵番号)から直接D3を求めても良い。
次いで、CPU21は、最低音から中間音までの指間度数D1の、最低音から最高音までの指間度数D3に対する比率D1/D3の値の範囲を調べる(ステップ2302)。比率D1/D3について、0.4<D1/D3≦0.6である場合には、CPU21は、コード転回情報として、基本形を示す情報をRAM23に格納する(ステップ2303)。比率D1/D3について、0.4≧D1/D3である場合には、CPU21は、コード転回情報として、第一転回形を示す情報をRAM23に格納する(ステップ2304)。また、0.6<D1/D3である場合には、CPU21は、コード転回情報として、第二転回形を示す情報をRAM23に格納する(ステップ2305)。コード転回情報は、後述するコード音伴奏処理(図10のステップ1007)において、発音するコード構成音の順序を決定するために利用される。
鍵盤処理(図6のステップ603)が終了すると、CPU21は、ソング伴奏処理を実行する(ステップ604)。図10は、本実施の形態にかかるソング伴奏処理の例を示す図である。図10に示すように、CPU21は、自動伴奏パターンが演奏中か否かを判断する(ステップ1001)。ステップ1001でYesと判断された場合には、CPU21は、自動伴奏パターンを構成する楽音(自動伴奏におけるメロディ音、オブリガート音、コード音(和音による伴奏音)、リズム音)を生成する。自動伴奏データには、上述したように概略的には4つの種類の楽音、すなわち、メロディ音、オブリガート音、コード音、リズム音のデータが含まれる。メロディ音およびオブリガート音によってメロディ自動伴奏パターンが構成され、コード音によってコード自動伴奏パターンが構成される。また、リズム音によってリズムパターンが構成される。
この楽音の生成には、概略的には、以下の4つの処理、割込カウンタ値を参照して、自動伴奏パターンの経過時間を管理するための処理が実行される基準時間処理(ステップ1010)、コード音についての経過時間(伴奏経過時間)を管理する処理が実行される伴奏時間処理(ステップ1011)、ステップ1010で生成される基準時間に基づいて楽音を生成する基準経過時間によるイベント処理(ステップ1012)、および、ステップ1011で生成される伴奏経過時間に基づいて楽音を生成する伴奏経過時間によるイベント処理(ステップ1013)が含まれる。
基準時間処理(ステップ1010)においては、CPU21は、基準時間カウント処理(ステップ1002)および拍先頭処理(ステップ1003)を実行する。
図11(a)は、本実施の形態にかかる基準時間カウント処理の例を示すフローチャート、図11(b)は、拍先頭処理の例を示すフローチャートである。基準時間カウント処理においては、CPU21は、割込カウンタのカウンタ値を取得する(ステップ1101)。次いで、CPU21は、予めRAM23の所定の領域に格納されていた伴奏経過時間に、取得したカウンタ値を加算して、基準経過時間を更新する(ステップ1102)。更新された基準経過時間は、RAM23の所定の領域に格納される。
次いで、CPU21は、RAM23の所定の領域に格納されていた拍内カウント値に、取得したカウンタ値を加算して、拍内カウント値を更新する(ステップ1103)。拍内カウント値は、1拍の間における時間的な位置を示す値である。更新された拍内カウント値も、RAM23の所定の領域に格納される。その後、次回の基準時間カウント処理で使用するために、CPU21は、割込カウンタのカウンタ値をクリアする(ステップ1104)。
また、拍先頭処理においては、CPU21は、拍内カウント値を参照して、処理時が、拍の先頭に相当するか否かを判断する(ステップ1111)。ステップ1111でYesと判断された場合には、CPU21は、過去1拍以上にわたって押鍵が無いか否かを判断する(ステップ1112)。ステップ1112でYesと判断された場合には、CPU21は、コード音停止処理を実行する(ステップ1113)。コード音停止処理(ステップ1113)においては、CPU21は、所定の期間(たとえば1小節)だけ、メロディ音、オブリガート音およびコード音の発音を停止する。すなわち、メロディ音、オブリガート音およびコード音のそれぞれに対応する音色および音高の楽音データの発音を、音源部26に対して指示しない。
図3において、ユーザが伴奏鍵域の鍵を、所定の期間だけ押鍵しないことにより(符号313参照)、自動伴奏パターンのうちメロディ音、オブリガート音を含むメロディ自動伴奏パターン、および、コード音を含むコード自動伴奏パターンの発音が停止され、リズムパターンのみが発音されている(符号323、333参照)。これは、拍先頭処理のステップ1111〜1113が実行された結果である。
次に、ステップ1011の伴奏経過時間処理について説明する。 伴奏経過時間処理には、伴奏経過時間カウント処理(ステップ1003)が含まれる。図12は、本実施の形態にかかる経過時間カウント処理の例を示すフローチャートである。図12に示すように、CPU21は、RAM23に格納された基準経過時間を取得する(ステップ1201)。次いで、CPU21は、RAM23に格納されたタイミング評価値を取得する(ステップ1202)。CPU21は、タイミング評価値を伴奏経過時間に反映させる(ステップ1203)。ステップ1203においては、基準経過時間に、タイミング評価値を加算することで、コード自動伴奏パターンにおけるコード音の発音タイミングを規定する伴奏経過時間を得る。
図16において、想定操作および基準経過時間を、それぞれ符号1601、1602で示す。なお、基準経過時間において、n、n+1、・・・は、基準経過時間に基づく内部時刻を示す。
いわゆる前ノリによって、想定操作における押鍵タイミングよりも早い時刻に押鍵がされていた場合には、タイミング評価値d1(d1<0)を考慮して、伴奏経過時間=(基準経過時間−d1)となり、伴奏経過時間に基づく内部時刻は、基準経過時間に基づく内部時刻よりも、前倒しとなる(符号1611参照)。
その一方、いわゆる後ノリによって想定操作における押鍵タイミングよりも遅い時刻に押鍵がされていた場合には、タイミング評価値d2(d2>0)を考慮して、伴奏経過時間=(基準経過時間−d2)となり、伴奏経過時間に基づく内部時刻は、基準経過時間に基づく内部時刻よりも、遅いものとなる(符号1621参照)。
次に、ステップ1012の基準経過時間によるイベント処理について説明する。基準経過時間によるイベント処理には、メロディ処理(ステップ1005)およびリズム処理(ステップ(ステップ1006)が含まれる。図13(a)は、本実施の形態にかかるメロディ処理の例を示すフローチャート、図13(b)は、リズム処理の例を示すフローチャートである。
図13(a)に示すように、メロディ処理において、CPU21は、RAM23に記憶された基準経過時間を参照する(ステップ1301)。次いで、CPU21は、メロディ自動伴奏パターンを構成するメロディ音およびオブリガート音について、メロディ自動伴奏パターンのデータを参照して、次のイベントを処理すべき時間(ソング時間Δt)が経過しているか否かを判断する(ステップ1302)。
ステップ1302でYesと判断された場合には、CPU21は、メロディ自動伴奏パターンのデータから、メロディ音について次のイベントに相当するレコード、および、オブリガート音についての次のイベントに相当するレコードを読み出して(ステップ1303)、当該レコード中の音色、音高および音長を示すデータをRAM23に一時的に記憶する(ステップ1304)。後述するように、音源発音処理(図6のステップ605)において、ステップ1304において一時的に記憶されたメロディ音およびオブリガート音の音色、音高および音長を示すデータは、音源部26に与えられる。
なお、同一時刻で複数の楽音を生成すべき場合があるため、ステップ1304の後、再度ステップ1301に戻り、ステップ1302でNoと判断されるまで処理が繰り返される。
図13(b)に示すように、リズム処理において、CPU21は、RAM23に記憶された基準経過時間を参照する(ステップ1311)。次いで、CPU21は、リズムパターンを構成するリズム音について、リズムパターンのデータを参照して、次のイベントを処理すべき時間(リズム時間Δt)が経過しているか否かを判断する(ステップ1312)。
ステップ1312でYesと判断された場合には、CPU21は、リズムパターンのデータから、リズム音について次のイベントに相当するレコードを読み出して(ステップ1313)、当該リズム音の音色を示すデータをRAM23に一時的に記憶する(ステップ1314)。後述するように、音源発音処理(ステップ605)において、ステップ1314において一時的に記憶された、リズム音の音色を示すデータが音源部26に与えられる。
なお、同一時刻で複数の楽音(リズム音)を生成すべき場合があるため、ステップ1404の後、再度ステップ1311に戻り、ステップ1312でNoと判断されるまで処理が繰り返される。
次に、ステップ1012の伴奏経過時間によるイベント処理について説明する。伴奏経過時間によるイベント処理には、コード音伴奏処理(ステップ1007)が含まれる。図14は、本実施の形態にかかるコード音伴奏処理の例を示すフローチャートである。図14に示すように、コード音伴奏処理においては、CPU21は、CPU21は、RAM23に記憶された伴奏経過時間を参照する(ステップ1401)。次いで、CPU21は、コード音について、コード自動伴奏パターンのデータを参照して、次のイベントを処理すべき時間(伴奏時間Δt)が経過しているか否かを判断する(ステップ1402)。メロディ処理(図13(a))およびリズム処理(図13(b))においては、基準経過時間が参照されているが、コード音伴奏処理においては、伴奏経過時間が参照される。伴奏経過時間は、図12および図16を参照して説明したように、想定操作における押鍵タイミングと実際の押鍵のタイミングとの差異であるタイミング評価値が反映された伴奏経過時間である。
ステップ1402でYesと判断された場合には、CPU21は、コード自動伴奏パターンのデータから、コード音について次のイベントに相当するレコードを読み出す(ステップ1403)。また、コード音伴奏処理では、演奏者による実際の押鍵における音長や押鍵数にしたがって、音長やコード名を変更するため、また、発音するコード構成音の順序を、コード転回情報にしたがって変更するため、CPU21は、操作反映処理を実行する(ステップ1404)。図15は、本実施の形態にかかる操作反映処理の例を示すフローチャートである。
図15に示すように、操作反映処理において、CPU21は、ステップ909で得られてRAM23に記憶された操作音長値を参照して、発音すべきコード音の音長に反映させる処理を実行する(ステップ1501)。コード音の音長は以下のように算出される。
音長=(操作音長値/想定操作における想定音長値)*コード音伴奏データ初期値にて示される音長
ここに、想定操作における想定音長値は、図3に示す想定操作における押鍵時間に相当する。
また、休符の長さは、次のコード音の発音タイミングまでのステップ時間から、算出された音長を減じた値となる。図17は、操作反映処理において得られたコード音の再生音長を説明する図である。伴奏例1では、音符の音長t2は、コード音伴奏データ初期値にて示される音長t1の半分であり、これは、(操作音長値/想定操作における想定音長値)=0.5であった場合である。また、伴奏例2では、音符の音長t3は、コード音伴奏データ初期値にて示される音長t1の1.5倍であり、これは、操作音長値/想定操作における想定音長値)=1.5であった場合である。
次いで、CPU21は、押鍵数カウント値を参照して、押鍵数にしたがって、発音すべきコード構成音を決定する(ステップ1502)。図18は、本実施の形態にかかる押鍵数反映処理の例を示すフローチャートである。図18に示すように、CPU12は、RAM23に記憶された押鍵数カウント値を取得して参照する(ステップ1801)。前述したように、本実施の形態において、コード自動伴奏パターンのデータは、ベース音、第1のコード構成音(ルート音)、第2のコード構成音(第3音)、第3のコード構成音(第5音)、第4のコード構成音(第7音、テンションノート等)を含む(図19の符号1900参照)。特に、第4のコード構成音(図19の符号1910)は、第6音、第7音、第9音などを含む3和音以外のコード構成音(便宜上、「テンション付加コード構成音」と称する:符号1904)、或いは、ルート音のオクターブ音に相当する楽音を付加したコード構成音(便宜上、「テンション非付加コード構成音」と称する:符号1905)のいずれかが選択されるようになっている。
押鍵数カウント値が「1」である場合には、CPU21は、発音すべきコード構成音が、ベース音だけであること(図19の符号1901参照)を示すコード音制御情報を生成して、RAM23に一時的に記憶する(ステップ1802)。押鍵数カウント値が「2」である場合には、CPU21は、発音すべきコード構成音が、ベース音、第1のコード構成音(ルート)および第3のコード構成音(第5音)を含むこと(符号1902参照)を示すコード音制御情報を生成して、RAM23に一時的に記憶する(ステップ1803)。
また、押鍵数カウント値が「3」である場合には、CPU21は、コード構成音が、ベース音、第1のコード構成音、第2のコード構成音および第3のコード構成音を含むこと、つまり、ベース音および3和音であること(符号1903参照)を示すコード音制御情報を生成して、RAM23に一時的に記憶する(ステップ1804)。さらに、押鍵数カウント値が「4」以上である場合には、コード構成音が、ベース音、第1のコード構成音、第2のコード構成音、第3のコード構成音および第4のコード構成音を含むことを示すコード音制御情報を生成して、RAM23に記憶する(ステップ1805)。
押鍵数判断処理(ステップ1502)が終了すると、CPU21は、押鍵数カウント値が4以上であるか否かを判断する(ステップ1503)。ステップ1503でYesと判断された場合には、CPUは、和音反映処理を実行する(ステップ1504)。本実施の形態にかかる和音反映処理において、CPU21は、RAM23に記憶された白鍵黒鍵比率評価値を参照して、押鍵された鍵に黒鍵が含まれる場合には、第4のコード構成音として、第7音やテンションノート等を含むテンション付加コード構成音を選択する(図9の符号1904参照)。その一方、押鍵された鍵に黒鍵が含まれない場合には、CPU21は、第4のコード構成音として、テンションコード非付加コード構成音を選択する(図9の符号1905参照)。選択されたコード音制御情報は、RAM23に一時的に記憶される。
ステップ1503でNoと判断された場合、CPU21は、押鍵数カウント値が3であるかを判断する(ステップ1505)。ステップ1505でYesと判断された場合には、CPU21は、転回形変換反映処理を実行する(ステップ1506)。転回形変換反映処理においては、押鍵数カウント値が3であるときに、指間度数評価処理において得られたコード転回情報にしたがって、コード構成音の順序が変更される。
より詳細には、CPU21は、RAM23に格納されたコード転回情報が、基本形を示すもので無いかを判断する(ステップ1511)。ステップ1511でNo、つまり、コード転回情報が基本形を示すものである場合には、そのまま処理を終了する。つまり、音高の低い方から、ルート音、第3音、第5音の順序のコード構成音とするコード音制御情報がそのまま維持される。
ステップ1512でYesと判断された場合には、CPU21は、コード基本情報が第一転回形を示すものであるかを判断する(ステップ1512)。ステップ1512でYesと判断された場合には、ルート音を1オクターブアップさせる(ステップ1513)。これにより、音高の低い方から、第3音、第5音、ルート音という順序を示す情報を含むコード音制御情報が生成され、RAM23に格納される。
ステップ1512でNoと判断されることは、コード転回情報が、第二転回形を示すものである。したがって、CPU21は、第5音を1オクターブダウンさせる(ステップ1514)。これにより、音高の低い方から、第5音、ルート音、第3音という順序を示す情報を含むコード音制御情報が生成され、RAM23に格納される。
その後、CPU21は、コード構成音の音色、決定されたコード構成音およびコード構成音の順序に基づいて、和音音を構成する楽音のそれぞれの音高、音長を示すデータをRAM23に一時的に記憶する(ステップ1405)。後述するように、音源発音処理(図6のステップ605)において、ステップ1404において一時的に記憶された音色、音高および音長を示すデータは、音源部26に与えられる。
なお、コード音伴奏処理では、同一時刻で複数の楽音(和音)を生成すべきであるため、ステップ1404の後、再度ステップ1401に戻り、ステップ1402でNoと判断されるまで処理が繰り返される。
ソング伴奏処理(図6のステップ604)が終了すると、CPU21は、音源発音処理を実行する(ステップ605)。音源発音処理において、CPU21は、たとえば、メロディ鍵処理(図7のステップ704)で生成された、発音すべき楽音の音色および音高を示すデータを音源部26に与え、或いは、消音すべき楽音の音色および音高を示すデータを音源部26に与える。また、CPU21は、ソング伴奏処理(図10)において生成された、メロディ音やオブリガート音の音色、音高および音長を示すデータを、音源部26に与えるとともに、リズム音の音色を示すデータを、音源部26に与える。さらに、CPU21は、コード構成音の音色、コード構成音それぞれの音高および音長を含むデータを、音源部26に与える。
音源部26は、音色、音高、音長等を示すデータにしたがって、ROM22の波形データを読み出して、所定の楽音データを生成する。これにより、スピーカ28から所定の楽音が発生する。
音源発音処理(ステップ605)が終了すると、CPU21は、その他の処理(たとえば、表示部15への画像表示など:ステップ606)を実行して、ステップ602に戻る。
本実施の形態によれば、CPU21は、操作された複数の鍵について、2つの鍵の間隔を示す指間度数を得て、指間度数のそれぞれに基づいて、コードの転回形を決定する。これにより、演奏者による押鍵の際の指のフォームにしたがってコードの転回形を変化させることができる。したがって、演奏者が、実際のコード演奏の際の鍵名を知らない場合であっても、指のフォームおよびそのフォームの指にて押鍵された鍵の間隔に基づいて適切な転回形のコード構成音を発音することができる。
特に、本実施の形態においては、CPU21は、操作された鍵が3つの場合に、最低音に対応する鍵から中央の音に相当する鍵の間の度数に基づいて転回形を決定している。一般に、左手でコードを演奏する場合には、小指、中指或いは人差し指、および、親指の3つの指で鍵を押鍵することが多い。小指と、中指或いは人差し指で押鍵される鍵の間隔を考慮して、適切なコード転回形を決定することができる。
さらに、本実施の形態においては、最低音に対応する鍵から中央の音に相当する鍵の間の度数の、最低音に対応する鍵から最高音に相当する鍵の間の度数に対する比率に基づいて、転回形を決定する。すなわち、小指と中指或いは人差し指との間隔と、小指と親指との間隔を考慮して転回形を決定する。これにより、より押鍵した指のフォームにしたがった適切なコード転回形を決定することが可能となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、前記実施の形態においては、図23に示すように、メジャーコード(Maj)、マイナーコード(min)を区別無く、最低音から中間音までの指間度数D1の、最低音から最高音までの指間度数D3に対する比率D1/D3の値の範囲にしたがって、コード転回情報を決定しているが、これに限定されず、メジャーコード(Maj)およびマイナーコード(min)を区別して、それぞれについてコード転回情報を決定しても良い。
図24は、他の実施の形態にかかる指間度数評価処理の例を示すフローチャートである。図24において、ステップ2401は、図23のステップ2302と同様である。次いで、CPU21は、コード自動伴奏パターンを参照して、メジャーコードであるかを判断する(ステップ2402)。ステップ2402でYesと判断された場合に引き続いて実行されるステップ2403〜2406は、図23のステップ2302〜ステップ2305とほぼ同様である。
ただし、ステップ2403〜2406においては、比率D1/D3について、0.52<D1/D3≦0.62である場合には、CPU21は、コード転回情報として、基本形を示す情報をRAM23に格納する(ステップ2404)。比率D1/D3について、0.52≧D1/D3である場合には、CPU21は、コード転回情報として、第一転回形を示す情報をRAM23に格納する(ステップ2405)。また、0.62<D1/D3である場合には、CPU21は、コード転回情報として、第二転回形を示す情報をRAM23に格納する(ステップ2406)。
ステップ2302でNo、すなわち、コード自動伴奏パターンがマイナーコードである場合にも、CPU21は、メジャーコードと略同様の処理(ステップ2407〜2410)を実行する。このステップ2407〜2410も、図23のステップ2302〜ステップ2305とほぼ同様である。
ただし、ステップ2407〜2410においては、比率D1/D3について、0.38<D1/D3≦0.48である場合には、CPU21は、コード転回情報として、基本形を示す情報をRAM23に格納する(ステップ2408)。比率D1/D3について、0.48≧D1/D3である場合には、CPU21は、コード転回情報として、第一転回形を示す情報をRAM23に格納する(ステップ2409)。また、0.48<D1/D3である場合には、CPU21は、コード転回情報として、第二転回形を示す情報をRAM23に格納する(ステップ2410)。
上記他の実施の形態においては、コード名がメジャーコードであるか、マイナーコードであるかにより、コード転回形を判断する要素を変化させて、より指のフォームに合致したコード転回形を決定できるようにしている。
特に、上記他の実施の形態においては、前記最低音に対応する演奏操作子から中央の音に相当する演奏操作子の間の度数の、前記最低音に対応する演奏操作子から最高音に相当する演奏操作子の間の度数に対する比率について、コード名がメジャーコードの場合と、前記コード名がマイナーコードの場合とで、基本形、第1転回形、或いは、第2転回形を判断するための値の範囲を変化させている。たとえば、基本形と判断される際の比率の範囲(最大値および最小値)は、コード名がマイナーコードである場合の方が、双方とも小さな値(最小値:0.38、最大値:0.48)としている。これは、基本形において、マイナーコードの場合には、メジャーコードの場合よりも、最低音と中間音との間隔が小さくなることに基づいている。
また、前記実施の形態においては、自動伴奏モードにおいて、伴奏鍵域における実際の押鍵タイミング、および、押鍵時間によって、自動伴奏パターンのうち、コード自動伴奏パターンの発音タイミングおよび発音時間(音長)を制御しているが、これに限定されるものではなく、メロディ自動伴奏パターンのメロディ音やオブリガート音の発音タイミングや音長を制御しても良い。
また、前記実施の形態においては、想定操作における押鍵タイミングは拍の先頭であり、実際の押鍵タイミングと想定操作における押鍵タイミングとの比較や、押鍵時間の比較は拍ごとに行なわれるが、これに限定されるものではなく、複数拍(たとえば、2拍)ごと、あるいは、小節ごとであっても良い。
さらに、前記実施の形態においては、押鍵数カウント値が「4」以上であって、かつ、押鍵された鍵に黒鍵が含まれる場合には、CPU21は、第4のコード構成音として、第7音やテンションノート等を含むテンション付加コード構成音、つまり、より複雑なコードネームとなるコード構成音を選択している。しかしながら、これに限定されるものではなく、黒鍵および白鍵の割合に基づいて、押鍵された鍵のうち、黒鍵の割合が、白鍵の割合以上であれば、テンション付加構成音を選択しても良い。