JP5825449B2 - コード検出装置 - Google Patents
コード検出装置 Download PDFInfo
- Publication number
- JP5825449B2 JP5825449B2 JP2015022861A JP2015022861A JP5825449B2 JP 5825449 B2 JP5825449 B2 JP 5825449B2 JP 2015022861 A JP2015022861 A JP 2015022861A JP 2015022861 A JP2015022861 A JP 2015022861A JP 5825449 B2 JP5825449 B2 JP 5825449B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- chord
- point
- candidate
- detection
- 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.)
- Expired - Fee Related
Links
Images
Description
この発明は、ユーザによる両手弾きなどの自由な演奏に対してコード(chord:和音)検出を行うことができるコード検出装置に関する。
従来より、演奏操作よりコードを検出する機能を持つ電子音楽装置が知られている。例えば、特許文献1に開示された自動伴奏装置では、コード検出タイミングでユーザ演奏音をサーチし、予め記憶しているコードパターンとのマッチングを行い、2音しか押鍵がない場合は分数コードが指定され2音のうちどちらかをルート(root:根音)とみなし、所定のルールに基づき分数コードを決定し、決定したコードに基づいた自動伴奏を行う。
しかしながら、従来のコード検出技術では、ユーザの演奏でコードの構成音が揃ったときにコードが検出されるので、検出タイミングでユーザは正確に鍵盤でコード構成音を押鍵しなければならない。検出して欲しいコードになるように押鍵する必要があるので、両手弾きなどの自由な演奏には向いていない。また、決まった算出方法でコードのパターンマッチングやルートの決定を行うので、検出されるコードが単調になる可能性がある。
この発明は、このような事情に鑑み、両手弾きなどの自由なユーザ演奏に対して適切なコードを検出することができるコード検出装置を提供することを目的とする。
上記目的を達成するために、本発明のコード検出装置は、演奏データを取得する演奏データ取得手段と、調情報を取得する調情報取得手段と、所定のコード検出タイミングにてコード検出を指示するコード検出指示手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記調情報取得手段により取得された調情報を元に候補コードを抽出する候補コード抽出手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記演奏データ取得手段により取得された演奏データから、前記コード検出タイミングに有効とみなされる音高情報を抽出する音高情報抽出手段と、候補コードとなり得る全てのコードに関して、当該コードを構成するコード構成音の各役割に対する音楽的な重要度をポイント値で表わしたノートポイントテーブルを備えるディグリーネーム別ポイントテーブルと、前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された各候補コードについて、前記音高情報抽出手段により抽出された各音高情報の当該各候補コードにおける役割を識別し、識別された役割に応じて音楽的な重要度を示すポイントを、前記ディグリーネーム別ポイントテーブルのノートポイントテーブルから抽出する役割識別及びポイント抽出手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された候補コード毎に、前記音高情報抽出手段により抽出された全音高情報につき、前記役割識別及びポイント抽出手段により抽出されたポイントを合計して当該各候補コードのポイント合計値を取得するポイント合計値取得手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記ポイント合計値取得手段により取得された各候補コードのポイント合計値を元に、前記候補コード抽出手段により抽出された候補コードから1つのコードを検出するコード検出手段とを具備し、前記ディグリーネーム別ポイントテーブルは、複数用意されたディグリーネーム別ポイントテーブルから選択できると共に、作成および編集が可能とされていることを最も主要な特徴としている。
この発明によるコード検出装置は、さらに、複数のコードの夫々について優先度をポイントで示す優先ポイントが、前記ディグリーネーム別ポイントテーブルに設定されており、前記コード検出手段は、前記ポイント合計値取得手段により候補コード毎にポイント合計値を取得した際に、更に、前記ディグリーネーム別ポイントテーブルから、各候補コードに対応するコードの優先ポイントを取得し、取得された優先ポイントを各候補コードのポイント合計値に加算し、加算されたポイント合計値を元にコード検出を行うように構成することができる。
この発明のコード検出装置では、例えば、所定小節毎或いは所定拍毎というような所定の音楽タイミングを基準にして、コード検出を行うタイミング即ちコード検出タイミングを設定して、両手弾きなどの演奏操作に基づく演奏データを取得し、調情報を取得すると、設定したコード検出タイミングにてコード検出が指示されたときに、取得した調情報を元に候補コードを抽出し、取得した演奏データから、コード検出タイミングに有効とみなされる音高情報を抽出する。次いで、候補コードとなり得る全てのコードに関して、当該コードを構成するコード構成音の各役割に対する音楽的な重要度をポイント値で表わしたノートポイントテーブルを備えるディグリーネーム別ポイントテーブルを備え、抽出した各候補コードについて、各音高情報の役割を識別し、識別した役割に応じて音楽的な重要度を示すポイントを、ディグリーネーム別ポイントテーブルのノートポイントテーブルから抽出し、候補コード毎に、全音高情報について抽出したポイントを合計する。つまり、コード検出タイミングにおいて、各演奏音が、候補コードにおける、どの構成音、どのテンションノート、アヴォイドノートであるのかなど、各演奏音が演じている音楽的な役割を識別し、識別したこれらの役割毎の音楽的な重要度に基づくポイント値を取得する。さらに抽出した候補コード毎に全演奏音に対するポイント値を合計して、各候補コードの合計ポイントを求める。そして、このようにして求めた各候補コードのポイント合計値を元に、抽出した候補コードから最適なコードを検出する。さらに、ディグリーネーム別ポイントテーブルは、複数用意されたディグリーネーム別ポイントテーブルから選択できると共に、作成および編集が可能とされており、検出されたコードを元にして自動演奏データを生成させることができる。
このように、この発明では、小節或いは拍タイミング等に相当するコード検出タイミングで、両手弾き等の演奏データに基づくコード検出が指示されると、該コード検出タイミングで入力された各演奏音の候補コードにおける音楽的な役割を識別し、識別した役割毎の音楽的な重要度に基づくポイント値を取得して候補コード毎に全押鍵音に対するポイント値を合計して、各候補コードの合計ポイントを求め、合計ポイントの一番高い候補コードを最適な所望のコードとして選出するようにしている。
従って、この発明によれば、両手弾きなどの自由なユーザ演奏に対して適切なコードを検出し、ユーザは演奏に専念しながら適切なコードによる自動伴奏を得ることができる。また、使用可能なコードの中から、ユーザの演奏音を元に、コード構成音などの役割の音楽的意味をポイント値で考慮して適切なコードを検出するので、音楽的で演奏音に適合したコードを得ることができる。さらに、従来技術では、あるコードに対し特定のテンション音が演奏されているときには(例えば、CMajに対してD♯など)そのコードは検出されないように制御することがあったが、この発明では、コード検出時の演奏音1つ1つの各候補コードにおけるハーモニー構成の役割の重要度を識別し、それを元にコードを決定するので、単純に演奏音の組み合わせだけでコードの検出を禁止することはなく、演奏音の音楽的な役割を識別することによって適切なコードを検出することができる。また、ユーザ演奏の態様に応じてディグリーネーム別ポイントテーブルを選択できると共に、作成および編集が可能とされているので、より適切なコード検出を行うことができる。
この発明によるコード検出装置においては、複数のコードの夫々について優先度をポイントで示す優先ポイントが、ディグリーネーム別ポイントテーブルに設定されており、コード検出の際は、各候補コードに対応する優先ポイントを取得し、各候補コードのポイント合計値に加算し、加算したポイント合計値を元にコード検出を行うように構成される。つまり、前述のように、各候補コードにおける全押鍵音の役割に対応して求めたポイント合計値に、更に、コードの優先度を示す優先ポイントを加えた結果について、ポイント値の一番高い候補コードを求め、最適コードとして選出する。従って、この発明によれば、ユーザ演奏に対して更に適切なコードを検出することができる。
〔システム構成の概要〕
図1は、この発明の一実施例によるコード検出装置のハードウエア構成例を示す。この発明の一実施例によるコード検出装置は、電子的な音楽情報処理機能を有する一種のコンピュータであり、電子楽器の形で具現化することができる。このコード検出装置は、図1のように、中央処理装置(CPU)1、ランダムアクセスメモリ(RAM)2、読出専用メモリ(ROM)3、外部記憶装置4、演奏情報取得部(演奏情報入力部ともいう)5、その他操作子部6、表示部7、音源8、自動伴奏装置9、通信インターフェース(I/F)10などを備え、これらの要素1〜10はバス11を介して接続される。
図1は、この発明の一実施例によるコード検出装置のハードウエア構成例を示す。この発明の一実施例によるコード検出装置は、電子的な音楽情報処理機能を有する一種のコンピュータであり、電子楽器の形で具現化することができる。このコード検出装置は、図1のように、中央処理装置(CPU)1、ランダムアクセスメモリ(RAM)2、読出専用メモリ(ROM)3、外部記憶装置4、演奏情報取得部(演奏情報入力部ともいう)5、その他操作子部6、表示部7、音源8、自動伴奏装置9、通信インターフェース(I/F)10などを備え、これらの要素1〜10はバス11を介して接続される。
CPU1は、RAM2及びROM3と共にデータ処理部を構成しており、タイマ12によるクロックを利用して、自動伴奏併用演奏処理プログラムを含む所定の制御プログラムに従い種々の音楽情報処理を実行し、RAM2は、これらの処理に際して必要な各種データを一時記憶するためのワーク領域として用いられる。例えば、自動伴奏併用演奏処理を実行する自動伴奏併用演奏モード時には、タイマ12は、CPU1の制御の下、コードの検出や適用のために設定された種々の設定時間を計時し、RAM2には、コードの検出や適用に必要な各種レジスタ( NoteList,ChordList,Chord,sTime,eTime,Key,ResultListなど)が設けられる。また、ROM3には、これらの処理を実行するために、各種制御プログラムや必要な各種制御データが予め記憶される。
外部記憶装置4は、HD(ハードディスク)、FD(フレキシブルディスク)、CD(コンパクトディスク)、DVD(デジタル多目的ディスク)、フラッシュメモリ等の半導体メモリなどの記憶媒体と、その駆動装置を含む。制御プログラムや、ディグリーネーム別ポイントテーブル(PT)、各種ルールなどの制御データ、種々の曲データ等、任意の情報を任意の記憶媒体に記憶することができる。また、記憶媒体は、着脱可能であってもよいし、このコード検出装置に内蔵されていてもよく、着脱可能な記録媒体にはUSBメモリが含まれる。
演奏情報取得部5は、鍵盤などの演奏操作子と、演奏操作子の操作を検出し検出内容に対応する演奏操作情報をデータ処理部(1〜3)に導入する演奏操作検出回路とにより構成される。その他操作子部6は、キースイッチ等のその他の操作子(設定操作子)と、これら操作子の操作を検出して対応する操作情報をデータ処理部に導入する設定操作検出回路とにより構成される。データ処理部(1〜3)は、演奏情報取得部5及びその他操作子部6からの操作情報に基づきコード検出装置各部を制御し、例えば、演奏操作部5からの演奏操作入力に対応する演奏データを音源8に送ったり、その他操作子部6中のモード設定ボタンの操作により自動伴奏併用演奏モードで動作させたりすることができる。
表示部7は、演奏や設定に必要な各種情報を表示するLCD等のディスプレイや、操作部5〜6中のスイッチ類に併設した内蔵ランプ等を備え、これらの表示・点灯内容をデータ処理部からの指令で制御し、演奏操作や設定操作などに関する表示援助を行う。
音源8は、音源部やDSPを有し、演奏情報取得部5の演奏操作情報から得られる演奏データに基づいて、或いは、記憶装置4から読み出される曲データに基づいて、楽音信号を生成すると共にこの楽音信号に所定の効果を付与する。音源8に接続されるサウンドシステム13は、D/A変換部やアンプ、スピーカ等を備え、音源8から出力される楽音信号に基づく楽音を発生する。自動伴奏装置9は、自動伴奏併用演奏モードにおいて、タイマ12からのテンポクロックで自動伴奏のテンポが設定され、このテンポクロックに従って、データ処理部(1〜3)から提供されるコードに対応した伴奏スタイルデータに基づく自動伴奏音を生成する。
通信I/F10は、MIDI等の音楽用有線I/F、USB等の汎用ネットワークI/F或いは無線Lan等の汎用近距離無線I/F等を含み、外部電子音楽装置MMと交信することができる。例えば、外部電子音楽装置MMからMIDI形式の曲データを取得し、記憶装置4に記憶しておくことができる。
〔コード検出タイミング〕
この発明の一実施例によるコード検出装置では、自動伴奏併用演奏処理により、所定の小節或いは拍タイミングで、演奏情報取得部5から入力される演奏データに基づいてコードが検出され、検出されたコードが自動的に自動伴奏に適用される。図2は、この発明の一実施例によるコード検出タイミングのイメージ例を示している。
この発明の一実施例によるコード検出装置では、自動伴奏併用演奏処理により、所定の小節或いは拍タイミングで、演奏情報取得部5から入力される演奏データに基づいてコードが検出され、検出されたコードが自動的に自動伴奏に適用される。図2は、この発明の一実施例によるコード検出タイミングのイメージ例を示している。
図2(a)は、コード検出基準位置の例であり、横軸は、右方向に時間が進行する時間軸を示す。◎で示されるコード検出基準位置T2は、演奏データに対してユーザ操作により予め設定された所定の小節或いは拍タイミングなどの音楽的なタイミングであり、ユーザにとっては、コードの検出乃至適用を指示するタイミングの目安となる。この例では、1小節=4拍の演奏データに対し、1拍目及び3拍目がコード検出基準位置T2に設定されている。これに対して、図2(b)は、コード検出タイミングの例であり、右矢印の方向に時間が進行する時間軸(横軸)のスケールは、図2(a)よりも拡大されている。
コード検出タイミングは、コード検出基準位置T2より所定時間前のコード検出タイミング開始位置(時間)T1で開始し、同位置T2より所定時間後のコード検出タイミング終了位置(時間)T3で終了する。このように、コード検出を行うタイミングT1〜T3は、所定の拍位置T2を基準に前後にそれぞれ時間幅T1〜T2,T2〜T3を設定したものであり、各時間幅の値は、この例では、T1〜T2=250ms、T2〜T3=50msである。ここで、コード検出タイミング(時間幅)T1〜T3の間に両手弾きなどの演奏操作(押鍵)に応じて演奏データ(ノートイベント)を入力すると、コード検出タイミング終了時間T3でコード検出が指示され、入力された演奏データ(ノートイベント)及びその時点の調を元にしてコード検出が行われる。
このコード検出装置では、時間幅T1〜T3内に発音している演奏データがコード検出の対象となり、時間T3で、対象の演奏データを構成する各演奏音(ノートイベント、音符データ)の音高を調べ、ディグリーネーム別ポイントテーブル(PT)を参照することにより、そのときに設定されている調においてコードになり得る候補コードを抽出し、抽出した候補コード毎に識別した各演奏音の役割に応じた音楽的なポイント(重要度)を求める。そして、候補コード各音ポイントを合計し、合計ポイントが一番高い候補コードを最適なコードとして検出する。また、このようにして時間T3でコードを検出すると同時に、検出したコードは、自動伴奏に適用されると共に、コード検出結果リストに順次追記されていく。
この場合、対象時間幅T1〜T3内の演奏データからは、装飾音やミスタッチと推測される音符データを取り除いてからコード検出を行うようにすると、更に精度が上がる。また、コード検出時に利用される調情報については、演奏前にユーザにより指定されたものであってもよいし、演奏に沿って随時検出されたものを活用するようにしてもよい。後者の場合、調の検出は従来技術で行われればよい。
また、自動伴奏併用演奏処理中、コード検出タイミング開始位置T1、コード検出タイミング終了位置T3、演奏データ(ノートイベント)、調情報、候補コード、検出されたコード、コード検出結果リストは、それぞれ、RAM2内のレジスタ:sTime,eTime,NoteList,Key,ChordList,Chord,ResultListに格納され、各レジスタ名は、格納されている情報の内容を示すのにも用いられる。なお、コードが検出される毎に、そのときの調情報 (Key)を、検出されたコード (Chord)に対応付けてコード検出結果リスト(ResultList)に記憶しておくことが好ましい。
なお、コード検出基準位置は、この例のような拍位置だけでなく、テンポや拍子によっては、小節位置(例えば、2小節毎など)とすることができる。また、基準位置前後の時間幅T1〜T2,T2〜T3については、この例ではms単位で設定しているが、音符長や拍数、クロック数などで設定してもよい。
〔ディグリーネーム別ポイントテーブル〕
このコード検出装置では、コード検出時に各候補コードに対応したポイントを求めるのにディグリーネーム別ポイントテーブル(コード別ポイントテーブルともいう)が用いられる。図3は、この発明の一実施例によるディグリーネーム別ポイントテーブルの一例を示す。このディグリーネーム別ポイントテーブルPTは、候補コードとなり得る全てのコードに関して、各ノート(r,3,5,…)のポイントを得るためのノートポイントテーブル(第5〜11列)と、コード自体の優先ポイント (Prior)を得るための優先ポイントテーブル(第4列)とが、Major調とminor調別に1つのテーブルに纏められ、さらに、コードの機能とダイアトニック・スケール・コードかどうかの情報(第2,3列)が付加されている点に特徴がある。図3のディグリーネーム別ポイントテーブル(Major調)PTは、Major調(長調)で候補コードとなり得る全てのコードに関するテーブルであり、minor調(短調)についても同様のテーブルが用意される(図示せず)。
このコード検出装置では、コード検出時に各候補コードに対応したポイントを求めるのにディグリーネーム別ポイントテーブル(コード別ポイントテーブルともいう)が用いられる。図3は、この発明の一実施例によるディグリーネーム別ポイントテーブルの一例を示す。このディグリーネーム別ポイントテーブルPTは、候補コードとなり得る全てのコードに関して、各ノート(r,3,5,…)のポイントを得るためのノートポイントテーブル(第5〜11列)と、コード自体の優先ポイント (Prior)を得るための優先ポイントテーブル(第4列)とが、Major調とminor調別に1つのテーブルに纏められ、さらに、コードの機能とダイアトニック・スケール・コードかどうかの情報(第2,3列)が付加されている点に特徴がある。図3のディグリーネーム別ポイントテーブル(Major調)PTは、Major調(長調)で候補コードとなり得る全てのコードに関するテーブルであり、minor調(短調)についても同様のテーブルが用意される(図示せず)。
図3において、第1列(第1欄)は、ディグリーネーム別ポイントテーブルPTに用意されたディグリーネーム情報(DegreeName)〔コード情報ともいい、以下の説明では、単にディグリーネームと呼ぶ〕を示し、図示以外にも多数のディグリーネームがある。各ディグリーネーム(DegreeName)は、調の主音(トニック)を基準とした度数〔根音(ルート)の音階度数。例:I,II, III,IV,V,…〕とコードタイプ〔例:記号無し(メジャー),m(マイナー),7,6,Maj7(メジャー7),m6(マイナー6),m7(マイナー7),add9(9th付加メジャー),…〕との組み合わせでコードを表わしている。なお、図中の「b」は、「♭」(フラット)を表わし、後述する図10、図12及び図13についても同様である。
ディグリーネーム別ポイントテーブルPTには、第1列(第1欄)の各ディグリーネーム(DegreeName)に対応して第2列(第2欄)以下の諸情報が記録されている。第2列のダイアトニック情報は、各ディグリーネーム(DegreeName)で表わされるコードがダイアトニック・スケール・コードである(○)か否(×)かを表わし、第3列の機能情報は、当該ディグリーネーム(DegreeName)の機能が、トニック(T)、サブドミナント(S)、ドミナント(D)、サブドミナント・マイナー(SM)の何れであるかを表わす。また、第4列の優先ポイント情報 (Prior)は、当該ディグリーネーム(DegreeName)自体の優先度をポイント値で表わし、コード優先ポイント或いはディグリーネーム優先ポイントとも呼ばれる。これに対して、第5〜11列は、コードを特徴付けるノート(役割:r,3,5,…)毎に音楽的な重要度を表わすノートポイント情報が設定されたノートポイントテーブル部を構成している。
まず、第5〜9列各欄のポイント情報は、当該コードを構成するコード構成音の各ノート(役割)に対する音楽的な重要度をポイント値で表わしている。具体的には、第5列のルートポイント情報は、当該コード構成音のルート(根音)<略号“r”>に対応するポイントを示し、第6列の3度ポイント情報は、当該コード構成音の3度音<略号“3”>に対応するポイントを示し、第7列の5度ポイント情報は、当該コード構成音の5度音<略号“5”>に対応するポイントを示し、第8列の4声目ポイント情報は、当該コード構成音中でルート(根音)に対し長6度 (6th)、短7度 (7th)又は長7度(Maj7th)の4声目音<略号“4”>に対応するポイントを示し、第9列のオルタード系ポイント情報は、当該コード構成音中でルート(根音)に対し減5度(♭5th)又は増5度(♯5th)の5度変化音(オルタード系コードトーン)<略号“a”>に対応するポイントを示す。
そして、第10列のテンションノートポイント情報は、当該コードの基本的な和音構成の上部に置かれた非和声音で緊張感を与えるテンションノート<略号“t”>に対する音楽的な重要度をポイント値で表わし、第11列(最右欄)のその他ポイント情報は、当該コード・サウンドの構成上除外されるべきアヴォイドノートなどコード構成音にもテンションノートにも相当しないその他ノートに対する音楽的な重要度をポイント値で表わす。
このノートポイントテーブル部(第5〜11列)では、コード構成音の中でも特にルートの役割を持つ演奏音(押鍵音、音高情報)は、重要度が高いと評価され高めのポイントが設定される。また、構成音の中でもコードタイプ決定に大きく関わる3度や7度(4声目)の役割を持つ演奏音も重要とみなされる。一方、コードの中で不協和を生じるような役割(その他)の演奏音に対しては、重要度が低くなり、ポイントも低めに設定される。
このコード検出装置では、コード検出の際は、検出対象となる演奏データが入力された時の調 (Key)に応じて、候補とすべきコード (ChordList)が抽出される。例えば、予め所定の調で使用可能なコードの種類の組み合わせをいくつか記憶しておき、コード検出時に所望の組み合わせを選び、選ばれた組み合わせに該当するコードを候補コード (ChordList)として抽出する。また、図3に示されるタイプのディグリーネーム別ポイントテーブルPTでは、ポイント情報(第4〜11列)だけでなく、第2、3列に示すように、各コードのディグリーネーム(DegreeName:第1列)についてダイアトニック・スケール・コードかどうかを表わすダイアトニック情報や機能は何であるかを表わす機能情報が追加されているので、ディグリーネーム別ポイントテーブルPTを利用してその追加情報を参照することにより、候補となるコード (ChordList)を抽出することができる。
例えば、その時の調のダイアトニック・スケール・コード(第2列情報=「○」)に該当するコード(DegreeName)を全て候補コード (ChordList)として抽出するようにしてもよい。或いは、2回目以降のコード検出の場合には、前回検出されたコード (Chord)の機能(第3列情報)を調べ、例えば、ドミナント(D)であれば次はトニック(T)に進む、というように、前回検出されたコード (Chord)から音楽的に次に進むことが可能なコード(DegreeName)を候補コード (ChordList)として抽出するようにしてもよい。なお、このような追加情報については、ディグリーネーム別ポイントテーブルPTに含ませず、テーブルPTとは別の参照テーブルを用意しておくようにしてもよい。
候補コード (ChordList)が抽出されると、対象の演奏データ(NoteList)に含まれる各演奏音(押鍵音、Note)が、抽出された候補コード (ChordList)において、どのような役割を演じているのか(どの構成音か、テンションノートか、或いは、アヴォイドノートか)を識別し、ディグリーネーム別ポイントテーブルPTから、識別した役割(各構成音、テンションノート、アヴォイドノート)に対応するポイントを取得する。そして、候補コード毎に全演奏音(NoteList)に対するポイント(重要度)を合計し、更に、候補コード自体の優先ポイント (Prior)を加えて総計ポイントを求めた結果、総計ポイントの一番高い候補コードを選出し、これが対象の演奏データに最適なコード (Chord)であると決定する。
以上のように、この発明の一実施例によるコード検出システムでは、ユーザによる両手弾きなどの演奏操作に基づく演奏データ(NoteList)が入力されると、所定小節毎或いは所定拍毎などのコード検出タイミングT1〜T3にて、その時の調 (Key)に応じて候補コード (ChordList)を抽出する。次いで、各候補コード (ChordList)について、入力された演奏データ(NoteList)の各演奏音(Note)が、どのような音〔ルート (r)、3度 (3)、5度 (5)、4声目 (4)、オルタード系 (a)などのコード構成音、テンションノート (t)、アヴォイドノート等〕の役割をしているのかを識別する。さらに、識別した役割の音楽的重要度を示すポイントをディグリーネーム別ポイントテーブルPTから取得し、候補コード毎に、全演奏音(NoteList)につき取得したポイントを合計して合計ポイントを求め、求められた合計ポイントに更に候補コード自体の優先ポイント (Prior)を加えて総計ポイントを得る。そして、得られた総計ポイントが最高の候補コードを最適のコード (Chord)とする。
〔自動伴奏併用演奏処理フロー例〕
図4〜図6は、この発明の一実施例による自動伴奏併用演奏処理の動作例を表わすフローチャートである。このコード検出装置では、電子楽器として通常の演奏モードで動作しているときに操作子6中の自動伴奏併用演奏モード設定ボタンを操作することにより、自動伴奏併用演奏モードに入って自動伴奏併用演奏処理が実行され、自動伴奏を使った演奏を行うことができる。自動伴奏併用演奏処理がスタートすると、CPU1は、最初のステップP1で、表示部7のディスプレイに演奏条件設定画面を表示し、ユーザ操作に応じて、演奏テンポ、拍子、伴奏スタイルの選択、ボリューム、演奏音色など、演奏開始前の演奏条件を設定する。
図4〜図6は、この発明の一実施例による自動伴奏併用演奏処理の動作例を表わすフローチャートである。このコード検出装置では、電子楽器として通常の演奏モードで動作しているときに操作子6中の自動伴奏併用演奏モード設定ボタンを操作することにより、自動伴奏併用演奏モードに入って自動伴奏併用演奏処理が実行され、自動伴奏を使った演奏を行うことができる。自動伴奏併用演奏処理がスタートすると、CPU1は、最初のステップP1で、表示部7のディスプレイに演奏条件設定画面を表示し、ユーザ操作に応じて、演奏テンポ、拍子、伴奏スタイルの選択、ボリューム、演奏音色など、演奏開始前の演奏条件を設定する。
次のステップP2では、コード検出条件設定画面をディスプレイに表示し、ユーザ操作に応じて、コード検出タイミングT1〜T3や、コード検出に関係する各種ルール、例えば、調の取得方法、コード候補の抽出方法、ディグリーネーム別ポイントテーブルPT、コード優先ポイント (Prior)、ボトムノートポイントなどを設定する。ここで、ルール中のボトムノートポイントは、コード検出対象の演奏データ(NoteList)の中で最低音高の演奏音が候補コードのルート(根音)の場合に加算されるポイントである。つまり、コード検出時の演奏音の最低音が候補コードのルートに当たるときに更にボトムノートポイントを加えるようにすると、例えば、C6とAm7のような同じ構成音のコードを区別することができる。このボトムノートポイントは、例えば、20ポイントなどの固定値であってもよいし、コードタイプ別に設定されていてもよい。ユーザにより編集設定が可能であってもよい。
各種ルールの設定例を説明すると、調の取得については、予めユーザが指定しておく方法、演奏時に操作子6中の調指定操作子を操作して指定する方法、ユーザの演奏に沿って随時検出された調を利用する方法(具体的な調検出方法の指定を含む)などがある。コード候補については、調のダイアトニック・スケール・コードのみを抽出する方法、調で使用可能なコードを全て抽出する方法、調で使用可能なコードのうち構成音が対象演奏データ(NoteList)中の1音以上あるコードを抽出する方法などがある。ディグリーネーム別ポイントテーブルについては、複数種類のテーブルから所望の種類を選択したり、テーブル中のポイント値を編集するなどの設定動作がある。コード優先ポイント (Prior)やボトムノートポイントについては、ディグリーネーム別ポイントテーブルに設定されていない場合、これらのポイントが設定されたコード優先ポイントテーブル(ディグリーネーム優先ポイントテーブルともいう)等の制御データに従って設定する。
続くステップP3では、ディグリーネーム別ポイントテーブルPTを読み込む。ここで、ディグリーネーム別ポイントテーブルPTが、図3のように、コード優先ポイントテーブルと一体化されたテーブルではない場合、別設されたコード優先ポイントテーブルも読み込む。次のステップP4(図5)では、コードの検出や適用に用いられるRAM2内の各種レジスタを初期化する。これらのレジスタには、NoteList,ChordList,Chord,sTime(コード検出タイミング開始位置),eTime(コード検出タイミング終了位置), Key,ResultListなどがある。
ステップP1〜P4の処理により演奏前の準備が整うと、ステップP5で、ステップP2で設定されたコード検出タイミングT1〜T3の内容から、最初のコード検出タイミング開始位置 (sTime)及びコード検出タイミング終了位置 (eTime)を算出し、それぞれ、対応する開始及び終了位置レジスタ:sTime,eTimeに格納し、ステップP6に進む。図2の例では、 sTime=基準位置となる拍の250ms前、 eTime=基準位置となる拍の50ms後に定められる。但し、開始位置レジスタ:sTimeに格納されるコード検出タイミング開始位置 (sTime)は、最初に限り、最初のコード検出基準位置T2が設定される。
ステップP6では、自動伴奏を使わない通常の演奏モードに戻るか否かをユーザに打診し、通常演奏モード復帰ボタンが操作され通常演奏モードに戻ると判定したときは(P6=YES)、この自動伴奏併用演奏モードを終了し、元の通常演奏モードに戻る。一方、続行ボタンが操作されてこの自動伴奏併用演奏モードを続行すると判定したときは(P6=NO)、ステップP7に進んで、自動伴奏開始ボタンの操作による自動伴奏のスタートの指示が受け付けられたか否かを判定し、自動伴奏スタートの指示がないときは(P7=NO)、ステップP6に戻る。また、ステップP6で自動伴奏スタートの指示を受け付けると(P7=YES)、ステップP8でタイマ12を起動し、ステップP8に進む。
ステップP9では、自動伴奏停止ボタンの操作による自動伴奏ストップの指示を受け付けたか否かを判定し、自動伴奏ストップの指示があったときは(P9=YES)、ステップP10でタイマ12を停止し、さらに、ステップP11に進んで、伴奏スタイルなどの演奏条件やコード検出タイミングなどのコード検出条件について設定変更を行うか否かをユーザに打診する。そして、設定変更ボタンが操作され設定変更を行うと判定したときは(P11=YES)、ステップP1(図4)に戻り、ステップP1〜P5で必要な設定や算出を行った後、ステップP6に戻る。一方、設定変更を行わない場合には(P11=NO)、直ちに、ステップP6に戻る。
ステップP9で自動伴奏ストップ指示の受付けがないときには(P9=NO)、ステップP12に進んで、演奏操作に基づくノートイベントを受け付けた否かを判定する。ここで、ノートイベントを受け付けたときは(P12=YES)、ステップP13でノートイベント処理(図7参照)を行った後ステップP14(図6)に進む。ノートイベント処理では、コード検出タイミングT1〜T3の間に発生したノートイベントをコード検出対象の演奏データとして演奏データレジスタ:NoteListに記録する。また、ノートイベントを受け付けなかったときは(P12=NO)、直ちにステップP14に進む。
ステップP14では、コード検出タイミングか否か即ち終了時点 eTimeに到達したか否かを判定し、時点 eTimeに到達したときは(P14=YES)、先ず、ステップP15で、調情報を取得して調レジスタ:Keyに格納する。次のステップP16では、ステップP2で設定された抽出方法に従って調情報 Keyに対応するコード候補を抽出し、候補コードレジスタ:ChordListに格納して、ステップP17に進み、コード検出処理(図8〜図9参照)を実行する。コード検出処理では、対象の演奏データ(NoteList)及び抽出したコード候補 (ChordList)から所望のコード Chordを検出し、次のステップP18で、検出したコード Chordを自動伴奏装置9に出力する。そして、ステップP19にて、このコード Chordをコード検出結果レジスタ:ResultListの末尾に追加し、ステップP20に進む。つまり、コードが検出される毎に、そのときの調情報を、検出されたコードに対応付けて記憶しておく。なお、コード Chordがない場合即ちコード検出処理で所望コード Chordを検出することができなかった場合は、ステップP17からステップP20に進む。
ステップP20では、コード検出タイミングの設定内容より、次のコード検出タイミング開始及び終了位置 (sTime,eTime)を算出して夫々のレジスタ:sTime,eTimeを更新し、続くステップP21で、演奏データ及びコード候補レジスタ:NoteList,ChordListを初期化する。そして、ステップP14で終了時点 eTimeに到達していないと判定したとき(P14=NO)或いはステップP21の処理の後は、ステップP9(図5)に戻る。
<ノートイベント処理フロー例>
図7は、自動伴奏併用演奏処理のステップP13(図5)で行われるノートイベント処理の動作例を表わすフローチャートである。CPU1は、まず、ステップN1で、現在、タイマ12はコード検出タイミング( sTime〜 eTimeの間)を示しているか否かを判定し、コード検出タイミングの範囲にあれば(N1=YES)、ステップN2で、ステップP12(図5)で受け付けたノートイベントがノートオンであるか否かを判定する。ここで、ノートオンであれば(N2=YES)、ステップN3で、当該ノートイベントに従った発音処理を音源8に行わせ、次のステップN4で、ノートオンされたノートイベント情報を演奏データレジスタ:NoteListに追加する。一方、ノートオフであれば(N2=NO)、ステップN5で当該ノートイベントによる楽音の消音処理を行わせ、ステップN6で、ノートオフされたノートイベント情報を同レジスタ:NoteListから削除する。
図7は、自動伴奏併用演奏処理のステップP13(図5)で行われるノートイベント処理の動作例を表わすフローチャートである。CPU1は、まず、ステップN1で、現在、タイマ12はコード検出タイミング( sTime〜 eTimeの間)を示しているか否かを判定し、コード検出タイミングの範囲にあれば(N1=YES)、ステップN2で、ステップP12(図5)で受け付けたノートイベントがノートオンであるか否かを判定する。ここで、ノートオンであれば(N2=YES)、ステップN3で、当該ノートイベントに従った発音処理を音源8に行わせ、次のステップN4で、ノートオンされたノートイベント情報を演奏データレジスタ:NoteListに追加する。一方、ノートオフであれば(N2=NO)、ステップN5で当該ノートイベントによる楽音の消音処理を行わせ、ステップN6で、ノートオフされたノートイベント情報を同レジスタ:NoteListから削除する。
また、コード検出タイミング( sTime〜 eTime)でないときは(N1=NO)、ステップN7に進み、ステップP11(図4)で受け付けたノートイベントがノートオンであるか否かを判定し、ノートオンであれば(N7=YES)、ステップN8で、音源8に発音処理を行わせ、ノートオフであれば(N7=NO)、消音処理を行わせる。そして、ステップN4,N6,N8,N9の処理の後は、このノートイベント処理を終了し、自動伴奏併用演奏処理のステップP14(図6)にリターンする。
<コード検出処理フロー例>
図8〜図9は、自動伴奏併用演奏処理のステップP17(図6)で行われるコード検出処理の動作例を表わすフローチャートである。CPU1は、最初のステップC1で、演奏データレジスタ:NoteListが空(データ無し)の状態であるか否かを判定し、空でなければ(C1=NO)ステップC2で、コード候補レジスタ:ChordListが空状態であるか否かを判定し、空でなければ(C2=NO)ステップC3に進む。また、演奏データレジスタ:NoteListが空のとき(C2=YES)或いはコード候補レジスタ:ChordListが空のときは(C2=YES)、自動伴奏併用演奏処理のステップP18(図6)にリターンする。
図8〜図9は、自動伴奏併用演奏処理のステップP17(図6)で行われるコード検出処理の動作例を表わすフローチャートである。CPU1は、最初のステップC1で、演奏データレジスタ:NoteListが空(データ無し)の状態であるか否かを判定し、空でなければ(C1=NO)ステップC2で、コード候補レジスタ:ChordListが空状態であるか否かを判定し、空でなければ(C2=NO)ステップC3に進む。また、演奏データレジスタ:NoteListが空のとき(C2=YES)或いはコード候補レジスタ:ChordListが空のときは(C2=YES)、自動伴奏併用演奏処理のステップP18(図6)にリターンする。
ステップC3では、コード候補レジスタ:ChordListの先頭から順に(2個目以降は次の)候補コードを1つ対象にしてディグリーネームに変換し、これをディグリーネームレジスタ(コード情報レジスタともいう):DegreeNameに格納し、次のステップC4で、ポイント値レジスタ:pointに値「0」を置数する。続くステップC5(図9)では、演奏データレジスタ:NoteListの先頭から順に(2個目以降は次の)ノートイベント情報を1つ対象にしてその音高情報を抽出し、これを演奏音レジスタ:Noteに格納し、ステップC6に進む。
ステップC6では、ディグリーネームDegreeNameが示すコードにおける演奏音Noteの役割を抽出する役割抽出処理(図10〜図11参照)を実行する。次のステップC7では、ディグリーネーム別ポイントテーブルPTを参照して、ステップC6で抽出した「DegreeNameのコードにおける役割」に対応したポイントを取得し、ポイント値 pointに加算し、ステップC8に進む。なお、この役割は、ディグリーネーム別ポイントテーブルPTの仕様次第では、テンションノートの種類で更に細かく分けることもできる(図12〜図13参照)。
ステップC8では、演奏音レジスタ:Noteは、演奏データレジスタ:NoteList中の最後のノートイベント情報の音高情報を示しているか否かを判定し、最後のノートイベント音高情報でないときは(C8=NO)、ステップC5に戻り、演奏データNoteList中の次のノートイベント情報を対象にしてステップC5〜C7の処理を繰り返す。そして、演奏データNoteList中の最後のノートイベント音高情報についてステップC5〜C7の処理を行うと(C8=YES)、ステップC9に進む。
ステップC9では、ディグリーネーム別ポイントテーブルPTを参照して、ディグリーネームDegreeNameが示すコードに対応した優先ポイント (Prior)を取得しポイント値 pointに加算する。次のステップC10では、演奏データNoteList中で最低音となるノートイベント情報の音高情報(最低音高の演奏音)が、ディグリーネームDegreeNameが示すコードのルートに相当しているか否かを判定し、ルートに相当しているときは(C10=YES)、ステップC11で、ボトムノートポイント(例えば、20ポイント)を取得し、ポイント値 pointに加算する。ステップC10でルートに相当していないと判定したとき(C10=NO)或いはステップC11の処理の後は、ステップC12に進み、ポイント値 pointを、ディグリーネームDegreeNameが示す全候補コード ChordList中の候補コードに対応付けて記憶する。
次のステップC13では、ディグリーネームDegreeNameが示すコードが全候補コード ChordList中の最後のコードであるか否かを判定し、最後のコードでないときは(C13=NO)ステップC3に戻り、全候補コード ChordList中の次の候補コードを対象にしてステップC3〜C12の処理を繰り返す。そして、最後の候補コードについてステップC5〜C7の処理を行うと(C13=YES)、ステップC14に進み、全候補コード ChordList中の各候補コードに対応付けて記憶したポイント値 pointが最高の候補コードを1つ検出し、コードレジスタ:Chordに格納し、ステップC14の処理を終えると、このコード検出処理を終了し、自動伴奏併用演奏処理のステップP18(図6)にリターンする。
なお、ステップC14で候補コードの中から1つのコードを決定する際、ポイント値 pointが最高の候補コードが複数ある場合(ポイントが同点で並んだ場合)、適宜の方法でどれか1つに決定する。例えば、最低音とルートが一致するコード、検出回数の少ないコード、或いは、検出回数の多いコード等、優先して選択すべきコードの特徴を定めた優先ルールを用意し、ステップP2で設定するように設計しておくことが好ましい。
<役割抽出処理フロー>
図10〜図11は、コード検出処理のステップC6(図9)で行われるコード検出処理の動作例を表わすフローチャートである。CPU1は、最初のステップF1で、調情報 Keyの主音(トニック)及びディグリーネームDegreeNameから、コードのルート、3度及び5度〔マイナー7thフラット5th[m7(♭5)]及びオーギュメント[aug]以外〕にあたる音名を取得し、RAM2内の“ルート”レジスタ、“3度”レジスタ及び“5度”レジスタに格納する。ここで、ルート、3度及び5度の音は、コードタイプに応じて主音からの半音距離数が決まっており、例えば、 Key=CMajor調、DegreeName=IVMaj7の場合、“ルート”=F(ファ)、“3度”=A(ラ)、“5度”=C(ド)となる。
図10〜図11は、コード検出処理のステップC6(図9)で行われるコード検出処理の動作例を表わすフローチャートである。CPU1は、最初のステップF1で、調情報 Keyの主音(トニック)及びディグリーネームDegreeNameから、コードのルート、3度及び5度〔マイナー7thフラット5th[m7(♭5)]及びオーギュメント[aug]以外〕にあたる音名を取得し、RAM2内の“ルート”レジスタ、“3度”レジスタ及び“5度”レジスタに格納する。ここで、ルート、3度及び5度の音は、コードタイプに応じて主音からの半音距離数が決まっており、例えば、 Key=CMajor調、DegreeName=IVMaj7の場合、“ルート”=F(ファ)、“3度”=A(ラ)、“5度”=C(ド)となる。
次のステップF2では、演奏音情報Noteの音名が“ルート”レジスタの値に等しいか否かを判定し、“ルート”レジスタの値であれば(F2=YES)、ステップF3で、演奏音情報Noteの役割を「ルート」に決定し、そうでなければ(F2=NO)ステップF4に進む。ステップF4では、演奏音情報Noteの音名は“3度”レジスタの値に等しいか否かを判定し、“3度”レジスタの値であれば(F4=YES)、ステップF5で、演奏音情報Noteの役割を「3度」に決定し、そうでなければ(F4=NO)ステップF6に進む。ステップF6では、演奏音情報Noteの音名が“5度”レジスタの値に等しいか否かを判定し、“5度”レジスタの値であれば(F6=YES)、ステップF7で、演奏音情報Noteの役割を「5度」に決定し、そうでなければ(F6=NO)ステップF8に進む。また、ステップF3,F5,F7の処理を終えると、この役割抽出処理を終了してコード検出処理のステップC7(図9)にリターンする。
ステップF8では、ディグリーネームDegreeNameのコードタイプが「m7(♭5)」(マイナー7フラット5)であるか否かを判定する。ここで、コードタイプが「m7(♭5)」であれば(F8=YES)、ステップF9に進んで、演奏音情報Noteの音名が“ルート”レジスタの音名に対し減5度(♭5th)であるか否かを判定し、減5度であれば(F9=YES)、ステップF10で演奏音情報Noteの役割を「オルタード系」に決定する。一方、コードタイプが「m7(♭5)」でなければ(F8=NO)、ステップF11に進んで、ディグリーネームDegreeNameのコードタイプが「aug」(オーギュメント)であるか否かを判定する。ここで、コードタイプが「aug」であれば(F11=YES)、ステップF12に進み、演奏音情報Noteの音名が“ルート”レジスタの音名に対し増5度(♯5th)であるか否かを判定し、増5度であれば(F12=YES)、ステップF10で演奏音情報Noteの役割を「オルタード系」に決定する。そして、ステップF10の処理を終えると、この役割抽出処理を終了してコード検出処理のステップC7(図9)にリターンする。
ステップF11で、コードタイプが「aug」ではないと判定したときは(F11=NO)、ステップF13(図13)に進み、ディグリーネームDegreeNameのコードタイプが、「6」、「6sus4」(6サスペンデッド4)又は「m6」(マイナー6)であるか否かを判定する。ここで、コードタイプが、「6」、「6sus4」及び「m6」の何れかであれば(F13=YES)、ステップF14に進んで、演奏音情報Noteの音名が“ルート”レジスタの音名に対し長6度(6th)であるか否かを判定し、長6度であれば(F14=YES)、ステップF15で、演奏音情報Noteの役割を「4声目」に決定する。一方、ステップF13で、コードタイプが、「6」、「6sus4」及び「m6」の何れでもないと判定したときは(F13=NO)、ステップF16に進み、ディグリーネームDegreeNameのコードタイプが、「IMaj7」(1度・メジャー7)や「IVmMaj7」(4度・マイナーメジャー7)などのMaj7(メジャー7)系であるか否かを判定する。ここで、コードタイプがMaj7系であれば(F16=YES)、ステップF17に進んで、演奏音情報Noteの音名が“ルート”レジスタの音名に対し長7度(Maj7th)であるか否かを判定し、長7度であれば(F17=YES)、ステップF15で演奏音情報Noteの役割を「4声目」に決定する。また、ステップF16でコードタイプがMaj7系でないと判定したときは(F16=NO)、ステップF18に進み、ディグリーネームDegreeNameのコードタイプが、「IIm7」(2度・マイナー7)、「V7」(5度・セブン)、「 VII7sus4」(7度・セブンサスペンデッド4)などのm7(マイナー7)系乃至7(セブン)系であるか否かを判定する。ここで、コードタイプがm7系乃至7th系であれば(F18=YES)、ステップF19に進み、演奏音情報Noteの音名が“ルート”レジスタの音名に対し短7度(7th)であるか否かを判定し、短7度であれば(F19=YES)、ステップF15で、演奏音情報Noteの役割を「4声目」に決定する。そして、ステップF10の処理を終えると、この役割抽出処理を終了してコード検出処理のステップC7(図9)にリターンする。
ステップF9で減5度でないと判定したとき(F9=NO)、ステップF12で増5度でないと判定したとき(F12=NO)、ステップF14で長6度でないと判定したとき(F14=NO)、ステップF17で長7度でないと判定したとき(F17=NO)、ステップF18でコードタイプがm7系でも7系でもないと判定したとき(F18=NO)、或いは、ステップF19で短7度でないと判定したときは(F19=NO)、ステップF20に進み、演奏音情報Noteの音名が、現在の調 KeyにおけるディグリーネームDegreeNameのコードに対しテンションノートであるか否かを判定する。ここで、テンションノートは、コードタイプに応じて根音からの半音距離数が決まっており(ルートに対しては、♭9th,9th,♯9th,11th,♯11th,♭13th,13thの何れか1〜3)、例えば、 Key=CMajor調、DegreeName=IVMaj7の場合、G(ソ)、B(シ)、D(レ)の音である。ここで、テンションノートであれば(F20=YES)、ステップF21で、演奏音情報Noteの役割を「テンションノート」に決定し、そうでなければ(F20=NO)、ステップF22で演奏音情報Noteの役割を「その他」に決定する。そして、ステップF21,F22の処理を終えると、この役割抽出処理を終了してコード検出処理のステップC7(図9)にリターンする。
〔ディグリーネーム別ポイントテーブル(2)〕
図3で説明したディグリーネーム別ポイントテーブルPTは、候補となり得るコード毎に、対応するディグリーネームに基づいた構成音、テンションノート、アヴォイドノートなどのノートの役割に対する重要度を示すノートポイントを設定したものであるが、ノートポイントをさらに詳細に設定することができる。図12〜図13は、この発明の一実施例によるディグリーネーム別ポイントテーブルの別の例を示す。このディグリーネーム別ポイントテーブルでは、第1〜5列には、図3のテーブルと同様の情報が設定されるが、第6〜22列には、第5列のRoot(ルート)に対し図示の通りの音程(m3rd,3rd,4th,…,13th)を示す音の役割に対応するポイント(重要度)が設定されると共に、第5〜22列のルートを含む各音には、コードを特徴付けるノート(役割)を表わす役割情報が付記され、図12〜図13では、ノートポイント表示枠に次のように表示されている:
表示枠左上の記号“r”は、コード構成音のルートを表わし、記号“3”は、コード構成音の3度音を表わし、記号“5”は、コード構成音の5度音を表わし、記号“4”は、コード構成音の4声目音〔6th,7th,Maj7th〕を表わし、記号“a”は、コード構成音中のオルタード系コードトーン〔♭5th,♯5th(aug5th)〕を表わし、記号“t”は、テンションノートを表わす。また、表示枠全体に斜線を施したものは、異名同音(記譜上は異なるが鍵盤上は同一の音)による不使用を表わし、記号や斜線のないものは、「その他」の音(アヴォイドノートなど)を表わす。
図3で説明したディグリーネーム別ポイントテーブルPTは、候補となり得るコード毎に、対応するディグリーネームに基づいた構成音、テンションノート、アヴォイドノートなどのノートの役割に対する重要度を示すノートポイントを設定したものであるが、ノートポイントをさらに詳細に設定することができる。図12〜図13は、この発明の一実施例によるディグリーネーム別ポイントテーブルの別の例を示す。このディグリーネーム別ポイントテーブルでは、第1〜5列には、図3のテーブルと同様の情報が設定されるが、第6〜22列には、第5列のRoot(ルート)に対し図示の通りの音程(m3rd,3rd,4th,…,13th)を示す音の役割に対応するポイント(重要度)が設定されると共に、第5〜22列のルートを含む各音には、コードを特徴付けるノート(役割)を表わす役割情報が付記され、図12〜図13では、ノートポイント表示枠に次のように表示されている:
表示枠左上の記号“r”は、コード構成音のルートを表わし、記号“3”は、コード構成音の3度音を表わし、記号“5”は、コード構成音の5度音を表わし、記号“4”は、コード構成音の4声目音〔6th,7th,Maj7th〕を表わし、記号“a”は、コード構成音中のオルタード系コードトーン〔♭5th,♯5th(aug5th)〕を表わし、記号“t”は、テンションノートを表わす。また、表示枠全体に斜線を施したものは、異名同音(記譜上は異なるが鍵盤上は同一の音)による不使用を表わし、記号や斜線のないものは、「その他」の音(アヴォイドノートなど)を表わす。
このようなディグリーネーム別ポイントテーブルPTを用いると、各演奏音(音高情報)に対しコードにおける役割とポイントを同時に得ることができる。また、コード構成音だけでなく、テンションノートについても、その種類毎にポイントを設定することができ、高い精度でコード検出を行うことが可能になる。
〔種々の実施態様〕
以上、図面を参照しつつこの発明の好適な実施の一形態について説明したが、これは単なる一例であり、この発明は、発明の精神を逸脱しない範囲で種々の変更が可能である。例えば、コード検出を行うタイミングについては、テンポや使用する伴奏スタイルによって決まっていてもよいし、ユーザが設定できるようになっていてもよい。また、スイッチなどの特定の操作子が操作されたタイミングでもよいし、所定の拍タイミング+操作子操作タイミングでもよい。テンポの変化を検出したときに例えば2拍毎から1拍毎に変更してもよい。また、実施例のように、対象演奏データの入力を受け付けるための時間幅(T1〜T3)を設けてもよい。
以上、図面を参照しつつこの発明の好適な実施の一形態について説明したが、これは単なる一例であり、この発明は、発明の精神を逸脱しない範囲で種々の変更が可能である。例えば、コード検出を行うタイミングについては、テンポや使用する伴奏スタイルによって決まっていてもよいし、ユーザが設定できるようになっていてもよい。また、スイッチなどの特定の操作子が操作されたタイミングでもよいし、所定の拍タイミング+操作子操作タイミングでもよい。テンポの変化を検出したときに例えば2拍毎から1拍毎に変更してもよい。また、実施例のように、対象演奏データの入力を受け付けるための時間幅(T1〜T3)を設けてもよい。
実施例では、候補となり得る全てのコード毎にノートポイントを設定したディグリーネーム別ポイントテーブル(PT)を用いているが、複数種類のディグリーネーム別ポイントテーブルを用意しておき、演奏前や演奏中にユーザ操作で所望種類のポイントテーブルを選択することができるようにしてもよい。また、ユーザにより編集や作成が可能であってもよい。
また、ノートポイントテーブルとは別に、候補コードに対応するディグリーネーム自体の優先度を示すコード優先ポイント(ディグリーネーム優先ポイント)を設定したコード優先ポイントテーブル(ディグリーネーム優先ポイントテーブル)を設けることができ、この場合も、同様に、複数種類のコード優先ポイントテーブルを用意して選択可能としたり、ユーザによるテーブルの編集や作成を可能としてもよい。
また、実施例のようにコードのディグリーネーム毎の表であってもよいし、ノートポイントテーブルについてはコードタイプ別の表であってもよい。
また、ノートポイントテーブルとは別に、候補コードに対応するディグリーネーム自体の優先度を示すコード優先ポイント(ディグリーネーム優先ポイント)を設定したコード優先ポイントテーブル(ディグリーネーム優先ポイントテーブル)を設けることができ、この場合も、同様に、複数種類のコード優先ポイントテーブルを用意して選択可能としたり、ユーザによるテーブルの編集や作成を可能としてもよい。
また、実施例のようにコードのディグリーネーム毎の表であってもよいし、ノートポイントテーブルについてはコードタイプ別の表であってもよい。
実施例では、押鍵音の候補コードにおける役割を、コード構成音、テンションノート、アヴォイドノートなど、細かく識別しているが、例えば、コード構成音か構成音でないかの2通りの役割を識別するようにしてもよい。
実施例では、演奏データに合わせて、検出したコードに基づき自動伴奏を生成するようにしているが、検出したコードに基づきハーモニー音を生成するようにしてもよい。或いは、検出したコードの情報を順次表示画面上に表示するという活用法も考えられる。
検出したコードを記憶する際、演奏の開始以降に検出した全てのコードをリスト形式などで記憶しておいてもよいし、最新のコード1つもしくは任意の個数を記憶し、検出毎に更新してもよい。また、検出されたコードは、コードネームを記憶してもよいし、その時点での調情報と対応付けたディグリーネームで記憶してもよい。コードネームとディグリーネームを両方記憶しておいてもよい。
検出したコードを記憶する際、演奏の開始以降に検出した全てのコードをリスト形式などで記憶しておいてもよいし、最新のコード1つもしくは任意の個数を記憶し、検出毎に更新してもよい。また、検出されたコードは、コードネームを記憶してもよいし、その時点での調情報と対応付けたディグリーネームで記憶してもよい。コードネームとディグリーネームを両方記憶しておいてもよい。
実施例では、入力される演奏データは、ユーザによるリアルタイム演奏データを想定しているが、例えば、録音された演奏データを先読みせずに順次再生しながらコードを検出するような使い方も考えられる。或いは、外部に接続した楽器などの装置から演奏データが入力されてもよい。
また、演奏データの入力手段(演奏操作子)は鍵盤だけでなく、例えば、ギターなどの弦楽器タイプでもよい。ユーザの演奏入力音がオーディオ信号の場合、遅くとも各コード検出タイミングにおいて、候補コードからコードを1つ選出するために演奏データを参照するまでに少なくとも発音タイミング情報と音高情報を持つ音符情報に変換できていればよい。
また、演奏データの入力手段(演奏操作子)は鍵盤だけでなく、例えば、ギターなどの弦楽器タイプでもよい。ユーザの演奏入力音がオーディオ信号の場合、遅くとも各コード検出タイミングにおいて、候補コードからコードを1つ選出するために演奏データを参照するまでに少なくとも発音タイミング情報と音高情報を持つ音符情報に変換できていればよい。
T1〜T3 コード検出タイミング〔T1=開始 (sTime)、T3=終了 (eTime)〕、
T2 コード検出基準位置、
PT ディグリーネーム別ポイントテーブル。
T2 コード検出基準位置、
PT ディグリーネーム別ポイントテーブル。
Claims (2)
- 演奏データを取得する演奏データ取得手段と、
調情報を取得する調情報取得手段と、
所定のコード検出タイミングにてコード検出を指示するコード検出指示手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記調情報取得手段により取得された調情報を元に候補コードを抽出する候補コード抽出手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記演奏データ取得手段により取得された演奏データから、前記コード検出タイミングに有効とみなされる音高情報を抽出する音高情報抽出手段と、
候補コードとなり得る全てのコードに関して、当該コードを構成するコード構成音の各役割に対する音楽的な重要度をポイント値で表わしたノートポイントテーブルを備えるディグリーネーム別ポイントテーブルと、
前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された各候補コードについて、前記音高情報抽出手段により抽出された各音高情報の当該各候補コードにおける役割を識別し、識別された役割に応じて音楽的な重要度を示すポイントを、前記ディグリーネーム別ポイントテーブルのノートポイントテーブルから抽出する役割識別及びポイント抽出手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された候補コード毎に、前記音高情報抽出手段により抽出された全音高情報につき、前記役割識別及びポイント抽出手段により抽出されたポイントを合計して当該各候補コードのポイント合計値を取得するポイント合計値取得手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記ポイント合計値取得手段により取得された各候補コードのポイント合計値を元に、前記候補コード抽出手段により抽出された候補コードから1つのコードを検出するコード検出手段と
を具備し、
前記ディグリーネーム別ポイントテーブルは、複数用意されたディグリーネーム別ポイントテーブルから選択できると共に、作成および編集が可能とされていることを特徴とするコード検出装置。 - さらに、
複数のコードの夫々について優先度をポイントで示す優先ポイントが、前記ディグリーネーム別ポイントテーブルに設定されており、
前記コード検出手段は、前記ポイント合計値取得手段により候補コード毎にポイント合計値を取得した際に、更に、前記ディグリーネーム別ポイントテーブルから、各候補コードに対応するコードの優先ポイントを取得し、取得された優先ポイントを各候補コードのポイント合計値に加算し、加算されたポイント合計値を元にコード検出を行う
ことを特徴とする請求項1に記載のコード検出装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015022861A JP5825449B2 (ja) | 2015-02-09 | 2015-02-09 | コード検出装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015022861A JP5825449B2 (ja) | 2015-02-09 | 2015-02-09 | コード検出装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010245736A Division JP5696435B2 (ja) | 2010-11-01 | 2010-11-01 | コード検出装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015111286A JP2015111286A (ja) | 2015-06-18 |
JP5825449B2 true JP5825449B2 (ja) | 2015-12-02 |
Family
ID=53526084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015022861A Expired - Fee Related JP5825449B2 (ja) | 2015-02-09 | 2015-02-09 | コード検出装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5825449B2 (ja) |
-
2015
- 2015-02-09 JP JP2015022861A patent/JP5825449B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2015111286A (ja) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9117432B2 (en) | Apparatus and method for detecting chord | |
US10403166B2 (en) | Musical performance assistance device and method | |
US8324493B2 (en) | Electronic musical instrument and recording medium | |
US20130305907A1 (en) | Accompaniment data generating apparatus | |
JP5293710B2 (ja) | 調判定装置および調判定プログラム | |
JP5696435B2 (ja) | コード検出装置及びプログラム | |
JP2010160396A (ja) | 演奏教習装置及びプログラム | |
JP6733720B2 (ja) | 演奏装置、演奏プログラム、及び演奏パターンデータ生成方法 | |
JP2018146717A (ja) | 教習装置、教習プログラムおよび教習方法 | |
JP2008089975A (ja) | 電子楽器 | |
JP6583320B2 (ja) | 自動伴奏装置、自動伴奏プログラムおよび伴奏データ生成方法 | |
JP5061926B2 (ja) | 電子音楽装置及び演奏データ編集表示プログラム | |
JP5825449B2 (ja) | コード検出装置 | |
JP4670686B2 (ja) | コード表示装置及びプログラム | |
JP6977741B2 (ja) | 情報処理装置、情報処理方法、演奏データ表示システム、およびプログラム | |
JP5703693B2 (ja) | コード検出装置及びプログラム | |
JP5909967B2 (ja) | 調判定装置、調判定方法及び調判定プログラム | |
JP2007163710A (ja) | 演奏支援装置及びプログラム | |
JP6606844B2 (ja) | ジャンル選択装置、ジャンル選択方法、プログラムおよび電子楽器 | |
JP7338669B2 (ja) | 情報処理装置、情報処理方法、演奏データ表示システム、およびプログラム | |
JP2018146716A (ja) | 教習装置、教習プログラムおよび教習方法 | |
JP4735969B2 (ja) | 伴奏表示装置及びプログラム | |
JP6658785B2 (ja) | 自動伴奏方法および自動伴奏装置 | |
JP2007072387A (ja) | 演奏補助装置及びプログラム | |
JP2016057389A (ja) | コード決定装置及びコード決定プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150907 |
|
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: 20150915 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150928 |
|
LAPS | Cancellation because of no payment of annual fees |