JP5196550B2 - コード検出装置およびコード検出プログラム - Google Patents

コード検出装置およびコード検出プログラム Download PDF

Info

Publication number
JP5196550B2
JP5196550B2 JP2008137100A JP2008137100A JP5196550B2 JP 5196550 B2 JP5196550 B2 JP 5196550B2 JP 2008137100 A JP2008137100 A JP 2008137100A JP 2008137100 A JP2008137100 A JP 2008137100A JP 5196550 B2 JP5196550 B2 JP 5196550B2
Authority
JP
Japan
Prior art keywords
chord
sound
code
detection
power
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.)
Active
Application number
JP2008137100A
Other languages
English (en)
Other versions
JP2009282464A (ja
Inventor
錬 澄田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kawai Musical Instrument Manufacturing Co Ltd
Original Assignee
Kawai Musical Instrument Manufacturing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kawai Musical Instrument Manufacturing Co Ltd filed Critical Kawai Musical Instrument Manufacturing Co Ltd
Priority to JP2008137100A priority Critical patent/JP5196550B2/ja
Publication of JP2009282464A publication Critical patent/JP2009282464A/ja
Application granted granted Critical
Publication of JP5196550B2 publication Critical patent/JP5196550B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)
  • Auxiliary Devices For Music (AREA)

Description

