JP2009186762A - 拍タイミング情報生成装置およびプログラム - Google Patents

拍タイミング情報生成装置およびプログラム Download PDF

Info

Publication number
JP2009186762A
JP2009186762A JP2008026623A JP2008026623A JP2009186762A JP 2009186762 A JP2009186762 A JP 2009186762A JP 2008026623 A JP2008026623 A JP 2008026623A JP 2008026623 A JP2008026623 A JP 2008026623A JP 2009186762 A JP2009186762 A JP 2009186762A
Authority
JP
Japan
Prior art keywords
beat
information
function
contraction
expansion
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.)
Pending
Application number
JP2008026623A
Other languages
English (en)
Inventor
Akira Ouchi
亮 大内
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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2008026623A priority Critical patent/JP2009186762A/ja
Publication of JP2009186762A publication Critical patent/JP2009186762A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】分析区間内でテンポが変わってもテンポと拍のタイミングを推定可能なテンポクロック生成装置およびプログラムを提供することを目的とする。
【解決手段】本発明に係るテンポクロック生成装置1によれば、4ビートや8ビートなどのリズム構造を有する楽曲のオーディオ信号であれば、曲中でオンセットの出現パターンによらずに拍を特定できる。これは、オーディオ信号v(t)に係る楽音のテンポが、処理区間内で大きく変化することにより、処理区間内においてオンセット検出信号w(t)のパルス発生頻度が大きく変化したとしても、リファレンスデータに基づいて、パルス発生頻度が概ね一定になるように時間軸が伸縮され、テンポクロック生成部30における処理が行われるからである。
【選択図】図7

Description

