(57)【要約】【課題】フレーム長さ等に依存せず正確なテンポ検出が可能なテンポ検出装置を提供すること。【解決手段】Ａ／Ｄ変換部５０が、信号処理部１０からの出力信号をアナログデジタル変換して出力し、信号処理部２０がこのＡ／Ｄ変換部５０からの出力信号に対して順次そのビート位置に対応する時間情報を出力する。ＢＰＭ値候補抽出部３０は、この時間情報に基づいてＢＰＭ値の候補を抽出出力し、ＢＰＭ値決定部４０が、この出力されたテンポ値候補群の出現頻度に関する出現頻度情報に基づいてＢＰＭ値を検出する。したがって、フレーム長さ等に依存せず正確なテンポ検出が可能なテンポ検出装置１を簡素な構成で実現することが可能となる。【選択図】図１
2008107569.tif 000002
【特許請求の範囲】
【請求項１】
音楽信号に対し所要の信号処理を施した信号を出力する第１の信号処理手段と、
この第１の信号処理手段からの出力信号をアナログデジタル変換して出力する信号変換手段と、
この信号変換手段からの出力信号に対して順次そのビート位置に対応する時間情報を出力する検出手段と、
この検出手段からの時間情報に基づいてテンポ値の候補を抽出出力するテンポ値候補抽出手段と、
この出力されたテンポ値候補群の出現頻度に関する出現頻度情報に基づいてテンポ値を検出するテンポ値決定手段と、を備えたことを特徴とするテンポ検出装置。
【請求項２】
音楽信号をアナログデジタル変換して出力する信号変換手段と、
変換されたデジタル信号に対して全波整流を施し更に所定周波数帯での信号抽出処理を施した信号を出力する第１の信号処理手段と、
この第１の信号処理手段からの出力信号に対して順次そのビート位置に対応する時間情報を出力する検出手段と、
この検出手段からの時間情報に基づいてテンポ値の候補を抽出出力するテンポ値候補抽出手段と、
この出力されたテンポ値候補群の出現頻度に関する出現頻度情報に基づいてテンポ値を検出するテンポ値決定手段と、を備えたことを特徴とするテンポ検出装置。
【請求項３】
請求項１に記載の装置において、
前記第１の信号処理手段は、
音楽信号に対し全波整流を施し更に所定周波数帯での信号抽出を行った信号を出力することを特徴とするテンポ検出装置。
【請求項４】
請求項１、２および３の内のいずれか一項に記載の装置において、
前記テンポ値候補抽出手段は、
前記検出手段から出力される時間情報の差を順次ＢＰＭ値（Beat  Per  Minute）に変換する一方、１個おきの時間情報の差も順次ＢＰＭ値に変換して、これらをＢＰＭ値候補として出力し、
前記テンポ決定手段は、
前記候補とされたＢＰＭ値の前記出現頻度情報に応じて最終的なＢＰＭ値を決定することを特徴とするテンポ検出装置。
【請求項５】
請求項４に記載の装置において、
前記テンポ決定手段は、
既に記憶されている旧ＢＰＭ値候補と新たに送られてくる新ＢＰＭ値候補との差分が所定値内の場合には、旧ＢＰＭ値候補と新ＢＰＭ値候補の平均値を新たなＢＰＭ値候補としてこの頻度数を１増加させる一方、旧ＢＰＭ値候補と新ＢＰＭ値候補との差分が前記所定値内でない場合には、旧ＢＰＭ値候補に頻度数をそのままに維持していく処理を繰り返し実行することによって、最も頻度が大きなＢＰＭ値候補を最終的なＢＰＭ値として決定出力することを特徴とするテンポ検出装置。
【請求項６】
請求項１、２および３の内のいずれか一項に記載の装置において、
前記テンポ値候補抽出手段は、
前記時間情報を先入れ先出し可能に所定数個記憶する記憶手段と、この記憶手段に記憶された最新の前記所定数個の時間情報に基づいて、任意の２個の時間情報で組み合わせ可能な時間幅をＢＰＭ値候補として出力するテンポ値候補生成手段と、を含んで成ることを特徴とするテンポ検出装置。
【請求項７】
請求項６に記載の装置において、
前記テンポ値決定手段は、
前記テンポ値候補生成手段から出力されるＢＰＭ値候補群に関する前記出現頻度情報を記憶する第２の記憶手段と、前記テンポ値候補生成手段からのＢＰＭ値候補群の出現頻度情報の記憶更新を所定の条件を満足するものに限って行うように制御する制御手段と、を含んで成ることを特徴とするテンポ検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音信号等の音楽データのテンポを示す指標であるＢＰＭ値（Beat  Per  Minute）を検出するテンポ検出装置の改良に関する。
【背景技術】
【０００２】
音楽分野等での音信号からテンポを検出する装置は従来から多数提案されている。例えば、ＣＰＵに大きな負担をかけず、且つ、テンポを正確に検出するため、所定の単位時間区間であるフレームを処理単位とし、所定レベル以上のピーク位置を検出して、当該フレーム区間における各ピーク位置間の間隔を求め、発生頻度の高いピーク値間隔をテンポとして決定する装置等が提案されていた（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開２００４−３０２０５３号公報（第６−１４頁、第８図）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、この装置は、図８に示すように１フレーム区間を越えるビート間隔には対応できないものであった。つまり、フレーム長さに依存してテンポを求めているため種々の音楽データには対応不能であった。しかも、この装置に限らず従来のテンポ検出装置にあっては、そのアルゴリズムが複雑でプログラム量が多くなる等の装置規模の大きなものであった。
【０００５】
本発明は、かかる従来の課題を解決するためになされたもので、フレーム長さに依存せず正確なテンポ検出が可能なテンポ検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、音楽信号に対し所要の信号処理を施した信号を出力する第１の信号処理手段と、
この第１の信号処理手段からの出力信号をアナログデジタル変換して出力する信号変換手段と、
この信号変換手段からの出力信号に対して順次そのビート位置に対応する時間情報を出力する検出手段と、
この検出手段からの時間情報に基づいてテンポ値の候補を抽出出力するテンポ値候補抽出手段と、
この出力されたテンポ値候補群の出現頻度に関する出現頻度情報に基づいてテンポ値を検出するテンポ値決定手段とを備えたことを特徴とするようにした。前記第１の信号処理手段は、例えば、音楽信号に対し全波整流を施し更に所定周波数帯での信号抽出を行った信号を出力するものとすれば良い。
【０００７】
本発明においては、信号変換手段が、第１の信号処理手段からの出力信号をアナログデジタル変換して出力し、検出手段がこの信号変換手段からの出力信号に対して順次そのビート位置に対応する時間情報を出力する。そして、テンポ値候補抽出手段が、この検出手段からの時間情報に基づいてテンポ値の候補を抽出出力し、テンポ値決定手段が、この出力されたテンポ値候補群の出現頻度に関する出現頻度情報に基づいてテンポ値を検出する。したがって、フレーム長さ等に依存せず正確なテンポ検出が可能なテンポ検出装置を簡素な構成で実現することが可能となる。また他の態様によれば、音楽信号をアナログデジタル変換して出力する信号変換手段と、
変換されたデジタル信号に対して全波整流を施し更に所定周波数帯での信号抽出処理を施した信号を出力する第１の信号処理手段と、
この第１の信号処理手段からの出力信号に対して順次そのビート位置に対応する時間情報を出力する検出手段と、
この検出手段からの時間情報に基づいてテンポ値の候補を抽出出力するテンポ値候補抽出手段と、
この出力されたテンポ値候補群の出現頻度に関する出現頻度情報に基づいてテンポ値を検出するテンポ値決定手段と、を備えたことを特徴とするテンポ検出装置も提供される。
【０００８】
より具体的には、前記テンポ値候補抽出手段を、前記検出手段から出力される時間情報の差を順次ＢＰＭ値（Beat  Per  Minute）に変換する一方、１個おきの時間情報の差も順次ＢＰＭ値に変換してこれらをＢＰＭ値候補として出力する構成とし、更に、前記テンポ決定手段が、前記候補とされたＢＰＭ値の前記出現頻度情報に応じて最終的なＢＰＭ値を決定する構成とすることができる。
【０００９】
また、前記テンポ値候補抽出手段を、前記時間情報を先入れ先出し可能に所定数個記憶する記憶手段と、この記憶手段に記憶された最新の前記所定数個の時間情報に基づいて、任意の２個の時間情報で組み合わせ可能な時間幅をテンポ値候補として出力するテンポ値候補生成手段と、を含んで成る構成とすることも可能である。この場合には、前記テンポ値決定手段が、前記テンポ値候補生成手段から出力されるＢＰＭ値候補群に関する前記出現頻度情報を記憶する第２の記憶手段と、前記テンポ値候補生成手段からのＢＰＭ値候補群の出現頻度情報の記憶更新を所定の条件を満足するものに限って行くように制御する制御手段とを含んで成る構成とすることも可能である。
【発明の効果】
【００１０】
本発明によれば、フレーム長さ等に依存せず正確なテンポ検出が可能なテンポ検出装置を実現することが可能になるという効果が得られる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態を図面を参照しつつ説明する。
【００１２】
（構成）  
図１は本発明の最良の実施形態であるテンポ検出装置１の構成図である。本装置１は、楽音信号等の音楽信号を入力し後述するような信号処理を施す信号処理部１０と、この信号処理部１０からのアナログ信号をデジタル信号に変換するＡ／Ｄ変換部５０と、変換されたデジタル信号に基づいて信号処理を行う信号処理部２０と、信号処理部２０からの出力信号に基づいてテンポ値としてのＢＰＭ（Beat  Per  Minutes）値の候補値を抽出出力するＢＰＭ値候補抽出部３０と、このＢＰＭ値候補抽出部３０から出力されたＢＰＭ値候補群の出現頻度に関する出現頻度情報に基づいてテンポ値を決定出出力するＢＰＭ値決定部４０とを備えて構成される。
【００１３】
信号処理部１０は、入力された楽音信号に対して全波整流を行いその後、フィルタによって所望の周波数帯域の信号を抽出する。図３（ａ）、図３（ｂ）はその信号処理例であり、図３（ａ）の入力信号に対して全波整流処理、フィルタ処理を行った結果、図３（ｂ）に示すような信号を得ることができる。また、信号処理部２０は、ピークホールド部２２及びビート位置検出部２４とを備えて構成される。その動作の詳細は後述するが、このピークホールド部２２及びビート位置検出部２４が一体になって行う動作によって、図３（ｃ）に示すような波形が得られると共に、ビート位置に対応する時間情報「ｔ（０）〜ｔ（１０）…」が得られる構成になっている。
【００１４】
なお、本装置１のＢＰＭ値決定部４０からの最終決定されたＢＰＭ値の情報を表示したり、この信号に基づいて不図示の他の装置を同期制御させることも可能である。上記実施形態では、Ａ／Ｄ変換器５０を信号処理部１０の後段に設ける構成としたが、Ａ／Ｄ変換器を信号処理部１０の前段の設けて、総ての信号処理をデジタル信号の信号処理で実行することも可能である（請求項２）。
【００１５】
（動作）
次に動作を説明する。信号処理部１０で信号処理され、更に、Ａ／Ｄ変換部５０によってアナログデジタル変換されたデジタル信号は、信号処理部２０に入力されてピークホールド部２２及びビート位置検出部２０によって所要の信号処理が行われる。図２を参照して、ピークホールド部２２及びビート位置検出部２０が一体になって実行する処理を説明する。以下、「ＦＲＡＧ１」をビート位置検出フラグ、「ＩＮ１」をピークホールド部２２への入力値、「ＢＵＦ１」をピークホールド値バッファ、「ＣＮＴ１」をピークホールドカウンタとする。
【００１６】
先ず、「ＦＲＡＧ１」をクリアし（ステップＳ２００）、ステップＳ２０５において、「ＩＮ１」の値つまりピークホールド部２２への入力値が、「ＢＵＦ１」に記憶されているピークホールド値より大きいか否かを判定する。大きいと判定した場合（Ｙｅｓ）には、ステップＳ２３０において「ＣＮＴ１」に「１００」を設定し、ステップＳ２３５において、今回入力値「ＩＮ１」を「ＢＵＦ１」に記憶して処理を終える。即ち、ステップＳ２０５、２３０、２３５のルートで処理が移行される場合は、信号が単調に増加する場合である。
【００１７】
一方、ステップＳ２０５で「Ｎｏ」と判定された場合、即ち、「ＩＮ１」の値が「ＢＵＦ１」に記憶されているピークホールド値以下の場合にはステップＳ「ＣＮＴ１」が０か否かを判定する。「ＣＮＴ１」が「０」の場合（Ｙｅｓ）にはステップＳ２４０に移行する一方、「ＣＮＴ１」が「０」でない場合（Ｎｏ）にはステップＳ２１５に移行する。ステップＳ２４０においては、現在「ＢＵＦ１」の値に「０．８」を乗じて処理を終える。即ち、ステップＳ２４０に移行する場合には、信号が小さくなっていく場合に対応する処理が実行される。
【００１８】
さて、ステップＳ２１５に移行した場合には、「ＣＮＴ１」を「１」だけデクリメントしてステップＳ２２０に移行する。ステップＳ２２０において、「ＣＮＴ１」が「０」か否かを判定する。この判定結果が「０」でない場合（Ｎｏ）には処理を終了する。一方。判定結果が「０」の場合（Ｙｅｓ）にはステップＳ２２５に移行して「ＦＬＡＧ１」をセットし、即ち「ＦＬＡＧ１」を「１」として処理を終える。このステップＳ２０５、ステップＳ２１０、ステップＳ２１５、ステップＳ２２０、ステップＳ２２５の一連の処理ルートは、信号が或る時間幅で平坦になっている場合の処理である。したがって、「ＦＬＡＧ１」がセットされた時刻を検出すれば、図３（ｄ）に示すようなビート位置に対応する時間情報ｔ（０）〜ｔ（１０）を得ることが可能となる。このようにして。図２に示す信号処理を信号処理部２０が繰り返し行うことによって、ビート値に対する時間情報を得てこれをＢＰＭ値抽出部３０へと出力する。なお、「ＦＬＡＧ１」がセットされた時刻から所定時間遡った時刻を出力することもできる。例えば、上記時間幅（信号が平坦になっている時間）だけ遡った時刻を出力すれば、信号のピーク位置（信号の振幅が増加から減少に転じた位置）をビート位置とすることになる。
【００１９】
図４はＢＰＭ値抽出部３０が行う信号処理を説明するためのエントリーテーブル４００である。「ｎ」はビート位置に対応する時刻情報列ｔの要素番号で、０から始まり時刻情報が得られる度に１加算される。ＢＰＭ値抽出部３０は、新たな時刻情報が得られる度に（「ｎ」が加算される度に）、一つ前の時刻情報と今回の時刻情報との差分を求め、これを「（ｔ（ｎ）−ｔ（ｎ−１））」の欄に格納するのであるが、この差分値「（ｔ（ｎ）−ｔ（ｎ−１））」が一分間に何回入るかがＢＰＭ値なので、「６００００／（ｔ（ｎ）−ｔ（ｎ−１））」をＢＰＭ値とし、前記計算の結果、ＢＰＭ値が「８０〜１６０」の範囲に収まるようにし（外れるものについては、２または１／２を乗算する計算を繰り返し８０〜１６０の範囲に収まるようにする：図４のテーブルにある数値もこれが適用された結果）、これをＢＰＭ値候補として格納していく処理を繰り返し行う。これと共に、ＢＰＭ値抽出部３０は、１個おきの時間情報の差分を求め、これを「（ｔ（ｎ）−ｔ（ｎ−２））」の欄に格納するとともに、この差分値をＢＰＭ値に変換してこれをＢＰＭ値候補の欄に格納していく処理を繰り返して実行することによって、エンントリーテーブル４００に示すようなＢＰＭ値候補の抽出を行うことができる。かくして、ＢＰＭ値候補が出力される。
【００２０】
図５はＢＰＭ値決定部４０が行う信号処理を説明するためのエントリーテーブル５００のである。「ｎ」はビート位置に対応する時刻情報列ｔの要素番号であり、新たな時刻情報が得られる度に、個々のデータ領域に、１組の「ＢＰＭ値候補」と「頻度」とが対になって格納される。図４、図５を参照してＢＰＭ値決定部４０が行う処理について説明する。なお、この例では最終的に６個のグループがエントリーされている。なお、頻度情報は単純に度数分布を求めるのではなく、ＢＰＭ値候補のグループ化を図りながら頻度情報を求めて行く点に特徴がある。以下これについて説明する。
【００２１】
「ｎ＝１」の場合には、図４に示すように、ＢＰＭ値候補は「１５６」のみでありこの頻度を「１」としてそのまま格納する。「ｎ＝２」の場合には新たにＢＰＭ値候補「１０５」、「１２５」が送られてくるが、過去のＢＰＭ値候補即ち「１５６」に対して一定の差であるΔ（例えば±６）に収まるものは存在しないので、「１０５」、「１２５」を新たに格納する。そして、「ｎ＝３」の場合には、新たに送られてきた「１１７」については過去のＢＰＭ値候補との差がΔ以内のものはないので「１１７」を新たに格納する一方、新たに送られてきた「１１１」は既に格納されているＢＰＭ値候補「１０５」との差がΔ以内に収まるので、両ＢＰＭ値候補「１１１」と「１０５」の平均値である新たな値「１０８」を頻度「２」と対応付けてＢＰＭ値候補として格納する。
【００２２】
つまり、新たに送られてくるＢＰＭ候補値が過去に送られてきたものとΔ以内である場合にはそれらの平均値を新たなＢＰＭ値とし頻度を「１」だけインクリメントする。かくして、図５に示すエントリーテーブル５００が構築されていき、
頻度が一定以上（例えば４）に達した候補の中で、最も頻度の大きなもの（この場合、ｎ＝６、７、８の時は「１０７」、ｎ＝９、１０の時は「１０８」）をＢＰＭ値として逐次決定出力する。
【００２３】
以上説明してきたように、入力信号のビート位置に対応する時間情報の差を順次ＢＰＭ値に変換する一方、１個おきの時間情報の差も順次ＢＰＭ値に変換してこれらをテンポ値候補とし、更に、候補とされたテンポ値の頻度に応じて最終的なテンポ値を決定するので、フレーム長さ等に依存せず正確なテンポ検出が可能なテンポ検出装置１を簡素な構成で実現することが可能となる。
【００２４】
（他の構成：動作例）
次に他の構成、動作例を説明する。図６はＢＰＭ値候補抽出部３５の構成図、図７はＢＰＭ値決定部４５の構成図である。このＢＰＭ値候補抽出部３５は、時刻情報を管理する時刻管理部１０５を備えた制御部１００と、ビート検出時刻記憶部１１０と、ＢＰＭ値候補候補生成部１２０とを備える。また、ＢＰＭ値決定部４５は、ＢＰＭ値頻度テーブル２１０と閾値制御部２００とを備えて構成される。なお、図６のビート検出時刻記憶部１１０は、先入れ先だし方式のＦＩＦＯ等で実現され、記憶しきれなくなった古い時間情報を廃棄し新たな情報を記憶する構成としている。
【００２５】
本装置１の動作を開始させると、これを基準時として時刻管理部１０５は時刻を把握可能となる。制御部１００は、時刻管理部１０５の時刻情報を参照して所定時間、時間情報が送られてこない場合には、楽音信号の入力が終了したか途絶えた等と判断しリセット信号を出力する。閾値制御部２００はこのリセット信号を受信すると、ＢＰＭ頻度テーブル２１０の記憶内容をクリアして再度の楽音信号の入力に備える構成となっている。
【００２６】
さて、信号処理部２０から時間情報を受け取った制御部１００は、時刻管理部１０５の時刻を参照して、ビート検出時刻情報記憶部１１０にその時刻情報を記憶させる処理を繰り返す。これに応じて、ビート検出時刻情報記憶部１１０には所定数個（例えば４個）の最新の時刻情報が格納される。すると、ＢＰＭ値候補生成部１２０はこれらの時刻情報に基づいてＢＰＭ値候補を生成する。より具体的には、最新の４個の時刻情報に基づいて、任意の２個の時刻情報で組み合わせ可能な時間幅をＢＰＭ値候補として出力する。図９はこの動作の説明図であり、今「ｔ１＜ｔ２＜ｔ３＜ｔ４」の場合を想定している。この場合、任意の２つの時刻差である、Ｔａ、Ｔｂ、Ｔｃ、Ｔｄ、Ｔｅ、ＴｆがＢＰＭ値候補として生成出力される。
【００２７】
これらＢＰＭ値候補を受け取った閾値制御部２００は、先にエントリーテーブル５００を用いた処理で説明した動作を行う。つまり、ＢＰＭ頻度テーブル２１０に、ＢＰＭ値候補と頻度とを対応付けて記憶していく処理を実行する。この際、閾値制御部２００は、先に説明したΔを複数段階で小さくしていき、頻度の多い或るＢＰＭ値を絞っていくようにＢＰＭ頻度テーブル２１０の更新処理を実行する。例えば最初のΔ１（±６）を、Δ２（±５）、…というようにΔを変更制御し、Δ以内の時間情報を受け取った場合にのみ、ＢＰＭ頻度テーブルを更新するように動作する。なお、このΔの変更制御は装置動作の開始からの時間に応じて行っても良いし、例えば、或る値よりも頻度値が大きくなるものが出現した場合を契機として実行することができる。そして、閾値制御部２１０は最も頻度の大きなＢＰＭ値候補を最終的なＢＰＭ値として出力する。
【００２８】
したがって、この他の構成によっても、フレーム長さ等に依存せず正確なテンポ検出が可能なテンポ検出装置１を簡素な構成で実現することが可能となる。
【００２９】
（その他）
図１０（ａ）は例えばドラム等の楽音信号の波形である。この信号波形ではアタック操作の開始点が不明確となっている。なお、１−Ａ、１−Ｂ、１−Ｃ…はこのオリジナル波形のビート位置を示している。一方、図１０（ｂ）に示す２−Ａ、２−Ｂ、２−Ｃ…は、図３（ｂ）に示す波形に対して、信号処理部２０が検出したビート位置である。そして、図１０（ｂ）の３−Ａ、３−Ｂ、３−Ｃ、…は、より改良したアルゴリズムでビート位置を検出したものである。つまり、アタックが不鮮明の場合には信号処理部２０が求めたビート位置は、若干送れぎみに検出される。そこで、信号処理部２０がビート位置を求めるのと並行してピーク位置を求め、そして、２−Ａ、２−Ｂ、２−Ｃ、…に示すビート位置よりも、１個ピーク前のピーク位置をビート位置と見なして処理を行うことによって、正確なアタック位置を反映させたビート検出が行える。
【産業上の利用可能性】
【００３０】
以上説明してきたように、本発明のテンポ検出装置は音楽分野等の装置に適用して好適である。
【図面の簡単な説明】
【００３１】
【図１】テンポ検出装置１の構成図である。
【図２】信号処理部２０の動作を説明するためのフローチャートである。
【図３】信号処理の説明図である。
【図４】エントリーテーブル４００の説明図である。
【図５】エントリーテーブル５００の説明図である。
【図６】ＢＰＭ値候補抽出部３５の構成図である。
【図７】ＢＰＭ値決定部４５の構成図である。
【図８】従来技術の説明図である。
【図９】ＢＰＭ値候補生成部１２０の動作の説明図である。
【図１０】信号処理の説明図である
【符号の説明】
【００３２】
１  テンポ検出装置
１０  信号処理部
２０  信号処理部
２２  ピークホールド部
２４  ビート位置検出部
３０  ＢＰＭ値候補抽出部
３５  ＢＰＭ値候補抽出部
４０  ＢＰＭ値決定部
４５  ＢＰＭ値決定部
４００  エントリーテーブル
５００  エントリーテーブル
【図１】
2008107569.tif 000003
【図２】
2008107569.tif 000004
【図３】
2008107569.tif 000005
【図４】
2008107569.tif 000006
【図５】
2008107569.tif 000007
【図６】
2008107569.tif 000008
【図７】
2008107569.tif 000009
【図８】
2008107569.tif 000010
【図９】
2008107569.tif 000011
【図１０】
2008107569.tif 000012