説明

グリッド検出装置及びプログラム

【課題】曲波形データ内のグリッドの位置を検出することができるグリッド検出装置及びプログラムを提供することを課題とする。
【解決手段】曲波形データを時間的にずらしながら複数の自己相関値を演算する第1の自己相関演算部(2011)と、前記第1の自己相関演算部により演算された複数の自己相関値を基に前記曲波形データ内のグリッドの位置を決定するグリッド決定部(2012)とを有することを特徴とするグリッド検出装置が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グリッド検出装置及びプログラムに関する。
【背景技術】
【0002】
音楽CD等の複数の楽器音の混ざった音楽音響信号(オーディオ信号)からビート位置を検出するテンポ検出装置として、下記の特許文献1が知られている。特許文献1では、ビート位置の検出方法として、入力波形を所定の時間間隔(以下、フレーム)でFFT演算し、求められたパワースペクトルから各音階音のパワーを求め、この各音階音のパワーのフレーム毎の増分値を計算し、これを全音階音で合計してフレーム毎の全体の音の変化度合いを求め、このフレーム毎の全体の音の変化度合いの自己相関を計算して周期性を求め、この自己相関の値が最大となるフレーム間隔から平均的なビート間隔(いわゆるテンポ)を求める。
【0003】
また、下記の特許文献2には、ビート検出波形の先頭を演奏させながら、タッピング検出部を用い、ユーザにビート位置を、タッピングしてもらうようにし、タッピングの揺らぎが揺らぎ算出部で一定の範囲内であると判定されたら、テンポ候補検出部で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ検出装置が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−52394号公報
【特許文献2】特開2008−40284号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1の方法では、曲の半分や2倍のテンポに誤ってビート間隔を決定してしまったり、裏拍にアクセントのある曲では、ビート位置が裏拍になってしまうことがある。また、特許文献2の方法では、ビート位置をユーザにタッピングしてもらわなければビート間隔を選択できない課題がある。
【0006】
本発明の目的は、曲波形データ内においてビート以下の間隔のグリッドの位置を検出することができるグリッド検出装置及びプログラムを提供することである。
【課題を解決するための手段】
【0007】
本発明のグリッド検出装置は、曲波形データを時間的にずらしながら複数の自己相関値を演算する第1の自己相関演算部と、前記第1の自己相関演算部により演算された複数の自己相関値を基に前記曲波形データ内のグリッドの位置を決定するグリッド決定部とを有することを特徴とする。
【0008】
また、本発明のプログラムは、曲波形データを時間的にずらしながら複数の自己相関値を演算する第1の自己相関演算ステップと、前記第1の自己相関演算ステップにより演算された複数の自己相関値を基に前記曲波形データ内のグリッドの位置を決定するグリッド決定ステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【0009】
本発明によれば、曲波形データ内のグリッドの位置を検出することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施形態によるグリッド検出装置のグリッド検出方法を示すフローチャートである。
【図2】本発明の実施形態によるグリッド検出装置のグリッド検出方法を示すフローチャートである。
【図3】本発明の実施形態によるグリッド検出装置のグリッド検出方法を示すフローチャートである。
【図4】ステレオの曲波形データをモノラルの曲波形データに変換する方法を示す図である。
【図5】曲波形データのローパスフィルタ処理を示す図である。
【図6】曲波形データの間引き処理を示す図である。
【図7】曲波形データの正規化処理を示す図である。
【図8】図8(A)及び(B)は高速フーリエ変換処理を示す図である。
【図9】フレーム毎のノートナンバの各音のパワーを示す図である。
【図10】増分値データを示す図である。
【図11】自己相関演算を示す図である。
【図12】自己相関値及びずらしたフレーム数を示す図である。
【図13】図13(A)〜(C)はグリッドの基点の検出方法を示す図である。
【図14】図14(A)及び(B)は増分値データと等間隔関数との相関演算を示す図である。
【図15】図15(A)〜(C)はグリッドのパワー配列の生成処理を示す図である。
【図16】図16(A)〜(C)はグリッド配列の自己相関演算を示す図である。
【図17】自己相関値及びずらしたグリッド数を示す図である。
【図18】自己相関値に対する係数を示す図である。
【図19】本発明の実施形態によるグリッド検出装置のハードウエア構成例を示すブロック図である。
【図20】図19のコンピュータのプログラムの機能を説明するためのブロック図である。
【発明を実施するための形態】
【0011】
図19は、本発明の実施形態によるグリッド検出装置(コンピュータ)のハードウエア構成例を示すブロック図である。グリッド検出装置は、例えばパーソナルコンピュータで構成される。バス1901には、中央処理装置(CPU)1902、ROM1903、RAM1904、ネットワークインタフェース1905、入力装置1906、出力装置1907及び外部記憶装置1908が接続されている。
【0012】
CPU1902は、データの処理又は演算を行うと共に、バス1901を介して接続された各種構成要素を制御するものである。ROM1903には、予めCPU1902の制御手順(コンピュータプログラム)を記憶させておき、このコンピュータプログラムをCPU1902が実行することにより、起動する。外部記憶装置1908にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM1904にコピーされて実行される。RAM1904は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。外部記憶装置1908は、例えばハードディスク記憶装置やCD−ROM等であり、電源を切っても記憶内容が消えない。CPU1902は、RAM1904内のコンピュータプログラムを実行することにより、図1〜図3のグリッド検出装置の処理を行う。
【0013】
ネットワークインタフェース1905は、インターネット等のネットワークに接続するためのインタフェースである。入力装置1906は、例えばキーボード及びマウス等であり、各種指示又は入力等を行うことができる。出力装置1907は、表示装置(ディスプレイ)、印刷装置(プリンタ)及びスピーカ等である。
【0014】
図1〜図3は、本実施形態によるグリッド検出装置のグリッド検出方法を示すフローチャートである。CPU1902がプログラムを実行することにより、図1〜図3の処理が行われる。CPU1902は、ステップS101の準備処理、ステップS102のグリッド処理、ステップS103の小節処理、及びステップS104のビート処理を行う。ステップS101は、ステップS111〜S115を有する。ステップS102は、ステップS116〜S123を有する。ステップS103は、ステップS124〜S130を有する。ステップS104は、ステップS131を有する。
【0015】
ステップS111では、CPU1902は、外部記憶装置1908から曲波形データ(WAVデータ)をRAM1904にロードし、モノラル化処理、ローパスフィルタ処理、ダウンサンプリング処理、正規化処理を行う。具体的には、CPU1902は、曲波形データがステレオの場合には、図4に示すように、ステレオの曲波形データをモノラルの曲波形データに変換する。次に、CPU1902は、図4の曲波形データに対して、ローパスフィルタ処理を行うことにより高音域成分を除去し、図5の曲波形データを生成する。次に、CPU1902は、図5の曲波形データを時間的に間引くことにより曲波形データのサンプル数を減らし(ダウンサンプリング処理し)、図6の曲波形データを生成する。例えば、44.1kHzのサンプル数を2756Hzのサンプル数に変換し、サンプル数を1/16に減らす。次に、CPU1902は、図6の曲波形データを正規化することにより曲波形データの最大振幅をダイナミックレンジの最大値に合わせ、図7の曲波形データを生成する。
【0016】
次に、ステップS112では、CPU1902は、曲波形データの全体のピッチのずれ(単位:セント)を算出する。具体的には、CPU1902は、図8(A)のように、領域801及び802のサンプル数が65536サンプル(約23.8秒)、オーバーラップ領域803が1/2(32768サンプル)で高速フーリエ変換(FFT)を行い、図8(B)に示すように、各フレーム(時間)の周波数毎のパワーを求める。サンプリング周波数が2756Hzの時、フレーム間隔は約11.9秒である。
【0017】
次に、CPU1902は、フレーム毎に中央の「ド」から1オクターブ分上の「ド」までの半音毎に以下の処理を行い、テーブルを作成する。まず、CPU1902は、調べる音をセントに変換する。セントは、([ノートンナンバ]−36)×100で表わされる。ノートナンバは、音高であり、中央の「ド」を60で表し、半音増える毎にノートナンバも1増える。半音減る場合も、同様にノートナンバが1減る。次に、CPU1902は、調べる音の前後の音との中間のセントを求める。前の音との中間のセントは、[調べる音のセント]−50で表わされる。次の音との中間のセントは、[調べる音のセント]+50で表わされる。次に、CPU1902は、前後の音との中間のセントより、調べる音の基本周波数の範囲を求める。前の音との中間の周波数は、2((前の音との中間のセント-3300)÷1200)×440で表わされる。次の音との中間の周波数は、2((次の音との中間のセント-3300)÷1200)×440で表わされる。次に、CPU1902は、周波数の範囲に相当するFFTのポイント範囲を探し、その範囲で最もパワーが出ているパワーの位置(ポイント)を探す。次に、CPU1902は、上記で求めた調べる音のセント、上記で探したパワーの位置、及び上記で探したパワーの位置のパワー値の3つを1組としてテーブルに記録する。
【0018】
次に、CPU1902は、テーブルを参照して最もパワーの強い3つの音を抽出する。次に、CPU1902は、パワーの位置より、複素スペクトル内挿法で正確な周波数を求める。次に、CPU1902は、正確な周波数をセントに変換する。正確な周波数のセントは、1200×log(正確な周波数÷440)÷log2+3300で表わされる。次に、CPU1902は、テーブルに記録されている音のセントと、上記で求めたFFT結果からのその音のセントとのズレを登録する。次に、CPU1902は、全ての登録されたずれがほとんど+方向にずれているものばかりなら、+方向にずれているものの平均をとり、この曲波形データのピッチのずれとする。また、全ての登録されたずれがほとんど−方向にずれているものばかりなら、−方向にずれているものの平均をとり、この曲波形データのピッチのずれとする。また、それ以外(+及び−のそれぞれにずれていて、ばらついている)の場合は、この曲波形データのピッチのずれは0(なし)とする。
【0019】
次に、ステップS113では、CPU1902は、高速フーリエ変換(FFT)を行い、ノート毎のパワー配列を作成する。具体的には、CPU1902は、サンプル数512、オーバーラップ31/32でFFTを行い、各フレームのパワーを求める。サンプリング周波数が2756Hzの時、フレーム間隔は約5.8ミリ秒である。次に、CPU1902は、図9に示すように、フレーム毎にノートナンバ28〜88の各音のパワー901を求める。次に、CPU1902は、調べる音をセントにし、その値に上記で求めたずれ分を加算する。次に、CPU1902は、前後の音との中間の範囲内で最大のパワーが出ている場所のパワーをその音のパワーとする。
【0020】
次に、ステップS114では、CPU1902は、各フレームの各ノートのパワーを合計した配列を作成する。次に、ステップS115では、CPU1902は、図10に示すように、各フレームの曲波形データ1001において、フレームの全ての音のパワー合計の、前フレームからの増分量を求め、増分値データ1002を生成する。ここで、減っている場合は増分を0とする。増分値データ1002は、曲波形データ1001をFFTした結果を各ノートのパワーにしてから合計し、前フレームからの増分量を表したものである。
【0021】
次に、ステップS116では、CPU1902は、フレームのパワー増分値の配列に対し、0.2秒〜32秒の間の自己相関をとり、グリッドの間隔(フレーム数)を求める。具体的には、CPU1902は、0.2秒に相当するフレーム数から、32秒に相当するフレーム数までの自己相関を求める。すなわち、サンプリング周波数2756Hzの1フレーム当たりのサンプル数が16サンプルの時、34フレームから5512フレームまでの間で自己相関を求める。例えば、図11に示すように、増分値データ1101と、それを34フレームずらした増分値データ1102との自己相関値を演算する。同様に、35〜5512フレームをずらしたときの自己相関値を演算する。
【0022】
次に、ステップS117では、CPU1902は、図12に示すように、自己相関値の高い順にずらしたフレーム数を並び替える。通常、例えば、1、2拍、1、2、4、8小節分ずれたフレーム数で、自己相関値が高くなる。
【0023】
次に、ステップS118では、CPU1902は、自己相関値の高いずらしたフレーム数(ずれ量)に対してずらしたフレーム数(ずれ量)が整数分の1に相当するものだけを対象に間隔の小さいものを探す。具体的には、CPU1902は、自己相関値の大きい順に調べて行く。まず、CPU1902は、仮のグリッド[A]を決める。初回は、[A]を一番自己相関値の高いフレーム数(320)とする。次に、CPU1902は、グリッド候補[B]を決める。初回は、2番目に自己相関値の高いフレーム数(319)になる。次に、CPU1902は、[B]が[A]の整数分の1(1/2〜1/8)であるか調べる。整数分の1でない場合は、上記のグリッド候補[B]を次に自己相関値の高いフレーム数にする。[B]が319だった場合は、[B]を321にする。[B]が321だった場合は、[B]を318にする。また、整数分の1である場合は、次の処理に移る。[A]を2〜8で割ったときに小数になる場合は、小数を切り上げ又は切り捨てした2つの整数が整数分の1であるとする。320÷5の64フレームのときに、この条件に当てはまる。
【0024】
なお、自己相関値の高いフレーム数は、通常数小節の間隔、1小節の間隔、拍の間隔などに相当し、求めるグリッド間隔はこれらの整数分の1であることは間違いないので、このようなチェックを行う。2〜8で限定しているのは、例えば、4小節の間隔→2小節の間隔→1小節の間隔→1拍の間隔→グリッドの間隔と、順番に限定しながら求めて、精度を上げることを目的としている。グリッドの間隔が最も短い間隔である。
【0025】
次に、ステップS119では、CPU1902は、グリッド間隔を決める。具体的には、CPU1902は、[B]の自己相関値÷[A]の自己相関値を求め、閾値[C]以上か調べる。閾値[C]未満の場合では、[A]の値が2秒(サンプリング周波数2756Hzで、344.5フレーム)以下の場合、[A]をグリッド間隔とする。[A]が64になった後は、閾値[C]を超えないので、この条件に当てはまり、グリッド間隔は64フレームとなる。また、上記以外の場合は、[A]を[B]のフレーム数に変更し、上記の処理を繰り返す。初回は、64の自己相関値÷320の自己相関値が閾値[C]を超えるのでこちらの条件に当てはまる。このときに、[B]の自己相関値÷[A]の自己相関値が閾値[C]以上だった場合は、閾値[C]を上げて、次からの条件を少し厳しくしておく。
【0026】
次に、ステップS120では、CPU1902は、1フレームずつずらしながらグリッド間隔の位置でパワーの増分値が高いものをカウントする。次に、ステップS121では、CPU1902は、最もカウント数が多いところをグリッド位置と仮決めする。具体的には、CPU1902は、グリッドの間隔がわかっても、先頭フレームがグリッドとは限らないので、グリッドを割り振るためのグリッドの基点(確実にグリッドだろうと思われる1つのフレーム)を決める。まず、CPU1902は、上記で最も自己相関値の高かったフレーム数を「確実にグリッドの出ている間隔」とし、グリッドの開始位置をずらしながら、先頭からどれだけずらしたときが最もグリッドらしいか調べる。CPU1902は、先頭フレームを仮のグリッド先頭と仮定して、そこから「確実にグリッドの出ている間隔(320)」毎にフレームのパワー増分値の配列を見て、増分値が大きい箇所をカウントする。大きい箇所とは、例えばフレームのパワー増分値の配列の中の最大値の80%を超えるものを指す。次に、CPU1902は、2フレーム目を仮のグリッド先頭と仮定して、上記と同様にカウントする。次に、CPU1902は、3フレーム目を仮のグリッド先頭と仮定して、上記と同様にカウントする。CPU1902は、図13(A)に示すように、上記と同様のカウントを「確実にグリッドの出ている間隔(320)」回数分行う。320フレームずらすと先頭フレームを仮のグリッド先頭と仮定した上記と同じ位置を参照するため、カウントする必要がなくなる。次に、CPU1902は、カウントした結果、最もカウント数の多かった先頭ずらしフレーム数を求める。図13(B)に示すように、増分値データが山のピークになったときに、最もカウント数が大きくなる。
【0027】
次に、ステップS122では、CPU1902は、仮決めの中で最も増分値が高いものをグリッドの基点とする。具体的には、CPU1902は、図13(C)に示すように、最もグリッドらしい位置(上記で求めた先頭ずらしフレームから「確実にグリッドの出ている間隔」毎の位置)で、フレームのパワー増分値の配列を見て最もパワーが大きいフレームを、グリッドを割り振るためのグリッドの基点(基準フレーム)1301とする。
【0028】
次に、ステップS123では、CPU1902は、グリッドの基点から前後に向かって揺らぎを考慮しながらグリッド位置を決定する。具体的には、CPU1902は、グリッドの基点1301から前後に向かってテンポの揺れを考慮しながら、1つずつグリッド位置を確定して行く。これは、すべてのグリッド間隔が上記で決定したグリッド間隔(64)ぴったりとは限らないためである。
【0029】
CPU1902は、図14(A)の増分値データと図14(B)の等間隔関数との相関値を演算する。図14(B)は、仮のグリッド位置1401からテンポに相当する時間で等間隔に並ぶ関数である。CPU1902は、仮のグリッド位置1401を左右に少し動かして、相関値が最も大きくなる場所を求める。
【0030】
なお、テンポの揺らぎに対応するため、以下のような処理を行うことができる。図14の関数の間隔を徐々に広く又は狭くして、上記の処理を行うことにより、テンポの揺らぎに対応することができる。また、グリッド位置を求めようとしている場所が重視されるように、グリッド位置を求めようとしている場所の重みを4として、それ以外の重みを1にする。
【0031】
次に、ステップS103では、CPU1902は、グリッド決定後に、小節位置を決める。ステップS124では、CPU1902は、グリッド位置のみで0.6秒〜12秒の間の自己相関値を求める。具体的には、CPU1902は、図15(A)のパワー増分値の配列のグリッド位置となったフレームのみを取り出し、図15(B)のデータを生成する。次に、CPU1902は、図15(B)のデータを基に図15(C)のグリッドのパワー配列を生成する。次に、CPU1902は、グリッド配列に対して0.6秒に相当するグリッド数から、12秒に相当するグリッド数までの自己相関値を求める。サンプリング周波数が2756Hzの1フレーム当たりのサンプル数が16サンプルの時、グリッドフレーム数が64の場合、2グリッドから32グリッドまでの自己相関値を求める。CPU1902は、図16(A)のグリッド配列に対して、図16(B)の2グリッド分ずらしたグリッド配列との自己相関値を求める。同様に、CPU1902は、図16(A)のグリッド配列に対して、図16(C)の3グリッド分ずらしたグリッド配列との自己相関値を求める。以上のように、2〜32グリッド分ずらした自己相関値を求める。
【0032】
次に、ステップS125では、CPU1902は、図17に示すように、自己相関値の高い順にずらしたグリッド数を並び替える。
【0033】
次に、ステップS126では、CPU1902は、図18に示すように、例えば間隔が2秒(4/4拍子)に近いグリッド数ほど優遇されるように自己相関値に対する係数を作成する。すなわち、2秒が最大係数になるようにする。サンプリング周波数2756Hzの1フレーム当たりのサンプル数が16サンプルの時、グリッドフレーム数が64の場合、5グリッドが中央になる。
【0034】
次に、ステップS127では、CPU1902は、自己相関値の高いずらしたフレーム数(ずれ量)に対してずらしたフレーム数(ずれ量)が整数分の1に相当するものだけを対象に間隔の小さいものを探す。次に、ステップS128では、CPU1902は、得られた間隔を小節の間隔とする。具体的には、CPU1902は、自己相関値の大きい順に調べて行く。まず、CPU1902は、仮の小節[A]を決める。初回は、[A]を一番自己相関値の高いグリッド数(10)とする。次に、CPU1902は、小節候補[B]を決める。初回は、2番目に自己相関値の高いグリッド数(5)になる。次に、CPU1902は、[B]が一番自己相関値の高いグリッド数(10)の整数分の1又は整数倍であるか調べる。つまり、「[B]÷一番自己相関値の高いグリッド数」又は「一番自己相関値の高いグリッド数÷[B]」が割り切れるか調べる。割り切れない場合は、[B]を次に自己相関値の高いグリッド数にし、上記の処理を繰り返す。[B]が5だった場合は、[B]を30にする。[B]が30だった場合は、[B]を20にする。割り切れる場合は、次の処理に移る。[B]が5のときに、この条件に当てはまる。
【0035】
なお、一番自己相関値の高いグリッド数は、通常数小節の間隔又は4分音符等の間隔に相当し、求める1小節の間隔はこれらの整数分の1又は整数倍であることは間違いないので、このようなチェックを行う。
【0036】
次に、CPU1902は、[B]の自己相関値×[B]の係数>[A]の自己相関値×[A]の係数になるか調べる。該当する場合は、[A]のグリッド数を[B]のグリッド数に変更し、上記の処理を繰り返す。全てのグリッドを調べ終わったときの[A]のグリッド数が求めるべき1小節のグリッド数(1小節の間隔)になる。例えば、上記の例の数値を使用すると、グリッド数5が小節の間隔となる。
【0037】
次に、ステップS129では、CPU1902は、1グリッドずつずらしながら、小節間隔の位置でパワーの増分値が高いものをカウントする。具体的には、CPU1902は、小節の間隔がわかっても、先頭グリッドが小節の頭とは限らないので、小節を割り振るための基準グリッド(確実に小節の頭だろうと思われる1つのグリッド)を決める。まず、CPU1902は、小節の頭位置をずらしながら、先頭からどれだけずらしたときが最も小節の頭らしいか調べる。具体的には、CPU1902は、先頭グリッドを仮の小節頭と仮定して、そこから小節間隔(5グリッド)毎にグリッドのパワー配列を見て、大きい箇所をカウントする。大きい箇所とは、例えばグリッドのパワー配列の中の最大値の60%を超えるものを指す。次に、CPU1902は、2グリッド目を仮の小節頭と仮定して、上記と同様にカウントする。次に、CPU1902は、3グリッド目を仮の小節頭と仮定して、上記と同様にカウントする。CPU1902は、上記と同様のカウントを小節間隔(5)回数分行う。5フレームずらすと、先頭グリッドを仮の小節頭と仮定した上記と同じ位置を参照するため、カウントする必要がなくなる。
【0038】
次に、ステップS130では、CPU1902は、最もカウント数が多いところを小節位置とする。具体的には、CPU1902は、カウントした結果、最もカウント数の多かった先頭ずらしグリッド数を求め、このずらしグリッド数の位置を、小節を割り振るための基準グリッドと決定する。次に、CPU1902は、基準グリッドから小節間隔のグリッド数毎の位置を全て小節の位置とする。
【0039】
次に、CPU1902は、小節の決定後、ステップS131で、ビート位置を決める。ステップS131では、CPU1902は、小節内のグリッド数を2の倍数で割ったときに6未満になるような最小の値を1ビートのグリッド数とし、小節内のグリッド数を1ビートのグリッド数で割り切れる場合は、グリッド数毎の位置をビート位置とし、割り切れない場合は、グリッド位置をそのままビート位置とする。
【0040】
具体的には、CPU1902は、小節間隔のグリッド数から適当な数をビートのグリッド数として決める。CPU1902は、小節のグリッド数が6×N以下か調べる。初回は、N=1とする。6×N以下の場合は、ビートのグリッド数をNとする。6を超える場合は、Nを2倍して、上記の処理を繰り返す。
【0041】
次に、CPU1902は、小節の頭をまずビートの位置とし、そこからNグリッド毎の位置をビート位置とする。N=1なら、グリッド位置がそのままビート位置になり、N=2なら、グリッド位置の1つおきの場所がビートの位置となる。
【0042】
以上のように、本実施形態によれば、曲波形データのグリッド位置、小節位置及びビート位置を検出することができる。これにより、曲波形データのグリッド位置、小節位置又はビート位置に同期し、画像(静止画又は動画)データを再生することにより、曲及び画像を、同期をとりながら再生することができる。例えば、曲波形データのグリッド位置、小節位置又はビート位置で、静止画が動く等の再生処理を行うことができる。
【0043】
図20は、図19のコンピュータのプログラムの機能を説明するためのブロック図である。コンピュータがプログラムを実行することにより、グリッド検出装置(方法)が実現される。グリッド検出装置(方法)2000は、ステップS101に対応する準備処理部(ステップ)2001、ステップS102に対応するグリッド処理部(ステップ)2002、ステップS103に対応する小節処理部(ステップ)2003、及びステップS104に対応するビート処理部(ステップ)2004を有する。
【0044】
グリッド処理部2002は、ステップS116に対応する第1の自己相関演算部(ステップ)2011、及びステップS117〜S123に対応するグリッド決定部(ステップ)2012を有する。第1の自己相関演算部2011は、曲波形データを時間的にずらしながら複数の自己相関値を演算する。グリッド決定部2012は、第1の自己相関演算部2011により演算された複数の自己相関値を基に曲波形データ内のグリッドの位置を決定する。具体的には、グリッド決定部2012は、第1の自己相関演算部2011により演算された複数の自己相関値の中で、自己相関値が最も高いものに対してずれ量が整数分の1に相当するものを抽出し(ステップS118)、グリッドの間隔を決定し(ステップS119)、グリッドの間隔を基にグリッドの位置を決定する(ステップS123)。
【0045】
小節処理部2003は、ステップS124に対応する第2の自己相関演算部(ステップ)2013、及びステップS125〜S130に対応する小節決定部(ステップ)2014を有する。第2の自己相関演算部2013は、グリッド決定部2012により決定されたグリッドの位置について、曲波形データの自己相関値を演算する。小節決定部2014は、第2の自己相関演算部2013により演算された自己相関値を基に曲波形データ内の小節の位置を決定する。グリッドの位置の間隔は、小節の位置の間隔以下である。具体的には、小節決定部2014は、第2の自己相関演算部2013により演算された複数の自己相関値の中で、自己相関値が最も高いものに対してずれ量が整数分の1に相当するものを抽出し(ステップS127)、小節の間隔を決定し(ステップS128)、小節の間隔を基に小節の位置を決定する(ステップS130)。
【0046】
ビート処理部2004は、ステップS131に対応するビート決定部(ステップ)2015を有する。ビート決定部2015は、グリッド決定部2012により決定されたグリッドの位置及び小節決定部2014により決定された小節の位置を基にビートの位置を決定する。グリッドの位置の間隔は、ビートの位置の間隔以下である。
【0047】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0048】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0049】
2000 グリッド検出装置
2001 準備処理部
2002 グリッド処理部
2003 小節処理部
2004 ビート処理部
2011 第1の自己相関演算部
2012 グリッド決定部
2013 第2の自己相関演算部
2014 小節決定部
2015 ビート決定部

