(57)【特許請求の範囲】
【請求項１】
テキストベースのコード譜を参照する参照手段と、
前記コード譜から拍子情報を取得する拍子情報取得手段と、
前記参照手段によって参照されるコード譜を分析し、前記拍子情報取得手段によって取得された拍子情報に応じたコード進行情報を生成する生成手段と、
を有することを特徴とするコード進行情報生成装置。
【請求項２】
前記生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを拍点と一致するように調整することを特徴とする請求項１に記載のコード進行情報生成装置。
【請求項３】
前記生成手段がコード進行情報を生成する際の基礎として用いる音符列情報を設定する音符列情報設定手段をさらに有し、
前記生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを、前記音符列情報設定手段によって設定された音符列情報に応じて調整することを特徴とする請求項１または２に記載のコード進行情報生成装置。
【請求項４】
伴奏スタイルデータを選択する伴奏スタイルデータ選択手段をさらに有し、
前記拍子情報取得手段は、前記選択された伴奏スタイルデータから前記拍子情報を取得することを特徴とする請求項１乃至３のいずれか１項に記載のコード進行情報生成装置。
【請求項５】
前記拍子情報取得手段は、前記コード譜から“／”を挟む２つの数字の組を抽出し、該抽出された数字の組を基に前記拍子情報を決定することを特徴とする請求項１乃至４のいずれか１項に記載のコード進行情報生成装置。
【請求項６】
前記拍子情報取得手段は、前記数字の組が複数組抽出されたときには、出現が最多の前記数字の組を基に前記拍子情報を決定することを特徴とする請求項５に記載のコード進行情報生成装置。
【請求項７】
コード進行情報生成方法をコンピュータに実行させるためのプログラムであって、
前記コード進行情報生成方法は、
テキストベースのコード譜を参照する参照ステップと、
前記コード譜から拍子情報を取得する拍子情報取得ステップと、
前記参照ステップによって参照されるコード譜を分析し、前記拍子情報取得ステップによって取得された拍子情報に応じたコード進行情報を生成する生成ステップと、
を有する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード進行情報を生成するコード進行情報生成装置およびコード進行情報生成方法を実現するためのプログラムに関する。
【背景技術】
【０００２】
音楽データを生成する音楽データ生成装置は、従来から知られている。
【０００３】
このような装置として、ユーザが伴奏スタイルデータとそのセクションを指定した組を複数組結線し、各組に対してコード進行を指定すると、結線された順序で、各組の伴奏スタイルデータおよびセクションによって指定された伴奏パターンの音高を当該指定されたコード進行に応じて適宜変更して自動演奏可能な自動伴奏データを生成するようにした演奏データ作成装置がある（たとえば、特許文献１参照）。
【０００４】
また、テキストコードを含むスクリプトデータ内のイベント識別子を参照して、演奏情報を表すテキストコードと歌詞データを表すテキストコードを判別し、演奏情報と判別されたテキストコードを演奏イベント情報に変換してＭＩＤＩ（musical instrument digital interface）デバイスに出力する一方、歌詞データと判別されたテキストコードは歌詞として表示するようにしたマルチメディア情報再生装置もある（たとえば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許３１６６４５５号公報
【特許文献２】特許３９１８５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし上記従来の演奏データ作成装置では、各組に対してコード進行を指定する場合、ユーザは、選択操作や編集作業などにより、当該コード進行を構成する各コード（和音）を１つ１つ指定して行かなければならないので、ユーザには、面倒な操作や作業を強いるとともに、コードに関する知識をある程度必要とした。
【０００７】
また上記従来のマルチメディア情報再生装置では、演奏情報と判別されたテキストコードを演奏イベント情報に変換することは記載されているものの、コード進行を取得することは記載されていないので、演奏データの生成にコード進行が必要な場合には、上記従来の演奏データ作成装置と同様に、ユーザは、選択操作や編集作業などにより、当該コード進行を構成する各コードを１つ１つ指定して行かなければならない。つまり、上記従来のマルチメディア情報再生装置でも、上記従来の演奏データ作成装置についての上記問題と同様の問題が起こり得る。
【０００８】
テキストデータで作成されたコード譜は通常、小節線が“｜”（のテキストコード）で表され、“｜”と“｜”の間にある１個以上のコード名がその小節のコード（進行）を表している。このようなテキストデータで作成されたコード譜には本来、対応する元曲があり、そのコード譜の拍子は元曲の拍子に合わせたものとなっているが、拍子情報自体がコード譜に含まれていないことがある。
【０００９】
一方、前記従来の演奏データ作成装置では、伴奏スタイルデータ（およびセクション）を指定してコード（進行）を入力すると、当該伴奏スタイルデータ（およびセクション）の伴奏パターンデータが入力コードに合わせて展開され、自動伴奏データが生成される。伴奏スタイルデータにはそれぞれ拍子が１つ決められており、この拍子に基づいて自動伴奏データが生成されるので、伴奏スタイルデータの拍子とコード進行の拍子とが合っていない場合、コードチェンジが不自然に起こる自動伴奏データが生成される虞がある。前記従来の演奏データ作成装置では、両者の拍子は合っているのでこのような問題は生じないが、テキストデータで作成されたコード譜を入力し、このコード譜に記載されたコード進行に基づいて自動伴奏データを生成した場合、上述のように、拍子情報が当該コード譜に含まれないことで、両者の拍子が合わないことがあり得る。
【００１０】
拍子が合っていないことによる問題は、自動伴奏データを生成するときだけでなく、たとえば、楽譜データを生成するときに、楽譜データの拍子に違う拍子を設定してしまうことで、適切でない位置にコードネームが表示されることもある。あるいはアレンジデータを生成するときにも、同様なことが言える。
【００１１】
本発明は、この点に着目してなされたものであり、コードに関する知識を持たないユーザでも簡単に、生成する音楽データの拍子に合ったコード進行情報を生成できるコード進行情報生成装置およびコード進行情報生成方法を実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、請求項１に記載のコード進行情報生成装置は、テキストベースのコード譜を参照する参照手段と、前記コード譜から拍子情報を取得する拍子情報取得手段と、前記参照手段によって参照されるコード譜を分析し、前記拍子情報取得手段によって取得された拍子情報に応じたコード進行情報を生成する生成手段と、を有することを特徴とする。
【００１３】
請求項２に記載のコード進行情報生成装置は、請求項１のコード進行情報生成装置において、前記生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを拍点と一致するように調整することを特徴とする。
【００１４】
請求項３に記載のコード進行情報生成装置は、請求項１または２のコード進行情報生成装置において、前記第２の生成手段がコード進行情報を生成する際の基礎として用いる音符列情報を設定する音符列情報設定手段をさらに有し、前記生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを、前記音符列情報設定手段によって設定された音符列情報に応じて調整することを特徴とする。
【００１５】
請求項４に記載のコード進行情報生成装置は、請求項１〜３のコード進行情報生成装置において、伴奏スタイルデータを選択する伴奏スタイルデータ選択手段をさらに有し、前記拍子情報取得手段は、前記選択された伴奏スタイルデータから前記拍子情報を取得することを特徴とする。
【００１７】
請求項５に記載のコード進行情報生成装置は、請求項１乃至４のいずれか１項のコード進行情報生成装置において、前記拍子情報取得手段は、前記コード譜から“／”を挟む２つの数字の組を抽出し、該抽出された数字の組を基に前記拍子情報を決定することを特徴とする。
【００１８】
請求項６に記載のコード進行情報生成装置は、請求項５のコード進行情報生成装置において、前記拍子情報取得手段は、前記数字の組が複数組抽出されたときには、出現が最多の前記数字の組を基に前記拍子情報を決定することを特徴とする。
【００１９】
上記目的を達成するため、請求項７に記載のプログラムは、請求項１と同様の技術的思想によって実現できる。
【発明の効果】
【００２０】
請求項１または７に記載の発明によれば、テキストベースのコード譜が参照され、生成するコード進行情報の拍子情報が前記コード譜から取得され、前記参照されるコード譜が分析されて、前記取得された拍子情報に応じたコード進行情報が生成されるので、つまり、参照されるコード譜に拍子情報が含まれていなくても、拍子情報が取得され、その拍子情報のコード進行情報が生成されるので、コード進行情報を手軽に取得することができる。そして、コード進行情報は参照されるコード譜に基づいて自動的に生成されるので、コード入力の操作が簡易化され、効率的であり、さらに、コードに関する知識を持たないユーザでも、コード進行情報を生成することができる。
【００２１】
請求項２に記載の発明によれば、生成されるコード進行情報を構成する各コード情報の発生タイミングが拍点と一致するように調整される。これにより、生成されたコード進行情報では、コードチェンジは自然な位置で起こるよう自動的に調整されるので、聴感上あるいは表示上、自然な音楽の流れが得られる。したがって、ユーザはコード進行情報を取得する元のコード譜に想定されている拍子を気にしなくてもよい。
【００２２】
請求項３に記載の発明によれば、コード進行情報を生成する際の基礎として用いる音符列情報が設定され、生成されるコード進行情報を構成する各コード情報の発生タイミングが、前記設定された音符列情報に応じて調整される。コードチェンジは拍点で起こることが多いが、曲そのもののリズムによっては、拍点からずれることもある。たとえば、スウィングの場合、拍点や音符単位で割り当てたコードチェンジタイミングから若干遅れたタイミングでコードチェンジする方がスウィングらしい演奏になることがある。請求項３に記載の発明は、このような拍点から若干ずれたタイミングでコードチェンジがなされるコード進行情報を生成することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施の形態に係る音楽データ生成装置の概略構成を示すブロック図である。
【図２】図１の音楽データ生成装置によって生成された音楽データの一例を示す図である。
【図３】図１の音楽データ生成装置、特にＣＰＵが実行するコード譜表示データ＆自動伴奏データ生成処理の手順を示すフローチャートである。
【図４】図３中の拍子情報設定処理の詳細な手順を示すフローチャートである。
【図５】図３中のコード進行情報生成処理の詳細な手順を示すフローチャートである。
【図６】図５中のコード情報生成処理の詳細な手順を示すフローチャートである。
【図７】図３中の楽節情報生成処理の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００２５】
図１は、本発明の一実施の形態に係る音楽データ生成装置の概略構成を示すブロック図である。
【００２６】
同図に示すように、本実施の形態の音楽データ生成装置は、ユーザの演奏操作に応じた演奏情報（音声情報も含む）を入力する演奏入力部１と、各種情報を入力するための複数のスイッチを含む設定操作子２と、演奏入力部１から入力された演奏情報を電気信号に変換して装置内に取り込む入力インターフェース（Ｉ／Ｆ）３と、設定操作子２の操作状態を検出する検出回路４と、装置全体の制御を司るＣＰＵ（central processing unit）５と、該ＣＰＵ５が実行する制御プログラムや各種テーブルデータ等を記憶するＲＯＭ（read only memory）６と、演奏データ、各種入力情報および演算結果等を一時的に記憶するＲＡＭ（random access memory）７と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ８と、各種情報等を表示する、たとえばＬＣＤ（liquid crystal display）およびＬＥＤ（light emitting diode）等を備えた表示部９と、前記制御プログラムを含む各種アプリケーションプログラムや各種伴奏パターンデータ、コード譜データ、各種楽曲データ（ソングデータ）、各種データ等を記憶する記憶装置１０と、外部記憶装置１００を接続し、この外部記憶装置１００からコード譜データ等を参照したり、取得したりするための通信インターフェース（Ｉ／Ｆ）１１と、演奏操作子１から入力された演奏データや、ＣＰＵ５がシーケンサプログラムを実行することによって実現されるシーケンサ（図示せず）が自動伴奏データを再生して出力した演奏データ等を楽音信号に変換するとともに、その楽音信号に各種効果を付与するための音源・効果回路１２と、該音源・効果回路１２からの楽音信号を音響に変換する、たとえば、ＤＡＣ（digital-to-analog converter）やアンプ、スピーカ等のサウンドシステム１３とにより構成されている。
【００２７】
上記構成要素３〜１２は、バス１４を介して相互に接続され、ＣＰＵ５にはタイマ８が接続され、通信Ｉ／Ｆ１１には外部機器１００が接続され、音源・効果回路１２にはサウンドシステム１３が接続されている。
【００２８】
演奏入力部１は、ユーザの押離鍵操作に応じて音高情報および強度情報を含む押離鍵情報を入力する鍵盤や、ユーザが発した音声を集音してアナログ音声信号に変換するマイクロフォン（以下、「マイク」と略して言う）等によって構成されている。
【００２９】
入力Ｉ／Ｆ３は、鍵盤から入力された押離鍵情報を演奏データ、たとえばＭＩＤＩデータ（イベントデータ）に変換して、イベントデータを一時的に保存するためのイベントバッファ（図示せず）に格納したり、マイクから入力されたアナログ音声信号をデジタル音声信号（音声データ）に変換して、音声データを一時的に保存するための音声データバッファ（図示せず）に格納したりする。
【００３０】
記憶装置１０は、たとえば、フレキシブルディスク（ＦＤ）、ハードディスク（ＨＤ）、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disc）、光磁気ディスク（ＭＯ）および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置１０自体が本実施の形態の音楽データ生成装置から着脱可能であってもよい。あるいは、記憶媒体も記憶装置１０も着脱不可能であってもよい。なお記憶装置１０（の記憶媒体）には、前述のように、ＣＰＵ５が実行する制御プログラムも記憶でき、ＲＯＭ６に制御プログラムが記憶されていない場合には、この記憶装置１０に制御プログラムを記憶させておき、それをＲＡＭ７に読み込むことにより、ＲＯＭ６に制御プログラムを記憶している場合と同様の動作をＣＰＵ５にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００３１】
通信Ｉ／Ｆ１１としては、たとえば、ＵＳＢ（universal serial bus）やＩＥＥＥ１３９４などの汎用近距離有線Ｉ／Ｆ、Ｅｔｈｅｒｎｅｔ（登録商標）などの汎用ネットワークＩ／Ｆ、無線ＬＡＮ（local area network）やＢｌｕｅｔｏｏｔｈ（登録商標）などの汎用近距離無線Ｉ／Ｆを挙げることができる。本実施の形態では、通信Ｉ／Ｆ１１としてＥｔｈｅｒｎｅｔを採用し、通信Ｉ／Ｆ１１には、インターネット上の外部記憶装置１００、たとえば、サーバコンピュータに接続された外部記憶装置１００が接続されている。サーバコンピュータ（の外部記憶装置１００）は、本実施の形態では、コード譜データの供給元として機能するが、これに加えて、記憶装置１０に前記各プログラムや各種パラメータが記憶されていなければ、その供給元として機能させてもよい。この場合、クライアントとなる演奏データ生成装置は、通信Ｉ／Ｆ１１およびインターネットを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、インターネットを介して演奏データ生成装置へと配信し、演奏データ生成装置が通信Ｉ／Ｆ１１を介して、これらプログラムやパラメータを受信して記憶装置１０に蓄積することにより、ダウンロードが完了する。
【００３２】
なお、本実施の形態の音楽データ生成装置は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ（ＰＣ）上に構築してもよい。また、鍵盤を必須の構成とせずに本発明を実現できるので、弦楽器タイプや管楽器タイプ等の形態を採用するようにしてもよい。さらに電子楽器に限らず、（鍵盤も外部接続されていない）汎用的なＰＣやスマートデバイス（smart device）、ゲーム機器などの電子機器にも本発明を適用することができる。
【００３３】
以上のように構成された音楽データ生成装置が実行する制御処理を、まず図２を参照してその概要を説明し、次に図３〜図７を参照して詳細に説明する。
【００３４】
図２は、本実施の形態の音楽データ生成装置によって生成された音楽データの一例を示す図である。音楽データとしては、本実施の形態では、コード譜表示データと自動伴奏データが生成される。同図には、生成されたコード譜表示データを前記表示部９のＬＣＤ上に表示したときのコード譜９ａと、生成された自動伴奏データを再生したときの再生手順７ａが記載されている。
【００３５】
本実施の形態の音楽データ生成装置は、コード譜表示データを生成するときには、テキストベースのコード譜データを主に参照して生成する。一方、自動伴奏データを生成するときには、当該コード譜データを参照することに加え、伴奏スタイルデータに基づいて生成する。したがって、伴奏スタイルデータは、コード譜表示データを生成する際には必須の構成ではないが、本実施の形態の音楽データ生成装置は、コード譜表示データと自動伴奏データの両方を生成するようにしているので、伴奏スタイルデータも必須の構成、つまり選択設定しなければならないものとしている。もちろん、たとえば、コード譜表示データのみを生成する第１の動作モードと、自動伴奏データのみを生成する第２の動作モードを設け、動作モードをいずれかに切り替えることにより、選択された動作モードに割り当てられた方の音楽データのみを生成するようにしてもよい。
【００３６】
ユーザが、たとえば、前記設定操作子２に含まれる、コード譜表示データ＆自動伴奏データ生成処理の開始を指示するスイッチ（図示せず）を押すと、コード譜表示データ＆自動伴奏データ生成処理が開始され、まず前記ＣＰＵ５は、参照するテキストベースのコード譜データをどれにするかをユーザに問い合わせる。問い合わせの具体的な方法は、制御処理の詳細で後述する。
【００３７】
参照するコード譜データ（参照元データ）は、本実施の形態では、前記通信Ｉ／Ｆ１１およびインターネットを介して接続された外部記憶装置１００に記憶されているものとする。つまり、参照元データは、外部記憶装置１００を接続したサーバによって供給される。図２に記載されている、参照したテキストベースのコード譜（以下、「参照元コード譜データ」という）１００ａは、上記問い合わせに応じてユーザが選択したものである。
【００３８】
同様にしてＣＰＵ５は、ユーザに対して、拍子情報の取得方法、伴奏スタイル名、生成するコード譜表示データへ付加する情報の種類および楽節情報の取得方法などをどうするか問い合わせる。この問い合わせに応じてユーザは、たとえば、拍子情報の取得方法として「選択された伴奏スタイルデータに設定された拍子を取得」、伴奏スタイル名として「Ｐｏｐ１」、生成するコード譜表示データへ付加する情報の種類として「小節番号、楽節名、参照元データの書誌情報、伴奏スタイル名」、楽節情報の取得方法として「参照元データから抽出」を選択したとする。
【００３９】
このように、伴奏スタイル名として「Ｐｏｐ１」が選択されると、ＣＰＵ５は、伴奏スタイル名「Ｐｏｐ１」の実体データ、つまり伴奏スタイルデータの記憶場所を検索し、読出し可能状態とする。「Ｐｏｐ１」の伴奏スタイルデータは、本実施の形態では、記憶装置１０に記憶されているものとする。以下、この「Ｐｏｐ１」の伴奏スタイルデータを「伴奏スタイルデータ１０ａ」という。
【００４０】
以上の準備作業が終了すると、ＣＰＵ５は、拍子情報を設定する。拍子情報の取得方法は、上述のように「選択された伴奏スタイルデータに設定された拍子を取得」が選択されているので、ＣＰＵ５は、伴奏スタイルデータ１０ａの書誌情報から拍子情報（４／４）を読み出して、前記ＲＡＭ７内に一時的に保存しておく。
【００４１】
次にＣＰＵ５は、参照元コード譜データ１００ａに基づいてコード進行情報を生成する。参照元コード譜データ１００ａ中、“｜”から“｜”までが１小節を示しているので、ＣＰＵ５は、その間の文字列データを読み出し、読み出した文字列データに基づいて、１小節毎にコード情報（発生タイミング，コードルート，コードタイプ）を順次生成して行く。この「発生タイミング」の生成に、上記ＲＡＭ７内に保存された拍子情報（と４分音符当たりのクロック数）が使用される。１小節毎のコード情報の生成を最後の小節まで行うと、コード進行情報が生成される。
【００４２】
次にＣＰＵ５は、楽節情報を設定する。楽節情報の取得方法は、上述のように「参照元データから抽出」が選択されているので、設定対象の楽節情報は、参照元コード譜データ１００ａから抽出する。そして、生成するコード譜表示データへ付加する情報の種類のうち、楽節情報に関するものは、上述のように「小節番号、楽節名」が選択されているので、ＣＰＵ５は、参照元コード譜データ１００ａから「小節番号、楽節名」を抽出する。参照元コード譜データ１００ａ中、楽節名は“［”と“］”で囲まれた文字列データ（ただし、参照元コード譜データ１００ａでは「文字列」ではなく「１文字」）によって表されるので、ＣＰＵ５は、当該文字列データを読み出すことで、楽節名を抽出する。一方、ＣＰＵ５は、行末の“｜”を除いて、先頭の“｜”からその数を数えることで、小節番号を抽出（生成）する。
【００４３】
さらに、生成するコード譜表示データへ付加する情報の種類のうち、楽節情報に関するもの以外は、上述のように「参照元データの書誌情報、伴奏スタイル名」が選択されているので、ＣＰＵ５は、参照元コード譜データ１００ａから「タイトル」、「作曲者」および「調」を抽出し、「Ｐｏｐ１」の伴奏スタイルデータ１０ａから「伴奏スタイル名」を抽出する。
【００４４】
ＣＰＵ５は、このようにして生成または抽出されたコード進行情報、拍子情報、楽節情報、およびその他の付加情報を基に、コード譜表示データを生成して表示する。これにより、コード譜９ａが表示部９のＬＣＤ上に表示される。
【００４５】
またＣＰＵ５は、このようにして生成または抽出されたコード進行情報および楽節情報、さらに伴奏スタイルデータ１０ａを基に、自動伴奏データを生成して再生する。伴奏スタイルデータ１０ａが、たとえば、“Intro A”，“Main A”，“FillIn A A”，“Ending A”，“Intro B”，“Main B”，“FillIn B B”，“Ending B”および“FillIn AB”と“FillIn BA”などの複数セクションの伴奏パターンデータからなる場合、楽節情報も、参照元コード譜データ１００ａから“Ａ”と“Ｂ”が抽出されるので、ＣＰＵ５は、この楽節情報に基づいてセクションを自動的に切り替え（割り当て）、自動伴奏データを生成することができる。その具体例としては、楽節“Ａ”には“Main A”セクションを割り当て、楽節“Ｂ”には“Main B”セクションを割り当て、また、生成する自動伴奏データの前後にセクションのバリエーションを考慮した“Intro A”セクションと“Ending B”セクションを付加し、さらに、セクション切り替え前の１小節に、セクションのバリエーションを考慮したいずれかの“FillIn **”（ただし、“*”は任意の文字、ここでは“A”か“B”のいずれか、を示している）セクションを挿入するという態様を挙げることができる。これにより、再生時に再生手順７ａとなるような自動伴奏データが生成される。
【００４６】
このように本実施の形態の音楽データ生成装置では、参照元データに拍子情報が含まれていなくても、生成する音楽データの拍子に合った拍子を他から取得して、その拍子のコード進行情報を生成し、さらにこのコード進行情報に基づいて音楽データを生成するようにしたので、生成する音楽データの拍子に合い、当該音楽データの生成に利用可能なコード進行情報を手軽に取得することができる。そして、コード進行情報は参照元データに基づいて自動的に生成されるので、コード入力の操作が簡易化され、効率的であり、さらに、コードに関する知識を持たないユーザでも、音楽データを生成することができる。
【００４７】
また、コードに関する知識を持たないユーザでも、このようなコード進行情報を手軽にの取得できるようになると、結果として、音楽データ生成の基になる伴奏スタイルデータなどの音楽コンテンツデータの活用が増える。
【００４８】
さらに本実施の形態では、参照元データに楽節記号（楽節名）が含まれている場合、楽節記号も抽出できるようにし、抽出した楽節記号を音楽データ（自動伴奏データ）の生成に活用したので、参照元データの持つ情報をより活かした音楽データの生成が可能になる。なお、参照元データには楽節記号が含まれていないことも多いため、生成したコード情報を基に楽節情報を抽出して、音楽データ生成時に参照すると、生成される音楽データがより充実したものとなる。
【００４９】
次に、この制御処理を詳細に説明する。
【００５０】
図３は、本実施の形態の音楽データ生成装置、特にＣＰＵ５が実行するコード譜表示データ＆自動伴奏データ生成処理の手順を示すフローチャートである。
【００５１】
本コード譜表示データ＆自動伴奏データ生成処理は、主として、
（１）起動時処理（ステップＳ１，Ｓ２）；
（２）必要情報設定処理（ステップＳ３）；
（３）拍子情報設定処理（ステップＳ４）；
（４）コード進行情報生成処理（ステップＳ５）；
（５）楽節情報設定処理（ステップＳ６〜Ｓ８）；
（６）その他情報抽出処理（ステップＳ９）；
（７）コード譜表示データ生成＆表示処理（ステップＳ１０）；
（８）自動伴奏データ生成＆再生処理（ステップＳ１２，Ｓ１３）
（９）保存処理（ステップＳ１６）
によって構成されている。
【００５２】
本コード譜表示データ＆自動伴奏データ生成処理は、ユーザによる起動指示に応じて起動される。起動指示は、具体的には、前記設定操作子２に含まれる所定のスイッチのオン操作や、表示部９のＬＣＤがタッチパネル方式のものである場合に、その画面に表示されたボタンのタッチ操作などが考えられる。このように、物理的なスイッチのオン操作は、表示画面がタッチパネルで構成されている場合には、ソフトウェアによって表示画面上に表示されたボタン（以下、「ソフトウェアボタン」という）のタッチ操作に置き換えることができるので、以下、物理的なスイッチのオン（／オフ）操作のみが記載されていたとしても、これに代えて、あるいはこれとともに、ソフトウェアボタンのタッチ操作でもよいことが含まれるものとする。
【００５３】
本コード譜表示データ＆自動伴奏データ生成処理が起動されると、ＣＰＵ５は、上記（１）の起動時処理を１回実行した後、上記（２）〜（７）の各処理を順次実行する。上記（７）のコード譜表示データ生成＆表示処理が実行されると、表示部９のＬＣＤ上には、前記図２に示すようなコード譜９ａが表示されるので、ユーザはこのコード譜９ａを見て、（２）〜（６）の各処理でなされた各種設定を変更したいかどうか判断できる。ユーザが、たとえば、設定操作子２に含まれる所定のスイッチのオン操作により、設定変更を希望すると、ＣＰＵ５は、処理を上記（２）の必要情報設定処理に戻して（ステップＳ１１→Ｓ３）、（２）〜（７）の処理を繰り返し実行する。一方、ユーザが設定変更を希望しなれけば、ＣＰＵ５は、処理を上記（８）の自動伴奏データ生成＆再生処理に進める。この（８）自動伴奏データ生成＆再生処理が実行されると、図２の再生手順７ａに示すように、生成された自動伴奏データの再生がなされるので、ユーザは再生音を聞いて、（２）〜（６）の各処理でなされた各種設定を変更したいかどうか判断できる。ユーザが、上述のようにして設定変更を希望すると、ＣＰＵ５は、処理を上記（２）の必要情報設定処理に戻して（ステップＳ１４→Ｓ３）、（２）〜（７）の処理を繰り返し実行する。一方、ユーザが設定変更を希望しなれけば、ＣＰＵ５は、ユーザに対して、生成したコード譜表示データおよび／または自動伴奏データの保存を希望するかどうかを問い合わせる（ステップＳ１５）。その結果、ユーザが保存を希望したときには、ＣＰＵ５は、処理を上記（９）の保存処理に進める（ステップＳ１５→Ｓ１６）一方、ユーザが保存を希望しないときには、ＣＰＵ５は、本コード譜表示データ＆自動伴奏データ生成処理を終了する（ステップＳ１５→終了）。
【００５４】
（１）起動時処理では、まずＣＰＵ５は、初期化処理（ステップＳ１）を実行する。この初期化処理では、ＣＰＵ５は、前記ＲＡＭ７上に次の各領域を確保して初期化する。すなわち、
必要情報格納領域：（２）必要情報設定処理によって設定される必要情報を格納するための領域である；
拍子情報格納領域：（３）拍子情報設定処理によって設定される拍子情報を格納するための領域である；
楽節情報格納領域：（５）楽節情報設定処理によって設定される楽節情報を格納するための領域である；
コード譜表示データ格納領域：（７）コード譜表示データ生成＆表示処理によって生成されるコード譜表示データを格納するための領域である；
自動伴奏データ格納領域：（８）自動伴奏データ生成＆再生処理によって生成される自動伴奏データを格納するための領域である；
の各領域を確保してクリアする。
【００５５】
次にＣＰＵ５は、たとえば、ユーザの指示に応じて、前記通信Ｉ／Ｆ１１を介して所定のサーバ、つまり前記外部記憶装置１００が接続されたサーバにアクセスし、このサーバから外部記憶装置１００が記憶している、テキストベースの各種コード譜データの（名称の）一覧情報を取得し、取得した一覧情報を表示部９のＬＣＤに表示する。ユーザがその一覧の中からいずれかを選択すると、選択されたコード譜データを参照元データに設定する（ステップＳ２）。参照元データの候補の取得方法は、これに限らず、表示部９のＬＣＤ上に検索画面を表示し、ユーザがこの検索画面から、たとえば、曲名や作曲者名、その他の検索キーワードを入力して検索を指示すると、ＣＰＵ５は、入力された検索キーワードをサーバに送信し、これに応じてサーバから送信されて来た検索結果の一覧を表示するという方法も考えられる。
【００５６】
なお、参照元データの選択は、上記ステップＳ２でのみ可能であり、しかもステップＳ２は、本コード譜表示データ＆自動伴奏データ生成処理が起動したときに１回のみ実行される本起動時処理に含まれるので、一旦選択した参照元データは、本コード譜表示データ＆自動伴奏データ生成処理が実行中は変更することができない。つまり、一旦選択した参照元データを変更するには、本コード譜表示データ＆自動伴奏データ生成処理を終了させてから再度起動させる必要がある。このように構成したのは、説明を簡略化するためであるので、本コード譜表示データ＆自動伴奏データ生成処理が実行中でも、参照元データを自由に選択変更できる処理を、本起動時処理以外に加えるようにしてもよい。
【００５７】
前記（２）必要情報設定処理では、ＣＰＵ５は、ユーザによって選択された必要情報を前記必要情報格納領域に書き込むことで、必要情報を設定する。主な必要情報の種類：内容は、次の通りである。すなわち、
Ａ１．拍子情報の取得方法：（３）拍子情報設定処理で参照される情報であり、ユーザ設定／選択された伴奏スタイルデータに設定された拍子を取得／参照元データから抽出などの選択肢から選択される；
Ａ２．伴奏スタイル名：（８）自動伴奏データ生成＆再生処理で基礎となる伴奏スタイルデータを特定するための情報（名称）であり、ＲＯＭ６または記憶装置１０（あるいは外部記憶装置１００）に記憶されている各種伴奏スタイルデータの中から選択される；  Ａ３．生成するコード譜表示データへ付加する情報の種類：コード進行の表示に加えて表示する情報の種類であり、小節番号や楽節名、伴奏スタイル名などの中から選択される；
Ａ４．楽節情報の取得方法：（５）楽節情報設定処理で参照される情報であり、ユーザ設定／参照元データから抽出などの選択肢から選択される；
である。
【００５８】
上記Ａ１．〜Ａ４．の各情報の設定方法としては、たとえば、各情報毎に複数の選択肢を表示し、その中からユーザが選択したものを設定する方法を採ればよいが、これに限られる訳ではない。
【００５９】
前記（３）拍子情報設定処理は、（４）コード進行情報生成処理などで用いられる拍子情報を設定するための処理である。図４は、この拍子情報設定処理の詳細な手順を示すフローチャートである。
【００６０】
本拍子情報設定処理では、ＣＰＵ５は、前記必要情報格納領域に書き込まれたＡ１．拍子情報の取得方法の選択内容に従って、次のように処理を異ならせる。すなわち、Ａ１．拍子情報の取得方法として、
（３１）「ユーザ設定」が設定されている場合：表示部９のＬＣＤ上に拍子設定画面（図示せず）を表示し、この拍子設定画面に対するユーザ入力があると、このユーザ入力を受け付け、これによって指定された拍子情報を前記拍子情報格納領域に書き込むことで、「拍子情報」を設定する（ステップＳ２１→Ｓ２２）；
（３２）「選択された伴奏スタイルデータに設定された拍子を取得」が設定されている場合：必要情報格納領域に書き込まれた前記Ａ２．の「伴奏スタイル名」が示す伴奏スタイルデータの持つ拍子情報を取得し（図２の伴奏スタイルデータ１０ａが示すように、伴奏スタイルデータは通常、拍子情報を持っている）、取得した拍子情報を拍子情報格納領域に書き込むことで、「拍子情報」を設定する（ステップＳ２３→Ｓ２４）；
（３３）「参照元データから抽出」が設定されている場合：参照元データ中の“／”を挟む２つの数字の組を抽出し（ステップＳ２３→Ｓ２５）；
（３３１）１組以上が抽出された場合：複数組抽出されたときには、出現が最多の数字の組み合わせを基に拍子情報を決定する一方、１組抽出されたときには、その数字の組み合わせを基に拍子情報を決定し、決定した拍子情報を拍子情報格納領域に書き込むことで、「拍子情報」を設定する（ステップＳ２６→Ｓ２７）；
（３３２）１組も抽出されなかった場合：上記（３１）の場合の処理と同様の処理によって「拍子情報」を設定する（ステップＳ２６→Ｓ２８）。
【００６１】
なお、上記（３１）および（３３２）の場合の処理で、拍子設定画面を表示する際、その時点で生成されている拍子情報があれば、拍子設定画面に反映させておく。また、上記（３３２）の場合の処理はこれに限らず、上記（３２）の場合の処理と同様の処理を行うようにしてもよいし、対応する曲データがあれば、その曲から抽出した拍子情報を設定するようにしてもよいし、デフォルトの拍子情報を設定するようにしてもよい。
【００６２】
なお本拍子情報設定処理では、１つの拍子情報を設定するようにしたが、複数個の拍子情報を設定するようにしてもよい。
【００６３】
図３に戻り、前記（４）のコード進行情報生成処理は、参照元データからコード進行情報を生成するものである。本コード進行情報生成処理では、前記拍子情報格納領域に格納された拍子情報、つまり前記（３）拍子情報設定処理によって設定された拍子情報を使用するが、説明を簡単化するため、設定された拍子情報は１つであり、本コード進行情報生成処理の途中で、拍子情報は、設定された１つから変動しないものとする。なお、本コード進行情報生成処理についての説明は、前記図２の参照元コード譜データ１００ａに基づいて具体的に行うことにする。
【００６４】
図５は、本コード進行情報生成処理の詳細な手順を示すフローチャートであり、本コード進行情報生成処理は、大きく分けて、
（４１）参照元データから各小節に含まれるテキストデータ列を読み出し、領域（配列）Ｂａｒ［ ］ に記憶する小節内文字列取得処理（ステップＳ３１〜Ｓ４１）；
（４２）領域Ｂａｒ［ ］ に記憶されたテキストデータ列に基づいて各小節毎のコード情報を生成し、領域（配列）Ｃｈｏｒｄ［ ］に記憶するコード進行情報取得処理（ステップＳ４２〜Ｓ４６）；
によって構成されている。
【００６５】
上記（４１）の小節内文字列取得処理では、まずＣＰＵ５は、初期化処理（ステップＳ３１）を実行する。この初期化処理では、ＣＰＵ５は、前記ＲＡＭ７上に次の各領域を確保して初期化する。すなわち、
ポインタ（領域）：参照元データ中の各テキストデータ（具体的には、文字コードデータ（典型例としては、ASCII））の位置を示すために設けられた領域である；
Ｄａｔａ（領域）：参照元データ中、ポインタの示す１文字分のテキストデータを一時的に保存する領域である；
Ｂａｒ［ ］ （配列）：参照元データ中の各小節に含まれるテキストデータ列を記憶する領域（配列）である；
小節番号カウンタ：小節番号を示すためにカウントするソフトウェアカウンタ（カウント領域）であり、このカウント値によって示される番号を、以下「小節番号」という；の各領域を確保してクリアする。
【００６６】
次にＣＰＵ５は、ポインタが参照元データの先頭を指すようにポインタ値をセットする（ステップＳ３２）。そしてＣＰＵ５は、ポインタによって示される位置のテキストデータを１文字分取得し（ステップＳ３３）、取得した１文字分のテキストデータをＤａｔａに保存する（ステップＳ３４）。
【００６７】
次にＣＰＵ５は、小節線“｜”を示すテキストデータがＤａｔａに保存されるまで、つまり、参照元データから小節線“｜”を示すテキストデータが読み出されるまで、ポインタを“１”ずつ進めながら、参照元データからテキストデータの読み出しを続ける（ステップＳ３６→Ｓ４１→Ｓ３３→Ｓ３４→Ｓ３５→Ｓ３６）。
【００６８】
参照元データから小節線“｜”を示すテキストデータが読み出されると、ＣＰＵ５は、小節番号カウンタを“１”インクリメントし（ステップＳ３７）、ポインタを“１”ずつ進めながら、次の小節線“｜”までのテキストデータを読み出し、“｜”と「スペース」を示すテキストデータは除外してＢａｒ［小節番号］ に記憶する（ステップＳ３８）。そしてＣＰＵ５は、ポインタによって示される位置のテキストデータの次に「改行」を示すテキストデータが出るまで、つまり、１行の末尾を示す「改行」の１つ前の位置をポインタが示すまで、上記ステップＳ３７およびＳ３８の処理を繰り返す（ステップＳ４０→Ｓ３７→Ｓ３８→Ｓ３９→Ｓ４０）。ポインタによって示される位置のテキストデータの次に「改行」を示すテキストデータが出ると、ＣＰＵ５は、処理をステップＳ４０から前記ステップＳ４１に進める。
【００６９】
本コード進行情報生成処理が起動後、初めてステップＳ３７に入ってから初めてステップＳ４０を抜けるまでの処理により、図２の参照元コード譜データ１００ａ中、第４行目のテキストデータ（“｜”と「スペース」を除いたもの）、つまり“Ｃ”，“ＣＦ”，“ＦＧ７”および“Ｃ＿Ｇ７Ｃ”がそれぞれ、Ｂａｒ［１］ ，Ｂａｒ［２］ ，Ｂａｒ［３］ およびＢａｒ［４］ に記憶される。
【００７０】
ステップＳ３３〜Ｓ４１の処理が繰り返されている間に、ポインタによって示される位置が参照元データの末尾に至った場合には、ＣＰＵ５は、処理を前記（４２）のコード進行情報取得処理に進める（ステップＳ３５またはＳ３９→Ｓ４２）。この結果、参照元コード譜データ１００ａ中、第５，７および８行目のテキストデータも、Ｂａｒ［５］ 〜Ｂａｒ［１６］ に記憶される。
【００７１】
（４２）コード進行情報取得処理では、まずＣＰＵ５は、ＲＡＭ７上にソフトウェアカウンタ領域Ｎ（以下、「カウンタＮ」という）を確保し、カウンタＮに“１”をセットする（ステップＳ４２）。カウンタＮも、小節番号カウンタと同様に、小節番号をカウントするものであるが、小節番号カウンタと異なり、“１”から最大、小節番号カウンタの現在のカウント値までしかカウントしない。
【００７２】
次にＣＰＵ５は、コード情報を小節毎に格納する領域（配列）Ｃｈｏｒｄ［ ］を「小節番号」分、ＲＡＭ７上に用意する（ステップＳ４３）。各Ｃｈｏｒｄ［ ］は、当該コード情報の時間情報（発生タイミング）を格納する領域（配列）ＣｈｄＴｉｍｅ、当該コード情報のルートを格納する領域（配列）ＣｈｄＲｏｏｔおよび当該コード情報のタイプを格納する領域（配列）ＣｈｄＴｙｐｅによって構成されている。
【００７３】
そしてＣＰＵ５は、カウンタＮのカウント値＞「小節番号」になるまで、コード情報生成処理（ステップＳ４５）とカウンタＮのインクリメント（ステップＳ４６）を繰り返す（ステップＳ４４→Ｓ４５→Ｓ４６→Ｓ４４）。
【００７４】
図６は、このコード情報生成処理の詳細な手順を示すフローチャートであり、本コード情報生成処理は、主として、
（４２１）Ｃｈｏｒｄ［Ｎ］に対してＣｈｄＲｏｏｔとＣｈｄＴｙｐｅを登録する登録処理（ステップＳ５１，Ｓ５２）；
（４２２）Ｎ小節目（カウンタＮのカウント値によって示される小節目）の「拍数」と「１拍当たりのクロック数」を算出する算出処理（ステップＳ５３）；
（４２３）Ｂａｒ［Ｎ］の 中にコード位置調整記号“＿”が含まれていない場合に、Ｃｈｏｒｄ［Ｎ］に対してＣｈｄＴｉｍｅを登録する登録処理（ステップＳ５５〜Ｓ５７）；（４２４）Ｂａｒ［Ｎ］ の中にコード位置調整記号“＿”が含まれている場合に、Ｃｈｏｒｄ［Ｎ］に対してＣｈｄＴｉｍｅを登録する登録処理（ステップＳ５８〜Ｓ６０）；
（４２５）ＣｈｄＴｉｍｅが拍点に一致しない場合に、ＣｈｄＴｉｍｅを変更して拍点に一致させる変更処理（ステップＳ６２）；
（４２６）ＣｈｄＴｉｍｅを必要に応じて調整する適宜調整処理（ステップＳ６３）；によって構成されている。
【００７５】
上記（４２１）の登録処理では、ＣＰＵ５は、Ｂａｒ［Ｎ］ を分析し、コードルートになり得る音名と、コードタイプになり得る文字列の組を順番にすべて抽出する（ステップＳ５１）。ここで、コードルートになり得る音名の判断基準は、たとえば、アルファベットの大文字であることであり、コードタイプになり得る文字列の判断基準は、たとえば、アルファベットの小文字と算用数字であることである。もちろん、これに限らない。その具体的な判断基準の例としては、
コードルートになり得る音名の判断基準：Ａ〜Ｇの大文字に加え、Ａ〜Ｇの大文字で始まり“♭”または“＃”で終わる２文字の文字列もコードルートと判定；
コードタイプになり得る文字列の判断基準：上記コードルートの次の文字を出発点とし、出発点からカウントして行き、最初に現れるスペース／コード位置調整記号／次のコードルート／その他楽節記号の１文字前までの文字列区間をコードタイプと判定；
を挙げることができる。
【００７６】
今、カウンタＮ＝“２”であるとすると、Ｂａｒ［２］ には、前述のように“ＣＦ”が記憶されているので、コードルートになり得る音名として順に“Ｃ”と“Ｆ”が抽出され、コードタイプになり得る文字列の組として順に“ｍａｊ”と“ｍａｊ”が抽出される。ただし“ｍａｊ”は、Ｂａｒ［２］ には（省略されて）記憶されていないので、「抽出」ではなく「生成」される。別の例として、カウンタＮ＝“４”であるとすると、Ｂａｒ［４］ には、前述のように“Ｃ＿Ｇ７Ｃ”が記憶されているので、コードルートになり得る音名として順に“Ｃ”と“Ｇ”と“Ｃ”が抽出され、コードタイプになり得る文字列の組として順に“ｍａｊ”と“７”と“ｍａｊ”が抽出される。
【００７７】
次にＣＰＵ５は、抽出した順にコード情報（ＣｈｄＴｉｍｅは未定、ＣｈｄＲｏｏｔとＣｈｄＴｙｐｅは確定）を生成し、Ｃｈｏｒｄ［Ｎ］に登録する（ステップＳ５２）。上記例で、カウンタＮ＝“２”の場合には、（−，Ｃ，ｍａｊ）と（−，Ｆ，ｍａｊ）（ただし、カッコ内は（ＣｈｄＴｉｍｅ，ＣｈｄＲｏｏｔ，ＣｈｄＴｙｐｅ）を意味し、“−”は「未定」を意味する）の２つのコード情報が生成され、Ｃｈｏｒｄ［２］に登録される。またカウンタＮ＝“４”の場合には、（−，Ｃ，ｍａｊ）と（−，Ｇ，７）と（−，Ｃ，ｍａｊ）の３つのコード情報が生成され、Ｃｈｏｒｄ［４］に登録される。
【００７８】
上記（４２２）の算出処理では、ＣＰＵ５は、拍子情報と４分音符当たりのクロック数より、Ｎ小節目の「拍数」と「１拍当たりのクロック数」を算出する（ステップＳ５３）。ここで、「拍子情報」は、前述のように（３）拍子情報設定処理によって設定されたものであり、「４分音符当たりのクロック数」は、予め決まっている（たとえば“４８０”）ものとする。また「Ｎ小節目」とは、カウンタＮのカウント値によって示される番目の小節を意味する。今、拍子情報として“４／４”が設定されているとすると、上記算出処理により、「拍数」として“４”が、「１拍当たりのクロック数」として“４８０”が算出される。
【００７９】
次にＣＰＵ５は、Ｂａｒ［Ｎ］ の中にコード位置調整記号“＿”が含まれているかどうかを判定し（ステップＳ５４）、含まれていないときには、処理を前記（４２３）の登録処理に進める一方、含まれているときには、処理を前記（４２４）の登録処理に進める。
【００８０】
（４２３）の登録処理では、まずＣＰＵ５は、Ｃｈｏｒｄ［Ｎ］の先頭のコード情報のＣｈｄＴｉｍｅに“０”をセットする（ステップＳ５５）。
【００８１】
次にＣＰＵ５は、次式の演算を行うことによって「コード間隔」を算出する（ステップＳ５６）。
【００８２】
「コード間隔」＝「１拍当たりのクロック数」×「拍数」／（Ｃｈｏｒｄ［Ｎ］に登録されたコード情報の数）
そしてＣＰＵ５は、Ｃｈｏｒｄ［Ｎ］に先頭以降のコード情報が登録されていれば順に、１つ前のコード情報のＣｈｄＴｉｍｅから「コード間隔」離した時間を当該コード情報のＣｈｄＴｉｍｅに設定する（ステップＳ５７）。具体的には、カウンタＮ＝“２”の場合、先頭のコード情報（−，Ｃ，ｍａｊ）のＣｈｄＴｉｍｅ（“−”）に“０”がセットされ、次のコード情報（−，Ｆ，ｍａｊ）のＣｈｄＴｉｍｅ（“−”）に「コード間隔」離した時間（＝“９６０”）がセットされるので、Ｃｈｏｒｄ［２］には、先頭のコード情報として（０，Ｃ，ｍａｊ）が登録され、次のコード情報として（９６０，Ｆ，ｍａｊ）が登録されることになる。
【００８３】
一方、（４２４）の登録処理では、まずＣＰＵ５は、Ｂａｒ［Ｎ］ を分析し、Ｃｈｏｒｄ［Ｎ］に登録された各コード情報について順に、「ずらす拍数」を検出する（ステップＳ５８）。具体的には、着目しているコード情報のルート音名に当たるテキストデータまでの“＿”の連続数を検出することで、「ずらす拍数」を検出する。ただしこの場合、１つの“＿”が１拍分に相当するものとする。
【００８４】
次にＣＰＵ５は、Ｃｈｏｒｄ［Ｎ］の先頭のコード情報のＣｈｄＴｉｍｅに「１拍当たりのクロック数」×「ずらす拍数」をセットする（ステップＳ５９）。
【００８５】
そしてＣＰＵ５は、Ｃｈｏｒｄ［Ｎ］に先頭以降のコード情報が登録されていれば順に、１つ前のコード情報のＣｈｄＴｉｍｅから（「１拍当たりのクロック数」離した時間＋「１拍当たりのクロック数」×（当該コード情報の）「ずらす拍数」離した時間）を当該コード情報のＣｈｄＴｉｍｅにセットする（ステップＳ６０）。具体的には、カウンタＮ＝“４”の場合、Ｂａｒ［４］ には“Ｃ＿Ｇ７Ｃ”が記憶されているので、つまり、“＿”はＣｈｏｒｄ［４］に登録された第２番目のコード情報の前に位置するので、ステップＳ５８では、Ｃｈｏｒｄ［４］に登録された第２番目のコード情報について「ずらす拍数」が１拍分検出される。したがってこの場合、先頭のコード情報（−，Ｃ，ｍａｊ）のＣｈｄＴｉｍｅ（“−”）に“０”がセットされ、次のコード情報（−，Ｇ，７）のＣｈｄＴｉｍｅ（“−”）に１つ前のコード情報のＣｈｄＴｉｍｅ（＝０）から「１拍当たりのクロック数」離した時間（＝４８０）＋「１拍当たりのクロック数」×「ずらす拍数」（＝１）離した時間（＝４８０）（演算結果＝９６０）がセットされ、最後のコード情報（−，Ｃ，ｍａｊ）のＣｈｄＴｉｍｅ（“−”）に１つ前のコード情報のＣｈｄＴｉｍｅ（＝９６０）から「１拍当たりのクロック数」離した時間（＝１４４０）がセットされるので、Ｃｈｏｒｄ［４］には、先頭のコード情報として（０，Ｃ，ｍａｊ）が登録され、次のコード情報として（９６０，Ｇ，７）が登録され、最後のコード情報として（１４４０，Ｃ，ｍａｊ）が登録されることになる。
【００８６】
次にＣＰＵ５は、Ｃｈｏｒｄ［Ｎ］のコード情報の中にＣｈｄＴｉｍｅが「１拍当たりのクロック数」の倍数でない（拍点でない）コード情報があるかどうかを判定し（ステップＳ６１）、当該コード情報があれば、処理を前記（４２５）の変更処理に進める（ステップＳ６２）一方、当該コード情報がなければ、処理を前記（４２６）の適宜調整処理に進める（ステップＳ６３）。
【００８７】
（４２５）変更処理では、ＣＰＵ５は、ＣｈｄＴｉｍｅが拍点でないコード情報のＣｈｄＴｉｍｅを、隣のコード情報のＣｈｄＴｉｍｅと一致せず、かつコード進行が変わらない、いずれかの拍点位置に変更する。たとえば、「拍子情報」として“４／４”、「１拍当たりのクロック数」として“４８０”が設定され、Ｃｈｏｒｄ［Ｎ］に（０，Ｄ，ｍｉｎ），（６４０，Ｇ，７），（１２８０，Ｃ，ｍａｊ）の３つのコード情報が登録されていたとすると、ＣｈｄＴｉｍｅ“６４０”と“１２８０”はいずれも拍点ではないので、それぞれ“４８０”（２拍目）と“９６０”（３拍目）に変更される。ただしこの場合、変更対象のコード情報に隣接する２つの拍点のうち、早いタイミングの拍点を選択するというルールを採用している。これとは別のルールとして「最寄りの拍点を選択する」ルールを採用すると、ＣｈｄＴｉｍｅ“６４０”と“１２８０”はそれぞれ、“９６０”と“１４４０”に変更される。
【００８８】
このように発生タイミングが拍点に変更されたコード進行情報に基づいて、音楽データを生成すると、生成された音楽データでは、コードチェンジは自然な位置で起こるよう自動的に調整されるので、聴感上あるいは表示上、自然な音楽の流れが得られる。したがって、ユーザはコード進行情報を取得する元のコード譜に想定されている拍子を気にしなくてもよい。
【００８９】
なお本実施の形態では、Ｃｈｏｒｄ［Ｎ］のコード情報の中にＣｈｄＴｉｍｅが拍点でないコード情報があるときには常に、（４２５）変更処理が実行されるようにしたが、たとえば前記（２）必要情報設定処理によって設定される必要情報の項目に、「コードタイミングを拍点に合わせる／合わせない」を選択できる項目を用意し、ユーザが「合わせる」を選択したときにのみ、（４２５）変更処理が実行されるようにしてもよい。また、選択項目を「拍点に合わせる／合わせない」だけでなく、「所定のタイミング（２拍、８分音符単位、１６分音符単位、…など）」に合わせる」が用意されていてもよい。「所定のタイミングに合わせる」が選択されている場合は、各コードのタイミングを所定の単位に合うように調整すればよい。
【００９０】
（４２６）適宜調整処理では、ＣＰＵ５は、選択されている伴奏スタイルデータの伴奏パターンデータ（複数パート）に各Ｃｈｏｒｄ［Ｎ］を順に割り当てたときに、伴奏パターンデータ（伴奏スタイルデータ）の持つリズム（シンコペーションやスウィングなど）に合うようなコードチェンジタイミングの調整幅を検出し、各Ｃｈｏｒｄ［Ｎ］内の各コード情報のＣｈｄＴｉｍｅを必要に応じて調整する。たとえば、伴奏パターンデータが８分音符でシンコペーションしている場合、１拍目に割り当てられるコード情報を８分音符長ほど早める（この場合、データ的にマイナス値が入ってもよい）。なお、調整幅の検出は、伴奏スタイルデータ毎あるいはジャンル毎に調整幅を規定したテーブルデータを用意し、このテーブルデータを検索して検出してもよいし、当該伴奏パターンデータ（伴奏スタイルデータ）を分析して検出してもよい。また、この適宜調整処理は、省略するようにしてもよい。このため、ステップＳ６３の枠は破線で描かれている。また、この適宜調整処理を省略するかしないかをユーザが任意に設定できるようにしてもよい。
【００９１】
なお、コードチェンジは拍点で起こることが多いが、曲そのもののリズム（選択した伴奏スタイルデータも含む）によっては、拍点からずれることもある。たとえば、スウィングの場合、拍点や音符単位で割り当てたコードチェンジタイミングから若干遅れたタイミングでコードチェンジする方がスウィングらしい演奏になることがある。「若干の遅れ」はスウィング比率などのパラメータで、たとえば伴奏スタイルデータに対応付けて設定されていてもよいし、伴奏パターンデータ内の音符イベントデータを分析して発音タイミングの拍点からのずれなどから算出するようにしてもよい。選択した伴奏スタイルデータの種類によっては、コードチェンジをするタイミングを拍点や音符単位のクオンタイズの位置からずらした方が、より伴奏スタイルデータのリズム感に合った演奏データが得られる場合がある。
【００９２】
また、たとえば、８分でシンコペーションしているような曲であっても、そのコード譜は、小節線の８分音符前にコード名を書くのではなく、小節頭もしくは２拍目以降の拍頭にコード名を書くのが通常であるが、再生時には表記のタイミングではなく表記されたタイミングよりも８分音符早いタイミングでコードチェンジする方が自然である。このような場合に備えて、たとえば使用している伴奏スタイルデータの伴奏パターンデータの音符イベントデータの発音タイミングを分析すると、何分音符のシンコペーションか判定できるので、コード進行情報生成時に各コード情報のタイミング情報を判定したシンコペーションに合うように調整するとよい。もしくは、伴奏スタイルデータに限らず、再生時に合わせる他パートの演奏データ（たとえばユーザ演奏データ）の持つリズムにコードチェンジタイミングを合わせるようにしてもよい。
【００９３】
なお本コード進行情報生成処理では、小節単位でコード進行情報を生成するようにしたが、各コード情報の持つ時間情報（発生タイミング）に小節情報も含めるようにすれば、１曲分まとめて管理することができる。
【００９４】
図３に戻り、前記（５）の楽節情報設定処理は、コード譜表示データを生成するための基礎となる楽節情報を設定するための処理である。この楽節情報設定処理によって設定される楽節情報を取得する方法として、本実施の形態では「ユーザ設定」と「参照元データからの抽出」の２種類から選択することができるようになっている。本楽節情報設定処理が起動する時点では、既に前記（２）の必要情報設定処理により、いずれかの取得方法が選択されて、必要情報格納領域に書き込まれている。
【００９５】
本楽節情報設定処理が起動されると、ＣＰＵ５は、楽節情報の取得方法として「ユーザ設定」が選択されているかどうかを判定する（ステップＳ６）。この判定の結果、「ユーザ設定」が選択されているときには、ＣＰＵ５は、表示部９のＬＣＤ上に楽節設定画面（図示せず）を表示し、この楽節設定画面に対するユーザ入力があると、このユーザ入力を受け付け、これによって指定された楽節情報を前記楽節情報格納領域に書き込むことで、「楽節情報」を設定する（ステップＳ６→Ｓ７）。なお、楽節設定画面を表示する際、その時点で生成されている楽節情報があれば、楽節設定画面に反映させておく。
【００９６】
一方、ステップＳ６の判定の結果、「参照元データからの抽出」が選択されているときには、ＣＰＵ５は、楽節情報生成処理を実行する（ステップＳ６→Ｓ８）。
【００９７】
図７は、この楽節情報生成処理の詳細な手順を示すフローチャートである。本楽節情報生成処理では、前記必要情報格納領域に書き込まれた「生成するコード譜表示データへ付加する情報の種類」のうち、楽節情報に関するものを抽出して、ＲＡＭ７上に確保したリストＳｅｃｔｉｏｎ（図示せず）に登録する。今、当該楽節情報に関するものとして「小節番号」と「楽節名」が設定されているとして、本楽節情報生成処理では「小節番号」と「楽節名」を生成する。なお、本楽節情報生成処理は、参照元コード譜データ１００ａを参照元データとする場合の一例である。すなわち、参照元データとして考えられるものすべてについて適正に動作するものではない。
【００９８】
本楽節情報生成処理は、主として、
（５１）初期化処理（ステップＳ７１〜Ｓ７３）；
（５２）楽節名位置情報を生成してＬｉｎｅ［ ］に登録する楽節名位置情報登録処理（ステップＳ７５）；
（５３）小節位置情報を生成してＬｉｎｅ［ ］に登録する小節位置情報登録処理（ステップＳ７７）；
（５４）楽節情報を生成してリストＳｅｃｔｉｏｎに登録する楽節情報登録処理（ステップＳ８０〜Ｓ８７）；
によって構成されている。
【００９９】
本楽節情報生成処理が起動されると、ＣＰＵ５は、上記（５１）の初期化処理を１回実行した後、参照元データの第１行から最終行まで、行番号を“１”ずつ増やしながら、各行毎に適宜、上記（５２）および（５３）の登録処理を実行する。そして、最終行に対する（５２）および（５３）の登録処理が終了すると、ＣＰＵ５は、上記（５４）の登録処理を実行し、本楽節情報生成処理を終了する。
【０１００】
（５１）初期化処理では、まずＣＰＵ５は、参照元データ内の楽節名位置情報と小節位置情報のリストを行単位で記憶する領域（配列）Ｌｉｎｅ［ ］を１〜最終行分、ＲＡＭ７上に用意する（ステップＳ７１）。ここで「最終行」は、たとえば、参照元データを分析し、「改行」を数えることにより取得することができる。楽節名情報は“［”と“］”で囲まれた文字列データによって表される（図２の参照元コード譜データ１００ａ参照）ので、楽節名位置情報は、当該行の先頭から“［”までの文字数と、楽節名（を表す文字列データ）の組、つまり（先頭からの文字数，楽節名）として生成される。また小節線情報は、前述のように“｜”によって表されるので、小節位置情報は、当該行の先頭から“｜”までの文字数と、各行の末尾の“｜”を除いた上で、その“｜”が参照元データの最初の“｜”から何個目であるかを示す情報（小節番号）の組、つまり（先頭からの文字数，小節番号）として生成される。
【０１０１】
次にＣＰＵ５は、行番号をカウントするためのソフトウェアカウンタ（カウント領域）である行番号カウンタをＲＡＭ７上に確保し、行番号カウンタに“１”をセットする（ステップＳ７２）。このカウント値によって示される番号を、以下「行番号」という。
【０１０２】
さらにＣＰＵ５は、小節番号をカウントするためのソフトウェアカウンタ（カウント領域）である小節番号カウンタをＲＡＭ７上に確保し、小節番号カウンタに“０”をセットする（ステップＳ７３）。このカウント値によって示される番号を、以下「小節番号」という。なお小節番号カウンタは、前記（４）コード進行情報生成処理内でも用いたが、同じ名称で、同じ働きをするものの、使用する処理が異なるため、ＲＡＭ７上の別々の領域に確保される。
【０１０３】
（５１）初期化処理が終了すると、ＣＰＵ５は、参照元データの「行番号」目のテキストデータに楽節名情報が含まれているかどうかを判定する（ステップＳ７４）。楽節名情報は、前述のように“［”と“］”で囲まれた文字列データによって表されるので、ステップＳ７６の判定では、「行番号」目の参照元データにこのような文字列データが存在するかどうかを判定する。この判定の結果、楽節名情報が含まれていれば、ＣＰＵ５は、処理を前記（５２）の楽節名位置情報登録処理に進める。
【０１０４】
この（５２）楽節名位置情報登録処理では、ＣＰＵ５は、「行番号」目のテキストデータを分析し、見つかった各“［”を基に楽節名位置情報（先頭からの文字数，楽節名）を生成し、Ｌｉｎｅ［行番号］の末尾に記憶する（ステップＳ７５）。１行のテキストデータ中に、複数の楽節名情報が含まれることもあり得るが、本実施の形態では説明の都合上、１行のテキストデータ中には、楽節名情報は、多くても１つのみ含まれることにする。
【０１０５】
一方、ステップＳ７４の判定の結果、楽節名情報が含まれていなければ、ＣＰＵ５は、当該「行番号」目のテキストデータに小節線情報が含まれているかどうかを判定する（ステップＳ７６）。この判定の結果、小節線情報が含まれていれば、ＣＰＵ５は、処理を前記（５３）の小節位置情報登録処理に進める。
【０１０６】
この（５３）小節位置情報登録処理では、ＣＰＵ５は、当該「行番号」目のテキストデータを分析し、行末尾の“｜”以外の“｜”をすべて探し、見つかった各“｜”毎に、小節番号カウンタを“１”インクリメントし、小節位置情報（先頭からの文字数，小節番号）を順に生成し、Ｌｉｎｅ［行番号］の末尾に記憶する（ステップＳ７７）。
【０１０７】
一方、ステップＳ７６の判定の結果、小節線情報が含まれていなければ、ＣＰＵ５は、「行番号」が最終行であるかどうかを判定する（ステップＳ７８）。この判定の結果、最終行でなければ、ＣＰＵ５は、行番号カウンタを“１”インクリメントした（ステップＳ７９）後、処理を前記ステップＳ７４に戻す一方、最終行であれば、ＣＰＵ５は、処理を前記（５４）の楽節情報登録処理に進める。
【０１０８】
この（５４）楽節情報登録処理では、ＣＰＵ５は、前記リストＳｅｃｔｉｏｎをＲＡＭ７上に用意し（ステップＳ８０）、行番号カウンタに“１”をセットする（ステップＳ８１）。
【０１０９】
次にＣＰＵ５は、Ｌｉｎｅ［行番号］に楽節名位置情報が記憶されているかどうかを判定する（ステップＳ８２）。この判定の結果、楽節名位置情報が記憶されていなければ、行番号カウンタを“１”ずつ増加させながら（ステップＳ８４）、上記ステップＳ８２の判定を繰り返す（ステップＳ８２→Ｓ８３→Ｓ８４→Ｓ８２）。この間に、「行番号」が最終行に至ると、ＣＰＵ５は、本楽節情報登録処理を終了させる（ステップＳ８３→リターン）。
【０１１０】
一方、ステップＳ８２の判定の結果、楽節名位置情報が記憶されていれば、ＣＰＵ５は、Ｌｉｎｅ［行番号＋１］〜Ｌｉｎｅ［最終行］の各テキストデータの中から、当該楽節名に対応する小節位置情報が記憶されているＬｉｎｅ［行番号＋α］を探し、当該楽節名位置情報中の「先頭からの文字数」と同じか最も近い「先頭からの文字数」を持つ「小節位置情報」の「小節番号」をＬｉｎｅ［行番号＋α］から抽出し、楽節情報（「小節番号」，「楽節名」）を生成し、リストＳｅｃｔｉｏｎの末尾に記憶する（ステップＳ８５）。
【０１１１】
次にＣＰＵ５は、「行番号＋α」は最終行であるかどうかを判定し（ステップＳ８６）、最終行であれば、本楽節情報生成処理を終了させる（ステップＳ８６→リターン）一方、最終行でなければ、行番号カウンタのカウント値に（α＋１）を加算して（ステップＳ８７）、処理を前記ステップＳ８２に戻す。
【０１１２】
参照元コード譜データ１００ａを本楽節情報登録処理に適用した場合、リストＳｅｃｔｉｏｎには、（１，Ａ）と（９，Ｂ）が登録される。
【０１１３】
図３に戻り、前記（６）のその他情報抽出処理は、前記必要情報格納領域に書き込まれた「生成するコード譜表示データへ付加する情報の種類」のうち、楽節情報に関するもの以外を抽出する処理である。本その他情報抽出処理では、ＣＰＵ５は、その他付加すると設定された各種情報を参照元データや伴奏スタイルデータから抽出する。なお、本その他情報抽出処理の具体例は、制御処理の概要で前述したので、ここでは繰り返さない。
【０１１４】
前記（７）コード譜表示データ生成＆表示処理では、（４）コード進行情報生成処理によって生成されたコード進行情報、（３）拍子情報設定処理によって設定された拍子情報、（５）楽節情報設定処理によって設定された楽節情報、および（６）その他情報抽出処理によって抽出されたその他の付加情報に基づいてコード譜表示データを生成し、生成したコード譜表示データを前記コード譜表示データ格納領域に格納するとともに、表示部９のＬＣＤ上に表示する。図２のコード譜９ａは、参照元コード譜データ１００ａおよび伴奏スタイルデータ１０ａに基づいて生成したコード譜表示データを生成した一例を示している。なお、表示部９のＬＣＤに表示されたコード譜表示データは、表示画面上で、そのコード進行情報や拍子情報、楽節情報などをユーザが修正できるようにしてもよい。
【０１１５】
前記（８）自動伴奏データ生成＆再生処理では、ＣＰＵ５は、生成されたコード進行情報および選択設定された伴奏スタイルデータ等に基づいて自動伴奏データを生成し（ステップＳ１２）、生成した自動伴奏データを前記自動伴奏データ格納領域格納するとともに、前記シーケンサに出力し、シーケンサを介して再生する（ステップＳ１３）。参照元コード譜データ１００ａおよび伴奏スタイルデータ１０ａに基づいて自動伴奏データを生成した場合、たとえば、再生時に再生手順７ａとなるような自動伴奏データが生成される。この自動伴奏データを生成する方法については、制御処理の概要で詳述したので、ここでは繰り返さないが、生成される自動伴奏データのデータ形式について説明する。自動伴奏データは、本実施の形態では、設定された伴奏スタイルデータを構成する複数セクションから、どのセクションの伴奏パターンデータを演奏（再生）に使用し、これらをどの順序で演奏し、生成されたコード進行情報のどの小節のコード（進行）をどのセクションの伴奏パターンデータの演奏に使うかなどを対応付けた形式のデータによって構成される。したがって、伴奏パターンデータは、ＭＩＤＩ形式のデータを想定しているが、自動伴奏データは、ＭＩＤＩ形式のデータではない。前記シーケンサは、このようなデータ形式の自動伴奏データを再生して、演奏データ（イベントデータ）を生成し、前記音源・効果回路１２に出力する。なお、シーケンサが自動伴奏データに対して行う再生処理は、本発明の特徴ではなく、公知の方法を用いればよいので、その説明は省略する。
【０１１６】
なお、本自動伴奏データ生成＆再生処理では、自動伴奏データが生成されると直ぐに、その再生がなされるが、前記設定操作子２内に再生開始スイッチ（図示せず）を設け、ユーザが再生開始スイッチをオン操作したときに、再生が開始されるようにしてもよい。この場合、再生停止スイッチ（図示せず）も設けるようにし、ユーザが自由に再生を停止できるようにした方が好ましい。
【０１１７】
前記（９）保存処理では、ＣＰＵ５は、生成したコード譜表示データと自動伴奏データ、つまり、コード譜表示データ格納領域に格納されているコード譜表示データと自動伴奏データ格納領域に格納されている自動伴奏データで、ユーザが保存を指示したものについて、名前を付けて、たとえば前記記憶装置１０に保存する。
【０１１８】
なお、本コード譜表示データ＆自動伴奏データ生成処理では、途中で処理を終了することはできないが、これも説明を簡単化するためであるので、設定操作子２内に終了スイッチ（図示せず）を設け、ユーザが終了スイッチをオン操作したときに、終了処理を行った後、本コード譜表示データ＆自動伴奏データ生成処理を終了するようにしてもよい。終了処理としては、たとえば、上記（９）保存処理と同様の処理を行えばよい。
【０１１９】
なお本実施の形態では、音楽データを生成する一例として、伴奏スタイルデータを使った自動伴奏データを生成する場合について説明したが、これに限らず、たとえば、リズムのテンプレート（あるいはパターンデータ）を用意し、取得したコード進行情報を参照してコード構成音など音楽的に調和する音高を使いアレンジデータを生成する場合にも、あるいは、ユーザの好みの楽曲のメロディ譜とコード譜から情報を取得し、コード名付き楽譜データを生成する場合にも、本発明を適用することができる。
【０１２０】
また本実施の形態では、伴奏スタイルデータ（セクション）に含まれる伴奏パターンデータは、ＭＩＤＩ形式のデータを想定しているが、オーディオ形式のデータ（オーディオ波形データ）であってもよいし、一部（のパート）にオーディオ形式のデータが含まれていてもよい。オーディオ波形データが使われている場合には、公知の波形分析技術で音符の発音タイミングを抽出すればよい。
【０１２１】
さらに、コード譜データ（参照元データ）のフォーマットは、本実施の形態で用いられたものに限らない。たとえば、小節線は、一般的には“｜”で表されるが、他のものでもよい。また、アルファベット大文字のコードルートと、アルファベット小文字と（半角）数字の組み合わせのコードタイプによってコードネームが表されているが、たとえば、コードタイプはカタカナで表されていてもよい。または、調情報が含まれている場合であれば、度数表記のディグリーネームでコードが表されていてもよい。その場合は、コード情報の取得時に変換すればよい。
【０１２２】
なお本実施の形態では、参照元データは、インターネット上のサーバ（Ｗｅｂサイト）にあるものとしたが、本実施の形態の音楽データ生成装置内、つまりＲＯＭ６や記憶装置１０内に記憶されたものであってもよい。
【０１２３】
また本実施の形態では、コード情報の時間情報（発生タイミング）は、既にテンポを考慮した再生時刻そのものとしたが、これに限らず、１小節１拍目といった、再生テンポによって再生時刻が変わる相対時間であってもよい。
【０１２４】
さらに本実施の形態では、参照するコード譜をユーザが編集／更新できるようには構成されていないが、コード進行情報を生成する前に、参照するコード譜をユーザが編集／更新できるようにしてもよい。
【０１２５】
拍子情報の取得方法は、本実施の形態で挙げたものの他に、メロディあるいはその他のパートとして使おうとしている元の楽譜データや曲データから取得／基になる曲データ（ＭＩＤＩ／オーディオデータ）を分析して拍子を検出／ジャンルの指定（ジャンルと拍子のテーブル設定）などの方法がある。
【０１２６】
各コード情報の発生タイミングを拍点に合わせる方法は、本実施の形態で説明した方法に限らず、音楽データ生成の入力情報として基になる曲データ（伴奏スタイルデータの伴奏パターンデータも含む）を分析して小節線および拍点を抽出し、コード情報の発生タイミングを合わせる方法でもよい。
【０１２７】
コード譜データから生成されるコード進行情報を使って生成される音楽データとしては、本実施の形態で説明したものの他、たとえば、コード譜に対応する元曲データにコードネームを付けた楽譜やアレンジデータなどが考えられる。また、コード譜を参照して、コードに対応する和音を表示した楽譜、タブ譜、あるいは、たとえばタイプをカタカナ表記に変えたコード譜、可能な限りテンションを付けるまたはダイアトニックコードとセカンダリードミナントコードで収まるように変換したコード譜（拍子を想定して）なども考えられる。
【０１２８】
なお本実施の形態では、生成した音楽データ、抽出したコード進行情報や楽節情報、設定した拍子情報をユーザが編集することには言及されていないが、編集可能に構成してもよい。
【０１２９】
楽節情報は、本実施の形態では、楽節情報の取得方法に設定された方法に従って、設定あるいは取得するようにしたが、これに限らず、参照元データに記載されている場合はテキストデータから取得してもよいし、さらに、抽出したコード進行情報を見てユーザが楽節情報を追加してもよい。また、参照元データに楽節記号が含まれていない場合は、当該参照元データから抽出したコード進行情報を分析して楽節情報を自動抽出するとよい。たとえば、４小節単位で仮の楽節情報を生成し、隣接する４小節区間のコード進行を比較し、始めから３小節以上同じであれば１つの楽節にまとめる、などが考えられる。楽節情報は、たとえばアルファベットの大文字をＡ，Ｂ，Ｃ，…と順に付けて、開始小節位置（あるいはタイミング情報）を対応付けて記憶する。さらに楽節情報を取得する方法として、コード進行を比較する際にコード名ではなく、構成音の種類の組み合わせ（１２音階のベクトル）により繰り返し構造を見つけることも考えられる。たとえば、コード進行１が｜Ｄｍ７  Ｇ７｜で、コード進行２が｜Ｄｍ７  Ｄ♭７（Ｇ７の代理コード）｜の場合、コード進行１とコード進行２は、テキストの表記自体は違っても、コードの構成音自体はかなり類似しているので、コード名では一致しない場合でも、１２音階で構成音が似ているかどうかの比較であれば、繰り返し構造の検出の精度を上げることができる。
【０１３０】
楽節情報の取得方法は、本実施の形態で挙げたものの他に、「コード進行から推定」の選択肢を設けるようにしてもよい。この場合、たとえば、コードなしの区間で分ける／同じコード進行が繰り返される区間を１つの区間とする、などの手法が考えられる。
【０１３１】
音楽データ生成の基になる伴奏スタイルデータやフレーズデータなどの音楽コンテンツデータは、本実施の形態では、装置の記憶装置１０内に記憶されているものとしたが、これに限らず、ネットワークを介して取得され、参照されるものであってもよい。
【０１３２】
本実施の形態では、楽節情報が結果的に何も抽出されなかった場合については想定していないが、この場合、音楽データとして自動伴奏データを生成する際には、デフォルトのセクション（たとえば“Main A”セクション）を用いるようにすればよい。
【０１３３】
本実施の形態で使用した変数や配列、リストは一例であり、他のデータ構造およびアルゴリズムでも同様な効果を得ることができる。
【０１３４】
生成する音楽データが電子楽譜データの場合には、たとえば、元のテキストデータから分析して得たコード進行情報をMusic XMLなどのフォーマットに変換すればよい。あるいは、ＸＦフォーマットのＭＩＤＩファイルに変換して活用してもよい。
【０１３５】
また、参照元のテキストデータには様々なテキストフォーマットがあるため、コード進行情報などの抽出を行う前に、たとえば本実施の形態のような１つのフォーマットに変換するようにしておくとよい。参照元のテキストデータは、本実施の形態では、どのように参照するかについて言及していない。この理由は、参照元のテキストデータを提供するサーバが本実施の形態の音楽データ生成装置に対して、当該テキストデータをどのような態様で提供するかによって、参照する態様も変わるからである。テキストデータは、データ容量が少ないので、典型的にはサーバがダウンロード配信したものを、たとえばＲＡＭ７に保存した上で参照することになる。しかしテキストデータであっても、サーバが、いわゆるストリーミング配信のように、配信した一部のデータが使用されると次の一部のデータを配信し、ＲＡＭ７内にすべての配信データが残らないという態様で提供する場合には、配信された一部のデータを参照元のテキストデータとして利用する。
【０１３６】
さらに本実施の形態では、主にコード情報と小節線情報と楽節情報を抽出するようにしているが、この他に、曲タイトル、作曲者名や音楽記号（リハーサルマーク、繰り返し記号、ＢＰＭ、キー情報など）を抽出することもできる。音楽記号の場合（楽節情報も含む）、対応する小節位置情報も抽出する必要がある。いずれの情報も、テキストフォーマットが決まっていれば、コード情報などの抽出処理と類似した処理により抽出することができる。
【０１３７】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１３８】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３９】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【０１４０】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０１４１】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【０１４２】
２…設定操作子（音符列情報設定手段），５…ＣＰＵ（参照手段、拍子情報取得手段、生成手段、音符列情報設定手段），９…表示部（音符列情報設定手段），１１…通信Ｉ／Ｆ（参照手段）
【図１】
0006525034.tif 000002
【図２】
0006525034.tif 000003
【図３】
0006525034.tif 000004
【図４】
0006525034.tif 000005
【図５】
0006525034.tif 000006
【図６】
0006525034.tif 000007
【図７】
0006525034.tif 000008