(57)【要約】【課題】  コードデータ列に基づいて聴感上自然な流れを有する伴奏音列を生成する。【解決手段】  一連のコードを表すコードデータ列に基づいて、コードデータごとにコードに関係した基準音高（根音またはオンベースコードの場合にはベース音）が抽出される（Ｓ１４）。抽出された一連の基準音高は、各基準音高が一連の流れをもって順次進行する複数のコード進行区間に区切られる（Ｓ１６）。区切られたコード進行区間ごとに、伴奏音列を表すベース音列データが基準音高に基づいて生成される（Ｓ１８）。このベース音列データの生成においては、ベース音列に含まれる全てのベース音の音高が所定のベース音域に含まれていること、コードデータ列に対応したメロディ音列との適合性などが考慮される。【選択図】  図２
2005141124.tif 000002
【特許請求の範囲】
【請求項１】
一連のコードを表すコードデータ列を供給するコードデータ供給ステップと、
前記供給されたコードデータごとにコードに関係した所定の基準音高を抽出する基準音高抽出ステップと、
前記抽出された一連の基準音高を各基準音高が一連の流れをもって順次進行する複数のコード進行区間に区切って一連のコード進行区間を生成する区間生成ステップと、
前記コード進行区間ごとに基準音高に基づいて伴奏音列を表す伴奏音列データを生成する伴奏音列生成ステップと
を含むことを特徴とする伴奏音列生成プログラム。
【請求項２】
前記伴奏音列生成ステップは、
前記基準音高列に基づいて生成される伴奏音列の中の所定音域に入らない伴奏音の音高をシフトして同所定音域に入るように修正する音高修正ステップを含むことを特徴とする請求項１に記載した伴奏音列生成プログラム。
【請求項３】
前記伴奏音列生成ステップは、
複数の伴奏音列候補を生成する伴奏音列候補生成ステップと、
前記複数の伴奏音列候補を構成する伴奏音の音高に応じまたは前記コードデータ列に対応したメロディ音列に応じて、前記複数の伴奏音列候補の中から１つの伴奏音列を選択する伴奏音列選択ステップとを含むことを特徴とする請求項１に記載した伴奏音列生成プログラム。
【請求項４】
一連のコードを表すコードデータ列を供給するコードデータ供給手段と、
前記供給されたコードデータごとにコードに関係した所定の基準音高を抽出する基準音高抽出手段と、
前記抽出された一連の基準音高を各基準音高が一連の流れをもって順次進行する複数のコード進行区間に区切って一連のコード進行区間を生成する区間生成手段と、
前記コード進行区間ごとに基準音高に基づいて伴奏音列を表す伴奏音列データを生成する伴奏音列生成手段と
を備えたことを特徴とする伴奏音列生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一連のコードを表すコードデータ列に基づいて伴奏音列を生成する伴奏音列生成プログラムおよび伴奏音列生成装置に関する。
【背景技術】
【０００２】
従来から、例えば下記特許文献１に示されているように、一連のコードを表すコードデータ列と、音高および音符長を表す伴奏パターンとを用いて、伴奏音列を自動的に生成する伴奏音列生成装置は知られている。
【特許文献１】特開２００２−２６８６３８号公報
【０００３】
コードは、楽曲の流れに対応するとともに、所定のコード進行区間ごとに滑らかな一連の流れをもって進行するものである。しかし、上記従来の装置においては、コード進行の状況が考慮されておらず、すなわちコード進行区間が何ら考慮されておらず、一連のコードデータ列に従って一律に伴奏音列が生成されるので、生成される伴奏音列が聴感上不自然なものとなることがある。
【発明の開示】
【０００４】
本発明は、上記問題に対処するためになされたもので、その目的は、一連のコードデータ列に基づいて聴感上自然な流れを有する伴奏音列を生成する伴奏音列生成プログラムおよび伴奏音列生成装置を提供することにある。
【０００５】
上記目的を達成するために、本発明の特徴は、一連のコードを表すコードデータ列を供給するコードデータ供給ステップと、前記供給されたコードデータごとにコードに関係した所定の基準音高を抽出する基準音高抽出ステップと、前記抽出された一連の基準音高を各基準音高が一連の流れをもって順次進行する複数のコード進行区間に区切って一連のコード進行区間を生成する区間生成ステップと、前記コード進行区間ごとに基準音高に基づいて伴奏音列を表す伴奏音列データを生成する伴奏音列生成ステップとを備えた伴奏音列生成プログラムにある。
【０００６】
この場合、基準音高抽出手段は、例えばコード構成音を基準音高として抽出する。特に、コード構成音のうちで、根音（またはオンベースコードの場合にはベース音）を抽出するようにするとよい。区間生成ステップは、例えば、抽出された複数の基準音高が所定の音程以内で変化している範囲をコード進行区間とすることができる。
【０００７】
前記のように構成した本発明の特徴においては、抽出された一連の基準音高は、各基準音高が一連の流れをもって順次進行する複数のコード進行区間に区切られ、同区切られたコード進行区間ごとに基準音高に基づいて伴奏音列が生成される。これにより、コード進行の状況が考慮され、聴感上自然に変化する伴奏音列が生成される。
【０００８】
また、本発明の他の特徴は、伴奏音列生成ステップが、基準音高列に基づいて生成される伴奏音列の中の所定音域に入らない伴奏音の音高をシフトして所定音域に入るように修正する音高修正ステップを含むようにしたことにある。この場合、所定の音域から外れた伴奏音に関しては、例えば、オクターブシフトして所定の音域に納まるようにするとよい。これによれば、全ての伴奏音が必ず所定音域に入るようになるので、他の演奏音との重なりを簡単に回避できるようになる。
【０００９】
また、本発明の他の特徴は、伴奏音列生成ステップが、複数の伴奏音列候補を生成する伴奏音列候補生成ステップと、複数の伴奏音列候補を構成する伴奏音の音高に応じまたはコードデータ列に対応したメロディ音列に応じて、複数の伴奏音列候補の中から１つの伴奏音列を選択する伴奏音列選択ステップとを含むようにしたことにある。
【００１０】
この場合、伴奏音列選択ステップは、例えば、伴奏音列候補を構成する複数の伴奏音が所定音域に入る伴奏音列候補を選択したり、所定音域から外れる伴奏音が最も遅く現れる伴奏音列候補または所定の音域から外れる伴奏音が最も少ない伴奏音列候補を選択したりするとよい。また、前記所定音域よりも狭くかつ伴奏音列にとって最適な音域を設定し、この最適な音域に属する伴奏音の頻度が高い伴奏音列候補を選択するようにしてもよい。さらに、コードデータ列に対応したメロディ音列と重ならない伴奏音列候補を選択したり、またメロディ音列に重ならない伴奏音列候補が複数存在する場合にはメロディ音列に近い伴奏音列候補を選択したりするとよい。
【００１１】
このような本発明の他の特徴によれば、伴奏音として適した伴奏音列が選択され、またはメロディ音列に適合した伴奏音列が選択されるので、聴感上より自然に変化する伴奏音列が生成される。
【００１２】
本発明は、コンピュータプログラムの発明として構成しかつ実施することができるのみならず、装置および方法の発明として構成しかつ実施することもできる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の一実施形態に係る伴奏音列生成プログラムおよび伴奏音列生成装置の適用される電子音楽装置について説明する。図１は、この電子音楽装置を概略的に示すブロック図である。この電子音楽装置としては、鍵盤型電子楽器、非鍵盤型電子楽器（タッチプレート、押しボタン、弦などを演奏操作子として有する電子楽器）、自動演奏装置（シーケンサ装置）、自動演奏機能を有するパーソナルコンピュータなどが考えられる。
【００１４】
この電子音楽装置は、入力操作子群１１、表示器１２および楽音信号発生回路１３を有する。入力操作子群１１は、この電子音楽装置の動作を指示するための複数の操作子からなり、これらの複数の操作子の操作はバス２０に接続された検出回路１４によって検出される。なお、これらの複数の操作子は、スイッチ操作子、ボリューム操作子、マウスなどを含んでおり、鍵盤型電子楽器においては白鍵および黒鍵も含む。表示器１２は、液晶ディスプレイ、ＣＲＴなどで構成され、文字、数字、図形などを表示する。この表示器１２の表示態様は、バス２０に接続された表示制御回路１５によって制御される。
【００１５】
楽音信号発生回路１３は、バス２０に接続されていて後述するＣＰＵ３１の制御のもとに供給される演奏データに基づいて楽音信号を形成するとともに、同形成された楽音信号に効果を付与してサウンドシステム１６に出力する。サウンドシステム１６は、スピーカ、アンプなどを含んでいて、楽音信号発生回路１３からの楽音信号に対応した楽音を発音する。
【００１６】
また、この電子音楽装置は、バス２０にそれぞれ接続されていてマイクロコンピュータ本体部を構成するＣＰＵ３１、タイマ３２、ＲＯＭ３３、ＲＡＭ３４を備えているとともに、外部記憶装置３５および通信インターフェース回路３６も備えている。外部記憶装置３５は、この電子音楽装置に予め組み込まれているハードディスクＨＤ、同電子音楽装置に装着可能なコンパクトディスクＣＤ、フレキシブルディスクＦＤなどの種々の記録媒体と、同各記録媒体に対するドライブユニットを含むものであり、大量のデータ及びプログラムを記憶及び読み出し可能にしている。本実施形態の場合、ハードディスクＨＤには、図２の伴奏データ生成プログラム（図３のコード進行区間処理ルーチンを含む）を含む各種プログラムに加え、複数の曲データが記憶されている。これらのプログラムおよび複数の曲データは、予めハードディスクＨＤに記憶されていたり、コンパクトディスクＣＤ、フレキシブルディスクＦＤなどからハードディスクＨＤに供給されたり、後述する外部機器４１又は通信ネットワーク４２を介した外部からハードディスクＨＤに供給されるものである。
【００１７】
複数の曲データは、楽曲をそれぞれ自動演奏させることできるものであり、各曲データは、楽曲の曲名と共に、少なくともメロディデータ列およびコードデータ列を含む。メロディデータ列は、メロディ音の音高および符長をそれぞれ表す複数の音符データを楽曲の進行（すなわち、時間経過）に従って配列したものである。コードデータ列は、一連のコードを表すコードデータを楽曲の進行（すなわち、時間経過）に従って、すなわちメロディデータ列に対応させて配列したものである。コードデータ列は、例えばＦ#，Ｅ，Ｆ#／Ｅのようなコード名およびコード長（符長）を表している。なお、Ｆ#／Ｅは、Ｅ音をベース音とするオンベースコードを表している。
【００１８】
次に、上記のように構成した実施形態の動作を説明する。まず、ユーザは、入力操作子群１１を操作して図２の伴奏データ生成プログラムをＣＰＵ３１に実行させる。このプログラムの実行は、図２のステップＳ１０にて開始され、ステップＳ１２にてユーザ設定処理を実行する。ユーザ設定処理においては、曲データをユーザに選択させるとともに、必要に応じてベース音域、ベース音列選択条件などをユーザに設定させる。曲データの選択においては、ユーザは、表示器１２に表示される複数の曲名からなる曲名リストを見ながら入力操作子群１１を操作して、外部記憶装置３５内に記憶されている複数組の曲データの中から１つの曲データを指定する。これにより、指定された１つの曲データは、外部記憶装置３５から読み出されて、ＲＡＭ３４に書き込まれる。
【００１９】
また、ユーザが所望とする曲データが外部記憶装置３５に記憶されていない場合には、通信インターフェース回路３６を介して他の曲データを記憶した外部機器４１から所望の曲データを読み込み、または通信インターフェース回路３６および通信ネットワーク４２を介して外部から所望の曲データを読み込んで、ＲＡＭ３４に書き込んでもよい。また、入力操作子群１１または外部機器４１から実際の演奏による演奏データを曲データとしてＲＡＭ３４に書き込むようにしてもよい。
【００２０】
また、ベース音域の設定においては、ユーザは、入力操作子群１１を用いて最終的に決定されるベース音列の許容音域の下限音高および上限音高を入力する。また、ベース音列選択条件の設定においては、ユーザは、入力操作子群１１を用いて詳しくは後述する最適なベース音域の上限音高および下限音高を入力する。この場合、ベース音域としては、例えば、下限音高A#0および上限音高Ａ2により規定される２オクターブの範囲程度が妥当である。また、最適ベース音域としては、下限音高Ｆ1および上限音高Ｅ2により規定される１オクターブの範囲程度が妥当である。なお、ユーザがこれらのベース音域およびベース音列選択条件を入力しなかった場合には、予め決められたデフォルト値を採用するようにしてもよい。さらに、このベース音域およびベース音列選択条件の入力処理を省略して、予め決められたデフォルト値が常に採用されるようにしてもよい。
【００２１】
前記ステップＳ１２の処理後、ステップＳ１４にて、前記ＲＡＭ３４に書き込んだ一連のコードを表すコードデータ列を用いて、各コードの根音からそれぞれなる基準音高列を表す基準音高列データを生成する。ただし、オンベース音が指定されているオンベースコード（例えば、Ｆ#／Ｅ）においては、オンベース音が基準音高（例えば、Ｆ#／Ｅの場合にはＥ音）となる。具体例をあげて説明すると、コード進行が、例えば、Ｆ#6，Ｅ，Ｆ#／Ｅ，Ｄ#m7，Ｇ#m7，Ｃ#m7，Ｄ#sus4，Ｄ#・・であったとすると、基準音高列は、Ｆ#，Ｅ，Ｅ，Ｄ#，Ｇ#，Ｃ#，Ｄ#，Ｄ#・・となる。ここでは、簡素化のためにオクターブ情報を省略して示している。
【００２２】
次に、ステップＳ１６にて、基準音高データ列を用いて基準音高が滑らかに推移している区間をコード進行区間として定義して、コード区間ごとのコードデータ列を生成する。この場合、まず、基準音高列において、前の音符との音高差を半音間隔で表す音高差を計算する。ただし、前の基準音高からの音高差を１オクターブ以内とするとともに、上下2方向のうちで小さい方を採用し、上方向を正で表すとともに下方向を負で表す。ただし、先頭の基準音高に関する音高差は計算しない。この場合、例えば、基準音高列がＦ#，Ｅ，Ｅ，Ｄ#，Ｇ#，Ｃ#，Ｄ#，Ｄ#・・であれば、各基準音に関する音高差を括弧内に表すと、Ｆ#，Ｅ(−２)，Ｅ(０)，Ｄ#(−１)，Ｇ#(５)，Ｃ#(−７)，Ｄ#(２)，Ｄ#(０)・・となる。次に、滑らかに変化している範囲をコード進行区間とするために、音高差が所定値以内（本実施形態では、絶対値で「２」以下）である基準音高列をコード進行区間とすると、前記例では、次の第１〜３コード進行区間が定義される。第１コード進行区間のコードデータ列は、Ｆ#，Ｅ(−２)，Ｅ(０)，Ｄ#(−１)となり、第２コード進行区間のコードデータ列はＧ#となり、第３コード進行区間のコードデータ列はＣ#，Ｄ#(２)，Ｄ#(０)・・となる。ただし、各コード進行区間においては、先頭の基準音高に関しては前の基準音高とは音高差に関して無関係であるので、音高差の表示を無くして示している。
【００２３】
次に、ベース音列を決定するためのステップＳ１８のコード進行区間処理ルーチンを実行する。このコード進行区間処理ルーチンは各コード進行区間ごとに実行されるもので、図３に詳細に示されているように、その実行がステップＳ３０にて開始される。このコード進行区間処理ルーチンの実行開始後、ステップＳ３２にて、１つのコード進行区間に対し、同コード進行区間に含まれる基準音高データ列を用いて複数のベース音列候補を生成する。このベース音列候補の生成においては、ベース音域（本実施形態では、A#0〜Ａ2）内に属し、かつ前記コード進行区間の基準音高列の先頭の音名音を先頭ベース音として定め、その後に前記ステップＳ１４で生成したコードデータ列中の音高差ずつ変化する音高を順次後続のベース音とすることにより、複数のベース音列候補を生成する。この場合、ベース音域は２オクターブ分であるので、２つの先頭ベース音が定められ、２つのベース音列が生成される。このことを前記第１コード進行区間のコードデータ列Ｆ#，Ｅ(−２)，Ｅ(０)，Ｄ#(−１)を上げて説明すると、第１のベース音列はＦ#1，Ｅ1，Ｅ1，Ｄ#1となり、第２ベース音列はＦ#2，Ｅ2，Ｅ2，Ｄ#2となる。
【００２４】
次に、ステップＳ３４にて前記生成された第１および第２ベース音列中の全てのベース音がベース音域（本実施形態では、A#0〜Ａ2）に入るかを調べるとともに、ステップＳ３６にて前記調べた結果に基づいてベース音域に入るベース音列の数を判定する。この場合、全てのベース音がベース音域に入るベース音列が１つのみである場合、全てのベース音がベース音域に入るベース音列が無い場合、および全てのベース音がベース音域に入るベース音列が複数存在する場合の３ケースがある。これらの場合に関する説明に関し、上述したベース音列の例では特徴が現れないので、他のベース音列の例を上げながら説明する。
【００２５】
まず、全てのベース音がベース音域に入るベース音列が１つのみである場合について説明する。この場合、ステップＳ３６の判定処理によってステップＳ３８に進み、ステップＳ３８にて全てのベース音がベース音域に入るベース音列が決定ベース音列とする。具体的には、１つのコード進行区間の基準音列がＥ，Ｆ#(２)，Ｇ#(２)，A#(２)，G#(−２)であると、第１ベース音列はＥ1，Ｆ#1，Ｇ#1，A#1，G#1となり、第２ベース列はＥ2，Ｆ#2，Ｇ#2，A#2，G#２となる。この場合、第１ベース音列の全てのベース音はベース音域に入るが、第２ベース音列中のベース音A#2はベース音域を越える。したがって、ステップＳ３６，Ｓ３８の処理により、第１のベース音列を最終的なベース音列する。
【００２６】
次に、全てのベース音がベース音域に入るベース音列が無い場合について説明する。この場合、ステップＳ３６の判定処理により、ステップＳ４０，Ｓ４２の処理を実行する。ステップＳ４０においては、ベース音域から外れるベース音が先頭から最も遅く現れるベース音列を選択する。なお、このステップＳ４０の処理に代えて、ベース音域を外れたベース音の数が最も少ないベース音列を選択するようにしてもよい。そして、ステップＳ４２において、ベース音域から外れたベース音をオクターブシフトして、全てのベース音がベース音域に入るようにして、このオクターブシフトしたベース音を含むベース音列を最終的な決定ベース音列とする。
【００２７】
具体的には、１つのコード進行区間の基準音列がＧ，Ａ(２)，Ｂ(２)，Ａ(−２)，G(−２)，Ｆ(−２)，Ｅ(−１)，Ｄ(−２)，Ｃ(−２)，Ｂ(１１)，Ａ(−２)，G(−２)であると、第１ベース音列はＧ1，Ａ1，Ｂ1，Ａ1，G1，Ｆ1，Ｅ1，Ｄ1，Ｃ1，Ｂ0，Ａ0，G0となり、第２ベース音列は、Ｇ2，Ａ2，Ｂ2，Ａ2，G2，Ｆ2，Ｅ2，Ｄ2，Ｃ2，Ｂ1，Ａ1，G1となる。この場合、第１ベース音列中のベース音Ａ0，G0はベース音域を越え、また第２ベース音列中のベース音Ｂ2もベース音域を越える。第１ベース音列中のベース音Ａ0は１１番目のベース音であり、また第２ベース音列中のベース音Ｂ2は３番目のベース音であるので、ステップＳ４０の処理により、第１ベース音列が最終的なベース音列として決定される。そして、ステップＳ４２の処理により、この決定された第１ベース音列中、ベース音域を超えるベース音（前記例では、ベース音Ａ0，G0）がオクターブシフトされて、最終的な決定ベース音列は、Ｇ1，Ａ1，Ｂ1，Ａ1，G1，Ｆ1，Ｅ1，Ｄ1，Ｃ1，Ｂ0，Ａ1，G1となる。
【００２８】
次に、全てのベース音がベース音域に入るベース音列が複数存在する場合について説明する。この場合、ステップＳ３６の判定処理により、ステップＳ４４以降の処理を実行してメロディ音列と適合するベース音列を決定ベース音列とする。具体例を上げて説明すると、１つのコード進行区間の基準音列が、Ｆ#，Ｇ#(２)，Ａ(１)，Ｂ(２)，Ｃ#(２)，Ｂ(−２)，Ａ(−２)，Ｇ#(−１)，Ｆ#(−２)，Ｇ#(２)，Ａ(１) ，Ｂ(２)であると、第１ベース音列はＦ#1，Ｇ#1，Ａ1，Ｂ1，Ｃ#2，Ｂ1，Ａ1，Ｇ#1，Ｆ#1，Ｇ#1，Ａ1 ，Ｂ1となり、第２ベース音列はＦ#2，Ｇ#2，Ａ2，Ｂ2，Ｃ#3，Ｂ2，Ａ2，Ｇ#2，Ｆ#2，Ｇ#2，Ａ2 ，Ｂ2となる。この場合、両ベース音列の全てのベース音はベース音域に入るので、前記ステップＳ３６の判定処理により、ステップＳ４４以降の処理が実行される。
【００２９】
ステップＳ４４においては、前記ＲＡＭ３４に転送記憶したメロディデータ列を用い、１つのコードの長さ（符長）に対応したメロディ音列中の最低音をコードごとに検出する。次に、ステップＳ４６にて、メロディ音列の最低音を越えるベース音を含むベース音列の数、すなわちメロディ音列と重ならないベース音列の数を調べる。この場合、メロディ音列と重ならないベース音列が１つのみである場合、メロディ音列と重ならないベース音列が無い場合、およびメロディ音列と重ならないベース音列が複数存在する場合の３ケースがある。
【００３０】
まず、メロディ音列と重ならないベース音列が１つのみである場合について説明する。この場合、ステップＳ４８の処理により、ステップＳ５０にてメロディ音列と重ならない前記１つのベース音列を最終的な決定ベース音列とする。
【００３１】
次に、メロディ音列と重ならないベース音列が無い場合について説明する。この場合、ステップＳ４８の判定処理により、ステップＳ５２，Ｓ５４の処理を実行する。ステップＳ５２においては、各ベース音列について、ベース音が最適ベース音域に入るベース音の数を調べる。ステップＳ５４においては、最適ベース音域に入るベース音の数が最大であるベース音列を最終的な決定ベース音列とする。この具体例を、最適ベース音域をＦ1〜Ｅ2とした場合を例にして説明する。例えば、１つのコード進行区間の基準音列が、Ｃ#，Ｄ#(２)，Ｅ(１)，Ｆ#(２)，Ｇ#(２)，Ｆ#(−２)，Ｅ(−２)，Ｄ#(−１)，Ｃ#(−２)，Ｄ#(２)，Ｅ(１) ，Ｆ#(２)であると、第１ベース音列はＣ#1，Ｄ#1，Ｅ1，Ｆ#1，Ｇ#1，Ｆ#1，Ｅ1，Ｄ#1，Ｃ#1，Ｄ#1，Ｅ1，Ｆ#1となり、第２ベース音列はＣ#2，Ｄ#2，Ｅ2，Ｆ#2，Ｇ#2，Ｆ#2，Ｅ2，Ｄ#2，Ｃ#2，Ｄ#2，Ｅ2，Ｆ#2となる。ここで、第１ベース音列中で最適ベース音域に属するベース音はＦ#1，Ｅ1，Ｄ#1，Ｆ#1の４つであり、また第２ベース音列中で最適ベース音域に属するベース音はＣ#2，Ｄ#2，Ｅ2，Ｅ2，Ｄ#2，Ｃ#2，Ｄ#2，Ｅ2の８つである。したがって、この場合には、第２ベース音列が最終的なベース音列として決定される。
【００３２】
なお、これに限らず、各ベース音（各コード）の長さ（符長）をも考慮して、最適ベース音域に属するベース音の長さの合計が最大であるベース音列を最終的なベース音列として決定してもよい。１つのコード進行区間に属するベース音の数をも考慮し、同１つのコード進行区間に属する全てのベース音の数または合計長さに対する最適ベース音に属するベース音の数または合計長さの比率が最も大きなベース音列を最終的なベース音列として決定するようにしてもよい。
【００３３】
次に、メロディ音列と重ならないベース音列が複数存在する場合について説明する。この場合、ステップＳ４８の処理により、ステップＳ５６にて高い側のベース音列を決定ベース音列とする。そして、前記ステップＳ３８，Ｓ４２，Ｓ５０，Ｓ５４，Ｓ５６によるベース音列の決定後、ステップＳ５８にてこのコード進行区間処理ルーチンの実行を終了する。そして、全てのコード進行区間に関する処理が終了して時点で、図２の伴奏データ生成プログラムに実行に移り、ステップＳ２０の処理を実行した後、ステップＳ２２にて伴奏データ生成プログラムの実行を終了する。
【００３４】
ステップＳ２０においては、前記コード進行区間処理ルーチンの繰り返し実行により生成されたコード進行区間ごとのベース音列を用いて、ベース音の発生タイミングを含むとともに実際に発音されるベース音を表す伴奏音データをコード進行区間ごとに生成する。そして、コード進行区間ごとに生成された伴奏音データを繋げて、１曲分の伴奏音データを生成する。この場合、ベース音列を生成するために用いたコードデータ列を参照することにより、各ベース音に対応したコードの符長を参照して、符長が長い場合には同じベース音を所定のタイミング（例えば、４分音符タイミング）で発生させるための伴奏データを生成する。具体的には、図４(Ａ)に示すように、ベース音に対応したコードの符長が全音符分あれば、同じベース音を４分音符タイミングごとに発音させるための伴奏データが作成される。また、図４(Ｂ)に示すように、ベース音に対応したコードの符長が４分音符分あれば、決定されたベース音をそのまま発音させる伴奏データが作成される。
【００３５】
なお、この伴奏音データの生成においては、ベース音の発音タイミングだけを指定する伴奏パターンデータを選択されている楽曲に対応させて用意しておき、同伴奏パターンデータの発音タイミングに前記決定されたベース音列を適合させて、伴奏データを作成するようにしてもよい。また、基準音高とは異なるコード構成音をベース音または伴奏音として生成するようにしてもよい。この場合、コードタイプごとに発音されるコード構成音と根音との音程と、同コード構成音の発音タイミングとを指定するデータを記憶しておき、指定タイミングに基準音高を前記根音との音程だけ音高変換してベース音または伴奏音を表す伴奏音データを生成するようにしてもよい。この場合、発音タイミングを指定するデータを省略して所定タイミング（例えば、４分音符）ごとに発音されるベース音または伴奏音を表す伴奏音データを生成するようにしてもよい。また、一度に発音される伴奏音の数も１つだけではなく複数のコード構成音を同時に発音させる伴奏音データを生成してもよい。たとえば、ベース音と同時にまたはタイミングを異ならせて、複数のコード構成音（例えば、ベース音とコード音）を発音させるための伴奏音データを生成してもよい。
【００３６】
そして、前記のように生成された伴奏データは、メロディデータと共にまたはメロディデータとは独立して楽曲の進行に従って楽音信号発生回路１３に供給されて自動演奏される。また、この伴奏データを用いて、伴奏音列（ベース音列）をメロディ音列と共にまたはメロディ音列とは独立して表示器１２にて楽譜の形式で表示したり、別途設けた印刷装置によりメロディ音列と共にまたはメロディ音列とは独立して楽譜の形式で印刷したりするようにしてもよい。さらに、伴奏音に対応して押鍵すべき鍵をランプの点灯によりユーザに対して指示する演奏ガイドのために、前記生成した伴奏データを利用してもよい。
【００３７】
上記作動説明から理解できるように、上記実施形態によれば、ステップＳ１４，Ｓ１６の処理によってコードデータ列に基づいて基準音高列が抽出され、抽出された一連の基準音高は、各基準音高が一連の流れをもって順次進行する複数のコード進行区間に区切られる。そして、ステップＳ１８のコード進行区間処理ルーチンの実行により、コード進行区間ごとに基準音高に基づいてベース音列が決定されて、ステップＳ２０の処理によりこのベース音列に基づいて伴奏音データが生成される。その結果、上記実施形態によれば、コード進行の状況が考慮され、聴感上自然に変化する伴奏音列が生成される。
【００３８】
また、前記コード進行区間処理ルーチンにおいては、ステップＳ３２の処理によって複数のベース音列候補が生成されるとともに、ステップＳ３４〜Ｓ４２に処理によって複数のベース音列候補を構成するベース音の音高が考慮されて所定のベース音域に入るベース音列が最終的なベース音列とされる。また、ステップＳ４２の処理により、ベース音域から外れるベース音に関しては、その音高がオクターブシフトされて、ベース音域に納められる。その結果、これによれば、全ての伴奏音が必ずベース音域に入るようになるので、他の演奏音との重なりを簡単に回避できるようになるとともに、伴奏音としても適した伴奏音列が選択されることになる。
【００３９】
また、ステップＳ３６，Ｓ４４〜Ｓ５６の処理により、全てのベース音がベース音域に入るベース音列候補が複数存在する場合には、メロディ音列との適合性が考慮されてベース音列が決定される。特に、メロディ音列と重ならないベース音列が決定され、またメロディ音列に近い伴奏音列候補が選択される。さらに、最適ベース音列に入るベース音の頻度によりベース音列が決定される。これにより、伴奏音として適した伴奏音列が選択され、またはメロディ音列に適合した伴奏音列が選択されるので、聴感上より自然に変化する伴奏音列が生成される。
【００４０】
さらに、本発明の実施にあたっては、上記実施形態及びその変形例に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【００４１】
上記実施形態においては、メロディ音列も考慮してベース音列を決定するようにしたが、コードデータ列のみを用いてベース音列を決定するようにしてもよい。この場合、図３のコード進行区間処理ルーチンにおいて、ステップＳ４４〜Ｓ５４の処理を省略して、全てのベース音がベース音域に入るベース音列が複数存在する場合には、ステップＳ３６の判定処理によりステップＳ５６のベース音決定処理が実行されるようにすればよい。
【００４２】
また、上記実施形態においては、ステップＳ３２の処理により２つのベース音列を生成するようにしたが、１つのベース音列のみを生成するようにしてもよい。この場合、ステップＳ３６にて前記生成した１つのベース音列に属する全てのベース音がベース音域に入るか否かを調べ、全てのベース音がベース音域に入る場合にはステップＳ３８の処理によりベース音列を決定すればよい。また、ベース音域に入らないベース音が存在する場合には、ステップＳ４２の処理によりベース音域に入らないベース音をベース音域に入るように修正して、同修正したベース音列を最終的なベース音列として決定すればよい。また、３つ以上のベース音列を設定するようにしてもよい。この場合、ベース音域を広げるか、根音（またはオンベースコードの場合にはベース音）以外のコード構成音をもベース音列を構成するためのベース音として選択されるようにする。
【００４３】
また、上記実施形態においては、生成されたベース音列候補中のいずれかのベース音がベース音域から外れている場合には、該当するベース音の音高をオクターブシフトしてベース音域に入るようにした。しかし、これに代えて、所定の音程だけ音高シフトすることにより、該当するベース音がベース音域に入るようにしてもよい。また、ベース音域に入っていないベース音をそのままにしておいてもよい。さらに、これらのベース音の音高シフトおよびベース音の音高をそのままに保つことを、上記実施形態のステップＳ１２にて、ユーザが選択できるようにすればよい。
【００４４】
さらに、上記実施形態においては、全てのベース音がベース音域に属するベース音列候補が複数存在しているとき、ステップＳ４４〜Ｓ５６の処理によって１つのベース音列を決定するようにした。しかし、メロディ音列に含まれるメロディ音の音名と一致する音名のベース音を多く含むベース音列を最終的にベース音列として決定したり、他の伴奏音列が存在する場合には同伴奏音列との適合性を考慮してベース音列を決定したりするなど、前記ステップＳ４４〜Ｓ５６の処理に変わるベース音列の決定方法を採用することもできる。
【図面の簡単な説明】
【００４５】
【図１】本発明の一実施形態に係る電子音楽装置の全体ブロック図である。
【図２】前記電子音楽装置にて実行される伴奏データ生成プログラムを示すフローチャートである。
【図３】図２のコード進行区間処理ルーチンの詳細を示すフローチャートである。
【図４】(Ａ)(Ｂ)は、生成された伴奏データによるベース音を例を示す図である。
【符号の説明】
【００４６】
１１…入力操作子群、１２…表示器、１３…楽音信号発生回路、３１…ＣＰＵ，３３…ＲＯＭ，３４…ＲＡＭ、３５…外部記憶装置、３６…通信インターフェース回路
【図１】
2005141124.tif 000003
【図２】
2005141124.tif 000004
【図３】
2005141124.tif 000005
【図４】
2005141124.tif 000006