JP7516802B2 - テンポ検出装置、方法、及びプログラム - Google Patents

テンポ検出装置、方法、及びプログラム Download PDF

Info

Publication number
JP7516802B2
JP7516802B2 JP2020055114A JP2020055114A JP7516802B2 JP 7516802 B2 JP7516802 B2 JP 7516802B2 JP 2020055114 A JP2020055114 A JP 2020055114A JP 2020055114 A JP2020055114 A JP 2020055114A JP 7516802 B2 JP7516802 B2 JP 7516802B2
Authority
JP
Japan
Prior art keywords
value
tempo
beat
autocorrelation value
waveform
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
JP2020055114A
Other languages
English (en)
Other versions
JP2021156975A (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.)
Casio Computer Co Ltd
Original Assignee
Casio Computer 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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2020055114A priority Critical patent/JP7516802B2/ja
Publication of JP2021156975A publication Critical patent/JP2021156975A/ja
Application granted granted Critical
Publication of JP7516802B2 publication Critical patent/JP7516802B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、楽曲の波形データからテンポを検出する技術に関する。
楽曲の波形データから楽曲のテンポを検出する場合に、楽曲の波形データに係る入力データに対する自己相関演算により算出された周期性に基づいて、楽曲のテンポを判定する技術が知られている(例えば、特許文献1)。
特開2002-116754号公報
しかしながら、上記の従来技術においては、楽曲に特有の強度変化を含む場合などでは正確にテンポを検出するのが難しかった。
そこで、本発明は、テンポをより正確に検出することを目的とする。
態様の一例では、楽曲の波形データから波形強度の分布を示す楽曲波形強度データを取得し、楽曲波形強度データに基づく前記楽曲の所定の小節分の時間長でのビート波形データを取得し、各テンポ値での前記ビート波形データの基本自己相関値を算出し、楽曲に対応する拍子を指定し、基本自己相関値指定された拍子に基づいて決められる倍率で変更した計算用自己相関値を算出し、基本自己相関値に対して計算用自己相関値を重み付け加算した検出用自己相関値が最大となるテンポ値を楽曲のテンポとして検出する、制御部を備える。
本発明によれば、テンポをより正確に検出することが可能となる。
テンポ検出方法の処理ブロック図である。 ビート波形データ、自己相関値、及び重み付け加算した自己相関値の例を示すグラフ図である。 タイミング同期方法の処理ブロック図である。 3拍子の楽曲例におけるタイミングレベルの例を示すグラフ図である。 4拍子の楽曲例におけるタイミングレベルの例を示すグラフ図である。 テンポ検出及びタイミング同期の処理を実行するコンピュータのハードウェア構成例を示すブロック図である。 テンポ検出/タイミング同期処理の例を示すメインフローチャートである。 テンポ検出処理の詳細例を示すフローチャートである。 テンポ決定処理の詳細例を示すフローチャートである。 タイミング同期処理及び拍子検出処理の詳細例を示すフローチャートである。 同期オフセット時間検出処理の詳細例を示すフローチャートである。
以下、本発明を実施するためのテンポ検出方法およびタイミング同期方法の実施形態について図面を参照しながら詳細に説明する。図1は、本実施形態におけるテンポ検出方法の処理ブロック図である。テンポ検出方法は、
ステップS101:音声入力処理
ステップS102:エンベロープ検出処理
ステップS103:ビート波形検出処理
ステップS104:ビート強度検出処理
ステップS105:自己相関検出処理
ステップS106:テンポ決定処理
から構成される。
まず、ステップS101の音声入力処理は、マイク入力装置等から入力した音声を、一定のサンプリング周期(例えば、44.1KHz(キロヘルツ))でA/D(アナログ/デジタル)変換し、楽曲波形データを取得する。
次に、ステップS102のエンベロープ検出処理は、ステップS101の音声入力処理が取得した楽曲波形データを、一定のサンプル数(例えば、128サンプル)毎にブロック分割し、各ブロック毎に楽曲波形データの絶対値の平均である楽曲波形強度を算出する。更に、エンベロープ検出処理は、算出した楽曲波形強度に、弱い(カットオフ周波数の高い)ローパスフィルタ処理を実行することで、そのローパスフィルタ処理の演算結果として、エンベロープ波形を取得する。
次に、ステップS103のビート波形検出処理は、ステップS102のエンベロープ検出処理が算出した楽曲波形強度に対して、強い(カットオフ周波数の低い)ローパスフィルタ処理を実行し、サンプリング時刻が一致するサンプル同士で、エンベロープ波形から上記強いローパスフィルタ処理の演算結果を減算することで、その減算結果としてビート波形を取得する。
図2(a)は、ビート波形の例を示すグラフ図である。棒グラフ201の部分がエンベロープ波形である。折れ線グラフ202の部分が楽曲波形強度に強いローパスフィルタ処理を実行した結果を示しており、折れ線グラフ203がエンベロープ波形201から上記強いローパスフィルタ処理の結果202を対応するサンプル同士で減算して得られたビート波形(2倍拡大)である。ビート波形はエンベロープ波形からテンポと相関の低い定常波部が取り除かれた結果となっていることが理解される。
ステップS104のビート強度検出処理は、ステップS103で算出されたビート波形の絶対値にローパスフィルタ処理を実行し、その処理結果としてビート強度を算出する。
ここで、楽曲のテンポを、1分間あたりの拍数の単位:bpm(beats per minute)で表し、「テンポは60bpmである。」というような言い方をする。これは、1分間に60拍がカウントされる楽曲のテンポ(速さ)を示す。そして、図1において、ステップS105の自己相関検出処理は、テンポのbpm値から算出される楽曲の1小節分の時間長でのビート波形の自己相関値(基本自己相関値)を算出する。例えば、楽曲を4拍子とし、テンポ値をBPMとすると、1小節分の時間長TL(秒)は、
TL=60×4/BPM
となる。そして、楽曲の波形強度を算出する際の1ブロックのサンプル数をSPBとし、サンプリング周期(サンプル数/秒)をSPRとすると、ビート波形での1小節分のブロック数BLは、
BL=SPR×TL/SPB
として算出される。そして、ステップS105では、ビート波形のBL間隔での自己相関値が算出される。
図2(b)は、ステップS105で算出される自己相関値の例を示すグラフ図で、テンポ値130bpmのダンスミュージック曲の解析結果例である。横軸はbpm値で、検出範囲を60bpmから180bpmとしている。楽曲本来のテンポ値130bpm(4拍時間長)の位置204の他に、104bpm(5拍時間長)や173bpm(3拍時間長)等の位置にも強い相関が現れており、173bpmの位置205がこのグラフ図における自己相関値の最大値となってしまい、このままでは正確にテンポ検出することはできない。
そこで、図1のステップS106のテンポ決定処理では、ステップS105の自己相関検出処理にて算出された各bpm位置の自己相関値に4/5倍bpm及び4/3倍bpmの自己相関値(計算用自己相関値)を重み付け加算し、この重み付け加算の結果得られる自己相関値(検出用自己相関値)が最大となるbpm値がテンポとして決定される。
いま、あるbpm位置での自己相関値をACR[bpm]とすると、重み付け加算された自己相関値WACR[bpm]は、
計算例1:WACR[bpm]=ACR[bpm]
+((ACR[bpm×4/5]
+ACR[bpm×4/3])/2
-ACR[bpm])×WCF
計算例2:WACR[bpm]=ACR[bpm]
+((ACR[bpm×4/5]
+ACR[bpm×4/3])/2×WCF
となる。なお、bpm×4/5がbpmの検出範囲の下限未満の場合は、
WACR[bpm]=ACR[bpm]
+(ACR[bpm×4/3]
-ACR[bpm])×WCF
とし、bpm×4/3がbpmの検出範囲の上限を超える場合は、
WACR[bpm]=ACR[bpm]
+(ACR[bpm×4/5]
-ACR[bpm])×WCF
とする。
ここで、WCFは、ステップS104で算出されたビート強度に基づいて決定される0.0以上0.5以下の重み付け係数である。例えば、ビート強度(以下、この値を「BS」と呼ぶ)が0から4095の値を取るとすると、
BSが1024以下の場合は、WCF=0.0
BSが3096以上の場合は、WCF=0.5
BSが上記以外の場合は、WCF=(BS-1024)/4096
などとしてよい。
図2(c)は、ステップS106により重み付け加算された自己相関値の例を示すグラフ図であり、図2(b)の場合と同じ楽曲の解析結果例である。4/5倍bpm位置(5拍時間長)や4/3倍bpm位置(3拍時間長)での自己相関値が抑えられ、楽曲本来のテンポ値130bpm(4拍時間長)の位置206と自己相関値が最大値をとる位置207とが一致し、正確にテンポ検出が行われたことが理解される。
上述したテンポ決定処理は、4拍子を前提として4/5倍bpm位置及び4/3倍bpm位置の自己相関値を重み付け加算したが、後述のタイミング同期方法における拍子検出処理にて3拍子と判定された場合は、3/4倍bpm位置及び3/2倍bpm位置の自己相関値が重み付け加算される。
図3は、本実施形態におけるタイミング同期方法の処理ブロック図である。タイミング同期方法は、
ステップS301:拍子検出処理(1拍時間タイミングレベル算出)
ステップS302:同期オフセット時間検出処理(1小節タイミングレベル算出)
から構成される。
まず、ステップS301の拍子検出処理は、図1のテンポ検出処理により得られた1小節の1/3(3拍子)および1/4(4拍子)の時間長での繰返しで、タイミングレベルを検出する。
ステップS301で、タイミングレベルは、図1のステップS103のビート波形検出処理で検出されたビート波形(例えば、図2(a)の203)の現在値から前回値を減算して得られる値が、負の場合は値0、正の場合はその値に対して1拍時間分解能毎にローパスフィルタをかけて得られる値である。
ステップS301で、例えば1拍の時間分解能を96とすると、1/3時間長(3拍子)では1小節時間長が96×3=288のタイミングに分解され、1/4時間長(4拍子)では1小節時間長が96×4=384のタイミングに分解されて、1拍の時間分解能(96)毎の各タイミングレベル値が算出される。
そして、ステップS301において、得られたタイミングレベルの最大値と最小値との差の大小が比較され、拍子が決定される。つまり、1/3時間長のタイミングレベル値の最大値-最小値の方が、1/4時間長のタイミングレベル値の最大値-最小値よりも大きい場合は楽曲は3拍子であると決定される。逆に、1/4時間長のタイミングレベル値の最大値-最小値の方が、1/3時間長のタイミングレベル値の最大値-最小値よりも大きい場合は楽曲は4拍子であると決定される。
なお、ステップS301の拍子検出処理は、上記タイミングレベルの偏差によって楽曲の拍子を決定してもよい。更に、上記と同様の方法で、5拍子、7拍子等も検出可能である。
図4は、3拍子の楽曲例に対して、図3のステップS301の拍子検出処理で検出されたタイミングレベルの例を示すグラフ図である。図4(a)は、1小節長、図4(b)は1/2小節長、図4(c)は1/3小節長、図4(d)は1/4小節長である。図4(c)に示される1小節の1/3時間長におけるタイミングレベル値の最大値-最小値は、図4(d)に示される1/4時間長におけるタイミングレベル値の最大値-最小値よりも大きいことから、楽曲は3拍子であると判定され、正しく楽曲の拍子が検出される。
図5は、4拍子の楽曲例に対して、図3のステップS301の拍子検出処理で検出されたタイミングレベルの例を示すグラフ図である。図5(a)は、1小節長、図5(b)は1/2小節長、図5(c)は1/3小節長、図5(d)は1/4小節長である。図5(d)に示される1小節の1/4時間長におけるタイミングレベル値の最大値-最小値は、図5(c)に示される1/3時間長におけるタイミングレベル値の最大値-最小値よりも大きいことから、楽曲は4拍子であると判定され、正しく楽曲の拍子が検出される。
図3の説明に戻り、ステップS302の同期オフセット時間検出処理は、図1のテンポ検出処理により検出されたテンポbpm値により算出される1小節時間長(図1のステップS104の説明を参照)毎にタイミングレベルを検出する。
ステップS302において、例えば1拍の分解能を96とすると、図3のステップS301の拍子検出処理の結果が3拍子の場合には、1小節時間長が96×3=288のタイミングに分解され、その結果が4拍子の場合には、1小節時間長が96×4=384のタイミングに分解されて、各タイミング毎のタイミングレベル値が算出される。
そして、ステップS302において、上述のようにして得られたタイミングレベル値が最大値となるタイミングが、同期オフセット時間として検出される。ここで、同期オフセット時間は1小節時間長の繰返しで処理されるタイミングレベル検出における、楽曲本来の1小節先頭の開始時間である。
また、図3のステップS301の拍子検出処理で、楽曲が4拍子であると判定された場合、ステップS302の同期オフセット時間検出処理は、1小節の1/2時間長でタイミングレベルが検出され、そのレベル値が最大値となるタイミングT1と、T1から更に1小節の1/2時間を加算したタイミングT2における1小節時間長でのタイミングレベル値を比較し、大きい方のタイミングレベル値を同期オフセット時間としてもよい。このようなアルゴリズムにより、4拍裏等に定常的に入るアクセントから同期オフセット時間を誤検知する可能性を軽減することができる。
上述のステップS302の同期オフセット時間検出処理では、同期単位が1小節時間長とされたが、同期単位が1拍時間長とされる場合は、ステップS301の拍子検出処理における1拍時間長でタイミングレベル値が最大となるタイミングが同期オフセット時間とされてよい。
図3の拍/小節のタイミング同期方法は図1のテンポ検出処理で検出された1小節の時間長に基づいて処理を実行するため、検出されたテンポが変化した場合、処理がやり直しとなることにより、同期が完了するまでに時間がかかってしまうという問題がある。
このため、図3のテンポ検出処理のステップS103のビート波形検出処理にて得られるビート波形を、検出可能とする最低テンポ値のn(nは2以上の整数)小節時間分バッファリングしておき、テンポが変化したタイミングで新しいテンポのn小節時間分の処理を、バッファリングしておいたデータを用いて遡って実行し直すことにより、速やかに同期を再開することができるようになる。
図3のステップS301の拍子検出処理にて楽曲が3拍子であると判定された場合、本実施形態における図1のテンポ検出方法の自己相関検出処理の検出単位は4拍子を前提とするテンポbpm値であるため、検出bpm値を3/4倍して報告するものとする。
図6は、図1のテンポ検出方法の処理ブロック及び図3のタイミング同期方法の処理ブロックを実現可能なコンピュータのハードウェア構成の一例を示す図である。このコンピュータは、通常のパーソナルコンピュータのほか、スマートフォン、タブレット端末、デジタルカメラなどを含む。図6に示されるコンピュータは、CPU(Central Processing Unit)601、メモリ602、入力装置603、出力装置604、補助情報記憶装置605、可搬型記録媒体609が挿入される媒体駆動装置606、及びネットワーク接続装置607を有する。これらの構成要素は、バス608により相互に接続されている。図6に示される構成は図1のテンポ検出方法の処理ブロック及び図3のタイミング同期方法の処理ブロックを実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
メモリ602は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。
CPU(プロセッサ)601(制御部)は、例えば、メモリ602を利用して、図1のテンポ検出方法の処理ブロック及び図3のタイミング同期方法の処理ブロックに用いられる例えば図8乃至図11のフローチャートの処理に対応するプログラムを実行することにより、図1及び図2の各処理ブロックとして動作する。
入力装置603は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置604は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問合せ又は処理結果の出力に用いられる。
補助情報記憶装置605は、例えば、ハードディスク記憶装置、磁気ディスク記憶装置、光ディスク装置、光磁気ディスク装置、テープ装置、又は半導体記憶装置である。図1のテンポ検出方法の処理ブロック及び図3のタイミング同期方法の処理ブロックは、補助情報記憶装置605に図1及び図3の各処理ブロックに用いられる例えば図7乃至図11のフローチャートの処理を実行するプログラム及びデータを格納しておき、それらをメモリ602にロードして使用することができる。
媒体駆動装置606は、可搬型記録媒体609を駆動し、その記録内容にアクセスする。可搬型記録媒体609は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体609は、Compact Disk Read Only Memory(CD-ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体609に上述のプログラム及びデータを格納しておき、メモリ602にロードして使用することができる。
このように、上述のプログラム及びデータを格納するコンピュータ読取り可能な記録媒体は、メモリ602、補助情報記憶装置605、又は可搬型記録媒体609のような、物理的な(非一時的な)記録媒体である。
ネットワーク接続装置607は、例えばLocal Area Network(LAN)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。図6のコンピュータは、上述のプログラム又はデータを外部の装置からネットワーク接続装置607を介して受信し、それらをメモリ602にロードして使用することができる。
なお、図1及び図3の各処理ブロックが図6の全ての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザからの指示又は情報を入力する必要がない場合は、入力装置603が省略されてもよい。可搬型記録媒体609又は通信ネットワークを利用しない場合は、媒体駆動装置606又はネットワーク接続装置607が省略されてもよい。
図7は、図6の構成例を有するコンピュータによって実行される、テンポ検出/タイミング同期処理の例を示すメインフローチャートである。この処理は、図6において、CPU601が、補助情報記憶装置605などに記憶されたテンポ検出/タイミング同期処理プログラムをメモリ602にロードして実行する処理である。以下、随時図6を参照して説明する。
図7において、CPU601はまず、テンポ変数値を0(未定)に、拍子変数値を4拍子を示す値4に、また、同期オフセット時間変数値を0に、それぞれ初期設定する(ステップS701)。これらの変数値は、メモリ602に記憶される。
その後、CPU601は、ステップS702からステップS705の一連の処理を繰り返し実行する。
上記一連の処理において、CPU601はまず、テンポ検出処理を実行し、メモリ602に記憶されているテンポ変数に、未定値0、或いは、60bpmから180bpmの間の値を算出して設定する(ステップS702)。この処理の詳細例については、図8を用いて後述する。
上記一連の処理において、次にCPU601は、ユーザが入力装置603を構成する一部の特には図示しないスイッチなどにより、テンポ検出/タイミング同期処理の終了を指示したか否かを判定する(ステップS703)。
ステップS703の判定がYESならば、CPU601は、図7のメインフローチャートで示されるテンポ検出/タイミング同期処理を終了し、特には図示しない上位に制御プログラムの処理に戻る。
ステップS703の判定がNOならば、CPU601は、ステップS702のテンポ検出処理により検出されたメモリ602上のテンポ変数値が0でないか否かを判定する(ステップS704)。
テンポ変数値が未定値0(ステップS704の判定がNO)である場合には、CPU601は、制御をステップS702に戻して前述した一連の処理の繰返しを続行する。
テンポ変数値が未定値0以外(ステップS704の判定がYES)である場合には、CPU601は、タイミング同期処理を実行することにより、メモリ602に記憶されている拍子変数に3拍子、4拍子、又は5拍子の何れかを示す値3、4、又は5を取得し、また、メモリ602に記憶されている同期オフセット時間変数に、値0からn(nは自然数)の何れかを算出して設定する。
その後、CPU601は、制御をステップS702に戻して前述した一連の処理の繰返しを続行する。
図8は、図7のステップS702のテンポ検出処理の詳細例を示すフローチャートである。ここでは、CPU601は、図1の各処理ブロックで説明したのと同様のテンポ検出処理を実行する。
即ちまず、CPU601は、図1のステップS101と同様の、音声入力処理を実行する(ステップS801)。ステップS801の処理において、CPU601は、ユーザが入力装置603の一部を構成するマイク入力装置等から入力した音声を、同じく入力装置603の一部を構成する特には図示しないA/D(アナログ/デジタル)コンバータによって、一定のサンプリング周期(例えば、44.1KHz(キロヘルツ))でA/D変換し、楽曲波形データを取得し、メモリ602に記憶させる。
次に、CPU601は、図1のステップS102と同様の、エンベロープ検出処理を実行する(ステップS802)。ステップS802の処理において、CPU601は、ステップS801の音声入力処理が取得しメモリ602に記憶させた楽曲波形データを、一定のサンプル数(例えば、128サンプル)毎にブロック分割し、各ブロック毎に楽曲波形データの絶対値の平均である楽曲波形強度データを順次算出し、メモリ602に記憶させる。更に、CPU601は、算出しメモリ602に記憶させた楽曲波形強度データを順次読み出しながら、それに対して弱い(カットオフ周波数の高い)ローパスフィルタ処理を実行し、そのローパスフィルタ処理の演算結果として、エンベロープ波形データを順次取得し、メモリ602に記憶させる。
次に、CPU601は、ステップS103と同様のビート波形検出処理を実行する(ステップS803)。ステップS803の処理において、CPU601は、ステップS802のエンベロープ検出処理で算出しメモリ602に記憶させた楽曲波形強度データを順次読出しながら、それに対して強い(カットオフ周波数の低い)ローパスフィルタ処理を実行し、サンプリング時刻が一致するサンプル同士で、メモリ602から順次読み出したエンベロープ波形データのサンプルから上記強いローパスフィルタ処理の演算結果データのサンプルを減算することで、その減算結果としてビート波形データを順次取得し、メモリ602に記憶させる。
続いて、CPU601は、図1のステップS104と同様の、ビート強度検出処理を実行する(ステップS804)。ステップS804の処理において、CPU601は、ステップS803で算出しメモリ602に記憶させたビート波形データを順次読み出し、その各サンプルの絶対値を算出し、その絶対値にローパスフィルタ処理を実行し、その処理結果としてビート強度データを算出し、メモリ602に記憶させる。
続いて、CPU601は、図1のステップS105と同様の、自己相関検出処理を実行する(ステップS805)。ステップS805の処理において、CPU601は、想定されるテンポ範囲の各bpm値から算出される楽曲の1小節分の時間長でのビート波形の自己相関値を算出する。
そして、CPU601は、図1のステップS106と同様の、テンポ決定処理を実行する(ステップS806)。ステップS806の処理の後、CPU601は、図8のフローチャートで示される図7のステップS702のテンポ検出処理を終了する。
図9は、図8のステップS906のテンポ決定処理の詳細例を示すフローチャートである。
図9において、まずCPU601は、ユーザが入力装置603の一部を構成するスイッチによって3拍子を指定することにより、メモリ602に設定された拍子変数の値が、3であるか否かを判定する(ステップS901)。
ステップS901の判定がYESならば、CPU601は、図8のステップS805の自己相関検出処理にて算出されメモリ602に記憶されている各bpm位置の自己相関値に、3/2倍bpm及び3/4倍のbpmの自己相関値を重み付け加算する(ステップS902)。
ステップS901の判定がNOならば、CPU601は、ユーザが入力装置603の一部を構成するスイッチによって5拍子を指定することにより、メモリ602に設定された拍子変数の値が、5であるか否かを判定する(ステップS903)。
ステップS903の判定がYESならば、CPU601は、図8のステップS805の自己相関検出処理にて算出されメモリ602に記憶されている各bpm位置の自己相関値に、5/4倍bpm及び5/6倍のbpmの自己相関値を重み付け加算する(ステップS904)。
ステップS903の判定がNOならば、ユーザが入力装置603の一部を構成するスイッチによって4拍子を指定することにより、メモリ602に設定された拍子変数の値が4になっている。この場合、CPU601は、図8のステップS805の自己相関検出処理にて算出されメモリ602に記憶されている各bpm位置の自己相関値に、4/3倍bpm及び4/5倍のbpmの自己相関値を重み付け加算する(ステップS905)。
ステップS902、S904、又はS905の処理の後、CPU601は、ステップS902、S904、又はS905の処理での重み付け加算の結果得られる自己相関値が最大となるbpm値を検出する(ステップS906)。
そして、CPU601は、ステップS906で検出したbpm値を、新たなテンポ値として、メモリ602に記憶されているテンポ変数の値を上記bpm値で置き換えて更新する(ステップS907)。
その後、CPU601は、図9のフローチャートで示される図8のステップS806のテンポ決定処理を終了する。
図10(a)は、図7のステップS705のタイミング同期処理を示すフローチャートである。このタイミング同期処理において、CPU601はまず、図3のステップS301と同様の拍子検出処理を実行し(ステップS1001)、次に図3のステップS302と同様の同期オフセット時間検出処理を実行し(ステップS1002)、その後、図10のフローチャートで示される図7のステップS705の処理を終了する。
図10(b)は、図10(a)の拍子検出処理の詳細例を示すフローチャートである。図10(b)において、CPU601はまず、図3のステップS301で説明したようにして、図7のステップS702のテンポ検出処理により得られた1小節の1/3(3拍子)の時間長での繰返しで、タイミングレベルを検出し、メモリ602に記憶させる(ステップS1011)。
図10(b)において、次にCPU601は、図3のステップS301で説明したようにして、図7のステップS702のテンポ検出処理により得られた1小節の1/4(4拍子)の時間長での繰返しで、タイミングレベルを検出し、メモリ602に記憶させる(ステップS1012)。
図10(b)において、次にCPU601は、上記と同様にして、図7のステップS702のテンポ検出処理により得られた1小節の1/5(5拍子)の時間長での繰返しで、タイミングレベルを検出し、メモリ602に記憶させる(ステップS1013)。
その後、CPU601は、ステップS1011、S1012、及びS1013で検出されメモリ602に記憶された各タイミングレベル値の偏差(又はステップS301で説明した最大値-最小値)が最も大きいタイミングレベル値が検出されたときの拍子を検出する(ステップS1014)。
そして、CPU601は、ステップS1014で検出した拍子の値を、新たな拍子値として、メモリ602に記憶されている拍子変数の値を上記拍子値で置き換えて更新する(ステップS1015)。
その後、CPU601は、図10(b)のフローチャートで示される図10(a)のステップS1001の拍子検出処理を終了する。
図11は、図10(a)の同期オフセット時間検出処理の詳細例を示すフローチャートである。図11において、CPU601はまず、図3のステップS302で説明したようにして、図7のステップS702のテンポ検出処理により検出されたテンポbpm値により算出される1小節時間長毎にタイミングレベルを検出する(ステップS1101)。
次に、CPU601は、図3のステップS302で説明したようにして、ステップS1101で検出されたタイミングレベル値が最大値となるタイミングを、同期オフセット時間として検出する(ステップS1102)。
そして、CPU601は、ステップS1102で検出した最大値を、新たな同期オフセット時間として、メモリ602に記憶されている同期オフセット時間変数の値を上記最大値で置き換えて更新する(ステップS1103)。
その後、CPU601は、図11のフローチャートで示される図10(a)のステップS1002の同期オフセット時間検出処理を終了する。
以上説明した実施形態により、例えばフーリエ変換を用いる方法よりも少ない処理量でテンポ検出および、小節や拍のタイミング同期がより正確に行えるようになり、楽曲に対してリアルタイムにフィルインやテンポ同期エフェクト等を付加することなどが可能となる。
以上、開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができる。
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
楽曲の波形データから波形強度の分布を示す楽曲波形強度データを取得し、
前記楽曲波形強度データに基づく自己相関を検出して周期毎の強度を示す基本自己相関値を算出し、
前記楽曲に対応する拍子を指定し、
前記基本自己相関値の周期を前記指定された拍子に基づいて決められる倍率で変更した計算用自己相関値を算出し、
前記基本自己相関値に対して前記計算用自己相関値を重み付け加算した検出用自己相関値が最大となる部分を特定し、
前記特定した部分に対応する周期を前記楽曲のテンポとして検出する、
制御部を備えたテンポ検出装置。
(付記2)
付記1に記載のテンポ検出装置において、
前記指定された拍子をXとした場合に、前記倍率はX/(X-1)倍及びX/(X+1)倍であり、
前記制御部は更に、前記基本自己相関値の周期をX/(X-1)倍した前記計算用自己相関値と、前記基本自己相関値の周期をX/(X+1)倍した前記計算用自己相関値と、を前記基本自己相関値に対して重み付け加算して前記検出用自己相関値を算出するテンポ検出装置。
(付記3)
付記1又は2に記載のテンポ検出装置において、
前記制御部は更に、前記重み付け加算を行う場合の重み値を、前記楽曲の波形データの強度により調整するテンポ検出装置。
(付記4)
付記1乃至3に記載のテンポ検出装置において、
前記制御部は更に、前記楽曲の波形データから取得した前記楽曲波形強度データに対してカットオフ周波数の高いローパスフィルタ処理を行った結果としてエンベロープ波形データを取得し、取得した前記エンベロープ波形データに対してカットオフ周波数の低いローパスフィルタ処理を行った結果を前記エンベロープ波形データから減算することでビート波形を取得し、前記ビート波形の自己相関を検出して前記基本自己相関値を算出するテンポ検出装置。
(付記5)
付記1乃至4に記載のテンポ検出装置において、
前記制御部は更に、前記重み付け加算を行う場合の重み値を、前記ビート波形の強度により調整するテンポ検出装置。
(付記6)
付記1乃至5に記載のテンポ検出装置において、
前記制御部は更に、
検出された前記楽曲のテンポに基づいて、1小節の1/3時間長及び1小節の1/4時間長を含む複数の時間長を指定し、
前記ビート波形の微分値に基づく波形を、前記指定されたそれぞれの時間長で周期的に合成することで複数のタイミングレベル値を算出し、
前記タイミングレベル値の分散が最大となる時間長に対応する拍子を、前記楽曲の拍子として検出するテンポ検出装置。
(付記7)
楽曲の波形データから波形強度の分布を示す楽曲波形強度データを取得し、
前記楽曲波形強度データに基づく自己相関を検出して周期毎の強度を示す基本自己相関値を算出し、
前記楽曲に対応する拍子を指定し、
前記基本自己相関値の周期を前記指定された拍子に基づいて決められる倍率で変更した計算用自己相関値を算出し、
前記基本自己相関値に対して前記計算用自己相関値を重み付け加算した検出用自己相関値が最大となる部分を特定し、
前記特定した部分に対応する周期を前記楽曲のテンポとして検出する、
テンポ検出方法。
(付記8)
楽曲の波形データから振幅強度のエンベロープを取得し、
前記エンベロープに基づく自己相関を検出して周期毎の強度を示す基本自己相関値を算出し、
前記楽曲に対応する拍子を指定し、
前記基本自己相関値の周期を前記指定された拍子に基づいて決められる倍率で変更した計算用自己相関値を算出し、
前記基本自己相関値に対して前記計算用自己相関値を重み付け加算した検出用自己相関値が最大となる部分を特定し、
前記特定した部分に対応する周期を前記楽曲のテンポとして検出する、
処理をコンピュータに実行させるためのプログラム。
S101 音声入力処理
S102 エンベロープ検出処理
S103 ビート波形検出処理
S104 ビート強度検出処理
S105 自己相関検出処理
S106 テンポ決定処理
201 エンベロープ波形
202 楽曲波形強度
203 ビート波形
204、206 楽曲本来のテンポ値
205、207 自己相関値の最大値
S301 拍子検出処理
S302 同期オフセット時間検出処理
601 CPU
602 メモリ
603 入力装置
604 出力装置
605 補助情報記憶装置
606 媒体駆動装置
607 ネットワーク接続装置
608 バス
609 可搬型記録媒体

Claims (7)

  1. 楽曲の波形データから波形強度の分布を示す楽曲波形強度データを取得し、
    前記楽曲波形強度データに基づく前記楽曲の所定の小節分の時間長でのビート波形データを取得し、
    各テンポ値での前記ビート波形データの基本自己相関値を算出し、
    前記楽曲に対応する拍子を指定し、
    前記基本自己相関値前記指定された拍子に基づいて決められる倍率で変更した計算用自己相関値を算出し、
    前記基本自己相関値に対して前記計算用自己相関値を重み付け加算した検出用自己相関値が最大となるテンポ値を前記楽曲のテンポとして検出する、
    制御部を備え
    前記指定された拍子をXとした場合に、前記倍率はX/(X-1)倍及びX/(X+1)倍であり、
    前記制御部は、前記重み付け加算として、前記基本自己相関値をX/(X-1)倍した前記計算用自己相関値と、前記基本自己相関値をX/(X+1)倍した前記計算用自己相関値と、を前記基本自己相関値に対して重み付け加算して前記検出用自己相関値を算出する、テンポ検出装置。
  2. 請求項に記載のテンポ検出装置において、
    前記制御部は更に、前記重み付け加算を行う場合の重み値を、前記楽曲の波形データの強度により調整するテンポ検出装置。
  3. 請求項1又は請求項2に記載のテンポ検出装置において、
    前記制御部は更に、前記楽曲の波形データから取得した前記楽曲波形強度データに対してカットオフ周波数の高いローパスフィルタ処理を行った結果としてエンベロープ波形データを取得し、取得した前記エンベロープ波形データに対してカットオフ周波数の低いローパスフィルタ処理を行った結果を前記エンベロープ波形データから減算することでビート波形データを取得し、各テンポ値での前記ビート波形データ記基本自己相関値を算出するテンポ検出装置。
  4. 請求項1から請求項3の何れか一項に記載のテンポ検出装置において、
    前記制御部は更に、前記重み付け加算を行う場合の重み値を、前記ビート波形データの強度により調整するテンポ検出装置。
  5. 請求項1から請求項4の何れか一項に記載のテンポ検出装置において、
    前記制御部は更に、
    検出された前記楽曲のテンポに基づいて、1小節の1/3時間長及び1小節の1/4時間長を含む複数の時間長を指定し、
    前記ビート波形データの微分値に基づく波形を、前記指定されたそれぞれの時間長で周期的に合成することで複数のタイミングレベル値を算出し、
    前記タイミングレベル値の分散が最大となる時間長に対応する拍子を、前記楽曲の拍子として検出するテンポ検出装置。
  6. 楽曲の波形データから波形強度の分布を示す楽曲波形強度データを取得し、
    前記楽曲波形強度データに基づく前記楽曲の所定の小節分の時間長でのビート波形データを取得し、
    各テンポ値での前記ビート波形データの基本自己相関値を算出し、
    前記楽曲に対応する拍子を指定し、
    前記基本自己相関値を、前記指定された拍子をXとした場合に、X/(X-1)倍及びX/(X+1)倍の倍率で変更した計算用自己相関値を算出し、
    前記基本自己相関値に対して、前記基本自己相関値をX/(X-1)倍した前記計算用自己相関値と、前記基本自己相関値をX/(X+1)倍した前記計算用自己相関値と、を重み付け加算した検出用自己相関値が最大となるテンポ値を前記楽曲のテンポとして検出する、
    テンポ検出方法。
  7. 楽曲の波形データから振幅強度のエンベロープを取得し、
    前記エンベロープに基づく前記楽曲の所定の小節分の時間長でのビート波形データを取得し、
    各テンポ値での前記ビート波形データの基本自己相関値を算出し、
    前記楽曲に対応する拍子を指定し、
    前記基本自己相関値を、前記指定された拍子をXとした場合に、X/(X-1)倍及びX/(X+1)倍の倍率で変更した計算用自己相関値を算出し、
    前記基本自己相関値に対して、前記基本自己相関値をX/(X-1)倍した前記計算用自己相関値と、前記基本自己相関値をX/(X+1)倍した前記計算用自己相関値と、を重み付け加算した検出用自己相関値が最大となるテンポ値を前記楽曲のテンポとして検出する、
    処理をコンピュータに実行させるためのプログラム。
JP2020055114A 2020-03-25 2020-03-25 テンポ検出装置、方法、及びプログラム Active JP7516802B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020055114A JP7516802B2 (ja) 2020-03-25 2020-03-25 テンポ検出装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020055114A JP7516802B2 (ja) 2020-03-25 2020-03-25 テンポ検出装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2021156975A JP2021156975A (ja) 2021-10-07
JP7516802B2 true JP7516802B2 (ja) 2024-07-17

Family

ID=77918198

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020055114A Active JP7516802B2 (ja) 2020-03-25 2020-03-25 テンポ検出装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP7516802B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013508767A (ja) 2009-10-30 2013-03-07 ドルビー インターナショナル アーベー 複雑さがスケーラブルな知覚的テンポ推定
JP2014112128A (ja) 2012-12-05 2014-06-19 Yamaha Corp 拍情報推定装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013508767A (ja) 2009-10-30 2013-03-07 ドルビー インターナショナル アーベー 複雑さがスケーラブルな知覚的テンポ推定
JP2014112128A (ja) 2012-12-05 2014-06-19 Yamaha Corp 拍情報推定装置

Also Published As

Publication number Publication date
JP2021156975A (ja) 2021-10-07

Similar Documents

Publication Publication Date Title
JP6017687B2 (ja) オーディオ信号分析
JP4650662B2 (ja) 信号処理装置および信号処理方法、プログラム、並びに記録媒体
JP6123995B2 (ja) 音響信号分析装置及び音響信号分析プログラム
US9087501B2 (en) Sound signal analysis apparatus, sound signal analysis method and sound signal analysis program
CN109326270B (zh) 音频文件的生成方法、终端设备及介质
JP2008275975A (ja) リズム検出装置及びリズム検出用コンピュータ・プログラム
CN104599663A (zh) 歌曲伴奏音频数据处理方法和装置
JP6252147B2 (ja) 音響信号分析装置及び音響信号分析プログラム
JP6295794B2 (ja) 音響信号分析装置及び音響信号分析プログラム
JP6123574B2 (ja) コード抽出装置、方法、およびプログラム
JPH10307580A (ja) 音楽検索方法および装置
JP7516802B2 (ja) テンポ検出装置、方法、及びプログラム
JP2010097084A (ja) 携帯端末、拍位置推定方法および拍位置推定プログラム
JP4347815B2 (ja) テンポ抽出装置およびテンポ抽出方法
JP6286933B2 (ja) 小節間隔推定およびその推定のための特徴量抽出を行う装置、方法、およびプログラム
JP6232916B2 (ja) コードパワー算出装置、方法及びプログラム、並びにコード決定装置
JP2013015601A (ja) 音源の識別装置および音源に連動する情報処理装置
JP5879813B2 (ja) 複数音源の識別装置および複数音源に連動する情報処理装置
JP2002287744A (ja) 波形データ分析方法、波形データ分析装置およびプログラム
JPH05100661A (ja) 小節境界時刻抽出装置
JP2014109603A (ja) 演奏評価装置、演奏評価方法
JP2012118417A (ja) 特徴波形抽出システムおよび特徴波形抽出方法
JP2010056688A (ja) ディジタル信号の同期演算処理方法及び同期演算処理プログラム
JP2020154149A (ja) オーディオ信号の処理方法
JPS60175099A (ja) ピツチ抽出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230315

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20231005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240319

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240617

R150 Certificate of patent or registration of utility model

Ref document number: 7516802

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150