(57)【特許請求の範囲】
【請求項１】
コード情報を入力する第１の入力手段と、
リード音情報を入力する第２の入力手段と、
前記第２の入力手段によって入力されたリード音情報から音高を検出する検出手段と、
伴奏パターンデータを供給する供給手段と、
前記第１の入力手段によって入力されたコード情報および前記供給手段によって供給された伴奏パターンデータに基づいて伴奏音を生成する第１の生成手段と、
前記供給された伴奏パターンデータを参照して、当該伴奏パターンデータのコード進行パターンまたはテンション度数を含むコード感情報を抽出する抽出手段と、
前記入力されたコード情報および前記抽出手段によって抽出されたコード感情報に基づいてハーモニー音生成用コード情報を生成する第２の生成手段と、
前記第２の生成手段によって生成されたハーモニー音生成用コード情報および前記検出手段によって検出されたリード音情報の音高に基づいて、当該リード音情報の音高を変換し、ハーモニー音を生成する第３の生成手段と
を有することを特徴とする演奏補助装置。
【請求項２】
前記ハーモニー音生成用コード情報を生成する第１モードと前記ハーモニー音生成用コード情報を生成しない第２モードのいずれかを選択する選択手段をさらに有し、
前記第３の生成手段は、前記選択手段によって前記第１モードが選択されているときには、前記生成されたハーモニー音生成用コード情報に基づいてハーモニー音を生成する一方、前記選択手段によって前記第２モードが選択されているときには、前記入力されたコード情報および前記検出されたリード音情報の音高に基づいてハーモニー音を生成することを特徴とする請求項１に記載の演奏補助装置。
【請求項３】
コード情報を入力する第１の入力手順と、
リード音情報を入力する第２の入力手順と、
前記第２の入力手順によって入力されたリード音情報から音高を検出する検出手順と、
伴奏パターンデータを供給する供給手順と、
前記第１の入力手順によって入力されたコード情報および前記供給手順によって供給された伴奏パターンデータに基づいて伴奏音を生成する第１の生成手順と、
前記供給された伴奏パターンデータを参照して、当該伴奏パターンデータのコード進行パターンまたはテンション度数を含むコード感情報を抽出する抽出手順と、
前記入力されたコード情報および前記抽出手順によって抽出されたコード感情報に基づいてハーモニー音生成用コード情報を生成する第２の生成手順と、
前記第２の生成手順によって生成されたハーモニー音生成用コード情報および前記検出手順によって検出されたリード音情報の音高に基づいて、当該リード音情報の音高を変換し、ハーモニー音を生成する第３の生成手順と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたコード（和音）情報に基づいてハーモニー音を生成する演奏補助装置および演奏補助方法を実現するためのプログラムに関する。
【背景技術】
【０００２】
入力されたコード情報に基づいてハーモニー音を生成する演奏補助装置は、従来から知られている。
【０００３】
このような装置として、入力された音声を入力されたコード情報に協和する音高のハーモニー音声に変換するようにした音声処理装置がある（たとえば、特許文献１参照）。
【０００４】
また、伴奏スタイル毎に、伴奏パターンと和音進行パターンとからなる伴奏スタイルデータを記憶し、ユーザが１つの伴奏スタイルを選択した後、自動伴奏の開始を指示すると、選択された伴奏スタイルに対応する伴奏スタイルデータに基づいて自動伴奏を行うようにした自動伴奏装置もある（たとえば、特許文献２参照）。この自動伴奏装置では、各伴奏スタイルデータ内に、メジャ進行、マイナ進行およびセブンス進行のそれぞれの和音進行パターンを記憶しておき、「和音進行オン」モードが指定された状態で自動伴奏がなされると、鍵盤から入力された和音が上記３種類の和音進行のいずれかに対応する和音であれば、その和音進行パターン内の和音を読み出し、入力された和音と読み出された和音に基づいて、目的の（つまり、選択された伴奏スタイルに対応する）伴奏スタイルデータに含まれる伴奏パターンを音高変換して発音するようにしている。
【０００５】
そして、いわゆる当業者であれば、上記従来の音声処理装置と上記従来の自動伴奏装置を組み合わせることにより、入力された和音に協和する音高のハーモニー音（声）を生成して発音するとともに、当該入力された和音と、この和音に対応する和音進行パターンから読み出された和音とに基づいて、目的の伴奏スタイルデータに含まれる伴奏パターンを音高変換して発音する構成を容易に想到することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第２８７９９４８号公報
【特許文献２】特開平１０−２５４４４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、上記従来の組み合わせ発明、つまり、上記従来の音声処理装置と上記従来の自動伴奏装置を組み合わせて得られる発明の構成では、たとえばテンションを考慮したハーモニー音を生成しようとすると、ユーザはそのテンションを付加したテンションコードなど、構成音の複雑な和音を入力しなければならず、ユーザが、特に演奏初心者である場合には、このような和音入力は難しく、単純な和音入力が主になるので、その結果、テンションを考慮したハーモニー音を生成することは困難である。
【０００８】
また上記従来の組み合わせ発明において、和音入力に応じたハーモニー音の生成に並行して、伴奏スタイルデータを使用して伴奏音も生成する場合、使用する伴奏スタイルデータによっては、生成された伴奏音にテンションが付加されるようになったり、自動的にコード進行してしまったりして、生成された伴奏音とハーモニー音とでコード感が異なることがある。この問題に対処するには、生成される伴奏音にテンションが自動的に付加されたり、自動的にコード進行されたりしないような伴奏スタイルデータを選択するようにするか、あるいは、ハーモニー音を生成するための基になる和音入力と伴奏音を生成するための基になる和音入力とを別系統にするかしなければならず、ユーザに面倒な操作を強いることになる。
【０００９】
本発明は、この点に着目してなされたものであり、簡単なユーザ操作により、コード感の合ったハーモニー音および伴奏音を生成することが可能となる演奏補助装置および演奏補助方法を実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、請求項１に記載の演奏補助装置は、コード情報を入力する第１の入力手段と、リード音情報を入力する第２の入力手段と、前記第２の入力手段によって入力されたリード音情報から音高を検出する検出手段と、伴奏パターンデータを供給する供給手段と、前記第１の入力手段によって入力されたコード情報および前記供給手段によって供給された伴奏パターンデータに基づいて伴奏音を生成する第１の生成手段と、前記供給された伴奏パターンデータを参照して、当該伴奏パターンデータのコード進行パターンまたはテンション度数を含むコード感情報を抽出する抽出手段と、前記入力されたコード情報および前記抽出手段によって抽出されたコード感情報に基づいてハーモニー音生成用コード情報を生成する第２の生成手段と、前記第２の生成手段によって生成されたハーモニー音生成用コード情報および前記検出手段によって検出されたリード音情報の音高に基づいて、当該リード音情報の音高を変換し、ハーモニー音を生成する第３の生成手段とを有することを特徴とする。
【００１１】
また請求項２に記載の演奏補助装置は、請求項１の演奏補助装置において、前記ハーモニー音生成用コード情報を生成する第１モードと前記ハーモニー音生成用コード情報を生成しない第２モードのいずれかを選択する選択手段をさらに有し、前記第３の生成手段は、前記選択手段によって前記第１モードが選択されているときには、前記生成されたハーモニー音生成用コード情報に基づいてハーモニー音を生成する一方、前記選択手段によって前記第２モードが選択されているときには、前記入力されたコード情報および前記検出されたリード音情報の音高に基づいてハーモニー音を生成することを特徴とする。
【００１２】
上記目的を達成するため、請求項３に記載のプログラムは、請求項１と同様の技術的思想によって実現できる。
【発明の効果】
【００１３】
請求項１または３に記載の発明によれば、伴奏パターンデータおよび入力されたコード情報に基づいて伴奏音を生成するとともに、当該伴奏パターンデータを参照して抽出したコード感情報および当該入力されたコード情報に基づいてハーモニー音生成用コード情報を生成し、このハーモニー音生成用コード情報および検出されたリード音情報の音高に基づいてハーモニー音を生成するようにし、しかも、伴奏音およびハーモニー音の生成はいずれも、１箇所から入力されたコード情報に基づいて行うようにしたので、簡単なユーザ操作により、コード感の合ったハーモニー音および伴奏音を生成することが可能となる。
【００１４】
請求項２に記載の発明によれば、第１モードが選択されているときには、前記生成されたハーモニー音生成用コード情報に基づいてハーモニー音を生成する一方、第２モードが選択されているときには、前記入力されたコード情報および前記検出されたリード音情報の音高に基づいてハーモニー音を生成するようにしたので、ユーザは第１モードと第２モードのいずれかを選択するだけで、自分の好みに応じたハーモニー音を生成することがでる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態に係る演奏補助装置の概略構成を示すブロック図である。
【図２】伴奏スタイルデータのフォーマットの一例を示す図である。
【図３】図１の演奏補助装置の制御構成を示すブロック図である。
【図４ａ】図１の演奏補助装置、特にＣＰＵが実行する演奏補助処理の手順を示すフローチャートである。
【図４ｂ】図４ａの演奏補助処理の続きの手順を示すフローチャートである。
【図５】図４ａ中のコード感情報抽出処理の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１７】
図１は、本発明の一実施の形態に係る演奏補助装置の概略構成を示すブロック図である。
【００１８】
同図に示すように、本実施の形態の演奏補助装置は、音声を入力するためのマイクロフォン、鍵盤等の演奏操作子および各種スイッチ等の設定操作子からなる入力操作部１と、装置全体の制御を司るＣＰＵ２と、該ＣＰＵ２が実行する制御プログラムや各種テーブルデータ等を記憶するＲＯＭ３と、前記演奏操作子から入力された、コード情報を含む演奏情報、各種入力情報および演算結果等を一時的に記憶するＲＡＭ４と、前記制御プログラムを含む各種アプリケーションプログラムや各種伴奏スタイルデータ、各種データ等を記憶する記憶装置５と、各種情報等を表示する、たとえばＬＣＤ（liquid crystal display）およびＬＥＤ（light emitting diode）等を備えた表示装置６と、外部ＭＩＤＩ（musical instrument digital interface）機器等の外部機器１００を接続し、この外部機器１００とデータの送受信を行う通信インターフェース（Ｉ／Ｆ）７と、前記演奏操作子から入力された演奏情報や、前記記憶装置５に記憶されたいずれかの伴奏スタイルデータ（に含まれる伴奏パターン）を再生して得られた演奏情報等を楽音信号に変換する音源回路８と、該音源回路８からの楽音信号に各種効果を付与するための効果回路９と、該効果回路９からの楽音信号を音響に変換する、たとえば、ＤＡＣ（digital-to-analog converter）やアンプ、スピーカ等のサウンドシステム１０とにより構成されている。
【００１９】
上記構成要素１〜９は、バス１１を介して相互に接続され、通信Ｉ／Ｆ７には外部機器１００が接続され、音源回路８には効果回路９が接続され、効果回路９にはサウンドシステム１０が接続されている。
【００２０】
記憶装置５は、たとえば、フレキシブルディスク（ＦＤ）、ハードディスク（ＨＤ）、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disc）、光磁気ディスク（ＭＯ）および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置５自体が本実施の形態の演奏補助装置から着脱可能であってもよい。あるいは、記憶媒体も記憶装置５も着脱不可能であってもよい。なお記憶装置５（の記憶媒体）には、前述のように、ＣＰＵ２が実行する制御プログラムも記憶でき、ＲＯＭ３に制御プログラムが記憶されていない場合には、この記憶装置５に制御プログラムを記憶させておき、それをＲＡＭ４に読み込むことにより、ＲＯＭ３に制御プログラムを記憶している場合と同様の動作をＣＰＵ２にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００２１】
また記憶装置５は、前述のように各種伴奏スタイルデータを予め記憶している。
【００２２】
図２は、その中のある１つの伴奏スタイルデータ２１のフォーマットの一例を示す図である。図示例の伴奏スタイルデータ２１は、伴奏パターン群２１ａおよびコード進行パターン群２１ｂによって構成されている。そして、伴奏パターン群２１ａは、複数セクションの伴奏パターンによって構成され、コード進行パターン群２１ｂは、複数セクションのコード進行パターンによって構成されている。
【００２３】
複数セクションの伴奏パターンは、具体的には、伴奏曲の「メイン」での使用に適した伴奏パターンと、伴奏曲中「フィルイン」としての使用に適した伴奏パターンと、伴奏曲の「イントロ」での使用に適した伴奏パターンと、伴奏曲の「エンディング」での使用に適した伴奏パターンとによって構成されている。なお、「メイン」および「フィルイン」用の伴奏パターンとして、名称の異なる複数の伴奏パターンが図示されているが、これは、同種の伴奏パターンにも内容の異なる伴奏パターンがあることを意味している。
【００２４】
各セクションの伴奏パターンはそれぞれ、ノートオン／オフ、ノートナンバ、ベロシティ等のデータを含むノートイベントデータ、ピッチベンドデータやボリュームデータ等のイベントデータと、該イベントデータの再生タイミングを示すタイミングデータとを一組とする複数組からなるシーケンスによって構成され、その末尾にはエンドデータが付加されている。そして各イベントデータには、そのイベントデータが属するパート（本実施の形態では「ベースパート」、「コードパート」および「リズムパート」のいずれか）を示すパート情報が付与されている。つまり、各セクションの伴奏パターンはそれぞれ、複数パートのイベントデータを混在させて再生順に配置するというデータ構造を採っている。もちろん、このデータ構造は一例に過ぎず、次に説明するコード進行パターンのように、パート毎に独立したデータ構造を採るようにしてもよい。また各セクションの伴奏パターン（の各ノートイベントの音高（ノートナンバ））は、所定のコード、たとえば「Ｃメジャコード」を基準にして設定されている。したがって、いずれかの伴奏パターンに基づいて実際に伴奏音を生成する際に、ユーザが指定したコードが「Ｃメジャコード」でない場合には、当該伴奏パターン内の各ノートイベントの音高を指定されたコードに合った音高に変換する必要がある。一方、各タイミングデータはいずれも、所定の音符長（たとえば、３８４分音符長）を単位とする整数値で設定されている。タイミングデータは、上述のようにその直後に配置されたイベントデータの再生タイミングを規定するが、その主な規定方法として、隣接するイベント間の時間間隔（相対時間）を規定する方法と、当該伴奏パターンの先頭からの経過時間（絶対時間）を規定する方法がある。本実施の形態では説明を簡単化するために、後者の方法を採ることにする。
【００２５】
複数セクションのコード進行パターンは、具体的には、「メイン」に属する伴奏パターンの再生中に参照されるコード進行パターンと、「フィルイン」に属する伴奏パターンの再生中に参照されるコード進行パターンとによって構成されている。なお、「メイン」用のコード進行パターンは、伴奏パターンと同様に、「メインＡ」および「メインＢ」にそれぞれ対応するものがあるものの、「フィルイン」用のコード進行パターンは、伴奏パターンと異なり、各「フィルイン」に共通した１種類しかなく、さらに「イントロ」および「エンディング」用のコード進行パターンは１種類も含まれていない。つまり、伴奏パターンとコード進行パターンとは、常に１対１に対応付けられている訳ではない。
【００２６】
各セクションのコード進行パターンはそれぞれ、各パートおよび各コードタイプ別のコード進行パターンによって構成されている。また、各パートおよび各コードタイプ別のコード進行パターンはそれぞれ、コードデータと、該コードデータの読み出しタイミングを示すタイミングデータとを一組とする複数組からなるシーケンスによって構成され、その末尾にはエンドデータが付加されている。さらに、各パートおよび各コードタイプ別のコード進行パターンにはそれぞれ、主和音の根音（たとえば“Ｃ”）が設定されており、当該各コード進行パターン内の各コードデータは、入力されたコードの根音に基づいてシフトされる。なおコードデータは、根音＋コードタイプによって表されるものとする。またタイミングデータは、伴奏パターンのタイミングデータに対して、規定するタイミングの名称が異なっている（前者の名称が「読み出しタイミング」であるのに対して、後者の名称は「再生タイミング」である）が、実際の作用は名称のように異ならない。このように名称を異ならせたのは、伴奏パターンは再生の対象にするのに対して、コード進行パターンは参照の対象にするものの再生の対象にしないからである。
【００２７】
さらに伴奏スタイルデータ２１は、ヘッダデータ（図示せず）を備えている。ヘッダデータは、たとえば、伴奏スタイルデータに関する情報、具体的には、伴奏スタイルの名称、各セクションの名称や長さ（小節数）、各コード進行パターンの名称、オリジナルコード（テンション度数を含む）、拍子および（オリジナル）テンポなどを含んでいる。
【００２８】
伴奏スタイルデータは、ロック、ポップスおよびジャズ等の曲のジャンル毎に複数定義されている。ただし、各伴奏スタイルデータのデータフォーマットは、上記伴奏スタイルデータ２１のそれと同じとは限らない。たとえば、伴奏パターンはセクション毎に分かれておらず、伴奏スタイルについて１つのみ設けられていたり、伴奏パターンはセクション毎に分かれているものの、コード進行パターンが１つも設けられていなかったりというようにである。ただし、各伴奏スタイルデータはいずれも、コード進行パターンを含まないことはあるものの、少なくとも１つの伴奏パターンを含んでいるものとする。
【００２９】
また伴奏スタイルデータは、前述のように記憶装置５内に複数種類記憶されているが、ユーザは、たとえば曲のジャンルあるいは伴奏スタイルの名称を指定することで、その中からいずれかを自由に選択することができるようになっている。そして、選択対象の伴奏スタイルデータが複数セクションの伴奏パターンを備えている場合には、ユーザは、たとえばセクションの名称を指定することで、いずれかのセクションの伴奏パターンを選択して再生することができるようになっている。
【００３０】
なお本実施の形態では、各種伴奏スタイルデータは、演奏補助装置（の記憶装置５）内に予めすべて記憶されているとしたが、これに限らず、そのうちの一部は演奏補助装置内に予め記憶され、それ以外の伴奏スタイルデータが選択された場合には、その伴奏スタイルデータが、たとえば外部機器１００に記憶されていれば、その伴奏スタイルデータを、通信Ｉ／Ｆ７を介して演奏補助装置内に取り込んで使用するようにしてもよい。
【００３１】
通信Ｉ／Ｆ７には、図示例では外部機器１００が接続されているが、これに限られず、たとえばＬＡＮ（local area network）やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、記憶装置５に上記各プログラムや各種パラメータが記憶されていなければ、通信Ｉ／Ｆ７はサーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなる演奏補助装置は、通信Ｉ／Ｆ７および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介して演奏補助装置へと配信し、演奏補助装置が通信Ｉ／Ｆ７を介して、これらプログラムやパラメータを受信して記憶装置５に蓄積することにより、ダウンロードが完了する。
【００３２】
なお本実施の形態の演奏補助装置は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ上に構築してもよい。
【００３３】
以上のように構成された演奏補助装置が実行する制御処理を、まず図３を参照してその概要を説明し、次に図４ａ、図４ｂおよび図５を参照して詳細に説明する。
【００３４】
図３は、本実施の形態の演奏補助装置の制御構成を示すブロック図である。
【００３５】
演奏補助処理（図４ａおよび図４ｂを用いて後述）が起動された状態で、ユーザが曲のジャンルを選択すると、前記ＣＰＵ２は、選択されたジャンルに対応する伴奏スタイルデータを記憶装置５から読み出して、前記ＲＡＭ４上に確保した伴奏スタイルデータ格納領域（図示せず）に格納する。このとき、選択された１つのジャンルについて複数の伴奏スタイルデータが記憶されている場合があるが、この場合には、当該複数の伴奏スタイルデータの、たとえば名称を前記表示装置６上に一覧表示させ、その中からユーザが選択した名称のものを読み出すようにすればよい。
【００３６】
次にＣＰＵ２は、選択された伴奏スタイルデータ、つまり伴奏スタイルデータ格納領域に格納された伴奏スタイルデータからコード感情報を抽出する（ブロック２ａ）。「コード感情報」とは、生成するハーモニー音のコード感を生成する伴奏音のコード感に合わせるために利用する情報であり、具体的には、コード進行パターンやテンション度数などである。なお、伴奏スタイルデータから「コード感情報」を抽出する具体的な方法については、後述する。
【００３７】
そしてユーザが、たとえば前記入力操作部１に設けられたスタートスイッチ（図示せず）を押すことにより演奏開始を指示すると、ＣＰＵ２は、選択された伴奏スタイルデータ内の伴奏パターンの再生を開始する。このとき、選択された伴奏スタイルデータが複数の伴奏パターンを含んでいることもある（前記図２の伴奏スタイルデータ２１参照）が、この場合には、いずれか１つの伴奏パターンが再生の対象として選択されているものとする。伴奏パターンの再生が進み、再生タイミングがノートイベントに到達すると、ＣＰＵ２は、このノートイベントを読み出し、その音高を、ユーザが、たとえば前記入力操作部１に含まれる鍵盤を介して入力したコード情報に基づいて変換し、変換後の音高のノートイベントを前記音源回路８に送信する。これにより音源回路８は、変換後の音高の伴奏音（の楽音信号）を生成して（受信したノートイベントがノートオンデータを含む場合）、前記効果回路９に出力する（ブロック８ａ）。効果回路９は、入力された楽音信号に適宜効果を付与して、内蔵の信号出力制御回路（図示せず）に出力する（ブロック９ａ）。
【００３８】
一方、ユーザが、たとえば入力操作部１に含まれるマイクロフォンから自身の歌声によるリード音を入力すると、ＣＰＵ２は、入力されたリード音（アナログ音声信号）をデジタル化して、リード音情報（データ）として、ＲＡＭ４に確保したリード音データ格納領域（図示せず）に格納する。ＣＰＵ２は、リード音データ格納領域に格納されたリード音データから公知の方法によりピッチ（音高）を検出してハーモニー音の生成に用いるとともに、当該リード音データを音源回路８に送信する。これにより、音源回路８は、当該リード音データに対応するリード音（の楽音信号）を生成して効果回路９に出力する（ブロック８ｃ）。効果回路９は、入力された楽音信号に適宜効果を付与して、信号出力制御回路に出力する（ブロック９ｃ）。
【００３９】
ＣＰＵ２は、前記抽出されたコード感情報と前記入力されたコード情報に基づいてハーモニー音生成用コード情報を生成する（ブロック２ｂ）。なお、ハーモニー音生成用コード情報の具体的な生成方法については、後述する。そしてＣＰＵ２は、このハーモニー音生成用コード情報と前記検出されたリード音データの音高に基づいて当該リード音データの音高を変換し、ハーモニー音（の楽音信号）を生成するように音源回路８に依頼する。これにより音源回路８は、ハーモニー音（の楽音信号）を生成して効果回路９に出力する（ブロック８ｂ）。効果回路９は、入力された楽音信号に適宜効果を付与して、信号出力制御回路に出力する（ブロック９ｂ）。
【００４０】
信号出力制御回路は、入力された３種類の楽音信号をミキシングした後、所定の出力タイミングに従って後段の前記サウンドシステム１０に出力する（ブロック９ｄ）。
【００４１】
このように本実施の形態の演奏補助装置では、選択された伴奏スタイルデータ（の伴奏パターン）および入力されたコード情報に基づいて伴奏音を生成するとともに、前記伴奏スタイルデータから抽出したコード感情報および前記コード情報に基づいてハーモニー音生成用コード情報を生成し、このハーモニー音生成用コード情報と入力されたリード音データに基づいてハーモニー音を生成するようにし、しかも、伴奏音およびハーモニー音の生成をいずれも、１箇所から入力されたコード情報に基づいて行うようにしたので、簡単なユーザ操作により、コード感の合ったハーモニー音および伴奏音を生成することが可能となる。
【００４２】
次に、この制御処理を詳細に説明する。
【００４３】
図４ａおよび図４ｂは、本実施の形態の演奏補助装置、特にＣＰＵ２が実行する演奏補助処理の手順を示すフローチャートである。
【００４４】
本演奏補助処理は、主として、
（１）初期化処理（ステップＳ１〜Ｓ３）
（２）演奏開始時処理（ステップＳ５，Ｓ６）
（３）モード変更処理（ステップＳ８〜Ｓ１０）
（４）伴奏スタイル（セクション）変更処理（ステップＳ１２〜Ｓ１４）
（５）リード音生成・出力処理（ステップＳ１６）
（６）リード音消音処理（ステップＳ１８，Ｓ１９）
（７）演奏補助処理の終了処理（ステップＳ２１）
（８）第１の伴奏音生成・出力処理（ステップＳ２３，Ｓ２４）
（９）第２の伴奏音生成・出力処理（ステップＳ４５）
（１０）第１のハーモニー音生成・出力処理（ステップＳ２８，Ｓ２９）
（１１）第２のハーモニー音生成・出力処理（ステップＳ４３，Ｓ４４）
（１２）第１の現在コード決定処理（ステップＳ３１〜Ｓ３７）
（１３）第２の現在コード決定処理（ステップＳ４１）
によって構成されている。
【００４５】
本演奏補助処理は、たとえば前記入力操作部１に含まれる電源スイッチ（図示せず）によって電源がオンされたときに起動される。起動後、前記（１）の初期化処理が１回実行される。そして演奏開始が指示されるまで待機し、演奏開始が指示されると、前記（２）の演奏開始時処理が１回実行され、これに続いて、前記（３）〜（６）および（８）〜（１３）の各処理が適宜実行される。そして（３）〜（６）および（８）〜（１３）の各処理は、演奏補助処理の終了が指示されるまで、あるいは電源ボタンによって電源がオフされるまで、適宜繰り返し実行される。なお、演奏補助処理の終了が指示されると、前記（７）の演奏補助処理の終了処理が実行された後、本演奏補助処理は終了する。
【００４６】
本演奏補助処理が起動すると、ＣＰＵ２は、処理を前記（１）の初期化処理に進める。この（１）初期化処理では、まずＣＰＵ２は、初期設定を行う（ステップＳ１）。初期設定には、伴奏スタイル（セクション）やモードの選択、テンポや音色の設定などが含まれる。
【００４７】
伴奏スタイルデータの中には、前記図２の伴奏スタイルデータ２１のように複数セクションの伴奏パターンを持ち、そのうちの１つのセクションの伴奏パターンを再生対象にすることができるように構成されているものがある。「セクション」をカッコ書きで示したのは、この種の伴奏スタイルデータについては、いずれかのセクションが選択できることを意味している。ただし伴奏スタイルデータ２１では、「メイン」セクションと「フィルイン」セクションには複数の伴奏パターンがあり、これらのセクションについては、セクションを選択しただけでは１つの伴奏パターンを選択することができないので、さらにユーザに選択させるか、あるいはデフォルトでいずれか１つの伴奏パターンが自動的に選択されるようにしておく必要がある。本実施の形態では説明の都合上、後者の方法を採用し、ユーザはセクションを選択するだけで、いずれかの伴奏パターンが自動的に選択されることにする。もちろん、前者の方法を採用しても構わない。以下、この事情は同様である。
【００４８】
またモードには、本実施の形態では、ハーモニー音と伴奏音のそれぞれのコード感を合わせる「第１モード」とそれぞれのコード感を合わせない「第２モード」があり、上記「モードの選択」では、第１モードと第２モードのいずれかが選択される。つまり、第１モードが選択されたときには、ＣＰＵ２は、伴奏スタイルデータからコード感情報を抽出する処理を行い、有効なコード感情報が抽出されれば常に、そのコード感情報を使用してハーモニー音を生成する一方、第２モードが選択されたときには、ＣＰＵ２は、伴奏スタイルデータからコード感情報を抽出する処理そのものを行わない。
【００４９】
「テンポ」は、主として伴奏パターンを再生する際に用いられ、前記ＣＰＵ２に内蔵されるタイマ（図示せず）によって計時されるタイマ割込の時間間隔を規定する。「音色」は、主として演奏音の音色である。
【００５０】
なお、上記「選択」および「設定」では、デフォルト値が「選択」および「設定」されるようにしてもよいし、前回の演奏補助処理で「選択」および「設定」されたものが「選択」および「設定」されるようにしてもよい。
【００５１】
次にＣＰＵ２は、コード感情報抽出処理を実行する（ステップＳ２）。
【００５２】
図５は、このコード感情報抽出処理の詳細な手順を示すフローチャートである。本コード感情報抽出処理が起動されると、まずＣＰＵ２は、選択された伴奏スタイル（セクション）の伴奏スタイルデータを記憶装置５から読み出してＲＡＭ４上の前記伴奏スタイルデータ格納領域にロードし参照する（ステップＳ１０１）。なお、このステップＳ１０１の処理には、カッコ書きで「変更」が記載されているが、これは、本コード感情報抽出処理を別の処理（図４ａのステップＳ１２）中で使用する際に必要となるものである。
【００５３】
次にＣＰＵ２は、次のようにしてコード感情報を抽出する。すなわち、
（ａ）第２モードが選択されている場合：コード感情報を「なし」に設定（ステップＳ１０２→Ｓ１０３）
（ｂ）第１モードが選択されている場合であって、
（ｂ１）被参照伴奏スタイルデータ、つまりステップＳ１０１で参照されている伴奏スタイルデータ中にコード進行パターンがある場合：被参照伴奏スタイルデータからコードタイプ毎に用意されたコード進行パターン（前記図２の伴奏スタイルデータ２１の「メインＡ」セクションでは、ベースパート・メジャ用からコードパート・セブンス用までの６種類の伴奏パターン）を取得し、このコード進行パターンをコード感情報として記憶（ステップＳ１０２→Ｓ１０４→Ｓ１０５）
（ｂ２）被参照伴奏スタイルデータ中にコード進行パターンはないものの、テンション度数を示す情報がある場合：被参照伴奏スタイルデータからテンション度数を抽出し、このテンション度数をコード感情報として記憶（ステップＳ１０２→Ｓ１０４→Ｓ１０６→Ｓ１０７）
（ｂ３）被参照伴奏スタイルデータ中にコード進行パターンもテンション度数を示す情報もない場合：被参照伴奏スタイルデータから伴奏パターンとその伴奏パターンに対する基本コードを取得し、基本コードで伴奏パターン（のコードパートとベースパート）を１サイクル分音高変換して、コード進行パターンを検出する（ステップＳ１０２→Ｓ１０４→Ｓ１０６→Ｓ１０８→Ｓ１０９）。その結果、
（ｂ３１）検出されたコード進行パターン中のコードが基本コードと同じ１つのみの場合：コード感情報を「なし」に設定（ステップＳ１１０→Ｓ１１１）
（ｂ３２）検出されたコード進行パターン中のコードが基本コードと同じ１つのみでない場合：当該コード進行パターンをコード感情報として記憶（ステップＳ１１０→Ｓ１１２）。
【００５４】
なお、上記（ｂ３）におけるコード進行パターンの検出処理は、本発明を特徴付けるものではないので、公知の方法を用いて行うようにすればよい。
【００５５】
図４ａに戻り、ＣＰＵ２は、現在コードを「なし」に設定する（ステップＳ３）。ここで「現在コード」は、伴奏音およびハーモニー音を生成する際に用いるコードであり、基本的には、ユーザが前述のようにして入力したものであるが、所定の条件下では、入力したコードに代えて新たに生成したコードが設定される。
【００５６】
次にＣＰＵ２は、演奏開始が指示されるまで処理の進行を待機し（ステップＳ４）、演奏開始が指示されると、ＣＰＵ２は処理を前記（２）の演奏開始時処理に進める。演奏開始の指示は、本実施の形態では前述のように、ユーザがスタートスイッチを押すことによって行われるが、これに限らず、ユーザがコードあるいはリード音を初めて入力したことを検知し、これを「演奏開始の指示」とみなすようにしてもよい。
【００５７】
（２）演奏開始時処理では、ＣＰＵ２は、前記タイマの計時を開始させる（ステップＳ５）とともに、コード再受付フラグおよびコード進行フラグをそれぞれリセット（“０”）する（ステップＳ６）。ＣＰＵ２によって計時の開始が指示されると、タイマは、所定時間（本実施の形態では、３８４分音符長）を計時する度にタイマ割込信号を発生する。そして、タイマ割込信号が発生する度にＣＰＵ２は、タイマ割込処理（図示せず）を起動し、このタイマ割込処理内で、ＲＡＭ４の所定位置に確保したカウンタ領域（図示せず）を“１”ずつインクリメントして行く。つまり、カウンタ領域には、タイマが作動している限り、タイマの計時を開始してから現在までの経過時間に相当する値（３８４分音符長の時間を単位とする値）が格納されることになる。したがって、カウンタ領域内の値と、伴奏パターンあるいはコード進行パターンに含まれるタイミングデータの値とが一致すれば、そのタイミングデータの直後に位置するイベントデータあるいはコードデータを読み出すべきタイミングとなる。コード再受付フラグは、モードが変更されたとき、あるいは伴奏スタイル（セクション）が変更されたときにセット（“１”）されるフラグである。モードが変更されたとき、あるいは伴奏スタイル（セクション）が変更されたときには、コードが入力されていなくても、コード入力があったものと見なして、伴奏音およびハーモニー音を（再）生成する必要があり、コード再受付フラグはこれに利用される。コード進行フラグは、被参照伴奏スタイルデータがコード進行パターンを持つタイプのものであるときにセットされるフラグである。
【００５８】
次にＣＰＵ２は、ユーザがモードの変更を指示したかどうかをチェックし（ステップＳ７）、モードの変更が指示されたときには、ＣＰＵ２は処理を前記（３）のモード変更処理に進める一方、モードの変更が指示されなかったときには、ＣＰＵ２は処理をステップＳ１１に進める。（３）モード変更処理では、まずＣＰＵ２は、モードを指示されたモードに変更する（ステップＳ８）。本実施の形態では前述のように、モードとして第１モードと第２モードの２種類のモードしか設けられていないので、いずれか指示された方に変更される。なおモードの変更は、たとえば入力操作部１に設けられたモードスイッチ（図示せず）が押される度にトグルで行うようにすればよい。次にＣＰＵ２は、現在コードがあれば、つまり現在コードに「なし」以外の有効なコードが設定されていれば、前記コード再受付フラグをセットした（ステップＳ９）後、タイマを再スタートさせる（ステップＳ１０）。この「再スタート」では、前記カウンタ領域もクリアすることは言うまでもない（後述するステップＳ１４における「再スタート」でも、同様である）。
【００５９】
前記ステップＳ１１では、ＣＰＵ２は、ユーザが伴奏スタイル（セクション）の変更を指示したかどうかをチェックする。このチェックの結果、伴奏スタイル（セクション）の変更が指示されたときには、ＣＰＵ２は処理を前記（４）の伴奏スタイル（セクション）変更処理に進める一方、伴奏スタイル（セクション）の変更が指示されなかったときには、ＣＰＵ２は処理をステップＳ１５に進める。（４）伴奏スタイル（セクション）変更処理では、まずＣＰＵ２は、前記図５のコード感情報抽出処理を実行する（ステップＳ１２）。ここでのコード感情報抽出処理は、前記ステップＳ２でのコード感情報抽出処理に対して、ステップＳ１０１中の「選択された伴奏スタイル（セクション）」を「変更された伴奏スタイル（セクション）」に変更する以外異ならないので、コード感情報抽出処理についての説明は繰り返さない。次にＣＰＵ２は、前記ステップＳ９およびＳ１０と同様に、現在コードがあればコード再受付フラグをセットした（ステップＳ１３）後、タイマを再スタートさせる（ステップＳ１４）。
【００６０】
前記ステップＳ１５では、ＣＰＵ２は、リード音が入力されたか、あるいは変更されたかをチェックする。このチェックの結果、リード音の入力または変更があったときには、ＣＰＵ２は処理を前記（５）のリード音生成・出力処理に進める一方、リード音の入力および変更のいずれもなかったときには、ＣＰＵ２は処理をステップＳ１７に進める。本実施の形態では前述のように、リード音はユーザ自身の歌声であるので、（５）リード音生成・出力処理では、ＣＰＵ２は、制御処理の概要で前述したように、入力されたアナログリード音信号をデジタル化して、リード音データとしてＲＡＭ４上のリード音データ格納領域に格納した後、当該リード音データを所定のタイミングで読み出して音源回路８に送信する。
【００６１】
前記ステップＳ１７では、ＣＰＵ２は、リード音の出力停止を検出したかどうかをチェックする。このチェックの結果、リード音の出力停止を検出したときには、ＣＰＵ２は処理を前記（６）のリード音消音処理に進める一方、リード音の出力停止を検出しなかったときには、ＣＰＵ２は処理をステップＳ２０に進める。ここで「リード音の出力停止」は、たとえばリード音データ格納領域内のリード音データのレベルが所定の閾値（歌声が入力されていないと見なされる値）以下のときに、検出したと判定し、それ以外のときに、検出しなかった（歌声が依然として入力されている）と判定すればよい。（６）リード音消音処理では、ＣＰＵ２は、リード音を消音し（ステップＳ１８）、さらに、ハーモニー音が出力中であれば、そのハーモニー音を消音する（ステップＳ１９）。リード音の出力停止が検出されたときには、リード音データのレベルは非常に低いので、そのリード音をさらに消音する必要があるかの問題はあるが、それでも敢えてその消音をしてもよい。もちろん、何もせずにそのまま放置することも考えられる。ただしリード音は、ユーザ自身の歌声ではなく、伴奏パターンのようにイベントデータとタイミングデータからなるリード音シーケンスを自動再生したものを入力することも考えられる。この場合には、ノートオフデータを含むノートイベントによってリード音の消音が指示されるだけであるので、ＣＰＵ２は、前記ステップＳ１７でノートオフデータを含むノートイベントが読み出されたかどうかチェックし、読み出されたときには、前記ステップＳ１８で発音中のリード音を消音する必要がある。
【００６２】
前記ステップＳ２０では、ＣＰＵ２は、ユーザが本演奏補助処理の終了を指示したかどうかをチェックする。このチェックの結果、本演奏補助処理の終了が指示されたときには、ＣＰＵ２は処理を前記（７）の演奏補助処理の終了処理に進める一方、本演奏補助処理の終了が指示されなかったときには、ＣＰＵ２は処理をステップＳ２２に進める。（７）演奏補助処理の終了処理では、ＣＰＵ２は、現在選択中の伴奏スタイル（セクション）やモードおよび現在設定中のテンポや音色などを記憶装置５に記憶させる。これにより、本演奏補助処理が次回起動されたときに、直前の選択状態および設定状態を再現することができる。
【００６３】
前記ステップＳ２２では、ＣＰＵ２は、コードが入力されたか、あるいはコード再受付フラグがセット状態であるかをチェックする。このチェックの結果、コードの入力があったとき、またはコード再受付フラグがセット状態であったときには、ＣＰＵ２は処理を前記（８）の第１の伴奏音生成・出力処理に進める一方、コードの入力がなく、かつコード再受付フラグがリセット状態であったときには、ＣＰＵ２は処理を図４ｂのステップＳ３８に進める。（８）第１の伴奏音生成・出力処理では、まずＣＰＵ２は、コードが入力された場合には、入力されたコードを現在コードに設定する（ステップＳ２３）。なお、コード再受付フラグをセットするときには常に、現在コードには有効なコードが設定されている（前記ステップＳ９およびＳ１３参照）ので、コード再受付フラグがセット状態である場合には、ステップＳ２３の処理に対応する処理は、特になされない。次にＣＰＵ２は、再生対象の伴奏パターンと現在コードに基づいて伴奏音（を発音させるノートイベント）を生成して（音源回路８に）出力する（ステップＳ２４）。ここで、「再生対象の伴奏パターン」とは、伴奏スタイルデータ格納領域に格納されている伴奏スタイルデータに含まれている伴奏パターンである。また「伴奏パターンと現在コードに基づいて伴奏音を生成」とは、伴奏パターンは所定のコードを基準にして作成されているので、伴奏パターンに含まれる複数のノートイベントのうち、生成すべき伴奏音に対応するノートイベントの音高を所定のコードと現在コードに基づいて音高変換し、変換後の音高のノートイベントを伴奏音のノートイベントとして生成することである。なお本実施の形態では、伴奏音（の楽音信号）の生成を音源回路８に任せているので、上記ステップＳ２４では、ＣＰＵ２は、発音すべき伴奏音（の楽音信号）を音源回路８が生成可能なノートイベントを生成し、これを音源回路８に出力するまでの処理を行う。
【００６４】
次にＣＰＵ２は、コード感情報が「なし」に設定されているか、あるいは第２モードが選択されているかをチェックする。このチェックの結果、コード感情報に「なし」以外の有効な情報が設定されているものの、第２モードが選択されている場合、第１モードが選択されているものの、コード感情報に「なし」が設定されている場合、あるいはコード感情報に「なし」が設定され、かつ第２モードが選択されている場合のいずれかの場合には、ＣＰＵ２は、コード進行フラグをリセットした（ステップＳ２６）後、処理をステップＳ２７に進める一方、コード感情報に「なし」以外の有効な情報が設定され、かつ第１モードが選択されている場合には、ＣＰＵ２は、処理を前記（１２）の第１の現在コード決定処理に進める。
【００６５】
前記ステップＳ２７では、ＣＰＵ２は、リード音が出力中かどうかをチェックする。このチェックの結果、リード音が出力中のときには、ＣＰＵ２は処理を前記（１０）の第１のハーモニー音生成・出力処理に進める一方、リード音が出力中でないときには、ＣＰＵ２は処理をステップＳ３０に進める。ここで「リード音が出力中かどうか」は、リード音データ格納領域内のリード音データのうち、音源回路８が出力しようとしているデータから所定範囲のデータの、たとえば平均レベルが所定の閾値より大きいときに、出力中と判定し、それ以外のときに、出力中でないと判定すればよい。（１０）第１のハーモニー音生成・出力処理では、まずＣＰＵ２は、出力中のリード音の音高（ピッチ）を検出する（ステップＳ２８）。本実施の形態では前述のように、リード音はユーザの歌声であるので、歌声からそのピッチを検出しなければならないが、この種のピッチの検出は、公知の方法でよく行われている。そして本発明の特徴は、歌声からそのピッチを検出する方法にある訳ではないので、ステップＳ２８でのピッチの検出は、公知の方法によって行うようにすればよい。なおリード音が、前述のようにリード音シーケンスを自動再生したものである場合には、ノートオンデータを含むノートイベントが生成されるので、ＣＰＵ２は、そのノートイベント内の音高情報（ノートナンバ）からリード音の音高を簡単に検出することができる。次にＣＰＵ２は、現在コードと上記検出されたリード音の音高に基づいてハーモニー音の音高を決定し、その音高情報を音源回路８に出力する（ステップＳ２９）。これにより音源回路８は、リード音データのピッチを入力された音高に変換し、変換後の音高のリード音データを前記効果回路９に出力する。
【００６６】
次にＣＰＵ２は、コード再受付フラグをリセットした（ステップＳ３０）後、処理を前記ステップＳ７に戻す。
【００６７】
前記（１２）第１の現在コード決定処理では、まずＣＰＵ２は、コード感情報としてテンション度数が設定されているかどうかをチェックする（図４ｂのステップＳ３１）。処理が（１２）第１の現在コード決定処理に進むときには常に、コード感情報として有効な情報、具体的には、テンション度数またはコード進行パターンのいずれかが設定されている。ステップＳ３１のチェックの結果、コード感情報としてテンション度数が設定されているときには、ＣＰＵ２は、コード進行フラグをリセットする（ステップＳ３２）。次にＣＰＵ２は、現在コードとしてテンション付加可能コードが設定されているかどうかチェックする（ステップＳ３３）。このチェックの結果、現在コードとしてテンション付加可能コードが設定されていれば、テンション度数に基づいて現在コードをテンションコードに変換し、変換後のテンションコードを現在コードに設定する（ステップＳ３４）。具体的には、テンション度数として“９ｔｈ”が設定されていれば、Ｍａｊ→ａｄｄ９，ｍｉｎ→ｍａｄｄ９，Ｍ７→Ｍ７(９)，ｍ７→ｍ７ａｄｄ９，ｄ７→ｄ７(９)，…と変換され、“６ｔｈ”が設定されていれば、Ｍａｊ→６，ｍｉｎ→ｍ６，…と変換され、“Ｍ７ｔｈ”が設定されていれば、Ｍａｊ→Ｍ７，ｍｉｎ→ｍＭ７，ａｕｇ→Ｍ７ａｕｇ，…と変換される。なお、この具体例はあくまでも例示に過ぎず、テンション度数としてこれ以外のものを設定するようにしてもよい。またテンション音は、１つのコードにつき複数あってもよい。
【００６８】
一方、ステップＳ３３のチェックの結果、現在コードとしてテンション付加可能コードが設定されていなければ、ステップＳ３４をスキップして、処理を前記図４ａのステップＳ２７に進める。この後、リード音が出力中であれば、前記（１０）の第１のハーモニー音生成・出力処理が実行される。したがってこのとき、ユーザが入力した単純なコードが、前記ステップＳ３４の処理によってより複雑なテンションコードに変換されて、現在コードに再設定されていれば、ハーモニー音は、ユーザが入力した単純なコードより複雑なコード（テンションコード）に基づいて生成されることになる。
【００６９】
一方、ステップＳ３１のチェックの結果、コード感情報としてテンション度数が設定されていないときには、つまりコード感情報としてコード進行パターンが設定されているときには、まずＣＰＵ２は、コード進行フラグをセットする（ステップＳ３５）。次にＣＰＵ２は、複数のコード進行パターンが設定されている場合（前記図５のステップＳ１０５参照）には、現在コードのタイプに対応するコード進行パターンを、１つのコード進行パターンしか設定されていない場合には、そのコード進行パターンを、現在コードを決定するために参照するコード進行パターン（以下、「被参照コード進行パターン」という）に設定する（ステップＳ３６）。そしてＣＰＵ２は、被参照コード進行パターンを構成する複数のコードのうち、現在の再生タイミングに有効なコードを取得し、取得したコードのルートの、当該被参照コード進行パターンの主和音のルートからの度数差が、生成すべきコードのルートの、現在コードのルートからの度数差に一致し、生成すべきコードのタイプが取得したコードのタイプに一致するようなコードを生成し、生成したコードを現在コードに設定する（ステップＳ３７）。ここで「現在の再生タイミングに有効なコード」とは、被参照コード進行パターンに含まれる複数のコードのうち、現在の再生タイミング以前のコードであって、現在の再生タイミングに最も近いものを意味する。これは、処理がステップＳ３７に進んだときに、現在の再生タイミングに一致する読み出しタイミングのコードが被参照コード進行パターン中にあるとは限らないからである。なお、後述するステップＳ４１（前記（１３）の第２の現在コード決定処理）でも、ステップＳ３７と同様の処理を行っているが、処理がステップＳ４１に進むときには、現在の再生タイミングは被参照コード進行パターンのコードチェンジタイミングである（後述するステップＳ４０参照）ので、このときには、被参照コード進行パターン中に、現在の再生タイミングに一致する読み出しタイミングのコードが必ず存在する。
【００７０】
上記ステップＳ３７の処理を具体例に則して説明すると、たとえば、被参照コード進行パターンが、Ｃｍａｊ→Ｆｍａｊ→Ｇ７→Ｃｍａｊ（主和音の根音を“Ｃ”とする）のように１拍ずつコードチェンジするものとし、現在コードが“Ｇｍａｊ”であり、現在の再生タイミングに有効なコードが“Ｇ７”である場合、“Ｇ７”は主和音の根音“Ｃ”から５度差になるので、現在コード“Ｇｍａｊ”からルートが５度差になり、タイプが“Ｇ７”の“７ｔｈ”である“Ｄ７”を生成し、これを新たな現在コードに設定する。
【００７１】
続いてＣＰＵ２は、処理を前記図４ａのステップＳ２７に進める。この後、リード音が出力中であれば、前記（１０）の第１のハーモニー音生成・出力処理が実行される。したがってこのとき、ユーザが入力した単純なコードが、上記ステップＳ３７の処理によってより複雑なもしくは変化した他のコードに変換されて、現在コードに再設定されていれば、ハーモニー音は、ユーザが入力した単純なコードより複雑なもしくは変化したコードに基づいて生成されることになる。
【００７２】
前記ステップＳ３８（図４ｂ）では、ＣＰＵ２は、現在コードが「なし」に設定されているかどうか、つまり前記（１）の初期化処理がなされてから現在まで１度もコードが入力されていないかどうかをチェックする。このチェックの結果、現在コードが「なし」に設定されているときには、ＣＰＵ２は何もせずに、処理を前記図４ａのステップＳ７に戻す一方、現在コードとして有効なコードが設定されているときには、ＣＰＵ２は処理をステップＳ３９に進める。
【００７３】
コード進行フラグがセット状態であって、かつ現在の再生タイミングが被参照コード進行パターンのコードチェンジタイミングであれば、ＣＰＵ２は、処理を前記（１３）の第２の現在コード決定処理に進める（ステップＳ３９→Ｓ４０→Ｓ４１）一方、コード進行フラグがリセット状態であるか、または現在の再生タイミングが被参照コード進行パターンのコードチェンジタイミングでなければ、ＣＰＵ２は、ステップＳ４１をスキップして、処理をステップＳ４２に進める。つまり、処理が（１３）第２の現在コード決定処理に進む場合は、（１２）第１の現在コード決定処理が実行された（このとき、前記ステップＳ３５でコード進行フラグがセットされている）後、コード入力がなされずに（前記ステップＳ２２参照）現在の再生タイミングが被参照コード進行パターンのコードチェンジタイミングになった場合である。
【００７４】
（１３）第２の現在コード決定処理では、ＣＰＵ２は、被参照コード進行パターンを構成する複数のコードのうち、現在の再生タイミングが到達したコードのルートの、その１つ前のコードのルートからの度数差が、生成すべきコードのルートの、現在コードのルートからの度数差に一致し、生成すべきコードのタイプが上記現在の再生タイミングが到達したコードのタイプに一致するようなコードを生成し、生成したコードを現在コードに設定する。この（１３）第２の現在コード決定処理は、前述のように（１２）第１の現在コード決定処理とほぼ同様であるので、（１３）第２の現在コード決定処理の内容についての説明は、これ以上行わない。
【００７５】
前記ステップＳ４２では、ＣＰＵ２は、リード音が出力中かどうかをチェックする。このチェックの結果、リード音が出力中のときには、ＣＰＵ２は処理を前記（１１）の第２のハーモニー音生成・出力処理に進める一方、リード音が出力中でないときには、ＣＰＵ２は処理をステップＳ４５に進める。この（１１）第２のハーモニー音生成・出力処理は、前記（１０）第１のハーモニー音生成・出力処理と同様であるので、その説明を省略する。
【００７６】
前記ステップＳ４５では、ＣＰＵ２は、前記（９）の第２の伴奏音生成・出力処理を実行する。この（９）第２の伴奏音生成・出力処理は、前記（８）第１の伴奏音生成・出力処理と同様であるので、その説明を省略する。
【００７７】
このように本実施の形態の演奏補助装置では、ユーザによって単純なコードが指定された場合でも、選択されている伴奏スタイルに合わせて必要に応じて複雑なコードに自動的に変換し、変換後のコードに基づいてハーモニー音を生成するようにしたので、ユーザは難しいコード指定を行わなくてよい。
【００７８】
また、ユーザは伴奏スタイルを選択する際に、コード進行が意識されているのか、テンション音が自動的に付加されるのかなどについて考慮する必要がなくなり、思い通りの伴奏スタイルを自由に選択することができる。
【００７９】
さらに、ハーモニー生成用のコード情報を伴奏スタイルから生成される伴奏音のコード感に合わせるかどうかをモードによりユーザが選択切り替え可能に構成したので、敢えてハーモニー音と自動伴奏音のコード感を合わせずテンション感などを出す演奏も可能になる。たとえば、１拍ずつオンベースコードで１小節間ベース音のみ動くような伴奏パターンの場合、ハーモニー音はコード音１音を１小節間出力し続け、伴奏音として動くベース音が出力される、という使い方も可能になる。曲の区間などで自動伴奏音とハーモニー音の調和感を自在に変えることができる。
【００８０】
なお本実施の形態では、コード入力は、鍵盤から行うようにしたが、これに限らず、予め記憶されたコード進行パターンを順次自動的に読み出して行うようにしてもよい。
【００８１】
また本実施の形態では、伴奏音、ハーモニー音およびリード音を同時に発生させる例を挙げて説明したが、これに限らず、伴奏音およびハーモニー音を同時に発生させるようにしてもよい。
【００８２】
コード入力が、本実施の形態のように（鍵盤を用いた）演奏入力によって行われる場合には、押鍵状態からコード検出を行うようにすればよい。コード検出方法については、特に指定はなく、実際のコード構成音の鍵を押鍵することによりコードを指定するフィンガード方式や、１つから３つ程度の鍵を所定の規則に基づいて押鍵することによりコードを指定するシングルフィンガー方式などが考えられる。または、操作パネル上に配置されたスイッチ操作により、各コードのルートとタイプを順次指定していってもよい。
【００８３】
伴奏スタイルから生成される伴奏音がコード進行を持つかテンション音を持つかを調べる方法は、いくつか考えられる。たとえば、伴奏スタイルデータが予めテンション音を混ぜて出力するタイプと通常のタイプで分類されて記憶されている場合やデータファイルの拡張子により区別されている場合には、伴奏スタイルとして何が選択されたかで判断すればよい。また、伴奏スタイルのセクションデータ内にコード進行パターンが記憶されており、どのセクションを選択しているかで判断するようにしてもよい。もしくは、伴奏スタイルの伴奏パターンデータを再生前にＣｍａｊやＣｍｉｎなどの単純なコードで音高変換を行い、テンションノートが混ざっているかどうか調べ、混ざっているテンションノートを持つコードにハーモニー音生成時にユーザの入力コードを変換するようにしてもよい。
【００８４】
ハーモニー音の生成方法は、公知の方法のいずれを採用しても構わないが、コードを元にして生成するものとする。たとえば、リード音高より高くて近い音高がハーモニー音となる方式のハーモニー音生成でコードがＣｍａｊの場合、リード音高Ｅ３（６４）に対してハーモニー音高はＧ３（６７）が決定され、リード音高Ｇ３（６７）に対してハーモニー音高はＣ４（７２）が決定される。もし、同時に使用している伴奏スタイルが入力コードＣｍａｊに対してＣ６（構成音はＣ，Ｅ，Ｇ，Ａ）のコード感の自動伴奏音を生成する場合、上記の方式のハーモニー音生成では、音名がＣ，Ｅ，Ｇのいずれかのハーモニー音しか生成されない。本実施の形態のように入力コードＣｍａｊを伴奏スタイルのコード感に合わせてＣ６として処理すると、リード音高Ｅ３（６４）に対してハーモニー音高にＧ３（６７）が決定されるのは同じだが、リード音高Ｇ３（６７）に対してハーモニー音高はＣ４（７２）ではなくＡ３（６９）が決定され、Ｃ６のコード感を持つハーモニー音となる。
【００８５】
コード進行パターン情報からハーモニー生成用のコード情報を作り出す際には、コード進行パターンの各コード間の度数差が保たれるようにルートを変換すればよい。コードタイプはコード進行パターン情報から取得すればよい。
【００８６】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００８７】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８８】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【００８９】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００９０】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【００９１】
１…入力操作部（第１の入力手段、第２の入力手段、選択手段），２…ＣＰＵ（第１の入力手段、第２の入力手段、検出手段、供給手段、第１の生成手段、第２の生成手段、第３の生成手段、抽出手段、選択手段），４…ＲＡＭ（供給手段），５…記憶装置（供給手段）
【図１】
0005560695.tif 000002
【図２】
0005560695.tif 000003
【図３】
0005560695.tif 000004
【図４ａ】
0005560695.tif 000005
【図４ｂ】
0005560695.tif 000006
【図５】
0005560695.tif 000007