(58)【調査した分野】(Int.Cl.,DB名)
前記検索部は、前記クエリーパターンと一致する音発生パターン、もしくは前記クエリーパターンとの間で類似の度合いが高いことを示す所定の条件を満たす音発生パターンを、前記クエリーパターンにマッチする音発生パターンとして検索する
請求項1に記載の装置。
【発明を実施するための形態】
【0012】
以下、本発明の一実施形態について説明する。
<実施形態>
<構成>
図1は、本発明の実施形態に係るシステムの構成図である。
この楽音データ処理システム100は、リズム入力装置10、及び情報処理装置20を備えており、各々が通信線により接続されて相互に通信ができるようになっている。この通信は、無線によって実現されてもよい。本実施形態において、リズム入力装置10は、入力手段として例えば鍵盤を備えている。利用者が、リズム入力装置10に設けられた鍵盤を押鍵することにより、リズム入力装置10は、押鍵されたこと、すなわち演奏操作がなされたことを示すトリガーデータと、押鍵の強度、すなわち当該演奏操作の強度を示すベロシティデータとを、1小節を単位として、情報処理装置20に入力する。ここで、トリガーデータは、利用者が鍵盤を押鍵する毎に生成されるものであって、トリガーデータの各々にはベロシティデータが対応付けられている。1小節内に生成されたトリガーデータとベロシティデータの集合は、この1小節において、利用者がリズム入力装置10を用いて入力したリズムのパターン(入力リズムパターンという)を表している。このように、リズム入力装置10は、利用者による演奏操作が入力される入力装置の一例である。また、リズム入力装置10は、検索用のクエリーパターンとして、利用者によって任意の楽音発生パターンを入力するための操作装置としても使用される。
【0013】
情報処理装置20は、例えばPC(Personal Computer)である。情報処理装置20は、自動伴奏データを複数含んだデータベースを備えている。この自動伴奏データは、各々が固有のリズムパターンを持つ複数のパートで構成されている。そして情報処理装置20は、このデータベースから、利用者が指定したパートについて、リズム入力装置10から入力された入力リズムパターンと同一又は類似したリズムパターンを持つ自動伴奏データを検索し、検索結果の自動伴奏データの名称等を一覧表示する。そして情報処理装置20は、一覧から利用者によって選択された自動伴奏データに基づく音を出力する。このとき、情報処理装置20は、検索結果の自動伴奏データに基づく音を繰り返し再生する。なお、検索機能は、利用者が操作部25(後述)を操作することによってそのON/OFFが切り替えられる。検索対象となる自動伴奏データは、リズムパターンに限らず、アルペジオパターンであってもよく、その他任意の音楽演奏パターンであってもよい。この場合、リズムパターンであれば、トリガーデータとそのタイミングとベロシティについて検索で考慮するが、アルペジオパターンであれば、さらに音高の並びあるいは隣接するトリガーデータに対応する音高差を検索で考慮するようになる。なお、上記データベース(後述の自動伴奏データベース221)は、情報処理装置20の外部に設けられていて、通信ネットワークを介して情報処理装置20と通信し得るようになっていてもよい。
【0014】
図2は、リズム入力装置10を表す模式図である。
リズム入力装置10は、入力手段として鍵盤200及び入力パッド14を備えている。利用者はこれらの入力手段を用いて、検索対象となる任意の楽音発生パターン(典型的にはリズムパターン)を検索用のクエリーパターンとして入力することができる。情報処理装置20は、入力された検索用のクエリーパターン(典型的にはリズムパターン)に基づいて、複数セットの演奏データを記憶している記憶装置(例えば、後述の自動演奏データベース221)から、該クエリーパターンにマッチする楽音発生パターン(例えばリズムパターンあるいはメロディパターン)を持つ演奏データ(例えば自動伴奏データ)を検索する。1セットの演奏データの一例としての1セットの自動伴奏データは、公知のように、ベース、和音からなるコード、単音からなるフレーズ、バスドラム、スネアドラム、ハイハット、及びシンバルといった各々異なるパートの組み合わせによって構成されている。リズム入力装置10における鍵盤200の所定の範囲又は入力パッド14の種類には、各々異なる上記パートの何れかが対応付けられている。例えば、鍵盤200の全範囲のうち、ベース入力音域鍵盤11にはベースのパートが対応付けられており、コード入力音域鍵盤12には和音からなるコードのパートが対応付けられており、フレーズ入力音域鍵盤13には単音からなるフレーズのパートが対応付けられている。また、バスドラム入力パッド14aには、バスドラムのパートが対応付けられており、スネアドラム入力パッド14bには、スネアドラムのパートが対応付けられており、ハイハット入力パッド14cには、ハイハットのパートが対応付けられており、シンバル入力パッド14dには、シンバルのパートが対応付けられている。利用者は、リズム入力装置10において、押鍵する鍵盤200の位置又は押下する入力パッド14の種類を指定して演奏操作を行うことで、指定した入力手段に対応付けられたパートを基準として自動伴奏データを検索することが可能である。このように、鍵盤200及び入力パッド14が存在する各々の領域が、鍵盤200及び入力パッド14といった演奏操作子の各々と対応することとなる。なお、所定の鍵域に複数のパートを対応付けるようにしてもよい。例えば、鍵域13にコードのパート及びフレーズのパートを対応付けるようにしてもよい。その場合、例えば、複数鍵が同時に押下されていたらコードのパートと判定し、単一鍵が押下されていたらフレーズのパートと判定することができ、そのようにして、いずれか1つのパートを自動的に特定するようにしてもよい。あるいは、複数のパートの対応付けられた鍵域において何らかの鍵が押下されたならば、それに対応する複数のパートを同時に特定する入力がなされたものとして処理が行われてもよい。
【0015】
例えば、利用者が、ベース入力音域鍵盤11に相当する鍵盤を押鍵してリズムパターンを入力すると、情報処理装置20は、当該リズムパターンと同一又は類似の度合の高いリズムパターンを持つベースのフレーズを特定し、この特定されたベースのフレーズを構成要素として持つ自動伴奏データを検索結果として表示する。以降において、利用者がリズムパターンを入力する際に操作する対象であることから、ベース入力音域鍵盤11、コード入力音域鍵盤12、フレーズ入力音域鍵盤13、バスドラム入力パッド14a、スネアドラム入力パッド14b、ハイハット入力パッド14c、及びシンバル入力パッド14dのことを、演奏操作子と呼ぶ場合がある。利用者がリズム入力装置10における或る演奏操作子を操作すると、リズム入力装置10は、当該操作に応じたMIDI(Musical Instrument Digital Interface)形式の情報(以下、MIDI情報という)を情報処理装置20に入力する。ここでMIDI情報には、上述したトリガーデータ及びベロシティデータのほかに、演奏操作子が鍵盤であればノートナンバーが含まれ、演奏操作子がパッドであればチャンネル情報が含まれる。情報処理装置20は、受け取ったMIDI情報から、対象のパートを特定する。
【0016】
図3は情報処理装置20のハードウェア構成を表すブロック図である。
情報処理装置20は、制御部21、記憶部22、入出力インターフェース部23、表示部24、操作部25、及び音声出力部26を備えており、各部がバスを介して接続されている。制御部21は、CPU(Central Processing Unit)、ROM(Read Only Memory
)、RAM(Random Access Memory)などを有する。CPUは、ROMや記憶部22に記憶されているアプリケーションプログラムを読み出して、RAMにロードして実行することにより、情報処理装置20の各部をバス経由で制御する。また、RAMは、CPUがデータの加工などを行う際のワークエリアとして機能する。
【0017】
記憶部22は、複数セットの演奏データを記憶する記憶装置の一例として自動伴奏DB(Database)221を有している。1セットの演奏データ(例えば自動伴奏データ)は、1又は複数のパートで構成され、それぞれのパートはパート演奏データで構成され、1パートについての前記パート演奏データは、楽音発生パターン(例えばリズムパターンあるいはメロディパターン)と、該楽音発生パターンに対応する楽音データとを含む。一例として、自動伴奏DB221は、自動伴奏データの少なくとも一部をMIDI情報のフォーマットで記憶している。入出力インターフェース部23は、リズム入力装置10が出力するデータを情報処理装置20に入力するともに、制御部21の指示に従って、リズム入力装置10を制御する各種信号をリズム入力装置10に出力する。表示部24は、例えばディスプレイであり、利用者に対する対話画面などを表示する。操作部25は、例えばマウスやキーボードであり、利用者の操作に応じた信号を制御部21に受け渡す。制御部21は受け取った信号に応じて各部を制御する。音声出力部26は、DAC(Digital Analog Converter)、アンプ、及びスピーカを備えている。音声出力部26は、制御部21により自動伴奏DB221から検索されたMIDI情報に基づくデジタルの楽音データを、DACによってアナログの楽音データに変換して、それをさらにアンプで増幅し、スピーカから増幅後のアナログの音声信号に応じた音を出力させる。
【0018】
図4A〜
図4C、
図5、
図6は、自動伴奏DB221の内容を表す模式図である。
自動伴奏DB221には、パートテーブル、楽器種類テーブル、リズムカテゴリテーブル、リズムパターンテーブル及びスタイルテーブルが含まれている。
図4Aはパートテーブルの一例を表したものである。「パートID」は、楽音データを構成するパートを一意に識別するための識別子であり、例えば2桁の数字で表される。「パート」は、パートの種類を表す名称であり、上述した「ベース」、「コード」、「フレーズ」、「バスドラム」、「スネアドラム」、「ハイハット」、及び「シンバル」といった異なるパート毎に、パートIDが対応付けられてパートテーブルに記述されている。「ノートナンバー」は、各パートが、鍵盤においてどの範囲に割り当てられているかを表すMIDI情報である。MIDI情報では、鍵盤における「中央ハ」にノートナンバー「60」が割り当てられる。このノートナンバーを基準として、例えば
図4Aに示されるように、「ベース」のパートには、ノートナンバーが第1の閾値「45」以下のノートナンバーが割り当てられ、「フレーズ」のパートには、ノートナンバーが第2の閾値「75」以上のノートナンバーが割り当てられ、「コード」のパートには、ノートナンバーが「46」以上であって「74」以下のノートナンバーが割り当てられている。なお、上述した第1の閾値及び第2の閾値は一例であり、この値に限ったものではない。また、第1の閾値及び第2の閾値は利用者により変更可能としてもよい。
【0019】
「チャンネル情報」は、各パートが、どの入力パッドに割り当てられているかを表すMIDI情報である。例えば
図4Aに示されるように、「バスドラム」のパートには「14a」のチャンネル情報が割り当てられ、「スネアドラム」のパートには「14b」のチャンネル情報が割り当てられ、「ハイハット」のパートには「14c」のチャンネル情報が割り当てられ、「シンバル」のパートには「14d」のチャンネル情報が割り当てられている。このように、自動伴奏DB221におけるパートテーブルは、複数のパートの各々と入力装置10における各々の操作子との対応関係を記憶する対応関係テーブルの一例である。
【0020】
図4Bは楽器種類テーブルの一例を表したものである。「パートID」は上述したとおりである。「楽器種類ID」は、楽器の種類を一意に識別するための識別子であり、例えば3桁の数字で表される。「楽器種類」は、楽器の種類を表す名称であり、例えば「ウッドベース」、「エレキベース」、「スラップベース」といった、異なる楽器の種類毎に、楽器種類IDが対応付けられて楽器種類テーブルに記述されている。例えば楽器種類「ウッドベース」は、「001」の楽器種類IDに対応付けられて楽器種類テーブルに記述されている。その他の楽器種類についても、同様に各楽器種類IDに対応付けられて、楽器種類テーブルに記述されている。なお、「楽器種類」は
図4Bに表された内容に限ったものではない。また、「楽器種類」とは、音色データ(音色ID)でもある。
【0021】
図4Cは、リズムカテゴリテーブルの一例を表したものである。「リズムカテゴリID」は、リズムパターンのカテゴリ(リズムカテゴリという)を一意に識別するための識別子であり、例えば2桁の数字で表される。ここでリズムパターンとは、予め定められた長さの期間において各々の音が発音される時刻の並びを表す。特に本実施形態において、リズムパターンとは、1小節において各々の音が発音される時刻の並びを表す。「リズムカテゴリ」は、リズムカテゴリを表す名称であり、例えば「8分」、「16分」、「8分3連」といった、異なるリズムカテゴリ毎に、リズムカテゴリIDが対応付けられてリズムカテゴリテーブルに記述されている。例えば「8分」のリズムカテゴリは、「01」というリズムカテゴリIDが対応付けられてリズムカテゴリテーブルに記述されている。なお、「リズムカテゴリ」は
図4Cに表された内容に限ったものではない。例えば、拍子やジャンルといった大まかなカテゴリ分けをしたり、一つのリズムパターンごとに一つの別のカテゴリIDを割り当てるなど、より細かなカテゴリ分けをしても良い。
【0022】
図5は、リズムパターンテーブルの一例を表したものである。リズムパターンテーブルには、パートを一意に識別するパートID毎にグループ化されたリズムパターンレコード(パート演奏データ)が複数記憶されている。
図5においては、リズムパターンテーブルの一例として、パートが「ベース」(パートIDが「01」)である複数のリズムパターンレコードが表されている。1件のリズムパターンレコード(パート演奏データ)は、「パートID」、「楽器種類ID」、「リズムパターンID」、「リズムカテゴリID」、「リズムパターンデータ」、及び「アタック強度パターンデータ」といった複数の項目からなる。上述したように「楽器種類ID」は、楽器の種類を一意に識別するための識別子である。同一のパートIDを持つリズムパターンレコードは、楽器種類ID毎にグループ化されており、利用者はリズム入力装置10を用いてリズムの入力を行う前に、操作部25を用いて楽器の種類を選択することが可能である。利用者によって選択された楽器の種類は、RAMに記憶される。「リズムパターンID」は、各々のリズムパターンレコードを一意に識別するための識別子であり、例えば4桁の数字からなる。「リズムカテゴリID」は、各々のリズムパターンレコードが、前述したリズムカテゴリのうち、どのリズムカテゴリに属するかを識別するための識別子である。例えば、
図5において「リズムカテゴリID」が「01」であるリズムパターンレコードは、
図4Cのリズムカテゴリテーブルに表されるように、「8分」のリズムカテゴリに属する。
【0023】
「リズムパターンデータ」は、1小節を構成するフレーズにおける各構成音の発音開始時刻が記録されたデータファイルを含み、例えばテキストファイルに、各構成音の発音開始時刻が記述されたものである。この「リズムパターンデータ」は、リズムパターン(楽音発生パターン)を示すデータである。リズムパターンデータにおける上記発音開始時刻は、後述するマッチングの際に、入力リズムパターン(検索用に入力されたクエリーパターン)における、演奏操作がなされたことを示すトリガーデータに対応付けられる。ここで、リズムパターンデータにおける各構成音の発音開始時刻は、予め1小節の長さを1として正規化されている。つまり、「リズムパターンデータ」に記述される各構成音の発音開始時刻は、0から1の間の値を取る。この実施形態では、リズムパターン(楽音発生パターン)に対応する楽音データ(波形データ)は、別の記憶領域に記憶されており、同じパートの楽器種類IDによって該楽音データ(波形データ)が特定される。別の例として、後述するように、このリズムパターンテーブルに記憶する「リズムパターンデータ」として、リズムパターン(楽音発生パターン)のみならず、該リズムパターン(楽音発生パターン)に対応する楽音データ(波形データ)をさらに記憶してもよい。その場合、リズムパターンデータは、後述するような各種の音声ファイルフォーマットのオーディオデータからなる。また、楽音データ(波形データ)は、パート毎に記憶されていてもよいし、別の例として、複数パート(例えば1スタイルを構成する全パート)の楽音データ(波形データ)がまとめて1ファイルとして記憶されていてもよい。
このように自動伴奏DB221に含まれるリズムパターンテーブル及びそれに関連する楽音データ記憶領域は、予め定められた長さの期間(ここでは1小節)における複数の楽音発生パターンであって、各々の音が発音される発音時刻の並びを表すものである。
【0024】
なお、リズムパターンデータは、予め以下のようにして作成されてもよい。リズムパターンデータを作成する者(以下、オペレーターという)は、構成音開始時刻が波形に埋め込まれた、市販のオーディオループ素材から構成音開始時刻を抽出する。次にオペレーターは、抽出した構成音開始時刻から、ゴーストノートなどの無視ができる範囲の不要な構成音開始時刻を除外する。この不要な構成音開始時刻が除外された後のデータが、リズムパターンデータとして用いられても良い。
【0025】
なお、リズムパターンデータは、上述のように、オペレーターによって市販のオーディオループ素材からゴーストノートが除外されることで作成される方法に限らず、予めコンピュータによって自動的にゴーストノートが除外されることで抽出されてもよい。例えば、リズムパターンデータの抽出元のデータがMIDI形式の場合、コンピュータによって以下のような方法でリズムパターンデータが作成されてもよい。コンピュータのCPUは、MIDI形式のデータから、チャンネルごとの構成音開始時刻を1小節の間、抽出し、リズム入力と判断しづらいゴーストノート(例えば、極端に小さなベロシティデータを持つものなど)を除外する。そしてコンピュータのCPUは、ゴーストノートを除外した後のMIDI形式のデータにおいて、和音入力のように一定時間内に複数の入力があった場合、これら複数の入力を1つのリズム入力にまとめる処理を行うことで、リズムパターンデータの作成を自動で行う。
【0026】
また、ドラムスパートに関しては、1つのチャンネル内にバスドラム、スネアドラム、シンバルといった複数の楽器音が存在する場合もある。このような場合、コンピュータのCPUは、以下のようにしてリズムパターンデータの抽出を行う。ドラムスの場合、ノートナンバーごとに対応している楽器音が決まっている場合が多い。例えば、ドラムスパートでノートナンバー40にスネアドラムの音色が割り当てられているとする。これに基づいてコンピュータのCPUは、伴奏音源のドラムスパートが収録されたチャンネルにおいて、スネアドラムの音が割り当てられているノートナンバーの構成音開始時刻を抽出することで、スネアドラムのリズムパターンデータの抽出を行う。
【0027】
「アタック強度パターンデータ」は、1小節を構成するフレーズにおける各構成音のアタック強度が記録されたデータファイルであり、例えばテキストファイルに上記各構成音のアタック強度が数値として記述されたものである。このアタック強度は、入力リズムパターンにおける、演奏操作の強度を示すものであるベロシティデータに相当する。つまり、アタック強度とは、各構成音の強度を意味する。アタック強度は、MIDI情報のベロシティデータそのものとしてテキストファイルに記述されてもよい。
図5においては、パートが“ベース”であるリズムパターンレコードを一例として表したが、実際にはリズムパターンテーブルには、
図5に、その一部を表しているように、複数の種類のパート(コード、フレーズ、バスドラム、スネアドラム、ハイハット、シンバル)に応じたリズムパターンレコードが記述されている。
【0028】
図6は、スタイルテーブルの一例を表したものである。
ここで“スタイル”とは、複数の異なる種類の自動伴奏が存在するときに、これら自動伴奏の種類を特定するとともに同一種類の自動伴奏における各々を一意に区別するものである。スタイルテーブルには、自動伴奏を構成する各パートの情報をスタイル毎に対応付けたものであるスタイルレコードが複数記述されている。
図6においては、スタイルテーブルの一例として、「ジャンル名」が「JAZZ」である複数のスタイルレコードが表されている。1件のスタイルレコードは、「スタイルID」、「ジャンル名」、「スタイル名」、「キー」、「BPM(Beats Per Minute)」、「ベースリズムパターンID」、「コードリズムパターンID」、「フレーズリズムパターンID」、「バスドラムリズムパターンID」、「スネアドラムリズムパターンID」、「ハイハットリズムパターンID」、及び「シンバルリズムパターンID」といった複数の項目からなる。「スタイルID」は、スタイルレコードを一意に識別するための識別子である。「ジャンル名」は各スタイルレコードが属する音楽のジャンルを表す。「スタイル名」は、各スタイルレコードを一意に識別する名称である。「キー」は、各スタイルレコードにおける調を表す。「BPM」は、各スタイルレコードに基づく音が再生される際のテンポを表す。
【0029】
各々のスタイルレコードには、上述したパートの全てについて、パート毎のリズムパターンが1対1で対応付けて記憶されている。例えば
図6において「スタイルID」が「0001」のスタイルレコードは、「ベースリズムパターンID」として「0001」の値を持っている。これは、リズムパターンテーブルにおいて、パートIDが「01」(ベース)であり、且つ、リズムパターンIDが「0001」であって、「リズムパターンデータ」が「WoodBass1Rhythm.txt」であるリズムパターンレコードと、「スタイルID」が「0001」のスタイルレコードとが対応付けられていることを表す。各々のスタイルレコードには、ベース以外のパートのリズムパターンについても、同様の対応付けが記述されている。
【0030】
自動伴奏DBが上述したような構成になっているので、利用者は以下のような検索が可能となる。利用者が、リズム入力装置10において或るパートに対応した演奏操作子を操作してリズムパターンを入力すると、情報処理装置20は、演奏操作子に対応付けられたパート及び入力リズムパターンに基づいて、リズムパターンテーブルから少なくとも1つ以上のリズムパターンレコードを特定する。そして情報処理装置20は、当該リズムパターンレコードが保持するパートID及びリズムパターンIDに基づいてスタイルテーブルを検索し、当該リズムパターンレコードをそのパートとして含むスタイルレコードを抽出し、抽出した1以上のスタイルレコードを表示部24に表示する。利用者が、表示された1以上のスタイルレコードから、任意のものを選択すると、選択されたスタイルレコードに基づく楽音データ(つまり自動伴奏データ)が音声出力部26から音として出力される。このように、利用者は、検索対象とするパートに対応付けて、検索対象とする所望のリズムパターン(楽音発生パターン)をクエリーパターンとして入力することで、感覚的な操作で容易に検索クエリーの入力を行うことができ、かつ、利用者の感覚に合った望ましい検索結果(自動伴奏)を得ることが可能となる。
【0031】
図7は、情報処理装置20の機能構成を表すブロック図である。
制御部21は、ROMや記憶部22に記憶されたプログラムをRAMに読み出して実行することにより、小節線クロック出力部211、入力リズムパターン記憶部212、パート特定部213、リズムパターン検索部214、検索情報処理部215、及び再生制御部216の各機能を実現する。以降において、これら各部を主体として処理の説明を行うことがあるが、処理の主体の実体は、制御部21である。なお、以降の説明において「オンセット」とは、リズム入力装置10における入力状態がオフからオンに切り替わることを指す。例えば、「オンセット」とは、リズム入力装置10の入力手段が鍵盤であれば鍵盤が押鍵された状態のことであり、リズム入力装置10の入力手段がパッドであればパッドを叩かれた状態のことであり、リズム入力装置10の入力手段がボタンであればボタンが押下された状態のことである。また、以降の説明において「オンセット時刻」とは、リズム入力装置10における入力状態がオフからオンに切り替わった時の各々の時刻を表す。換言すれば、「オンセット時刻」とは、リズム入力装置10においてトリガーデータが発生した時刻を表す。また、以降の説明において「オンセット情報」とは、オンセット時刻においてリズム入力装置10から情報処理装置20へ入力される情報である。「オンセット情報」には、上述したトリガーデータ以外に、鍵盤のノートナンバーやチャンネル情報等が含まれている。
【0032】
小節線クロック出力部211は、1小節の長さを1として正規化した場合に、進行中の時間軸において、現在時刻が1小節中のどこに位置するかを、数十msec(ミリ秒)ごとにクロック信号(以降において小節線クロックという)として入力リズムパターン記憶部212に出力する。つまり、小節線クロックは、0から1の間の値をとる。小節線クロック出力部211は、利用者が操作部25を介して指定したBPMに基づいて小節線クロックを生成する。そして、入力リズムパターン記憶部(RAM)212は、小節線クロックを基準として、リズム入力装置10から入力される、トリガーデータが発生した時刻、すなわちオンセット時刻を1小節毎に記憶する。このようにして、1小節を単位として、RAMに記憶されたオンセット時刻の並びが、入力リズムパターン(検索用のクエリーパターン)となる。ここで記憶されるオンセット時刻は、小節線クロックに基づいているため、上記小節線クロックと同様に、0から1の間の値をとる。このように、小節線クロック出力部211は、予め定められた長さの期間(ここでは1小節)において時間を進行させるとともに、当該時間の経過を利用者に通知する通知手段の一例である。あるいは、小節線クロック出力部211、再生制御部216、音声出力部26は、利用者に対して、検索用のクエリーパターン入力の際の補助となるテンポを通知するための通知部に相当する。また、入力リズムパターン記憶部212は、通知手段である小節線クロック出力部211により予め定められた長さの期間(ここでは1小節)において時間が進行させられているときに、特定されたパートについて利用者によって入力される、楽音に関するパターンを表す楽音パターンであって、各々の音が発音される発音時刻(ここではオンセット時刻)の並びを表す楽音発生パターン(検索用のクエリーパターン)を取得する取得手段の一例である。なお、上述の、小節線クロック出力部211により進行される予め定められた長さの期間は、繰り返されてもよいし、繰り返されなくともよい。また、小節線クロックは、外部から情報処理装置20に入力されるものを用いてもよい。
【0033】
また、利用者が、1小節を単位としたリズムパターンを正確に入力できるように、情報処理装置20から利用者に対して小節線が開始する時刻をフィードバックする必要がある。これは、例えばメトロノームのように、小節や拍の時刻で、情報処理装置20が、音や光を発したり画面の表示内容を変更したりすることで、利用者に対して視覚的或いは聴覚的に小節線の位置が伝えられればよい。また、その他の方法として、小節線クロックにあわせて、予め小節線の位置を付加した伴奏音源を再生制御部216が再生してもよい。この場合、利用者は、伴奏音源から自らが感じる小節線に合わせて、リズムパターンを入力する。
【0034】
パート特定部213は、リズム入力装置10から入力されるオンセット情報(そのなかでもMIDI情報)と自動伴奏DB221に含まれるパートテーブルとに基づいて、利用者によって操作されたのはどの演奏操作子であるか、すなわち、楽音データを構成する複数のパートのうちどのパートを指定して入力が行われたか、を特定する。具体的には、パート特定部213は、受け取ったMIDI情報がノートナンバーである場合、当該ノートナンバーとパートテーブルの記述内容とを比較して、利用者による操作が、ベース入力音域鍵盤11、コード入力音域鍵盤12、或いはフレーズ入力音域鍵盤13のいずれに対するものであるかを特定する。また、パート特定部213は、受け取ったMIDI情報がチャンネル情報である場合、当該ノートナンバーとパートテーブルの記述内容とを比較して、利用者による操作が、バスドラム入力パッド14a、スネアドラム入力パッド14b、ハイハット入力パッド14c、或いはシンバル入力パッド14dのいずれに対するものであるかを特定する。パート特定部213は、特定したパートに対応するパートIDをリズムパターン検索部214に出力する。なお、パート特定部213は、1パートに限らず、複数パートを検索対象パートとして特定することが可能である。
【0035】
リズムパターン検索部214は、RAMに記憶された入力リズムパターン(クエリーパターン)を用いて自動伴奏DB221におけるリズムパターンテーブルを検索し、入力リズムパターンとの類似の度合いが高いリズムパターンデータを持つリズムパターンレコードを、検索結果としてRAMに記憶させるとともに、検索情報処理部215に出力する。すなわち、リズムパターン検索部214は、特定されたパートにマッチし、かつ、クエリーパターンにマッチするリズムパターンを、記憶装置(自動伴奏DB221)から検索する。検索情報処理部215は、入力されたリズムパターンレコードが保持するパートID及びリズムパターンIDに基づいてスタイルテーブルを検索し、検索結果のスタイルレコードをRAMに記憶させる。ここで検索結果のスタイルレコードには、伴奏の音源を表すデータそのもののほかに、「ジャンル名」、「スタイル名」、「キー」及び「BPM」といった、伴奏の音源に関する情報が含まれている。検索情報処理部215は、このような伴奏の音源に関する情報を、表示部24に出力して表示させる。また、検索情報処理部215は、利用者が操作部25を介して指定した「BPM」や「楽器種類ID」に基づいて、検索結果のスタイルレコードに対して更に絞込み検索を行うことが可能である。このように、リズムパターン検索部214及び検索情報処理部215は、記憶手段に記憶されている楽音データのなかから、特定されたパートについて取得手段である入力リズムパターン記憶部212により取得された楽音パターンすなわちリズムパターンと類似の度合いが高いことを示す条件を満たすリズムパターンに対応付けられた楽音データを検索する検索手段の一例である。再生制御部216は、RAMに記憶された検索結果のスタイルレコードを再生対象として、小節線クロックと同期しながら、このスタイルレコードに基づく楽音データを音声出力部26に供給する。音声出力部26は、この楽音データに基づく音声を放音する。
【0036】
なお、ここでリズムパターンデータはMIDI形式であるため、利用者は、操作部25を介して、スタイルレコードにおけるBPM(Beats Per Minute)を変更することが可能である。この場合、再生制御部216は、変更後のBPMで小節線クロックと同期しながら、検索結果のスタイルレコードに基づく楽音データを音声出力部26に供給する。また、リズムパターンデータがWAVE(RIFF waveform Audio Format)やmp3(MPEG Audio Layer-3)といった音声ファイルフォーマットからなるオーディオデータである場合でも、再生制御部216が、音程を変えずにテンポを変更する機能であるタイムストレッチ機能を備えることで、利用者は、操作部25を介して、スタイルレコードにおけるBPMを変更することが可能である。このように、情報処理装置20は、利用者が指定したパートについて、意図するリズムパターンとの類似の度合いが決められた条件を満たすようなリズムパターンで構成されたフレーズを持つ自動伴奏に関する楽音データを検索結果として出力する楽音データ処理装置の一例である。
【0037】
<動作>
次に、
図8〜
図10を用いて、検索機能がONの状態において、リズムパターン検索部214及び検索情報処理部215が、入力リズムパターンに基づいて、スタイルテーブルから特定のスタイルレコードを検出する一連の処理について説明を行う。
【0038】
図8は、リズムパターン検索部214及び検索情報処理部215が行う検索処理のフロー図である。初めに、リズムパターン検索部214は、リズムパターンテーブルに記述された全てのリズムパターンを用いて、リズムカテゴリ毎にオンセット時刻間隔の分布を計算する(ステップS1)。ここで、リズムパターンレコードにおけるリズムパターンデータには、1小節の長さを1として正規化された各構成音の発音開始時刻、すなわちオンセット時刻が含まれている。ここでオンセット時刻間隔とは、時間軸上で隣り合うオンセット時刻どうしの間隔であり、0から1の間の数値で表される。また、ここにおいて、上述したオンセット時刻間隔の分布は、1小節を48の時刻で均等に区切った場合に、各々の時刻に相当するオンセット時刻間隔の個数で表される。なお、本実施形態において1小節を48の時刻で区切る理由は、4拍子系のリズムを前提として一拍を12等分すれば、8分、8分3連、16分といった複数の異なるリズムカテゴリを識別するのに適した分解能となるためである。ここで、分解能とは、シーケンサーや、本実施形態におけるアプリケーションプログラムのようなシーケンスソフトで表現できる、最も短い長さの音符のことである。本実施形態における分解能は、1小節で48であるため、1つの四分音符を12に分割可能な設定となっている。
【0039】
なお、以降の説明では、入力リズムパターンに対する説明においても、リズムパターンレコードと対応する意味で、「オンセット時刻間隔」という言葉を用いる。つまり、入力リズムパターンにおいては、時間軸上で隣り合うオンセット時刻どうしの間隔が、オンセット時刻間隔に相当する。ステップS1で求められるリズムカテゴリ毎のオンセット時刻間隔の分布は、後述するステップS3で求められる入力リズムパターンにおけるオンセット時刻間隔の分布との、比較対象となるものである。処理フローの冒頭において、ステップS1の計算を行うのは、処理の対象となるリズムパターンレコード及びリズムカテゴリが変更されることがなく同一である場合、ステップS1で求められるオンセット時刻間隔の分布は一定であって、一度計算で求めてしまえば、その後計算をやり直す必要がなくなるためである。従って、ステップS1における計算は、情報処理装置20の電源がONされたときや、検索処理の起動時に行われるようにしてもよい。また、ステップS1で求められるオンセット時刻間隔の分布についてのデータを、制御部21が、予め計算してROM等に記憶しておくことで、検索処理の起動時に上記データを読み込むようにしてもよい。
【0040】
ここで、具体的なオンセット時刻の数値を用いて、ステップS1におけるオンセット時刻間隔の分布を計算する方法を説明する。一例として、以下の(i)で表される8分のリズムパターンが、リズムパターンレコードにおけるリズムパターンデータに記述されていたとする。
(i)0,0.25,0.375,0.5,0.625,0.75,0.875
リズムパターン検索部214は、(i)の入力リズムパターンから、以下の(ii)で表されるオンセット時刻間隔を算出する。
(ii)0.25,0.125,0.125,0.125,0.125,0.125
次にリズムパターン検索部214は、(ii)で算出された各々のオンセット時刻間隔に48を乗算し、さらに0.5を加算した数値の小数点以下を切り捨てる処理(クオンタイズという)を行うことで、以下の(iii)で表す数値群を算出する。
(iii)12,6,6,6,6,6
ここでクオンタイズとは、リズムパターン検索部214が、各オンセット時刻間隔を分解能にあわせて補正することを意味している。クオンタイズを行う理由は、以下のとおりである。リズムパターンテーブルにおけるリズムパターンデータに記述された発音開始時刻は、分解能(ここでは48)に従ったものとなっている。よって、オンセット時刻間隔を用いてリズムパターンテーブルを検索する際には、検索に用いるオンセット時刻間隔も分解能に従ったものでないと、検索の精度が低くなってしまう。このような理由により、リズムパターン検索部214は、(ii)で表される各々のオンセット時刻間隔に対して、上述したクオンタイズの処理を施す。
【0041】
上述の例に従って、例えば以下のような8分のリズムパターン、16分のリズムパターン、及び8分3連のリズムパターンが2つずつ、各リズムパターンレコードにおけるリズムパターンデータに記述されている場合を考える。
・8分カテゴリ
(A)0,0.25,0.375,0.5,0.625,0.75,0.875
(B)0,0.121,0.252,0.37,0.51,0.625,0.749,0.876
・16分カテゴリ
(C)0,0.125,0.1875,0.251,0.374,0.4325,0.5,0.625,0.6875,0.75,0.876,0.9325
(D)0,0.625,0.125,0.1875,0.251,0.3125,0.375,0.4325,0.5,0.5625,0.625,0.6875,0.75,0.8125,0.875,0.9325
・8分3連カテゴリ
(E)0,0.0833,0.1666,0.25,0.3333,0.4166,0.5,0.5833,0.6666,0.75,0.8333,0.91666
(F)0,0.1666,0.25,0.3333,0.4166,0.5,0.6666,0.75,0.8333,0.91666
リズムパターン検索部214は、上記(A)〜(F)に対して上述したのと同様の計算方法を用いて、リズムカテゴリ毎にオンセット時刻間隔の分布を求める。
図9Aは、リズムパターン検索部214がリズムカテゴリ毎に計算したオンセット時刻間隔の分布を、分布表に割り当てたものである。
【0042】
ステップS1の次に、リズムパターン検索部214は、パート特定部213から入力されたパートID及びRAMに記憶されている楽器種類IDを用いて、リズムパターンテーブルを検索する(ステップS2)。この楽器種類IDは利用者が操作部25を用いて楽器種類を予め指定することでRAMに記憶されたものである。なお、楽器種類の指定は必須ではなく、楽器種類が利用者により指定されなかった場合、リズムパターン検索部214は、入力されたパートIDのみに従ってリズムパターンテーブルを検索する。以降の処理において、リズムパターン検索部214は、このステップS2における検索結果のリズムパターンレコードを処理の対象とする。
【0043】
ここで、上述したように、入力リズムパターンには、1小節の長さを1として正規化されたオンセット時刻が含まれている。ステップS2の次に、リズムパターン検索部214は、RAMに記憶された入力リズムパターンにおける、オンセット時刻間隔の分布をステップS1と同様の方法で計算する(ステップS3)。ここにおいて、入力リズムパターンは、上述した(i)のようなものであり、(ii)で算出された各々のオンセット時刻間隔にクオンタイズ処理が施されることで、入力リズムパターンについて、(iii)のような数値群が算出されるものとする。
図9Bは、リズムパターン検索部214が入力リズムパターンについて計算したオンセット時刻間隔の分布を、分布表に割り当てたものである。
【0044】
ここで、
図9A〜
図9Cに示された分布表を参照しながらオンセット時刻間隔の分布についてさらに説明を行う。
図9Bは入力リズムパターンにおけるオンセット時刻間隔の分布表である。
図9Bにおいて、横軸は、1小節を48の時刻で区切ったときの時刻の間隔(時刻間隔という)を表し、縦軸は、横軸で表された各々の時刻間隔に相当する、クオンタイズされたオンセット時刻間隔の個数の比率を表す。
図9Bでは、入力リズムパターンに基づく、上述した(iii)の数値群が分布表に割り当てられている。この個数比率は、合計が1となるようにリズムパターン検索部214によって正規化されている。
図9Bでは、クオンタイズされたオンセット時刻間隔である(iii)の数値群において、最も個数が多い「6」の時刻間隔に分布のピークがあることが分かる。
【0045】
ステップS3の次に、リズムパターン検索部214は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布表(ここでは
図9A)と、入力リズムパターンに基づくオンセット時刻間隔の分布表(ここでは
図9B)とを用いて、両者の類似の度合いを表す指標値(以降において「類似度距離」という)を算出する(ステップS4)。
図9Cは、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布(
図9A)と、入力リズムパターンに基づくオンセット時刻間隔の分布(
図9B)との差分を表す分布表である。ステップS4における類似度距離の算出方法は以下のようなものである。まず、リズムパターン検索部214は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布表と、入力リズムパターンに基づくオンセット時刻間隔の分布表とにおいて、両分布表における同一の時刻間隔毎に、個数比率の差分の絶対値を求める。そしてリズムパターン検索部214は、各リズムカテゴリについて、上述の時刻間隔毎に求めた絶対値を全て足し合わせた値の平方根を算出する。この算出された平方根で表される値が類似度距離となる。この類似度距離は、値が小さいほど類似の度合いが高く、値が大きいほど類似の度合いが低いことを表す。
図9Cでは、8分のリズムカテゴリにおいて、
図9Aと
図9Bとに基づく個数比率の差分が最も小さい。これは、上述の算出方法に従って、分布表に表された8分、16分、8分3連のリズムカテゴリのうち、8分のリズムカテゴリと入力リズムパターンとが、最も上記類似度距離が小さいことを表している。
【0046】
ステップS4の次に、リズムパターン検索部214は、リズムパターンテーブルに記述されたリズムカテゴリのうち、類似度距離が最も小さいリズムカテゴリを、入力リズムパターンが該当するリズムカテゴリである、と判定する(ステップS5)。つまり、ここでは、リズムパターン検索部214は、入力リズムパターンのリズムカテゴリが8分であると特定することになる。このように、リズムパターン検索部214は、ステップS2〜ステップS5を通じて、入力リズムパターンの該当する可能性が高いリズムカテゴリを特定する。このように、リズムパターン検索部214は、ユーザにより入力されたリズムパターンが表す発音時刻間隔の度数分布を表す入力時刻間隔ヒストグラム(本実施形態では
図9A)と、データベースに予め記憶されたリズムパターンにおける発音時刻間隔の度数分布をリズム分類識別子(本実施形態におけるリズムカテゴリ)ごとに表すリズム分類ヒストグラム(本実施形態では
図9B)との差分の絶対値を、リズム分類識別子ごとに求め、当該絶対値が最も小さいリズム分類識別子と対応付けられたリズムパターンのうち、類似の度合いが高いことを示す条件を満たすリズムパターンに対応付けられた楽音データを検索している。
【0047】
次にリズムパターン検索部214は、リズムパターンテーブルに記述されたリズムパターンのうち、入力リズムパターンに対して、類似の度合いが高いリズムパターンを特定するために、リズムパターンテーブルに記述された全てのリズムパターンと入力リズムパターンとのズレの大きさを計算する(ステップS6)。ここで、ズレの大きさとは、入力リズムパターンにおける各オンセット時刻と、リズムパターンテーブルに記述された各々のリズムパターンにおける各オンセット時刻とがどれだけ離れているかを表す。つまり、上記ズレの大きさが小さい程、入力リズムパターンとリズムパターンテーブルに記述されたリズムパターンとにおける類似の度合いが高いこととなる。
【0048】
また、ステップS5までの処理において、入力リズムパターンに該当する可能性が高いリズムカテゴリを特定する一方で、ステップS6の処理において全てのリズムカテゴリに属するリズムパターンレコードを計算の対象としている。その理由は、以下のとおりである。リズムパターンレコードに含まれるリズムパターンデータにおいては、1小節内に8分のオンセット時刻間隔と16分のオンセット時刻間隔がほぼ同数ある場合等のように、どちらのリズムカテゴリに属するのかが紙一重であるものが存在する。このような場合に、ステップS5において仮に入力リズムパターンに対するリズムカテゴリが正しく判定されなかったとしても、ステップS6において全てのリズムカテゴリに属するリズムパターンレコードを計算の対象とすることで、利用者が意図していたリズムパターンが正しく検出される可能性が高くなる。
【0049】
ここで、ステップS6における処理を、
図10を参照して説明する。
図10は、リズムパターンにおけるズレの計算を説明するための模式図である。
図10で示されるように、入力リズムパターンをAとして、リズムパターンレコードに記述されたリズムパターンをBとすると、AとBにおけるズレの大きさの計算は、以下の手順で行われる。
(1)リズムパターン検索部214は、リズムパターンAにおける各オンセット時刻を基準として、リズムパターンBにおける最も近いオンセット時刻との時刻差の絶対値を算出する(
図10における(1))。
(2)リズムパターン検索部214は、(1)で算出した各絶対値の積分値を算出する。(3)リズムパターン検索部214は、リズムパターンBにおける各オンセット時刻を基準として、リズムパターンAにおける最も近いオンセット時刻との時刻差の絶対値を算出する(
図10における(3))。
(4)リズムパターン検索部214は、(3)で算出した各絶対値の積分値を算出する。(5)リズムパターン検索部214は、(2)で算出した積分値と(4)で算出した積分値との平均値を、リズムパターンAとリズムパターンBとのズレとして算出する。
【0050】
なお、実施形態においては、充分な数のリズムパターンを用意していないため、
図10(3)に記載されているように、リズムパターン検索部214は、時刻差の絶対値が基準間隔(ここでは8分なので0.125)より大きいものは積分値を算出する際に用いないという処理を行っているが、充分な数のリズムパターンを用意できる場合には、上記処理は不要となる。リズムパターン検索部214は、リズムパターンテーブルに含まれる全てのリズムパターンレコードにおけるリズムパターンについて、上述した(1)〜(5)の計算を行う。このように、リズムパターン検索部214は、取得手段である入力リズムパターン記憶部212により取得されたリズムパターンが表す各発音時刻と、記憶手段に記憶されたリズムパターンが表す各発音時刻のうち、取得手段により取得されたリズムパターンが表す各発音時刻に対して時間軸において最も近い発音時刻との差分についての積分値を算出し、当該積分値が最も小さく算出されたリズムパターンを、類似の度合いが高いことを示す条件を満たすリズムパターンとして、当該リズムパターンに対応付けられた楽音データを前記記憶手段から検索する検索手段の一例である。
【0051】
次に、リズムパターン検索部214は、ステップS4でリズムカテゴリ毎に算出した類似度距離と、ステップS6で算出したリズムパターンのズレとを乗算することで、リズムパターンテーブルに含まれる、特定されたパートにマッチするパートのパートIDを持つ全てのリズムパターンレコードについて、入力リズムパターンとの類似度距離を算出する(ステップS7)。ここで上述したように、入力リズムパターンをAとし、N番目のリズムパターンレコードにおけるリズムパターンをBとしたとき、ステップS7を式で表すと以下のようになる。なお、特定されたパートにマッチするパートとは、ユーザが検索対象として入力した1又は複数のパートに一致する1又は複数のパートに限られるものではなく、ユーザが検索対象として入力した少なくとも1パートに類似する1又は複数のパートをも含み得る。
AとBのリズムパターンの類似度距離=Aと、Bが所属するリズムカテゴリとの類似度距離×AとBとのリズムパターンのズレ
ここで、AとBのリズムパターンの類似度距離が小さいほど、BのリズムパターンがAのリズムパターンに類似している度合いが高いことを意味している。つまりここでは、AとBのリズムパターンの類似度距離が、類似の度合いを表している。以降、このリズムパターンの類似度距離が小さいことを、「類似の度合いが高い」ということがある。なお、この計算に際して、基本的には、ステップS5で入力リズムパターンが該当すると判定されたリズムカテゴリ内から、検索結果が出力されるように、以下のような処理が行われる。リズムパターン検索部214は、ステップS5で判定されたリズムカテゴリと、リズムパターンBの属するリズムカテゴリとが一致するかを判定し、一致しない場合には、上記計算式によって求められた類似度距離に予め定められた定数(例えば0.5)を加算する。このようにすれば、ステップS5で判定されたリズムカテゴリと一致しないリズムカテゴリに属するリズムパターンレコードについては、リズムパターン同士の類似度距離が大きく算出されるため、ステップS5で入力リズムパターンが該当すると判定されたリズムカテゴリ内から、検索結果が出力されやすくなる。
【0052】
そして、リズムパターン検索部214は、入力リズムパターンとの類似度距離が小さい順番で、上記類似度距離が小さいリズムパターンデータを持つリズムパターンレコードを、所定個数だけ検索結果として出力し、これらをRAMに記憶させる(ステップS8)。この所定個数は、パラメータとして記憶部22に記憶されており、ユーザが操作部25を用いて変更可能としてもよい。次に検索情報処理部215は、ステップS8でRAMに記憶されたリズムパターンレコードにおけるリズムパターンIDとパートIDとに基づいてスタイルテーブルを検索し、特定したスタイルレコードを検索結果としてRAMに記憶させる(ステップS9)。例えばステップS8において、パートIDが「02」(コード)であり、リズムパターンIDが「0004」のリズムパターンレコードがRAMに記憶されると、これを受けて検索情報処理部215は、スタイルテーブルから、コードリズムパターンIDが「0004」のスタイルレコードを検索結果としてRAMに記憶させる。
【0053】
図11A〜
図11Cは、自動伴奏についての検索結果の一覧を表した模式図である。
図11Aは、利用者がコード入力音域鍵盤12を用いて入力したリズムパターンに基づいて、検索情報処理部215が検索結果として出力したスタイルレコードが、表示部24に表示された場合を表している。
図11A〜
図11Cにおいて、参考項目「類似度」は入力リズムパターンと、検索結果であるスタイルレコードのリズムパターンとの間の類似度距離を表している。すなわち、「類似度」で表される数値が小さいほど、入力リズムパターンに類似する度合いが高いことを意味している。
図11Aに示されるように、「類似度」の数値(ステップS7で算出されたリズムパターン同士の類似度距離)が小さい順番で、すなわち入力リズムパターンに対する類似の度合いが高い順番で、スタイルレコードが表示されている。ここにおいて利用者は、「キー」、「ジャンル」又は「BPM」のすくなくともいずれか1の項目を用いて、この検索結果をフィルタリングして表示させることが可能である。
図11Aにおいて、利用者が任意のスタイルレコードを選択すると、情報処理装置20は、利用者がリズムパターンを入力した際のBPM(以降において入力BPMという)で、当該スタイルレコードに基づく音を音声出力部26から出力する。なお、検索結果を表示するにあたっては、必ずしも
図11A〜
図11Cに示されたように全ての参考項目(「類似度」、「キー」、「ジャンル」、「BPM」)を表示する必要はなく、一部の参考項目のみを表示する、あるいは全ての参考項目を表示しないようにしてもよい。検索結果(スタイルレコード)をフィルタリングして表示する場合も同様に、全ての参考項目(「類似度」、「キー」、「ジャンル」、「BPM」)を表示する必要はなく、一部の参考項目のみを表示する、あるいは全ての参考項目を表示しないようにしてもよい。
【0054】
なお、制御部21は、利用者が入力BPMに近いBPMを持つスタイルレコードのみを検索結果として出力するためのフィルタリング機能を備えており、利用者は、操作部25を介して上記フィルタリング機能を任意にON/OFFすることが可能である。具体的には、上述したように各スタイルレコードには「BPM」が含まれているから、上記フィルタリング機能がONである場合、制御部21は、入力BPMの例えば0.7倍〜1.4倍のBPMを持つスタイルレコードのみを検索結果として表示する。なお、入力BPMに適用する上記係数の値0.7〜1.4は一例であり、その他の値であってもよい。
【0055】
制御部21がこのようなフィルタリング機能を備える理由は、以下のようなものである。制御部21は、入力BPMと同一のBPMで、スタイルレコードに基づく楽音データを供給する。このとき、制御部21によって、スタイルレコードに基づく楽音データが本来のBPMとは大幅に異なるBPMで供給されると、上記楽音データに基づく音が音声出力部26によって放音される際に、利用者に違和感を与えてしまうことがある。例えば、利用者が、BPM240のテンポでリズムパターンを入力し、制御部21が上記リズムパターンを持つスタイルレコードを検索した結果、検索結果のスタイルレコードの本来のBPMが60であった場合を考える。この場合、検索結果のスタイルレコードに基づく音は、本来のBPMの4倍のBPMで音声出力部26によって放音されることになるため、音が本来のBPMの4倍速で早送り再生された状態となり、結果として利用者に違和感を与えることとなる。このような問題を解決するために、制御部21は、フィルタリング機能を備えているわけである。
【0056】
図11Bは、
図11Aの状態から、利用者が、フィルタリング機能をONにした状態を表している。
図11Bでは、上述した0.7〜1.4という係数を用いて制御部21がフィルタリングを行っている。つまり、
図11Bでは、入力BPMが100であるため、70〜140のBPMを持つスタイルレコードが、フィルタリングの結果として表示されている。このようにすることで、利用者は、入力BPMと近いBPMを持つスタイルレコードを検索結果として得ることができ、検索結果に対してより納得感を持てるようになる。
【0057】
また、利用者は、初めに或るパートを指定して、入力リズムパターンに近いリズムパターンを持つスタイルレコードを検索(1回目の検索)した後に、初めに指定したパートと異なるパートを指定してリズムパターンを入力し、再び検索(2回目の検索)を行うことで、1回目の検索で出力されたスタイルレコードが2回目の検索によって絞り込まれた検索結果を得ることが可能である。例えば
図11Cは、
図11Aの検索結果が表示された状態において、利用者がパートにハイハットを指定してリズムパターンを入力した結果の表示内容を表している。
図11Cにおける「類似度」は、各々のスタイルレコードにおいて、対象パートが「コード」である場合の類似度距離と、対象パートが「ハイハット」である場合の類似度距離とが加算された値となっている。なお、
図11においては、「第1検索パート」及び「第2検索パート」という項目で表されるように、2つのパートを用いて検索可能なことを示しているが、検索の際に指定できるパートの数はこれに限ったものではない。また、利用者が、或るパートを指定して検索を行った後に、初めに指定したパート(第1検索パート)と異なるパート(第2検索パート)を指定してリズムパターンを入力した場合、情報処理装置20は、第1検索パートを用いた検索結果に関わらず、第2検索パートのみを用いた検索結果を出力(上書き検索という)するようにしてもよい。このような絞り込み検索と上書き検索とは、情報処理装置20の操作部25を介して、利用者により切り替え可能としてもよい。
以上が、検索機能がONの状態において、リズムパターン検索部214及び検索情報処理部215が、入力リズムパターンに基づいて、スタイルテーブルから特定のスタイルレコードを検索結果として出力する一連の処理についての説明である。
【0058】
このように、本実施形態の情報処理装置20によれば、利用者が指定したパートについて、意図するリズムパターンとの類似の度合いが決められた条件を満たすようなリズムパターンで構成されたフレーズを持つ自動伴奏データを検索することができる。このとき、利用者は、複数の演奏操作子に対応付けられた各々異なるパートのうち任意のパートを指定してリズムパターンを入力するため、特定のパートについてのリズムパターンを思いついたときに、このパートについてのリズムパターンを入力して検索を行うことが可能となる。また、検索にあたり、利用者は、パートを指定してリズムパターンを入力するだけでよいため、直感的かつ効率良く自動伴奏データを検索することが可能となる。
【0059】
<変形例>
以上の実施形態は次のように変形可能である。尚、以下の変形例は適宜組み合わせて実施しても良い。
【0060】
<変形例1>
実施形態においては、利用者が、複数の異なるパートを指定してリズムパターンを入力した場合、リズムパターン検索部214は、初めに指定されたパートに関する入力リズムパターンでスタイルレコードを検索(1回目の検索)した後に、1回目の検索結果として出力されたスタイルレコードに対して、初めに指定されたパートとは異なるパートに関する入力リズムパターンを用いて絞り込み検索(2回目の検索)を行っていたが、複数の異なるパートが指定された場合の検索方法は、これに限らない。実施形態における上述の処理は、利用者による演奏操作が、パート毎に順番に行われることを想定としていたが、利用者が、異なる複数のパートを同時に指定して演奏操作を行った場合、次のようにすればよい。リズムパターン検索部214は、利用者により指定された各パートのパートIDを持つリズムパターンレコードと、当該パートの入力リズムパターンとに基づいて、両者の類似の度合いを各々算出する。次にリズムパターン検索部214は、指定された各パートのリズムパターンレコードについて算出された類似の度合いを、上記リズムパターンレコードと対応付けられた共通のスタイルレコードごとに加算する。そして表示部24は、加算後の類似の度合いが一番高い(すなわち数値が最も小さい)スタイルレコードから昇順で表示する。例えば利用者が、バスドラムとスネアドラムのパートについて同時に演奏操作を行ってリズムパターンを入力した場合、リズムパターン検索部214は、バスドラムの類似の度合いとスネアドラムの類似の度合いをそれぞれ算出すると、共通のスタイルレコードごとに両者を加算する。このようにすれば、利用者は、複数のパートを同時に指定して、意図するリズムパターンとの類似の度合いが決められた条件を満たすようなリズムパターンで構成されたフレーズを持つ自動伴奏データを検索することができる。
【0061】
<変形例2>
実施形態においては、利用者がパートを指定してリズムパターンを入力することで、情報処理装置20は自動伴奏データを検索結果として出力していたが、これに限らず、利用者がパートを指定して入力したメロディパターンによって検索が行われるようにしてもよい。この場合、自動伴奏DB211には、メロディパターンテーブルなるテーブルが新たに含まれる。
図12及び
図13は、変形例2に係る自動伴奏DBの内容を表す模式図である。
図12はメロディパターンテーブルを表している。メロディパターンテーブルは、「パートID」、「楽器種類ID」、「メロディパターンID」、及び「メロディパターンデータ」という複数の項目からなる。「パートID」及び「楽器種類ID」は上述したものと同様である。「メロディパターンID」は、メロディパターンレコードを一意に識別する識別子であり、例えば4桁の数字からなる。メロディパターンデータは、1小節を構成するフレーズにおける各構成音の、音高及び音長の経時に沿った変化が記録されたデータファイルであり、例えばテキストファイルに、構成音の音高及び音長の並びが記述されたものである。
図13は変形例2に係るスタイルテーブルを表している。
図13において、各スタイルレコードには、各パートについてのリズムパターンIDとともに、各パートについてのメロディパターンIDが含まれている。ここで、情報処理装置20がメロディパターンを検索するときには周知の方法のいずれかを用いればよい。例えば、利用者がパートにコードを指定して、「C−D−E」というコードシーケンスを入力した場合、情報処理装置20の制御部21は、当該コードシーケンスにおける音高の進行を「0−2−4」という相対的な数値で表したメロディパターンデータを持つメロディパターンレコードを検索結果として出力する。そして制御部21は、検索結果のメロディパターンレコードと対応付けられたスタイルレコードを表示部24に表示させる。
【0062】
また、例えば利用者がパートにフレーズを指定して、「D−D−E−G」という単音のメロディパターンを入力した場合、制御部21は、入力されたメロディパターンを表すMIDI情報を生成する。このMIDI情報には、メロディパターンを構成する各構成音の音長及び音高に関する情報が含まれている。制御部21は、メロディパターンテーブルにおいて、この生成したMIDI情報と同一又は類似したメロディパターンデータを持つメロディパターンレコードを検索結果として出力する。そして制御部21は、検索結果のメロディパターンレコードと対応付けられたスタイルレコードを表示部24に表示させる。このようなメロディパターンによる検索と、実施形態のようなリズムパターンによる検索とは、その検索のモードを、情報処理装置20の操作部25を介して利用者により切り替え可能としてもよい。この更なる変形例として、利用者が入力するクエリーパターンは、メロディパターンを構成する各構成音の音高及びその発生順序のみを特定する(つまり、個々のノートの音長は詳しく特定せずに、大まかなメロディ進行のみを特定する)ものであってもよい。
【0063】
<変形例3>
情報処理装置20が検索を行うにあたって、入力リズムパターンにおける音色と同一又は類似の度合いが高い音色を持つフレーズを持つ自動伴奏データを検索するようにしてもよい。この場合、リズムパターンテーブルの各リズムパターンレコードには、項目「音色ID」が追加される。利用者は、演奏操作子を用いてリズムパターンを入力する際に、音色を指定する。利用者が演奏操作を行うと、演奏操作が行われた際に指定された音色のIDが、MIDI情報の一部として情報処理装置20に入力される。情報処理装置20は、入力された音色IDに基づく音の音色と、リズムパターンテーブルにおける指定されたパートの各リズムパターンレコードにおける音色IDに基づく音の音色を比較し、比較結果における類似の度合いが予め定められた閾値よりも高いリズムパターンレコードを特定する。ここで、音色の比較については、各々の音の波形におけるスペクトラムを比較するなど、周知の方法を用いればよい。そして情報処理装置20は、特定したリズムパターンレコードのリズムパターンID及びパートIDに基づいてスタイルテーブルを検索し、スタイルレコードを特定する。このようにすれば、リズムパターンが類似していることに加え、指定したパートについて音色が類似した自動伴奏データを利用者は得ることが可能となる。
【0064】
<変形例4>
実施形態においては、自動伴奏DBにおける音のデータはMIDI情報として記述されていたが、音そのものについてのデータであるオーディオファイルの格納場所が記述されていてもよい。この場合、オーディオファイルは、例えばWAVE(RIFF waveform Audio Format)やmp3(MPEG Audio Layer-3)といった音声ファイルフォーマットからなり、リズムパターンテーブルにおける各リズムパターンレコードに、オーディオファイルのファイルパスが記述される。そして、検索結果から、利用者によって或るスタイルレコードが再生対象として選択されると、このスタイルレコードにおける各パートについてのオーディオファイルが同期を取って再生される。このようにすれば、MIDI情報を用いる場合と比較して、利用者は、より高い音質の自動伴奏を得ることが出来る。
【0065】
<変形例5>
自動伴奏データの再生にあたって、利用者が、操作部25を通じて操作を行うか、あるいはリズム入力装置10に設けられたフェーダー、つまみ、ホイール、ボタン等の操作子を操作することで、自動伴奏データを小節の頭から再生する頭出し再生機能を、情報処理装置20が備えていても良い。この場合、利用者により上記操作が行われると、再生制御部216が、自動伴奏データを小節の頭から再生するように制御する。この頭出し再生機能は、利用者が、自動伴奏音の先頭部分がどこなのかを確認したり、自動伴奏音の一部分だけを繰り返し再生対象とさせたりする場合に用いられる。
【0066】
<変形例6>
自動伴奏データによっては、構成音の終了付近で波形の振幅(パワー)が0近くに収束されていないものがあり、この場合、構成音に基づく音声が出力された後に、クリップノイズが発生する場合がある。これを防ぐために、再生制御部216が、構成音の開始及び終了付近の一定範囲を自動でフェードイン又はフェードアウトする機能を有していてもよい。ここで利用者は、上記フェードイン又はフェードアウトを適用させるかどうかを、操作部25あるいはリズム入力装置10に設けられた何らかの操作子を介して選択可能である。
図14は、自動伴奏データにおける各構成音に対して、フェードアウトが適用された場合を表す模式図である。
図14に示されるように、“フェード”と矢印で示された箇所に、フェードアウトが適用されることで、該当する箇所の波形の振幅が徐々に小さくなり、構成音の終了時刻においては振幅がほぼ0となっている。なお、各構成音について、フェードアウトが適用される期間は、数msecから数十msec程度の範囲内で、利用者により調整可能である。また、このフェードアウトを適用する処理は、利用者による演奏操作の前処理として行われてもよいし、リアルタイムの処理、又は後処理として行われてもよい。
【0067】
<変形例7>
利用者が自動伴奏とともに行った演奏の結果を、再生制御部216が録音し、この録音した内容を、一般的に音源ループ素材で用いられているようなファイルフォーマットで出力可能としてもよい。このように自身の演奏を記録する機能があると、楽曲制作において、利用者は、自動伴奏とともに自らが行った演奏の結果を、データとして手に入れることが可能となる。
【0068】
<変形例8>
実施形態においては、利用者の演奏操作によるトリガーデータと、自動伴奏DB221に記憶されたリズムパターンデータとの比較によって、リズムパターン検索部214が特定のリズムパターンレコードを検出していたが、これに限らず、リズムパターン検索部214は、利用者の演奏操作によるトリガーデータ及びベロシティデータの双方を用いて自動伴奏DB221を検索するようにしてもよい。この場合、同じリズムパターンを持つリズムパターンデータが2つ存在した場合に、各構成音のアタック強度が、利用者の演奏操作によるベロシティデータに、より近いリズムパターンデータと対応付けられたスタイルレコードが検索結果として検出される。このようにすれば、アタック強度についても、利用者がイメージしていたものに近い自動伴奏データが、検索結果として出力されることが可能となる。
【0069】
<変形例9>
実施形態における、リズムパターン同士の類似度距離の計算方法は一例に過ぎず、異なる計算方法を用いてもよい。例えば、確実にリズムカテゴリが一致したリズムパターンレコードが検索結果として出力されるように、入力リズムパターンに該当するリズムカテゴリを判定した後、判定結果のリズムカテゴリに属するリズムパターンレコードのみを対象として、リズムパターンのズレの計算(ステップS6)、及びリズムパターン同士の類似度距離の計算(ステップS7)が行われるようにしてもよい。このようにした場合、実施形態と比較して検索の精度は落ちるが、計算量が少なくてすむため、情報処理装置20における負荷が下がるとともに、利用者にとっての応答時間も短くなる。
【0070】
<変形例10>
また、リズムパターン検索部214が自動伴奏DB221を検索するにあたって、トリガーデータ及びベロシティデータに加えて、同一の音が鳴り続ける長さを表すデュレーションデータを用いてもよい。ここで、各構成音におけるデュレーションデータは、オフセット時刻から直前のオンセット時刻を差し引いた時間の長さで表される。デュレーションデータは、リズム入力装置10における入力手段が鍵盤である場合に、情報処理装置20がオフセット時刻を明確に取得することが可能であるため、特に有効に活用することができる。この場合、
図5のリズムパターンテーブルにおいて、「デュレーションパターンデータ」という項目が追加されることとなる。デュレーションパターンデータは、1小節を構成するフレーズにおける各構成音の鳴り続ける長さが記録されたデータファイルであり、例えばテキストファイルに、各構成音の鳴り続ける長さが記述されたものである。この場合、情報処理装置20は、利用者により入力された、1小節におけるデュレーションのパターンを用いて、リズムパターンテーブルから、上記入力されたデュレーションのパターンと最も類似するデュレーションパターンデータを持つリズムパターンレコードを検索結果として出力するようにすればよい。このようにすれば、類似したリズムパターンを持つリズムパターンレコードが複数存在しても、情報処理装置20が、スラー(伸ばす)のあるリズムパターンや、スタッカート(はねる)のあるリズムパターン等を識別して検索結果として出力することが可能となる。
【0071】
<変形例11>
なお、実施形態(
図9A、
図9B)においては、入力時刻間隔ヒストグラムと発音時刻間隔ヒストグラムとの差分の絶対値が最も小さいことを、入力時刻間隔ヒストグラムに対する発音時刻間隔ヒストグラムの類似の度合いが高いと判断していたが、両者の類似の度合いが高いことを示す条件は、上記のような両ヒストグラムの差分の絶対値に限らず、両ヒストグラムの各時刻間隔成分の積などの相関度が最も大きいとか閾値を超えるといったことや、両ヒストグラムの差分の2乗が最も小さいとか閾値未満であるといったこと、両ヒストグラムの各時刻間隔成分における値が類似していることを示すような条件であれば、どのような条件を用いてもよい。
【0072】
<変形例12>
実施形態においては、リズム入力装置10から入力されたリズムパターンに従って、情報処理装置20が、当該リズムパターンに類似するリズムパターンを持つリズムパターンレコードを検索し、このリズムパターンレコードに対応付けられたスタイルレコードを検索結果として出力していたが、次のようにしてもよい。例えば、上記実施形態に相当する内容をウェブサービスによって実施する場合、実施形態において情報処理装置20が備える機能を、当該ウェブサービスを提供するサーバ装置が備えることとなる。そして、利用者の操作によって、クライアント装置である自端末(例えばPC)が、インターネットや専用線等を介して、指定されたパートについての入力リズムパターンを上記サーバ装置に送信する。サーバ装置は、受信したパートと入力リズムパターンとに基づいて、記憶手段から当該入力リズムパターンに類似するリズムパターンを持つリズムパターンレコードを検索し、このリズムパターンレコードと対応付けられたスタイルレコードを検索結果として自端末に送信する。そして自端末は、受信したスタイルレコードに基づく音を出力する。なお、この場合、サーバ装置の提供するウェブサイトやアプリケーションにおいて、小節線クロックが利用者に提示されるようにすればよい。
【0073】
<変形例13>
リズム入力装置10における演奏操作子は、利用者が演奏操作したときに、少なくともトリガーデータを出力するものであれば、鍵盤及びパッドのような形状に限らず、弦楽器、吹奏楽器、あるいはボタンなどの形状であってもよい。また、その他に演奏操作子はタッチパネルであってもよく、この場合、タッチパネルを備えたタブレットPC、スマートフォン、携帯電話等がリズム入力装置10に代わる入力装置となる。
【0074】
ここで、演奏操作子がタッチパネルである場合の例を考える。タッチパネルにおいては、その画面上に複数のアイコンが表示されることがある。ここで、各アイコンに楽器や楽器の操作子(鍵盤など)の画像が表示されるようにすれば、利用者は、どのアイコンをタッチすればどのような楽器や楽器の操作子に基づく楽音が発せされるのかが分かるようになる。このようにした場合、タッチパネルにおいて上記各アイコンが表示される各々の領域が、実施形態における演奏操作子の各々と対応することとなる。換言すれば、リズム入力装置10としてタッチパネルを使用する場合は、タッチパネルの表示画面を複数領域に分割し、分割された各領域に対して1又は複数のパートを割り当てるようにし、ユーザがタッチした領域に割り当てられている1又は複数のパートをクエリーパートとして特定するようにしてもよい。
また、リズム入力装置10における演奏操作子として、ピッチベンドホイールを用いてもよい。別の例として、リズム入力装置10(クエリーパターン入力装置)としては、手動操作可能な演奏操作子からなるものに限らず、マイクロホンを用いた音声入力装置あるいは光信号発生装置などを用いてもよい。その場合、ユーザによる音声発音タイミングに応じた入力リズムパターン(クエリーパターン)が生成される、あるいは、ユーザ操作による光信号発生タイミングに応じた入力リズムパターン(クエリーパターン)が生成される。更に、リズム入力装置10(クエリーパターン入力装置)としては、メトロノーム等のテンポ情報に合わせてリアルタイムにリズムパターン(クエリーパターン)を入力する方式に限らず、エディタ画面上で所望のリズムパターン(クエリーパターン)をグラフィカルに入力する(例えば、画面上に表示された時間軸上で所望のタイミングをグラフィカルに指摘する、又は所望のパターンをグラフィカルに入力する)ようにしてもよい。
さらに、クエリーパターンを入力する形態は、ユーザが直接指定するものに限られない。例えば、リズム入力装置10が操作子としてボタンを備える場合、リズム入力装置10の表示画面に提示される自動伴奏データの中からユーザに所望の自動伴奏データをボタンで選択させ、その選択されたデータのパターンをクエリーパターンとして検索を行う構成が採用されてもよい。また、選択する対象として、自動伴奏データの一部のパートのパート演奏データをボタンで選択するようにしてもよい。あるいは、入力リズムパターンやその名前などを表示し、入力リズムパターンを直接ボタンで指定させるようにしてもよい。
【0075】
<変形例14>
実施形態では、入力BPMと同一のBPMで、制御部21によってスタイルレコードに基づく楽音データが供給されていた。これに対して、スタイルレコードには本来のBPMが情報として含まれているから、利用者は、操作部25を介した操作により、スタイルレコードに基づく楽音データを、本来のBPMで制御部21から供給させるようにしてもよい。また、検索結果から特定のスタイルレコードが利用者により選択されると、選択された直後は、制御部21が、入力BPMと同一のBPMでスタイルレコードに基づく楽音データを供給し、時間の経過に伴って、BPMがスタイルレコードの持つ本来のものに徐々に近づくようにして、スタイルレコードに基づく楽音データを供給するようにしてもよい。
【0076】
<変形例15>
実施形態においては、制御部21が、利用者が入力BPMに近いBPMを持つスタイルレコードを検索結果として出力するためのフィルタリング機能を備えていた。利用者が検索結果に対してより納得感を持てるようにするための方法はこれに限ったものではない。例えば、入力リズムパターンとリズムパターンテーブルに含まれるリズムパターンレコードとの類似度距離を求める算出式に、入力BPMとスタイルレコードの持つBPMとの近さに基づく重み付けを導入してもよい。ここで、aを予め定められた定数とし、入力リズムパターンとリズムパターンテーブルに含まれるリズムパターンレコードとの類似度距離をLとすると、上記重み付けを導入した
図11における類似度距離を求める計算式は、例えば以下のように表せる。
類似度距離=L+|入力BPM−スタイルレコードの持つBPM|/a
なお、上記類似度距離を求める計算式は上記に限ったものではなく、入力BPMとスタイルレコードの持つBPMとが近いほど類似度距離が小さくなる(すなわち類似の度合いが高くなる)ような計算式であればよい。
【0077】
<変形例16>
リズム入力装置10が入力パッド14を備えない場合、リズム入力装置10が次のような構成を取ってもよい。この場合、デフォルトの状態では鍵盤200には、ベース入力音域鍵盤11、コード入力音域鍵盤12、及びフレーズ入力音域鍵盤13が所定の範囲に各々割り当てられている。ここで利用者が、操作部25を介してドラムのパートの入力を行う旨を指示すると、制御部21は、鍵盤200の所定の範囲にドラムのパートを割り当てる。例えば、制御部21は、C3にバスドラムのパートを割り当て、D3にスネアドラムのパートを割り当て、E3にハイハットのパートを割り当て、F3にシンバルのパートを割り当てる、といった具合である。なお、この場合、制御部21は、鍵盤200の全範囲における操作子(すなわち各鍵)に、各々異なる楽器音を割り当てることが可能である。ここで制御部21が、鍵盤200における各操作子(各鍵)の上部や下部に、割り当てられる楽器音に関する画像(例えばスネアドラムの画像)を表示するようにしてもよい。
【0078】
<変形例17>
利用者が、どの操作子を操作すれば、どのパートが制御部21によって検索されるのかを視覚的に分かりやすくするために、次のようにしてもよい。例えば、制御部21が、鍵盤200における各操作子(各鍵)の上部や下部に、割り当てられるパートに関する画像(例えば、ギターのコードが押さえられた画像、ピアノが単音で演奏されている画像(例えば単一の鍵が指で押さえられている画像)、又はスネアドラムの画像等)を表示する。また、制御部21が、上述の画像を各操作子の上部や下部に表示するに限らず、表示部24に表示させてもよい。この場合、表示部24には、例えば鍵盤200を模した鍵盤の画像が表示されるとともに、実際の鍵盤200の各範囲に割り当てられているのと同じ割り当て状態で、鍵盤の画像の各範囲に対して割り当てられたパートの画像が表示される。
または、利用者が、どの操作子を操作すれば、どのパートが制御部21によって検索されるのかを聴覚的に分かりやすくするために、次のようにしてもよい。例えば、利用者がベース入力音域鍵盤11に対して入力を行うと、制御部21は、音声出力部26からベースの音声を出力させる。
このようにすれば、利用者は、どの操作子を操作すれば、どのパートが検索されるのかを視覚的又は聴覚的に判別可能となるため、操作入力が容易なものとなり、結果として自らが望む伴奏音源を得やすくなる。
【0079】
<変形例18>
実施形態では、
図8の処理フローにおいて、リズムカテゴリ毎のオンセット時刻間隔の分布を計算(ステップS1)した後に、入力リズムパターンにおけるオンセット時刻間隔の分布を計算していた(ステップS3)が、ステップS1とステップS3の順番を入れ替えてもよい。また、処理ステップの入れ替えに関わらず、リズムパターン検索部214が、リズムカテゴリ毎のオンセット時刻間隔の分布を計算した後、計算結果をRAMや記憶部22に記憶させるようにしてもよい。このようにすれば、リズムパターン検索部214は一度計算した結果を再度計算する必要がなく、処理速度の向上を見込むことが可能となる。
【0080】
<変形例19>
例えば、利用者がベース入力音域鍵盤11において、和音となるように鍵盤を押下したとき等のように、利用者が所定時間内において複数の操作子を操作してリズムパターンを入力する場合には、次のような問題がある。例えば、1小節において、利用者が「0.25」のタイミングでリズムを入力したかったとする。ここで、利用者が、自身では同一のタイミングのつもりで複数の操作子を操作しても、実際には、或る操作子が「0.25」のオンセット時刻で操作され、他の操作子が「0.26」のオンセット時刻で操作された場合、制御部21は、これらのオンセット時刻のとおりに入力リズムパターンを記憶してしまう。このような場合、利用者が意図していたものとは異なる検索結果が出力される可能性があり、利用者にとっては操作性がよいものとはいえない。これに対して、次のようにしてもよい。
【0081】
変形例19において、パート特定部213は、リズム入力装置10から入力されるオンセット情報と、自動伴奏DB211に含まれるパートテーブルとに基づいて、同一のタイミングにおいて同じパートにおける複数の操作子に対して操作が行われたか否かを判定する。例えば、パート特定部213は、ベース入力音域鍵盤11に含まれる操作子のうち、或る操作子のオンセット時刻と他の操作子のオンセット時刻との差分が所定時間内に収まる場合、これらの操作子が同一のタイミングで操作されたと判定する。ここで所定時間とは、例えば50msec(ミリ秒)である。そしてパート特定部213は、上記判定の結果、これらの操作子に対する操作を同一のタイミングにおける操作であるとみなす旨の情報を、該当するオンセット時刻を持つトリガーデータと対応付けてリズムパターン検索部214に出力する。リズムパターン検索部214は、同一のタイミングにおける操作であるとみなす旨の情報が対応付けられたトリガーデータのうち、開始時刻が遅い方のオンセット時刻を持つトリガーデータを除外した入力リズムパターンを用いてリズムパターン検索を行う。つまり、この場合、利用者の所定時間内の操作に基づくオンセット時刻のうち、開始時刻が早い方のオンセット時刻がリズムパターン検索に用いられることとなる。また、これに限らず、利用者の所定時間内の操作に基づくオンセット時刻のうち、開始時刻が遅い方のオンセット時刻がリズムパターン検索に用いられるようにしてもよい。つまり、リズムパターン検索部214は、利用者の所定時間内の操作に基づく複数のオンセット時刻のいずれかを用いてリズムパターン検索を行うようにすればよい。また、リズムパターン検索部214が、利用者の所定時間内の操作に基づく複数のオンセット時刻の平均を求め、この平均値を、上記利用者の所定時間内の操作におけるオンセット時刻として、リズムパターン検索を行うようにしてもよい。このようにすれば、利用者が所定時間内において複数の操作子を用いてリズム入力を行った場合であっても、利用者が意図していたものと近い検索結果が出力されるようにすることが可能となる。
【0082】
<変形例20>
入力リズムパターン記憶部212が小節単位で入力リズムパターンを記憶するタイミングを、小節線クロックに基づく小節の切り替えタイミングと同じものすると、以下のような問題が生じることがある。例えば、利用者の操作によってリズムパターンが入力される場合、利用者が自身で感じている時刻間隔と小節線クロックとのズレによって、利用者が意図していたリズムパターンと実際のオンセット時刻との間に数msec〜数十msecの誤差が生じる。従って、例えば、利用者が小節頭の拍を入力しているつもりでも、上記誤差によって1つ前の小節のリズム入力として扱われてしまうことがあり、この場合、このリズム入力は入力リズムパターンとして記憶されないことがある。このような場合、利用者が意図していたものと異なる検索結果が出力されてしまい、利用者にとって操作性がよいとはいえない。このような問題に対しては、入力リズムパターン記憶部212がRAMに入力リズムパターンを記憶させる際に、小節の頭よりも数十msec早い時点(すなわち直前の小節における最後の数十msec)から、最後の数十msecを除く小節の終わりまでを処理の対象範囲とすればよい。つまり、入力リズムパターン記憶部212は、RAMに記憶させる入力リズムパターンの対象範囲を数十msec分だけ前にずらすこととなる。このようにすれば、利用者が意図していたものと異なる検索結果が出力されることを少なくすることができる。
【0083】
<変形例21>
リズムパターン検索部214がリズムパターン検索を行うタイミングを、小節線クロックに基づく小節の切り替えタイミングと同じものすると、以下のような問題が生じることがある。例えば、本発明における検索方法は、検索結果の楽音データが、リズム入力の直後の小節で小節線クロックと同期して再生されるようなプレイバック機能を備えた楽音データ処理装置にも応用可能である。この場合、リズム入力の直後の小節における頭から検索結果の楽音データが再生されるには、上記小節の頭の時点より以前、つまりリズム入力が行われた小節内で検索結果が出力される必要がある。また、RAMの記憶容量の問題等により、事前に再生対象である楽音データを予め読み込んでRAMに記憶させておくことが不可能な場合には、リズム入力が行われた小節内で検索結果の楽音データを読み込んでRAMに記憶させる必要がある。このような問題に対しては、リズムパターン検索部214がリズムパターン検索を行うタイミングを、小節の切り替えタイミングよりも、例えば数十msec早いものとすればよい。このようにすれば、小節の切り替えが行われる前に検索が行われ、検索結果の楽音データがRAMに記憶されることで、リズム入力の直後の小節における頭から検索結果の楽音データが再生されることが可能となる。
【0084】
<変形例22>
実施形態においては、入力リズムパターンを1小節単位としたが、複数小節(N小節とする)に跨るリズムパターンを検索できるように、以下のようにしてもよい。この場合、例えば、リズムパターン検索部214が、N小節のまとまりを持った入力リズムパターンを用いてリズムパターンテーブルを検索する方法がある。しかしこの方法では、利用者が、小節線クロックに合わせてリズムパターンを入力する際に、1小節目がどこかを指定する必要がある。また、検索結果がN小節後に出力されるため、検索結果が出力されるまでに時間がかかってしまう。これに対して、次のようにしてもよい。
【0085】
変形例22において、自動伴奏DB221におけるリズムパターンテーブルには、N小節に跨るリズムパターンデータを持つリズムパターンレコードが含まれている。また、利用者は、操作部25を用いて、検索するリズムパターンの小節数を指定する。この指定内容は、例えば表示部24に表示される。ここで例えば、利用者が、検索するリズムパターンの小節を「2小節」と指定したとする。利用者によって操作子を用いてリズムが入力されると、リズムパターン記憶部212は、まず、1小節目の入力リズムパターンを記憶する。そしてリズムパターン検索部214が、1小節目の入力リズムパターンに基づいてリズムパターンを検索する。この検索の手順は以下のようなものである。リズムパターン検索部214は、2小節に跨るリズムパターンデータを持つリズムパターンレコードを対象として、1小節目の入力リズムパターンと、各リズムパターンデータにおける1小節目のリズムパターン及び2小節目のリズムパターンとの類似度距離を算出する。そしてリズムパターン検索部214は、各リズムパターンデータについて算出した、1小節目の入力リズムパターンと上記1小節目のリズムパターンとの類似度距離、及び1小節目の入力リズムパターンと上記2小節目のリズムパターンとの類似度距離のうち、それぞれ小さい方の類似度距離を、リズムパターンデータごとにRAMに記憶させる。リズムパターン検索部214は、2小節目の入力リズムパターンについても同様の処理を行う。そしてリズムパターン検索部214は、RAMに記憶された上記類似度距離をリズムパターンデータごとに加算すると、加算後の値を、各リズムパターンデータにおける入力リズムパターンに対する類似度距離を表すスコアとする。そして検索情報処理部215が、上記スコアが予め定められた閾値以下であるリズムパターンを、スコアの小さい順に並べ替えて検索結果として出力する。このようにすれば、複数小節に跨るリズムパターンを検索することが可能となる。このとき、1小節ごとに入力リズムパターンとリズムパターンデータとの類似度距離が算出されるため、利用者は1小節目がどこかを指定する必要がなく、また、検索結果が出力されるまでに時間がかかることもない。
【0086】
<変形例23>
変形例2において、利用者がパートを指定して入力したメロディパターンによって検索が行われるものとしたが、これに限らず、利用者がパートを指定して入力したリズムパターンによって検索が行われた結果のうち、上記メロディパターンがより類似したスタイルレコードが検索結果として出力されるようにしてもよい。変形例23のスタイルテーブルにおける各スタイルレコードは、変形例2と同様、
図13に示されるように、各パートについてのリズムパターンIDとともに、各パートについてのメロディパターンIDを含んでいる。また、前述したように、オンセット情報には、トリガーデータ以外に鍵盤のノートナンバーが含まれている。このうち、トリガーデータにおけるオンセット時刻の並びが入力リズムパターンに相当し、鍵盤のノートナンバーの並びが入力メロディパターンに相当する。
【0087】
変形例23では、
図8のリズムパターン検索部214及び検索情報処理部215が行う検索処理のフロー図において、次のような処理が追加される。例えば利用者が、ベース入力音域鍵盤11における鍵盤を操作して、「ドミソミ」というメロディを、4分のリズムで入力していたとする。このときの入力メロディパターンは、例えば「60,64,67,64」というノートナンバーの並びで表される。ここでは、パートがベースであるため、リズムパターン検索部214は、ステップS6において、メロディパターンテーブルのうち、パートIDが「01(ベース)」であるメロディパターンレコードを比較対象として、比較対象のメロディパターンレコードに含まれるメロディパターンデータと、入力メロディパターンとのズレを算出する。
【0088】
リズムパターン検索部214は、入力メロディパターンと、パートIDが「01(ベース)」である各メロディパターンレコードに含まれるメロディパターンデータが表すメロディパターン(以降、音源のメロディパターンという)との音高の差分の分散を求める。これは、両者の音高の差分にバラつきが少ないほど、メロディパターンが類似しているとみなせる、という考えに基づいている。例えば、入力メロディパターンが上述したように「60,64,67,64」で表され、或る音源のメロディパターンが「57,60,64,60」で表されたとする。すると、以下の式(1)で音高の差分の平均値を求めることで、式(2)により音高の差分の分散を求めることができる。
((|60−57|)+(|64−60|)+(|67−64|)+(|64−60|))/4=3.5・・・式(1)
((|3.5−3|)
2+(|3.5−4|)
2+(|3.5−3|)
2+(|3.5−
4|)
2)/4=0.25・・・式(2)
上記式で表されるように、「60,64,67,64」で表される入力メロディパターンと、「57,60,64,60」で表される音源のメロディパターンとの音高の差分の分散は、「0.25」となる。リズムパターン検索部214は、このような音高の差分の分散を、音源のメロディパターンの全てについて算出する。
【0089】
次に、ステップS7において、リズムパターン検索部214は、メロディパターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いを求める。ここで、メロディパターンを考慮しない場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いをSと定義し、上記音高の差分の分散をVと定義すると、メロディパターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いSpは、変数x、定数yを用いて以下の式(3)で表せる。ここで、0<x<1であり、y>0である。
Sp=(1−x)S+xyV・・・式(3)
変数xが0の場合、上記式は「Sp=S」となるため、求められる類似の度合いは、メロディパターンを考慮しない場合のものとなる。一方、xが1に近づくにつれて、上記式で求められる類似の度合いは、よりメロディパターンを考慮した場合のものとなる。変数xの大きさは、利用者が操作部25を用いて変更可能としてもよい。なお、式(3)においては、上記音高の差分の分散に代えて、音高の差分の平均誤差を用いてもよい。そして検索情報処理部215は、検索結果であるスタイルレコードを、メロディパターンを考慮した場合の、検索結果のリズムパターンと入力リズムパターンとの類似の度合いが高い(類似度距離が小さい)順番で並び替えると、RAMに記憶させる。
【0090】
また、入力メロディパターンにおけるオンセット時刻及びオンセットの個数と、音源のメロディパターンを構成する各ノートのオンセット時刻及びノートの個数とが一致するとは限らない。このような場合、リズムパターン検索部214は、以下のようにして、入力メロディパターンの各オンセットに、音源メロディパターンのどのノートが対応しているかを決定する。
(1)リズムパターン検索部214は、入力メロディパターンの各ノートのオンセット時刻を基準として、音源のメロディパターンにおける最も近いオンセット時刻のノートとの音高の差分を算出する。
(2)リズムパターン検索部214は、音源のメロディパターンの各ノートのオンセット時刻を基準として、入力メロディパターンにおける最も近いオンセット時刻のノートとの音高の差分を算出する。
(3)リズムパターン検索部214は、(1)で算出した差分と(2)で算出した差分との平均値を、入力メロディパターンと音源のメロディパターンとの音高の差分として算出する。
なお、計算量を抑えるために、上記(1)若しくは(2)のいずれかのみを用いて音高の差分が算出されるようにしてもよい。
【0091】
このようにすれば、利用者が意図したリズムパターンのみならず、メロディパターンについても利用者が意図したものと近いスタイルレコードが検索結果として出力されることとなる。利用者は、入力リズムパターンとリズムパターンは同じだが、メロディパターンが異なるようなスタイルレコードを検索結果として得ることが可能となる。
【0092】
=入力リズムパターンとリズムカテゴリとの類似度距離の算出方法=
入力リズムパターンとリズムカテゴリとの類似度距離の算出方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その算出方法のバリエーションを記載する。
<カテゴリに特有の入力時刻間隔の個数>
<変形例24>
変形例24において、制御部21は、入力リズムパターンにおいて比較対象のリズムカテゴリを象徴するオンセット時刻間隔が含まれる個数に基づいて、入力リズムパターンと各リズムカテゴリとの類似度距離を算出する。
図15は、オンセット時刻間隔テーブルの一例を表す図である。オンセット時刻間隔テーブルは記憶部22に予め記憶されている。オンセット時刻間隔テーブルは、リズムカテゴリの分類を示す名称と、各リズムカテゴリにおいて対象となるオンセット時刻間隔との組み合わせからなる。なお、ここでは1小節を48に等分して正規化したものとしてオンセット時刻間隔テーブルの内容が予め決められている。
【0093】
例えば、ここで、上述した方法により、制御部21が、入力リズムパターンにおけるオンセット時刻からオンセット時刻間隔を算出し、算出結果にクオンタイズを施した結果、以下の(a)で表す数値群を算出したとする。
(a)12,6,6,6,6,6
制御部21は、算出した数値群と、
図15に示すオンセット時刻間隔テーブルとに従って、4分のオンセット時刻間隔が1個、8分のオンセット時刻間隔が5個であると特定する。そして制御部21は、以下の式(4)に従って、入力リズムパターンと各リズムカテゴリとの類似度距離を算出する。
入力リズムパターンとリズムカテゴリNとの類似度距離=1−(入力リズムパターンにおけるリズムカテゴリNの対象となるオンセット時刻間隔の個数/入力リズムパターンにおけるオンセット時刻間隔の総数)・・・(4)
上述した式は一例であり、対象となるオンセット時刻間隔がより多く含まれているリズムカテゴリほど、入力リズムパターンとの類似度距離が小さく算出されるものであればよい。式(4)に従った結果、制御部21は、例えば入力リズムパターンと8分のリズムカテゴリとの類似度距離を、0.166と算出する。また、式(4)に従った結果、制御部21は、例えば入力リズムパターンと4分のリズムカテゴリとの類似度距離を、0.833と算出する。制御部21は、このようにして入力リズムパターンと各リズムカテゴリとの類似度距離を算出し、最も類似度距離が小さく算出されたリズムカテゴリに入力リズムパターンが属する、と判定する。
【0094】
<DBリズムカテゴリと入力リズムカテゴリとのマトリクス>
<変形例25>
入力リズムパターンとリズムカテゴリとの類似度距離の算出方法は、上述したものに限らず、次のようにしてもよい。変形例25では、類似度距離参照表なるものを記憶部22が記憶している。
図16は、類似度距離参照表の一例を表す図である。類似度距離参照表では、入力リズムパターンの属し得るリズムカテゴリと、自動伴奏DB222に記憶された各リズムパターンレコードが属し得るリズムカテゴリとの類似度距離が、マトリクス状に表されている。例えば、制御部21が、入力リズムパターンが属するリズムカテゴリを8分と判定したとする。制御部21は、判定結果である入力リズムパターンが属するリズムカテゴリと、類似度距離参照表とに基づいて、入力リズムパターンと各リズムカテゴリとの類似度距離を特定する。例えば、この場合、制御部21は、入力リズムパターンと4分のリズムカテゴリとの類似度距離を「0.8」と特定し、入力リズムパターンと8分のリズムカテゴリとの類似度距離を「0」と特定する。これにより、制御部21は、8分のリズムカテゴリが入力リズムパターンと最も類似度距離が小さいと判定する。
【0095】
<カテゴリに特有の入力時刻とスコアに基づく>
<変形例26>
入力リズムパターンとリズムカテゴリとの類似度距離の算出方法は、上述したものに限らず、次のようにしてもよい。変形例26において、制御部21は、入力リズムパターンにおいて比較対象のリズムカテゴリを象徴するオンセット時刻が含まれる個数に基づいて、入力リズムパターンと各リズムカテゴリとの類似度距離を算出する。
図17は、オンセット時刻テーブルの一例を表す図である。オンセット時刻テーブルは記憶部22に予め記憶されている。オンセット時刻テーブルは、リズムカテゴリの分類を示す名称と、各リズムカテゴリにおいて対象となるオンセット時刻と、入力リズムパターンに対象となるオンセット時刻が含まれる場合に加算するスコアとの組み合わせからなる。なお、ここでは1小節を48に等分して正規化したものとしてオンセット時刻テーブルの内容が予め決められている。
【0096】
例えば、制御部21が、入力リズムパターンから、(b)で示すオンセット時刻を得たとする。
(b)0,12,18,24,30,36,42
制御部21は、このオンセット時刻とオンセット時刻テーブルとに基づいて、各リズムカテゴリに対する入力リズムパターンのスコアを算出する。ここでは、制御部21は、4分のリズムカテゴリに対するスコアとして「8」を算出し、8分のリズムカテゴリに対するスコアとして「10」を算出し、8分3連のリズムカテゴリに対するスコアとして「4」を算出し、16分のリズムカテゴリに対するスコアとして「7」を算出する。そして制御部21は、算出したスコアが最も高いリズムカテゴリを、入力リズムパターンとの類似度距離が最も小さいリズムカテゴリであると判定する。ここでは、制御部21は、入力リズムパターンが8分のリズムカテゴリと最も類似度距離が小さいと判定する。
以上が、入力リズムパターンとリズムカテゴリとの類似度距離の算出方法のバリエーションについての説明である。
【0097】
<変形例27>
本発明は、楽音データ処理装置以外にも、これらを実現するための方法や、コンピュータに
図4に示した機能を実現させるためのプログラムとしても把握される。かかるプログラムは、これを記憶させた光ディスク等の記録媒体の形態で提供されたり、インターネット等を介して、コンピュータにダウンロードさせ、これをインストールして利用させるなどの形態でも提供されたりする。
【0098】
<その他の変形例>
実施形態においては、ステップS6におけるリズムパターンのズレの計算において、Aを基準としたBの時刻差と、Bを基準としたAの時刻差との2つを用いていたが(symmetric Distance方式という)、これに限らず、両者のうちどちらか一方のみを用いて計算を行ってもよい。
また、MIDIデータを用いて検索又は再生を行う場合、マルチトラックで複数のパートの演奏データを再生するものにおいて、特定のトラックに対して検索を行うようにしてもよい。
また、リズムカテゴリの判定(ステップS2〜ステップS5)を省略して、リズムパターンのズレの計算(ステップS6)の結果のみを用いて、ステップS7におけるリズムパターン同士の類似度距離の算出を行ってもよい。
また、リズムパターンのズレの計算(ステップS6)において、算出されたズレの値に、相当する構成音のアタック強度を乗算することで、より強いアタック強度を持つ構成音を含むリズムパターンレコードが、検索結果の候補から外れやすくなるようにしてもよい。
実施形態においては、自動伴奏データに1小節のものを用いていたが、音声の長さはこれに限る必要はない。
また、実施形態においては、利用者が或る演奏操作子を用いて入力を行うと、この演奏操作子と対応したパートに基づいてスタイルレコードが検索されていたが、これに限らず、利用者が演奏操作子に拠らずに操作部25を用いてパートを指定可能としてもよい。この場合、利用者が、パートを指定したあとに演奏操作子を操作すると、指定されたパートの入力が行われることとなる。例えば、利用者が、操作部25を用いて「ベース」のパートを指定すると、その後にコード入力音域鍵盤12を操作しても、制御部21は、これを「ベース」のパートの入力とみなす、といった具合である。
また、実施形態においては、リズム入力装置10において、バスドラム入力パッド14a、スネアドラム入力パッド14b、ハイハット入力パッド14c、シンバル入力パッド14dというように、音色の異なる各々のリズムパートにパッドをひとつずつ割り当てていたが、これに限らず、音色の異なる複数のリズムパートについて単独のパッドで入力可能としてもよい。この場合、利用者は、操作部25を用いて、リズムパートの音色を指定することが可能である。
また、実施形態においては、操作子に対応させるパート、あるいは自動伴奏データとして使用しているパートは、コード、フレーズ、バスドラム、スネアドラム、ハイハット、シンバルとしたが、これに限らない。さらに、パートの区切り方は楽器名等に限らず、例えば、発音帯域で分けるようにしてもよい。例えば、ドラム(高域)、ドラム(中域)、ドラム(低域)等に分けて、高域にはハイハットやシンバル等、中域にはスネアドラム等、低域にはバスドラム等が入るようにしてもよい。
また、パートの数は実施形態に例示のものから増減させてよいし、パートの構成も実施形態に例示のものに限られず、種々のものが採用可能できる。例えば、和音演奏を行うコードパートに替えて、アルペジオ演奏を行うアルペジオパートを用いる、あるいはコードパートにアルペジオパートを追加する構成が採用されてもよい。
また、音の種類は上述の実施形態に説明している楽器の音に限られない。上述の楽器以外の楽器の音、あるいは楽器以外の音が用いられても。例えば、ドラムやハイハット、シンバルのようなリズムパートには、それらの楽器の音に加えて、もしくはそれらに代えて、人や動物の音声、楽器でない物を叩いた音など、種々のものが利用可能である。
上記実施形態では、楽音データが波形データであるとして、本発明に係る検索技術を楽音発生パターンに対応付けられた楽音データ(波形データ)の検索のために使用しているが、本発明の応用はこれに限定されない。例えば、本発明に係る検索技術は、楽音発生パターンに対応付けられた音色データ(音色IDあるいは楽器種類ID)の検索のために、あるいは楽音発生パターンに対応付けられたその他のタイプの楽音データの検索のために、使用することができる。すなわち、本発明における楽音データとは、波形データに限らず、音色データあるいはその他のタイプの楽音関連データを含む広い概念を包括するものである。
上記実施形態では、パート演奏データの検出を行った後でそれを利用する処理として、パート演奏データを含む自動伴奏データを表示・再生する処理として示したが、それ以外の検出結果を利用した処理でもよい。例えば、自動伴奏データでなく、パート演奏データそのものを表示処理、あるいは再生処理したり、検索したパート演奏データを組み合わせて自動伴奏データを作成する処理で利用してもよい。