本発明は、コード検出装置およびコード検出プログラムに関し、特に、複数の楽音が混ざった音楽音響信号(以下、単に「音響信号」という)からコード(和音)を精度良く検出するのに好適なコード検出装置およびコード検出プログラムに関する。
ポピュラー系の音楽においてコードは非常に重要な要素であり、このようなジャンルの音楽を小編成のバンドで演奏する場合、演奏する個々の音符が書かれた楽譜は使用しないで、コード譜またはリードシートと呼ばれるメロディとコード進行のみが書かれた楽譜を使用することが通常である。したがって、市販の音楽CD等の曲をバンドで演奏するためには曲のコード進行を採譜する必要があるが、この作業は特別な音楽的知識を有する専門家のみが可能であり、一般の人には不可能であった。そこで、市販のパーソナルコンピュータなどを使用して複数の楽音が混ざった音響信号を高速フーリエ変換手法(FFT)を使って演算処理してコードを検出するコード検出装置やコード検出プログラムが種々検討されている。
例えば、1小節が複数のコードで構成されている場合、小節を前半と後半とに分割して、それぞれでベース音を検出し、互いのベース音が異なっていたときに、小節の前半と後半とでそれぞれコード検出されるようにしたコード検出装置が知られる(特許文献1)。
しかし、特許文献1に記載されたコード検出装置では、複数の互いに異なるコードが同じベース音を含んでいる場合、1小節全体で1つのコードしか検出されず、検出精度が不十分であった。また、小節全体で強い音をベース音とするので、ジャズのように4分音符で音をつないでいくベースランニング等では、ベース音を正しく検出することができないおそれがある。
そこで、同じベース音を含む互いに異なるコードが小節内にある場合でも正しいコードを検出できるコード検出装置が提案されている(特許文献2)。このコード検出装置では、ベース音のみではなく、コードの変化度合に応じて小節を分割する。つまり、ベース音が異なるか、あるいはコードの変化度合が大きい場合に小節を分割してコードを検出する。
特開2007−52394号公報 特開2008−40283号公報
特許文献2に記載された装置では、まず、ベース音とコード構成音候補の変化度合を使って、単一のコードを含んでいると思われるコード検出区間を決定し、このコード検出区間内でベース音およびコード構成音を使ってコード(コード名)を決定している。しかし、このようにコード検出区間内の情報としてのベース音およびコード構成音だけを使ってコード検出するものでは、依然としてコード検出結果の精度が不十分であった。
例えば、ユーザ毎に好まれる曲のジャンルがあるので、そのジャンルにおいて一般的とされるコード進行やコード理論を考慮してコード検出をすることができれば精度の高いコード検出結果が期待できる。
本発明は、上記課題に対してなされたものであって、ベース音やコード構成音にだけ依存するのではなく、曲のジャンルやユーザが好む曲の傾向等も考慮して正しいコードが検出されるようにすることができるコード検出装置およびコード検出プログラムを提供することを目的とする。
上記の課題を解決し、目的を達成するための本発明は、曲の音響信号の各音階音のパワーを検出する手段と、前記音響信号に複数のコード検出区間を設定する手段と、前記パワーから、コード検出区間のそれぞれの1拍目に相当する部分における予定のベース音検出音域の各音階音のパワーを検出する手段と、各音階音のうち、パワーが最大である音をベース音として決定する手段と、コード検出区間全体の音階音からパワーが強い順に音名を予定数抽出し、該予定数の音名をそれぞれルート音とするコード候補を検出する手段と、前記コード候補についてすべてのコード構成音の平均的なパワーの大きさから尤度を計算し、該尤度が最大のコード候補をコードと決定する手段と、コード検出対象である曲のジャンルの入力手段とからなり、前記ベース音の決定においては、各音階音の基音および各倍音のパワーが最大の音をベース音とするとともに、前記ジャンルに応じて基音および倍音のパワーに別々に重み付けをするようにした点に第1の特徴がある。
また、本発明は、曲の音響信号の各音階音のパワーを検出する手段と、前記音響信号に複数のコード検出区間を設定する手段と、前記パワーから、コード検出区間のそれぞれの1拍目に相当する部分における予定のベース音検出音域の各音階音のパワーを検出する手段と、各音階音のうち、パワーが最大である音をベース音として決定する手段と、コード検出区間全体の音階音からパワーが強い順に音名を予定数抽出し、該予定数の音名をそれぞれルート音とするコード候補を検出する手段と、前記コード候補についてすべてのコード構成音の平均的なパワーの大きさから尤度を計算し、該尤度が最大のコード候補をコードと決定する手段と、テンションレベルの入力手段とからなり、前記コード候補を検出する手段が、テンションレベルに応じた構成音数のコードにコード候補を絞り込むように構成されている点に第2の特徴がある。
また、本発明は、前記尤度を計算する手段が、検出されたコード候補の構成音について、ルート音からの音程によりテンションレベルに応じたパワー補正を行う手段をさらに含んでいる点に第3の特徴がある。
第1の特徴を有する本発明では、基音および倍音のパワーに基づいてベース音を検出する際に、ジャンルに応じて基音および倍音のパワーにそれぞれ重み付けをすることができる。したがって、例えば、倍音構造をもたないバスドラムの音量が大きいロック系の曲に対して基音に対する重み付けを小さくしておくことによって、バスドラム音のパワーが小さく検出されることになるので、バスドラム音をベース音として誤検出することを回避できる。
第2、第3の特徴を有する本発明では、テンションレベルによって和音の構成音数を限定してコード候補を絞り込むことができる。また、テンションレベルによって、尤度を操作してパワー補正を行うことができるので、それぞれのテンションレベルに応じたコードが検出されやすくすることができる。テンションレベルは曲のジャンルによって、傾向があるので、テンションレベルを指定することによって、特定のジャンルの曲やユーザの好みの曲からコードを検出するのに好都合である。
以下、図面を参照して本発明を詳細に説明する。図2は、本発明の一実施形態に係るコード検出装置としてのパーソナルコンピュータのハード構成を示すブロック図である。パーソナルコンピュータのハード構成は周知のものであり、本発明に係るコード検出プログラムがロードされるとコード検出装置としての機能に従って動作するものである。
図2において、パーソナルコンピュータ1は、CPU2、ROM3、RAM4、表示装置(例えば、液晶ディスプレイ)5、外部記憶装置(ハードディスク装置)6を有し、これらはシステムバス7を介して接続される。さらに、システムバス7には入出力インタフェース8を介してキーボード9、サウンドシステム10、およびCD−ROMドライブ11が接続される。パーソナルコンピュータ1の各部はシステムバス7を通じて互いに信号やデータの入出力を行う。なお、パーソナルコンピュータ1へユーザが指示を与える入力装置はキーボード9に限らず、マウス等のポインティング・デバイスも含まれる。
ROM3は、パーソナルコンピュータ1のBIOS(バイオス)等が記憶される格納領域である。RAM4は、ハードディスク7から読み込まれるプログラムの格納領域としての他、ワークエリア、係数やパラメータ等の一時的な記憶領域として使用される。
表示装置5は、CPU2の指令により、必要な画像処理を行う表示制御部(図示せず)によって制御されており、画像処理結果を表示する。
CD−ROMドライブ11は、CD−ROMのデータを読み込んでハーディスク装置6に格納する読み込み手段であり、コード検出プログラムやコード検出の対象となる音響信号をパーソナルコンピュータ1に読み込む駆動装置である。CD−ROMドライブ11によって読み出されたプログラムやデータ(音響信号を含む)はハードディスク装置6に格納され、メインのプログラムはRAM4に格納される。
図3は、コード検出プログラムによる要部処理を示すフローチャートである。図3において、ステップS1では、コード検出対象楽曲の音響信号を読み込む。音響信号はCD−ROMドライブ11にセットされたCD−ROMからリッピングしたり、WAVファイルに予め格納されている楽音波形を指定したりして読み込むことができる。ステップS2では、読み込んだ音響信号におけるコード検出範囲を決定する。読み込まれた音響信号全部(つまり曲全体)をコード検出範囲としてもよいし、例えば、楽曲のイントロ部分やサビ部分の任意の小節に対してユーザが入力手段を用いて指定するのでもよい。ユーザがコード検出範囲を指定するためには、音響信号の波形を表示装置5に表示してユーザがキーボード9やポインティングデバイスを用いて範囲を指定できるようにする。
ステップS3では、拍子を設定する。拍子はユーザによって入力される指示に基づいて検出される。拍子の設定は、例えば、ステップS1で読み込まれた音響信号に基づいて楽曲を再生し、その再生音を聞いてユーザが拍子を判断し、判断された拍子を、例えば、表示装置5に表示される拍子入力画面から入力する。
ステップS4では、拍(ビート)の位置を検出する。拍は、ユーザが入力するタッピング(キーボード9の予定キーを叩くこと)に基づいて検出される。すなわち、音響信号に従って曲を再生し、ユーザが、この再生された曲を聞きながら、拍の位置を判断し、その位置でキーボード9を叩いて拍を入力する。タッピングの開始位置は小節の1拍目からとする。つまり、ユーザは再生された楽曲に合わせて1拍目を判断し、そのタイミングからタッピングを開始する。タッピング間隔が安定して所定のゆらぎの範囲に収まるようになったときに拍数(1分間あたりの拍数)を確定する。
ステップS5では、前記拍子と拍数とに基づいて、小節線位置を決定する。最初のタッピングは1拍目であるから、例えば4/4拍子の場合、タッピング開始時から開始してタッピング毎に1〜4の数字を順に当てはめ、拍数が確定した部分の直前の数字1〜4で示されるタッピング位置つまり4つの拍を含む小節を確定する。小節線は、4つの拍のうち第1拍目位置に引く。
こうして、1つの小節が確定されたならば、その小節のサイズで、その前後の音響信号に対しても小節線を引いていき、ステップS2で設定したコード検出範囲の中に、小節を1単位とするコード検出区間を決定する。コード検出区間はコードを検出するために音響信号のFFT演算をして音階音のパワースペクトルを求める区間である。
なお、コード検出区間の確定方法は、ユーザが入力する拍子や拍数に基づいて決定するものに限らない。例えば、拍子やタッピングによる拍間隔の入力に加えて、所定フレーム毎に音響信号をFFT演算して各フレーム毎の各音階音のパワーの変化度合を求め、この変化度合から平均的な拍間隔を求めてテンポ候補とし、このテンポ候補からタッピングテンポに近いものを選択して拍位置とするのでもよい。音響信号のFFT演算によって曲の小節線を検出する手法としては、本出願人が先に出願した特願2006−216362号の明細書(特開2008−40284号公報)に開示されたものを適用することができる。要するに、この実施形態では、コード検出区間として1小節を単位とする区間が指定されればよい。しかし、本発明は、1小節をコード検出区間とするのに限らず、特許文献1、2に記載したもののように、さらに小節を分割して1小節の幅を複数のコード検出区間としてもよい。
上述のようにして、コード検出範囲にコード検出区間が設定されれば、ステップS6で最初のコード検出区間から順にコード検出を行う。
次に、コード検出処理を説明する。図4は、コード検出処理の要部フローチャートである。図4において、ステップS60では、コード検出区間(1小節分)の音響信号から該コード検出区間のベース音を検出する。ベース音は、コード検出区間の1拍目に相当する部分の音階音のパワーに基づいて求められる。各音階音のパワーは、入力された音響信号から所定の時間間隔(フレーム)でFFT演算を行い、求められたパワースペクトルからフレーム毎に検出される。ステップS61では、該コード検出区間でのコード候補を検出する。
ステップS62では、ステップS61で検出されたコード候補の尤度(コード候補としてのふさわしさ)を、後述の数式1に従って計算する。ステップS63では、計算された尤度が最も大きいコード候補を検出コードとして、コード名を決定する。
本実施形態のコード検出プログラムでは、ベース音の検出やコード候補の検出の精度を向上させるために検出オプションを設定することができる。検出オプションを付加したベース音やコード候補の検出については後述するが、まず、検出オプションを付加しないベース音の検出手順およびコード候補の検出手順を説明する。
ベース音は、コード検出区間の1拍目に相当する音響信号の音階音のパワーに基づいて決定する。各音階音の基本周波数の上下50セントの範囲(100セントが半音である)の周波数に相当するパワースペクトルのうち、最大の値をその音階音のパワーとすることができる。全音階音(C1〜A6)について計算されたパワースペクトルのうち、ベース音の検出にはベース音検出音域(例えばC2〜B3)の音階音のパワーが用いられる。
音階音のパワーは、フレーム時間tにおけるi番目(最低音からi番目)の音階音のレベルをLi(t)とすると、フレーム番号fsからfeまでの間のi番目の音階音の平均的なパワーLavgi(fs,fe)は数式1で計算できる。
Figure 0005196550
この数式1で計算される平均的なパワーをすべての音階音i(0≦i≦69)について計算する。ここで計算したパワーは所定の記憶部に記憶しておく。そして、ベース音検出音域において平均的なパワーが最大となっている音階音をベース音として検出する。
コード検出区間(1小節)内で、1拍目に相当する部分における音階音のベース音が検出されたならば、次にコード候補検出に移る。コード候補の検出のためには、コード検出区間(1小節)の音階音のパワーが使われる。予め指定されたコード検出音域(例えばC3〜A6)での各音階音の平均的なパワーを12の音名(C、C♯、D、D♯、…、B)毎に積算して、各音名毎のパワーを計算する。そして、この音名毎のパワーが最も大きい音名を最大6つ抽出する。抽出された音名を最大6つとしたが、5つしか検出されないこともある。無音に近いコード検出区間で誤ってコード候補が検出されるのを防ぐため、平均的なパワーがしきい値以下のものがコード候補とされないようにしているためである。
検出されたベース音が、抽出した最大6つの音に含まれない場合は、このベース音も含めた最大7つの音からコード名を決定する。
コード候補の決定のためには、まず、検出された最大7つの音のいずれか一つをコードのルート音として仮定し、該ルート音と、所定のコードタイプにおいてルートから所定の音程にある構成音のすべてについて、パワーの合計を計算し、コード構成音の数で除算する。こうして、仮のルート音を含めた構成音からなるコード候補と、該コード候補の尤度が計算される。
例えば、パワーが大きい音として4つの音(ド、ミ、ソ、シ)が抽出された場合は、まず、「ド」をルート音と仮定して、予め設定した各コードタイプ毎の、ルート音を基準とした構成音の音程(インターバル)関係(図5参照)にある音階音のパワーを合計する。
図5は、コードタイプと各コードタイプ毎の構成音の音程(ルート音を基準とする音程)を示すテーブルの例である。この図5を参照して、パワーを検出する音名を決定する。例えば、メジャー(Maj)では、「ド」をルート音としたときに、該ルート音から半音4つ分の音程を有する音(ミ)と、ルート音から半音7つ分の音程を有する(ソ)とが選択される。そして、この3つの音について尤度を計算する。尤度は、「すべての構成音の平均的なパワーの合計」を「コード構成音の数」で除算した値である。
例えば、メジャー(Maj)コードに関して、ルート音を「ド」とした場合、該メジャーコードの構成音「ド」、「ミ」、「ソ」の音名の、コード検出区間における平均的なパワーを、C3からA6の範囲でオクターブ毎に積算し、オクターブ数で除算して平均したものを、各構成音毎に求め、これを合計したものを「すべての構成音の平均的なパワーの合計」とする。メジャーコードの場合、コード構成音の数は「3」である。
ここで、仮のルート音から算出される構成音が、抽出した最大7つの音に含まれない場合は、その音のパワーは「ゼロ」としてもよい。
こうしてすべてのコード候補に関して尤度が計算される。計算は図5に示したずべてのコードタイプについて行われる。例えば、抽出された音名が4つであった場合は、仮のルート音が4種類となるので、Majから13までの15種類のコードタイプと構成音数「4」とを乗算した数(60)のコード候補について尤度が計算される。
各コード候補について尤度が求められたならば、それらの尤度のうち、最大の尤度となったコード候補を検出コードとして確定する。確定したコード候補に対して設定されている仮のルートとコードタイプとを組み合わせてコード名を完成させる。なお、一般にメジャーコードはコードタイプを付加せず、ルート音のみ、例えば「C」というふうに表記する。
上述のように、一つのコード検出区間についてコード名が確定されると、次のコード検出区間(小節)に対しても同様にしてコードを検出する。指定したコード検出範囲についてコード名が検出されれば、コード検出区間毎に設けたコードトラックにコード名を貼り付けて、表示装置5に表示する。検出コード名を記載したリードシートとして表示してもよい。また、コード検出プログラムに予め設定しておくことができる内蔵リズムパターンを使って検出コードを演奏するように構成してもよい。
図1は、コード検出プログラムの要部を示す機能ブロック図である。図1において、音響信号入力部12は、音楽CDや波形ファイル等から音響信号を音響信号記憶部13に入力する手段である。コード検出範囲設定部14はユーザによって入力されるコード検出範囲の指定を受け入れ、音響信号記憶部13に格納されている音響信号に範囲を設定する。コード検出区間設定部15は、ユーザによって入力された拍子や拍によって小節線を確定し、コード検出区間を設定する。コード検出区間の設定方法は、これに限定されないのは、上述のとおりである。
パワー算出部16は、FFT演算により音響信号の音階音のパワースペクトルを計算する。計算されたパワースペクトルは音階音パワー記憶部17に記憶される。ベース音検出部18は、コード検出期間の1拍目に相当する部分について音響信号のパワーのうち、最も大きいパワーをもつ音をベース音として検出する。
コード候補検出部19は、コード検出区間における各音階音の平均的なパワーを求め、音名毎にパワーが最も大きい音名を所定数抽出する機能と、これら抽出された音名のそれぞれをルート音と仮定したコード候補を音程テーブル19aの音程に従って抽出する機能とを有する。音程テーブル19aの例は、図5に関して説明したとおり、所定数のコードタイプとその構成音のルートからの音程を示したものである。
尤度算出部20は、各コード候補毎に、ルート音を含めたすべての構成音の、コード検出区間における平均的なパワーの合計を、コード構成音の数で除算する機能を有する。コード名決定部21は、尤度算出部20で計算された尤度が最大であるコード候補を検出コード名として決定し、コード名表示部21に出力する。コード名表示部21は、コードトラックに貼り付けたコード名を表示装置5によって表示させる。
次に、コード検出精度を向上させることができる検出オプションについて説明する。第1の検出オプションとして、曲のジャンル指定によるベース音倍音構造を使ったベース音検出機能を加えることができる。上述したオプション無しのベース音検出においては、ベース音検出音域における平均的なレベルが最も大きい音をベース音としていた。しかし、この方法では、バスドラム等の音をベース音として誤検出してしまうことがある。特に、バスドラムの音量が大きいロック系の曲では誤検出のおそれがある。しかし、一般にバスドラムの音は、倍音構造を持たない点で、音色によって特有の倍音構造を有するベース音と異なる。そこで、本実施形態ではオプションとして、倍音構造を持たないバスドラム音などをベース音として誤検出することがないようにした。
上述のように、ベース音は、数式1で計算されるコード検出区間の1拍目に相当する部分における音階音のパワーLavgi(fs,fe)に基づいて検出する。このパワーLavgi(fs,fe)を以下のように補正する。すなわち、i番目の音階音の平均的なパワーLavgi(fs,fe)を、iを変数としてLavg(i)と表し、i番目の音階音について、その基音だけでなく、2倍音、3倍音、…、8倍音の倍音のパワーLavg(i)〜Lavg(i+36)を合算してi番目の音階音の平均的なパワーとする。この場合、各基音並びに倍音毎に係数を乗算する。
すなわち、i番目の音階音の平均的なパワーLavg(i)は次の数式2によって計算する。
Lavg(i)={(K1・Lavg(i))+(K2・Lavg(i+12))+(K3・Lavg(i+19))+(K4・Lavg(i+24))+(K5・Lavg(i+28))+(K6・Lavg(i+31))+(K7・Lavg(i+34))+(K8・Lavg(i+36))}÷(K1+K2+K3+K4+K5+K6+K7+K8)……数式2
係数(ジャンル係数)K1〜K8は曲のジャンルによって予め設定することができる数値である。この数式2から理解できるように、i番目の音階音の音高そのものである基音から8倍音までの音階音のパワーのそれぞれにジャンル係数を乗算した後、互いを合算し、さらにその合算値をジャンル係数K1〜K8の合計で除算してパワーを計算している。
例えば、係数K1〜K8は次の値に設定することができる。図6はジャンル係数K1〜K8の例である。この例では、ジャズに対しては基音の係数K1を極端に大きくし、基音のパワーを際だたせている。そして、基音以外の倍音では係数Kを小さくしている。一方、ロックに対しては、基音の係数K1はジャズに比べて極めて小さくし、2倍音以上の係数K2〜K8はジャズの場合と同じ値にしている。
ジャンルとしてユーザがジャズを指定した場合、基音を重視してベース音が検出される。このジャズの指定は、バスドラムがそれほど強く演奏されない曲やドラムレスの曲に対して行うのがよい。ジャズ系の曲ではウッドベース(コントラバス)が用いられることが多く、このウッドベースの音は減衰が激しく倍音も強く検出されないので、この点でも基音を重視した係数の設定は有意義である。
ジャンルとしてのロックを選択するのは、バスドラムが強く演奏されるロック系の曲の場合である。倍音のパワーは基音に対するパワーと同程度のまたは3分の1程度重視されているだけなので、バスドラムの音のように基音しか存在しない音は、倍音に対して相対的にパワーが小さく検出され、結果的に排除される。
この検出オプションを実現するためには、コード検出プログラムにおいて、前記ステップS60でのベース音検出の開始前に、ユーザに対してジャンルを指定させる表示を行うようにする。つまり、表示装置5上に、ユーザが指示を入力できるジャンル指定画面を表示できるようにする。例えば、ジャンル(ジャズ、ロック)を表示してスイッチ機能を持たせ、その表示をクリック操作することによってジャンル指定を受け付けられるようにするのがよい。
前記ベース音検出部18には、ジャンル別の係数K1〜K8を記述した係数テーブルを設けておく。ベース音検出部18は、数式1によってフレームfsからfeまでのi番目の音階音の平均的なパワーLavgi(fs,fe)を計算した後、指定されたジャンルに従って係数テーブルから係数K1〜K8を読み出し、数式2によって補正を行う。
なお、図6に挙げた係数K1〜K8の値はこれに限らないし、何倍音までを合算するかも変形可能である。また、倍音がFFT演算によって求めた音階音の範囲を超えるときは、数式2の計算では、パワーを「0」として合算する。
このようにして補正した各音階音の平均パワーが、ベース音検出音域内で最も大きい音をベース音として決定するが、計算された各音階音の平均パワーが所定のしきい値以下の音階音はベース音の候補から予め排除するようにするのがよい。したがって、ベース音検出音域内のすべての音について、補正した平均パワーがしきい値未満である場合は、ベース音は検出されない。
第2の検出オプションでは、コード候補に対してテンションレベルによる補正を行うことができる。上述のように、コード名の決定に際してコード候補から尤度が最大のものを、コード検出区間のコード名として決定した。第2の検出オプションでは、図5の音程テーブルを使用してコード候補を検出する段階でテンションレベルによるコード候補の絞り込みを行う。これによって、ユーザが好みの曲や曲のジャンル等、曲の特徴に応じたコード候補の絞り込みを行うことができる。例えば、3和音、4和音、および5和音以上等、複数のテンションレベルを指定できるようにし、それぞれのテンションレベルのコード候補を検出する。テンションレベルは、例えば1〜3およびNの4種類とする。図7は、テンションレベルと各テンションレベル毎の和音の絞り込みの例を示す図である。テンションレベル「0」では3和音のみを抽出するか、3和音を中心に抽出する。テンションレベル「1」では4和音のみを抽出するか、4和音を中心に抽出する。テンションレベル「2」では5和音以上のみ、または5和音以上を中心に抽出する。テンションレベル「N」では、絞り込みをせず、検出したコードをそのままコード候補として出力する。
コード候補検出部19では、図5の音程テーブルから、指定されたテンションレベルのコードタイプを選択し、このコードタイプの音程に対応する音を構成音とするコード候補を検出する。第2の検出オプションを実現するため、コード検出プログラムにおいて、前記ステップS61でのコード候補検出の開始前に、ユーザに対してテンションレベルを指定させる表示を行うようにする。つまり、表示装置5上に、ユーザがテンションレベルを指定できる表示を行うようにする。例えば、テンションレベル(1〜3、N)を表示装置5に表示して、その表示部にスイッチ機能を持たせ、その表示をクリック操作することによってテンションレベルを受け付けられるようにする。コード候補検出部19は、テンションレベルの指定を受け付けると、テンションレベルに応じたコード候補を出力するように構成する。
さらに、指定されたテンションレベルに応じて尤度の計算に補正を加えることができる。つまり、図5のテーブルを使って尤度を計算する際の、構成音の平均的なパワーの合計時に、各構成音の平均的なパワーに対してルート音からの音程に応じた係数を掛けてから、合計する。
図8は、テンションレベル毎のパワー補正係数を示す図である。図8において、テンションレベルが「0」の場合、7th(センブンス)〜13th(サーティンス)の音のパワーに掛ける係数を小さくしている。テンションレベルが「1」の場合は、セブンスの音のパワーにだけ「1」より大きい係数を掛けて、ナインスからサーティンスの音のパワーは小さくしている。テンションレベルが「2」の場合は、セブンスからサーティンスまでのすべての音のパワーに「1」より大きい係数を掛けている。テンションレベル「N」の場合は、セブンスからサーティンスまでの音のパワーに係数「1」を掛けて、計算されたパワーを補正しないようにしている。
このようにすれば、指定したテンションレベルに応じたテンションのパワーが相対的に大きくなるので、所望のコードが出やすくなるし、指定したテンションレベルのみが検出されるということもない。
ード名をコード検出区間毎のパワーの強い音から決定してもよいが、より検出精度を上げるために、さらに、コード進行を利用することができる。コード進行とは、複数のコードを連結したもので、コードの流れを表すものをいう。例えば、キーがCメジャーのとき、「Dm7→G7→C」というコード進行が最も一般的なコード進行として知られている。このように、コード進行には、よく使われるコード進行と一般的でないコード進行とがあるので、よく使われているコード進行に従ってコード検出すると、検出精度の向上が期待できる。
検出精度を上げるため、コード進行を利用する場合、まず、コード検出範囲のすべてのコード検出区間について、コード候補を検出して尤度の計算を行う。上記テンションレベルによる絞り込みや尤度の補正は、この処理の先に行っておく。そして、すべてのコード検出区間について、コード候補が検出されたら、2番目のコード検出区間から、曲の終わりに向かって順に1つ前のコード検出区間のコード候補のコード名を使って、そのコード検出区間のコード候補の尤度に補正を加える。
補正のため、コード進行データベースを用意する。そして、1つ前のコード検出区間のコード候補と今回のコード検出区間のコード候補とをコード進行データベースのコード進行と照らし合わせ、データベースのコード進行と一致する連結になっていれば、図5を使って計算された今回のコード候補の尤度を持ち上げる。また、禁則されているコード進行であったならば、尤度を下げるように補正する。
図9は、コード進行と、コード進行によって尤度に乗算する係数の一例を示す図である。図9では、一般的なコード進行には、大きい係数「1.3」を設定し、あまり一般的でないコード進行には、小さい係数「1.2、1.1等」を設定している。普通には使用されないコード進行に対しては、「1.0」より小さい「0.9」という係数を設定してある。
図9において、コード名を構成するローマ数字は、曲あるいは曲の中で、そのコードがある部分のキー(調)のトニック(主音)からの音程である。ユーザにキーを入力してもらう等して、そのキーに限定して尤度を補正することもできる。しかし、一般に曲の調性は、1曲の中でも部分毎に替わることが多いので、キーにかかわらず、前のコード検出区間のコード候補と対象としているコード検出区間のコード候補のルートの音程とコードタイプのみの一致によってコード進行の一致を判断すればよいものとすることができる。
なお、図9において、3和音として書かれているメジャー(Maj)コード(1、4等)には、メジャーコードだけでなく、M7のコードを含めてもよい。また、マイナー(m)コード(2m、3m等)には、マイナーのトライアド(3和音)だけでなく、m7のコードを含めてもよい。
なお、図9に示したコード進行はメジャーキー(長調)の場合であるが、マイナーキー(短調)の場合のコード進行データベースも同様に作成可能である。
図10は、検出オプションの選択を含めたコード検出処理の要部フローチャートである。ステップS70では、検出オプションとしてのジャンルをユーザに入力させる処理を行う。例えば、表示装置5に「曲のジャンルを入力して下さい」という文字を表示させ、ジャズかロックかを指定する選択ボタンを併せて表示させる。
ステップS71では、検出オプションとしてのテンションレベルの指定をユーザに要求する処理を行う。例えば、表示装置5に「テンションレベルを入力して下さい」という文字を表示させ、テンションレベル「1」〜「3」、「N」のいずれかを指定する選択ボタンを併せて表示させる。
ステップS72では、ユーザによって選択された曲のジャンルがジャズかロックかを判断し、この判断の結果により、ジャズかロックかによってそれぞれのジャンル係数K1〜K8を図6から読み出す。ステップS73では、数式1を使ってコード検出区間の1拍目の各音階音の平均的なパワーを計算する。ステップS74では、ステップS73で読み出されたジャンル係数K1〜K8を使ってコード検出区間の1拍目の各音階音の平均的なパワーを補正する。ステップS75では、補正されたコード検出区間の1拍目の各音階音の平均的なパワーが最大である音をベース音として抽出する。
ステップS76ではユーザが指定したテンションレベルを読み出す。ステップS77ではテンションレベルに応じた構成音数の和音に限定してコード候補を抽出する。テンションレベルに応じた構成音数の和音に限定しない場合は、このステップを省略する。ステップS78ではテンションレベルに応じてパワー補正係数を読み出す。ステップS79では、コード候補に関して、図5を使ってパワー補正係数を組み入れて、尤度を計算する。
ステップS80では、尤度が最大であるコード候補を検出コードとしてコード名を決定する。
コード進行による尤度の補正は、すべてのコード検出区間についてコード候補の抽出と尤度の計算が終わった後に行う。つまりステップS73〜S79の処理を全ての小節について実行した後、各小節毎にその小節で検出されたコード候補と直前の小節のコード候補との連結が所定のコード進行かどうかを判断する。そして、一般的なコード進行か一般的でないコード進行かによって尤度を補正して、最終的に、補正されたコード候補から最も尤度が大きいコード候補を検出コードとしてコード名を決定する。
上記実施形態では、尤度が最大のコード候補をそのコード検出区間のコード名とする場合を示したが、これに限らず、例えば、尤度が大きい順に複数のコード候補を表示装置5に表示させ、ユーザが選択できるようにしてもよい。この際、コード候補に基づくMIDI情報をサウンドシステム10に転送して和音を発音させ、それを聞いた結果、複数のコード候補から一つを検出コードとして選択できるようにしてもよい。
また、コード検出結果を表示する画面には、コード検出対象である曲の音響信号(元波形)による演奏と検出コードのMIDIによる和音の演奏とを同時に行わせる再生スイッチを設けることができる。ユーザによる再生スイッチの操作に応答して曲と検出コードによる和音とが演奏されるので、ユーザは両者を聞くことによって、検出コードが正しいかどうかを確認することができる。正しくない検出コードが曲と共に再生された場合、違和感のある聞こえになるので、ユーザは検出コードの間違いを発見することができる。この際、検出コードの確認を容易にするため、曲の演奏音と検出されたコード名による和音の演奏音とを個別に音量バランスを調整できるようにするとよい。
検出コードの間違いが発見されたときには、ユーザがコード名を修正することができるようにする。例えば、コードの第1候補に代えて第2候補を選択することができる。また、例えば、表示画面5上に、コードトラックに貼り付けられたコード名を表示し、その表示部をユーザが指定して修正できるようにする。修正のためのコード名候補を画面に表示し、ユーザがその中から修正コードとして選択できるようにするのがよい。画面上のデータ修正は周知の手法を採用して実施できる。
さらに、ユーザが検出コード名の修正を行った場合、この修正後のコードと、その1つ前のコード検出区間のコードとの連結からなるコード進行が、所定のコード進行データベース(図9参照)に含まれていない場合は、修正後のコードを含む前記コード進行をコード進行データベースに登録する。これによってその後該コード進行が検出され易くできる。つまり、ユーザが好む曲のジャンルにおいてよく使用されるコード進行がデータベースとして蓄積されることになるので、修正によって追加されるコード進行が増えるにつれて、コード進行を使った検出オプションによる効果が顕著になってくる。
さらに、コード名がユーザによって修正されてコード進行が新たに登録された場合、そのコード検出区間以降のコード検出区間においてコード検出を再度行うようにするとよい。ユーザが修正を行うことによって、修正されたコード検出区間のコードと、その直後のコード検出区間のコードとの連結によるコード進行が変化するので、変化後のコード進行を考慮したコード検出が後続のコード検出区間に対しても自動的に行われる。したがって、全体のコード名の確認と修正とにかかる時間を短縮することができる。
以上のように、本実施形態によれば、音響信号からコードを検出する際に、曲のジャンルやテンションレベルをユーザが指定することによって、ユーザの好む曲に関するコードを迅速に、かつ精度良く検出することができる。また、曲のジャンルに合わせて、よく使用されるコード進行を参照して適切なコードを見つけることができる。さらに、決定したコードを修正し、その修正結果をデータベースに含めることで、さらにコード検出精度を高めることができる。
なお、本実施形態では、拍子やビート位置をユーザが入力するとともに、コード検出区間の単位を小節とした例を示した。しかし、本発明はこれに限らず、特許文献1や2に示したプログラムのように、拍子やビート位置を音響信号から自動的に検出し、かつ1小節内で複数のコード検出区間を設定するコード検出プログラムにも適用できる。要は、音響信号に対して音階音のパワーを算出して、その検出結果に基づいてベース音を検出し、さらに、コード候補を検出し尤度を算出する際に、ジャンルやテンションレベル、あるいはさらにコード進行データベースによって検出コード候補を絞り込めるようにする点が重要である。
また、本実施形態では、音階音のパワーを求めるのにFFT演算によるパワースペクトルの算出を行ったが、音階音のパワーは、音響信号を各音階音に対応するバンドパスフィルタを通して求めても良い。
検出オプションを含んでいないコード検出プログラムの要部機能を示すブロック図である。 本発明の一実施形態に係るコード検出プログラムの実行に用いられるパーソナルコンピュータのハード構成を示す図である。 本発明の一実施形態に係るコード検出プログラムの要部を示すフローチャートである。 図3に示したコード検出処理の詳細なフローチャートである。 コードタイプと各コードタイプ毎の構成音のルート音からの音程を示すテーブルの例を示す図である。 ジャンルに応じて倍音毎に使用される係数の例を示す図である。 テンションレベルと各テンションレベル毎の和音の絞り込みの例を示す図である。 テンションレベル毎のパワー補正係数を示す図である。 コード進行と、コード進行毎に乗算する尤度の係数の一例を示す図である。 検出オプションの選択を含めたコード検出処理の要部フローチャートである。
符号の説明
1…パーソナルコンピュータ、 5…表示装置、 9…キーボード、 11…CD−ROMドライブ、 12…音響信号入力部、 13…音響信号記憶部、 15…コード検出区間設定部、 16…パワー算出部、 18…ベース音検出部、 19…コード候補検出部、 20…尤度算出部、 21…コード名決定部