【特許請求の範囲】
【請求項1】
曲波形データを時間的にずらしながら複数の自己相関値を演算する第1の自己相関演算部と、
前記第1の自己相関演算部により演算された複数の自己相関値を基に前記曲波形データ内のグリッドの位置を決定するグリッド決定部と
を有することを特徴とするグリッド検出装置。
【請求項2】
前記グリッド決定部は、前記第1の自己相関演算部により演算された複数の自己相関値の中で、自己相関値が最も高いものに対してずれ量が整数分の1に相当するものを抽出し、グリッドの間隔を決定し、前記グリッドの間隔を基に前記グリッドの位置を決定することを特徴とする請求項1記載のグリッド検出装置。
【請求項3】
さらに、前記グリッド決定部により決定されたグリッドの位置について、前記曲波形データの自己相関値を演算する第2の自己相関演算部と、
前記第2の自己相関演算部により演算された自己相関値を基に前記曲波形データ内の小節の位置を決定する小節決定部とを有し、
前記グリッドの位置の間隔は、前記小節の位置の間隔以下であることを特徴とする請求項1又は2記載のグリッド検出装置。
【請求項4】
前記小節決定部は、前記第2の自己相関演算部により演算された複数の自己相関値の中で、自己相関値が最も高いものに対してずれ量が整数分の1に相当するものを抽出し、小節の間隔を決定し、前記小節の間隔を基に前記小節の位置を決定することを特徴とする請求項3記載のグリッド検出装置。
【請求項5】
さらに、前記グリッド決定部により決定されたグリッドの位置及び前記小節決定部により決定された小節の位置を基にビートの位置を決定するビート決定部とを有し、
前記グリッドの位置の間隔は、前記ビートの位置の間隔以下であることを特徴とする請求項1〜4のいずれか1項に記載のグリッド検出装置。
【請求項6】
曲波形データを時間的にずらしながら複数の自己相関値を演算する第1の自己相関演算ステップと、
前記第1の自己相関演算ステップにより演算された複数の自己相関値を基に前記曲波形データ内のグリッドの位置を決定するグリッド決定ステップと
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2011−95409(P2011−95409A)
【公開日】平成23年5月12日(2011.5.12)
【国際特許分類】
【出願番号】特願2009−247992(P2009−247992)
【出願日】平成21年10月28日(2009.10.28)
【出願人】(000001410)株式会社河合楽器製作所 (563)
【Fターム(参考)】