本発明は、テンポクロックなど拍のタイミングを規定する情報を生成する技術に関する。
ビート感のあるオーディオ信号からビート(beat:強いアクセントのあるリズム)を抽出する技術が開示されている。例えば、特許文献1では、入力音楽信号から音楽のリズムのビートを抽出する装置が記載されている。この装置は、スペクトログラムにおけるパワースペクトルが大きく変化するタイミングを検出し、その変化するタイミングと同期するようにビート成分検出出力信号を出力するビート抽出手段を備えている。また、特許文献2では、テンポが楽曲の途中で変化する音楽データであってもテンポを正確に推定するための技術が開示されている。この技術においては、テンポを特定するための処理を行う際の処理区間長を適宜組み合わせてテンポの分析を行うことにより、楽曲の途中でテンポが変わることに対応している。
特開2007−033851号公報 特許3674950号公報
上記特許文献1、2の技術においては、入力されたオーディオ信号を、所定の長さのフレームに分割し、分割されたフレームについて分析を行う。その場合、少なくとも分析区間内ではテンポが一定であると仮定して分析を行っている。しかし、楽曲の中には、楽曲の途中でテンポが2倍になったり、半分になったりと大きくテンポが変化するものもあるが、上記の技術においては、分析区間内でテンポが大きく変わった場合には適切なテンポの推定ができないという問題点があった。
本発明は上述の課題に鑑みてなされたものであり、分析区間内でテンポが変わっても適切にテンポと拍のタイミングを推定することが可能な拍タイミング情報生成装置およびプログラムを提供することを目的とする。
上述の課題を解決するため、本発明は、所定の楽曲の各部におけるテンポを示すリファレンスデータを記憶するリファレンスデータ記憶手段と、楽音を表すオーディオ信号を取得するオーディオ信号取得手段と、前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得手段と、前記所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得手段と、前記オーディオ信号取得手段によって取得されたオーディオ信号が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出手段と、前記リファレンスデータに係る楽曲の各部と、前記オンセット検出手段によって生成されたオンセット検出情報の各部とを対応付ける対応付け手段と、前記オンセット検出手段によって生成されたオンセット検出情報の各部について、当該オンセット検出情報の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオンセット検出情報を時間軸伸縮情報として生成する時間軸伸縮手段と、前記時間軸伸縮手段によって生成された時間軸伸縮情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出手段と、前記周波数成分検出手段によって検出された周波数成分の中から、前記拍情報取得手段によって取得された拍情報および前記ビート指示情報取得手段によって取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定手段と、前記ビート周波数特定手段によって特定された周波数および位相を有する正弦波を生成する周期関数生成手段と、前記周期関数生成手段によって生成された正弦波を各フレームについて重ね合わせる重合手段と、前記重合手段によって重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成手段と、前記補正前情報生成手段によって生成された補正前情報の各部について、前記時間軸伸縮手段における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮手段とを具備し、前記対応付け手段は、前記逆時間伸縮手段によって生成された拍タイミング情報に基づいて、前記対応付けを行うことを特徴とする拍タイミング情報生成装置を提供する。
また、本発明は、所定の楽曲の各部におけるテンポを示すリファレンスデータを記憶するリファレンスデータ記憶手段と、楽音を表すオーディオ信号を取得するオーディオ信号取得手段と、前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得手段と、前記所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得手段と、前記リファレンスデータに係る楽曲の各部と、前記オーディオ信号取得手段によって取得されたオーディオ信号の各部とを対応付ける対応付け手段と、前記オーディオ信号取得手段によって取得されたオーディオ信号の各部について、当該オーディオ信号の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオーディオ信号を時間軸伸縮波形として生成する時間軸伸縮手段と、前記時間軸伸縮手段によって生成された時間軸伸縮波形が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出手段と、前記オンセット検出手段によって生成されたオンセット検出情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出手段と、前記周波数成分検出手段によって検出された周波数成分の中から、前記拍情報取得手段によって取得された拍情報および前記ビート指示情報取得手段によって取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定手段と、前記ビート周波数特定手段によって特定された周波数および位相を有する正弦波を生成する周期関数生成手段と、前記周期関数生成手段によって生成された正弦波を各フレームについて重ね合わせる重合手段と、前記重合手段によって重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成手段と、前記補正前情報生成手段によって生成された補正前情報の各部について、前記時間軸伸縮手段における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮手段とを具備し、前記対応付け手段は、前記逆時間伸縮手段によって生成された拍タイミング情報に基づいて、前記対応付けを行うことを特徴とする拍タイミング情報生成装置を提供する。
また、別の好ましい態様において、前記時間軸伸縮手段は、前記リファレンスデータが示すテンポが大きいほど時間軸を伸長し、小さいほど時間軸を圧縮することを特徴とする。
また、別の好ましい態様において、前記補正前情報生成手段は、前記選択されたタイミングの時刻を表すデータである補正前情報を生成し、前記逆時間軸伸縮手段は、前記時間軸の伸縮に応じて、補正前情報が示す時刻を変更することによって、拍タイミング情報を生成することを特徴とする。
また、別の好ましい態様において、前記リファレンス情報は、楽曲の各部を少なくとも拍を単位として示し、前記逆時間軸伸縮手段によって生成される拍タイミング情報は、拍のタイミングをパルスで示すものであり、前記対応付け手段は、前記拍タイミング情報に係るパルスの数を計測することによって、前記各パルスに対応する前記楽曲の各部を認識して、前記対応付けを行うことを特徴とする。
また、本発明は、コンピュータに、楽音を表すオーディオ信号を取得するオーディオ信号取得機能と、前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得機能と、所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得機能と、前記オーディオ信号取得機能において取得されたオーディオ信号が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出機能と、前記所定の楽曲の各部におけるテンポを示すリファレンスデータに係る楽曲の各部と、前記オンセット検出機能において生成されたオンセット検出情報の各部とを対応付ける対応付け機能と、前記オンセット検出機能において生成されたオンセット検出情報の各部について、当該オンセット検出情報の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオンセット検出情報を時間軸伸縮情報として生成する時間軸伸縮機能と、前記時間軸伸縮機能において生成された時間軸伸縮情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出機能と、前記周波数成分検出機能において検出された周波数成分の中から、前記拍情報取得機能において取得された拍情報および前記ビート指示情報取得機能において取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定機能と、前記ビート周波数特定機能において特定された周波数および位相を有する正弦波を生成する周期関数生成機能と、前記周期関数生成機能において生成された正弦波を各フレームについて重ね合わせる重合機能と、前記重合機能において重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成機能と、前記補正前情報生成機能において生成された補正前情報の各部について、前記時間軸伸縮機能における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮機能とを実現させ、前記対応付け機能は、前記逆時間伸縮機能において生成された拍タイミング情報に基づいて、前記対応付けを行うことを特徴とするプログラムを提供する。
また、本発明は、コンピュータに、楽音を表すオーディオ信号を取得するオーディオ信号取得機能と、前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得機能と、所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得機能と、前記所定の楽曲の各部におけるテンポを示すリファレンスデータに係る楽曲の各部と、前記オーディオ信号取得機能において取得されたオーディオ信号の各部とを対応付ける対応付け機能と、前記オーディオ信号取得機能において取得されたオーディオ信号の各部について、当該オーディオ信号の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオーディオ信号を時間軸伸縮波形として生成する時間軸伸縮機能と、前記時間軸伸縮機能において生成された時間軸伸縮波形が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出機能と、前記オンセット検出機能において生成されたオンセット検出情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出機能と、前記周波数成分検出機能において検出された周波数成分の中から、前記拍情報取得機能において取得された拍情報および前記ビート指示情報取得機能において取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定機能と、前記ビート周波数特定機能において特定された周波数および位相を有する正弦波を生成する周期関数生成機能と、前記周期関数生成機能において生成された正弦波を各フレームについて重ね合わせる重合機能と、前記重合機能において重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成機能と、前記補正前情報生成機能において生成された補正前情報の各部について、前記時間軸伸縮機能における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮機能とを実現させ、前記対応付け機能は、前記逆時間伸縮機能において生成された拍タイミング情報に基づいて、前記対応付けを行うことを特徴とするプログラムを提供する。
本発明に係る拍タイミング情報生成装置およびプログラムによれば、分析区間内でテンポが変わっても適切にテンポと拍のタイミングを推定することが可能となる。
実施形態の説明に入る前に、楽曲の「拍子」、「テンポ」、および「ビート」について説明する。楽曲においては、基調となる所定の音符による拍が複数集まって小節をなし、この小節が周期的に繰り返される場合、「拍子」とは小節に含まれる上記所定の音符(拍)の数を示す。例えば、4分の4拍子の楽曲では、基調となる4分音符が4拍集まって1小節が構成される。
「テンポ」とは、上記基調となる所定の音符が発音される頻度であり、例えばテンポ120とは、4分音符が1分間に120回の頻度で発音される演奏の速度である。「ビート」とは、上記基調となる音符で刻まれる1拍について、どのようにリズムをとるかを示すものである。例えば4分の4拍子の場合、4分音符を単位にしてリズムをとると4ビートとなり、8分音符を単位にしてリズムをとると8ビートとなる。そのように、1つ1つの拍についてどの音符を単位にしてリズムをとるかを示すのがビートである。以下の説明においては、上述した「拍子」、「テンポ」、および「ビート」の定義を用いて説明する。
以下、図面を参照しつつ、本発明を実施する際の最良の形態について説明する。
(A;構成)
図1は、本発明に係る拍タイミング情報生成装置の一例であるテンポクロック生成装置1の全体構成を示す図である。テンポクロック生成装置1は、例えばパーソナルコンピュータで構成される。すなわち、テンポクロック生成装置1は、制御部110、ROM(Read Only Memory)120、RAM(Random Access Memory)130、操作部140、表示部150、HDD(Hard Disk Drive)160、音声処理部170、および音声処理部170に接続されたスピーカ180を有する。上記各部はバスを介して互いに接続されている。
制御部110は、例えばCPU(Central Processing Unit)であり、ROM120に格納された制御プログラムを実行することにより各部の制御を行う。ROM120は、制御部110が実行する制御プログラムを格納している。RAM130は、制御部110によってワークエリアとして利用される。
操作部140は、例えばキーボードやマウスであり各種の操作子を備える。操作部140はユーザによる操作内容を表す操作信号を制御部110へ出力する。表示部150は、例えばLCD(Liquid Crystal Display)などの表示手段である。このディスプレイの画面には、オーディオ信号の処理に係る各種設定を行うためのメニュー画面が表示される。
HDD160は、大容量の記憶装置であり、様々な楽曲の演奏に係る楽音を表すオーディオ信号v(t)を複数記憶している。オーディオ信号v(t)は、例えばWAVE形式やMP3(MPEG−1 Audio Layer−3)形式の音データとして記憶され、楽音の波形を表している。そして、この波形は、時刻tの進行により振幅が変化する波形(以下、時間波形という)である。なお、オーディオ信号v(t)は、演奏に係る楽音を表しているから、その演奏速度は必ずしも一定ではなく、例えば数%程度揺らいでいることもある。
HDD160に含まれるオーディオ信号v(t)の中には、途中でテンポが大きく変化する楽曲の演奏に係る楽音を表したオーディオ信号v(t)が含まれる。また、オーディオ信号v(t)の冒頭には、所定の間隔のインパルス音(以下、タッピング音)が付加されている。タッピング音は、このタッピング音が付加されたオーディオ信号v(t)が示す楽音の最初の小節における拍と位相が同期している。そして、このようなタッピング音に引き続きオーディオ信号v(t)が示す楽音が連続するようになっている。すなわち、タッピング音が、オーディオ信号v(t)が示す楽音の演奏開始タイミングおよび演奏速度を示すものとなっている。
また、HDD160には、各楽曲の各部におけるテンポを示すリファレンスデータを記憶している。図2は、リファレンスデータの一部を取り出して示した図である。図2に示すように、リファレンスデータは、楽曲のリズム構造を表すパラメータである「N値」、楽曲のテンポの初期値(以下、テンポ初期値という)、および各ソングポジションにおけるテンポをテンポ初期値との相対値(以下、伸縮率という)を示している。この例においては、テンポ初期値は「120」であるから、伸縮率「1.0」はテンポ「120」を示し、伸縮率「2.0」はテンポ「240」であることを示す。
ソングポジションは、楽曲の各部を示すものであって、「小節数」:「拍数」:「クロック数」で示されている。小節数は、楽曲が開始されてからの小節の数である。拍数は、各小節において何拍目を示すものかであり、4拍子の楽曲であれば、1から4の値となる。クロック数は、各拍内の位置を示すものであ。この例においては、1拍を96クロックで分割し、クロック数で1拍内の位置を示し、クロック数「00」は拍の最初を示し、「48」は拍の半分、すなわち半拍分経過したところを示している。例えば、ソングポジションが「002:01:48」である場合には、楽曲の2小節目の最初から半拍経過した時点を示している。この例においては、リファレンスデータは、楽曲の半拍ごとのテンポを示すようになっているが、さらに短い単位でテンポを規定してもよいし、逆に長い単位、例えば1拍毎、1小節毎などでテンポを規定してもよい。
「N値」は、楽曲のリズムのビート数を拍子の値で除した値である。例えば、リファレンスデータのように4分の4拍子で8ビートの場合には、N=8ビート/4拍子=2となる。
音声処理部170は、D/A(Digital/Analog)変換器とアンプとを有する。制御部110から受取った音を表すデジタルのデータはD/A変換によりアナログの信号に変換され、アンプにより振幅が調整された後、スピーカ180に出力される。スピーカ180は、音声処理部170から受取ったアナログの信号に基づいて音声を放音する。以上がテンポクロック生成装置1の構成である。
(B;動作)
次に、ROM120に格納された制御プログラムに従って制御部110が行うビート抽出処理について説明する。
(B−1;処理の概要)
テンポクロック生成装置1の電源が投入されると、制御部110は、ROM120から制御プログラムを読み出しRAM130にロードする。ユーザにより操作部140が操作され、特定のオーディオ信号v(t)および楽曲が選択されると、制御部110は、選択されたオーディオ信号v(t)、および選択された楽曲のリファレンスデータ(この例においては、図2に示すようなリファレンスデータ)をHDD160から読み出す。読み出されたリファレンスデータは、RAM130に書き込まれる。
制御部110は、まずオーディオ信号V(t)の冒頭に付加されたタッピング音の解析を行う。すなわち、タッピング音の発音タイミングを特定し、そのタイミングからタッピング音の周期を算出する。そして算出されたタッピング音の発音タイミングおよび周期はRAM130の所定のエリアに書き込まれる。
次に、制御部110は、読み出したオーディオ信号v(t)を音声処理部170に供給し、スピーカ180に放音させる。そして、制御部110は、オーディオ信号v(t)の再生と並行して、以下に延べるビート抽出処理を行う。
図3に示すように、制御部110は、制御プログラムによって、オンセット検出部10、時間軸伸縮処理部20、テンポクロック生成部30、逆時間軸伸縮処理部40および伸縮率指定部50を構成する。HDD160からオーディオ信号v(t)が読み出され、読み出しに応じてオンセット検出部10に順次入力される。オンセット検出部10は、オーディオ信号v(t)から抽出したオンセット(ビート)を表す信号であるオンセット検出信号w(t)を生成し、時間軸伸縮処理部20に順次出力する。
時間伸縮処理部20は、後述する伸縮率指定部50から、伸縮率を示す伸縮率情報P(t)を取得する。そして、オンセット検出部10から入力された時間波形であるオンセット検出信号w(t)に対して、伸縮率情報P(t)が示す伸縮率で、時間領域における伸縮をする時間軸伸縮処理を行い、時間伸縮信号x(t’)を生成する。
テンポクロック生成部30は、時間軸伸縮処理部20によって生成された時間伸縮信号x(t’)から、オーディオ信号v(t)の拍に対応する信号成分を検出し、検出された成分から補正前パルス信号u(t’)を生成する。
逆時間軸伸縮処理部40は、後述する伸縮率指定部50から、伸縮率を示す伸縮率情報P(t)を取得する。そして、テンポクロック生成部30によって生成された補正前パルス信号u(t’)に対して、伸縮率情報P(t)が示す伸縮率の逆数での時間領域における伸縮、すなわち、時間軸伸縮処理部20における処理の逆の処理である逆時間軸伸縮処理を行い、テンポクロックパルス信号z(t)を生成する。
伸縮率指定部50は、逆時間軸伸縮処理部40において生成されたテンポクロックパルス信号z(t)およびリファレンスデータを取得し、このテンポクロックパルス信号z(t)に基づいて、オンセット検出部10に入力されるオーディオデータv(t)の各部と、リファレンスデータに係る楽曲の各部とを対応付ける。そして、オンセット検出部10に入力される各時点におけるオーディオデータv(t)の各部に対応する楽曲の各部の伸縮率を特定し、特定した伸縮率を示す伸縮率情報P(t)を時間軸伸縮処理部20および逆時間軸伸縮処理部40に出力する。
(B−2;オンセット検出部10の処理)
オンセット検出部10の処理を図4、図5、図6を用いて説明する。図4は、オンセット検出部10における処理のフローチャート、図5は、オンセット検出部10の構成を示したブロック図である。また、図6は、オーディオ信号v(t)とオンセット検出信号w(t)との関係を示す図である。図5に示すように、オンセット検出部10は、パワー算出部11とローパスフィルタ12と差分生成部13と半波整流器14とを有する。
まず、オンセット検出部10は、オーディオ信号v(t)を受取る(ステップSA100)。このオーディオ信号v(t)から、パワー算出部11においてパワーが算出される(ステップSA200)。なお、パワーはオーディオ信号v(t)の2乗、すなわち{v(t)}により算出される時系列信号である。
次に、ローパスフィルタ12は、パワー算出部11から順次パワーを受取り、このパワーの時刻の進行に応じた変動を示すパワー波形のスムージングを目的として所定の閾値を越える高周波成分を取り除く(ステップSA300)。
差分生成部13は、ローパスフィルタ12により処理されたパワー波形に対して、隣接するデータ間で差分を算出する(ステップSA400)ことにより得られる波形を出力する。これは、パワー波形に対して時間微分を施すことによって算出してもよい。
半波整流器14は、差分生成部13から入力された波形から正の部分を取り出し(ステップSA500)、この波形をオンセット検出信号w(t)として時間軸伸縮処理部20に出力する(ステップSA600)。
このようにオンセット検出部10は、図6(A)に示すようなオーディオ信号v(t)が入力されると、図6(B)に示すようなオンセット検出信号w(t)に変換して出力する。ここで、オンセット検出信号w(t)は、オーディオ信号v(t)のHDD160からの読み出しに応じて、順次生成、出力される。すなわち、オーディオ信号v(t)の各部とオンセット検出信号w(t)の各部とは、対応付けられていることになる。
(B−3;時間軸伸縮処理)
次に、時間軸伸縮処理部20の処理について説明する。時間軸伸縮処理部20は、オンセット検出部10から受取ったオンセット検出信号w(t)の時間軸を、伸縮率情報P(t)に従って伸縮する時間軸伸縮処理を行う。この伸縮率情報P(t)は、後述するように、リファレンスデータに基づいて生成され、楽曲の各部のうち、テンポがテンポ初期値よりも速い部分については大きい伸縮率を示し、遅い部分については小さい伸縮率を示すことになる。すなわち、テンポが速い部分に対応するオンセット検出信号w(t)の時間軸は伸長され、テンポが遅い部分に対応するオンセット検出信号w(t)の時間軸は圧縮される。このように、時間軸伸縮処理は、リファレンスデータが示すテンポに応じて時間軸を伸縮させる処理である。
以下、時間軸伸縮処理について図7を用いて説明する。図7は、オンセット検出部10から出力されるオンセット検出信号w(t)の一部(図7(A))と、伸縮率指定部50から出力される伸縮率情報P(t)の一部(図7(B))について、時間軸を揃えて示している。ここで、伸縮率情報P(t)が示す伸縮率が「1.0」である期間に対応するオンセット検出信号w(t)の期間を期間A、伸縮率情報P(t)が示す伸縮率が「2.0」である期間に対応するオンセット検出信号w(t)の期間を期間Bとする。
一方、図7(C)は、オンセット検出信号w(t)が時間軸伸縮処理されることにより生成された時間伸縮信号x(t’)を示している。この時間伸縮信号x(t’)は、時間軸伸縮処理部20が、伸縮率が「1.0」である期間Aの部分については、オンセット検出信号w(t)に対して時間軸伸縮処理を行わないが、伸縮率が「2.0」である期間Bの部分については、オンセット検出信号w(t)を2倍に伸長する時間軸伸縮処理を行うことにより生成される。ここで、図7(C)の期間Cは、期間Bを伸長した部分であるから、期間Bの2倍の長さになっている。
ここで、時間伸縮信号x(t’)の時間軸は、オンセット検出信号w(t)および伸縮率情報P(t)の時間軸tとは同一の時間軸上で進行するものではなく、テンポクロック生成部の処理において、計算上時間軸が伸縮されたものとして扱うための仮時間軸t’である。
このように、オンセット検出信号w(t)においてパルス発生頻度が異なっていても、このような時間軸伸縮処理により時間伸縮信号x(t’)が生成されることによって、テンポクロック生成部30における計算上は、パルス発生頻度を概ね一定にすることができる。ここで、オンセット検出信号w(t)のパルス発生頻度が変化する時点と、伸縮率情報P(t)が示す伸縮率が変化する時点とが一致しないことには、このような処理は実現しない。一方、後述するように、伸縮率指定部50は、期間Aと期間Bの境界におけるオンセット検出信号w(t)の部分を、リファレンスデータにおいて、伸縮率が「1.0」から「2.0」に切り替わるソングポジションに対応付けているから、図7(B)に示すようなオンセット検出信号w(t)のパルス発生頻度の変化に対応した伸縮率情報P(t)を出力することができる。
(B−4;テンポクロック生成部30の処理)
(B−4−1;処理の概要)
次に、テンポクロック生成部30が行う処理について説明する。図8は、テンポクロック生成部30の処理の流れを示したフローチャートである。また、図9は、テンポクロック生成部30による処理を示したブロック図である。
図9に示すように、テンポクロック生成部30において、時間伸縮信号x(t’)は複数の処理系統1、2、・・・(n−1)、n、(n+1)、・・・に入力される(ステップSB100)。各処理系統においては、時間伸縮信号x(t’)についてそれぞれ異なる順次連続する所定長のフレームに対して同じ処理が施され、それぞれの処理系統においては、最終的に信号s’(t’)が生成される。各処理系統において生成された信号s’(t’)は、加算器において加算されオーバーラップ加算正弦波s(t’)が生成される。オーバーラップ加算正弦波s(t’)に対して、ピーク検出処理(2)および1/N分周処理が施されることにより、最終的に補正前パルス信号u(t’)が生成される。以上がテンポクロック生成部30の処理の概要である。
以下では、各処理系統における処理内容について詳細に説明する。なお、処理系統nにおいて実行される処理について、パラメータnを用いながら説明する。各処理系統1、2、・・・においては、以下の説明において割り当てられたnの値を代入した内容の処理が行われる。
(B−4−2;窓掛け処理(1))
処理系統nに入力された時間伸縮信号x(t’)には、まず窓掛け処理(1)が施される(ステップSB200)。窓掛け処理(1)において、時間伸縮信号x(t’)は、以下の数式(1)に従って処理され信号x(t’)が生成される。数式(1)において、w(t’)は、所定の窓長(この例においては、5秒)のハミング窓関数である。従って、各処理系統では、時間伸縮信号x(t’)から、所定の領域の信号(以下、フレーム)が“切り出される”。ここで、各処理系統において用いられるハミング窓関数の、隣接する処理系統間でのフレームのずれをT(本実施形態では、T=1秒)とする。
Figure 2009186762
数式(1)によれば、処理系統nにおいては、窓関数w(t’)がn・T秒シフトした窓関数であるw(t’−nT)が演算に用いられる。その結果、各処理系統においては、時間伸縮信号x(t’)から、隣接するフレーム間でオーバーラップすると共に時間的に連続したフレームが切り出される。本実施形態においては、上記各フレームの時間長は5秒であり、隣接するフレームは1秒のずれを有することから、隣接するフレーム間で80%(4秒)がオーバーラップするように時間伸縮信号x(t’)からフレームが切り出される。なお、この例においては、上記ハミング窓関数の時間長を5秒、フレームのずれTを1秒としたが、それらにはユーザにより適宜定められた値を用いれば良い。
(B−4−3;フーリエ変換)
窓掛け処理(1)により生成された信号x(t’)に対して、以下の数式(2)によるフーリエ変換が施される(ステップSB300)。各フレームの信号、すなわち時間伸縮信号x(t’)の特定の区間がどのような周波数成分から成るかを示すパワースペクトルX(ω)が生成される。
Figure 2009186762
(B−4−4;ピーク検出処理(1))
ピーク検出処理(1)においては、まず、上記フーリエ変換により生成されたパワースペクトルX(ω)から、パワースペクトルにおける各周波数成分の振幅の2乗を表す|X(ω)|を算出する。図10には、|X(ω)|のグラフの一例を示す。一般的に、インパルス列の関数をフーリエ変換すると、このインパルス列の角周波数およびこの角周波数の整数倍の角周波数で周期的にピークを迎えるインパルス列のパワースペクトルが生成されることが知られている。時間伸縮信号x(t’)は、上述したように周期的にピークが現れることから、インパルス列の関数と類似の特徴を有する。従って図10に示すように、時間伸縮信号x(t’)のパワースペクトルの振幅|X(ω)|は、複数の周波数(この例においては、4、8、12、…[Hz])において極大を示す。
なお、上述したように時間伸縮信号x(t’)にはノイズや不等間隔で現れるビート成分などが含まれるため、上記パワースペクトルにおいて極大を示す角周波数ωの間における周波数においても、その振幅値は0とならず正の値を示している。ここで、オンセット検出信号w(t)をそのまま用いた場合には、同じ窓関数で切り取られたフレーム内において、パルスの発生頻度が大きく変動することがあるから、パワースペクトルはより複雑な波形となり適切なピーク検出が困難となるが、時間伸縮信号x(t’)は、時間軸伸縮処理が行われてパルスの発生頻度が概ね一定となっているから、図10のようなスペクトルを得ることができる。
|X(ω)|が算出されると、オーディオ信号v(t)のテンポが、RAM130に書き込まれたタッピング音の周期から算出される。この例においては、タッピング音は0.5秒おきに発生するよう設定されているものとし、テンポは120と算出される。そして、算出されたタッピング音のテンポに対応する角周波数(上記の場合、4π[rad/秒])の所定数(RAM130に書き込まれたリファレンスデータが示すN値)倍の角周波数付近(前後所定の範囲)から、振幅|X(ω)|が極大を示す角周波数ωを特定する(ステップSB400)。例えば、図10に示される|X(ω)|においては、タッピング音の周波数(2Hz)の2(=N)倍である4[Hz](ω=8π[rad/秒])の近傍の周波数で極大値となるような角周波数ωが決定される。
また、|X(ω)|が極大を示す角周波数ωの周波数成分の初期位相θ=arg(X(ω))が算出される。この場合、θは上記|X(ω)|が極大を示す角周波数ωにおけるパワースペクトル値(複素数)を極形式で表示した場合の偏角であり、角周波数ωにおけるパワースペクトル値の複素数から一義的に導かれる。以上のようにして決定された角周波数ωと初期位相θは、発振器に出力される。
(B−4−5;発振器)
発振器においては、上述のピーク検出処理(1)において求められた角周波数ωおよび初期位相θに基づいて、以下の数式(3)に示すように、角周波数がωであり初期位相がθである余弦波信号s(t’)が生成される(ステップSB500)。
Figure 2009186762
(B−4−6;窓掛け処理(2))
窓掛け処理(2)においては、上記発振器において生成された余弦波信号s(t’)に対して、以下の数式(4)に従って窓掛け処理が施され、信号s’(t’)が生成される(ステップSB600)。本窓掛け処理(2)において用いられる窓関数w(t’)は、所定の窓長を有するコサイン窓関数である。なお、この例においては、コサイン窓関数の時間長は5秒とするが、ユーザにより適宜定められた値を用いれば良い。また、各処理系統の上記コサイン窓関数の区間は、同じ処理系統において窓掛け処理(1)で用いられたハミング窓関数の区間と同じである。
Figure 2009186762
次に、窓掛け処理(2)により生成された信号s’(t’)は、加算器において以下の数式(5)に従って加算され、オーバーラップ加算正弦波s(t’)が生成される(ステップSB700)。
Figure 2009186762
本処理により、時間伸縮信号x(t’)の長さに対応する概ね正弦波形状のオーバーラップ加算正弦波s(t’)が生成される。図11(B)は、図11(A)に示された時間伸縮信号x(t’)から生成されたオーバーラップ加算正弦波s(t’)である。図11に示されているように、オーバーラップ加算正弦波s(t’)の極大値は、時間伸縮信号x(t’)のピークと、タイミングが概ね一致している。
なお、本加算処理の直前に、各処理系統において生成された信号s’(t’)にはコサイン窓関数による窓掛け処理(2)が施されていることから、それらを加算したオーバーラップ加算正弦波s(t)は、全時間領域でなめらかに連続した関数となる。
(B−4−7;ピーク検出処理(2))
ピーク検出処理(2)においては、加算器により生成されたオーバーラップ加算正弦波s(t’)のピーク時刻(すなわち隣り合うゼロクロスとゼロクロスの中点となる時刻)を特定し、特定した時刻において値がk(k>0)となり、特定した時刻以外の時刻においては値が0となるパルス信号z(t’)を生成する(ステップSB800)。
Figure 2009186762
(B−4−8;1/N分周処理)
1/N分周器においては、上記ピーク検出処理(2)において生成されたパルス信号z(t’)において、パルスをN個に1個だけ残し他のパルスを「間引く」処理を行う(ステップSB900)。すなわち、1/N分周器においては、パルス信号z(t’)からN(=2)個に1つのパルスのみを選択し、この選択したパルスからなる補正前パルス信号u(t’)を生成する。
その場合、パルス信号z(t’)からN個に1つの間隔でパルスを選択する組み合わせは、N通り存在する。図12(A)に示されたオーバーラップ加算正弦波s(t’)からは、図12(B)のように2(=N)通りの候補が生成される。それらは、オーディオ信号v(t)の拍に対応するテンポクロックパルス信号z(t)の候補と、拍に対応しない(拍の裏に対応する)候補である。なお、生成されたN通りの候補のいずれがオーディオ信号v(t)の拍と位相が対応しているか、オーバーラップ加算正弦波s(t’)のみからは判断することはできない。
そこで、1/N分周器は、オーディオ信号と対応付けられたタッピング音からN通りの候補のいずれがタッピング音と位相が一致するかを検出し、最も良い一致を示した候補を最終的な補正前パルス信号u(t’)と決定する。その際、RAM130に書き込まれたタッピング音のタイミングおよびその周期と、上記補正前パルス信号u(t’)の候補に含まれるパルスのタイミングとを比較することにより上記判断を行う。ここでは、候補1が選択されたものとして説明する。
(B−5;逆時間軸伸縮処理)
次に、逆時間軸伸縮処理部40の処理について説明する。逆時間軸伸縮処理部40は、テンポクロック生成部30から受取った補正前パルス信号u(t’)の時間軸を、伸縮率情報P(t)に応じて伸縮する逆時間軸伸縮処理を行うことによって、計算上の仮時間軸t’から時間軸tに戻して、テンポクロックパルス信号z(t)を生成する。すなわち、補正前パルス信号u(t’)の時間軸を伸縮率情報P(t)が示す伸縮率の逆数で伸縮する。
図13を参照して具体的に説明する。図13(A)は、テンポクロック生成部30によって生成された補正前パルス信号u(t’)、図13(B)は、伸縮率指定部50によって生成された伸縮率情報P(t)、図13(C)は、逆時間軸伸縮処理により変換されたテンポクロックパルス信号z(t)を示す。
期間Aにおいては、伸縮率の値は「1.0」であるから、補正前パルス信号u(t’)は、伸縮されずにテンポクロックパルス信号z(t)となる。そして、期間Bにおいては、伸縮率の値は「2.0」であるから、補正前パルス信号u(t’)は、「2.0」の逆数である0.5倍に伸縮する。すなわち、仮時間軸t’は、倍の速さで進行する時間軸tとして変換される。したがって、補正前パルス信号u(t’)の期間Cに相当する部分が、テンポクロックパルス信号z(t)の期間Bに相当する部分となるように変換される。ここで、仮時間軸t’は、上述したように計算上の時間軸であり、現実の時間軸tとは別の時間軸である。そのため、仮時間軸t’上で計算された補正前パルス信号u(t’)がRAM130などにバッファされることにより、この例のように時間軸を圧縮する処理を行うことができる。このような処理が行われることによって、図13(C)に示されるテンポクロックパルス信号z(t)が生成される。このように生成されたテンポクロックパルス信号z(t)は、オーディオ信号v(t)の拍のタイミングに同期したものとなる。
(B−6;伸縮率指定処理)
次に、伸縮率指定部50の処理について説明する。伸縮率指定部50は、逆時間軸伸縮処理部40において生成されたテンポクロックパルス信号z(t)およびリファレンスデータを取得する。テンポクロックパルス信号z(t)は、上述のようにオーディオ信号v(t)の拍のタイミングに同期している。したがって、伸縮率指定部50は、最初のパルスからのパルス数をカウントすることにより、カウントしたときにおけるオーディオ信号v(t)が示す楽音が、楽曲のどの位置に対応するか、すなわちソングポジションを認識することができる。例えば、パルスを4回カウントすると、4拍であるから1小節経過したことを認識することができる。これにより、オーディオ信号v(t)の各部は、リファレンスデータに係る楽曲の各部と対応付けられる。
そして、伸縮率指定部50は、認識したソングポジションに対応するテンポを示す伸縮率をリファレンスデータから特定し、特定した伸縮率を示す伸縮率情報P(t)を生成し、時間軸伸縮処理部20および逆時間軸伸縮処理部40に出力する。この伸縮率情報P(t)は、上述したように、時間軸伸縮処理部20および逆時間軸伸縮処理部40における時間軸の伸縮の指標として用いられる。ここで、この例における図7に示すような伸縮率情報P(t)を出力するときには、伸縮率指定部50は、期間Aと期間Bとの境界の時点においては、図2に示すリファレンスデータに係るソングポジションが「009:01:00」であることを認識していることになり、伸縮率情報P(t)が示す伸縮率が、「1.0」から「2.0」に変更される。
上述のように、オーディオ信号v(t)からテンポクロックパルス信号z(t)が生成されるときには、テンポクロック生成に係る計算を、リファレンスデータによって指定されるテンポが大きく変化するタイミングにおいて時間軸を伸縮させて行い、その時間軸を元に戻す伸縮を行う。その結果、図14に示されるように、最終的に生成された図14(C)に示すテンポクロックパルス信号z(t)は、図14(A)に示すオーディオ信号v(t)、および図14(B)に示すオンセット検出信号w(t)と時間軸が一致し、同期したものとなる。
(C;まとめ)
本発明に係るテンポクロック生成装置1によれば、4ビートや8ビートなどのリズム構造を有する楽曲のオーディオ信号であれば、曲中でオンセットの出現パターンによらずに拍を特定できる。例えば、シンコペーションなどのリズムにより、オンセット検出信号w(t)のパルス発生が周期的な状態から一時的に乱れたとしても、所定の処理区間全体におけるパルス発生頻度から計算して適切にテンポクロックパルス信号z(t)を生成することができる。そのため、拍のタイミングで対応する音が意図的に抜かれているなどによりパルスが欠落している場合においても、そのタイミングにおけるパルスが補間されたテンポクロックパルス信号z(t)が生成される。
このとき、オーディオ信号v(t)に係る楽音のテンポが、処理区間内で大きく変化することにより、処理区間内においてオンセット検出信号w(t)のパルス発生頻度が大きく変化したとしても、リファレンスデータに基づいて、パルス発生頻度が概ね一定になるように時間軸が伸縮され、テンポクロック生成部30における処理が行われる。したがって、処理区間内でテンポが大きく変わったとしても、適切なテンポクロックパルス信号z(t)を生成することができる。
なお、以上の処理において、ユーザにより設定されることが要求されるパラメータは窓掛け処理(1)および(2)に係る窓関数の窓長および、処理系統間での窓関数のずれの量のみである。従って、従来のPLL回路を用いたビート検出の方法に比べ、ユーザはパラメータ設定に要する労力を省くことが出来る。
さて、上述のテンポクロック生成装置1により生成されたテンポクロックパルス信号z(t)は、様々な用途に用いることが可能である。例えば、オーディオ信号v(t)から抽出された拍に同期させてMIDI(Musical Instrument Digital Interface)シーケンサなどを動作させることができる。すなわち、例えばカラオケ装置などにおいて、カラオケの歌詞をオーディオ信号v(t)に同期させてワイプしたりすることが可能となる。また、予め用意した伴奏をオーディオ信号v(t)に同期させて付加するなどの処理も可能となる。
(D;変形例)
以上、本発明の実施形態について説明したが、本発明は以下のように種々の態様で実施することができる。なお、以下に説明する種々の実施形態を、適宜組み合わせて実施することも可能である。
(1)上述した実施形態においては、オンセット検出信号w(t)に対して時間軸伸縮処理を施す場合について説明した。しかし、時間軸伸縮処理の対象となる信号は、上述した実施形態に示した信号に限られるものではない。以下では、具体例を挙げて説明する。
図15を参照して説明する。図15(A)に示すようなオーディオ信号v(t)に、図15(B)に示すような伸縮率情報P(t)に基づき時間軸伸縮処理と同じ処理を施して、図15(C)に示すような時間伸縮オーディオ信号va(t’)を生成する。その後、オンセット検出部10において図4に示す処理を施し、時間伸縮オーディオ信号va(t’)から、図15(D)に示すような時間伸縮オンセット検出信号wa(t’)を生成する。そのようにして生成された時間伸縮オンセット検出信号wa(t’)は、上述した実施形態において生成された時間軸伸縮信号x(t’)に相当する信号となり、以降同様の処理を施すことにより、上述した実施形態と同様の処理が実行できる。
(2)上述した実施形態においては、HDD160に予め格納されたオーディオ信号について処理を行う場合について説明した。HDD160に格納されたオーディオ信号を変更・追加・削除するため、以下のような手段を設けても良い。
(a)メディアドライブ
メディアドライブは、例えば音楽コンテンツが格納されているCD−ROMやDVD(Digital Versatile Disc)等の各種記録媒体(メディア)からデータを読み取る。読み取られたデータは、制御部110によりHDD160へ格納され、上述した実施形態におけるオーディオ信号として用いても良い。
(b)マイクロホン
マイクロホンを音声処理部170に接続する。音声処理部170にはA/D(Analog/Digital)変換機能を持たせる。マイクロホンは収音した音を表すアナログ信号を生成し、音声処理部170はこのアナログ信号をA/D変換しデジタルデータを生成する。制御部110は、生成されたデジタルデータをHDD160に書き込み、上述した実施形態におけるオーディオ信号に代えて用いても良い。
(c)通信手段
通信ネットワークインタフェースを設け、各種音楽コンテンツ(オーディオ信号)を格納するサーバにインターネット網などの通信網を通じてアクセスし、音楽コンテンツの取得要求を送り、この取得要求に応じてサーバから送られてくる音楽コンテンツをHDD160に格納するなどしても良い。
また、上記の各種手段を用いて受取ったオーディオ信号を、HDD160に格納する処理と並行して、又はHDD160に格納する処理に代えて、オーディオ信号をリアルタイムに処理するようにしても良い。
(3)上述した実施形態において、オンセット検出信号w(t)において、所定のレベルを下回るインパルスをノイズと見なし、ノイズ成分をカットしてから時間軸伸縮処理部20に出力するなどしても良い。
(4)上述した実施形態においては、あらかじめオーディオ信号v(t)に付加されたタッピング音(インパルス音を表す音データ)を用いて楽曲の拍のタイミングおよびテンポを特定する場合について説明したが、オーディオ信号の再生時にリアルタイムに生成される情報をタッピング音に代えて用いても良い。そのような場合、上記変形例(2)に記載したマイクロホンに対して、ハンドクラップ(拍手)や打楽器などにより拍を刻むことにより音信号を生成させ、生成された音信号を用いても良い。また、所定の操作手段、例えばキーボード(操作部140)のキーのタッピングなど、の操作内容に応じて生成された信号を拍情報として用いても良い。この場合、利用者は、タッピング音に続いてオーディオ信号v(t)がHDD160から読み出されるように、操作部140などを操作する。
また、拍のタイミングとテンポとを指定する数値情報を用いても良い。例えば最初の拍の時刻と拍の間隔を示す数値データを、操作部140を介して入力することができるようにしても良い。また、複数の拍のタイミングを示す数値データを入力することができるようにしても良く、その場合は拍同士の間隔から拍のテンポを算出するようにすれば良い。すなわち、オーディオ信号に含まれる楽音の拍のタイミングおよびそのテンポが特定可能な情報が得られるようにすれば良い。
(5)上述した実施形態においては、オーディオ信号v(t)から、図14に示すようなテンポクロックパルス信号z(t)を生成する場合について説明した。しかし、テンポクロックパルス信号z(t)に代えて、図16に示すような、オーディオ信号におけるテンポクロックパルス(拍)の時刻(例えば、オーディオ信号が開始されてから経過した時間)を示すデータ列である拍タイミング情報として生成しても良い。すなわち、拍のタイミングを示す拍タイミング情報は、テンポクロックパルス信号z(t)のようにパルスで表されていても、本変形例のように数値で表されていてもよく、どのような態様で拍のタイミングを表したものであってもよい。
この場合は、テンポクロック生成部30は、補正前パルス信号u(t’)に対応するオーバーラップ加算正弦波s(t’)の特定点であるピークのタイミングの時刻を示すデータ列を仮時間軸t’上で補正前情報として生成する。そして、逆時間軸伸縮処理部40における逆時間軸伸縮処理においては、この補正前情報が示すデータ列の時間軸を伸縮して時間軸tに変換するようにして、データ列を書き換え、拍タイミング情報とすればよい。そして、伸縮率指定部50は、拍タイミング情報が示すデータ列の時刻を、楽曲のテンポおよび拍子を用いてソングポジションに変換し、伸縮率情報P(t)を出力するようにすればよい。
(6)上述した実施形態において、HDD160に格納されるオーディオ信号は、例えばWAVE形式やMP3形式の音データである場合について説明した。しかし、オーディオ信号v(t)は、他のどのような形式のデータであっても良い。また、上記オーディオ信号v(t)は時間波形を表すデータである場合について説明したが、MIDI形式など、発音すべきノートを時間経過に沿って記した音データなど、他の形式のデータであっても良い。そのように、時間波形を記したデータ以外のデータについて本発明を実施する場合には、このようなデータを一旦時間波形に変換する変換手段を設け、変換手段により時間波形データに変換したデータを上記オーディオ信号v(t)に代えて用いれば良い。
(7)上述した実施形態においては、テンポクロック生成装置1に特徴的な機能をソフトウェアモジュールで実現する場合について説明したが、上記各機能を担うハードウェアモジュールを組み合わせてテンポクロック生成装置1を構成するようにしても良い。
(8)上述した実施形態においては、本発明に係るテンポクロック生成装置1に特徴的な機能を実現するための制御プログラムを、ROM120に予め書き込んでおく場合について説明したが、磁気記録媒体(磁気テープ、磁気ディスク(HDD、FD)など)、光記録媒体(光ディスク(CD、DVD)など)、光磁気記録媒体、半導体メモリなどのコンピュータ読取り可能な記録媒体に記録した状態で提供し得る。また、インターネットのようなネットワーク経由でダウンロードさせることも可能である。
(9)上述した実施形態においては、テンポクロック生成装置1は、HDD160に格納されたオーディオ信号を処理する場合について説明した。しかし、オーディオ信号v(t)を供給する手段は、HDD160などの記憶手段に限られない。例えばテンポクロック生成装置1が各種の記録媒体に記録されたデータを読み出し出力する再生装置を更に備え、再生装置により記録媒体から読み出したデータをリアルタイムに処理しても良い。
(10)上述した実施形態においては、オーディオ信号v(t)の読み出しおよび再生の進行に伴ってテンポクロックパルス信号z(t)を生成する場合について説明した。しかし、このような処理は必ずしもオーディオ信号の進行に伴って行われなくても良い。例えば、オーディオ信号を一旦初めから終わりまで読み出し、読み出しが終了した段階で上述の処理を行い、テンポクロックパルス信号z(t)を生成するようにしても良い。
(11)上述した実施形態においては、ステップSB200の窓掛け処理(1)において、窓関数としてハミング窓関数を用いる場合について説明した。しかし、用いられる窓関数はハミング窓関数に限られるものではなく、ハニング窓関数など他の窓関数でも良い。要は、区間の中央が1付近の値で、その両端で値が0となる関数であれば良い。
(12)上述した実施形態においては、ステップSB600の窓掛け処理(2)において、窓関数としてコサイン窓関数を用いる場合について説明した。しかし、用いられる窓関数はコサイン窓関数に限られるものではなく、ハミング窓関数など他の窓関数でも良い。要は、区間の中央が1付近の値で、その両端で値が0となる関数であれば良く、オーバーラップ加算正弦波s(t’)を、全時間領域でなめらかに連続した関数にできればよい。
(13)上述した実施形態においては、4分の4拍子で8ビートの楽曲を演奏したオーディオ信号v(t)を例示して説明した。しかし、オーディオ信号v(t)が4分の3拍子である場合など、他の拍子にも本発明は適用可能である。その場合、オーディオ信号v(t)に含まれる楽曲のビート数を1小節あたりの拍の数で除した値をN値とすれば良い。例えば、4分の3拍子、6ビートの楽曲であれば、N値は、ビート数を拍子数で除した値である2とすれば良い。
(14)上述した実施形態においては、N値は、リファレンスデータに書き込まれている場合について説明したが、ユーザによりN値が操作部140を介して入力されるようにしても良い。また、ユーザにより操作部140を介して、ビート数が入力されるようにし、制御部110が、入力されたビート数を1小節あたりの拍の数で除した値をN値として算出するようにしても良い。また、1小節あたりの拍の数を表すパラメータをユーザが設定可能としても良い。すなわち、1拍あたりに含まれるビートの数を表すN値が最終的に得られるようにすれば良い。以上のように、ユーザにより各種パラメータが入力される場合には、パラメータを入力するための案内画面を表示部150に表示し、表示内容に従って操作部140を介して入力された内容に基づいてパラメータを設定、算出するようにすれば良い。
(15)上述した実施形態においては、各処理系統で、窓掛け処理(1)における窓関数のフレーム長を5秒とし、隣接する処理系統におけるフレームのずれをT=1秒とする場合について説明したが、それらの長さは上記の値に限定されるものではなく、適宜定められた値を用いれば良い。すなわち、音声など時間変換する信号の周波数と位相の変化を解析する処理区間となるフレームが指定され、順次フレーム範囲をずらして解析することができれば良い。
(16)上述した実施形態においては、オンセット検出信号w(t)に対して時間軸伸縮処理を施す場合について説明した。しかし、オンセット検出信号w(t)を以下のように変形してから時間軸伸縮処理を施しても良い。例えば、オンセット検出信号w(t)のエンベロープ(包絡線)を生成し、このエンベロープにおいて所定の閾値を越える極大値を示す時刻を特定し、特定した時刻をビートの候補とする。そして、特定した時刻において所定の値J(J>0)となり、その時刻以外の時刻においては値が0となるようなパルス列の信号を生成する。そして、生成されたパルス列の信号を、オンセット検出信号w(t)に変えて用いるとしても良い。そのようにすれば、オンセット検出信号w(t)に含まれるビートとは直接関係がない信号成分について信号処理する必要がないため、以降の処理に係る負荷が減少するとの効果がある。
また、オンセット検出信号w(t)を、このように特定した時刻を示す時刻情報から構成されるようにしてもよい。このようにすると、時間軸伸縮処理部20における時間軸伸縮処理は、波形の伸縮ではなく時刻情報を数値的に伸縮するだけでよく、また、テンポクロック生成部30における計算も容易に行うことができ、CPUの処理負担を低減することができる。
(17)上述した実施形態においては、発信器は、ピーク検出処理(1)において求められた角周波数ωおよび初期位相θに基づいて、角周波数がωであり、初期位相がθである余弦波信号st(t’)を生成する場合について説明した。しかし、発信器が生成する信号は余弦波に限られるものではない。例えば、角周波数がωであり、初期位相がθである正弦波を生成する場合、ピーク検出処理(2)において、ゼロクロスをすると共にその微分値が正である時刻を特定し、特定した時刻において値がk(k>0)となり、特定した時刻以外の時刻において値が0となるパルス信号z(t’)を生成すれば良い。
また、発信器が生成する信号は、正弦波や余弦波に限られるものではない。例えば、方形波、三角波、鋸歯状波などのパルス波でも良い。その場合には、周期が2π/ωであり、位相がθ進んだパルス波を生成すると共に、ピーク検出処理(2)において、各パルス波に応じた点(特定点)を特定し、特定点に対応する時刻において値がk(k>0)となり、特定点に対応する時刻以外の時刻において値が0となるパルス信号z(t)を生成すれば良い。上記特定点として、例えば方形波の場合には、振幅が最大値となった区間の中間の点など、三角波の場合には、振幅が最大値となった点など、鋸歯状波の場合には、信号の値が最大値の所定の値となる点などを指定すれば良い。
(18)上述した実施形態においては、リファレンスデータが予め作成されHDD160に格納されている場合について説明した。しかし、リファレンスデータが予め作成されていない場合にも以下の文献に記載の技術を応用することで、適切に時間軸伸縮処理および逆時間軸伸縮処理を施すことができる。
文献:阿部敏彦、誉田雅彰(NTTコミュニケーション科学基礎研究所),"瞬時周波数アトラクタに基づく正弦波分析合成法",信学技報,SP2002−169,pp.1−4,Jan.2003.
まず、上記文献に記載の技術についてその概略を説明する。この文献には、音声信号における周波数(ピッチ)の局所的な変動を打ち消すために、音声信号の時間軸を伸縮する処理について記載されている。この処理においては、音声信号のテンポを一定であると見なした上で瞬時周波数分析を行い、各種パラメータ(倍音成分の周波数ρ(t)およびその導関数)を抽出する。そして、抽出された各種パラメータを用いて、音声信号の周波数変化を打ち消すような時間軸の伸縮を行うための関数(上記文献に記載の関数u(t))を生成する。そして、関数u(t)に基づいて時間軸が伸縮されることにより、音声信号は元々含まれていたピッチの変動がない信号へと変換される。
さて、上記の技術を以下のように本発明に応用する。上述した実施形態において、オンセット検出信号w(t)は、時刻の進行に伴いそのピークが訪れる周期(すなわち周波数)が変動している。この周波数の変動は、上記文献におけるピッチの変動に対応するものである。そこで、オンセット検出信号w(t)に基づいて上記文献に記載の関数u(t)を生成し、関数u(t)をリファレンスデータおよび伸縮率情報P(t)に代えて用いてオンセット検出信号w(t)の時間軸を伸縮するようにしても良い。その結果、オンセット検出信号w(t)は、オンセットの周期(周波数)が概ね一定となるように変換される。この変換により、上述した実施形態における時間軸伸縮処理と同様の効果が奏される。
テンポクロック生成装置1の全体構成を示すブロック図である。 リファレンスデータの一例を示した図である。 制御部110による処理の流れを示すブロック図である。 オンセット検出部10の処理の流れを示したフローチャートである。 オンセット検出部10による処理を示したブロック図である。 オーディオ信号の波形とオンセット検出信号の波形を対応付けて示した図である。 時間伸縮信号x(t’)の生成における各種信号の波形を示した図である。 テンポクロック生成部30の処理の流れを示したフローチャートである。 テンポクロック生成部30による処理を示したブロック図である。 パワースペクトルの一例を示した図である。 オーバーラップ加算正弦波の生成方法を示した図である。 補正前パルス信号の生成方法を示した図である。 テンポクロックパルス信号z(t)の生成方法を示した図である。 制御部110によるオーディオ信号の処理をまとめた図である。 変形例(1)に係るオーディオ信号の処理内容を示した図である。 テンポクロックパルスデータの一例を示す図である。
符号の説明
1…テンポクロック生成装置、10…オンセット検出部、11…パワー算出部、12…ローパスフィルタ、13…差分生成部、14…半波整流器、20…時間軸伸縮処理部、30…テンポクロック生成部、40…逆時間軸伸縮処理部、50…伸縮率指示部、110…制御部、120…ROM、130…RAM、140…操作部、150…表示部、160…HDD、170…音声処理部、180…スピーカ