Claims (6)

  1. コンピュータに読み込ませて実行させることにより、該コンピュータを音響信号のコード検出装置として機能させるコード検出プログラムにおいて、
    音響信号供給源から曲の音響信号を読み込むステップと、
    前記音響信号の各音階音のパワーを検出するステップと、
    前記音響信号に複数のコード検出区間を設定するステップと、
    前記パワーから、コード検出区間のそれぞれの1拍目に相当する部分における予定のベース音検出音域の各音階音のパワーを検出するステップと、
    各音階音のうち、パワーが最大である音をベース音として決定するステップと、
    コード検出区間全体の音階音からパワーが強い順に音名を予定数抽出し、該予定数の音名をそれぞれルート音とするコード候補を検出するステップと、
    前記コード候補についてすべてのコード構成音の平均的なパワーの大きさから尤度を計算するステップと、
    前記尤度が最大のコード候補をコードと決定するステップと、
    コード検出対象である曲のジャンルの入力を受け入れるステップとからなり、
    前記ベース音を決定するステップが、各音階音の基音および各倍音のパワーが最大の音をベース音とするステップと、前記ジャンルに応じて基音および倍音のパワーに別々に重み付けをするステップをさらに含んでいることを特徴とするコード検出プログラム。
  2. コンピュータに読み込ませて実行させることにより、該コンピュータを音響信号のコード検出装置として機能させるコード検出プログラムにおいて、
    音響信号供給源から曲の音響信号を読み込むステップと、
    前記音響信号の各音階音のパワーを検出するステップと、
    前記音響信号に複数のコード検出区間を設定するステップと、
    前記パワーから、コード検出区間のそれぞれの1拍目に相当する部分における予定のベース音検出音域の各音階音のパワーを検出するステップと、
    各音階音のうち、パワーが最大である音をベース音として決定するステップと、
    コード検出区間全体の音階音からパワーが強い順に音名を予定数抽出し、該予定数の音名をそれぞれルート音とするコード候補を検出するステップと、
    前記コード候補についてすべてのコード構成音の平均的なパワーの大きさから尤度を計算するステップと、
    前記尤度が最大のコード候補をコードと決定するステップと、
    テンションレベルの入力を受け入れるステップとからなり、
    前記コード候補を検出するステップが、テンションレベルに応じた構成音数のコードにコード候補を絞り込むステップをさらに含んでいることを特徴とするコード検出プログラム。
  3. 前記尤度を計算するステップが、検出されたコード候補の構成音についてルート音からの音程によりテンションレベルに応じたパワー補正を行うステップをさらに含んでいることを特徴とする請求項2記載のコード検出プログラム。
  4. 曲の音響信号の各音階音のパワーから、コード検出区間のそれぞれの1拍目に相当する部分における予定のベース音検出音域の各音階音のパワーが最大である音をベース音として決定するベース音検出手段と、
    コード検出区間全体の音階音からパワーが強い順に音名を予定数抽出し、該予定数の音名をそれぞれルート音とするコード候補を検出するコード候補検出手段と、
    前記コード候補についてすべてのコード構成音の平均的なパワーの大きさから尤度を計算する尤度算出手段とを有し、前記尤度が最大のコード候補をコードと決定するように構成されたコード検出装置において、
    コード検出対象である音響信号からなる曲のジャンルを指定するためのジャンル入力手段を具備し、
    前記ベース音検出手段が、各音階音の基音および倍音のパワーが最大の音をベース音とするとともに、前記ジャンルに応じて基音および倍音のパワーに別々に重み付けをするように構成されていることを特徴とするコード検出装置。
  5. 曲の音響信号の各音階音のパワーから、コード検出区間のそれぞれの1拍目に相当する部分における予定のベース音検出音域の各音階音のパワーが最大である音をベース音として決定するベース音検出手段と、
    コード検出区間全体の音階音からパワーが強い順に音名を予定数抽出し、該予定数の音名をそれぞれルート音とするコード候補を検出するコード候補検出手段と、
    前記コード候補についてすべてのコード構成音の平均的なパワーの大きさから尤度を計算する尤度算出手段とを有し、前記尤度が最大のコード候補をコードと決定するように構成されたコード検出装置において、
    テンションレベルを指定するためのテンションレベル入力手段を具備し、
    前記コード候補検出手段が、テンションレベルに応じた構成音数のコードにコード候補を絞り込む手段をさらに含んでいることを特徴とするコード検出装置。
  6. 前記尤度算出手段が、検出されたコード候補の構成音についてルート音からの音程によりテンションレベルに応じて補正されたパワーによって尤度を計算するように構成されていることを特徴とする請求項記載のコード検出装置。
