(57)【要約】【課題】曲の進行に合わせたコード進行情報を正確かつ容易に作成できるコード抽出装置を提供すること。【解決手段】コード抽出装置１のＣＰＵ１０は、コード譜から、基音及び３度の表記以外の文字列を除去し、除去されたコード譜内の所定範囲（改行コード、タブコード、または特定の記号文字列などで区切られた範囲）に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を歌詞を表わす文字情報として識別し、基音及び３度の表記以外の文字列を除去されたコード譜内の文字情報から、識別された歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出する。【選択図】図４
2013190694.tif 000002
【特許請求の範囲】
【請求項１】
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出装置であって、
前記コード譜から、基音及び３度の表記以外の文字列を除去する文字列除去手段と、
前記文字列除去手段により前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別手段と、
前記文字列除去手段により前記文字列を除去されたコード譜内の文字情報から、前記歌詞識別手段により識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出手段と、
を備えるコード抽出装置。
【請求項２】
請求項１に記載のコード抽出装置において、
前記文字列除去手段はさらに、基音（１度）と３度と５度の３音で構成される和音コードに付加される６度、７度、９度、１１度、又は１３度の音を表わす文字列、及び和音コードのベース音が基音と異なる場合に付加される文字列を除去するコード抽出装置。
【請求項３】
請求項１に記載のコード抽出装置において、
前記歌詞識別手段は、前記所定範囲に含まれる文字情報で表わされるコード名のコード構成音が、当該所定範囲の先頭の文字情報に基づいて決定される調の音階に含まれる場合に、前記所定の条件を満足すると判別するコード抽出装置。
【請求項４】
請求項３に記載のコード抽出装置において、
前記歌詞識別手段は、前記所定範囲の先頭の文字情報に基づいて決定される調の音階に含まれない場合には、当該コード名に基づいて前記調を再決定するとともに、当該再決定された調にて再度前記所定の条件を満足するか否か判別するコード抽出装置。
【請求項５】
請求項１に記載のコード抽出装置において、
前記読み出されたコード譜は、改行コード、タブコード及び特定の文字記号列の少なくともひとつが、前記所定範囲の間隔で挿入されているコード抽出装置。
【請求項６】
請求項１に記載のコード抽出装置においてさらに、
前記コード進行情報抽出手段により抽出されたコード進行情報を構成するコード名を表示する表示手段を有するコード抽出装置。
【請求項７】
請求項６に記載のコード抽出装置において、
前記表示手段はさらに、前記文字列除去手段にて除去された文字列及び前記歌詞識別手段にて前記歌詞を表わす文字情報として識別された文字情報を、前記コード進行情報を構成するコード名とは別の領域に表示するコード抽出装置。
【請求項８】
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出方法であって、
前記コード譜から、前記基音及び３度の表記以外の文字列を除去する文字列除去ステップと、
前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別ステップと、
前記文字列を除去されたコード譜内の文字情報から、前記識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出ステップと、
を含むコード抽出方法。
【請求項９】
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出装置として用いられるコンピュータに、
前記コード譜から、前記基音及び３度の表記以外の文字列を除去する文字列除去ステップと、
前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別ステップと、
前記文字列を除去されたコード譜内の文字情報から、前記識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード抽出装置、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
楽器を演奏する時の運指を利用者に提示するための各種の技術が提案されている。例えば、特許文献１には、ギターにおけるコードの押さえ方情報であるコードダイヤグラムを曲の進行に合わせて表示する技術が開示されている。この技術によれば、演奏者は表示されたコードダイヤグラムを確認しながらギターの演奏を行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２４１８７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１では、曲の進行に合わせたコード進行情報を予め記憶装置に記憶させておく必要があるため、音楽の専門知識を持った者がテンポ、拍子、調などを考慮したコード進行情報を予め作成しなければならなかった。よって、作成に時間がかかり十分な楽曲数を準備するためにはコスト的、時間的に困難であった。
【０００５】
そこで本発明は、曲の進行に合わせたコード進行情報を正確かつ容易に作成できるコード抽出装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一態様のコード抽出装置は、
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出装置であって、
前記コード譜から、基音及び３度の表記以外の文字列を除去する文字列除去手段と、
前記文字列除去手段により前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別手段と、
前記文字列除去手段により前記文字列を除去されたコード譜内の文字情報から、前記歌詞識別手段により識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出手段と、
を備える。
【発明の効果】
【０００７】
本発明によれば、曲の進行に合わせたコード進行情報を正確かつ容易に作成できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の第１及び第２実施形態にかかるコード抽出装置１のハードウェア構成を示す図である。
【図２】図２は、本発明の第１及び第２実施形態にかかるコード譜を示す図である。
【図３】図３は、本発明の第１実施形態にかかるコード抽出装置１において実行されるメインフローを示すフローチャートである。
【図４】図４は、本発明の第１実施形態にかかるコード抽出装置１において実行される和音コード抽出処理の第１の例を示すフローチャートである。
【図５】図５は、本発明の第１実施形態にかかるコード抽出装置１において実行される表示処理を示すフローチャートである。
【図６】図６は、本発明の第１実施形態にかかるコード譜を示す図である。
【図７】図７は、本発明の第１実施形態にかかるコード譜からテンションノート等を削除したことを示す図である。
【図８】図８は、本発明の第１実施形態にかかるコード譜から歌詞を含んだ和音コードを抽出したことを示す図である。
【図９】図９は、本発明の第１実施形態にかかるコード譜から歌詞を含まない和音コードを抽出したことを示す図である。
【図１０】図１０は、図９に示す和音コードにテンションノート等を付加したことを示す図である。
【図１１】図１１は、本発明の第１実施形態にかかるテンションノート等を示すテーブルである。
【図１２】図１２は、本発明の第１実施形態にかかる表示部の例を示す図である。
【図１３】図１３は、本発明の第１実施形態にかかるコード抽出装置１において実行される和音コード抽出処理の第２の例を示すフローチャートである。
【図１４】図１４は、本発明の第２実施形態にかかるコード抽出装置１において実行されるメインフローを示すフローチャートである。
【図１５】図１５は、本発明の第２実施形態にかかるコード抽出装置１において実行されるデータベース作成処理を示すフローチャートである。
【図１６】図１６は、本発明の第２実施形態にかかるコード譜を、歌詞と、歌詞を含む和音コードと、に分離したことを示す図である。
【図１７】図１７は、本発明の第２実施形態にかかるコード譜を、歌詞と、歌詞を含まない和音コードと、に分離したことを示す図である。
【図１８】図１８は、図１７に示す和音コードにテンションノート等を付加したことを示す図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【００１０】
図１は、本発明の第１及び第２実施形態にかかるコード抽出装置１のハードウェア構成を示す図である。図１に示すように、本実施の形態にかかるコード抽出装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０、入力部４０、及び表示部５０を備える。
【００１１】
ＣＰＵ１０は、コード抽出装置１全体の制御、読み込んだコード譜からのコード進行データの抽出、抽出したコード進行データに含まれるコード名に対応するコードダイヤグラムの表示部５０への表示制御など、種々の処理を実行する。
【００１２】
ＲＯＭ２０は、ＣＰＵ１０に実行させる種々の処理、例えば、コード進行データの抽出処理、コードダイヤグラムの表示制御処理などのプログラムを記憶する。また、当該プログラムの実行で参照されるテーブルを記憶する。ＲＡＭ３０は、ＲＯＭ２０から読み出されたプログラムや、処理の過程で一時的に生じたデータを記憶する。
【００１３】
入力部４０は、使用者によるコード譜の操作入力を受け付け、表示部５０は、コード譜とコードの押さえ方の情報であるコードダイヤグラムを表示する。
【００１４】
図２は、本発明の第１及び第２実施形態にかかるコード譜を示す図である。ここで、コード譜とは、曲のコード進行を表すコード名（以下、「和音コード」とする）と歌詞とからなる文字情報である。
【００１５】
本発明の第１及び第２実施形態にかかるコード譜は、文字情報のみで構成されるプレーンテキスト形式である。図２（ａ）〜（ｄ）に示すように、コード譜は、先頭行に曲のタイトル、次行とその次の行に和音コードと歌詞とをそれぞれ有しており、さらに次の行以降に、和音コードの行と歌詞の行とを連続して有している。例えば、図２（ａ）の例では、「Ｃ」、「Ｇ」、「Ａｍ」、「Ｆ」などが和音コードである。
【００１６】
なお、タイトルの行と和音コードの行との間、及び、和音コードの行と歌詞の行との間には、適宜空白行が含まれていてもよい。
【００１７】
［第１実施形態］
【００１８】
以下、本発明の第１実施形態にかかるコード抽出装置１において実行される処理について説明する。図３は、本発明の第１実施形態にかかるコード抽出装置１において実行されるメインフローを示すフローチャートである。
【００１９】
図３に示すようにコード抽出装置１のＣＰＵ１０は、コード抽出装置１の電源が投入されると、ＲＡＭ３０中のデータや、表示部５０の画像のクリアを含むイニシャル処理（初期化処理）を実行する（ステップＳ１）。イニシャル処理が終了すると、ＣＰＵ１０は、図４（又は、図１３）を参照して後述する和音コード抽出処理を実行する（ステップＳ２）。和音コード抽出処理が終了すると、ＣＰＵ１０は、図５を参照して後述する表示処理を実行する（ステップＳ３）。表示処理が終了すると、ＣＰＵ１０は、メインフローを終了する。
【００２０】
図４は、本発明の第１実施形態にかかるコード抽出装置１において実行される和音コード抽出処理の第１の例を示すフローチャートである。
【００２１】
まず、ステップＳ１１でＣＰＵ１０は、コード譜を読み込む。具体的には、図２で示したコード譜を読み込む。また、コード譜は、入力部４０からプレーンテキスト形式で入力されたコード譜であってもよいし、ＣＤ−ＲＯＭ（図示せず）等の外部記憶にプレーンテキスト形式で記憶されたコード譜であってもよい。例えば、図６（ａ）又は（ｂ）に示すコード譜が読み込まれる。
【００２２】
ここで、図４の和音コード抽出処理においては、説明の便宜のため、図６（ａ）又は（ｂ）に示すように、和音コードの行と歌詞の行とが、それぞれ、２行ずつであるものとする。
【００２３】
図４に戻って、ステップＳ１２で、ＣＰＵ１０は、読み込まれたコード譜から、スペースに囲まれた文字列、もしくは、スペースと改行コードとに囲まれた文字列を抽出する。例えば、図６（ａ）を例とすると、「タイトル：△△△」、「Ｃ」、「Ｇ］、「Ｗｈｅｎ」、「ｍｅ」「Ｃ／Ｅ」等が抽出される。
【００２４】
図４に戻って、ステップＳ１３で、ＣＰＵ１０は、ステップＳ１２で抽出した文字列から、テンションノート１、テンションノート２、ベース音指定の文字列を削除する。
【００２５】
ここで、テンションノート１、テンションノート２とは、基音（１度）と３度と５度の３音で構成される和音コードに付加される６度、７度、９度、１１度、又は１３度の音であり、図１１に示される文字列で表される。例えば、「Ｃ７」は、「Ｃ、Ｅ、Ｇ、Ｂ♭」の４音で構成される和音コードであり、「Ｃ、Ｅ、Ｇ」が１度、３度、５度の３音であり、「Ｂ♭」が付加される７度の音である。「Ｃ、Ｅ、Ｇ」の３音では、和音コードは「Ｃ」と表現される。
【００２６】
したがって、ステップＳ１２で抽出した文字列に「Ｃ７」が存在すれば、ＣＰＵ１０は、「７」を削除して「Ｃ」とする。
【００２７】
また、ベース音指定の文字列とは、和音コードのベース音が基音と異なる場合に付加される文字列である。例えば、「Ｃ、Ｅ、Ｇ」の３音で構成される和音コードである「Ｃ」のベース音が「Ｃ」であれば、和音コードの表記は、そのまま「Ｃ」であるが、ベース音が「Ｇ」であれば、和音コードの表記は、「Ｃ／Ｇ」又は「ＣｏｎＧ」である。
【００２８】
したがって、ステップＳ１２で抽出した文字列に「Ｃ／Ｇ」又は「ＣｏｎＧ」が存在すれば、ＣＰＵ１０は、「／Ｇ」又は「ｏｎＧ」を削除して「Ｃ」とする。
【００２９】
ここで、ステップＳ１２の処理後の様子を図７に示す。図７（ａ）によれば、図６（ａ）に示したコード譜に存在した「Ｃ／Ｅ」のベース音指定の文字列である「／Ｅ」が削除され、「Ｃ」となっている。また、図７（ｂ）によれば、図６（ｂ）に示したコード譜に存在した「Ｇ７」のテンションノート１の文字列である「７」が削除され、「Ｇ」となっている。
【００３０】
図４に戻って、ステップＳ１４で、ＣＰＵ１０は、基音及び３度の表記以外の文字列があるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ１５に処理を移し、ＮＯの場合、ステップＳ１６に処理を移す。
【００３１】
ここで、基音は、図１１に示すように「Ｃ」〜「Ｂ」までの１７個で表現される。さらに、「Ｃ＃」と「Ｄ♭」とは異名同音であり、「Ｄ＃」と「Ｅ♭」、「Ｆ＃」と「Ｇ♭」、「Ｇ＃」と「Ａ♭」、「Ａ＃」と「Ｂ♭」も同様に異名同音である。よって、１２種類の音高に対して、１７通りの表現が可能となっている。
【００３２】
また、３度の表記とは、和音コードの３度の音を変化させる付加文字のことである。例えば、図１１に示す「ｍ」は、３度の音を長３度から短３度に変化させることを示している。具体例として、「Ｃｍ」とは、「Ｃ、Ｅ♭、Ｇ」の３音からなる和音コードであり、「Ｃ、Ｅ、Ｇ」からなる和音コードである「Ｃ」の基音から長３度離れた音である「Ｅ」を短３度離れた音である「Ｅ♭」に変化させた和音コードである。
【００３３】
図４に戻って、ステップＳ１５で、ＣＰＵ１０は、基音及び３度の表記以外の文字列を削除する（ただし、改行コードは残す）。
【００３４】
ステップＳ１５の処理後の様子を図８に示す。図８（ａ）によれば、図７（ａ）に存在する基音及び３度の表記のみが残っている。図８（ｂ）も同様である。
【００３５】
図４に戻って、ステップＳ１６で、ＣＰＵ１０は、最初の文字列を曲の調とする。具体的には、図８に示す基音及び３度の表記のみの文字列うち最初の文字列である「Ｃ」（ハ長調）を曲の調とする。
【００３６】
ステップＳ１７で、ＣＰＵ１０は、次の文字を和音コードとしたとき和音の構成音は曲の調の音階に乗っているか否かを判断する。具体的には、ＣＰＵ１０は、図示しない音階データベースと図示しないコードデータベースとを参照して判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、処理をステップＳ３７に移し、ＮＯの場合、処理をステップＳ２０に移す。
【００３７】
例えば、図８（ｂ）において、最初の文字列「Ｃ」の次の文字列である和音コード「Ｆ」の構成音は、曲の調であるハ長調の音階に乗っている。
【００３８】
ここで、和音コード「Ｆ」がハ長調の音階に乗っているか否かを判断する方法について説明する。図示しない音階データベースは、各調（１２種類の長調及び１２種類の短調）の音階の構成音を記憶しており、ハ長調の音階は、「Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ａ、Ｂ」で構成される。図示しないコードデータベースは、各和音コード（１２種類の長三和音及び１２種類の短三和音）の構成音を記憶しており、和音コード「Ｆ」の構成音は、「Ｃ、Ｆ、Ａ」である。したがって、和音コード「Ｆ」の構成音はハ長調の音階に含まれるので、ハ長調の音階に乗っていると判断される。この判断方法は、他の調及び他の和音コードの場合でも成立する。
【００３９】
図４に戻って、ステップＳ３７で、ＣＰＵ１０は、転調フラグをクリアし、ステップＳ１８で、ＣＰＵ１０は、次は改行コードであるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ１９に処理を移し、ＮＯの場合には、ステップＳ１７に処理を移す。
【００４０】
ステップＳ１９で、ＣＰＵ１０は、改行コードまでを和音コード名として保持する。具体的には、ＲＡＭ３０に改行コードまでを和音コード名として記憶する。
【００４１】
例えば、図８（ｂ）において、１行目の和音コード「Ｃ」、「Ｆ」、「Ｃ」は、全てハ長調の音階に乗っているので、ＲＡＭ３０に和音コード名として記憶される。
【００４２】
図４に戻って、ステップＳ２３で、ＣＰＵ１０は、次の行に文字列があるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は処理をステップＳ１７に移し、ＮＯの場合、処理をステップＳ２４に移す。
【００４３】
ここで、図８（ｂ）の２行目について説明する。２行目の最初の和音コードは、「Ａ」であるが、ハ長調の音階に乗らないので、ステップＳ１７でＮＯと判断される。
【００４４】
ステップＳ２０では、転調フラグが１か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は処理をステップＳ２２に移し、ＮＯの場合、処理をステップＳ２１に移す。
【００４５】
２行目の最初の和音コード「Ａ」を処理している時点では、転調フラグは１ではないので、ステップＳ２１に処理が移る。
【００４６】
ステップＳ２１では、ＣＰＵ２１この和音コード「Ａ」を新しい曲の調（イ長調）とする。また、転調フラグを１とする。その後、処理をステップＳ１７に移す。
【００４７】
さらに、「Ａ」の次の文字列は「Ｂ」であり、和音コード「Ｂ」は、イ長調の音階に乗らないので、ＣＰＵ１０は、ステップＳ１７でＮＯと判断し、ステップＳ２０に処理を移す。ステップＳ２０では、ＣＰＵ１０は、転調フラグを１と判断（転調が２回連続して行われたと判断）し、ステップＳ２２に処理を移す。
【００４８】
ステップＳ２２で、ＣＰＵ１０は、次の改行コードまでの文字列を破棄する。例えば、図８（ｂ）の２行目の「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ」を、和音コードではなく歌詞と識別し、改行コードを含めて破棄する。さらに、ステップＳ３８において、ＣＰＵ１０は、調を元の調（ハ長調）に戻す。その後、ＣＰＵ１０は、処理をステップＳ２３に移す。
【００４９】
ここで、図８（ｂ）の３行目について説明する。３行目の最初の和音コードは、「Ｆ」であり、ハ長調の音階に乗っている。また、その後の和音コードは「Ｃ」、「Ｇ」、「Ｃ」であり、いずれも、ハ長調の音階に乗っている。よって、３行目については、ステップＳ１７、ステップＳ３７及びステップＳ１８の処理が繰り返されて、ＲＡＭ３０に和音コードとして記憶される。この処理が終了した後の様子を図９（ｂ）に示す。図９（ｂ）によれば、図８（ｂ）の２行目が削除されて、和音コードのみが残っている。
【００５０】
図８（ａ）の場合は、和音コードの全てがハ長調の音階に乗るので、削除が行われず、そのまま和音コードとしてＲＡＭ３０に記憶される（図９（ａ）参照）。
【００５１】
ステップＳ２４では、ＣＰＵ１０は、ステップＳ１３で削除したテンションノート１、テンションノート２、及びベース音指定の文字列を該当箇所に再度付加する。具体的には、ＲＡＭ３０に記憶されている和音コードの該当箇所に付加する。
【００５２】
ステップＳ２４の処理後の様子を図１０に示す。図１０（ａ）によれば、ステップＳ１３で削除した「／Ｅ」が付加されて、「Ｃ／Ｅ」に戻っている。図１０（ｂ）も同様である。
【００５３】
以上、図４の和音コード抽出処理によって、図１０に示すように、コード譜から和音コードのみが抽出された。
なお、図４の和音コード抽出処理では、改行コードを認識して行単位で和音コードと歌詞とを区別しているが、これに限られず、特定の記号文字列やタブコードなどで区切られた範囲を単位として和音コードと歌詞とを区別してもよい。
【００５４】
図５は、本発明の第１実施形態にかかるコード抽出装置１において実行される表示処理を示すフローチャートである。
【００５５】
まず、ステップＳ２５で、ＣＰＵ１０は、コード譜を読み込む。この処理は、図４で上述したステップ１１と同様である。図５の表示処理では、図２（ａ）に示したコード譜を読み込むものとして説明する。
【００５６】
ステップＳ２６で、ＣＰＵ１０は、和音コード文字情報を読み込む。具体的には、ＲＡＭ３０に記憶されている和音コード文字情報を読み込む。図５の表示処理では、図２（ａ）に示したコード譜に対応する和音コード文字情報（図１０（ａ）参照）を読み込むものとして説明する。
【００５７】
ステップＳ２７で、ＣＰＵ１０は、拍子、テンポ、及び一行当たりの小節数の設定を行う。これらは、初期値としてコード抽出装置１に予め記憶されていてもよいし、また、コード抽出装置１に備えられた設定手段（図示せず）によって、使用者が設定してもよい。
【００５８】
第１実施形態では、拍子を４分の４（１小節に４分音符が４つである拍子）、テンポを６０（１分間に４分音符が６０個となるテンポ）、１行当たりの小節数を２小節として説明する。この場合、１行当たりの経過時間は、４×２×６０／６０＝８秒となる。
【００５９】
ステップＳ２８では、ＣＰＵ１０は、表示スタートボタン（図示せず）の入力があったか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ２９に処理を移し、ＮＯの場合には、ステップＳ２８に処理を移す。
【００６０】
ステップＳ２９では、ＣＰＵ１０は、１行目の和音コードに対応するコードダイヤグラムデータを読み込む。コードダイヤグラムデータは、コードの押さえ方を示す画像であるコードダイヤグラムに対応した画像ファイルであり、例えば、和音コード名と画像ファイル名とが対応付けられたコードダイヤグラムテーブル（図示せず）としてＲＯＭ２０に記憶されている。
【００６１】
コードダイヤグラムは、ギター、ウクレレ、及びキーボードなど、複数種類の楽器について、和音コードの演奏方法の画像を有している。例えば、ギターついての和音コードの演奏方法は、後述する図１２の第２表示領域５０２に示されるとおりである。演奏者は、コード抽出装置１が備える切り替えボタン（図示せず）を操作することで、コードダイヤグラムの画像の種類を楽器に応じて切り替えることができる。
【００６２】
ここで、図１０によれば、１行目の和音コードは、「Ｃ」、「Ｇ」、「Ａｍ」、「Ｆ」であるので、ＣＰＵ１０は、これらに対応する画像ファイルを読み込む。
【００６３】
ステップＳ３０で、ＣＰＵ１０は、コード譜の画面表示及びコードダイヤグラム画面の表示を行う。具体的には、図１２に示すように、表示部５０の第１表示領域５０１にコード譜を表示し、第２表示領域５０２に、コードダイヤグラムの表示を行う。図１２によれば、１行目の和音コードとこれに対応する歌詞とが太字で表示されており、現在演奏すべき箇所が強調表示されている。
【００６４】
ステップＳ３１で、ＣＰＵ１０は、和音コード一行分の時間が経過したか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ３２に処理を移し、ＮＯの場合には、ステップＳ３１に処理を移す。
【００６５】
ステップＳ３２では、ＣＰＵ１０は、次の和音コード行があるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ３３に処理を移し、ＮＯの場合には、表示処理を終了する。
【００６６】
ステップＳ３３では、ＣＰＵ１０は、次の和音コード行に対応するコードダイヤグラムデータを読み込む。
【００６７】
ステップＳ３４では、ＣＰＵ１０は、該当行のコード譜の画面表示及びコードダイヤグラム画面の表示を行う。該当行のコード譜の画面表示については、ＣＰＵ１０は、太字で強調表示する。
【００６８】
図１３は、本発明の第１実施形態にかかるコード抽出装置１において実行される和音コード抽出処理の第２の例を示すフローチャートである。
【００６９】
この第２の例では、最初に決定された調から一度別の調に転調してすぐに元の調に戻る場合に和音コードの行が削除されてしまうことを防止する処理を説明する（第１の例では転調が２回連続したことになり、和音コードの行が削除されてしまう）。
例えば、図２（ｃ）のコード譜によれば、和音コードが「Ｃ」〜「Ａｍ」までは、ハ長調の音階に乗っているが（調の音階に乗っているか否かの判断方法は、図４のステップＳ１７で説明したのと同様である）、「Ｄ」はハ長調の音階に乗らずに転調し、次の「Ｇ」でハ長調に戻っている。
【００７０】
まず、ＣＰＵ１０は、図４のステップＳ１１〜ステップＳ１６までの処理を行い、ステップＳ４７に処理を移す。
【００７１】
ステップＳ４７で、ＣＰＵ１０は、次の文字列を和音コードとしたとき、和音の構成音は曲の調の音階に乗っているか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ５１に処理を移し、ＮＯの場合には、ステップＳ４８に処理を移す。例えば、図２（ｃ）のコード譜の場合、次の文字列の和音コードが「Ｄ」の場合、ハ長調の音階に乗っていないので、ステップＳ４８に処理が移る。
【００７２】
ステップＳ４８で、ＣＰＵ１０は、仮転調フラグが１である否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ５４に処理を移し、ＮＯの場合には、ステップＳ４９に処理を移す。和音コードが「Ｄ」の場合、ＮＯと判断され、ステップＳ４９に処理が移る。
【００７３】
ステップＳ４９で、ＣＰＵ１０は、仮転調フラグを１にする。
【００７４】
ステップＳ５０で、ＣＰＵ１０は、この和音コード「Ｄ」を新しい曲の調の候補とする。ただし、まだ調は変更しない。その後、処理をステップＳ４７に移す。
【００７５】
図２（ｃ）のコード譜において、「Ｄ」の次の文字列は「Ｇ」であるので、ステップＳ４７において、和音コード「Ｇ」は、ハ長調の音階に乗っていると判断され、ステップＳ５１に処理が移る。
【００７６】
ステップＳ５１でＣＰＵ１０は、仮転調フラグが１である否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ５２に処理を移し、ＮＯの場合には、ステップＳ５３に処理を移す。和音コードが「Ｄ」の場合にステップＳ４９で仮転調フラグが１になっているので、ＣＰＵ１０は、ステップＳ５２に処理を移す。
【００７７】
ステップＳ５２で、ＣＰＵ１０は、仮転調フラグをクリアする。すなわち、ステップＳ５０における転調候補を破棄する。これにより、最初の調から一度転調してすぐに元の調に戻った場合に、２度の転調とみなされて和音コードの行が削除されてしまうことを防止できる。
【００７８】
ステップＳ５３で、ＣＰＵ１０は、次は改行コードであるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ５７に処理を移し、ＮＯの場合には、ステップＳ４７に処理を移す。
【００７９】
ステップＳ５７で、ＣＰＵ１０は、改行コードまでを和音コード名として保持する。具体的には、ＲＡＭ３０に改行コードまでを和音コード名として記憶する。
【００８０】
ステップＳ５４で、ＣＰＵ１０は、転調フラグが１であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ５８に処理を移し、ＮＯの場合には、ステップＳ５５に処理を移す。
【００８１】
ステップＳ５５で、ＣＰＵ１０は、ステップＳ５０で候補となった和音コードを新しい曲の調とする。さらに、転調フラグを１にする。
【００８２】
ステップＳ５６で、ＣＰＵ１０は、直近のステップＳ４７における和音コードの構成音は曲の新しい調の音階に乗っているか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は、ステップＳ４７に処理を移し、ＮＯの場合には、ステップＳ５８に処理を移す。
【００８３】
ステップＳ５８で、ＣＰＵ１０は、次の改行コードまでの文字列を和音コードではなく歌詞と識別して破棄する。さらに、ステップＳ６８で、ＣＰＵ１０は、調を元の調に戻す。その後、ＣＰＵ１０は、処理をステップＳ５９に移す。
【００８４】
ステップＳ５９で、ＣＰＵ１０は、次の行に文字列があるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ１０は処理をステップＳ４７に移し、ＮＯの場合、処理をステップＳ６０に移す。
【００８５】
ステップＳ６０の処理は、図４のステップＳ２４と同様である。
【００８６】
ここで、和音コード抽出処理の第２の例においても、図４の和音コード抽出処理の第１の例と同様に、図８（ｂ）における、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ」の行が削除されることを説明する。
【００８７】
ステップＳ４７で、次の文字列の和音コードは「Ａ」であり、ハ長調の音階に乗らないので、ステップＳ４８に移る。仮転調フラグは１ではないので、ステップＳ４９に移り、仮転調フラグが１になる。ステップＳ５０で、和音コード「Ａ」（イ長調）を新しい曲の調の候補とする（まだ調は変更しない）。その後、ステップＳ４７に移る。
【００８８】
ステップＳ４７では、次の文字列の和音コードは「Ｂ」であり、ハ長調の音階に乗らないので、ステップＳ４８に移る。仮転調フラグは１なので、ステップＳ５４に移る。転調フラグは１ではないので、ステップＳ５５に移り、ステップＳ５０で候補となった和音コード「Ａ」であるイ長調を新しい曲の調とし、転調フラグを１にする。ステップＳ５６では、直近のステップＳ４７における和音コード「Ｂ」の構成音は、イ長調の音階に乗っていないので、ステップＳ５８に移り、次に改行コードまでの文字列が破棄される。
【００８９】
このようにして、図８（ｂ）における、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ」の行が削除され、図９（ｂ）に示す和音コードが得られる。
【００９０】
図８（ａ）の和音コードの場合、全てハ長調の音階に乗るので、仮転調フラグが１とはならずに、ステップＳ４７、Ｓ５１、Ｓ５３、Ｓ５７、Ｓ５９の処理を繰り返し、図９（ａ）に示す和音コードが得られる。
【００９１】
以上、図１３の和音コード抽出処理によって、一旦転調してすぐに元の調に戻った場合に和音コードの行を削除することを防止できる。さらに、図１０に示すように、コード譜から和音コードのみが抽出される。
なお、図１３の和音コード抽出処理では、改行コードを認識して行単位で和音コードと歌詞とを区別しているが、これに限られず、特定の記号文字列やタブコードなどで区切られた範囲を単位として和音コードと歌詞とを区別してもよい。
【００９２】
［第２実施形態］
【００９３】
図１４は、本発明の第２実施形態にかかるコード抽出装置１において実行されるメインフローを示すフローチャートである。
【００９４】
図１４に示すようにコード抽出装置１のＣＰＵ１０は、コード抽出装置１の電源が投入されると、ＲＡＭ３０中のデータのクリアを含むイニシャル処理（初期化処理）を実行する（ステップＳ６１）。イニシャル処理が終了すると、ＣＰＵ１０は、図１５を参照して後述するデータベース作成処理を実行する（ステップＳ６２）。このデータベース作成処理は、データベース作成対象となるコード譜がなくなるまで繰り返し実行される（ステップＳ６３）。データベース作成対象となるコード譜がなくなると、ＣＰＵ１０は、後述するデータベース検索処理を実行する（ステップＳ６４）。データベース検索処理が終了すると、ＣＰＵ１０は、メインフローを終了する。
【００９５】
図１５は、本発明の第２実施形態にかかるコード抽出装置１において実行されるデータベース作成処理を示すフローチャートである。
【００９６】
図１５のステップＳ７１〜ステップＳ８４のうち、ステップＳ７５、Ｓ８２、Ｓ８４以外の処理は、図４のステップＳ１１〜Ｓ１４、Ｓ１６〜Ｓ２１、Ｓ２３と同様であるので、説明を省略する。
【００９７】
ステップＳ７５で、ＣＰＵ１０は、基音及び３度の表記以外の文字列を分離する（ただし、改行コードは残す）。これにより、図１６に示すように、基音及び３度の表記の文字列が和音コードとして一時的に分類され、基音及び３度の表記以外の文字列が歌詞として一時的に分類される。
【００９８】
ステップＳ８２で、ＣＰＵ１０は、次の改行コードまでの文字列を削除し、歌詞に転記する。例えば、図１６（ｂ）の和音コードの２行目の「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ」を、歌詞と識別し、改行コードを含めて削除して、歌詞に転記する。さらに、ステップＳ８２において、ＣＰＵ１０は、調を元の調（ハ長調）に戻す。その後、ＣＰＵ１０は、処理をステップＳ８３に移す。これにより、図１７に示すように、歌詞と和音コードとが正確に分離される。
【００９９】
ステップＳ８４では、ＣＰＵ１０は、ステップＳ７３で削除したテンションノート１、テンションノート２、及びベース音指定の文字列を該当箇所に再度付加する。具体的には、ＲＡＭ３０に記憶されている和音コードの該当箇所に付加する。
【０１００】
ステップＳ８４の処理後の様子を図１８に示す。図１８（ａ）によれば、ステップＳ７３で削除した「／Ｅ」が付加されて、「Ｃ／Ｅ」に戻っている。図１０（ｂ）も同様に、ステップＳ７３で削除した「７」が付加されて「Ｇ７」に戻っている。
【０１０１】
ステップＳ８５で、ＣＰＵ１０は、歌詞と和音コードをそれぞれ検索用データベースに記憶する。歌詞は、歌詞データベースに記憶し、和音コードは、和音コードデータベースに記憶する。歌詞データベース及び和音コードデータベースはＲＡＭ３０の所定領域に存在する。
【０１０２】
以上、図１５のデータベース作成処理によって、図１８に示すように、コード譜から歌詞と和音コードとが正確に分離されて、各データベースに記憶された。
なお、図１５のデータベース作成処理では、改行コードを認識して行単位で和音コードと歌詞とを区別しているが、これに限られず、特定の記号文字列やタブコードなどで区切られた範囲を単位として和音コードと歌詞とを区別してもよい。
【０１０３】
ここで図１４のステップＳ６４の処理であるデータベース検索処理について説明する。
【０１０４】
まず、ＣＰＵ１０は、音声入力があるか否かを判断する。具体的には、コード抽出装置１が備える集音装置（図示せず）から音声入力があるか否かを判断する。例えば、音声入力があった場合には、ＣＰＵ１０は、所定時間音声を取り込み、音声データをＲＡＭ３０に記憶する。
【０１０５】
続いて、ＣＰＵ１０は、入力音声からメロディ（音高データ）を抽出し、抽出したメロディから、コード進行を推定し、入力音声から音声認識により歌詞を抽出する。
【０１０６】
続いて、ＣＰＵ１０は、推定したコード進行に基づいて、和音コードデータベースを検索する。また、ＣＰＵ１０は、抽出した歌詞に基づいて、歌詞データベースを検索する。
【０１０７】
さらに、ＣＰＵ１０は、歌詞及びコード進行の一致度を算出して、一致度に基づいて楽曲を推定する。例えば、歌詞及びコード進行の一致度が高い順に表示部５０に表示することで、楽曲を推定する。
データベース検索処理について説明は以上である。
【０１０８】
ここで、本発明の第１及び第２実施形態にかかるコード抽出装置１のハードウェア構成の変形例について説明する。
【０１０９】
当該変形例では、図１を参照して説明したハードウェア構成に加えて、ＣＰＵ１０は、通信部を介して、インターネットと通信可能に連結されている。これにより、ＣＰＵ１０は、通信部を介して、インターネット上に存在するプレーンテキストであるコード譜をダウンロードして、ＲＡＭ３０に記憶する。さらに、ＣＰＵ１０は、記憶されたコード譜を読み込むことによって、上述の和音コード抽出処理、表示処理を実行することにより、上述したようにコードダイヤグラムを表示する。
【０１１０】
第１実施形態のコード抽出装置１のＣＰＵ１０は、コード譜から、基音及び３度の表記以外の文字列を除去し、除去されたコード譜内の所定範囲（改行コード、タブコード、または特定の記号文字列などで区切られた範囲）に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を歌詞を表わす文字情報として識別し、基音及び３度の表記以外の文字列を除去されたコード譜内の文字情報から、識別された歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出する。
したがって、歌詞とコード名とを正確に識別できるので、コード名を正確かつ容易に抽出できる。
【０１１１】
第１実施形態のコード抽出装置１のＣＰＵ１０は、基音（１度）と３度と５度の３音で構成される和音コードに付加される６度、７度、９度、１１度、又は１３度の音を表わす文字列、及び和音コードのベース音が基音と異なる場合に付加される文字列を除去する。
したがって、基音及び３度の表記のみに基づいてコード名を抽出できるので、コード名の抽出処理を容易に行うことができる。
【０１１２】
第１実施形態のコード抽出装置１のＣＰＵ１０は、所定範囲に含まれる文字情報で表わされるコード名のコード構成音が、当該所定範囲の先頭の文字情報に基づいて決定される調の音階に含まれる場合に、所定の条件を満足すると判別する。
したがって、コード名のコード構成音が、決定された調の音階に含まれる場合に、当該コード名が歌詞と判断されてしまうこと、を防止できる。
【０１１３】
第１実施形態のコード抽出装置１のＣＰＵ１０は、所定範囲に含まれる文字情報で表わされるコード名のコード構成音が、当該所定範囲の先頭の文字情報に基づいて決定される調の音階に含まれない場合には、当該コード名に基づいて調を再決定するとともに、当該再決定された調にて再度所定の条件を満足するか否か判別する。
したがって、コード名のコード構成音が、再決定された調の音階に含まれる場合に、当該コード名が歌詞と判断されてしまうこと、を防止できる。
【０１１４】
第１実施形態のコード抽出装置１のコード譜には、改行コード、タブコード及び特定の文字記号列の少なくともひとつが、所定範囲の間隔で挿入されている。
したがって、コード譜において所定範囲に含まれる文字列の抽出が容易になる。
【０１１５】
第１実施形態のコード抽出装置１は、抽出されたコード進行情報を構成するコード名を表示する表示装置５０を有する。また、表示装置５０はさらに、除去された文字列及び歌詞を表わす文字情報として識別された文字情報を、コード進行情報を構成するコード名とは別の領域に表示する。
【０１１６】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【０１１７】
第１実施形態においては、コードダイヤグラムを和音コードの一行ごとに表示したが、これに限られず、曲中で使用される全ての和音コードに対応するコードダイヤグラムを一括に表示してもよい。
【０１１８】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段などより構成される全体的な装置を意味するものとする。
【０１１９】
以上、本発明のいくつかの実施形態について説明したが、これらの実施形態は、例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１２０】
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
［付記１］
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出装置であって、
前記コード譜から、基音及び３度の表記以外の文字列を除去する文字列除去手段と、
前記文字列除去手段により前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別手段と、
前記文字列除去手段により前記文字列を除去されたコード譜内の文字情報から、前記歌詞識別手段により識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出手段と、
を備えるコード抽出装置。
［付記２］
付記１に記載のコード抽出装置において、
前記文字列除去手段はさらに、基音（１度）と３度と５度の３音で構成される和音コードに付加される６度、７度、９度、１１度、又は１３度の音を表わす文字列、及び和音コードのベース音が基音と異なる場合に付加される文字列を除去するコード抽出装置。
［付記３］
付記１に記載のコード抽出装置において、
前記歌詞識別手段は、前記所定範囲に含まれる文字情報で表わされるコード名のコード構成音が、当該所定範囲の先頭の文字情報に基づいて決定される調の音階に含まれる場合に、前記所定の条件を満足すると判別するコード抽出装置。
［付記４］
付記３に記載のコード抽出装置において、
前記歌詞識別手段は、前記所定範囲の先頭の文字情報に基づいて決定される調の音階に含まれない場合には、当該コード名に基づいて前記調を再決定するとともに、当該再決定された調にて再度前記所定の条件を満足するか否か判別するコード抽出装置。
［付記５］
付記１に記載のコード抽出装置において、
前記読み出されたコード譜は、改行コード、タブコード及び特定の文字記号列の少なくともひとつが、前記所定範囲の間隔で挿入されているコード抽出装置。
［付記６］
請求項１に記載のコード抽出装置においてさらに、
前記コード進行情報抽出手段により抽出されたコード進行情報を構成するコード名を表示する表示手段を有するコード抽出装置。
［付記７］
付記６に記載のコード抽出装置において、
前記表示手段はさらに、前記文字列除去手段にて除去された文字列及び前記歌詞識別手段にて前記歌詞を表わす文字情報として識別された文字情報を、前記コード進行情報を構成するコード名とは別の領域に表示するコード抽出装置。
［付記８］
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出方法であって、
前記コード譜から、前記基音及び３度の表記以外の文字列を除去する文字列除去ステップと、
前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別ステップと、
前記文字列を除去されたコード譜内の文字情報から、前記識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出ステップと、
を含むコード抽出方法。
［付記９］
少なくともコード名及び歌詞を表わす文字情報で構成されるコード譜から、コード進行情報を構成するコード名を抽出するコード抽出装置として用いられるコンピュータに、
前記コード譜から、前記基音及び３度の表記以外の文字列を除去する文字列除去ステップと、
前記文字列を除去されたコード譜内の所定範囲に含まれる文字情報において、所定の条件を満足しない場合、当該所定範囲の文字情報を前記歌詞を表わす文字情報として識別する歌詞識別ステップと、
前記文字列を除去されたコード譜内の文字情報から、前記識別された前記歌詞を表わす文字情報を除いた文字情報を、コード進行情報を構成するコード名として抽出するコード進行情報抽出ステップと、
を実行させるプログラム。
【符号の説明】
【０１２１】
１・・・コード抽出装置、１０・・・ＣＰＵ、２０・・・ＲＯＭ、３０・・・ＲＡＭ、４０・・・入力装置、５０・・・表示部、６０・・・通信部、７０・・・インターネット、５０１・・・第１表示領域、５０２・・・第２表示領域
【図１】
2013190694.tif 000003
【図２】
2013190694.tif 000004
【図３】
2013190694.tif 000005
【図４】
2013190694.tif 000006
【図５】
2013190694.tif 000007
【図６】
2013190694.tif 000008
【図７】
2013190694.tif 000009
【図８】
2013190694.tif 000010
【図９】
2013190694.tif 000011
【図１０】
2013190694.tif 000012
【図１１】
2013190694.tif 000013
【図１２】
2013190694.tif 000014
【図１３】
2013190694.tif 000015
【図１４】
2013190694.tif 000016
【図１５】
2013190694.tif 000017
【図１６】
2013190694.tif 000018
【図１７】
2013190694.tif 000019
【図１８】
2013190694.tif 000020