(57)【要約】  ビート音発生タイミング生成装置は、入力された楽曲のデータから、楽曲のビートを司るタイミング情報と、そのタイミングにおけるパワーを示す複数の強度データを生成する生成部と、複数の強度データを用いて、前記楽曲のビートの周期及びビートの位相を算出する算出部と、ビートの周期及びビートの位相に基づいて、ビート音の発生タイミングを検出する検出部とを含む。
2019224990.tif 000002
【特許請求の範囲】
【請求項１】
入力された楽曲のデータから、前記楽曲のビートを司るタイミング情報と、そのタイミングにおけるパワーを示す複数の強度データを生成する生成部と、
前記複数の強度データを用いて、前記楽曲のビートの周期及び位相を算出する算出部と、
前記ビートの周期及び位相に基づいて、ビート音の発生タイミングを検出する検出部と
を含むビート音発生タイミング生成装置。
【請求項２】
前記ビート音の発生タイミングに従って前記ビート音の再生処理を行う再生処理部をさらに含む
請求項１に記載のビート音発生タイミング生成装置。
【請求項３】
前記算出部は、前記複数の強度データが示す前記タイミングに基づいて前記複数の強度データについてのＢＰＭ（Beats Per Minute）を定め、前記ＢＰＭの一周期を前記ビートの周期として算出するともに、前記ＢＰＭを示す正弦波における前記ビート音の発生タイミングの相対位置を前記ビートの位相として算出し、
前記検出部は、前記ビートの周期及び前記ビートの位相を示すカウント値を求め、サンプリングレートの１サンプル毎にインクリメントを行うカウンタを用いて前記カウント値の計時を行い、前記カウンタの値が前記カウント値に達したタイミングを前記ビート音の発生タイミングとして検出する
請求項１又は２に記載のビート音発生タイミング生成装置。
【請求項４】
前記算出部は、前記複数の強度データの夫々と複数個のＢＰＭの夫々について行うフーリエ変換によって得られたフーリエ変換データの値が最大となるときのＢＰＭの一周期を前記ビートの周期として算出する
請求項３に記載のビート音発生タイミング生成装置。
【請求項５】
前記複数の強度データの夫々と前記複数個のＢＰＭのうちの第１のＢＰＭについて前記フーリエ変換データを得る場合に、前記算出部は、前記第１のＢＰＭの振動数の整数倍の振動数を有する少なくとも１つの第２のＢＰＭについての前記フーリエ変換データを取得し、前記第１のＢＰＭを用いて算出した前記フーリエ変換データの値と、前記第２のＢＰＭを用いて算出した前記フーリエ変換データの値とを、所定の比率で足し合わせた値を、前記第１のＢＰＭについての前記フーリエ変換データの値として用いる
請求項４に記載のビート音発生タイミング生成装置。
【請求項６】
前記生成部は、前記入力された楽曲のデータから所定数の連続する音のサンプルからなるフレームを取得し、前記フレーム中のサンプルを間引きし、間引きしたサンプルについて高速フーリエ変換を行い、高速フーリエ変換によって得られた周波数バンド幅毎のパワーの総和を示すデータを求める処理を所定間隔で行う一方で、自身より大きい値を示す前記パワーの総和を示すデータが出現しない状態が所定時間継続した場合の前記パワーの総和を示すデータを前記強度データとして抽出する
請求項１から５のいずれか１項に記載のビート音発生タイミング生成装置。
【請求項７】
入力された楽曲のデータから、前記楽曲のビートを司るタイミング情報と、そのタイミングにおけるパワーを示す複数の強度データを生成し、
前記複数の強度データを用いて、前記楽曲のビートの周期及び位相を算出し、
前記ビートの周期及び位相に基づいて、ビート音の発生タイミングを検出する
ことを含むビート音発生タイミング生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビート音発生タイミング生成装置、及びビート音発生タイミング生成方法に関する。
【背景技術】
【０００２】
従来、演奏テンポを反映したテンポ情報を出力する装置がある（例えば、特許文献１）。また、オーディオ信号に含まれる楽曲に同期したテンポクロックを生成することを可能にする技術がある（例えば、特許文献２、３参照）。また、入力音響信号のリズムパターンを決定する技術がある（例えば、特許文献４）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−０５５０７６号公報
【特許文献２】特開２００９−０９２６８１号公報
【特許文献３】特開２００９−０９８２６２号公報
【特許文献４】特開２００８−２７５９７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
楽曲の演奏や歌唱の場で、楽曲のリズムに合わせて聴取者が手拍子を加えることがしばしば行われる。このような手拍子を楽曲の演奏又は再生中に自動的に（人手に依らず）付加することが考えられている。ところが、従来技術は、テンポ情報やテンポクロックの生成、或いはリズムパターンの決定に用いられるもので、手拍子の自動出力については想定されておらず、大量且つ複雑な計算を要するものであった。【０００５】
本発明は、上記問題に鑑みなされたものであり、少ない計算量でビートのタイミングを発生させることのできるビート音発生タイミング生成装置、及びビート音発生タイミング生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面は、入力された楽曲のデータから、前記楽曲のビートを司るタイミング情報と、そのタイミングにおけるパワーを示す複数の強度データを生成する生成部と、前記複数の強度データを用いて、前記楽曲のビートの周期及び位相を算出する算出部と、前記ビートの周期及び位相に基づいて、ビート音の発生タイミングを検出する検出部とを含むビート音発生タイミング生成装置である。【０００７】
ビート音発生タイミング生成装置は、前記ビート音の発生タイミングに従って前記ビート音の再生処理を行う再生処理部をさらに含んでもよい。【０００８】
ビート音発生タイミング生成装置における前記算出部は、前記複数の強度データが示す前記タイミングに基づいて前記複数の強度データについてのＢＰＭ（Beats Per Minute）を定め、前記ＢＰＭの一周期を前記ビートの周期として算出するともに、前記ＢＰＭを示す正弦波における前記ビート音の発生タイミングの相対位置を前記ビートの位相として算出し、前記検出部は、前記ビートの周期及び前記ビートの位相を示すカウント値を求め、サンプリングレートの１サンプル毎にインクリメントを行うカウンタを用いて前記カウント値の計時を行い、前記カウンタの値が前記カウント値に達したタイミングを前記ビート音の発生タイミングとして検出する構成を採用してもよい。【０００９】
ビート音発生タイミング生成装置における前記算出部は、前記複数の強度データの夫々と複数個のＢＰＭの夫々について行うフーリエ変換によって得られたフーリエ変換データの値が最大となるときのＢＰＭの一周期を前記ビートの周期として算出する構成を採用してもよい。【００１０】
ビート音発生タイミング生成装置において、前記複数の強度データの夫々と前記複数個のＢＰＭのうちの第１のＢＰＭについて前記フーリエ変換データを得る場合に、前記算出部は、前記第１のＢＰＭの振動数の整数倍の振動数を有する少なくとも１つの第２のＢＰＭについての前記フーリエ変換データを取得し、前記第１のＢＰＭを用いて算出した前記フーリエ変換データの値と、前記第２のＢＰＭを用いて算出した前記フーリエ変換データの値とを、所定の比率で足し合わせた値を、前記第１のＢＰＭについての前記フーリエ変換データの値として用いる構成を採用してもよい。【００１１】
ビート音発生タイミング生成装置において、前記生成部は、前記入力された楽曲のデータから所定数の連続する音のサンプルからなるフレームを取得し、前記フレーム中のサンプルを間引きし、間引きしたサンプルについて高速フーリエ変換を行い、高速フーリエ変換によって得られた周波数バンド幅毎のパワーの総和を示すデータを求める処理を所定間隔で行う一方で、自身より大きい値を示す前記パワーの総和を示すデータが出現しない状態が所定時間継続した場合の前記パワーの総和を示すデータを前記強度データとして抽出する構成を採用してもよい。【００１２】
他の側面は、入力された楽曲のデータから、前記楽曲のビートを司るタイミング情報と、そのタイミングにおけるパワーを示す複数の強度データを生成し、前記複数の強度データを用いて、前記楽曲のビートの周期及び位相を算出し、前記ビートの周期及び位相に基づいて、ビート音の発生タイミングを検出することを含むビート音発生タイミング生成方法である。
【図面の簡単な説明】
【００１３】
【図１】図１は、ビート音出力タイミング発生装置の構成例を示す。
【図２】図２は、制御部の構成例を示す。
【図３】図３は、生成部の処理例を示すフローチャートである。
【図４】図４（Ａ）は、生成部に入力される１２秒分の楽曲のディジタル信号（楽曲信号ともいう）の例を示し、図４（Ｂ）は、図４（Ａ）の楽曲信号から生成されたＳｐｘデータの例を示す。
【図５】図５は、算出部の処理例を示すフローチャートである。
【図６】図６は、Ｓｐｘデータとフーリエ変換に用いるＢＰＭの正弦波の例を示す図である。
【図７】図７は、ＢＰＭを示す余弦波とビートの発生タイミングとの関係を図示する。
【図８】図８は、検出部１０４によるビート発生タイミングの検出処理の例を示すフローチャートである。
【図９】図９は、１倍（基本ビート）と２倍ビートのスペクトル強度を例示する図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、実施形態に係るビート音発生タイミング生成装置及びビート音発生タイミング生成方法について説明する。実施形態の構成は例示である。実施形態の構成に限定されない。
【００１５】
図１は、ビート音発生タイミング生成装置の構成例を示す。ビート音発生タイミング生成装置１は、バス３に接続された、ＣＰＵ１０と、ＲＯＭ（Read Only Memory）１１と、ＲＡＭ（Random Access Memory）１２と、ハードディスクドライブ（ＨＤＤ）１３と、入力装置１４と、表示装置１５と、通信インタフェース（通信Ｉ／Ｆ）１６とを含む。ビート音発生タイミング生成装置１は、さらに、バス３に接続された、ディジタルアナログ変換器（Ｄ／Ａ）１７と、アナログディジタル変換器（Ａ／Ｄ）２０とを含む。Ｄ／Ａ１７にはアンプ（ＡＭＰ）１８が接続され、ＡＭＰ１８にはスピーカ１９が接続されている。Ａ／Ｄ２０には、マイクロフォン（ＭＩＣ）２１が接続されている。
【００１６】
ＲＯＭ１１は、ＣＰＵ１０によって実行される様々なプログラムやプログラムの実行に際して使用されるデータを記憶している。ＲＡＭ１２は、プログラムの展開領域、ＣＰＵ１０の作業領域、データの記憶領域などとして使用される。ＨＤＤ１３は、プログラムやプログラムの実行に際して使用されるデータ、楽曲データなどを記憶する。楽曲データは、例えばＭＰ３やＷＡＶＥ形式などの所定の音声ファイルのフォーマットを有する音データである。音声ファイルのフォーマット形式は、ＭＰ３やＷＡＶＥ形式以外でもよい。ＲＯＭ１１及びＲＡＭ１２は、主記憶装置の一例であり、ＨＤＤ１３は補助記憶装置の一例である。主記憶装置及び補助記憶装置は、記憶装置又は記憶媒体の一例である。
【００１７】
入力装置１４は、キー、ボタン、タッチパネルなどであり、情報（指示や命令を含む）の入力に使用される。表示装置１５は、情報の表示に使用される。通信Ｉ／Ｆ１６は、ネットワーク２に接続されており、通信に係る処理を司る。ＣＰＵ１０は、例えば入力装置１４から入力された指示に応じて、ネットワーク２から所望の楽曲データ（楽曲信号）をダウンロードし、ＨＤＤ１３に記憶することができる。
【００１８】
ＣＰＵ１０は、プログラムの実行によって、様々な処理を行う。処理は、上記した楽曲ダウンロードに係る処理の他、楽曲の再生に係る処理、楽曲のビート音発生タイミングを生成する処理、ビート音発生タイミングに合わせてビート音（例えば、クラップ音、特にハンドクラップ音など）を出力する処理などを含む。
【００１９】
例えば、ＣＰＵ１０は、楽曲データを再生する場合、プログラムの実行によって、ＨＤＤ１３からＲＡＭ１２に読み出した楽曲データから楽曲の音を表すディジタルデータ（ディジタル信号）を生成し、Ｄ／Ａ１７に供給する。Ｄ／Ａ１７は、音を表すディジタルデータをディジタルアナログ変換によってアナログ信号に変換し、ＡＭＰ１８に出力する。ＡＭＰ１８によって振幅が調整されたアナログ信号はスピーカ１９から出力される。
【００２０】
ＭＩＣ２１は、例えば、スピーカ１９から出力される楽曲の音を伴奏（カラオケ）とする歌唱音などを集音する。ＭＩＣ２１で集音されたアナログの音声信号は、ＡＭＰ１８で振幅を増幅され、スピーカ１９から増幅される。このとき、歌唱音は楽曲音とミキシングされても、それぞれ別個のスピーカから出力されてもよい。
【００２１】
また、ＭＩＣ２１は、楽器を用いた演奏（いわゆる生演奏）による音声や外部機器からの楽曲の再生音声を集音して音を拡大（スピーカ１９から出力）したり、録音したりする場合にも使用される。例えば、ＭＩＣ２１で集音された演奏音の信号は、Ａ／Ｄ２０によってディジタル信号に変換され、ＣＰＵ１０に渡される。ＣＰＵ１０は、演奏音の信号を音声ファイルのフォーマットに従った形式に変換して音声ファイルを生成し、ＨＤＤ１３に記憶する。ＭＩＣ２１で集音される楽曲の音信号について、ビート音発生タイミングの生成処理が行われてもよい。
【００２２】
なお、ビート音発生タイミング生成装置１がコンパクトディスク（ＣＤ）などのディスク型記録媒体のドライブ装置（図示せず）を含んでもよい。この場合、ドライブ装置を用いてディスク型記録媒体から読み出された楽曲の音を表すディジタル信号がＤ／Ａ１７に供給され、楽曲音が再生されてもよい。この場合、ディスク型記録媒体から読み出された楽曲の音信号について、ビート音発生タイミングの生成処理が行われてもよい。
【００２３】
図２は、制御部１００の構成例を示す。ＣＰＵ１０は、プログラムの実行によって、図２に示すような、時間スパースデータ（「Ｓｐｘデータ」と表記：強度データに相当）の生成部１０１、バッファ１０２、周期データ及び位相データの算出部１０３、ビートの発生タイミングの検出部１０４、及びビート音の再生処理部１０５を含んだ制御部１００として動作する。バッファ１０２は、例えば、ＲＡＭ１２やＨＤＤ１３の所定の記憶領域に設けられる。
【００２４】
Ｓｐｘデータの生成部１０１は、楽曲の音を表すディジタルデータを用いて、Ｓｐｘデータを生成して出力する。バッファ１０２は、少なくとも所定時間分のＳｐｘデータ（複数の強度データに相当）を蓄積する。本実施形態では、所定時間として６秒を例示するが、所定時間は６秒より長くても短くてもよい。算出部１０３は、バッファ１０２に蓄積された所定時間分のＳｐｘデータの集合を用いて、ビートの周期データ及び位相データを算出する。発生タイミングの検出部１０４は、周期データ及び位相データを用いてビート音の発生タイミングを検出する。再生処理部１０５は、発生タイミングに合わせたビート音の再生処理を行う。
【００２５】
以下、制御部１００をなす各部における処理の詳細を説明する。
＜Ｓｐｘデータの生成＞
生成部１０１によるＳｐｘデータの生成について説明する。生成部１０１には、再生に係る楽曲データ（音声出力のためにＤ／Ａ１７に送られたデータ）の音を表すディジタル信号が入力される。音を表すディジタル信号（楽曲信号）は、ＨＤＤ１３に記憶された楽曲データの再生処理によるものでも、ＭＩＣ２０で集音された音声信号のＡ／Ｄ変換によって得られたものでもよい。
【００２６】
音を表すディジタルデータは、ＲＡＭ１２に記憶され、生成部１０１の処理に使用される。音を表すディジタルデータは、アナログ信号から所定のサンプリングレートに従って採取されたサンプル（標本）データ（通常、アナログ信号の電圧値）の集合である。本実施形態では、一例として、サンプリングレートは４４１００Ｈｚであるとする。但し、サンプリングレートは、所望のＦＦＴ解像度が得られる限りにおいて適宜変更可能である。
【００２７】
図３は、生成部１０１の処理例を示すフローチャートである。生成部１０１には、楽音出力（再生）のためにＤ／Ａ１７へ送られた、楽曲の音を表すディジタルデータ（ディジタル信号）が入力される。生成部１０１は、入力されたディジタルデータから、所定個数のサンプル（「フレーム」と呼ぶ）を取得する（Ｓ０１）。所定個数は、本実施形態では１０２４であるがこれより多くても少なくてもよい。サンプルの取得は、所定間隔で行われる。所定間隔は、例えば５ｍｓであるが、これより多くても少なくてもよい。
【００２８】
Ｓ０２では、生成部１０１は、間引き処理を行う。すなわち、生成部１０１は、１０２４個のサンプルに対する１／４間引きを行って、２５６個のサンプルを得る。間引きは１／４間引き以外でもよい。Ｓ０３では、生成部１０１は、２５６個のサンプルに対して高速フーリエ変換（ＦＦＴ）を施し、ＦＦＴの結果（周波数バンド幅毎のパワー）から、フレーム単位でのパワーの大きさを示すデータ（パワーデータという）を得る（Ｓ０４）。なお、パワーは振幅の２乗で表されることから、「パワー」との概念には振幅も含まれる。
【００２９】
パワーデータは、例えば、２５６個のサンプルに対するＦＦＴの実施によって得られるパワーの総和である。但し、今回のフレームの各周波数バンド幅のパワーから前回のフレームにおける、対応するバンド幅のパワーを差し引き、その値が正である（パワーが増加している）場合にはそのパワーの値を総和計算のために残し、そうでない（差し引いた値が負である（パワーが減少している））値は無視してもよい。パワーの増加分が大きいところがビートである可能性が高いからである。
【００３０】
また、他のフレームとの比較対象が同じである限りにおいて、総和の算出に用いる値は、今回のフレームのパワーの総和であっても、今回のフレームのパワーから前回のフレームのパワーを引いた値が正の値のパワーの総和であっても、今回のフレームのパワーから前回のフレームのパワーを差し引いた差分であってもよい。また、ＦＦＴの実施によって得られるパワースペクトルにおいて、所定の周波数より低い周波数についてのみ、上記した差分の算出が行われてもよい。所定の周波数以上の周波数については、ローパスフィルタを用いてカットしてもよい。
【００３１】
パワーデータは、フレーム単位で、ＲＡＭ１２やＨＤＤ１３に記憶される。生成部１０１は、フレーム単位のパワーデータが作成される毎に、パワーの総和（ピーク値）の大きさを比較して大きい方を残し、小さい方は破棄する（Ｓ０５）。生成部１０１は、Ｓ０５で残した総和より大きい総和が所定時間出現していないか否かを判定する（Ｓ０６）。所定時間は例えば１００ｍｓであるが、１００ｍｓより大きくても小さくてもよい。より大きい総和を示すデータが出現していない状態が所定時間続いた場合に、生成部１０１は、そのパワーの総和を示すデータをＳｐｘデータとして抽出し、バッファ１０２に記憶（保存）する（Ｓ０７）。このように、Ｓｐｘデータは、楽音を示すディジタルデータのピーク値を１００ｍｓ間隔で抽出したデータであり、楽曲のビートを司るタイミングを示す情報（タイミング情報）と、そのタイミングにおけるパワーとを示すデータである。Ｓｐｘデータは、バッファ１０２に複数個蓄積される。生成部１０１は、Ｓ０１からＳ０６までの処理を繰り返し行う。
【００３２】
図４（Ａ）は、生成部１０１に入力される１２秒分の楽曲のディジタル信号であり、図４（Ｂ）は、図４（Ａ）に示した楽曲のディジタル信号から生成されたＳｐｘデータの例を示す。図４（Ｂ）に示すグラフの横軸は時間で、縦軸はパワーである。このグラフにおいて、上端に黒丸のついた縦線が、図４（Ａ）に示した楽曲のディジタル信号から得られた個々のＳｐｘデータを示し、横軸（時間軸）の位置がタイミングを示し、縦線の長さがパワーを示す。Ｓｐｘデータは、１００ｍｓ間隔で生成される場合、１秒間に１０個程度生成される。
【００３３】
＜周期データ及び位相データの算出＞
図５は、算出部１０３の処理例を示すフローチャートである。Ｓ１０において、生成部１０１にて生成された新たなＳｐｘデータがバッファ１０２に到来し、蓄積される。Ｓ１１において、バッファ１０２に蓄積されたＳｐｘデータのうち所定時間分のＳｐｘデータ（複数の強度データに相当）がバッファ１０２から取得される。所定時間は、例えば６秒間であるが、ビートの周期及び位相を得られる限りにおいて６秒より長くても短くてもよい。以降のＳ１２〜Ｓ１６の処理は、Ｓ１１で取得した６秒分のＳｐｘデータを用いて行われる処理である。Ｓ１２では、６秒分のＳｐｘデータについて、所定個数（例えば２０個）のＢＰＭ（Beats Per Minute：テンポ（リズムの速さ）を示す）に対応したフーリエ変換を施し、ビートの周期（ＢＰＭの一周期）とビートの位相（ビート音の発生タイミング）とを算出する。
【００３４】
具体的に説明すると、６秒分のＳｐｘデータについて所定個数、例えばＢＰＭ８６〜１６８に対応する２０個、のＢＰＭに対応する周波数（ＢＰＭ周波数）f = {86,90,94,…,168}/60 について、Ｅｘｐ（２πｊｆｔ）（ＢＰＭ周波数で振動する正弦波、振動数に関係無く振幅は同じ）に対する積和をとる。すなわちフーリエ変換を行う。フーリエ変換の結果をフーリエ変換データc(i) (i=0,1, 2, 3,…,19)とする。
【００３５】
図６は、Ｓｐｘデータとフーリエ変換に用いるＢＰＭ周波数を有する正弦波の例を示す図である。図６の例では、ＢＰＭ７２の正弦波（実線で示す）と、ＢＰＭ８８の正弦波（破線で示す）と、ＢＰＭ１０４の正弦波（一点鎖線で示す）とが例示されている。フーリエ変換データc(i)の値は以下の式１により求められる。なお、ＢＰＭの値及びその個数は適宜変更することができる。
【数１】
2019224990.tif 000003
【００３６】
ここに、式１におけるt(k)は、Ｓｐｘデータの存在する過去６秒のうちの時間位置であり、単位は秒である。ｋはそのＳｐｘデータのインデックスであり、k=1,...,Mである（ＭはＳｐｘデータの個数）。また、x(t(k))は、その瞬間のＳｐｘデータの値（ピーク値の大きさ）を示す。ｊは虚数単位（ｊ２＝−１）である。ｆ(i)はＢＰＭ周波数であり、例えばＢＰＭ１２０は２．０Ｈｚである。
【００３７】
算出部１０３は、c(i)＝(c0, 1, c2, c3, ... ,c19)のうち、その絶対値が最大値に対応するＢＰＭをＳｐｘデータ（ビート）のＢＰＭに決定する（Ｓ１３）。また、その位相値（Phase)φ= Arg(c(i))[rad] を、６秒間分のＳｐｘデータについてのビートタイミングとする。 ビートタイミングは、周期的に到来するビートの発生タイミングに対する相対的な位置を示す。
【００３８】
位相値φは複素数の偏角であり、ｃ＝ｃｒｅ＋ｊｃｉｍ（ｃｒｅは実部でｃｉｍは虚部）とした場合に、以下の式２により得られる。
【数２】
2019224990.tif 000004
【００３９】
位相値φの算出によって、ＢＰＭの正弦波に対するビートの発生タイミングの相対位置、すなわち、ＢＰＭの一周期に対してビート発生タイミングがどのくらい遅れているかがわかる。
【００４０】
図７は、ＢＰＭを示す余弦波（EXP(2πjｆt)の実部）と、ビートの発生タイミングとの関係を図示する。図７に示す例では、Ｓｐｘデータの個数が４であり、そのＢＰＭが７２である。図７に示すＳｐｘデータの夫々は、式２を用いて求められるｃ(i)の値（位相）であり、ビートの発生タイミングを示す。Ｓｐｘデータ間がビート発生タイミングの間隔をなす。図７に示す例では、位相値φの計算によって得られる、ＢＰＭ周波数を有する余弦波からπ／２遅れたタイミングがビートの発生タイミングとなる。算出部１０３は、ＢＰＭの一周期のサンプル数を周期データとする（Ｓ１５）。
【００４１】
例えば、ＢＰＭが１０４であり、サンプリングレートが４４１００Ｈｚの場合では、周期データ（サンプル数）は、４４１００[個]／（１０４／６０）＝２５４４２[個]となる。また、周期データが２５４４２[個]の場合において、位相値φが０．３４[rad]であった場合、位相データ（サンプル数）は、２５４４２[個]×０．３４[rad]／２π[rad]＝１３７７[個]となる。そして、算出部１０３は、周期データ及び位相データを出力する（Ｓ１６）。なお、算出部１０３は、６秒分のＳｐｘデータが蓄積されるごとに、Ｓ１１〜Ｓ１６の処理を繰り返し行う。これにより、楽曲のリズムの変更に追従することができる。
【００４２】
＜ビート発生タイミングの検出＞
図８は、検出部１０４によるビート発生タイミングの検出処理の例を示すフローチャートである。Ｓ２１において、検出部１０４は、新しい周期データ及び位相データが算出部１０３から提供されたかを判定する。新しい周期データ及び位相データが提供された場合には、処理がＳ２２に進み、そうでない場合には、処理がＳ２３に進む。
【００４３】
Ｓ２２では、検出部１０４は、新しい周期データ及び位相データをビート発生タイミングの検出に採用し、古い周期データ及び位相データは破棄する。このとき、Ｓｐｘデータの作成時に、Ｓｐｘデータをなすフレームのサンプルは、１００ｍｓ遅延が与えられた状態となっているため、ここで、演奏又は再生中の楽曲とリズムと、後述するハンドクラップ音とが一致するように時間調整（位相調整）が行われる。その後、処理がＳ２３に進む。
【００４４】
Ｓ２３では、周期データのサンプル数及び位相データのサンプル数を用いたカウンタの設定を行う。例えば、検出部１０４は、サンプリングレートの１サンプル（サンプリングレートに従ったアナログ信号の電圧チェックの間隔）毎にカウントアップ（インクリメント）を行うカウンタを有し、当該カウンタのカウント値を１サンプル毎にインクリメントする。これによってカウント値が零から所定値（位相データのサンプル数（カウント値）及び周期データのサンプル数（カウント値）の和を示す値）以上になるのを待つ（Ｓ２４）。
【００４５】
カウンタのカウント値が所定値以上になると、検出部１０４は、予測に基づく、ビート音の発生タイミングを検出し、ビート音の出力指示を出力する（Ｓ２５）。再生処理部１０５は、出力指示に応じて、ＲＯＭ１１又はＨＤＤ１３に予め記憶していたビート音（例えば、ハンドクラップ音）のディジタルデータをＤ／Ａ１７へ送る。ディジタルデータはＤ／Ａ１７でアナログ信号に変換され、ＡＭＰ１８で振幅増幅された後、スピーカ１９から出力される。これによって、再生又は演奏中の楽曲に重ねてハンドクラップ音が出力される。
【００４６】
＜実施形態の効果＞
実施形態によれば、再生又は演奏済みの（過去の）楽曲が生成部１０１に入力され、生成部１０１がＳｐｘデータを生成する。このようなＳｐｘデータがバッファ１０２に蓄積され、算出部１０３が所定時間（６秒）分の複数のＳｐｘデータから、ビートの周期及び位相を算出し、再生または演奏中の楽曲に合わせたビート音の発生タイミングを検出部１０４が検出して出力する。これによって、再生処理部１０５が再生又は演奏中の楽曲のリズムに合致したハンドクラップ音を出力させることができる。このハンドクラップ音の自動的な出力は、上述したＳｐｘデータの生成や、フーリエ変換データに基づくビートの周期及び位相の算出、並びにカウンタ値のカウントのような、計算量の少ない簡易なアルゴリズムにより行うことができる。これにより、処理の実行主体（ＣＰＵ１０）に対する負荷増大や、メモリリソースの増大を回避することができる。また、処理量が少ないが故に、再生音や演奏音に対する遅延のない（遅延があっても人がそれを認識できない）クラップ音出力が可能となる。
【００４７】
なお、制御部１００が行う処理は、複数のＣＰＵ（プロセッサ）によって行うのでも、マルチコア構成のＣＰＵによって行うのでもよい。また、制御部１００が行う処理は、ＣＰＵ１０以外のプロセッサ（ＤＳＰやＧＰＵなど）、プロセッサ以外の集積回路（ＡＳＩＣやＦＰＧＡなど）、或いはプロセッサと集積回路との組み合わせ（ＭＰＵ、ＳｏＣなど）によって実行されてもよい。
【００４８】
＜変形例＞
上述した実施形態では、周期データの算出に用いるＢＰＭとして、ＢＰＭ８６〜１６８を用いた例を示した。これに対し、ＢＭＰ８６〜１６８（夫々が第１のＢＰＭに相当する）だけでなく、その２倍のＢＰＭ１７２〜３３６や４倍のＢＰＭ３４４〜６７２（第１のＢＰＭの振動数の整数倍の振動数を有する少なくとも１つの第２のＢＰＭに相当）についても、ｃ(i)の絶対値（スペクトル強度）を得る。図９は、１倍（基本ビート）と２倍ビートのスペクトル強度を例示する図である。１倍と２倍のスペクトルの例を示す。そして、１倍、２倍、４倍のそれぞれに係るスペクトル強度を、所定の比で加算した値を、ＢＰＭの決定に用いる。例えば、ＢＰＭ９１（第１のＢＰＭの一例）のスペクトル強度と、ＢＰＭ１８２及びＢＰＭ３６４（少なくとも１つの第２のＢＰＭの一例）のスペクトル強度を０．３４：０．３３：０．３３の比で足し合わせ、その数値をＢＰＭ９１についてのｃ（i）の絶対値として用いる。
【００４９】
楽曲によっては、４分音符に象徴される基本ビートよりも、細分された８分音符、１６分音符に対応するＢＰＭに対するパワーが大きいものがあるので、２倍や４倍のパワーを、基本ビートの強度に反映させることで、よりよいＢＰＭを選出可能となる。上記した例では、整数倍の例として２倍や４倍を例示したが、３倍や５倍以上の整数倍でも、同様の効果を得ることができる。実施形態にて示した構成は、目的を逸脱しない範囲で適宜組み合わせることができる。
【符号の説明】
【００５０】
１・・・ビート音発生タイミング生成装置
２・・・ネットワーク
１０・・・ＣＰＵ
１１・・・ＲＯＭ
１２・・・ＲＡＭ
１３・・・ＨＤＤ
１４・・・入力装置
１５・・・表示装置
１６・・・通信インタフェース
１７・・・ディジタルアナログ変換器
１８・・・アンプ
１９・・・スピーカ
２０・・・アナログディジタル変換器
２１・・・マイクロフォン
１００・・・制御部
１０１・・・生成部
１０２・・・バッファ
１０３・・・算出部
１０４・・・検出部
１０５・・・再生処理部
【図１】
2019224990.tif 000005
【図２】
2019224990.tif 000006
【図３】
2019224990.tif 000007
【図４】
2019224990.tif 000008
【図５】
2019224990.tif 000009
【図６】
2019224990.tif 000010
【図７】
2019224990.tif 000011
【図８】
2019224990.tif 000012
【図９】
2019224990.tif 000013
【国際調査報告】
2019224990.tif 000014
2019224990.tif 000015
2019224990.tif 000016
2019224990.tif 000017
2019224990.tif 000018