Claims (7)

  1. 所定の楽曲の各部におけるテンポを示すリファレンスデータを記憶するリファレンスデータ記憶手段と、
    楽音を表すオーディオ信号を取得するオーディオ信号取得手段と、
    前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得手段と、
    前記所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得手段と、
    前記オーディオ信号取得手段によって取得されたオーディオ信号が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出手段と、
    前記リファレンスデータに係る楽曲の各部と、前記オンセット検出手段によって生成されたオンセット検出情報の各部とを対応付ける対応付け手段と、
    前記オンセット検出手段によって生成されたオンセット検出情報の各部について、当該オンセット検出情報の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオンセット検出情報を時間軸伸縮情報として生成する時間軸伸縮手段と、
    前記時間軸伸縮手段によって生成された時間軸伸縮情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出手段と、
    前記周波数成分検出手段によって検出された周波数成分の中から、前記拍情報取得手段によって取得された拍情報および前記ビート指示情報取得手段によって取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定手段と、
    前記ビート周波数特定手段によって特定された周波数および位相を有する正弦波を生成する周期関数生成手段と、
    前記周期関数生成手段によって生成された正弦波を各フレームについて重ね合わせる重合手段と、
    前記重合手段によって重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成手段と、
    前記補正前情報生成手段によって生成された補正前情報の各部について、前記時間軸伸縮手段における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮手段と
    を具備し、
    前記対応付け手段は、前記逆時間伸縮手段によって生成された拍タイミング情報に基づいて、前記対応付けを行う
    ことを特徴とする拍タイミング情報生成装置。
  2. 所定の楽曲の各部におけるテンポを示すリファレンスデータを記憶するリファレンスデータ記憶手段と、
    楽音を表すオーディオ信号を取得するオーディオ信号取得手段と、
    前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得手段と、
    前記所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得手段と、
    前記リファレンスデータに係る楽曲の各部と、前記オーディオ信号取得手段によって取得されたオーディオ信号の各部とを対応付ける対応付け手段と、
    前記オーディオ信号取得手段によって取得されたオーディオ信号の各部について、当該オーディオ信号の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオーディオ信号を時間軸伸縮波形として生成する時間軸伸縮手段と、
    前記時間軸伸縮手段によって生成された時間軸伸縮波形が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出手段と、
    前記オンセット検出手段によって生成されたオンセット検出情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出手段と、
    前記周波数成分検出手段によって検出された周波数成分の中から、前記拍情報取得手段によって取得された拍情報および前記ビート指示情報取得手段によって取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定手段と、
    前記ビート周波数特定手段によって特定された周波数および位相を有する正弦波を生成する周期関数生成手段と、
    前記周期関数生成手段によって生成された正弦波を各フレームについて重ね合わせる重合手段と、
    前記重合手段によって重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成手段と、
    前記補正前情報生成手段によって生成された補正前情報の各部について、前記時間軸伸縮手段における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮手段と
    を具備し、
    前記対応付け手段は、前記逆時間伸縮手段によって生成された拍タイミング情報に基づいて、前記対応付けを行う
    ことを特徴とする拍タイミング情報生成装置。
  3. 前記時間軸伸縮手段は、前記リファレンスデータが示すテンポが大きいほど時間軸を伸長し、小さいほど時間軸を圧縮する
    ことを特徴とする請求項1または請求項2に記載の拍タイミング情報生成装置。
  4. 前記補正前情報生成手段は、前記選択されたタイミングの時刻を表すデータである補正前情報を生成し、
    前記逆時間軸伸縮手段は、前記時間軸の伸縮に応じて、補正前情報が示す時刻を変更することによって、拍タイミング情報を生成する
    ことを特徴とする請求項1乃至請求項3のいずれかに記載の拍タイミング情報生成装置。
  5. 前記リファレンス情報は、楽曲の各部を少なくとも拍を単位として示し、
    前記逆時間軸伸縮手段によって生成される拍タイミング情報は、拍のタイミングをパルスで示すものであり、
    前記対応付け手段は、前記拍タイミング情報に係るパルスの数を計測することによって、前記各パルスに対応する前記楽曲の各部を認識して、前記対応付けを行う
    ことを特徴とする請求項1乃至請求項3のいずれかに記載の拍タイミング情報生成装置。
  6. コンピュータに、
    楽音を表すオーディオ信号を取得するオーディオ信号取得機能と、
    前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得機能と、
    所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得機能と、
    前記オーディオ信号取得機能において取得されたオーディオ信号が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出機能と、
    前記所定の楽曲の各部におけるテンポを示すリファレンスデータに係る楽曲の各部と、前記オンセット検出機能において生成されたオンセット検出情報の各部とを対応付ける対応付け機能と、
    前記オンセット検出機能において生成されたオンセット検出情報の各部について、当該オンセット検出情報の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオンセット検出情報を時間軸伸縮情報として生成する時間軸伸縮機能と、
    前記時間軸伸縮機能において生成された時間軸伸縮情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出機能と、
    前記周波数成分検出機能において検出された周波数成分の中から、前記拍情報取得機能において取得された拍情報および前記ビート指示情報取得機能において取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定機能と、
    前記ビート周波数特定機能において特定された周波数および位相を有する正弦波を生成する周期関数生成機能と、
    前記周期関数生成機能において生成された正弦波を各フレームについて重ね合わせる重合機能と、
    前記重合機能において重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成機能と、
    前記補正前情報生成機能において生成された補正前情報の各部について、前記時間軸伸縮機能における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮機能と
    を実現させ、
    前記対応付け機能は、前記逆時間伸縮機能において生成された拍タイミング情報に基づいて、前記対応付けを行う
    ことを特徴とするプログラム。
  7. コンピュータに、
    楽音を表すオーディオ信号を取得するオーディオ信号取得機能と、
    前記楽音の拍のタイミングを示す拍情報を取得する拍情報取得機能と、
    所定の楽曲のビートに対応するビート指示情報を取得するビート指示情報取得機能と、
    前記所定の楽曲の各部におけるテンポを示すリファレンスデータに係る楽曲の各部と、前記オーディオ信号取得機能において取得されたオーディオ信号の各部とを対応付ける対応付け機能と、
    前記オーディオ信号取得機能において取得されたオーディオ信号の各部について、当該オーディオ信号の各部に対応する楽曲の各部における前記リファレンスデータが示すテンポに応じて時間軸を伸縮し、前記各部の時間軸が伸縮されたオーディオ信号を時間軸伸縮波形として生成する時間軸伸縮機能と、
    前記時間軸伸縮機能において生成された時間軸伸縮波形が表す楽音のオンセットを検出しオンセット検出情報を生成するオンセット検出機能と、
    前記オンセット検出機能において生成されたオンセット検出情報のオンセットに係る周波数成分を順次連続する所定フレーム長毎に検出する周波数成分検出機能と、
    前記周波数成分検出機能において検出された周波数成分の中から、前記拍情報取得機能において取得された拍情報および前記ビート指示情報取得機能において取得されたビート指示情報に応じて、所定の周波数を特定するとともに、当該周波数に対応する位相を特定するビート周波数特定機能と、
    前記ビート周波数特定機能において特定された周波数および位相を有する正弦波を生成する周期関数生成機能と、
    前記周期関数生成機能において生成された正弦波を各フレームについて重ね合わせる重合機能と、
    前記重合機能において重ね合わされた正弦波について、当該正弦波が特定の条件となる特定点が出現する特定点タイミングから、前記拍情報および前記ビート指示情報に基づいて複数のタイミングを選択し、当該選択されたタイミングを示す情報を補正前情報として生成する補正前情報生成機能と、
    前記補正前情報生成機能において生成された補正前情報の各部について、前記時間軸伸縮機能における時間軸の伸縮とは逆の伸縮を行うことによって、拍タイミング情報を生成する逆時間軸伸縮機能と
    を実現させ、
    前記対応付け機能は、前記逆時間伸縮機能において生成された拍タイミング情報に基づいて、前記対応付けを行う
    ことを特徴とするプログラム。