JP2008137100A 2008-05-26 2008-05-26 コード検出装置およびコード検出プログラム Active JP5196550B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008137100A JP5196550B2 (ja) 2008-05-26 2008-05-26 コード検出装置およびコード検出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008137100A JP5196550B2 (ja) 2008-05-26 2008-05-26 コード検出装置およびコード検出プログラム

Publications (2)

Publication Number Publication Date
JP2009282464A JP2009282464A (ja) 2009-12-03
JP5196550B2 true JP5196550B2 (ja) 2013-05-15

Family

ID=41452944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008137100A Active JP5196550B2 (ja) 2008-05-26 2008-05-26 コード検出装置およびコード検出プログラム

Country Status (1)

Country Link
JP (1) JP5196550B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011074498A1 (ja) 2009-12-14 2011-06-23 日本ヴィクトリック株式会社 ハウジング形管継手
JP6168649B2 (ja) * 2013-03-28 2017-07-26 株式会社河合楽器製作所 コード検出装置及びプログラム
JP6151121B2 (ja) * 2013-07-31 2017-06-21 株式会社河合楽器製作所 コード進行推定検出装置及びコード進行推定検出プログラム
JP6232916B2 (ja) * 2013-10-18 2017-11-22 カシオ計算機株式会社 コードパワー算出装置、方法及びプログラム、並びにコード決定装置
JP7069819B2 (ja) * 2018-02-23 2022-05-18 ヤマハ株式会社 コード特定方法、コード特定装置およびプログラム
JP7425558B2 (ja) * 2019-08-07 2024-01-31 株式会社河合楽器製作所 コード検出装置及びコード検出プログラム
EP4064268A4 (en) * 2019-11-20 2024-01-10 Yamaha Corporation INFORMATION PROCESSING SYSTEM, KEYBOARD INSTRUMENT, INFORMATION PROCESSING METHOD, AND PROGRAM

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2583809B2 (ja) * 1991-03-06 1997-02-19 株式会社河合楽器製作所 電子楽器
JP3379110B2 (ja) * 1992-03-16 2003-02-17 ヤマハ株式会社 和音検出装置および和音検出方法
JP2001265330A (ja) * 2000-03-21 2001-09-28 Alpine Electronics Inc 旋律抽出装置および旋律抽出方法
JP2004271584A (ja) * 2003-03-05 2004-09-30 Konica Minolta Holdings Inc トナー製造方法、トナーおよび濃縮液
KR100731761B1 (ko) * 2005-05-02 2007-06-22 주식회사 싸일런트뮤직밴드 인터넷을 통한 음악제작 시스템 및 방법
JP2007156280A (ja) * 2005-12-08 2007-06-21 Sony Corp 音響再生装置、音響再生方法および音響再生プログラム
JP4823804B2 (ja) * 2006-08-09 2011-11-24 株式会社河合楽器製作所 コード名検出装置及びコード名検出用プログラム

