JP2012189942A - コード検出装置およびコード検出方法を実現するためのプログラム - Google Patents
コード検出装置およびコード検出方法を実現するためのプログラム Download PDFInfo
- Publication number
- JP2012189942A JP2012189942A JP2011055293A JP2011055293A JP2012189942A JP 2012189942 A JP2012189942 A JP 2012189942A JP 2011055293 A JP2011055293 A JP 2011055293A JP 2011055293 A JP2011055293 A JP 2011055293A JP 2012189942 A JP2012189942 A JP 2012189942A
- Authority
- JP
- Japan
- Prior art keywords
- code
- chord
- information
- detection
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【解決手段】まず、骨格コード進行を形成するためのコード候補を抽出する(A)基本コード候補抽出処理(ステップS45)と、独特なコード進行の始点となるコード候補を抽出する(B)追加コード候補抽出処理(ステップS46)が実行され、抽出されたコード候補がコードリストCListに登録される。次に、コードリストCListから、ノートイベントリストNListに登録されたノートイベント情報に基づいてコードデータが1つ選出され(ステップS47)、検出コードChordに記憶される(ステップS48)。
【選択図】図7
Description
(A)基本コード候補抽出処理
(B)追加コード候補抽出処理
の2種類の抽出処理によって、検出候補となるコード候補を抽出する。
(B1)割り込み型コード進行を形成するためのコード候補の抽出処理
(B2)エクステンデッド型コード進行を形成するためのコード候補の抽出処理
によって構成されている。そして、上記割り込み型コード進行とは、本実施の形態では、
(B1a)メジャ系セカンダリードミナント/ツーファイブ → ダイアトニック・スケール・コードのうちの所定のコード(メジャ系解決先コード)
(B1b)マイナ系セカンダリードミナント/ツーファイブ → ダイアトニック・スケール・コードのうちの所定のコード(マイナ系解決先コード)
(B1c)ダブルドミナント → ダイアトニック・スケール・コードのうちのドミナント7th系のコード(ドミナント7th系解決先コード)
であり、上記エクステンデッド型コード進行とは、本実施の形態では、
(B2a)エクステンデッド・ドミナント → ダイアトニック・スケール・コード
(B2b)エクステンデッド・ドミナント → エクステンデッド・ドミナント →ダイアトニック・スケール・コード
である。
(C)コード進行形成用コード検出処理
が実行される。
(1)起動時処理(ステップS1〜S4)
(2)自動伴奏のスタート時処理(ステップS7)
(3)自動伴奏のストップ時処理(ステップS9)
(4)ノートイベント処理(ステップS12)
(5)コードの検出タイミング時処理(図5BのステップS14〜S19)
によって構成されている。
(11)演奏開始前の設定処理(ステップS1)
(12)コード検出タイミングおよび各種ルールの設定処理(ステップS2)
(13)初期化処理(ステップS3)
(14)コード検出タイミングの始点および終点の算出設定処理(ステップS4)
によって構成されている。
(R2a)各コードに予め優先順位を付けておき(たとえば、ダイアトニック・スケール・コードのトニックコードを上位にするなど)、候補コードのうち、最上位のコードを選出するというルール
(R2b)参照対象の演奏データの全ての音名と候補コードの各コードの構成音との一致度合い(完全一致、3音以上が一致、2音が一致など)が最も高いコードを選出するというルール
などを挙げることができる。また、候補コードの各コードの根音が参照対象の演奏データに含まれることを追加条件にしてもよい。
ノートイベントリストNList:コード検出タイミングの期間内に入力されたノートオンイベントに対応するノートイベント情報(音高+入力タイミング)を登録するリストである;
コード検出タイミングの始点sTime:コード検出タイミングの始点を記憶しておく領域である;
コード検出タイミングの終点eTime:コード検出タイミングの終点を記憶しておく領域である;
調情報Key:前記設定された調検出ルールに従って検出された調情報を記憶しておく領域である;
コードリストCList:検出対象となるコードデータの候補を登録するリストである;
検出コードChord:ノートイベントリストNListに登録されたノートイベント情報に基づいてコードリストCListから選出した1つのコードデータを検出コードとして記憶しておく領域である;
スタートコードSChord:前記骨格コード進行の生成中に、当該骨格コード進行に割り込ませる前記割り込み型コード進行またはエクステンデッド型コード進行を生成する場合があり、その場合に、当該割り込み型コード進行またはエクステンデッド型コード進行のスタート(始点)となるコードデータを記憶しておく領域である;
次コードリストNCList:割り込み型コード進行を生成しているときに、現在の検出コードChordから次に進行するコードデータの候補を登録するリストである;
出力結果リストRList:調情報Keyおよび検出コードChordを登録するリストである;
前回のディグリーネームLDN:前回の検出コードChordが持つディグリーネームを記憶しておく領域である;
前回の機能LF:前回の検出コードChordに対応する機能を記憶しておく領域である;
の各領域をクリアするとともに、
通常コード検出フラグ:通常コード(本実施の形態では、骨格コード進行を形成するコードデータ)が検出されたときにセット(“1”)され、通常コード以外のコードが検出されたときにリセット(“0”)されるフラグである;
EPフラグ:前記(B)の追加コード候補抽出処理で、エクステンデッド・ドミナントとなるコードデータの候補を抽出して、コードリストCListに追加するときにセットされ、当該コードデータの候補を抽出しないときにリセットされるフラグである;
の前者のフラグをセットし、後者のフラグをリセットする。
(41)タイマ8がコード検出タイミング期間内の時間、つまり前記始点sTimeから前記終点eTimeまでの間の時間を計時しているときに
(41a)ノートオンイベントが受け付けられた場合の処理(ステップS33,S34)
(41b)ノートオフイベントが受け付けられた場合の処理(ステップS35,S36)
(42)タイマ8がコード検出タイミング期間外の時間を計時しているときに
(42a)ノートオンイベントが受け付けられた場合の処理(ステップS38)
(42b)ノートオフイベントが受け付けられた場合の処理(ステップS39)
によって構成されている。
(51)通常コード検出処理(ステップS42〜S48)
(52)非通常コード検出処理への移行処理(ステップS50〜S52)
(53)非通常コード検出処理(ステップS53,S56〜S58)
(54)通常コード検出処理への移行処理(ステップS55)
によって構成され、上記(51)通常コード検出処理には、前記(A)基本コード候補抽出処理および前記(B)追加コード候補抽出処理が含まれ、上記(53)非通常コード検出処理には、前記(C)コード進行形成用コード検出処理が含まれている。
(61)起動時処理(ステップS61〜S63)
(62)次の(63)の抽出処理の前処理(ステップS64〜S72)
(63)次に進むことのできる機能を持つディグリーネーム候補の抽出処理(図8BのステップS75)
によって構成されている。
(61a)ノートイベントリストNListが空である場合、つまり、ノートイベントリストNListにノートイベント情報が1個も記録されていない場合:本基本コード候補抽出処理を直ちに終了する(ステップS61→リターン);
(61b)ノートイベントリストNListが空でない場合:かつ
(61b1)出力結果リストRListが空である場合:ノートイベントリストNListに記録されたノートイベント情報と調情報Keyに基づいて初回コードのディグリーネームとコードネームを検出し、検出したディグリーネームとコードネームを含むコードデータを生成してコードリストCListに登録した後、本基本コード候補抽出処理を終了する(ステップS61→S62→S63→リターン);
(61b2)出力結果リストRListが空でない場合:前記(62)の前処理に進む(ステップS61→S62→S64)。
(62a)出力結果リストRListに4個以上のコードデータが登録されており、末尾から4個、つまり最新に登録されたものから遡って4個がすべて、ダイアトニック・スケール・コードのトニック(T)に該当するかどうか判定し(ステップS64)、
当該4個のコードデータがすべて、ダイアトニック・スケール・コードのトニックに該当する場合:トニック禁止フラグをセット(“1”)(ステップS65);
当該4個のコードデータのうち、少なくとも1個が、ダイアトニック・スケール・コードのトニックに該当しない場合:トニック禁止フラグをリセット(“0”)(ステップS66);
(62b)出力結果リストRListに2個以上のコードデータが登録されており、末尾から2個がすべて、ダイアトニック・スケール・コードのサブドミナント(S)に該当するかどうか判定し(ステップS67)、
当該2個のコードデータがすべて、ダイアトニック・スケール・コードのサブドミナントに該当する場合:サブドミナント禁止フラグをセット(ステップS68);
当該2個のコードデータのうち、少なくとも1個が、ダイアトニック・スケール・コードのサブドミナントに該当しない場合:サブドミナント禁止フラグをリセット(ステップS69);
(62c)出力結果リストRListに2個以上のコードデータが登録されており、末尾から2個がすべて、ダイアトニック・スケール・コードのドミナント(D)に該当するかどうか判定し(ステップS70)、
当該2個のコードデータがすべて、ダイアトニック・スケール・コードのドミナントに該当する場合:ドミナント禁止フラグをセット(ステップS71);
当該2個のコードデータのうち、少なくとも1個が、ダイアトニック・スケール・コードのドミナントに該当しない場合:ドミナント禁止フラグをリセット(ステップS72)。
(63a)抽出した機能にトニックがあり、かつ
トニック禁止フラグの値=0(リセット状態)の場合:ダイアトニック・スケール・コードのトニックに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(ステップS84)とともに、ダイアトニック・スケール・コード以外のトニックに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(ステップS85);
トニック禁止フラグの値=1(セット状態)の場合:上記ステップS84の処理をスキップして、上記ステップS85の処理のみを行う;
(63b)抽出した機能にサブドミナントがあり、かつ
サブドミナント禁止フラグの値=0の場合:ダイアトニック・スケール・コードのサブドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(ステップS88)とともに、ダイアトニック・スケール・コード以外のサブドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(ステップS89);
サブドミナント禁止フラグの値=1の場合:上記ステップS88の処理をスキップして、上記ステップS89の処理のみを行う;
(63c)抽出した機能にドミナントがあり、かつ
ドミナント禁止フラグの値=0の場合:ダイアトニック・スケール・コードのドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(図9BのステップS92)とともに、ダイアトニック・スケール・コード以外のドミナントに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(ステップS93);
ドミナント禁止フラグの値=1の場合:上記ステップS92の処理をスキップして、上記ステップS93の処理のみを行う;
(63d)抽出した機能にサブドミナント・マイナがある場合:サブドミナント・マイナに該当するディグリーネームの中で、調情報Keyに合うものをすべて抽出し、そのすべてのディグリーネームのそれぞれについて各コードネームを検出し、前記抽出した各ディグリーネームと前記検出した各コードネームをそれぞれ含む各コードデータを生成して、コードリストCListに登録する(ステップS95)。
(71)前記抽出した全メジャ系解決先コードの各ルートをI度とみなし、それらに対しV7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「V7 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(メジャ系に解決するドミナント候補の追加);
(72)上記(71)で追加した各コードデータの情報データ内の解決先コード情報として記憶されている解決先コードのルートに対してIIm7およびIIm7(♭5)となる各コードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「IIm7/IIm7(♭5) of V7/V7sus4 of 解決先コードのルートの度数」(“IIm7/IIm7(♭5)”は、“IV/IVm”の代理コードである)を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(メジャ系に解決するツーファイブ候補の追加);
(73)前記抽出した全メジャ系解決先コードの各ルートをI度とみなし、それらに対しV7sus4となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「V7sus4 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(メジャ系に解決するドミナント候補の追加);
(74)前記抽出した全メジャ系解決先コードの各ルートをI度とみなし、それらに対し♭II7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「♭II7 of 解決先コードのルートの度数」(“♭II7”は、“V7”の代理コードである)を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(メジャ系に解決するセカンダリードミナント候補の追加);
(75)上記(74)で追加した各コードデータのルートをV度とみなし、それらに対しIIm7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「IIm7 of ♭II7 of 解決先コードのルートの度数」(=解決先コードのルートの度数をI度とみなしたときの♭VIm7)を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(メジャ系に解決するツーファイブ候補の追加);
の各処理を実行する。
(81)前記抽出した全マイナ系解決先コードの各ルートをI度とみなし、それらに対しV7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「V7 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(マイナ系に解決するドミナント候補の追加);
(82)上記(81)で追加した各コードデータの情報データ内の解決先コード情報として記憶されている解決先コードのルートに対してIIm7およびIIm7(♭5)となる各コードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「IIm7/IIm7(♭5) of V7/V7sus4 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(マイナ系に解決するツーファイブ候補の追加);
(83)前記抽出した全マイナ系解決先コードの各ルートをI度とみなし、それらに対しV7sus4となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「V7sus4 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(マイナ系に解決するドミナント候補の追加);
(84)前記抽出した全マイナ系解決先コードの各ルートをI度とみなし、それらに対し♭II7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「♭II7 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(マイナ系に解決するセカンダリードミナント候補の追加);
(85)上記(84)で追加した各コードデータのルートをV度とみなし、それらに対しIIm7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「IIm7 of ♭II7 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加(マイナ系に解決するツーファイブ候補の追加);
の各処理を実行する。
(91)前記抽出した全ドミナント7th系解決先コードの各ルートをI度とみなし、それらに対しV7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「V7 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加;
(92)前記抽出した全ドミナント7th系解決先コードの各ルートをI度とみなし、それらに対しV7sus4となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「V7sus4 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加;
(93)前記抽出した全ドミナント7th系解決先コードの各ルートをI度とみなし、それらに対し♭II7となるコードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「解決先コード情報」として「解決先コードのルート」を、「ディグリー情報」として「♭II7 of 解決先コードのルートの度数」を、「フラグ情報」として「割り込み」を記憶したものを生成し、コードリストCListに追加;
の各処理を実行する。
(101)前回のディグリーネームLDNのルート音名の完全4度上の音名をルートに持つ(コードタイプが)7コードと7sus4コードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「フラグ情報」として「エクステンデッドV7/V7sus4」を記憶したものを生成し、コードリストCListに追加;
(102)前回のディグリーネームLDNのルート音名の1半音下の音名をルートに持つ7コードを検出し、検出したコードに対応するコードネームおよびディグリーネームを含むコードデータであって、その情報データに、「フラグ情報」として「エクステンデッド♭II7」を記憶したものを生成し、コードリストCListに追加;
の各処理を実行する。
(111)スタートコードSChordとして、メジャ系解決先コードまたはマイナ系解決先コードへ解決する予定のIIm7またはIIm7(♭5)が検出されている場合:
(111a)スタートコードSChordのルート音名に対し完全4度上の音名をルートとする7コードのコードネームおよびディグリーネームを含むコードデータを生成して、コードリストCListに登録し(ステップS171→S172);
(111b)スタートコードSChordのルート音名に対し完全4度上の音名をルートとする7sus4コードのコードネームおよびディグリーネームを含むコードデータを生成して、コードリストCListに登録し(ステップS173);
(111c)スタートコードSChordのルート音名に♭を付けた(ルート音名を変えずに半音下げる)音名のコードネームおよびディグリーネームを含むコードデータを生成して、コードリストCListに登録した(ステップS174)後、本抽出処理を終了(リターン);
(112)スタートコードSChordとして、メジャ系解決先コードまたはマイナ系解決先コードへ解決する予定のV7またはV7sus4が検出されている場合:
(112a)スタートコードSChordのルート音名に対し完全4度上の音名をルートとするダイアトニック・スケール・コードを、調情報Keyに応じてすべて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS175→S176);
(112b)上記(112a)の登録処理によって登録されたコードデータの機能と同じ機能を持つコードを、ダイアトニック・スケール・コードとダイアトニック・スケール・コード以外のコードから調情報Keyに応じて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS177);
(112c)スタートコードSChordの情報データ内の解決先コード情報(のルートの度数)がVI度であり、かつ調情報Keyがメジャ調であるときには、VIMaj7,IV6,IVadd9,IVに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS178);
(112d)スタートコードSChordのルート音名に対し完全4度上の音名をルートとする7コードおよび7sus4コードの各コードネームおよび各ディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「フラグ情報」として「エクステンデッドV7/V7sus4」を記憶したものを生成し、コードリストCListに登録し(ステップS179);
(112e)スタートコードSChordのルート音名に対し半音下の音名をルートとする7コードのコードネームおよびディグリーネームを含むコードデータであって、情報データに、「フラグ情報」として「エクステンデッド♭II7」を記憶したものを生成し、コードリストCListに登録した(ステップS180)後、本抽出処理を終了(リターン);
(113)スタートコードSChordとして、メジャ系解決先コードまたはマイナ系解決先コードへ解決する予定の♭II7が検出されている場合:
(113a)スタートコードSChordのルート音名に対し短2度下の音名をルートとするダイアトニック・スケール・コードを、調情報Keyに応じてすべて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS181→S182);
(113b)上記(113a)の登録処理によって登録されたコードデータの機能と同じ機能を持つコードを、ダイアトニック・スケール・コードとダイアトニック・スケール・コード以外のコードから調情報Keyに応じて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS183);
(113c)前記(112d)の抽出処理と同様の処理を実行し(ステップS179);
(113d)前記(112e)の抽出処理と同様の処理を実行した(ステップS180)後、本抽出処理を終了(リターン);
(114)スタートコードSChordとして、V7/V7sus4コードへ解決する予定のV7/V7sus4が検出されている場合:
(114a)スタートコードSChordのルート音名に対し完全4度上の音名をルートとする7コードおよびV7sus4(V度のみ)コードの各コードネームおよび各ディグリーネームをそれぞれ含むコードデータを生成し、コードリストCListに登録し(図12BのステップS184→S185);
(114b)上記(114a)の登録処理によって登録されたコードデータの機能と同じ機能を持つコードを、ダイアトニック・スケール・コードとダイアトニック・スケール・コード以外のコードから調情報Keyに応じて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS186);
(114c)スタートコードSChordのルート音名と同じルートを持つm7(=IIm7 of V7)コードおよびIIm7(♭5)(=IIm7(♭5) of V7)コードの各コードネームおよび各ディグリーネームをそれぞれ含むコードデータであって、情報データに、「フラグ情報」として「寄り道」を記憶したものを生成し、コードリストCListに登録した(ステップS187)後、本抽出処理を終了(リターン);
(115)スタートコードSChordとして、V7/V7sus4コードへ解決する予定の♭II7が検出されている場合:
(115a)スタートコードSChordのルート音名に対し短2度下の音名をルートとする7コードおよびV7sus4(V度のみ)コードの各コードネームおよび各ディグリーネームをそれぞれ含むコードデータを生成し、コードリストCListに登録し(ステップS188→S189);
(115b)上記(115a)の登録処理によって登録されたコードデータの機能と同じ機能を持つコードを、ダイアトニック・スケール・コードとダイアトニック・スケール・コード以外のコードから調情報Keyに応じて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録し(ステップS190);
(115c)スタートコードSChordのルート音名に対し短2度下の音名からさらに完全4度下の音名をルートに持つm7(=IIm7 of V7)コードおよびIIm7(♭5)(=IIm7(♭5) of V7)コードの各コードネームおよび各ディグリーネームをそれぞれ含むコードデータであって、情報データに、「フラグ情報」として「寄り道」を記憶したものを生成し、コードリストCListに登録した(ステップS191)後、本抽出処理を終了(リターン);
の各処理を実行する。なお、コードリストCListに登録するためにコードデータを生成する際に、フラグ情報について言及していないステップ、具体的には、ステップS172〜S174,S176〜S178,S182,S183では、コードデータにはフラグ情報は設定されないものとする。
(121)スタートコードSChordの情報データ内の解決先コード情報から解決先コードを検出し(検出したコードのルートの度数によっては、複数の異なるタイプのものがある。たとえば、抽出したコードのルートの度数がIV度の場合、解決先コードとしてはIVMaj7,IV,IV6,IVadd9が検出される)、検出した各解決先コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、次コードリストNCListに登録し;
(122)上記(121)の登録処理によって登録されたコードデータの機能と同じ機能を持つコードを、ダイアトニック・スケール・コードとダイアトニック・スケール・コード以外のコードから調情報Keyに応じて検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、次コードリストNCListに登録し;
(123)スタートコードSChordのルート音名に対し完全4度上の音名のさらに完全4度上の音名をルートとする7コードおよび7sus4コードの各コードネームおよび各ディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「フラグ情報」として「エクステンデッドV7/V7sus4」を記憶したものを生成し、次コードリストNCListに登録し;
(124)スタートコードSChordのルート音名に♭を付けた音名のさらに1半音下の音名をルートとする7コードのコードネームおよびディグリーネームを含むコードデータであって、情報データに、「フラグ情報」として「エクステンデッド♭II7」を記憶したものを生成し、次コードリストNCListに登録;
の各処理を実行する。
(131)検出コードChordが前記(111a)または(111b)の登録処理によってコードリストCListに登録されたものである場合:次コードリストNCListから、情報データ内のフラグ情報が「エクステンデッド♭II7」であるコードデータを削除した(ステップS128→S132)後、ステップS131に移行;
(132)検出コードChordが前記(111c)の登録処理によってコードリストCListに登録されたものである場合:次コードリストNCListから、情報データ内のフラグ情報が「エクステンデッドV7/V7sus4」であるコードデータを削除した(ステップS128→S129→S130)後、ステップS131に移行;
(133)上記(131)および(132)のいずれの場合にも該当しない場合:何もせずにステップS131に移行;
のいずれかの処理を実行する。
(141)スタートコードSChordとして、メジャ系解決先コードまたはマイナ系解決先コードへ解決する予定のV7またはV7sus4または♭II7が検出されている場合:
(141a)検出コードChordの情報データ内のフラグ情報が「なし」の場合:検出コードChordの情報データ内のフラグ情報を「End」に設定(ステップS136→S137→S138);
(141b)検出コードChordの情報データ内のフラグ情報が「なし」でない場合:本コード進行形成用コード検出処理を終了(ステップS136→S137→リターン);
(142)スタートコードSChordとして、メジャ系解決先コードまたはマイナ系解決先コードへ解決する予定のV7またはV7sus4または♭II7が検出されていない場合:
(142a)検出コードChordの情報データ内のフラグ情報が「なし」の場合:
(142a1)検出コードChordが7コードまたは7sus4コードに該当する場合:EPフラグをセットした(ステップS136→S139→S140→S141)後、検出コードChordの情報データ内のフラグ情報を「End」に設定(ステップS138);
(142a2)検出コードChordが7コードまたは7sus4コードに該当しない場合:検出コードChordの情報データ内のフラグ情報を「End」に設定(ステップS136→S139→S140→S138);
(142b)検出コードChordの情報データ内のフラグ情報が「なし」でない場合:コードリストCListから、情報データ内のフラグ情報が「寄り道」であるコードデータを削除(ステップS136→S139→S142);
(142b1)コードリストCListが空の場合:検出コードChordの情報データ内のフラグ情報を「End」に設定(ステップS143→S138);
(142b2)コードリストCListが空でない場合:本コード進行形成用コード検出処理を終了(ステップS143→リターン);
の各処理を実行する。
(151)スタートコードSChordのルート音名の完全4度上の音名をルートに持つ7コードと7sus4コードを検出し、検出した各コードに対応するコードネームおよびディグリーネームをそれぞれ含むコードデータであって、各コードデータの情報データに、「フラグ情報」として「エクステンデッドV7/V7sus4」を記憶したものを生成し、コードリストCListに追加(ただし、コードリストCList中に、同じコードネーム(ディグリーネーム)のコードデータが既に登録されていれば、追加登録しない);
(152)スタートコードSChordのルート音名の1半音下の音名をルートに持つ7コードを検出し、検出したコードに対応するコードネームおよびディグリーネームを含むコードデータであって、その情報データに、「フラグ情報」として「エクステンデッド♭II7」を記憶したものを生成し、コードリストCListに追加(ただし、コードリストCList中に、同じコードネーム(ディグリーネーム)のコードデータが既に登録されていれば、追加登録しない);
の各処理を実行する。
(161)スタートコードSChordの情報データ内のフラグ情報が「エクステンデッドV7/V7sus4」の場合:スタートコードSChordのルート音名に対し完全4度上の音名をルートとするMaj7,6,add9,m7,m6,mMaj7,madd9のコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録;
(162)スタートコードSChordの情報データ内のフラグ情報が「エクステンデッド♭II7」の場合:スタートコードSChordのルート音名に対し1半音下の音名をルートとするMaj7,6,add9,m7,m6,mMaj7,madd9のコードネームおよびディグリーネームをそれぞれ含むコードデータを生成して、コードリストCListに登録;
のいずれかの処理を実行する。
(171)スタートコードSChordの情報データ内のフラグ情報が「エクステンデッドV7/V7sus4」の場合:
(171a)検出コードChordはスタートコードSChordに対しルートが完全4度上の音名のMaj7/6/add9/m7/m6/mMaj7/madd9のいずれかのコードに該当する場合:
(171a1)検出コードChordとその異名同音コードまで含めたコードネームの中で調情報Keyで扱うことができるコードネームがある場合:調情報Keyで扱うことができると判断されたコードネームとディグリーネームを含むコードデータを生成して、検出コードChordに記憶(ステップS161);
(171a2)検出コードChordとその異名同音コードまで含めたコードネームの中で調情報Keyで扱うことができるコードネームがない場合:転調と判断して、前記図7のステップS42と同様にして、新しい調情報を取得し(ステップS165)、前記ステップS43と同様にして、取得した調情報を調情報Keyに記憶し(ステップS166)、検出コードChordに含まれるコードネームとディグリーネームを調情報Keyに合わせた上で、検出コードChordに記憶(ステップS167);
(171b)検出コードChordはスタートコードSChordに対しルートが完全4度上の音名のMaj7/6/add9/m7/m6/mMaj7/madd9のいずれかのコードに該当しない場合:
(171b1)検出コードChordは調情報Keyで扱うことができるコードである場合:上記(171a1)の処理に移行;
(171b2)検出コードChordは調情報Keyで扱うことができるコードでない場合:上記(171a2)の処理に移行;
(172)スタートコードSChordの情報データ内のフラグ情報が「エクステンデッドV7/V7sus4」でない場合:
(172a)検出コードChordはスタートコードSChordに対しルートが1半音下の音名のMaj7/6/add9/m7/m6/mMaj7/madd9のいずれかのコードに該当する場合:上記(171a1)または(171a2)のいずれかの処理に移行;
(172b)検出コードChordはスタートコードSChordに対しルートが1半音下の音名のMaj7/6/add9/m7/m6/mMaj7/madd9のいずれかのコードに該当しない場合:上記(171b1)または(171b2)のいずれかの処理に移行;
のいずれかの処理を実行する。
Bm7(♭5)(= IIm7(♭5) of Extended)→ E7(= Extended)→ Em7(♭5)(= IIm7(♭5) of Secondary)→ A7(= V7 of II)→ Dm7(= IIm7)
となる。エクステンデッド・ドミナントとそのツーファイブを考えて行くと、さらに続く候補群を前もって抽出することができる。
Claims (4)
- 演奏データを入力する入力手段と、
演奏曲の調情報を取得する取得手段と、
コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手段と、
前記取得手段によって取得された調情報に基づいて複数のコード候補を抽出し、該抽出した複数のコード候補から、前記入力手段によって入力された演奏データに基づいてコードを1つ選出する第1の選出手段と、
少なくとも、前記第1の選出手段によって直前に選出されたコードの情報および前記取得手段によって取得された調情報に基づいて複数のコード候補を抽出し、該抽出した複数のコード候補から、前記入力手段によって入力された演奏データに基づいてコードを1つ選出する第2の選出手段と、
前記第2の選出手段によって選出されたコードが、前記第1の選出手段によって直前に選出されたコードを始点とするコード進行の最後のコードとなり得るかどうかを判定する判定手段と、
第1または第2の情報のいずれかを設定可能な設定手段と、
前記指示手段によってコードの検出が指示されたときに、前記設定手段によって前記第1の情報が設定されていた場合には、当該コードの検出を前記第1の選出手段を用いて行うように制御する一方、前記設定手段によって前記第2の情報が設定されていた場合には、当該コードの検出を前記第2の選出手段を用いて行うように制御する制御手段と
を有し、
前記設定手段は、前記第1の選出手段によって選出されたコードが当該抽出された複数のコード候補のうちの一部のコード候補と所定の関係となるコードである場合には、前記第2の情報を設定する一方、前記第2の選出手段によって選出されたコードが前記判定手段によって前記最後のコードとなり得ると判定された場合には、前記第1の情報を設定することを特徴とするコード検出装置。 - 前記第1の選出手段によって選出されたコードが前記一部のコード候補と前記所定の関係とならないコードであった場合の当該選出されたコードの情報、または、前記第2の選出手段によって選出されたコードが前記判定手段によって前記最後のコードとなり得ると判定された場合の当該選出されたコードの情報を記憶する記憶手段をさらに有し、
前記第1の選出手段は、前記記憶手段によって記憶されたコードの情報および前記取得手段によって取得された調情報に基づいて複数のコード候補を抽出することを特徴とする請求項1に記載のコード検出装置。 - 前記第2の選出手段が複数のコード候補を抽出する際に参照する調情報は、前記第1の選出手段を用いたコードの検出から当該第2の選出手段を用いたコードの検出に移る直前に、前記第1の選出手段が参照した調情報であることを特徴とする請求項1または2に記載のコード検出装置。
- 演奏データを入力する入力手順と、
演奏曲の調情報を取得する取得手順と、
コードの検出タイミングを検知したことに応じて、コードの検出を指示する指示手順と、
前記取得手順によって取得された調情報に基づいて複数のコード候補を抽出し、該抽出した複数のコード候補から、前記入力手順によって入力された演奏データに基づいてコードを1つ選出する第1の選出手順と、
少なくとも、前記第1の選出手順によって直前に選出されたコードの情報および前記取得手順によって取得された調情報に基づいて複数のコード候補を抽出し、該抽出した複数のコード候補から、前記入力手順によって入力された演奏データに基づいてコードを1つ選出する第2の選出手順と、
前記第2の選出手順によって選出されたコードが、前記第1の選出手順によって直前に選出されたコードを始点とするコード進行の最後のコードとなり得るかどうかを判定する判定手順と、
第1または第2の情報のいずれかを設定可能な設定手順と、
前記指示手順によってコードの検出が指示されたときに、前記設定手順によって前記第1の情報が設定されていた場合には、当該コードの検出を前記第1の選出手順を用いて行うように制御する一方、前記設定手順によって前記第2の情報が設定されていた場合には、当該コードの検出を前記第2の選出手順を用いて行うように制御する制御手順と
をコンピュータに実行させるためのプログラムであって、
前記設定手順では、前記第1の選出手順によって選出されたコードが当該抽出された複数のコード候補のうちの一部のコード候補と所定の関係となるコードである場合には、前記第2の情報を設定する一方、前記第2の選出手順によって選出されたコードが前記判定手順によって前記最後のコードとなり得ると判定された場合には、前記第1の情報を設定することを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011055293A JP5712701B2 (ja) | 2011-03-14 | 2011-03-14 | コード検出装置およびコード検出方法を実現するためのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011055293A JP5712701B2 (ja) | 2011-03-14 | 2011-03-14 | コード検出装置およびコード検出方法を実現するためのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012189942A true JP2012189942A (ja) | 2012-10-04 |
JP5712701B2 JP5712701B2 (ja) | 2015-05-07 |
Family
ID=47083133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011055293A Expired - Fee Related JP5712701B2 (ja) | 2011-03-14 | 2011-03-14 | コード検出装置およびコード検出方法を実現するためのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5712701B2 (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274170A (ja) * | 1993-03-23 | 1994-09-30 | Kawai Musical Instr Mfg Co Ltd | 自動演奏装置 |
JPH0764561A (ja) * | 1993-08-26 | 1995-03-10 | Yamaha Corp | 電子楽器 |
JPH0876758A (ja) * | 1994-09-08 | 1996-03-22 | Kawai Musical Instr Mfg Co Ltd | 自動伴奏装置 |
JPH11126075A (ja) * | 1997-10-21 | 1999-05-11 | Yamaha Corp | 楽音データから和音を検出する和音検出方法および和音検出装置、ならびに、和音検出用プログラムを記録した記録媒体 |
JP2002032077A (ja) * | 2000-07-18 | 2002-01-31 | Yamaha Corp | コード進行修正装置、コード進行修正方法及び同装置に適用されるプログラムを記録したコンピュータ読取り可能な記録媒体、並びに自動作曲装置、自動作曲方法及び同装置に適用されるコンピュータ読取り可能な記録媒体 |
-
2011
- 2011-03-14 JP JP2011055293A patent/JP5712701B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274170A (ja) * | 1993-03-23 | 1994-09-30 | Kawai Musical Instr Mfg Co Ltd | 自動演奏装置 |
JPH0764561A (ja) * | 1993-08-26 | 1995-03-10 | Yamaha Corp | 電子楽器 |
JPH0876758A (ja) * | 1994-09-08 | 1996-03-22 | Kawai Musical Instr Mfg Co Ltd | 自動伴奏装置 |
JPH11126075A (ja) * | 1997-10-21 | 1999-05-11 | Yamaha Corp | 楽音データから和音を検出する和音検出方法および和音検出装置、ならびに、和音検出用プログラムを記録した記録媒体 |
JP2002032077A (ja) * | 2000-07-18 | 2002-01-31 | Yamaha Corp | コード進行修正装置、コード進行修正方法及び同装置に適用されるプログラムを記録したコンピュータ読取り可能な記録媒体、並びに自動作曲装置、自動作曲方法及び同装置に適用されるコンピュータ読取り可能な記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
JP5712701B2 (ja) | 2015-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2772904B1 (en) | Apparatus and method for detecting music chords and generation of accompaniment. | |
JP5659648B2 (ja) | コード検出装置およびコード検出方法を実現するためのプログラム | |
JP6295583B2 (ja) | 音楽データ生成装置および音楽データ生成方法を実現するためのプログラム | |
JP3637775B2 (ja) | メロディ生成装置と記録媒体 | |
JP6733720B2 (ja) | 演奏装置、演奏プログラム、及び演奏パターンデータ生成方法 | |
JP5472261B2 (ja) | 自動調判定装置、自動調判定方法及びそのプログラム | |
JP5712701B2 (ja) | コード検出装置およびコード検出方法を実現するためのプログラム | |
JP5742321B2 (ja) | コード検出装置およびコード検出方法を実現するためのプログラム | |
JP5712702B2 (ja) | コード検出装置およびコード検出方法を実現するためのプログラム | |
JP2012098480A (ja) | コード検出装置及びプログラム | |
JP2007086571A (ja) | 曲情報表示装置及びプログラム | |
JP2016161900A (ja) | 音楽データ検索装置及び音楽データ検索プログラム | |
JP6554826B2 (ja) | 音楽データ検索装置及び音楽データ検索プログラム | |
JP5822187B2 (ja) | コード検出装置およびコード検出をコンピュータに実行させるためのプログラム | |
JP6525034B2 (ja) | コード進行情報生成装置およびコード進行情報生成方法を実現するためのプログラム | |
Muñoz-Lago et al. | SymPlot: A web-tool to visualise symbolic musical data | |
JPH05346781A (ja) | 調検出装置および自動編曲装置 | |
JP3163654B2 (ja) | 自動伴奏装置 | |
JP6047867B2 (ja) | 自動コード修正装置、自動コード修正方法及びそのプログラム | |
JP3978277B2 (ja) | 自動伴奏装置 | |
JP2007086572A (ja) | 画像表示装置及びプログラム | |
JP5825449B2 (ja) | コード検出装置 | |
JP4148184B2 (ja) | 自動伴奏データ生成方法を実現するためのプログラムおよび自動伴奏データ生成装置 | |
JP3565107B2 (ja) | メロディ生成装置、コード進行データ作成装置及び記録媒体 | |
JP3163653B2 (ja) | 調性判定装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140122 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141112 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150116 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150210 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150223 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5712701 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |