(57)【要約】      （修正有）【課題】リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出する電子楽器を提供する。【解決手段】次に進むことのできる機能を持つディグリーネーム候補の抽出処理Ｓ５５、インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理Ｓ５７、非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理Ｓ５８、の３種類の抽出処理によって、検出候補となるコード候補（ディグリーネーム）を抽出する。次に、各ディグリーネームを現在の調に基づいて各コードネームに展開し、展開されたコードの中から、入力された演奏データに基づいて１つコードを選出し、自動伴奏装置に出力して発音させ、前回選出したコードとして記憶する。【選択図】図７Ｂ
2015079269.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの演奏操作に応じて演奏データを入力する入力手段と、
演奏曲の調情報を取得する取得手段と、
コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、
所定の基準コードを参照する参照手段と、
前記取得手段によって取得された調情報に基づいて、前記参照手段によって参照された基準コードから次に進むことのできるコード候補をすべて抽出する抽出手段と、
前記指示手段によってコードの検出が指示されたときに、前記入力手段によって入力された演奏データに基づいて、前記抽出手段によって抽出されたコード候補の中からコードを１つ選出する選出手段と、
前記選出手段によって選出されたコードを前記参照手段が参照できるように記憶する記憶手段と
を有することを特徴とする電子楽器。
【請求項２】
前記抽出手段は、前記取得された調情報に基づいて前記基準コードの機能を割り出し、該割り出した機能から次に進むことのできる各機能を判定し、該判定した各機能を持つコードを前記コード候補として抽出することを特徴とする請求項１に記載の電子楽器。
【請求項３】
前記演奏曲の区切りを検出する検出手段をさらに有し、
前記抽出手段は、前記検出手段によって区切りが検出された以降のコード候補の抽出に際して、インターラプテッド・ケーデンスとなり得るコードも前記コード候補に追加することを特徴とする請求項１または２に記載の電子楽器。
【請求項４】
前記抽出手段は、前記コード候補の抽出に際して、次に進行可能な非機能的なコード進行テクニックを割り出し、該割り出した非機能的なコード進行テクニックに沿って進行可能なコードも前記コード候補に追加することを特徴とする請求項１〜３のいずれかに記載の電子楽器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏操作に応じて入力された演奏データに対して音楽的なつながりのあるコード（和音）を検出する電子楽器に関する。
【背景技術】
【０００２】
演奏データに対して音楽的なつながりのあるコードを検出する電子楽器は、従来から知られている。
【０００３】
このような電子楽器として、音符のシーケンスを示す演奏データを入力して記憶した後、当該演奏データを所定の区間に分割し、予め多数のコード進行を記憶したコード進行データベースから、上記分割された所定区間の演奏データに適合するコード進行を抽出するようにしたものがある（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１４２４６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記従来の電子楽器では、コード進行を抽出するために参照する演奏データは予め入力されたものであるので、演奏データ中の音符の流れをその前後あるいは広い範囲で見ることで、当該演奏データ（を構成する音符）と音楽的につながりのよいコード進行を抽出することができるものの、コード進行を抽出するための参照対象として、たとえばリアルタイム演奏によって入力中の演奏データを採用し、この入力中の演奏データと音楽的につながりのよいコード進行を抽出しようとすると、次に入力される演奏音がどの音か分からないため、上記従来の電子楽器の手法、つまり現在の演奏音より過去の演奏音だけでなく、先の演奏音まで考慮してコード進行を抽出する手法を単純に適用しただけでは、入力された演奏データと音楽的につながりのよいコード進行が抽出されないことがある。
【０００６】
この問題に対処するために、過去に連続して抽出された複数のコードからなるコード進行がコード進行データベース内に記憶されているかどうかを調査し、記憶されている場合には、そのコード進行から次に来るコードを予測し、予測したコードが次に入力される演奏データと調和するものであるかどうかを判定する手法が考えられる。この手法では、予測したコードが次に入力される演奏データと調和しなければ、音楽的なつながりのない別のコードが抽出されることになる。これとは逆に、予測したコードが次に入力される演奏データと調和して、コード進行データベースから目的のコード進行が抽出されたときには、音楽的なつながりのある安定した聴感のコード進行が得られる反面、同じコード進行が出現しやすくなりユーザが飽きてしまう可能性がある。
【０００７】
本発明は、この点に着目してなされたものであり、リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出することが可能となる電子楽器を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、請求項１に記載の電子楽器は、ユーザの演奏操作に応じて演奏データを入力する入力手段と、演奏曲の調情報を取得する取得手段と、コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、所定の基準コードを参照する参照手段と、前記取得手段によって取得された調情報に基づいて、前記参照手段によって参照された基準コードから次に進むことのできるコード候補をすべて抽出する抽出手段と、前記指示手段によってコードの検出が指示されたときに、前記入力手段によって入力された演奏データに基づいて、前記抽出手段によって抽出されたコード候補の中からコードを１つ選出する選出手段と、前記選出手段によって選出されたコードを前記参照手段が参照できるように記憶する記憶手段とを有することを特徴とする。
【０００９】
請求項２に記載の電子楽器は、請求項１の電子楽器において、前記抽出手段は、前記取得された調情報に基づいて前記基準コードの機能を割り出し、該割り出した機能から次に進むことのできる各機能を判定し、該判定した各機能を持つコードを前記コード候補として抽出することを特徴とする。
【００１０】
請求項３に記載の電子楽器は、請求項１または２の電子楽器において、前記演奏曲の区切りを検出する検出手段をさらに有し、前記抽出手段は、前記検出手段によって区切りが検出された以降のコード候補の抽出に際して、インターラプテッド・ケーデンスとなり得るコードも前記コード候補に追加することを特徴とする。
【００１１】
請求項４に記載の電子楽器は、請求項１〜３のいずれかの電子楽器において、前記抽出手段は、前記コード候補の抽出に際して、次に進行可能な非機能的なコード進行テクニックを割り出し、該割り出した非機能的なコード進行テクニックに沿って進行可能なコードも前記コード候補に追加することを特徴とする。
【発明の効果】
【００１２】
請求項１に記載の発明によれば、取得手段によって取得された調情報に基づいて、参照手段によって参照された基準コードから次に進むことのできるコード候補がすべて抽出され、指示手段によってコードの検出が指示されたときに、入力手段によって入力された演奏データに基づいて、前記抽出されたコード候補の中からコードが１つ選出され、該選出されたコードが前記参照手段が参照できるように記憶されるので、リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出することが可能となる。
【００１３】
請求項２に記載の発明によれば、前記取得された調情報に基づいて前記基準コードの機能が割り出され、該割り出された機能から次に進むことのできる各機能が判定され、該判定された各機能を持つコードが前記コード候補として抽出されるので、請求項１に記載の発明と同様の効果を得ることができる。
【００１４】
請求項３に記載の発明によれば、検出手段によって区切りが検出された以降のコード候補の抽出に際して、インターラプテッド・ケーデンスとなり得るコード、つまり通常ではコード進行として禁止されているコードも前記コード候補に追加されるので、ユーザもしくは聴き手の期待を裏切るコードが検出されることがあり、これにより、コードの流れに新鮮さが出る。
【００１５】
請求項４に記載の発明によれば、前記コード候補の抽出に際して、次に進行可能な非機能的なコード進行テクニックが割り出され、該割り出された非機能的なコード進行テクニックに沿って進行可能なコードも前記コード候補に追加されるので、さらにバラエティに富むコードを検出することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態に係る電子楽器の概略構成を示すブロック図である。
【図２】コード検出タイミングの設定例を示す図である。
【図３Ａ】メジャ調におけるコードの機能とディグリーネームの対応表の一例を示す図である。
【図３Ｂ】マイナ調におけるコードの機能とディグリーネームの対応表の一例を示す図である。
【図４Ａ】メジャ調における非機能的コード進行に登場するディグリーネームの一覧表の一例を示す図である。
【図４Ｂ】マイナ調における非機能的コード進行に登場するディグリーネームの一覧表の一例を示す図である。
【図５Ａ】図１の電子楽器、特にＣＰＵが実行する、自動伴奏を使った演奏処理の手順を示すフローチャートである。
【図５Ｂ】図５Ａの自動伴奏を使った演奏処理の続きの手順を示すフローチャートである。
【図６】図５Ａ中のノートイベント処理の詳細な手順を示すフローチャートである。
【図７Ａ】図５Ｂ中のコード候補抽出処理の詳細な手順を示すフローチャートである。
【図７Ｂ】図７Ａのコード候補抽出処理の続きの手順を示すフローチャートである。
【図８Ａ】図７Ｂ中の次に進むことのできる機能を持つディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【図８Ｂ】図８Ａの抽出処理の続きの手順を示すフローチャートである。
【図９】図７Ｂ中のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【図１０】図７Ｂ中の非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１８】
図１は、本発明の一実施の形態に係る電子楽器の概略構成を示すブロック図である。
【００１９】
同図に示すように、本実施の形態の電子楽器は、ユーザの演奏操作に応じて音高情報を含む演奏データを入力する鍵盤を含む演奏操作子１と、各種情報を入力するための複数のスイッチやロータリエンコーダを含む設定操作子２と、演奏操作子１の操作状態を検出する検出回路３と、設定操作子２の操作状態を検出する検出回路４と、装置全体の制御を司るＣＰＵ５と、該ＣＰＵ５が実行する制御プログラムや各種テーブルデータ等を記憶するＲＯＭ６と、演奏データ、各種入力情報および演算結果等を一時的に記憶するＲＡＭ７と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ８と、後述するようにＣＰＵ５が供給するコード情報に基づいて演奏データ（伴奏音を発生させるためのもの）を生成する自動伴奏装置９と、各種情報等を表示する、たとえばＬＣＤ（liquid crystal display）およびＬＥＤ（light emitting diode）等を備えた表示装置１０と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する記憶装置１１と、外部ＭＩＤＩ（musical instrument digital interface）機器等の外部機器１００を接続し、この外部機器１００とデータの送受信を行う通信インターフェース（Ｉ／Ｆ）１２と、演奏操作子１から入力された演奏データや、前記自動伴奏装置９によって生成された演奏データ等を楽音信号に変換する音源回路１３と、該音源回路１３からの楽音信号に各種効果を付与するための効果回路１４と、該効果回路１４からの楽音信号を音響に変換する、たとえば、ＤＡＣ（digital-to-analog converter）やアンプ、スピーカ等のサウンドシステム１５とにより構成されている。
【００２０】
上記構成要素３〜１４は、バス１６を介して相互に接続され、ＣＰＵ５および自動伴奏装置９にはタイマ８が接続され、通信Ｉ／Ｆ１２には外部機器１００が接続され、音源回路１３には効果回路１４が接続され、効果回路１４にはサウンドシステム１５が接続されている。
【００２１】
自動伴奏装置９は、たとえば、ＲＯＭ６に予め記憶されたシーケンサソフトウェアをＣＰＵ５に実行させることによって実現され、前述のように、供給されたコード情報に基づいて演奏データを生成し、生成した演奏データを音源回路１３に供給することで、伴奏音を発生させる。また、自動伴奏装置９は、たとえば、ＲＯＭ６に予め記憶された各種伴奏スタイルデータからユーザが選択したいずれかの伴奏スタイルデータを再生して、演奏データを生成する機能も備えている。この機能を営むときに、自動伴奏装置９は、タイマ８から供給される時間情報に基づいて伴奏スタイルデータを再生する。なお、本発明の特徴は、自動伴奏装置９の構成や作用にある訳ではないので、自動伴奏装置９の構成や作用についてのこれ以上の説明は行わない。
【００２２】
記憶装置１１は、たとえば、フレキシブルディスク（ＦＤ）、ハードディスク（ＨＤ）、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disc）、光磁気ディスク（ＭＯ）および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置１１自体が本実施の形態の電子楽器から着脱可能であってもよい。あるいは、記憶媒体も記憶装置１１も着脱不可能であってもよい。なお記憶装置１１（の記憶媒体）には、前述のように、ＣＰＵ５が実行する制御プログラムも記憶でき、ＲＯＭ６に制御プログラムが記憶されていない場合には、この記憶装置１１に制御プログラムを記憶させておき、それをＲＡＭ７に読み込むことにより、ＲＯＭ６に制御プログラムを記憶している場合と同様の動作をＣＰＵ５にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００２３】
通信Ｉ／Ｆ１２には、図示例では外部機器１００が接続されているが、これに限られず、たとえばＬＡＮ（local area network）やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、記憶装置１１に上記各プログラムや各種パラメータが記憶されていなければ、通信Ｉ／Ｆ１２はサーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなる電子楽器は、通信Ｉ／Ｆ１２および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介して電子楽器へと配信し、電子楽器が通信Ｉ／Ｆ１２を介して、これらプログラムやパラメータを受信して記憶装置１１に蓄積することにより、ダウンロードが完了する。
【００２４】
なお、本実施の形態の電子楽器は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ上に構築してもよい。
【００２５】
以上のように構成された電子楽器が実行する制御処理を、まず図２〜図４を参照してその概要を説明し、次に図５〜図１０を参照して詳細に説明する。
【００２６】
図２は、コード検出タイミングの設定例を示す図であり、同図には、演奏曲として４／４拍子の曲を選択し、１拍目と３拍目をコード検出基準位置に設定し、そのコード検出基準位置の２５０ｍｓ前から５０ｍｓ後までの期間をコード検出タイミングに設定する例が示されている。なお図示例では、１拍目にはコード検出タイミングが描かれていないが、これは、どちらか一方の拍位置にコード検出タイミングを描いておけば、他方の拍位置にも同様にコード検出タイミングが設定されていることが容易に分かるからである。また、詳細は後述するが、コード検出タイミングをどの位置にどれくらいの時間幅で、どれくらいの個数（あるいは、どれくらいの頻度で）設定するかは、ユーザが自由に選択できるようになっている。
【００２７】
本実施の形態の電子楽器は、ユーザが前記鍵盤を用いて演奏することで、リアルタイム入力された演奏データをそのまま前記音源回路１３に供給して発音するとともに、リアルタイム入力された演奏データに対して音楽的なつながりのあるコードを検出して前記自動伴奏装置９に供給することにより、伴奏音も発音するようにしている。前記コード検出タイミングの期間（時間幅）は、コードを検出するために参照する演奏データを入力する期間である。つまり、コード検出タイミングの期間内に入力された演奏データのみが、伴奏音を発音するためのコードを検出する際に参照される。コードの検出は、まず、
（１０１）次に進むことのできる機能を持つディグリーネーム候補の抽出処理
（１０２）インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理
（１０３）非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理の３種類の抽出処理によって、検出候補となるコード候補（ディグリーネームで表現したもの）を抽出する。ただし上記（１０２）の抽出処理は、演奏曲の区切りが検出されるまでは実行されない。
【００２８】
上記（１０１）の抽出処理では、図３Ａ（メジャ調の場合）および図３Ｂ（マイナ調の場合）のコードの機能とディグリーネームの対応表のうち、現在の調に対応する方を参照し、前回検出されたコードの機能から次に進むことのできる機能をすべて抽出する。そして、同対応表を参照して、抽出した機能を持つディグリーネームをダイアトニック・スケール・コードに属するものも、ダイアトニック・スケール・コード以外に属するものもすべて抽出して、ディグリーネームリストに登録する。ただし、所定の条件が満たされた場合、ダイアトニック・スケール・コードに属するものを抽出しないことがあるが、ここでは、これ以上説明しない。
【００２９】
上記（１０２）の抽出処理では、  上記（１０１）の抽出処理と同様に、図３Ａおよび図３Ｂのコードの機能とディグリーネームの対応表のうち、現在の調に対応する方を参照し、インターラプテッド・ケーデンスに対応したディグリーネーム候補をすべて抽出して、ディグリーネームリストに登録する。なお、この抽出処理の詳細については、ここでは説明しない。
【００３０】
上記（１０３）の抽出処理では、図４Ａ（メジャ調の場合）および図４Ｂ（マイナ調の場合）の非機能的コード進行に登場するディグリーネームの一覧表のうち、現在の調に対応する方を参照し、非機能的コード進行テクニックに対応したディグリーネーム候補をすべて抽出して、ディグリーネームリストに登録する。なお、この抽出処理の詳細についても、ここでは説明しない。
【００３１】
次に、ディグリーネームリストに登録された各ディグリーネームを現在の調に基づいて各コードネームに展開し、これらコードネームに展開されたコードの中から、入力された演奏データに基づいて１つコードを選出し、選出したコードを自動伴奏装置９に出力して発音させるとともに、前回選出したコードとして記憶しておく。前回（必要に応じて前々回）選出したコードは、前記（１０１）〜（１０３）の各抽出処理で使われる。
【００３２】
前記（１０１）〜（１０３）の各抽出処理を開始してから１つのコードを選出して自動伴奏装置９に出力するまでのコード検出処理（後述する「制御処理の詳細」では、「（６）コードの検出タイミング時処理」に相当する）は、図２の例では、１拍目と３拍目に実行されるが、より厳密には、当該各拍のコード検出タイミングの期間の末尾、つまり時間Ｔ３に実行の開始が指示される。これは、コード検出処理で参照する演奏データの検出期間をコード検出タイミングの全期間、つまり期間Ｔ１〜Ｔ３としているからである。
【００３３】
このように本実施の形態の電子楽器では、次に進行するコードとして、音楽的なつながりのあるコード候補を抽出し、抽出したコード候補の中から、リアルタイム入力された演奏データと調和するコードを検出するようにしたので、リアルタイム演奏に対して音楽的なつながりのあるコードを検出することができる。そして、検出されたコードは常に、リアルタイム入力された演奏データと調和している。
【００３４】
また、コード候補としてディグリーネームで表現したものを抽出し、抽出したコード候補を現在の調に基づいてコードネームに展開するようにしたので、たとえば“Ｆ＃Ｍａｊ７”と“Ｇ♭Ｍａｊ７”という異名同音コードを区別して生成（展開）することができる。
【００３５】
また、クリシェ、パッシングディミニッシュ、パラレルモーションといった、非機能的なコード進行を形成するコードもコード候補として抽出するようにしたので、バラエティに富むコード進行を得ることができるとともに、ユーザの演奏のちょっとしたタッチの違いでも、異なるコード進行が得られる可能性がある。さらに、音楽的に矛盾がなく、面白味のあるコード進行を得ることができる。
【００３６】
また、通常は、次に進行可能なコードを候補として抽出するが、演奏中、曲の区切りと判断したときのみ、普段は禁止しているコード進行を候補に追加するようにしたので、曲の区切れ目で、ユーザもしくは聴き手の期待を裏切るコード進行となり、これにより、コード進行（コードの流れ）に新鮮さが出る。普段は禁止しているコード進行とは、インターラプテッド・ケーデンス（＝サブドミナント・マイナの終止保留：通常は使わないコード進行で、メジャ調ではドミナント（Ｄ）→サブドミナント・マイナ（ＳＭ）と進行し、マイナ調ではドミナント（Ｄ）→サブドミナント（Ｓ）と進行する）である。インターラプテッド・ケーデンスは、原則として音楽的な区切りの部分で使用される作曲方法なので、実際の使われ方と一致する。
【００３７】
次に、この制御処理を詳細に説明する。
【００３８】
図５Ａおよび図５Ｂは、本実施の形態の電子楽器、特にＣＰＵ５が実行する、自動伴奏を使った演奏処理の手順を示すフローチャートである。本実施の形態の電子楽器では、ユーザが演奏操作子１を用いてリアルタイム演奏する際の演奏モードとして、自動伴奏装置９を作動させずに、演奏操作子１を用いて入力された演奏データに応じた楽音を発音させる第１の演奏モードと、自動伴奏装置９を作動させて、演奏操作子１を用いて入力された演奏データに応じた楽音とともに、自動伴奏装置９によって生成された演奏データに応じた楽音（伴奏音）も発音させる第２の演奏モードの２種類の演奏モードを備えている。通常の演奏モード、つまり、本実施の形態の電子楽器の電源をオンしたときに最初に選択される演奏モードは、第１の演奏モードであるので、第２の演奏モードに移行するには、ユーザによる所定の移行指示が必要となる。上記「自動伴奏を使った演奏処理」は、この移行指示がなされたときに起動される処理である。なお本実施の形態では、本発明の特徴を「自動伴奏を使った演奏処理」内にすべて盛り込み、この「自動伴奏を使った演奏処理」を用いて本発明の特徴を説明するようにしたので、「自動伴奏を使わない演奏処理」についての説明は行わない。したがって、以下「自動伴奏を使った演奏処理」を「演奏処理」と略して言う。ただし、本発明の特徴を「自動伴奏を使わない演奏処理」内にすべて盛り込み、この「自動伴奏を使わない演奏処理」を用いて本発明の特徴を説明することもできる（この場合には、伴奏音は発生しない）ので、「自動伴奏を使った演奏処理」を用いて本発明の特徴を説明したのは、便宜上のことに過ぎない。
【００３９】
本演奏処理は、主として、
（１）起動時処理（ステップＳ１〜Ｓ４）
（２）自動伴奏のスタート時処理（ステップＳ７）
（３）自動伴奏のストップ時処理（ステップＳ９）
（４）ノートイベント処理（ステップＳ１２）
（５）曲の区切り検出時処理（ステップＳ１４）
（６）コードの検出タイミング時処理（図５ＢのステップＳ１６〜Ｓ２５）
によって構成されている。
【００４０】
本演奏処理が起動されると、前記（１）の起動時処理が１回実行された後、自動伴奏のスタート指示があるまで待機状態となり（ステップＳ６→Ｓ５→Ｓ６）、自動伴奏のスタート指示があると、前記（２）の自動伴奏のスタート時処理が実行され、これに続いて、前記（４）〜（６）の各処理が適宜実行される。そして（４）〜（６）の各処理は、自動伴奏のストップ指示があるまで（ステップＳ８）、あるいは第１の演奏モードに戻る指示があるまで（ステップＳ５）、適宜繰り返し実行される。なお、自動伴奏のストップ指示があると、前記（３）の自動伴奏のストップ時処理が実行された後、伴奏スタイルなどの設定変更があったかどうか判定され（ステップＳ１０）、設定変更があったときには、前記（１）の起動時処理に戻る一方、設定変更がなかったときには、前記待機状態に戻る。また、第１の演奏モードに戻る指示があると、本演奏処理は終了する（ステップＳ５→終了）。
【００４１】
前記（１）の起動時処理は、
（１１）演奏開始前の設定処理（ステップＳ１）
（１２）コード検出タイミングおよび各種ルールの設定処理（ステップＳ２）
（１３）初期化処理（ステップＳ３）
（１４）コード検出タイミングの始点および終点の算出設定処理（ステップＳ４）
によって構成されている。
【００４２】
この（１）起動時処理に処理が進むと、まずＣＰＵ５は、前記（１１）の演奏開始前の設定処理を実行する。この（１１）演奏開始前の設定処理では、ＣＰＵ５は、演奏テンポ、拍子、伴奏スタイル、ボリューム値および演奏音色などの各項目の設定を行う。各項目は、ユーザに設定すべき値あるいは種類を問い合わせ、これに応じてユーザが入力あるいは選択した値あるいは種類を設定するようにしてもよいし、デフォルト設定されたものあるいは前回設定されたものをそのまま、あるいは一部変更して設定するようにしてもよい。
【００４３】
次にＣＰＵ５は、処理を前記（１２）のコード検出タイミングおよび各種ルールの設定処理に進める。この（１２）コード検出タイミングおよび各種ルールの設定処理では、ＣＰＵ５は、コード検出タイミングの設定ルールと、それ以外の各種ルールを設定する。
【００４４】
コード検出タイミングの設定ルールとは、具体的には、コードを検出するタイミングとして、時間幅を設けるのか、あるいは時間幅を設けずに時点とするのか、また、時間幅を設けるのであれば、どの時点を基準位置として、その前後にどのくらいの時間幅を設けるのか、あるいは時点とするのであれば、どの時点とするのかということである。時間幅を設ける例としては、前記図２で示したように、２拍毎に（４／４拍子が選択された場合には、たとえば１拍目と３拍目）拍位置をコード検出基準位置として、２５０ｍｓ前から５０ｍｓ後までの期間とすることが挙げられる。図示例では、時間幅を設定する単位として“ｍｓ”を採用したが、もちろんこれに限らず、音符長であってもよい。また、コード検出基準位置は２拍毎の拍位置に限らず、１拍毎の拍位置であってもよいし、テンポが変化したときに、たとえば２拍毎から１拍毎に変動するようにしてもよいし、拍に限らず、小節毎の所定位置（たとえば、先頭位置）であってもよい。さらに、コード検出基準位置をどこに設定するかは、テンポ値や伴奏スタイルによって決まっていてもよい。一方、時点の例としては、時間幅を設ける場合で例示した各種コード検出基準位置、つまり、所定拍毎の拍位置や小節毎の所定位置、あるいは、ユーザが、たとえば前記設定操作子２に含まれる所定の操作子を操作した時点や、所定の拍内で、ユーザが所定の操作子を操作した時点などが考えられる。なお本実施の形態では、コード検出タイミングの設定ルールとして、前記図２の例で示したルールが選択設定されているものとする。
【００４５】
各種ルールとしては、（Ｒ１）調情報の検出ルールや（Ｒ２）コードの選出ルール、（Ｒ３）曲の区切り検出ルールなどを挙げることができる。
【００４６】
前記（Ｒ１）の調情報の検出ルールとしては、たとえば、演奏前にユーザに調情報を問い合わせ、これに応じてユーザが入力した調情報を検出（取得）するというルールや、ユーザの演奏操作に応じて入力された演奏データを解析して、随時調情報を検出するというルールなどが考えられる。なお本実施の形態では、調情報は、主音名＋メジャ／マイナによって表現したものを入力あるいは検出するものとする。また、演奏データを解析して調情報を検出する方法は、公知のものを用いればよい。そして、調情報を随時検出する方法を採用した場合には、コードが選出される度に（後述する図５ＢのステップＳ２０を参照）、そのとき検出された調情報を当該選出されたコードに対応付けて記憶しておくとよい。
【００４７】
前記（Ｒ２）のコードの選出ルールとしては、たとえば、
（Ｒ２ａ）各コードに予め優先順位を付けておき（たとえば、ダイアトニック・スケール・コードのトニックコードを上位にするなど）、候補コードのうち、最上位のコードを選出するというルール
（Ｒ２ｂ）参照対象の演奏データの全ての音名と候補コードの各コードの構成音との一致度合い（完全一致、３音以上が一致、２音が一致など）が最も高いコードを選出するというルール
などを挙げることができる。また、候補コードの各コードの根音が参照対象の演奏データに含まれることを追加条件にしてもよい。
【００４８】
前記（Ｒ３）の曲の区切り検出ルールとしては、たとえば、
（Ｒ３ａ）選択された伴奏スタイルデータのうち、「フィルイン」のセクションに属するデータを再生する指示がなされたときに、曲の区切りと検出するというルール
（Ｒ３ｂ）ユーザの演奏が、たとえば２小節以上途絶えた後に再開されたときに、曲の区切りと検出するというルール
（Ｒ３ｃ）別の伴奏スタイルデータが選択されたときに、曲の区切りと検出するというルール
などを挙げることができる。
【００４９】
また、（１２）コード検出タイミングおよび各種ルールの設定処理では、メジャ調でのドミナント（Ｄ）→サブドミナント・マイナ（ＳＭ）進行（インターラプテッド・ケーデンス）を通常時も許可するかどうかも設定できるようになっている。ここで、「通常時も許可」とは、前記（１０２）のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理時だけではなく、前記（１０１）の次に進むことのできる機能を持つディグリーネーム候補の抽出処理時でも、メジャ調においてインターラプテッド・ケーデンスとなるコード進行（を形成するコード機能を有するディグリーネーム）の抽出を許可することを意味する。そして、「通常時も許可」が設定された場合には、前記図３Ａのメジャ調におけるコードの機能とディグリーネームの対応表中、機能が「Ｄ：ドミナント」である「次に進む事の出来る機能」に“ＳＭ”が追加されて、「次に進む事の出来る機能」は“Ｔ”，“Ｄ”および“ＳＭ”の３種類となる一方、「通常時は不許可」が設定された場合には、当該「次に進む事の出来る機能」には“ＳＭ”が追加されずに、“Ｔ”および“Ｄ”の２種類となる。図３Ａの当該「次に進む事の出来る機能」中、“ＳＭ”がカッコ書きで示されているのは、“ＳＭ”が機能として選択される場合と選択されない場合の両方があり得るからである。本実施の形態では、図３Ａの対応表は前記ＲＯＭ６に予め記憶されており、必要なときに読み出して参照するようにしているが、「通常時も許可」が設定されたかどうかで、対応表のうちの一部データ（“ＳＭ”）を採用するかどうかを判断するのは面倒なので、「通常時も許可」が設定された場合の対応表と「通常時は不許可」が設定された場合の対応表を予め別々に作成して記憶しておき、必要に応じて必要な方を読み出して参照すればよい。
【００５０】
なお、（１２）コード検出タイミングおよび各種ルールの設定処理でも、前記（１１）演奏開始前の設定処理と同様に、各ルールは、ユーザに設定すべきルール内容を問い合わせ、これに応じてユーザが入力あるいは選択した内容を設定するようにしてもよいし、デフォルト設定されたものあるいは前回設定されたものをそのまま、あるいは一部変更して設定するようにしてもよい。
【００５１】
次にＣＰＵ５は、処理を前記（１３）の初期化処理に進める。この（１３）初期化処理では、ＣＰＵ５は、前記ＲＡＭ７上に確保した次の各領域を初期化する。つまり、
ノートイベントリストＮＬｉｓｔ：コード検出タイミングの期間内に入力されたノートオンイベントに対応するノートイベント情報（音高＋入力タイミング）を登録するリストである；
区切りカウンタ：曲の区切りが検出される度に“１”ずつカウントアップして行くソフトウェアカウンタである；
コード検出タイミングの始点ｓＴｉｍｅ：コード検出タイミングの始点を記憶しておく領域である；
コード検出タイミングの終点ｅＴｉｍｅ：コード検出タイミングの終点を記憶しておく領域である；
調情報Ｋｅｙ：前記設定された調検出ルールに従って検出された調情報を記憶しておく領域である；
ディグリーネームリストＤＮＬｉｓｔ：後述するコード候補抽出処理によって抽出されたコード候補のディグリーネームを登録するリストである；
コードリストＣＬｉｓｔ：ディグリーネームリストＤＮＬｉｓｔに登録された各ディグリーネームを調情報Ｋｅｙに基づいて展開して生成したコードネームを登録するリストである；
選出コードＣｈｏｒｄ：ノートイベントリストＮＬｉｓｔに登録されたノートイベント情報に基づいてコードリストＣＬｉｓｔから選出した１つのコードネームを記憶しておく領域である；
出力結果リストＲＬｉｓｔ：選出コードＣｈｏｒｄ、調情報Ｋｅｙおよび選出コードＣｈｏｒｄに対応するディグリーネームを登録するリストである；
前回のディグリーネームＬＤＮ：前回の選出コードＣｈｏｒｄに対応するディグリーネームを記憶しておく領域である；
前回の機能ＬＦ：前回の選出コードＣｈｏｒｄに対応する機能を記憶しておく領域である；
の各領域をクリアする。
【００５２】
次にＣＰＵ５は、処理を前記（１４）のコード検出タイミングの始点および終点の算出設定処理に進める。この（１４）コード検出タイミングの始点および終点の算出設定処理では、ＣＰＵ５は、前記設定されたコード検出タイミングの設定ルールに従って、最初のコード検出タイミングの始点および終点を算出し、算出した始点を前記始点ｓＴｉｍｅに記憶（設定）するとともに、算出した終点を前記終点ｅＴｉｍｅに記憶（設定）する。ただし本実施の形態では、コード検出タイミングとして、曲の先頭拍の拍位置をコード検出基準位置に取るとともに、その拍位置からさらに２５０ｍｓ前をコード検出タイミングの始点に取るのに対して、曲は先頭拍から開始されるので、曲の開始時に、その開始位置より前の位置を算出して、始点ｓＴｉｍｅに設定するのは無意味である。したがって、この場合、始点ｓＴｉｍｅには先頭拍の拍位置、つまりコード検出基準位置を設定することが好ましい。しかしこの場合に、原則通り、先頭拍の拍位置より２５０ｍｓ前の位置を算出して、始点ｓＴｉｍｅに設定したとしても、設定された始点より後の時刻から制御処理が開始されるだけであって、その後の制御処理に問題が生じることはない。
【００５３】
このようにして（１）起動時処理が１回実行されると、ＣＰＵ５は、ユーザによる自動伴奏のスタート指示を待ち、自動伴奏のスタート指示がなされると、処理を前記（２）の自動伴奏のスタート時処理に進める（ステップＳ６→Ｓ７）。この（２）自動伴奏のスタート時処理では、ＣＰＵ５は、前記タイマ８を起動して、タイマ８による計時を開始する。タイマ８の計時時間は、前述のように前記自動伴奏装置９にも供給され、さらに本演奏処理では、前述のように自動伴奏装置９は作動状態であるので、伴奏スタイルデータが選択設定されていれば、自動伴奏装置９は、本演奏処理とは独立して、タイマ８から供給された計時時間（時間情報）に基づいてその伴奏スタイルデータを再生する。
【００５４】
そしてＣＰＵ５は、ユーザによって自動伴奏のストップ指示がなされるまで、ノートオンイベントが受け付けられたときには、前記（４）のノートイベント処理を実行し（ステップＳ８→Ｓ１１→Ｓ１２）、曲の区切りが検出されたときには、前記（５）の曲の区切り検出時処理を実行し（ステップＳ１３→Ｓ１４）、タイマ８によって前記コード検出タイミング（の終点ｅＴｉｍｅ）が計時されたときには、前記（６）のコードの検出タイミング時処理を実行する（図５ＢのステップＳ１５→Ｓ１６）。
【００５５】
一方、ユーザによって自動伴奏のストップ指示がなされると、ＣＰＵ５は、処理を前記（３）の自動伴奏のストップ時処理に進める（ステップＳ８→Ｓ９）。この（３）自動伴奏のストップ時処理では、ＣＰＵ５は、タイマ８を停止する。これにより当然ながら、自動伴奏装置９による前記伴奏スタイルデータの再生は停止する。
【００５６】
図６は、前記（４）のノートイベント処理の詳細な手順を示すフローチャートである。
【００５７】
同図に示すように、本ノートイベント処理は、
（４１）タイマ８がコード検出タイミング期間内の時間、つまり前記始点ｓＴｉｍｅから前記終点ｅＴｉｍｅまでの間の時間を計時しているときに
（４１ａ）ノートオンイベントが受け付けられた場合の処理（ステップＳ３３，Ｓ３４）
（４１ｂ）ノートオフイベントが受け付けられた場合の処理（ステップＳ３５，Ｓ３６）
（４２）タイマ８がコード検出タイミング期間外の時間を計時しているときに
（４２ａ）ノートオンイベントが受け付けられた場合の処理（ステップＳ３８）
（４２ｂ）ノートオフイベントが受け付けられた場合の処理（ステップＳ３９）
によって構成されている。
【００５８】
そして、上記（４１ａ）の処理は、上記（４２ａ）の処理、つまり、受け付けられたノートオンイベントを前記音源回路１３に出力することでなされる発音処理に、当該ノートオンイベントに対応するノートイベント情報（音高＋入力タイミング）を前記ノートイベントリストＮＬｉｓｔに追加する処理を加えて構成され、上記（４１ｂ）の処理は、上記（４２ｂ）の処理、つまり、受け付けられたノートオフイベントを音源回路１３に出力することでなされる消音処理に、当該ノートオフイベントに対応するノートイベント情報を前記ノートイベントリストＮＬｉｓｔから削除する処理を加えて構成されている。
【００５９】
前記（５）の曲の区切り検出時処理では、ＣＰＵ５は、前記区切りカウンタを“１”だけインクリメントする（ステップＳ１４）。
【００６０】
前記（６）のコードの検出タイミング時処理では、まずＣＰＵ５は、前記（１２）のコード検出タイミングおよび各種ルールの設定処理によって設定された調検出ルールに従って、調情報を取得し（ステップＳ１６）、取得した調情報を前記調情報Ｋｅｙに記憶する（ステップＳ１７）。次にＣＰＵ５は、コード候補抽出処理を実行する（ステップＳ１８）。
【００６１】
図７Ａおよび図７Ｂは、このコード候補抽出処理の詳細な手順を示すフローチャートである。
【００６２】
本コード候補抽出処理は、主として、前記（１０１）〜（１０３）の抽出処理、つまり、
（１０１）次に進むことのできる機能を持つディグリーネーム候補の抽出処理（ステップＳ５５）
（１０２）インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理（ステップＳ５６）
（１０３）非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理（ステップＳ５７）
によって構成され、上記（１０１）の抽出処理の前に、
（１００ａ）起動時処理（ステップＳ４１〜Ｓ４３）
（１００ｂ）上記（１０１）の抽出処理の前処理（ステップＳ４４〜Ｓ５２）
を実行するように構成されている。ただし、上記（１０２）の抽出処理は、区切りカウンタの値が“１”以上のとき、つまり、曲の区切りが１回以上検出されたときに実行される。
【００６３】
本コード候補抽出処理が起動されると、まずＣＰＵ５は、処理を前記（１００ａ）の起動時処理に進める。この（１００ａ）起動時処理では、ＣＰＵ５は、
（１００ａ１）ノートイベントリストＮＬｉｓｔが空である場合、つまり、ノートイベントリストＮＬｉｓｔにノートイベント情報が１個も記録されていない場合：本コード候補抽出処理を直ちに終了する（ステップＳ４１→リターン）；
（１００ａ２）ノートイベントリストＮＬｉｓｔが空でない場合：かつ
（１００ａ２１）出力結果リストＲＬｉｓｔが空である場合：ノートイベントリストＮＬｉｓｔに記録されたノートイベント情報と調情報Ｋｅｙに基づいて初回コードのディグリーネームを検出し、検出したディグリーネームをディグリーネームリストＤＮＬｉｓｔに登録した後、本コード候補抽出処理を終了する（ステップＳ４１→Ｓ４２→Ｓ４３→リターン）；
（１００ａ２２）出力結果リストＲＬｉｓｔが空でない場合：前記（１００ｂ）の前処理に進む（ステップＳ４１→Ｓ４２→Ｓ４４）。
【００６４】
なお前記（１００ａ２１）の処理において、初回コードのディグリーネームの検出は、通常の方法によって行えばよい。またこの場合、参照する前回のコードがまだ記憶されていないので、たとえば、調の主音をルートとしたメジャ調かマイナ調のトニックコードを参照すべき基準コードとしてもよい。
【００６５】
前記（１００ｂ）の前処理では、ＣＰＵ５は、トニック禁止フラグ、サブドミナント禁止フラグおよびドミナント禁止フラグのセット／リセットを行う。具体的には、
（１００ｂ１）出力結果リストＲＬｉｓｔに４個以上のコード情報が登録されており、末尾から４個、つまり最新に登録されたものから遡って４個がすべて、ダイアトニック・スケール・コードのトニック（Ｔ）に該当するかどうか判定し（ステップＳ４４）、
当該４個のコード情報がすべて、ダイアトニック・スケール・コードのトニックに該当する場合：トニック禁止フラグをセット（“１”）（ステップＳ４５）；
当該４個のコード情報のうち、少なくとも１個が、ダイアトニック・スケール・コードのトニックに該当しない場合：トニック禁止フラグをリセット（“０”）（ステップＳ４６）；
（１００ｂ２）出力結果リストＲＬｉｓｔに２個以上のコード情報が登録されており、末尾から２個がすべて、ダイアトニック・スケール・コードのサブドミナント（Ｓ）に該当するかどうか判定し（ステップＳ４７）、
当該２個のコード情報がすべて、ダイアトニック・スケール・コードのサブドミナントに該当する場合：サブドミナント禁止フラグをセット（ステップＳ４８）；
当該２個のコード情報のうち、少なくとも１個が、ダイアトニック・スケール・コードのサブドミナントに該当しない場合：サブドミナント禁止フラグをリセット（ステップＳ４９）；
（１００ｂ３）出力結果リストＲＬｉｓｔに２個以上のコード情報が登録されており、末尾から２個がすべて、ダイアトニック・スケール・コードのドミナント（Ｄ）に該当するかどうか判定し（ステップＳ５０）、
当該２個のコード情報がすべて、ダイアトニック・スケール・コードのドミナントに該当する場合：ドミナント禁止フラグをセット（ステップＳ５１）；
当該２個のコード情報のうち、少なくとも１個が、ダイアトニック・スケール・コードのドミナントに該当しない場合：ドミナント禁止フラグをリセット（ステップＳ５２）。
【００６６】
上記３種類の禁止フラグをそれぞれセットする場合は、対応する機能を持つダイアトニック・スケール・コードが所定個続いて選出されて発音される（後述する図５ＢのステップＳ２０〜Ｓ２３を参照）場合に相当する。つまり、各禁止フラグは、対応する機能を持つダイアトニック・スケール・コードが所定個続いて選出されないように制限する機能を営んでいる（後述する図８ＡのステップＳ６３，Ｓ６７、および図８ＢのステップＳ７１を参照）。このような禁止フラグを設けたことにより、単調なコード選出およびその発音を抑制することができる。なお、同じ機能を持つダイアトニック・スケール・コードが何個続いたときに、同じ機能を持つ新たなダイアトニック・スケール・コードの選出を禁止するかの上記例示した個数は、あくまでも例示に過ぎず、複数個であれば２個と４個に限られない。
【００６７】
さらにＣＰＵ５は、出力結果リストＲＬｉｓｔの末尾のコード情報を参照し、前回コードのディグリーネームとその機能を取得し（ステップＳ５３）、取得したディグリーネームを前回のディグリーネームＬＤＮに記憶するとともに、取得した機能を前回の機能ＬＦに記憶する（ステップＳ５４）。
【００６８】
次にＣＰＵ５は、処理を前記（１０１）の次に進むことのできる機能を持つディグリーネーム候補の抽出処理に進める（図７ＢのステップＳ５３）。
【００６９】
図８Ａおよび図８Ｂは、この（１０１）次に進むことのできる機能を持つディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【００７０】
同図Ａ，Ｂに示すように本抽出処理では、まずＣＰＵ５は、前回の機能ＬＦおよび調情報Ｋｅｙに基づいて、次に進むことのできる機能を全て抽出する（ステップＳ６１）。このとき、前記図３Ａ（調情報Ｋｅｙがメジャ調の場合）または図３Ｂ（調情報Ｋｅｙがマイナ調の場合）のいずれかのコードの機能とディグリーネームの対応表を参照して、次に進むことのできる機能を全て抽出する。たとえば、前回の機能ＬＦがトニック（Ｔ）であり、調情報Ｋｅｙがメジャ調である場合には、ＣＰＵ５は、次に進むことのできる機能として、トニック（Ｔ）、サブドミナント（Ｓ）、ドミナント（Ｄ）およびサブドミナント・マイナ（ＳＭ）を抽出する。また、前回の機能ＬＦがドミナント（Ｄ）であり、調情報Ｋｅｙがメジャ調である場合には、さらに、メジャ調でのドミナント（Ｄ）→サブドミナント・マイナ（ＳＭ）進行（インターラプテッド・ケーデンス）を通常時も許可するかどうかに応じて、ＣＰＵ５は、次に進むことのできる機能として、トニック（Ｔ）、ドミナント（Ｄ）およびサブドミナント・マイナ（ＳＭ）（「通常時も許可」の設定時）と、トニック（Ｔ）およびドミナント（Ｄ）（「通常時は不許可」の設定時）のいずれかを抽出する。
【００７１】
次にＣＰＵ５は、抽出した機能とその機能に対応する禁止フラグのセット状態に応じて、次のように場合分けし、各場合に対応する処理を実行する。すなわち、
（１０１ａ）抽出した機能にトニックがあり、かつ
トニック禁止フラグの値＝０（リセット状態）の場合：ダイアトニック・スケール・コードのトニックに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ６４）とともに、ダイアトニック・スケール・コード以外のトニックに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ６５）；
トニック禁止フラグの値＝１（セット状態）の場合：上記ステップＳ６４の処理をスキップして、上記ステップＳ６５の処理のみを行う；
（１０１ｂ）抽出した機能にサブドミナントがあり、かつ
サブドミナント禁止フラグの値＝０の場合：ダイアトニック・スケール・コードのサブドミナントに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ６８）とともに、ダイアトニック・スケール・コード以外のサブドミナントに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ６９）；
サブドミナント禁止フラグの値＝１の場合：上記ステップＳ６８の処理をスキップして、上記ステップＳ６９の処理のみを行う；
（１０１ｃ）抽出した機能にドミナントがあり、かつ
ドミナント禁止フラグの値＝０の場合：ダイアトニック・スケール・コードのドミナントに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（図８ＢのステップＳ７２）とともに、ダイアトニック・スケール・コード以外のドミナントに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ７３）；
ドミナント禁止フラグの値＝１の場合：上記ステップＳ７２の処理をスキップして、上記ステップＳ７３の処理のみを行う；
（１０１ｄ）抽出した機能にサブドミナント・マイナがある場合：サブドミナント・マイナに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ７５）。
【００７２】
なお、抽出した機能にトニック、サブドミナント、ドミナントまたはサブドミナント・マイナがない場合には、それぞれ以下の（１０１ａ）〜（１０１ｄ）の各処理はなされない。
【００７３】
図７Ｂに戻り、ＣＰＵ５は、区切りカウンタの値が“０”より大きいかどうかを判定し、区切りカウンタの値＞０のときには、処理を前記（１０２）のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理に進める（ステップＳ５６→Ｓ５７）一方、区切りカウンタの値＝０のときには、前記（１０２）のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理をスキップする（ステップＳ５６→Ｓ５８）。
【００７４】
図９は、この（１０２）インターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【００７５】
本抽出処理が起動されると、ＣＰＵ５は、区切りカウンタの値をチェックし、区切りカウンタの値が“１”であれば、区切りカウンタの値を“１”だけインクリメントして“２”にした（ステップＳ８１→Ｓ８２）後、本抽出処理を終了する一方、区切りカウンタの値が“０”または“３”以上であれば、本抽出処理を直ちに終了する（ステップＳ８１→Ｓ８３→リターン）。
【００７６】
さらに、区切りカウンタの値が“２”であれば、ＣＰＵ５は、次のようにしてディグリーネーム候補を抽出する。すなわち、
（１０２ａ）前回の機能ＬＦがドミナントであり、かつ
調情報Ｋｅｙがマイナ調である場合：サブドミナントに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ８４→Ｓ８５→Ｓ８８：このステップＳ８８の処理では、マイナ調においてインターラプテッド・ケーデンスとなるコード進行、つまり、ドミナント→サブドミナント進行のうち、後者のコード機能（サブドミナント）を持つディグリーネームをすべて抽出する。そして、この抽出に際して、前記図３Ｂのマイナ調におけるコードの機能とディグリーネームの対応表を参照する）とともに、区切りカウンタをクリアする（ステップＳ８９）；
調情報Ｋｅｙがメジャ調である場合には、さらに、メジャ調でのドミナント→サブドミナント・マイナ進行（インターラプテッド・ケーデンス）が通常時は許可されていなければ、サブドミナント・マイナに該当するディグリーネームの中で、調情報Ｋｅｙに合うものをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ８４→Ｓ８５→Ｓ８６→Ｓ８７：このステップＳ８７の処理では、メジャ調においてインターラプテッド・ケーデンスとなるコード進行、つまり、ドミナント→サブドミナント・マイナ進行のうち、後者のコード機能（サブドミナント・マイナ）を持つディグリーネームをすべて抽出する。そして、この抽出に際して、前記図３Ａのメジャ調におけるコードの機能とディグリーネームの対応表を参照する）とともに、区切りカウンタをクリアする（ステップＳ８９）；
（１０２ｂ）前回の機能ＬＦがドミナントでない場合：区切りカウンタをクリアした（ステップＳ８４→Ｓ８９）後、本抽出処理を終了する。
【００７７】
なお、調情報Ｋｅｙがメジャ調である場合に、メジャ調でのドミナント→サブドミナント・マイナ進行（インターラプテッド・ケーデンス）が通常時も許可されていれば、ＣＰＵ５は、前記ステップＳ８７の処理をスキップして、区切りカウンタをクリアした（ステップＳ８６→Ｓ８９）後、本抽出処理を終了する。ここで、ステップＳ８７の処理をスキップしたのは、メジャ調でのドミナント→サブドミナント・マイナ進行が通常時も許可されていれば、前記図８ＢのステップＳ７５の処理により、当該進行を形成するコードの機能を持つディグリーネームは既に、ディグリーネームリストＤＮＬｉｓｔに登録されており、再度登録する必要はないからである。もちろんこの場合も、ステップＳ８７の処理を実行して、当該進行を形成するコードの機能を持つディグリーネームをディグリーネームリストＤＮＬｉｓｔに再登録するようにしてもよい。
【００７８】
この（１０２）の抽出処理は実質的に、区切りカウンタの値が“２”であるときにのみなされている（前記ステップＳ８３を参照）が、このようにした理由は、次の通りである。つまり、曲の区切りが検出されてから、最初のコード検出期間の終点ｅＴｉｍｅに到達すると、この（１０２）の抽出処理が起動されるが、このときの「前回の機能ＬＦ」は曲の区切りが検出される前の機能であるため、「前回の機能ＬＦ」として、曲の区切りが検出された後の機能が記憶されるまで、１回待つ必要がある。そこで、区切りカウンタの値が“１”であるときには、その値のインクリメントだけ行って本抽出処理を終了し（ステップＳ８１→Ｓ８２→リターン）、本抽出処理による実質的な処理を行わずに１回待つようにしている。そして、次のコード検出期間の終点ｅＴｉｍｅに到達すると、このときの「前回の機能ＬＦ」は曲の区切りが検出された後の機能であるため、「インターラプテッド・ケーデンスに対応したディグリーネーム候補」の抽出処理を適正に行うことができる。
【００７９】
図７Ｂに戻り、次にＣＰＵ５は、処理を前記（１０３）の非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理に進める（ステップＳ５８）。
【００８０】
図１０は、この（１０３）非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【００８１】
本抽出処理が起動されると、ＣＰＵ５は、次のようにしてディグリーネーム候補を抽出する。すなわち、
（１０３ａ）前回のディグリーネームＬＤＮから非機能的コード進行をする可能性がある場合：前回のディグリーネームＬＤＮから調情報Ｋｅｙに合った非機能的コード進行となるディグリーネームをすべて抽出し、ディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ９１→Ｓ９２→リターン）；
（１０３ｂ）前回のディグリーネームＬＤＮは非機能的コード進行のコードでない場合：何もせずに本抽出処理を終了する（ステップＳ９３→リターン）；
（１０３ｃ）前回のディグリーネームＬＤＮはクリシェのコードである場合：出力結果リストＲＬｉｓｔの末尾から２番目のコード情報を参照し、前々回のコードのディグリーネームを取得し（ステップＳ９５→Ｓ９６）、取得したディグリーネームを、前々回のディグリーネームを記憶するために前記ＲＡＭ７上に設けられた領域ＢＤＮ（以下、この領域ＢＤＮに記憶された前々回のディグリーネームを「前々回のディグリーネームＢＤＮ」という）に記憶し（ステップＳ９７）、クリシェとして、前々回のディグリーネームＢＤＮ→前回のディグリーネームＬＤＮと進行し、その次に進行する可能性のあるディグリーネームをすべて抽出し、抽出したディグリーネームを、次回のディグリーネームを登録するためのリスト（以下、「次回のディグリーネームリスト」という）ＮＤＮＬｉｓｔに登録し（ステップＳ９８）、さらに、次回のディグリーネームリストＮＤＮＬｉｓｔに登録されているディグリーネームのうち、まだディグリーネームリストＤＮＬｉｓｔに登録されていないものをディグリーネームリストＤＮＬｉｓｔに登録する（ステップＳ１００）；（１０３ｄ）前記（１０３ａ）〜（１０３ｃ）のいずれの場合にも該当しない場合：調情報Ｋｅｙに合った非機能的コード進行として、前回のディグリーネームＬＤＮの次に可能となるディグリーネームをすべて抽出し、抽出したディグリーネームを次回のディグリーネームリストＮＤＮＬｉｓｔに登録した（ステップＳ９９）後、上記ステップＳ１００の処理を行う。
【００８２】
なお、次回のディグリーネームリストＮＤＮＬｉｓｔの初期化処理は、前記（１０３ｃ）の処理の前に行うようにしている（ステップＳ９４）。
【００８３】
また、前記（１０３ａ）〜（１０３ｄ）の処理では、前記図４Ａ（調情報Ｋｅｙがメジャ調の場合）または図４Ｂ（調情報Ｋｅｙがマイナ調の場合）のいずれかの非機能的コード進行に登場するディグリーネームの一覧表を適宜参照するようにしている。
【００８４】
具体的には、前記（１０３ａ）の場合に該当するかどうかは、前回のディグリーネームＬＤＮが調情報Ｋｅｙ側の一覧表の「前回」に記載されているディグリーネーム群に含まれているかどうかで判定する。たとえば、前回のディグリーネームＬＤＮが“ＩＭａｊ７”であり、調情報Ｋｅｙがメジャ調である場合には、“ＩＭａｊ７”は図４Ａの一覧表の「パッシング・ディミニッシュ」と「クリシェ」の「前回」のディグリーネーム群に含まれているので、この場合について前記（１０３ａ）の処理、つまりステップＳ９２の処理を行うと、抽出されるディグリーネームは、“ＩＭａｊ７”を「前回」に含む「今回」のディグリーネーム、つまり“＃Ｉｄｉｍ”，“♭IIIｄｉｍ”および“Ｉａｕｇ”となる。
【００８５】
また、前記（１０３ｂ）の場合に該当するかどうかは、前回のディグリーネームＬＤＮが調情報Ｋｅｙ側の一覧表の「今回」に記載されている各ディグリーネームに該当しないかどうかで判定する。
【００８６】
さらに、前記（１０３ｃ）の場合に該当するかどうかは、前回のディグリーネームＬＤＮがメジャ調側の一覧表の「クリシェ」の「今回」に記載されているディグリーネーム、つまり“Ｉａｕｇ”であるかどうかで判定する。そして、前々回のディグリーネームＢＤＮは「クリシェ」の「前回」に記載されているいずれのディグリーネーム群に含まれるかを判定し、前々回のディグリーネームＢＤＮを「前回」に含む方の「次回」に記載されているディグリーネームが次回のディグリーネームリストＮＤＮＬｉｓｔに登録される。ただし、前々回のディグリーネームＢＤＮが“Ｉ”または“Ｉｓｕｓ４”である場合には、前々回のディグリーネームＢＤＮは「クリシェ」の両方の「前回」に含まれてしまい、「次回」を１つに決めることができないので、この場合には、両方の「次回」にともに記載されているディグリーネームを抽出して、次回のディグリーネームリストＮＤＮＬｉｓｔに登録するようにすればよい。
【００８７】
また、ステップＳ９９の処理では、前回のディグリーネームＬＤＮは調情報Ｋｅｙ側の一覧表の「今回」に記載されている各ディグリーネームに該当するかどうかで判定する。
【００８８】
図５Ｂに戻り、次にＣＰＵ５は、処理をステップＳ１９に進める。このステップＳ１９では、ディグリーネームリストＤＮＬｉｓｔに登録されている各ディグリーネームを調情報Ｋｅｙに基づいてコードネームに展開し、それぞれ前記コードリストＣＬｉｓｔに登録する。ここで、ディグリーネームからコードネームへの展開は、調情報の主音をＩ度としてディグリーネームの度数からルートを算出することによって行う。これにより、たとえば、ディグリーネーム“IIｍ７”を調情報“ＦＭａｊ”によって展開すると、コードネーム“Ｇｍ７”が得られる。
【００８９】
次にＣＰＵ５は、ノートイベントリストＮＬｉｓｔとコードリストＣＬｉｓｔに基づいて、コードを１つ選出し（ステップＳ２０）、選出したコードを選出コードＣｈｏｒｄに記憶する（ステップＳ２１）とともに、選出コードＣｈｏｒｄを前記自動伴奏装置９に出力する（ステップＳ２２）。なお、上記ステップＳ２０での「コードの選出」は、前記（１２）のコード検出タイミングおよび各種ルールの設定処理で設定した前記（Ｒ２）コードの選出ルール、つまり本実施の形態では、前記（Ｒ２ａ）または（Ｒ２ｂ）のいずれかに従って行われる。
【００９０】
さらにＣＰＵ５は、選出コードＣｈｏｒｄと、調情報Ｋｅｙと、選出コードＣｈｏｒｄに対応するディグリーネームを出力結果リストＲＬｉｓｔの末尾に追加し（ステップＳ２３）、コード検出タイミングの設定内容（設定ルール）に基づいて、次のコード検出期間の始点および終点を算出して、それぞれ始点ｓＴｉｍｅおよび終点ｅＴｉｍｅを更新し（ステップＳ２４）、ノートイベントリストＮＬｉｓｔ、ディグリーネームリストＤＮＬｉｓｔおよびコードリストＣＬｉｓｔを初期化（クリア）する（ステップＳ２５）。
【００９１】
なお本実施の形態では、入力された演奏データに対して音楽的なつながりのあるコードを検出し、検出したコードに基づいて自動伴奏を行うようにしたが、これに限らず、検出したコードに基づいて、入力された演奏データに対するハーモニー音を生成するようにしてもよい。
【００９２】
また本実施の形態では、出力結果リストＲＬｉｓｔの初期化は、前記図５ＡのステップＳ３でのみなされるので、自動伴奏がスタートした以降は、自動伴奏がストップしたときに、設定変更があった場合にのみなされる。つまり、出力結果リストＲＬｉｓｔの初期化は、自動伴奏を使った演奏処理が起動されている間、特別な場合を除いてなされないので、自動伴奏がスタートした以降に検出されたコードのほとんどは、登録されている。このようしたのは、説明を簡略化するために過ぎず、最新に検出されたコードを任意の所定個数、記憶するようにし、新たなコードが検出される度に更新するようにしてもよい。また、検出されたコードを記憶する場合、コードネームの形式で記憶するようにしてもよいし、その時点での調情報と対応付けたディグリーネームの形式で記憶するようにしてもよい。さらに、コードネームとディグリーネームの両方を記憶するようにしてもよい。なお、検出したコードがコードネームの形式でしか記憶されていない場合には、次回以降のコード検出時に参照する際には、その都度、調情報を用いてディグリーネームに展開するようにしてもよい。
【００９３】
また本実施の形態では、参照対象の演奏データについて何の処理も施さず、入力されたものをそのまま使うようにしたが、これに限らず、入力された演奏データから装飾音やミスタッチと推測される音符データを取り除いた後、コード検出を行うようにすると、コード検出の精度がさらに向上する。
【００９４】
さらに本実施の形態では、図３の各調におけるコードの機能とディグリーネームの対応表や、図４の各調における非機能的コード進行に登場するディグリーネームの一覧表に記載のコードの種類は、たとえばＲＯＭ６内に予め設定されて記憶されているが、任意に追加登録できるかどうかには言及していなかった。任意に追加登録できるようになっていた方が好ましいが、追加登録できないようになっていてもよい。
【００９５】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００９６】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９７】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【００９８】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００９９】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【０１００】
１…演奏操作子（入力手段），５…ＣＰＵ（取得手段、参照手段、抽出手段、選出手段、検出手段），７…ＲＡＭ（記憶手段）
【図１】
2015079269.tif 000003
【図２】
2015079269.tif 000004
【図３Ａ】
2015079269.tif 000005
【図３Ｂ】
2015079269.tif 000006
【図４Ａ】
2015079269.tif 000007
【図４Ｂ】
2015079269.tif 000008
【図５Ａ】
2015079269.tif 000009
【図５Ｂ】
2015079269.tif 000010
【図６】
2015079269.tif 000011
【図７Ａ】
2015079269.tif 000012
【図７Ｂ】
2015079269.tif 000013
【図８Ａ】
2015079269.tif 000014
【図８Ｂ】
2015079269.tif 000015
【図９】
2015079269.tif 000016
【図１０】
2015079269.tif 000017
【手続補正書】
【提出日】平成27年1月5日(2015.1.5)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、演奏操作に応じて入力された演奏データに対して音楽的なつながりのあるコード（和音）を検出するコード検出装置およびコード検出をコンピュータに実行させるためのプログラムに関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
演奏データに対して音楽的なつながりのあるコードを検出するコード検出装置は、従来から知られている。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
このようなコード検出装置として、音符のシーケンスを示す演奏データを入力して記憶した後、当該演奏データを所定の区間に分割し、予め多数のコード進行を記憶したコード進行データベースから、上記分割された所定区間の演奏データに適合するコード進行を抽出するようにしたものがある（たとえば、特許文献１参照）。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
しかし、上記従来のコード検出装置では、コード進行を抽出するために参照する演奏データは予め入力されたものであるので、演奏データ中の音符の流れをその前後あるいは広い範囲で見ることで、当該演奏データ（を構成する音符）と音楽的につながりのよいコード進行を抽出することができるものの、コード進行を抽出するための参照対象として、たとえばリアルタイム演奏によって入力中の演奏データを採用し、この入力中の演奏データと音楽的につながりのよいコード進行を抽出しようとすると、次に入力される演奏音がどの音か分からないため、上記従来の電子楽器の手法、つまり現在の演奏音より過去の演奏音だけでなく、先の演奏音まで考慮してコード進行を抽出する手法を単純に適用しただけでは、入力された演奏データと音楽的につながりのよいコード進行が抽出されないことがある。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明は、この点に着目してなされたものであり、リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出することが可能となるコード検出装置およびコード検出をコンピュータに実行させるためのプログラムを提供することを目的とする。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上記目的を達成するため、請求項１に記載のコード検出装置は、演奏データを取得する演奏データ取得手段と、演奏曲の調情報を取得する調情報取得手段と、コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、所定の基準となるコードを設定する設定手段と、前記設定手段によって設定された基準となるコードを参照して当該基準となるコードの機能を取得する機能取得手段と、前記調情報取得手段によって取得された調情報および前記機能取得手段によって取得された基準となるコードの機能から、当該基準となるコードの次に進むことのできる各機能を判定し、該判定した各機能を持つコードをコード候補として抽出する抽出手段と、前記指示手段によってコードの検出が指示されたときに、前記演奏データ取得手段によって取得された演奏データに基づいて、前記抽出手段によって抽出されたコード候補の中からいずれか１つを選出する選出手段と、前記選出手段によって、最新のものから過去に遡って所定個続いて同じ機能のコード候補が選出された場合には、次のコード候補の抽出に際して、当該機能を持つコード候補を除いて抽出するように前記抽出手段を制御する制御手段とを有することを特徴とする。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
上記目的を達成するため、請求項２に記載のプログラムは、請求項１と同様の技術的思想によって実現できる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
請求項１または２に記載の発明によれば、設定された基準となるコードを参照して当該基準となるコードの機能が取得され、取得された調情報および前記取得された基準となるコードの機能から、当該基準となるコードの次に進むことのできる各機能が判定され、該判定された各機能を持つコードがコード候補として抽出され、コードの検出が指示されたときに、取得された演奏データに基づいて、前記抽出されたコード候補の中からいずれか１つが選出されるので、リアルタイム演奏に対して音楽的なつながりのある、バラエティに富んだコードを検出することが可能となる。また、同じ機能のコード候補が所定個続いて保存された場合には、次のコード候補の抽出に際して、当該機能を持つコード候補は除いて抽出するように制御されるので、単調なコード選出を抑制することができる。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】削除
【補正の内容】
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】削除
【補正の内容】
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
【図１】本発明の一実施の形態に係るコード検出装置を適用した電子楽器の概略構成を示すブロック図である。
【図２】コード検出タイミングの設定例を示す図である。
【図３Ａ】メジャ調におけるコードの機能とディグリーネームの対応表の一例を示す図である。
【図３Ｂ】マイナ調におけるコードの機能とディグリーネームの対応表の一例を示す図である。
【図４Ａ】メジャ調における非機能的コード進行に登場するディグリーネームの一覧表の一例を示す図である。
【図４Ｂ】マイナ調における非機能的コード進行に登場するディグリーネームの一覧表の一例を示す図である。
【図５Ａ】図１の電子楽器、特にＣＰＵが実行する、自動伴奏を使った演奏処理の手順を示すフローチャートである。
【図５Ｂ】図５Ａの自動伴奏を使った演奏処理の続きの手順を示すフローチャートである。
【図６】図５Ａ中のノートイベント処理の詳細な手順を示すフローチャートである。
【図７Ａ】図５Ｂ中のコード候補抽出処理の詳細な手順を示すフローチャートである。
【図７Ｂ】図７Ａのコード候補抽出処理の続きの手順を示すフローチャートである。
【図８Ａ】図７Ｂ中の次に進むことのできる機能を持つディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【図８Ｂ】図８Ａの抽出処理の続きの手順を示すフローチャートである。
【図９】図７Ｂ中のインターラプテッド・ケーデンスに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【図１０】図７Ｂ中の非機能的コード進行テクニックに対応したディグリーネーム候補の抽出処理の詳細な手順を示すフローチャートである。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
図１は、本発明の一実施の形態に係るコード検出装置を適用した電子楽器の概略構成を示すブロック図である。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１００
【補正方法】変更
【補正の内容】
【０１００】
１…演奏操作子（演奏データ取得手段），５…ＣＰＵ（調情報取得手段、設定手段、機能取得手段、抽出手段、選出手段、検出手段、制御手段），７…ＲＡＭ
【手続補正１８】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演奏データを取得する演奏データ取得手段と、
演奏曲の調情報を取得する調情報取得手段と、
コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、
所定の基準となるコードを設定する設定手段と、
前記設定手段によって設定された基準となるコードを参照して当該基準となるコードの機能を取得する機能取得手段と、
前記調情報取得手段によって取得された調情報および前記機能取得手段によって取得された基準となるコードの機能から、当該基準となるコードの次に進むことのできる各機能を判定し、該判定した各機能を持つコードをコード候補として抽出する抽出手段と、
前記指示手段によってコードの検出が指示されたときに、前記演奏データ取得手段によって取得された演奏データに基づいて、前記抽出手段によって抽出されたコード候補の中からいずれか１つを選出する選出手段と、
前記選出手段によって、最新のものから過去に遡って所定個続いて同じ機能のコード候補が選出された場合には、次のコード候補の抽出に際して、当該機能を持つコード候補を除いて抽出するように前記抽出手段を制御する制御手段と
を有することを特徴とするコード検出装置。
【請求項２】
コード検出をコンピュータに実行させるプログラムであって、
演奏データを取得する演奏データ取得ステップと、
演奏曲の調情報を取得する調情報取得ステップと、
コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示ステップと、
所定の基準となるコードを設定する設定ステップと、
前記設定ステップによって設定された基準となるコードを参照して当該基準となるコードの機能を取得する機能取得ステップと、
前記調情報取得ステップによって取得された調情報および前記機能取得ステップによって取得された基準となるコードの機能から、当該基準となるコードの次に進むことのできる各機能を判定し、該判定した各機能を持つコードをコード候補として抽出する抽出ステップと、
前記指示ステップによってコードの検出が指示されたときに、前記演奏データ取得ステップによって取得された演奏データに基づいて、前記抽出ステップによって抽出されたコード候補の中からいずれか１つを選出する選出ステップと、
前記選出ステップによって、最新のものから過去に遡って所定個続いて同じ機能のコード候補が選出された場合には、次のコード候補の抽出に際して、当該機能を持つコード候補を除いて抽出するように前記抽出ステップを制御する制御ステップと
を有する
ことを特徴とするプログラム。