JP2008026623A 2008-02-06 2008-02-06 拍タイミング情報生成装置およびプログラム Pending JP2009186762A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008026623A JP2009186762A (ja) 2008-02-06 2008-02-06 拍タイミング情報生成装置およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008026623A JP2009186762A (ja) 2008-02-06 2008-02-06 拍タイミング情報生成装置およびプログラム

Publications (1)

Publication Number Publication Date
JP2009186762A true JP2009186762A (ja) 2009-08-20

Family

ID=41070066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008026623A Pending JP2009186762A (ja) 2008-02-06 2008-02-06 拍タイミング情報生成装置およびプログラム

Country Status (1)

Country Link
JP (1) JP2009186762A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017181661A (ja) * 2016-03-29 2017-10-05 ブラザー工業株式会社 支援装置
WO2020199381A1 (zh) * 2019-03-29 2020-10-08 广州市百果园信息技术有限公司 音频信号的旋律检测方法、装置以及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017181661A (ja) * 2016-03-29 2017-10-05 ブラザー工業株式会社 支援装置
WO2020199381A1 (zh) * 2019-03-29 2020-10-08 广州市百果园信息技术有限公司 音频信号的旋律检测方法、装置以及电子设备

Similar Documents

Publication Publication Date Title
JP4940588B2 (ja) ビート抽出装置および方法、音楽同期画像表示装置および方法、テンポ値検出装置および方法、リズムトラッキング装置および方法、音楽同期表示装置および方法
JP4949687B2 (ja) ビート抽出装置及びビート抽出方法
US8415549B2 (en) Time compression/expansion of selected audio segments in an audio file
JP4767691B2 (ja) テンポ検出装置、コード名検出装置及びプログラム
JP5605066B2 (ja) 音合成用データ生成装置およびプログラム
WO2018084305A1 (ja) 音声合成方法
JPWO2006070768A1 (ja) オーディオ信号処理装置、オーディオ信号処理方法およびその方法をコンピュータに実行させるプログラム
EP3610477A1 (en) Auto-generated accompaniment from singing a melody
WO2019224990A1 (ja) ビート音発生タイミング生成装置
JP4973426B2 (ja) テンポクロック生成装置およびプログラム
JP2009186762A (ja) 拍タイミング情報生成装置およびプログラム
JP3511360B2 (ja) 音楽音響信号分離方法、その装置およびそのプログラム記録媒体
JP2009098262A (ja) テンポクロック生成装置およびプログラム
Royer Pitch-shifting algorithm design and applications in music
JP5287617B2 (ja) 音響処理装置およびプログラム
JP4433734B2 (ja) 音声分析合成装置、音声分析装置、及びプログラム
JP4483561B2 (ja) 音響信号分析装置、音響信号分析方法及び音響信号分析プログラム
JP5163606B2 (ja) 音声分析合成装置、及びプログラム
JP4513556B2 (ja) 音声分析合成装置、及びプログラム
JP2000010597A (ja) 音声変換装置及び音声変換方法
JP5034642B2 (ja) カラオケ装置
JP2002287744A (ja) 波形データ分析方法、波形データ分析装置およびプログラム
JP2010002937A (ja) 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム
JP2012118234A (ja) 信号処理装置,及びプログラム
JP3540609B2 (ja) 音声変換装置及び音声変換方法