(57)【要約】【課題】  正確なコード判定を行うコード判定装置を実現する。【解決手段】  曲データＭＤを構成する各音の内から、所定音長より短い音長の音を除外し、それ以外の音に基づいてコード判定区間毎に音名検出してコード判定するので、経過音や装飾音をコード判定の対象に含めずに正確なコード判定を行うことが可能になる。また、所定音長より短い音であっても、その音と同時に発音する音が存在する場合には、前記所定音長より短い音長の音を除外せずコード判定するので、スタッカートなどの音長の短い和音を検出でき、正確なコード判定が可能になる。【選択図】  図６
2006106313.tif 000002
【特許請求の範囲】
【請求項１】
曲を構成する各音を記憶する記憶手段と、
前記記憶手段に記憶される各音の内から所定音長より短い音長の音を除外し、それ以外の音に基づいてコード判定区間毎にコード判定するコード判定手段と
を具備することを特徴とするコード判定装置。
【請求項２】
前記コード判定手段は、前記記憶手段から読み出した音が所定音長より短ければ、その読み出した音と同時に発音する他の音を前記記憶手段から検索し、該当する音が存在する場合には、前記所定音長より短い音長の音を除外せずコード判定することを特徴とする請求項１記載のコード判定装置。
【請求項３】
曲を構成する各音を記憶する記憶手段と、
コード判定区間を設定すると共に、設定されたコード判定区間に対応させた特定音長を設定する設定手段と、
前記記憶手段に記憶される各音の内から前記設定手段により設定された特定音長より短い音長の音を除外し、それ以外の音に基づいて前記設定手段により設定されたコード判定区間毎にコード判定するコード判定手段と
を具備することを特徴とするコード判定装置。
【請求項４】
曲を構成する各音を記憶しておき、記憶された各音の内から所定音長より短い音長の音を除外し、それ以外の音に基づいてコード判定区間毎にコード判定するコード判定処理をコンピュータで実行させることを特徴とするコード判定処理プログラム。
【請求項５】
前記コード判定処理は、記憶された各音の内から読み出した音が所定音長より短ければ、その読み出した音と同時に発音する他の音を記憶された各音の内から検索し、該当する音が存在する場合には、前記所定音長より短い音長の音を除外せずコード判定することを特徴とする請求項４記載のコード判定処理プログラム。
【請求項６】
曲を構成する各音を記憶する記憶処理と、
コード判定区間を設定すると共に、設定されたコード判定区間に対応させた特定音長を設定する設定処理と、
前記記憶処理にて記憶された各音の内から前記設定処理にて設定された特定音長より短い音長の音を除外し、それ以外の音に基づいて前記設定処理にて設定されたコード判定区間毎にコード判定するコード判定処理と
をコンピュータで実行させることを特徴とするコード判定処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばシーケンサ等に用いて好適なコード判定装置およびコード判定処理プログラムに関する。
【背景技術】
【０００２】
曲を構成する各音を表す曲データについてコード判定する装置が知られている。この種の装置として、例えば特許文献１には、消音タイミングが一致する複数の音符がある毎にコード判定したり、拍タイミング毎に２つ以上の音符が存在するか否かを判断し、存在する場合にそれら音符の音名に基づき拍毎にコード判定するものが開示されている。
【０００３】
【特許文献１】特開２０００−２５９１５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の装置では、コード判定する範囲にある音の全てをコード判定対象音にしている為、例えば経過音や装飾音のように、本来、コード判定には不要な音までもコード判定の対象に含めてしまう結果、稀に不正確なコード判定を行ってしまうという弊害が生じている。
【０００５】
そこで本発明は、上述した事情に鑑みてなされたもので、正確なコード判定を行うことができるコード判定装置およびコード判定処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、曲を構成する各音を記憶する記憶手段と、前記記憶手段に記憶される各音の内から所定音長より短い音長の音を除外し、それ以外の音に基づいてコード判定区間毎にコード判定するコード判定手段とを具備することを特徴とする。
【０００７】
上記請求項１に従属する請求項２に記載の発明では、前記コード判定手段は、前記記憶手段から読み出した音が所定音長より短ければ、その読み出した音と同時に発音する他の音を前記記憶手段から検索し、該当する音が存在する場合には、前記所定音長より短い音長の音を除外せずコード判定することを特徴とする。
【０００８】
請求項３に記載の発明では、曲を構成する各音を記憶する記憶手段と、コード判定区間を設定すると共に、設定されたコード判定区間に対応させた特定音長を設定する設定手段と、前記記憶手段に記憶される各音の内から前記設定手段により設定された特定音長より短い音長の音を除外し、それ以外の音に基づいて前記設定手段により設定されたコード判定区間毎にコード判定するコード判定手段とを具備することを特徴とする。
【０００９】
請求項４に記載の発明では、曲を構成する各音を記憶しておき、記憶された各音の内から所定音長より短い音長の音を除外し、それ以外の音に基づいてコード判定区間毎にコード判定するコード判定処理をコンピュータで実行させることを特徴とする。
【００１０】
上記請求項４に従属する請求項５に記載の発明では、前記コード判定処理は、記憶された各音の内から読み出した音が所定音長より短ければ、その読み出した音と同時に発音する他の音を記憶された各音の内から検索し、該当する音が存在する場合には、前記所定音長より短い音長の音を除外せずコード判定することを特徴とする。
【００１１】
請求項６に記載の発明では、曲を構成する各音を記憶する記憶処理と、コード判定区間を設定すると共に、設定されたコード判定区間に対応させた特定音長を設定する設定処理と、前記記憶処理にて記憶された各音の内から前記設定処理にて設定された特定音長より短い音長の音を除外し、それ以外の音に基づいて前記設定処理にて設定されたコード判定区間毎にコード判定するコード判定処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１２】
請求項１、４に記載の発明によれば、曲を構成する各音を記憶しておき、記憶された各音の内から所定音長より短い音長の音を除外し、それ以外の音に基づいてコード判定区間毎にコード判定するので、経過音や装飾音をコード判定の対象に含めずに正確なコード判定を行うことができる。
【００１３】
請求項２、５に記載の発明によれば、記憶された各音の内から読み出した音が所定音長より短ければ、その読み出した音と同時に発音する他の音を記憶された各音の内から検索し、該当する音が存在する場合には、前記所定音長より短い音長の音を除外せずコード判定するので、スタッカートなどの音長の短い和音を検出でき、正確なコード判定を行うことができる。
【００１４】
請求項３、６に記載の発明によれば、コード判定区間とこれに対応させた特定音長とを設定すると、記憶された各音の内から特定音長より短い音長の音を除外し、それ以外の音に基づいて、設定されたコード判定区間毎にコード判定するので、設定されるコード判定区間に応じてコード判定に不要な音を除外でき、これにより正確なコード判定を行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．構成
図１は、本発明の実施の一形態であるコード判定装置の全体構成を示すブロック図である。この図に示すコード判定装置は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、操作部４、表示部５およびＭＩＤＩインタフェース６から構成される。ＣＰＵ１は、操作部４が発生するスイッチイベントに応じて装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。ＲＯＭ２は、ＣＰＵ１にロードされる各種制御プログラムの他、後述するコードタイプ判定テーブルＣＴＤＴを記憶する。なお、ここで言う各種制御プログラムとは、後述のメインルーチン、ピッチクラス抽出処理、和音処理およびコード判定処理を含む。
【００１６】
ＲＯＭ２に記憶されるコードタイプ判定テーブルＣＴＤＴとは、図２に示すように、コードタイプＣｈｏｒｄＴｙｐｅ［０］〜［ｋ］毎のコードパターンデータを記憶したテーブルであり、ポインタｋで指定されるコードタイプＣｈｏｒｄＴｙｐｅ［ｋ］のコードパターンデータを発生する。
コードパターンデータとは、ＭＳＢからＬＳＢにそれぞれＣ音からＢ音までの１２音（Ｃ，Ｃ＃，Ｄ，Ｄ＃，Ｅ，Ｆ，Ｆ＃，Ｇ，Ｇ＃，Ａ，Ａ＃，Ｂ）を割当て、その内で和音構成音（音名）に対応するビット位置を「１」とした１２ビット長のパターンである。例えば、コードタイプＣｈｏｒｄＴｙｐｅ［０］では、コードタイプ「メジャ」の和音構成音「Ｃ（ド）」、「Ｅ（ミ）」、「Ｇ（ソ）」を表すコードパターンデータ「１０００１００１００００」を発生するようになっている。
【００１７】
ＲＡＭ３は、ワークエリアおよびデータエリアを備える。ＲＡＭ３のワークエリアには、ＣＰＵ１の処理に用いられる各種レジスタ・フラグデータが一時記憶される。一方、ＲＡＭ３のデータエリアには、曲データＭＤ、ピッチクラステーブルＰＣＴおよび判定コードＣｈｏｒｄ［０］〜［ｎ］が格納される。
曲データＭＤは、ＭＩＤＩインタフェース６を介して電子楽器７から供給されるＭＩＤＩ形式のデータである。すなわち、図３に図示するように、曲データＭＤは曲進行順に配列されるイベントＥｖｅｎｔＤａｔａ［０］〜［Ｎ］および曲の終わりを表すデータＥＮＤから構成される。一つのイベントＥｖｅｎｔＤａｔａは、絶対時間方式で表現されるイベントタイミングＴｉｍｅ、音長ＧＴｉｍｅ、ノートオン／オフ等表すイベントデータＤａｔａ、ノートナンバＮｏｔｅ、チャンネル番号ＣＨおよびベロシティＶｅｌを有する。
【００１８】
ＲＡＭ３のデータエリアに格納されるピッチクラステーブルＰＣＴは、図４に図示するように、拍単位（または小節単位）のコード判定区間を表す拍番号（または小節番号）ｘと、Ｃ音からＢ音までの１２音に対応した「０」〜「１１」の音名番号ｙとに対応するレジスタＰｃｌａｓｓ［ｘ］［ｙ］から構成される。
後述するように、ＣＰＵ１は曲データＭＤ中から拍番号（または小節番号）ｘに対応するコード判定区間毎に、所定以上（例えば８分音符長）の音長ＧＴｉｍｅを有するノートオンイベントの音符の有無を判断し、該当する音符が存在しない場合には、ピッチクラステーブルＰＣＴ中の対応するレジスタＰｃｌａｓｓ［ｘ］［ｙ］に「０」をセットし、一方、該当する音符が存在する場合には、その音符の音名に対応する音名番号ｙのレジスタＰｃｌａｓｓ［ｘ］［ｙ］に「１」をセットするようになっている。
【００１９】
したがって、ピッチクラステーブルＰＣＴは、コード判定区間毎に存在するコード判定対象音の音名を表す。例えば図４に図示する一例のピッチクラステーブルＰＣＴが拍単位のコード判定区間を表す場合、第１拍目には「Ｃ音」（レジスタＰｃｌａｓｓ［１］［０］）および「Ｄ音」（レジスタＰｃｌａｓｓ［１］［０］）のコード判定対象音が存在することを表している。
【００２０】
次に、再び図１を参照して実施形態の構成について説明を進める。操作部４は、各種操作スイッチを備え、ユーザのスイッチ操作に応じたスイッチイベントを発生する。この操作部４には、図示されていないが、例えばコード判定する曲データＭＤを選択する曲選択スイッチ、コード判定区間を拍単位または小節単位のいずれにするかを設定する区間選択スイッチあるいは次の曲データについてコード判定を継続するか否かを指定するコード判定継続スイッチ等が設けられている。
【００２１】
表示部５は、ＣＰＵ１から供給される表示制御信号に応じて、例えばコード判定を行う曲データＭＤを表示画面に楽譜表示したり、その楽譜表示に併せてコード判定区間毎のコード判定結果を画面表示する。ＭＩＤＩインタフェース６は、ＣＰＵ１の制御の下に、外部の電子楽器７とＭＩＤＩデータ形式の曲データＭＤを授受する。ＭＩＤＩインタフェース６を介して電子楽器７から取込んだ曲データＭＤは、前述したＲＡＭ３のデータエリアにストアされる。
【００２２】
Ｂ．動作
次に、図５〜図８を参照して上記構成による実施形態の動作を説明する。以下では、最初に概略動作としてＣＰＵ１が実行するメインルーチンの動作について述べた後、このメインルーチンを構成するピッチクラス抽出処理、和音処理およびコード判定処理の各動作を説明する。
【００２３】
（１）メインルーチンの動作
装置電源の投入に応じて、ＣＰＵ１は図５に図示するメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ３のワークエリアに設けられる各種レジスタ・フラグデータをイニシャライズする初期化処理を行う。次いで、ステップＳＡ２では、ＭＩＤＩインタフェース６を介して電子楽器７から曲データＭＤを取込み、ＲＡＭ３のデータエリアに格納する。
続いて、ステップＳＡ３では、曲データＭＤを構成する各音の内から経過音や装飾音を除外し、所定音長以上でノートオンされる音をコード判定対象音としてコード判定区間毎に抽出し、その音名をピッチクラステーブルＰＣＴ（図４参照）に登録するピッチクラス抽出処理を実行する。
【００２４】
そして、ステップＳＡ４では、ピッチクラス抽出処理にて生成したピッチクラステーブルＰＣＴを参照してコード判定区間毎にコード判定するコード判定処理を実行する。この後、ステップＳＡ５に進み、例えばコード判定した曲データＭＤを楽譜表示したり、その楽譜表示に併せてコード判定結果を画面表示するなどの、その他の処理を実行する。
次いで、ステップＳＡ６では、次の曲データについてコード判定を継続するか否かを指定するコード判定継続スイッチが操作されるまで待機し、当該スイッチが操作されると、判断結果が「ＹＥＳ」となり、上述のステップＳＡ２に処理を戻す。以後、上述したステップＳＡ２〜ＳＡ５を繰り返し、次の曲データＭＤについてコード判定を繰り返す。
【００２５】
（２）ピッチクラス抽出処理の動作
次に、図６を参照してピッチクラス抽出処理の動作を説明する。上述したメインルーチンのステップＳＡ３（図５参照）を介して本処理が実行されると、ＣＰＵ１は図６に図示するステップＳＢ１に進み、曲データＭＤのイベントＥｖｅｎｔＤａｔａ［ｉ］を指定するポインタｉと、コード判定区間を指定するポインタｋとをゼロリセットする。なお、本実施形態では、コード判定区間を小節としているので、ポインタｋは小節番号を表す。
【００２６】
次いで、ステップＳＢ２では、ＲＡＭ３のデータエリアに格納された曲データＭＤからポインタｉに対応したイベントＥｖｅｎｔＤａｔａ［ｉ］の有無を判断する。ポインタｉに対応したイベントＥｖｅｎｔＤａｔａ［ｉ］が有れば、判断結果は「ＹＥＳ」になり、ステップＳＢ３に進み、そのイベントＥｖｅｎｔＤａｔａ［ｉ］がノートオンイベントであるか否かを判断する。ノートオンイベントであるか否かは、イベントＥｖｅｎｔＤａｔａ［ｉ］中のイベントデータＤａｔａを参照して判断する。
【００２７】
イベントデータＤａｔａがノートオンイベント以外であると、判断結果は「ＮＯ」になり、後述するステップＳＢ７に進む。一方、ノートオンイベントであれば、判断結果が「ＹＥＳ」になり、ステップＳＢ４に進む。ステップＳＢ４では、イベントＥｖｅｎｔＤａｔａ［ｉ］中の音長ＧＴｉｍｅが所定音長ＳＴｉｍｅより長いか否かを判断する。所定音長ＳＴｉｍｅとは、経過音や装飾音のように短い音長（例えば１６分音符長）を指す。ノートオンされる音の音長ＧＴｉｍｅが所定音長ＳＴｉｍｅより長ければ、判断結果は「ＹＥＳ」となり、ステップＳＢ５に進む。
これに対し、所定音長ＳＴｉｍｅより短いと、スタッカートなどの音長の短い和音である可能性もある為、判断結果が「ＮＯ」となり、ステップＳＢ６を介して和音検出する和音処理（後述する）を実行した後、ステップＳＢ７に進む。
【００２８】
次に、ステップＳＢ５では、所定音長以上でノートオンされるコード判定対象音の音名をピッチクラステーブルＰＣＴに登録する。すなわち、ポインタｋで表される小節番号と、イベントＥｖｅｎｔＤａｔａ［ｉ］中のノートナンバＮｏｔｅの音名（Ｎｏｔｅ  ｍｏｄ１２）とで指定されるレジスタＰｃｌａｓｓ［ｋ］［Ｎｏｔｅ  ｍｏｄ１２］に「１」をセットする。なお、Ｎｏｔｅ  ｍｏｄ１２とは、ノートナンバＮｏｔｅの１２の剰余値を表し、これにより音名に対応する値が算出される。
【００２９】
そして、ステップＳＢ７では、ポインタｉをインクリメントして歩進させ、続くステップＳＢ８では、イベントＥｖｅｎｔＤａｔａ［ｉ］中のイベントタイミングＴｉｍｅが小節終端時間ＢａｒＥｎｄをより小さいか否か、つまりコード判定区間を超えたかどうかを判断する。コード判定区間を超えていなければ、判断結果は「ＹＥＳ」になり、上述したステップＳＢ２に処理を戻す。
これに対し、コード判定区間を超えると、判断結果が「ＮＯ」になり、ステップＳＢ９に進み、ポインタｋの小節番号を歩進させた後、上述のステップＳＢ２に処理を戻す。
【００３０】
以後、ポインタｉで指定される曲データＭＤのイベントＥｖｅｎｔＤａｔａ［ｉ］が曲終端を表すデータＥＮＤに達するまで上述のステップＳＢ２〜ＳＢ９を繰り返す。これにより、曲データＭＤを構成する各音の内、経過音や装飾音を除外した音の音名がコード判定区間毎にピッチクラステーブルＰＣＴに登録される。
また、ポインタｉに応じて曲データＭＤから読み出された音が所定音長ＳＴｉｍｅ（例えば１６分音符長）より短い経過音や装飾音の場合には、上述したように、スタッカートなどの音長の短い和音である可能性もある為、後述の和音処理にて和音検出される。
【００３１】
（３）和音処理の動作
次に、図７を参照して和音処理の動作を説明する。上記ピッチクラス抽出処理のステップＳＢ６（図６参照）を介して本処理が実行されると、ＣＰＵ１は図７に図示するステップＳＣ１に処理を進め、ピッチクラス抽出処理で指定された現イベントＥｖｅｎｔＤａｔａ［ｉ］中のイベントタイミングＴｉｍｅを、レジスタＴｉｍｅＢｕｆにストアする。続いて、ステップＳＣ２では、ピッチクラス抽出処理で設定されたポインタｉをレジスタｉＮｏｗにストアする。
次いで、ステップＳＣ３〜ＳＣ５では、ポインタｉを歩進させながら、現イベントと同一のイベントタイミングＴｉｍｅを有するノートオンイベントを検索する。つまり、現イベント以降から現イベントの音と同時に発音する音を探し出す。該当する音が見つかれば、ステップＳＣ５の判断結果が「ＹＥＳ」になり、後述のステップＳＣ１０に進む。
【００３２】
一方、現イベント以降に、現イベントの音と同時に発音する音が見つからなければ、上記ステップＳＣ４の判断結果が「ＮＯ」になり、ステップＳＣ６に進み、レジスタｉＮｏｗに退避格納しておいた現イベントのポインタ値を、ポインタｉにセットする。続いて、ステップＳＣ７〜ＳＣ９では、ポインタｉをデクリメントさせながら、現イベントと同一のイベントタイミングＴｉｍｅを有するノートオンイベントを検索する。つまり、現イベント以前から現イベントの音と同時に発音する音を探し出す。該当する音が見つからなければ、和音成立しない為、ステップＳＣ８の判断結果が「ＮＯ」になり、本処理を完了させる。
【００３３】
これに対し、現イベント以前から現イベントの音と同時に発音する音が見つかると、ステップＳＣ９の判断結果が「ＹＥＳ」になり、ステップＳＣ１０に進む。ステップＳＣ１０では、現イベントの音と同時に発音する音の音名（Ｎｏｔｅ  ｍｏｄ１２）をピッチクラステーブルＰＣＴに登録する。すなわち、ポインタｋで表される小節番号とＮｏｔｅ  ｍｏｄ１２とで指定されるレジスタＰｃｌａｓｓ［ｋ］［Ｎｏｔｅ  ｍｏｄ１２］に「１」をセットして本処理を終える。
【００３４】
このように、和音処理では、前述のピッチクラス抽出処理において、例えば経過音や装飾音として見做された所定音長ＳＴｉｍｅより短い音であっても、その音と同時に発音する音が存在する場合には、それら複音同時発音する各音の音名をピッチクラステーブルＰＣＴに登録する。これにより、スタッカートなどの音長の短い和音であっても検出し得るようになっている。
【００３５】
（４）コード判定処理の動作
次に、図８を参照してコード判定処理の動作を説明する。前述したメインルーチンのステップＳＡ４（図５参照）を介して本処理が実行されると、ＣＰＵ１は図８に図示するステップＳＣ１に処理を進め、ポインタｉをゼロリセットする。次いで、ステップＳＣ２では、ピッチクラステーブルＰＣＴに登録された各コード区間毎の音名の内、ポインタｉで指定されるコード判定区間の音名（レジスタＰｃｌａｓｓ［ｉ］［０］〜［１１］）を読み出す。続いて、ステップＳＤ３では、ポインタｋおよびレジスタＰｅｒをゼロリセットすると共に、バッファｋＢｕｆに初期値「−１」をストアする。
【００３６】
ステップＳＤ４では、ＲＯＭ２に記憶されるコードタイプ判定テーブルＣＴＤＴからポインタｋで指定されるコードタイプＣｈｏｒｄＴｙｐｅ［ｋ］のコードパターンデータを読み出し、このコードパターンデータと上記ステップＳＤ２において読み出したレジスタＰｃｌａｓｓ［ｉ］［０］〜［１１］との一致率を算出する。
一致率とは、レジスタＰｃｌａｓｓ［ｉ］［０］〜［１１］を１２ビットのビットパターンと見做し、そのビットパターンとコードパターンデータとで共に「１」が立つビット位置の一致数を、音名検出の総数（ビットパターン中の「１」の数）で除算したものである。したがって、例えば一致数が「３」で、音名検出の総数が「３」の場合には、一致率は「１（１００％）」となる。なお、一致数が「０」もしくは音名検出の総数が「０」であると、一致率は「０（０％）」となり、ノンコード（和音不成立）と見做す。
【００３７】
次いで、ステップＳＤ５では、上記ステップＳＤ４にて算出した一致率がレジスタＰｅｒの値より大きいか否かを判断する。最初のパスでは、レジスタＰｅｒはゼロリセットされているので、判断結果は「ＹＥＳ」になり、ステップＳＤ６に進み、レジスタＰｅｒに一致率をストアすると共に、レジスタｋｂｕｆにポインタｋの値をストアする。そして、ステップＳＤ７に進み、ポインタｋを歩進させる。続いて、ステップＳＤ８では、歩進されたポインタｋが、コードタイプ判定テーブルＣＴＤＴに登録されるコード数（コードタイプＣｈｏｒｄＴｙｐｅの総数）を超えたか、つまり、全てのコードタイプについて一致率を算出し終えたかどうかを判断する。
【００３８】
全てのコードタイプについて一致率を算出し終えていなければ、上記ステップＳＤ８の判断結果は「ＮＯ」になり、ステップＳＤ４に処理を戻して一致率を算出する。そして、算出した一致率がレジスタＰｅｒに格納される一致率より大きければ、ステップＳＤ５の判断結果が「ＹＥＳ」となり、ステップＳＤ６に進み、新たに算出した一致率をレジスタＰｅｒに更新登録すると共に、更新した一致率のコードタイプＣｈｏｒｄＴｙｐｅを指定するポインタｋをレジスタｋｂｕｆに保存する。
【００３９】
以後、全てのコードタイプについて一致率を算出し終えるまでステップＳＤ４〜ＳＤ８を繰り返すことによって、最も高い一致率がレジスタＰｅｒに格納され、その最も高い一致率のコードタイプＣｈｏｒｄＴｙｐｅを指定するポインタｋがレジスタｋｂｕｆに格納されることになる。
そして、全てのコードタイプについて一致率を算出し終え、ポインタｉで指定されるコード判定区間についてコード判定が完了すると、ステップＳＤ８の判断結果が「ＹＥＳ」になり、ステップＳＤ９に進む。ステップＳＤ９では、レジスタｋｂｕｆの値を判定コードＣｈｏｒｄ［ｉ］にストアする。
【００４０】
次に、ステップＳＤ１０では、ポインタｉを歩進させ、続くステップＳＤ１１では、歩進されたポインタｉで指定されるコード判定区間が終端ＥＮＤを超えたか否かを判断する。終端ＥＮＤを超えていなければ、判断結果は「ＮＯ」になり、上述のステップＳＤ２に処理を戻す。この後、ポインタｉで指定されるコード判定区間が終端ＥＮＤを超えるまで上述したステップＳＤ２〜ＳＤ１１を繰り返す。そして、コード判定区間が終端ＥＮＤを超えると、ステップＳＤ１１の判断結果が「ＹＥＳ」になり、本処理を完了させる。
【００４１】
このように、本実施形態では、曲データＭＤを構成する各音の内から、所定音長より短い音長の音を除外し、それ以外の音についてコード判定区間毎に音名検出してコード判定するので、経過音や装飾音をコード判定の対象に含めずに正確なコード判定を行うことが可能になる。
また、本実施形態では、所定音長より短い経過音や装飾音であっても、その音と同時に発音する音が存在する場合には、それら複音同時発音する各音の音名を検出してコード判定するので、スタッカートなどの音長の短い和音を検出することが可能になる。
【００４２】
なお、上述した実施形態では、所定音長より短い音長の音をコード判定の対象から一意的に除外するようにしたが、これに限らず、ベロシティ（音量）が所定値以下の音をコード判定の対象から除外したり、又は所定音長より短い音長の音であってもベロシティ（音量）が所定値以上であれば、コード判定の対象に含めるようする等、ユーザが意図する音を個別にコード判定対象としたり除外させたりする態様としても構わない。この場合、コード判定の正確性には欠けるが和声的にユーザの望む響きのコードを得ることが可能になる。
【００４３】
また、本実施形態では、コード判定の対象に含めるか否かの判定基準として固定的な音長を定めたが、これに限らず、例えばコード判定区間が小節単位の場合には８分音符長以下の音をコード判定の対象から除外させ、コード判定区間が拍単位の場合には１６分音符長以下の音をコード判定の対象から除外させる等、コード判定区間に応じて判定基準の音長を異ならせることも可能である。このようにすれば、設定されるコード判定区間に応じてコード判定に不要な音を除外でき、これにより正確なコード判定を行うことができる。
【図面の簡単な説明】
【００４４】
【図１】本発明による実施の一形態の構成を示すブロック図である。
【図２】コードタイプ判定テーブルＣＴＤＴの構成を示す図である。
【図３】曲データＭＤの構成を示す図である。
【図４】ピッチクラステーブルＰＣＴの構成を示す図である。
【図５】メインルーチンの動作を示すフローチャートである。
【図６】ピッチクラス抽出処理の動作を示すフローチャートである。
【図７】和音処理の動作を示すフローチャートである。
【図８】コード判定処理の動作を示すフローチャートである。
【符号の説明】
【００４５】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  操作部
５  表示部
６  ＭＩＤＩインタフェース
７  電子楽器
【図１】
2006106313.tif 000003
【図２】
2006106313.tif 000004
【図３】
2006106313.tif 000005
【図４】
2006106313.tif 000006
【図５】
2006106313.tif 000007
【図６】
2006106313.tif 000008
【図７】
2006106313.tif 000009
【図８】
2006106313.tif 000010