Also Published As

Publication number Publication date
JP2009282464A (ja) 2009-12-03

Similar Documents

Publication Publication Date Title
JP4672613B2 (ja) テンポ検出装置及びテンポ検出用コンピュータプログラム
JP5147389B2 (ja) 楽曲提示装置、楽曲提示プログラム、楽曲提示システム、楽曲提示方法
JP4767691B2 (ja) テンポ検出装置、コード名検出装置及びプログラム
US8492637B2 (en) Information processing apparatus, musical composition section extracting method, and program
US9117432B2 (en) Apparatus and method for detecting chord
JP5196550B2 (ja) コード検出装置およびコード検出プログラム
JP4916947B2 (ja) リズム検出装置及びリズム検出用コンピュータ・プログラム
WO2007010637A1 (ja) テンポ検出装置、コード名検出装置及びプログラム
EP3929921B1 (en) Melody detection method for audio signal, device, and electronic apparatus
JP5229998B2 (ja) コード名検出装置及びコード名検出用プログラム
WO2023040332A1 (zh) 一种曲谱生成方法、电子设备及可读存储介质
JP4479701B2 (ja) 楽曲練習支援装置、動的時間整合モジュールおよびプログラム
JP3996565B2 (ja) カラオケ装置
JP6175812B2 (ja) 楽音情報処理装置及びプログラム
CN110867174A (zh) 自动混音装置
JP3489503B2 (ja) 音信号分析装置、音信号分析方法及び記憶媒体
JP5005445B2 (ja) コード名検出装置及びコード名検出用プログラム
JP4932614B2 (ja) コード名検出装置及びコード名検出用プログラム
JP4698606B2 (ja) 楽曲処理装置
JP5153517B2 (ja) コード名検出装置及びコード名検出用コンピュータ・プログラム
WO2019180830A1 (ja) 歌唱評価方法及び装置、プログラム
JP2006301019A (ja) ピッチ通知装置およびプログラム
JP5807754B2 (ja) 弦楽器演奏評価装置及び弦楽器演奏評価プログラム
JP3783687B2 (ja) 演奏練習装置及びプログラム
JP2008040258A (ja) 楽曲練習支援装置、動的時間整合モジュールおよびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110322

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121024

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121221

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: 20130130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130201

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5196550

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150