以下、本発明を実施するための形態について図面を参照して説明する。まず、本発明の基本となる第1実施形態について説明する。
<第1実施形態>
(楽音信号生成装置)
<構成>
図1は、本発明の第1実施形態に係る楽音信号生成装置10について、当該楽音信号生成装置10を含めた演奏システム1全体のハードウェア構成を示すブロック図である。この図に示されるように、演奏システム1は、楽音信号生成装置10と、入力装置20と、スピーカー30とを有する。
このうち、楽音信号生成装置10は、制御部100と、記憶部200と、表示部300と、操作部400と、取得部500と、ミキサー600と、アンプ700とを備える。制御部100は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)及び時計部Tを有する。CPUは、ROM又は記憶部200に記憶されている機能プログラムをRAMにロードして実行することによって、各種の機能ブロックを構築する。RAMは、CPUが機能プログラムを実行する際に、データ等を一時的に記憶する領域としても機能する。時計部Tは、内部で生成したクロック信号に基づき時刻をミリ秒単位で算出する機能を有する。
記憶部200は、ハードディスクドライブなどにより構成され、演奏に用いられる楽曲データを記憶するものであり、特に本実施形態では、後述するように伴奏データベース201及びフレーズデータベース202が構築される。表示部300は、制御部100の制御によって画像を表示するものである。操作部400は、キーボードや、マウス、フェーダー、ボタン、つまみ、表示部300の画面に設けられたタッチパネルなどである。操作部400は、ユーザによって操作されると、その操作内容を示すデータを制御部100に供給する。取得部500は、入力装置20から供給されるデータを取得するインターフェースであり、取得したデータを制御部100に供給する。ミキサー600は、複数の楽音信号をミキシングする。アンプ700は、ミキシングされた楽音信号を増幅する。
一方、入力装置20は、ドラムパッドのように打撃面21を有する。演奏時においてユーザが打撃部材22によって打撃面21を打撃すると、入力装置20は、打撃されたこと、すなわち演奏操作されたことを示すトリガーデータと、打撃の強度、すなわち当該演奏操作の強度を示すベロシティデータとを、取得部500を介して制御部100に供給する。スピーカー30は、増幅された楽音信号を音響変換して外部に出力する。
次に、このようなハードウェア構成において、制御部100が機能プログラムを実行したときに構築される機能ブロックについて、図2を参照して説明する。伴奏データベース201は、楽曲を構成する伴奏データをパート毎に記憶する。伴奏データには、その伴奏が再生されたときに時間的な再生位置を示す再生時刻データと、伴奏における小節線の時間的な位置を示す小節線時刻データとが付随する。なお、再生時刻データ及び小節線時刻データは、その時間的な位置を、楽曲の演奏開始時刻を起点とした経過時間で示し、本実施形態にあっては最小単位をmsec(ミリ秒)で規定する。また、伴奏データベースは、伴奏データを複数の楽曲分記憶する。
伴奏選択部101は、操作部400を介して選択された楽曲に対応する伴奏データと、これに付随する再生時刻データと小節線時刻データとを伴奏データベース201から読み出すものである。小節線クロック生成部102は、演奏の開始が指示されたときに演奏の進行にともなって更新される再生時刻データを、小節線時刻データで示される小節線で正規化した小節線クロックに、時計部Tによるクロック信号を用いて変換(再計算)するものである。詳細には、再生時刻データで示される時間的な位置が、ある小節線から次の小節線までの区間に入っているとき、小節線クロック生成部102は、ある小節線の時刻を「0.000」とし、次の小節線の時刻を「1.000」として正規化するとともに、再生時刻データで示される時間的な再生位置が「0.000」から「1.000」までの正規化区間においてどの位置であるかを示す値を小節線クロックとして出力する。
ここで、小節線クロックなる概念について図3を参照して補足的に説明する。
この図は、再生時刻データで示される時間的位置が例えば「2分6800msec」であって、その時間的位置を前後で挟む小節線のうち、時間的前方の小節線の時刻が「2分6000msec」であり、時間的後方の小節線の時刻が「2分8000msec」である場合を示している。この場合、時間的前方の小節線が「0.000」に、時間的後方の小節線が「1.000」に、それぞれ正規化されるので、再生時刻データで示される時間的な位置は、小節線クロックの「0.400」に変換されることになる。なお、図3における信号波形は、当該小節線区間において再生されるべき伴奏データの一例を示している。また、この小節線クロックは、再生時刻データが演奏の進行にともなって更新されるのに合わせて、逐一更新される。
説明を再び図2に戻すと、トリガー時刻出力部103は、トリガーデータが取得部500を介して入力装置20から供給されたときに、その供給時点における小節線クロックをトリガー時刻データとして出力するものである。なお、トリガー時刻出力部103は、トリガーデータが供給されると、その都度、トリガー時刻データを出力する。
一方、フレーズデータベース202は、ユーザが演奏する伴奏のうち、例えば1小節分のフレーズを演奏するためのフレーズデータを複数種類にわたって記憶する。このフレーズデータは、1小節分のフレーズが例えば図5に示されるような信号波形で示されるとともに、「01」〜「06」の区間でそれぞれ規定される6つの構成音からなる場合、6つの構成音の信号波形をそれぞれ規定するデータと、各音の開始時刻をそれぞれ小節線で正規化して示す開始時刻データとによって構成される。なお、この図5においては、「01」の区間で規定された構成音の開始時刻t0が「0.000」であり、「02」の区間で規定された構成音の開始時刻t1が「0.127」であり、「03」の区間で規定された構成音の開始時刻t2が「0.373」であり、「04」の区間で規定された構成音の開始時刻t3が「0.501」であり、「05」の区間で規定された構成音の開始時刻t4が「0.628」であり、「06」の区間で規定された構成音の開始時刻t5が「0.751」である例を示している。
フレーズ選択部104は、演奏に用いるフレーズが操作部400によって選択された場合に、当該選択されたフレーズに対応するフレーズデータを、フレーズデータベース202から読み出すものである。一時記憶部105は、RAMの一部に割り当てられた記憶領域であり、フレーズ選択部104によってフレーズデータベース202から読み出されたフレーズデータを一時的に記憶するものである。
特定部106は、トリガー時刻出力部103からトリガー時刻データが出力されたときに、フレーズデータの開始時刻データのうち、当該トリガー開始時刻に最も近いものを特定し、特定した開始時刻データに対応する構成音のデータを一時記憶部105から読み出すものである。特定部106は、本発明にかかる第1の特定手段の一例である。第1信号生成部107は、一時記憶部105から読み出された構成音のデータを楽音信号に、入力装置20から取得部500を介して供給されたベロシティデータで示される音量になるように変換するものである。一方、第2信号生成部108は、操作部400を介して演奏の開始が指示されたときに、伴奏選択部101から転送された伴奏データから楽音信号を生成するものである。なお、本実施形態では、伴奏データについては伴奏音をサンプルした波形データとし、伴奏選択部101が、演奏開始が指示されたときに波形データを第2信号生成部108に転送する構成とする。ここで、伴奏データを波形データ以外のデータ、例えばMIDI(Musical Instruments Digital Interface)データとする場合には、第2信号生成部108が、MIDIデータを解釈して楽音信号を生成することになる。この場合、再生時刻データは、第2信号生成部108が、楽音信号の生成にともなって小節線クロック生成部102に供給する構成にすれば良い。
<動作>
次に、第1実施形態に係る楽音信号生成装置10の動作について説明する。まず、ユーザは、操作部400を操作して、演奏を希望する楽曲を選択する。これにより、伴奏選択部101は、選択された楽曲に係る伴奏データと、当該伴奏データに付随する小節線時刻データとを、伴奏データベース201から読み出し、このうち、小節線時刻データを事前に小節線クロック生成部102に転送する。また、ユーザは、操作部400を操作して、演奏を希望するフレーズを選択する。これにより、フレーズ選択部104は、選択されたフレーズに係るフレーズデータをフレーズデータベース202から読み出して、一時記憶部105に記憶させるとともに、当該フレーズデータの開始時刻データを特定部106に供給する。この状態において、ユーザが操作部400を操作して演奏開始を指示すると、第1に、伴奏選択部101は、伴奏データベース201から読み出した伴奏データを、指定されたキー及びテンポに対応するように必要に応じて変換して、第2信号生成部108に転送する。これによって、第2信号生成部108は、選択された楽曲の伴奏音を示す楽音信号を、指定されたテンポ及びキーにしたがって生成することになる。第2に、伴奏選択部101は、読み出した伴奏データに付随する再生時刻データを、第2信号生成部108への伴奏データの転送に合わせて、すなわち演奏の進行に合わせて、小節線クロック生成部102に供給する。
小節線クロック生成部102は、第1に、演奏の開始指示後に演奏の進行に合わせて逐一される再生時刻データを入力したときに、当該再生時刻データで示される時間的位置が、どの小節線に挟まれた区間であるのかを判別し、第2に、判別した小節線の区間で当該再生時刻データを正規化し、小節線クロックとして逐一変換して出力する。
第1実施形態では、演奏開始の指示がなされると、選択された楽曲の伴奏音を示す楽音信号が第2信号生成部108によって生成され、スピーカー30によって発音される。これにより、ユーザが演奏するフレーズ以外の伴奏音の再生が進行することになる。このとき、小節線クロック生成部102は、再生時刻で示される演奏の時間的位置を小節線クロックに正規化して逐一出力している。この状態において、ユーザが打撃部材22によって打撃面21を打撃したか否かによって動作が分かれる。そこで以下については、この動作について説明することにする。
図4は、このときの動作を説明するフローチャートである。まず、ステップS50において、トリガー時刻出力部103は、取得部500を介してトリガーデータが入力されたか否かを判別する。トリガーデータが入力されていなければ、以下の処理は不要なので、手順はステップS90にスキップする。一方、トリガーデータが入力されたのであれば、ステップS60において、トリガー時刻出力部103は、トリガーデータが入力された時点において小節線クロック生成部102から出力されている小節線クロックをトリガー時刻データとして特定部106に供給する。特定部106は、トリガー時刻出力部103からトリガー時刻データの供給を受けると、ステップS71〜S76において、当該トリガー時刻データで示されるトリガー時刻tに対し、フレーズデータにおいて各構成音の開始時刻が最も時間的に近い構成音を特定する。
例えば、フレーズデータが図5に示したように6音で構成されて、当該フレーズが繰り返されると仮定した場合、トリガー開始時刻データで示される時刻tから次のようにして構成音が特定される。すなわち、時刻tが、時刻t0と時刻t1との中間地点以降から、時刻t1と時刻t2との中間地点よりも手前の地点までの範囲であれば、「02」の構成音が特定される(ステップS72)。同様に、トリガー開始時刻tが、時刻t1と時刻t2との中間地点以降から、時刻t2と時刻t3との中間地点よりも手前の地点までの範囲であれば、「03」の構成音が特定され、時刻t2と時刻t3の中間地点以降から、時刻t3と時刻t4との中間地点よりも手前の地点までの時間的な範囲であれば、「04」の構成音が特定され、時刻t3と時刻t4との中間地点以降から、時刻t4と時刻t5との中間地点よりも手前の地点までの範囲であれば、「05」の構成音が特定される。このように、フレーズデータは複数の区間に分けられており、各々の区間には各構成音が対応している。上述した「時刻t1」や「時刻t2」は、各区間を示す区間情報の一例である。また、フレーズの繰り返しを考慮すると、時刻tが、1つ前のフレーズにおける時刻t5と今回のフレーズにおける時刻t0との中間地点以降から、時刻t0と時刻t1との中間地点よりも手前の地点までの時間的な範囲であれば、「01」の構成音が特定され(ステップS71)、時刻t4と時刻t5との中間地点以降から、時刻t5と1つ後のフレーズにおける時刻t0との中間地点よりも手前の地点までの範囲であれば、「06」の構成音が特定される(ステップS76)。
そして、特定部106は、特定した構成音のデータを一時記憶部105から読み出して、第1信号生成部107に供給する。これにより、ステップS80において、第1信号生成部107は、特定された構成音の楽音信号を、ベロシティデータで示される強度の音量で生成して、ミキサー600に供給する。この楽音信号は、他の伴奏音を示す楽音信号とミキサー600によってミキシングされた後、スピーカー30によって音響変換されて発音される。
なお、ステップS50の判別結果が「No」である場合、又は、ステップS80の終了後、演奏継続すべきか否かが伴奏選択部101によって判別されて、判別結果が「Yes」であれば、手順が再びステップS50に戻る一方、判別結果が「No」であれば、この処理が終了する。なお、演奏継続すべきとは、例えば第2信号生成部108に伴奏データを転送している途中であることや、操作部400によって演奏停止が指示されていないことなどを意味する。これにより、ステップS50からS90までの処理が、選択された楽曲の伴奏データがすべて転送されて演奏が終了するまで、又は、演奏停止が指示されるまで、繰り返し実行される。
ところで、演奏の一部においては、選択したフレーズとほぼ同じリズムパターンで演奏操作しつつも、演奏の他の一部では、選択したフレーズにはないタイミングで演奏操作を追加したり、逆に、選択したフレーズに存在するタイミングでの演奏操作を省略したりするケースがある。このようなケースにおいて、従来で述べたように、ユーザが所定の操作をする毎に区間のデータを順次再生する技術では、再生される音に破綻が生じてしまう。例えば、1小節内のフレーズのうち、前半部分において全く演奏操作をしない状態で、後半部分で演奏操作を加えると、前半部分の構成音が、後半部分で演奏操作したリズムパターンで発生することになり、ユーザの意図から全く外れてしまうことになる。
これに対して第1実施形態に係る楽音信号生成装置10によれば、例えば、図6の上欄に示されるようにフレーズデータの構成音と開始時刻データとが規定されている場合に、ユーザによって演奏操作が下向きの矢印で示される時刻(トリガー時刻)になされたとき、下欄で示されるように構成音が再生される。詳細には、左から1つ目のトリガー時刻に演奏操作がなされると、開始時刻が最も近い「01」の構成音が、ベロシティデータにしたがった強度で発音される。以下同様に2つ目〜6つ目のトリガー時刻に演奏操作がなされると、開始時刻が最も近い「01」〜「06」の構成音が、それぞれベロシティデータにしたがった強度で発音される。
したがって、第1実施形態に係る楽音信号生成装置10では、選択したフレーズのうち、あるタイミングで演奏操作しなくても、次回演奏操作したときに、その演奏操作したタイミングに最も近い構成音が自動的に選択されて再生されるので、ユーザの意図から全く外れた構成音が再生されてしまう、という不都合を回避することが可能になる。また、第1実施形態に係る楽音信号生成装置10では、選択したフレーズとほぼ同じリズムパターンで演奏操作されたとき、選択したフレーズがほぼフレーズデータで規定される通りに再生されることにもなる。
なお、第1実施形態に係る楽音信号生成装置10に対しては、次のような機能を追加しても良い。例えば、ユーザによって選択されたフレーズが伴奏に合わせて、演奏操作なしにループ再生されるように楽音信号を生成しても良い(ループ再生)。詳細には、楽音信号生成装置10は、伴奏の再生中に、小節線クロックがフレーズデータの開始時刻に至ったときに、その開始時刻の構成音のデータを一時記憶部105から読み出して第1信号生成部に転送する構成としても良い。フレーズが繰り返される場合、小節線クロックも「0」から「1」までカウントすると、再び「0」から「1」までのカウントを繰り返すループに入るので、このループの周期でフレーズが繰り返されることになる。
図9は、このフレーズのループ再生を説明するための図である。詳細には、図5に示したフレーズデータを一例として示しており、小節クロックが時刻t1〜t5にそれぞれ達する毎に、「01」〜「06」の構成音がそれぞれ再生される状態が示されている。ユーザは、ループ再生されるフレーズを聞くことで、選択したフレーズの音量や、リズムパターン、音色などを確認することができる。
また、楽音信号生成装置10は、演奏操作があった場合は、上述したように演奏操作したタイミングに最も近い構成音を再生するとともに、演奏操作したタイミングを示すトリガー時刻データを順番に記憶する一方、演奏操作がなくなった場合には、記憶したトリガー時刻データを順番に読み出して、前の小節で再生した構成音を再度繰り返して再生するように構成しても良い(パーカッションループ再生)。これにより、ユーザは、演奏操作をしている場合にはフレーズを演奏することができ、演奏操作をやめた場合には、直前に演奏したフレーズの音を確認することができる。
楽音信号生成装置10は、ユーザによる操作部400への所定の操作により、小節の最初からフレーズが再生されるように楽音信号を生成しても良い。これにより、ユーザは、フレーズの最初がどこなのかを確認したり、上記ループ再生やパーカッションループ再生において、フレーズの一部分だけを繰り返し再生して演奏に変化を付けたりすることができる。
演奏操作に基づき再生されたフレーズを小節単位で録音し、ループ素材で用いられるフォーマットで出力するように構成しても良い。これにより、ユーザは、楽曲を作成する際自分がほしいリズムパターンやグルーブのループ素材がない場合に、そのループ素材の楽器音と同じ楽器の似たフレーズを選択して演奏することで、所望のフレーズと比較的イメージが近いループ素材を得ることができる。また、楽音信号生成装置10は、ユーザが演奏する伴奏を複数トラックにわたって設定するとともに、トラック毎に、実施形態で説明した再生、上記ループ再生、上記パーカッションループ再生を個別に設定しても良い。これにより、複数の操作子に個別の楽器をアサインして、演奏することが可能となる。
<第2実施形態>
(楽音信号生成装置の別態様)
次に、本発明の第2実施形態に係る楽音信号生成装置について説明する。なお、第2実施形態に係る楽音信号生成装置は、第1実施形態に係る楽音信号生成装置と、ハードウェア構成が同一であり、機能ブロックだけが異なる。そこで以下では、この機能ブロックにおける相違点を中心に説明することにする。なお、第2実施形態に係る楽音信号生成装置10については、その制御部において構築される機能ブロックが異なるので、説明の便宜上、制御部100aと表記して説明することとする。
図7は、第2実施形態に係る楽音信号生成装置10において構築される機能ブロックを示す図である。図7が、図2に示した第1実施形態と相違する部分は、判断部109が追加されている点にある。この追加に関連した点について言及すると、フレーズデータでは、フレーズの構成音の強度を示す構成音強度データが、開始時刻データに対応付けられている。また、特定部106は、トリガー時刻出力部103からトリガー時刻データの供給を受けると、フレーズデータにおける開始時刻データのうち、当該トリガー開始時刻データで示されるトリガー時刻に最も近い構成音のデータを特定して、特定した構成音の構成音強度データを判断部109に供給する。判断部109は、トリガーデータとともに出力されたベロシティデータと、特定部106から供給された構成音強度データとを比較して、それらの強度の差が予め定められた閾値以上であるか否かを判別する。判断部109は、この判断結果を示すデータとともに、強度の差が閾値以上であると判断した場合には判断に用いたベロシティデータも合わせて特定部106に返信する。
特定部106は、判断部109から差が閾値以上である旨の判断結果を受領した場合、トリガー開始時刻に開始時刻が最も近い構成音ではなく、構成音強度データで示される強度のうち、受領したベロシティデータで示される強度に最も近い構成音を特定して、特定した構成音のデータを一時記憶部105から読み出す。なお、特定部106は、判断部109から差が閾値よりも小さい旨の判断結果を受領した場合、第1実施形態と同様にトリガー開始時刻に開始時刻が最も近い構成音を特定して、特定した構成音のデータを一時記憶部105から読み出す。
なお、第1信号生成部107は、一時記憶部105から読み出された構成音のデータに基づく構成音の楽音信号を、ベロシティデータで示される強度の音量で生成して、ミキサー600に供給する点については第1実施形態と同様である。
図8は、第2実施形態におけるフレーズの再生結果の一例を示す図である。
この例において、下向きの矢印が演奏タイミングを示し、矢印の長さが演奏操作の強度に対応している。このため、ユーザは、1、3回目の演奏操作を弱く、5、7回目の演奏操作を強くしている。図8において、1、3回目の演奏操作に対して、規定される構成音の開始時刻が最も近い区間はそれぞれ「01」、「02」であるが、1、3回目の演奏操作の強度に対して、区間「01」、「02」の強度の差がそれぞれ閾値以上であると判断されたために、1、3回目の演奏操作の強度に最も近い区間「03」、「05」の構成音にそれぞれ差し替えられている。同様に、5、7回目の演奏操作に対して、規定される構成音の開始時刻が最も近い区間はそれぞれ「03」、「05」であるが、5、7回目の演奏操作の強度に対して、区間「03」、「05」の強度の差がそれぞれ閾値以上であると判断されたために、5、7回目の演奏操作の強度に最も近い区間「06」、「01」の構成音にそれぞれ差し替えられている。
この第2実施形態によれば、演奏操作によるベロシティデータの強度と、選択されたフレーズの構成音の強度とが、閾値以上になるほど極端に差が生じている場合、トリガー時刻に開始時刻が最も近い構成音から、ベロシティデータに最も近い強度の構成音に差し替えられる。このため、選択されたフレーズの雰囲気を残しつつ、演奏操作に対応した強度に対応しないような構成音が再生されてしまうことがあるので、特に打楽器を演奏する場合の違和感やストレス感を軽減することが可能になる。
なお、第2実施形態においては、ベロシティデータで示される強度に最も近い強度の構成音を生成したが、このベロシティデータで示される強度に近い強度を有する複数の構成音からランダムに選んだ構成音を生成しても良い。これにより、楽音信号生成装置10は、強度が最も近い構成音を生成する場合と比較して、再生される構成音が単調になることを抑えることができる。
また、第2実施形態においては、トリガー時刻が区間中の特定範囲にある場合に限って、演奏操作の強度に対応した構成音を生成し、それ以外の場合には、ベロシティデータで示される強度に対応した構成音を生成する構成としても良い。
図10は、演奏操作のタイミングと再生される音との関係を説明するための図である。楽音信号生成装置10は、トリガー時刻が各区間で規定された構成音の開始時刻を中心とした時間αの範囲、すなわち、各開始時刻の前後の時間α/2の範囲にある場合に限って、その開始時刻に始まる構成音を生成し、それ以外の範囲(図10においてβ1〜β6で示した範囲)にある場合は、ベロシティデータで示される強度に対応した構成音の楽音信号を生成する。
次に、本発明の第3実施形態について説明する。
<第3実施形態>
(音楽データ作成システム)
<構成>
第3実施形態は、音楽データ処理システムの一例としての音楽データ作成システムであり、音楽データの一例として自動伴奏データを作成するシステムである。本実施形態における自動伴奏データは、電子楽器やシーケンサなどに読み込まれ、いわゆるMIDIの自動伴奏データと同様の役割を果たす。図11は、第3実施形態における音楽データ作成システム100を表す図である。音楽データ作成システム100は、リズム入力装置710、及び情報処理装置720を備えており、各々が通信線により接続されて相互に通信ができるようになっている。この通信は、無線によって実現されてもよい。第3実施形態において、リズム入力装置710は、入力手段として例えば鍵盤とパッドを備えている。ユーザが、リズム入力装置710に設けられた鍵盤を押鍵することにより、リズム入力装置710は、押鍵されたこと、すなわち演奏操作がなされたことを示すトリガーデータと、押鍵の強度、すなわち当該演奏操作の強度を示すベロシティデータとを、1小節を単位として、情報処理装置720に入力する。ここで、トリガーデータは、ユーザが鍵盤を押鍵する毎に生成されるものであって、押鍵されたことを示すキーオン情報で表される。トリガーデータの各々にはベロシティデータが対応付けられている。1小節内に生成されたトリガーデータとベロシティデータの集合は、この1小節において、ユーザがリズム入力装置710を用いて入力したリズムのパターン(入力リズムパターンという)を表している。ユーザは、この入力リズムパターンを鍵盤の鍵域に対応したパートについて入力することになる。また、打楽器を示すパートについては、ユーザは、パッドを使って入力リズムパターンを入力する。このように、リズム入力装置710は、ユーザによる演奏操作が入力される入力手段の一例である。
情報処理装置720は、例えばPC(Personal Computer)である。情報処理装置720は、自動伴奏データとその自動伴奏データを構成する各パートに用いられる楽音データを複数含んだデータベースとそれを利用するアプリケーションを備えている。このアプリケーションは、楽音データを検索する際に入力された入力リズムパターンに基づいてパートを選択するための選択機能と、作成中の自動伴奏データや作成後の自動伴奏データを再生する再生機能とを備えている。自動伴奏データは、各々が固有のリズムパターンを持つ複数のパートで構成され、各パートは、例えば、ベース、和音からなるコード、単音からなるフレーズ、バスドラム、スネアドラム、ハイハット、及びシンバル等であり、それらを組み合わせたものとなっている。具体的には、これらのデータは、自動伴奏データテーブルと該テーブルに規定されるtxtやWAVE等の各種ファイルで構成される。各パートのデータである楽音データは、それぞれ1つの音色で所定の長さ(例えば、2小節、4小節又は8小節など)を有する演奏音について、例えばWAVEやmp3といったファイルフォーマットで記録されたものである。なお、データベースには、自動伴奏データを差替えする際に利用される、現時点では自動伴奏データにおいて未使用の楽音データも記録されている。
そして情報処理装置720は、このデータベースから、入力リズムパターンが入力された際のパートについて、選択機能によってリズム入力装置710から入力された入力リズムパターンと同一又は類似したリズムを持つ楽音データを検索し、検索結果の楽音データを有する自動伴奏データの名称等を一覧表示する。そして情報処理装置720は、一覧からユーザによって選択された自動伴奏データに基づく音を出力する。このとき、情報処理装置720は、検索結果の自動伴奏データに基づく音を繰り返し再生する。このように、ユーザが、複数のパートのいずれかについて入力した入力リズムパターンから自動伴奏データを検索し、その検索結果のなかから一つを選択すると、情報処理装置720は、選択された自動伴奏データに基づく音を再生する。既に選択されているパートがあれば、そのパートに所定のタイミング(例えば拍のタイミング)が同期するように、必要に応じてテンポを速くあるいは遅く変更させて再生する。このように、音楽データ作成システム100では、各々異なる複数のパートが選択されて、選択されたパートについてユーザがリズムパターンを入力することで検索が行われる。そして、ユーザが、検索結果が表す自動伴奏データから任意のパートの自動伴奏データを選択して組み合わせることで、これらの自動伴奏データが同期しながら再生される。なお、検索機能は、ユーザが操作部725(後述)を操作することによってそのON/OFFが切り替えられる。
情報処理装置720がアプリケーションプログラムを実行するときの動作のモードとして、ループ再生モード、演奏再生モード、及び演奏ループ再生モードがある。ユーザは、情報処理装置720に備えられた操作部725(後述)を用いて、動作のモードを変更することが可能である。上記動作のモードがループ再生モードの場合、情報処理装置720は、各々異なるリズムパターンを持つ楽音データを複数記憶したデータベースにおいて、リズム入力装置710から入力された入力リズムパターンと同一又は最も類似したリズムパターンを有する楽音データを検索し、検索結果の楽音データを音に変換して出力する。このとき、情報処理装置720は、検索結果の楽音データに基づく音を繰り返し再生する。一方、上記動作のモードが演奏再生モードの場合、情報処理装置720は、上記検索結果の楽音データを音として出力するだけでなく、検索結果の楽音データにおける構成音を用いた演奏操作に基づく音を出力することが可能である。また、上記動作のモードが演奏ループ再生モードである場合、情報処理装置720は、検索結果の楽音データに基づく音を繰り返し出力するともに、ユーザが検索結果フレーズにおける構成音を用いて行った演奏操作に基づく音を繰り返し出力することが可能である。
図12は、リズム入力装置710を表す模式図である。リズム入力装置710は、入力手段として鍵盤711及び入力パッド712を備えている。ユーザが、これらの入力手段を用いてリズムパターンを入力すると、情報処理装置720は入力リズムパターンに基づいて、楽音データを検索する。リズム入力装置710における鍵盤711の予め決められた鍵域又は入力パッド712の種類には、各々異なる上記パートの何れかが対応付けられている。例えば、鍵盤711の全鍵域は、2つのスプリットポイントで低音域鍵盤、中音域鍵盤と高音域鍵盤に分けられる。低音域鍵盤は、ベース入力音域鍵盤711aとして利用され、ベースのパートが対応付けられている。中音域鍵盤は、コード入力音域鍵盤711bとして利用され、和音からなるコードのパートが対応付けられている。高音域鍵盤は、フレーズ入力音域鍵盤711cとして利用され、単音からなるフレーズのパートが対応付けられている。また、バスドラム入力パッド712aには、バスドラムのパートが対応付けられている。スネアドラム入力パッド712bには、スネアドラムのパートが対応付けられている。ハイハット入力パッド712cには、ハイハットのパートが対応付けられている。シンバル入力パッド712dには、シンバルのパートが対応付けられている。ユーザは、リズム入力装置710において、押鍵する鍵盤711の鍵域又は押下する入力パッド712の種類を指定して演奏操作を行うことで、指定した入力手段に対応付けられたパートについて楽音データを検索することが可能である。このように、鍵盤11及び入力パッド12が、演奏操作子の各々と対応することとなる。
例えば、ユーザが、ベース入力音域鍵盤711aに相当する鍵盤を押鍵してリズムパターンを入力すると、情報処理装置720は、当該リズムパターンと同一又は所定の類似度の範囲に含まれるリズムパターンを持つベースの楽音データを特定し、この特定されたベースの楽音データを検索結果として表示する。以降において、ユーザがリズムパターンを入力する際に操作する対象であることから、ベース入力音域鍵盤711a、コード入力音域鍵盤711b、フレーズ入力音域鍵盤711c、バスドラム入力パッド712a、スネアドラム入力パッド712b、ハイハット入力パッド712c、及びシンバル入力パッド712dのことを、演奏操作子と呼ぶ場合がある。ユーザがリズム入力装置710における或る演奏操作子を操作すると、リズム入力装置710は、当該操作に応じた例えば操作信号を情報処理装置720に入力する。ここで、この操作信号は、例えばMIDI(Musical Instrument Digital Interface)形式の情報(以下、MIDI情報という)とする。MIDI情報には、上述したトリガーデータ及びベロシティデータのほかに、演奏操作子が鍵盤であればノートナンバーが含まれ、演奏操作子がパッドであればチャンネル情報が含まれる。情報処理装置720は、受け取ったMIDI情報から、対象のパートを特定する。
また、リズム入力装置710は、BPM入力操作子713を備える。ここで、BPMとは、1分間における拍の数であって、リズム入力装置710においてユーザに通知される楽音のテンポを表す。BPM入力操作子713は、例えば液晶ディスプレイなどの表示面とホイールとで構成される。ユーザがホイールを回転させると、回転の停止位置に応じた値のBPMが表示面に表示される。以降、BPM入力操作子713を用いて入力されたBPMのことを入力BPMという。リズム入力装置710は、入力リズムパターンとともに、入力BPMを識別する情報を含むMIDI情報を情報処理装置720に入力する。情報処理装置720は、MIDI情報に含まれる入力BPMに基づいて、音を音声出力部726(後述)から出力したり、光を表示部724(後述)に点滅させて、ユーザに対してテンポと演奏進行タイミングを報知する(いわゆるメトロノームの機能である)。ユーザは、これらの音あるいは光から体感するテンポおよび演奏進行タイミングに基づいて、演奏操作子を操作する。
図13は情報処理装置720のハードウェア構成を表すブロック図である。情報処理装置720は、制御部721、記憶部722、入出力インターフェース部723、表示部724、操作部725、及び音声出力部726を備えており、各部がバスを介して接続されている。制御部721、入出力インターフェース部723、表示部724、操作部725、及び音声出力部726は、第3実施形態におけるものと同様である。記憶部722は、自動伴奏DB7221を記憶している。自動伴奏DB7221は、自動伴奏データに関する各種情報と、楽音データと、これらのデータに関する各種情報を含んでいる。
図14、図15A及び図15Bは、自動伴奏DB7221に含まれるテーブルの内容を表す模式図である。自動伴奏DB7221には、パートテーブル、楽器種類テーブル、リズムカテゴリテーブル及びリズムパターンテーブルが含まれ、そして自動伴奏データの中に含まれる自動伴奏データテーブルが含まれている。図14(a)はパートテーブルの一例を表したものである。「パートID」は、自動伴奏データを構成するパートを一意に識別するための識別子であり、例えば2桁の数字で表される。「パート名」は、パートの種類を表す名称であり、上述した「ベース」、「コード」、「フレーズ」、「バスドラム」、「スネアドラム」、「ハイハット」、及び「シンバル」といった異なるパート毎に、パートIDが対応付けられてパートテーブルに記述されている。なお、「パート名」は図14(a)に表された内容に限ったものではない。「ノートナンバー」は、各パートが、鍵盤においてどの鍵域に割り当てられているかを表すMIDI情報である。MIDI情報では、鍵盤における「中央ハ」にノートナンバー「60」が割り当てられる。このノートナンバーを基準として、例えば図14(a)に示されるように、「ベース」のパートには、ノートナンバーが第1の閾値「45」以下のノートナンバーが割り当てられ、「フレーズ」のパートには、ノートナンバーが第2の閾値「75」以上のノートナンバーが割り当てられ、「コード」のパートには、ノートナンバーが「46」以上であって「74」以下のノートナンバーが割り当てられている。なお、上述した第1の閾値及び第2の閾値は一例であり、この値に限ったものではない。また、第1の閾値及び第2の閾値はユーザにより変更可能としてもよい。
「チャンネル情報」は、各パートが、どの入力パッドに割り当てられているかを表すMIDI情報である。例えば図14(a)に示されるように、「バスドラム」のパートには「12a」のチャンネル情報が割り当てられ、「スネアドラム」のパートには「12b」のチャンネル情報が割り当てられ、「ハイハット」のパートには「12c」のチャンネル情報が割り当てられ、「シンバル」のパートには「12d」のチャンネル情報が割り当てられている。
図14(b)は楽器種類テーブルの一例を表したものである。「楽器種類ID」は、楽器の種類を一意に識別するための識別子であり、例えば3桁の数字で表される。「楽器種類」は、楽器の種類を表す名称であり、例えば「ウッドベース」、「エレキベース」、「スラップベース」といった、異なる楽器の種類毎に、楽器種類IDが対応付けられて楽器種類テーブルに記述されている。例えば楽器種類「ウッドベース」は、「001」の楽器種類IDに対応付けられて楽器種類テーブルに記述されている。その他の楽器種類についても、同様に各楽器種類IDに対応付けられて、楽器種類テーブルに記述されている。なお、「楽器種類」は図14(b)に表された内容に限ったものではない。
図14(c)は、リズムカテゴリテーブルの一例を表したものである。「リズムカテゴリID」は、リズムパターンのカテゴリ(リズムカテゴリという)を一意に識別するための識別子であり、例えば2桁の数字で表される。ここでリズムパターンとは、予め定められた長さの期間において各々の音が発音される時刻の並びを表す。特にここにおいて、リズムパターンとは、1小節において各々の音が発音される時刻の並びを表す。「リズムカテゴリ」は、リズムカテゴリを表す名称であり、例えば「8分」、「16分」、「8分3連」といった、異なるリズムカテゴリ毎に、リズムカテゴリIDが対応付けられてリズムカテゴリテーブルに記述されている。例えば「8分」のリズムカテゴリは、「01」というリズムカテゴリIDが対応付けられてリズムカテゴリテーブルに記述されている。なお、「リズムカテゴリ」は図14(c)に表された内容に限ったものではない。例えば、拍子やジャンルといった大まかなカテゴリ分けをしたり、一つのリズムパターンごとに一つの別のカテゴリIDを割り当てるなど、より細かなカテゴリ分けをしたり、これらを組み合わせて複数階層のカテゴリを付与してもよい。
図15Aは、リズムパターンテーブルの一例を表したものである。リズムパターンテーブルには、パートを一意に識別するパートID毎にグループ化されたリズムパターンレコードが複数記述されている。図15Aにおいては、リズムパターンテーブルの一例として、パートが「ベース」(パートIDが「01」)である複数のリズムパターンレコードが表されている。1件のリズムパターンレコードは、「自動伴奏ID」、「パートID」、「楽器種類ID」、「リズムカテゴリID」、「リズムパターンID」、「リズムパターンデータ」、「アタック強度パターンデータ」、「楽音データ」、「キー」、「ジャンル」、「BPM」及び「コード」といった複数の項目からなる。このリズムパターンテーブルが、それぞれのパート毎に記述されている。
「自動伴奏ID」は、自動伴奏データを一意に識別するための識別子であり、各パートについて1つずつのリズムパターンレコードの組み合わせに対して、同一のIDが割り当てられている。例えば、同一の自動伴奏IDを有する自動伴奏データは、例えばジャンル、キー又はBPMといった項目について同一の内容を有するように予め組み合わせられることで、この自動伴奏データが複数のパートについて合奏で再生されたときに違和感の少ないものとなっている。上述したように「楽器種類ID」は、楽器の種類を一意に識別するための識別子である。同一のパートIDを持つリズムパターンレコードは、楽器種類ID毎にグループ化されており、ユーザはリズム入力装置710を用いてリズムの入力を行う前に、操作部725を用いて楽器の種類を選択することが可能である。ユーザによって選択された楽器の種類は、RAMに記憶される。「リズムカテゴリID」は、各々のリズムパターンレコードが、前述したリズムカテゴリのうち、どのリズムカテゴリに属するかを識別するための識別子である。例えば、図15Aにおいて「リズムカテゴリID」が「01」であるリズムパターンレコードは、図14(c)のリズムカテゴリテーブルに表されるように、「8分」のリズムカテゴリに属する。「リズムパターンID」は、各々のリズムパターンレコードを一意に識別するための識別子であり、例えば9桁の数字からなる。この9桁の数字は、「パートID」2桁と、「楽器種類ID」3桁と、「リズムカテゴリID」2桁と、枝番2桁との組み合わせである。
「リズムパターンデータ」は、1小節を構成するフレーズにおける各構成音の発音開始時刻が記録されたデータファイルであり、例えばテキストファイルに、各構成音の発音開始時刻が記述されたものである。この発音開始時刻は、入力リズムパターンにおける、演奏操作がなされたことを示すトリガーデータに相当する。ここで、各構成音の発音開始時刻は、予め1小節の長さを1として正規化されている。つまり、「リズムパターンデータ」に記述される各構成音の発音開始時刻は、0から1の間の値を取る。
なお、リズムパターンデータは、上述のように、オペレーターによって市販のオーディオループ素材からゴーストノートが除外されることで作成される方法に限らず、予めコンピュータによって自動的にゴーストノートが除外されることで抽出されてもよい。例えば、リズムパターンデータの抽出元のデータがMIDI形式の場合、コンピュータによって以下のような方法でリズムパターンデータが作成されてもよい。コンピュータのCPUは、MIDI形式のデータから、チャンネルごとの構成音開始時刻を1小節の間、抽出し、リズム入力と判断しづらいゴーストノート(例えば、極端に小さなベロシティデータを持つものなど)を除外する。そしてコンピュータのCPUは、ゴーストノートを除外した後のMIDI形式のデータにおいて、和音入力のように一定時間内に複数の入力があった場合、これら複数の入力を1つのリズム入力にまとめる処理を行うことで、リズムパターンデータの作成を自動で行う。
また、ドラムスパートに関しては、1つのチャンネル内にバスドラム、スネアドラム、シンバルといった複数の楽器音が存在する場合もある。このような場合、コンピュータのCPUは、以下のようにしてリズムパターンデータの抽出を行う。ドラムスの場合、ノートナンバーごとに対応している楽器音が決まっている場合が多い。例えば、ドラムスパートでノートナンバー「40」にスネアドラムの音色が割り当てられているとする。これに基づいてコンピュータのCPUは、伴奏音源のドラムスパートが収録されたチャンネルにおいて、スネアドラムの音が割り当てられているノートナンバーの構成音開始時刻を抽出することで、スネアドラムのリズムパターンデータの抽出を行う。
「アタック強度パターンデータ」は、1小節を構成するフレーズにおける各構成音のアタック強度が記録されたデータファイルであり、例えばテキストファイルに上記各構成音のアタック強度が数値として記述されたものである。このアタック強度は、入力リズムパターンにおける、演奏操作の強度を示すものであるベロシティデータに相当する。つまり、アタック強度とは、各構成音の強度を意味する。アタック強度は、MIDI情報のベロシティデータそのものとしてテキストファイルに記述されてもよい。
「楽音データ」は、リズムパターンレコードに基づく音そのものに関するデータファイルの名前であり、例えばWAVEやmp3といった音声ファイルフォーマットからなる楽音データのファイルを示す。「キー」は、楽音データが示す楽音のキー(調)を表す。「ジャンル」は、リズムパターンレコードが所属する音楽のジャンルを表す。「BPM」は、1分間における拍の数であって、リズムパターンレコードに含まれる楽音データに基づく音のテンポを表す。
「コード」は、楽音データが示す楽音の和音の種類を表す。「コード」は、そのパートがコード(和音の種類)であるリズムパターンレコードにおいて設定される。図15Aにおいては、「パートID」が「02」であるリズムパターンレコードにおいて、「コード」の一例として「Maj7」が示されている。パートがコードであるリズムパターンレコードは、一のリズムパターンIDについて複数種類の「コード」を有し、各々の「コード」に応じた楽音データを有する。図15Aの場合、リズムパターンIDが「020040101」のリズムパターンレコードは、図示しない例えば「Maj」、「7」、「min」、「dim」、「Sus4」などの複数種類のコードについて、各々のコードに応じた楽音データを有する。このとき、同一のリズムパターンIDを有するリズムパターンレコードは、「楽音データ」と「コード」以外については同じ内容を有する。ここで、各リズムパターンレコードは、各コードのルート音(「キー」と同じ音高)のみで構成された楽音データと、各コードのルート音を除いたそれぞれの構成音で構成された楽音データとを有するようにしてもよい。この場合、制御部721は、ルート音で構成された楽音データが示す楽音と、ユーザにより指定されたコードを示し、ルート音を除く構成音で構成された楽音データが示す楽音とを同時に再生させる。図15Aにおいては、パートが“ベース”であるリズムパターンレコードを一例として表したが、実際にはリズムパターンテーブルには、図15Aにその一部を表しているように、複数の種類のパート(ここでは、コード、フレーズ、バスドラム、スネアドラム、ハイハット、シンバル)に応じたリズムパターンレコードが記述されている。
図15Bは、自動伴奏データテーブルの一例を表す。このテーブルは、自動伴奏時に、パート毎に、どの楽音データをどのような条件で利用するかを規定するテーブルである。自動伴奏データテーブルの構成は、リズムパターンテーブルと同様である。テーブルの1行目に記述される自動伴奏データは、関連する特定パートが組み合わされたものであり、合奏時の自動伴奏に関する情報を規定する。この合奏時の自動伴奏に関する情報は、他のデータと区別されるために、「パートID」が「99」であり、「楽器種類ID」が「999」であり、リズムパターンIDが「999990101」となっている。これらの各値は、そのデータが合奏による自動伴奏のデータであることを表している。また、合奏時の自動伴奏に関する情報は、各パートの楽音データが組み合わされて合成された一の楽音データを有する。この楽音データ「BeBop01.wav」が再生されると、全てのパートが組み合わさった状態で楽音が再生されることとなる。なお、自動伴奏データとして複数パートを一つの楽音データで演奏できるファイルは必ずしも必要ではなく、ないときには、楽音データの情報は空欄となる。合奏時の自動伴奏に関する情報における「リズムパターンデータ」及び「アタック強度パターンデータ」には、合奏時の自動伴奏の楽音(すなわちBeBop01.wav)に基づくリズムパターンとアタック強度とが記述されている。また、図23Bにおいて、パートID「01」で表される2行目以降の自動伴奏データは、パート毎にユーザによって選択された内容を表す。ここでは、ユーザによって、パートID「01」〜「07」までの各パートについて、特定の楽器が指定されたうえで、「BeBop」スタイルの自動伴奏データが選択されている。また、リズム楽器に相当するパートの「キー」を未指定としたが、音高変換するときには、基準となる音高を指定するようにし、指定された音高と基準となる音高の音程に応じて、楽音データの音高を変換するようにしてもよい。
図16は、情報処理装置720及びその周辺の機能構成を表すブロック図である。制御部721は、ROMや記憶部722に記憶されたアプリケーションを構成する各プログラムをRAMに読み出して実行することにより、テンポ取得部7211、進行部7212、通知部7213、パート選択部7214、パターン取得部7215、検索部7216、特定部7217、出力部7218、コード受付部7219及び音高受付部7220の各機能を実現する。以降において、これら各部を主体として処理の説明を行うことがあるが、処理の主体の実体は、制御部721である。なお、以降の説明において「オンセット」とは、リズム入力装置710における入力状態がオフからオンに切り替わることを指す。例えば、「オンセット」とは、リズム入力装置710の入力手段が鍵盤であれば鍵盤が押鍵された状態のことであり、リズム入力装置710の入力手段がパッドであればパッドを叩かれた状態のことであり、リズム入力装置710の入力手段がボタンであればボタンが押下された状態のことである。これに対して「オフセット」とは、リズム入力装置710の入力手段が鍵盤であれば鍵盤が押鍵されてから離された状態のことであり、リズム入力装置710の入力手段がパッドであればパッドに対する打撃が完了した状態のことであり、リズム入力装置710の入力手段がボタンであれば押下されたボタンから指が離された状態のことである。また、以降の説明において「オンセット時刻」とは、リズム入力装置710における入力状態がオフからオンに切り替わった時の各々の時刻を表す。換言すれば、「オンセット時刻」とは、リズム入力装置710においてトリガーデータが発生した時刻を表す。これに対して、「オフセット時刻」とは、リズム入力装置710における入力状態がオンからオフに切り替わった時の各々の時刻を表す。換言すれば、「オフセット時刻」とは、リズム入力装置710において発生したトリガーデータが消滅した時刻を表す。また、以降の説明において「オンセット情報」とは、オンセット時刻においてリズム入力装置710から情報処理装置720へ入力される情報である。「オンセット情報」には、上述したトリガーデータ以外に、鍵盤のノートナンバーやチャンネル情報等が含まれている。
テンポ取得部7211は、ユーザによって指定されたBPM、すなわち指定テンポを取得する。ここで、ユーザによって指定されたBPMとは、BPM入力操作子713及び後述するBPM指定スライダ751のうち少なくともいずれかを用いて指定されたBPMのことである。BPM入力操作子713及びBPM指定スライダ751は連動しており、ユーザがその一方を用いてBPMを指定すると、指定されたBPMが他方の表示欄に表示される。進行部7212は、図示しないスイッチによるユーザのテンポ報知の開始指示を受けて、指定テンポに基づいて、指示を受けたタイミングから小節内の指定時刻(演奏進行タイミング)を進行させる。通知部7213は、小節内の指定時刻をユーザに通知する。具体的には通知部7213は、1小節の長さを1として正規化した場合に、進行中の時間軸において、数十msec(ミリ秒)ごとにクロック信号(以降において小節線クロックという)としてパターン取得部7215に出力する。つまり、小節線クロックは、指定時刻が1小節中のどこに位置するかを表すものであり、0から1の間の値をとる。通知部7213は、ユーザによって指定された指定テンポに基づいて小節線クロックを生成する。
パート選択部7214は、複数の演奏パートのなかからユーザの指定に基づいて特定パートを選択する。具体的には、パート選択部7214は、リズム入力装置710から入力されるMIDI情報に含まれるパートを識別する情報が、ノートナンバーであるかチャンネル情報であるかを特定する。そしてパート選択部7214は、特定した内容と自動伴奏DB7221に含まれるパートテーブルとに基づいて、ユーザによって操作されたのはどの演奏操作子であるか、すなわち、楽音データを構成する複数のパートのうちどのパートを指定して入力が行われたか、を特定し、検索すべきパートの楽音データとリズムパターンテーブル等を選択する。パート選択部7214は、受け取ったMIDI情報がノートナンバーである場合、当該ノートナンバーとパートテーブルの記述内容とを比較して、ユーザによる操作が、ベース入力音域鍵盤711a、コード入力音域鍵盤711b、或いはフレーズ入力音域鍵盤711cのいずれに対するものであるかを特定し、対応するパートの楽音データとリズムパターンテーブル等選択する。また、パート選択部7214は、受け取ったMIDI情報がチャンネル情報である場合、当該ノートナンバーとパートテーブルの記述内容とを比較して、ユーザによる操作が、バスドラム入力パッド712a、スネアドラム入力パッド712b、ハイハット入力パッド712c、或いはシンバル入力パッド712dのいずれに対するものであるかを特定し、対応する楽音データとリズムパターンテーブル等を選択する。パート選択部7214は、選択したパートに対応するパートIDを検索部7216に出力する。
パターン取得部7215は、複数の演奏パートのなかから選択された特定パートについて入力パターンを取得する。具体的にはパターン取得部7215は、小節線クロックを基準として、リズム入力装置710から入力される、トリガーデータが発生した時刻、すなわちオンセット時刻を1小節毎にRAMに記憶させる。このようにして、1小節を単位として、RAMに記憶されたオンセット時刻の並びが、入力リズムパターンとなる。ここで記憶されるオンセット時刻は、小節線クロックに基づいているため、上記小節線クロックと同様に、0から1の間の値をとる。また、小節線クロックは、外部から情報処理装置720に入力されるものを用いてもよい。
また、ユーザが、1小節を単位としたリズムパターンを正確に入力できるように、情報処理装置720からユーザに対して小節線が開始する時刻をフィードバックする必要がある。これは、例えばメトロノームのように、小節や拍の時刻で、情報処理装置720が、音や光を発したり画面の表示内容を変更したりすることで、ユーザに対して視覚的或いは聴覚的に小節線の位置が伝えられればよい。このとき、通知部7213から出力される小節線クロックに基づいて、音声出力部726が音を発したり、表示部724が光を発したりする。また、その他の方法として、小節線クロックにあわせて、予め小節線の位置を表す例えばクリック音を付加した伴奏音を出力部7218が再生してもよい。この場合、ユーザは、伴奏音源から自らが感じる小節線に合わせて、リズムパターンを入力する。
検索部7216は、楽音のデータを組み合わせた楽音データを複数記憶したデータベースである自動伴奏DB7221を検索して、特定パートの楽音データに含まれる楽音のリズムパターンと入力リズムパターンとの比較結果に基づいて、楽音データを検索結果として取得する。自動伴奏DB7221は、複数の演奏パートについてそれぞれ個別の楽音のデータで構成されている。また、検索部7216は、検索結果を表示部724に表示させる。また、検索部7216aは検索結果を表示部724に表示させ、ユーザが取得した検索結果のなかから所望の楽音データを選択すると、これを自動伴奏データ中の一つのパートの自動伴奏パートデータとして登録する。そして、ユーザは、各パートについて、この作業を繰り返すことで、自動伴奏データを作成する。自動伴奏DB7221は、複数の演奏パートについてそれぞれ個別の楽音データと自動伴奏データと、それぞれのデータの情報を管理する複数のテーブルとで構成されている。特定部7217は、取得された検索結果のうち、特定パートの楽音のパターンが所定の範囲に入る楽音データを特定する。この所定の範囲は、例えば両者の類似の度合いが高い順番で昇順に並べたときの楽音のパターンの個数で表され、記憶部に記憶されており、操作部を用いてユーザにより変更可能としてもよい。つまり、この所定の範囲が広いほど、特定部7217は、検索結果から多くの楽音データを特定し、所定の範囲が狭いほど、特定部7217は、検索結果のうち類似の度合いが高い楽音データのみを特定することになる。例えば、ユーザが、入力したリズムパターンにより近い検索結果を得たい場合には、上記所定の範囲を狭く設定することで、所望する検索結果が得られやすくなる。一方、ユーザが、入力したリズムパターンに対してより多くの検索結果を得たい場合には、上記所定の範囲を広く設定すればよい。また、希望する類似度が高いものだけでなく、高すぎず低すぎずのもの等のある程度似ているもの等を検索したいときは、検索対象とする類似度の上限値と下限値を設定できるようにし、システムであるいは予めユーザが設定するようにすればよい。出力部7218は、楽音データや自動伴奏データの再生時に、小節内の現在位置、すなわち小節線クロックに基づくデータ位置から特定された楽音データを読み出して、この楽音データが示す楽音を、この楽音データに対応付けられた演奏テンポと指定テンポとの関係に基づく速度で再生し、楽音の再生信号を音声出力部726に出力する。音声出力部726は、この再生信号に基づく音声を出力する。また、出力部7218は、演奏再生モード及び演奏ループ再生モードにおける、検索結果の楽音データにおける構成音を用いた、ユーザによる演奏操作を制御する。コード受付部7219は、ユーザにより指定されたコードの入力を受け付ける。音高受付部7220は、ユーザによって指定された音の音高を表す音高情報の入力を受け付ける。
次に、図17及び図18を用いて、検索機能がONの状態において、制御部721が入力リズムパターンに基づいて自動伴奏データの検索を行う一連の処理について説明を行う。
図17は、情報処理装置720が行う処理のフロー図である。
まず、ユーザが、リズム入力装置710の図示しない操作子で自動伴奏データ作成を指示すると、本フローのプログラムが実行される。情報処理装置720は、ユーザの指示に基づいて、プログラムの実行開始後、初期設定を行う。(ステップSa0)。初期設定では、ユーザは、操作部725を用いて各鍵域それぞれに対応する楽器種類および入力パッドに対応する楽器種類を指定し、BPM入力操作子713を用いてBPMを入力する。また、制御部721は、図14、図15A及び図15Bに示した各種テーブルをRAMに読み出す。初期設定後、ユーザは、リズム入力装置710を用いて、鍵盤711における所定の鍵域又は入力パッド712a〜12dにおけるいずれか、すなわちパートを指定してリズムパターンを入力する。リズム入力装置710は、指定されたパートを識別する情報と、指定された楽器種類を識別する情報と、入力BPMを識別する情報と、入力リズムパターンとを含むMIDI情報を情報処理装置720に送信する。制御部721は、入出力インターフェース部723を用いてリズム入力装置710からMIDI情報を受信すると、図17に示すフローに沿って処理を実行する。
まず、制御部721は、受信したMIDI情報に含まれる、ユーザにより入力されたBPMを識別する情報を取得すると、これをRAMに読み出された自動伴奏テーブルに記録すべき自動伴奏データのBPMとして記憶させる(ステップSa1)。次に、制御部721は、受信したMIDI情報に含まれる、ノートナンバーやチャンネル情報といったユーザにより選択されたパートを識別する情報と、自動伴奏DB7221に含まれるパートテーブルとに基づいて、ユーザにより指定されたパートのパートIDを取得すると、これをRAMに読み出されたパートテーブルと自動伴奏テーブルに記録すべきパートのパートIDとして記憶させる(ステップSa2)。ここでは、ユーザが、ベース入力音域鍵盤711aを用いてリズムパターンを入力し、制御部721が、図22(a)に示されるようにパートIDとして「01」を取得し、これをRAMに記憶させたとする。
次に、制御部721は、受信したMIDI情報に含まれる、ユーザにより指定された楽器種類を識別する情報と、自動伴奏DB7221に含まれる楽器種類テーブルとに基づいて、ユーザにより指定された楽器種類の楽器種類IDを取得すると、これをRAMに読み出された楽器種類テーブルと自動伴奏テーブルに記録すべきパートの楽器種類IDとして記憶させる(ステップSa3)。ここでは、ユーザが、操作部725を用いて楽器種類に「エレキベース」を指定することで、制御部721が、図22(b)に示されるように楽器種類IDとして「002」を取得し、これをRAMに読み出された自動伴奏テーブルに記録すべきパートの楽器種類IDとして記憶させたとする。次に、制御部721は、受信したMIDI情報に含まれる入力リズムパターンを取得すると、これをRAMに記憶させる(ステップSa4)。次に制御部721は、自動伴奏DB7221から、ユーザが指定したパート及び楽器種類について、入力リズムパターンと同一又は類似したリズムパターンを持つ楽音データを検索する(ステップSa5)。ステップSa5の詳細について、次に図18を用いて説明する。
図18は検索処理のフロー図である。初めに、制御部721は、リズムパターンテーブルに記述された全てのリズムパターンを用いて、リズムカテゴリ毎にオンセット時刻間隔の分布を計算する(ステップSb1)。ここで、リズムパターンレコードにおけるリズムパターンデータには、1小節の長さを1として正規化された各構成音の発音開始時刻、すなわちオンセット時刻が含まれている。ここでオンセット時刻間隔とは、時間軸上で隣り合うオンセット時刻同士の間隔であり、0から1の間の数値で表される。また、ここにおいて、上述したオンセット時刻間隔の分布は、1小節を48の時刻で均等に区切った場合に、各々の時刻に相当するオンセット時刻間隔の個数で表される。なお、本実施形態において1小節を48の時刻で区切る理由は、4拍子系のリズムを前提として一拍を12等分すれば、8分、8分3連、16分といった複数の異なるリズムカテゴリを識別するのに適した分解能となるためである。ここで、分解能とは、シーケンサや、本実施形態におけるアプリケーションプログラムのようなシーケンスソフトで表現できる、最も短い長さの音符のことである。本実施形態における分解能は、1小節で48であるため、1つの四分音符を12に分割可能な設定となっている。
なお、以降の説明では、入力リズムパターンに対する説明においても、リズムパターンレコードと対応する意味で、「オンセット時刻間隔」という言葉を用いる。つまり、入力リズムパターンにおいては、時間軸上で隣り合うオンセット時刻同士の間隔が、オンセット時刻間隔に相当する。ステップSb1で求められるリズムカテゴリ毎のオンセット時刻間隔の分布は、後述するステップSb3で求められる入力リズムパターンにおけるオンセット時刻間隔の分布との、比較対象となるものである。処理フローの冒頭において、ステップSb1の計算を行うのは、処理の対象となるリズムパターンレコード及びリズムカテゴリが変更されることがなく同一である場合、ステップSb1で求められるオンセット時刻間隔の分布は一定であって、一度計算で求めてしまえば、その後計算をやり直す必要がなくなるためである。従って、ステップSb1における計算は、情報処理装置720の電源がONされたときや、検索処理の起動時に行われるようにしてもよい。また、ステップSb1で求められるオンセット時刻間隔の分布についてのデータを、制御部721が、予め計算してROM等に記憶しておくことで、検索処理の起動時に上記データを読み込むようにしてもよい。
ここで、具体的なオンセット時刻の数値を用いて、ステップSb1におけるオンセット時刻間隔の分布を計算する方法を説明する。一例として、以下の(a)で表される8分のリズムパターンが、リズムパターンレコードにおけるリズムパターンデータに記述されていたとする。
(a)0,0.25,0.375,0.5,0.625,0.75,0.875
制御部721は、(a)のリズムパターンから、以下の(b)で表されるオンセット時刻間隔を算出する。
(b)0.25,0.125,0.125,0.125,0.125,0.125
次に制御部721は、(b)で算出された各々のオンセット時刻間隔に48を乗算し、さらに0.5を加算した数値の小数点以下を切り捨てる処理(クオンタイズという)を行うことで、以下の(c)で表す数値群を算出する。
(c)12,6,6,6,6,6
ここでクオンタイズとは、制御部721が、各オンセット時刻間隔を分解能にあわせて補正することを意味している。クオンタイズを行う理由は、以下のとおりである。リズムパターンテーブルにおけるリズムパターンデータに記述された発音開始時刻は、分解能(ここでは48)に従ったものとなっている。よって、オンセット時刻間隔を用いてリズムパターンテーブルを検索する際には、検索に用いるオンセット時刻間隔も分解能に従ったものでないと、検索の精度が低くなってしまう。このような理由により、制御部721は、(b)で表される各々のオンセット時刻間隔に対して、上述したクオンタイズの処理を施す。
上述の例に従って、例えば以下のような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
制御部721は、上記(A)〜(F)に対して上述したのと同様の計算方法を用いて、リズムカテゴリ毎にオンセット時刻間隔の分布を求める。図19(a)は、制御部721がリズムカテゴリ毎に計算したオンセット時刻間隔の分布を、分布表に割り当てたものである。
ステップSb1の次に、制御部721は、RAMに記憶されたパートID及び楽器種類IDを用いて、リズムパターンテーブルを検索する(ステップSb2)。なお、楽器種類の指定は必須ではなく、楽器種類がユーザにより指定されなかった場合、制御部721は、パートIDのみに従ってリズムパターンテーブルを検索する。以降の処理において、制御部721は、ステップSb2における検索結果のリズムパターンレコードを処理の対象とする。
ここで、上述したように、入力リズムパターンには、1小節の長さを1として正規化されたオンセット時刻が含まれている。ステップSb2の次に、制御部721は、RAMに記憶された入力リズムパターンにおける、オンセット時刻間隔の分布をステップSb1と同様の方法で計算する(ステップSb3)。ここにおいて、入力リズムパターンは、上述した(a)のようなものであり、(b)で算出された各々のオンセット時刻間隔にクオンタイズ処理が施されることで、入力リズムパターンについて、(c)のような数値群が算出されるものとする。図19(b)は、制御部721が入力リズムパターンについて計算したオンセット時刻間隔の分布を、分布表に割り当てたものである。
ここで、図19(a)〜図19(c)に示された分布表を参照しながらオンセット時刻間隔の分布についてさらに説明を行う。
図19(a)は入力リズムパターンにおけるオンセット時刻間隔の分布表である。図19(a)において、横軸は、1小節を48の時刻で区切ったときの時刻の間隔(時刻間隔という)を表し、縦軸は、横軸で表された各々の時刻間隔に相当する、クオンタイズされたオンセット時刻間隔の個数の比率を表す。図19(a)では、入力リズムパターンに基づく、上述した(c)の数値群が分布表に割り当てられている。この個数比率は、合計が1となるように制御部721によって正規化されている。図19(a)では、クオンタイズされたオンセット時刻間隔である(c)の数値群において、最も個数が多い「6」の時刻間隔に分布のピークがあることが分かる。
ステップSb3の次に、制御部721は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布表(ここでは図19(a))と、入力リズムパターンに基づくオンセット時刻間隔の分布表(ここでは図19(b))とを用いて、両者の類似度を表す距離(以降において単に類似度距離という)を算出する(ステップSb4)。図19(c)は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布(図19(b))と、入力リズムパターンに基づくオンセット時刻間隔の分布(図19(a))との差分を表す分布表である。ステップSb4における類似度距離の算出方法は以下のようなものである。まず、制御部721は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布表と、入力リズムパターンに基づくオンセット時刻間隔の分布表とにおいて、両分布表における同一の時刻間隔毎に、個数比率の差分の絶対値を求める。そして制御部721は、各リズムカテゴリについて、上述の時刻間隔毎に求めた絶対値を全て足し合わせた値の平方根を算出する。この算出された平方根で表される値が類似度距離となる。この類似度距離は、値が小さいほど類似度が高く、値が大きいほど類似度が低いことを表す。図19(c)では、8分のリズムカテゴリにおいて、図19(a)と図19(b)とに基づく個数比率の差分が最も小さい。これは、上述の算出方法に従って、分布表に表された8分、16分、8分3連のリズムカテゴリのうち、8分のリズムカテゴリと入力リズムパターンとが、最も上記類似度の距離が小さいことを表している。
ステップSb4の次に、制御部721は、リズムパターンテーブルに記述されたリズムカテゴリのうち、類似度距離が最も小さいリズムカテゴリを、入力リズムパターンが該当するリズムカテゴリである、と判定する(ステップSb5)。つまり、ここでは制御部721は、入力リズムパターンのリズムカテゴリが8分であると特定することになる。このように、制御部721は、ステップSb2〜ステップSb5を通じて、入力リズムパターンの該当する可能性が高いリズムカテゴリを特定する。
次に制御部721は、リズムパターンテーブルに記述されたリズムパターンのうち、入力リズムパターンに対して、類似の度合いが高いリズムパターンを特定するために、リズムパターンテーブルに記述された全てのリズムパターンと入力リズムパターンとのズレの大きさを計算する(ステップSb6)。ここで、ズレの大きさとは、入力リズムパターンにおける各オンセット時刻と、リズムパターンテーブルに記述された各々のリズムパターンにおける各オンセット時刻とがどれだけ離れているかを表す。つまり、上記ズレの大きさが小さい程、入力リズムパターンとリズムパターンテーブルに記述されたリズムパターンとにおける類似の度合いが高いこととなる。
また、ステップSb5までの処理において、入力リズムパターンに該当する可能性が高いリズムカテゴリを特定する一方で、ステップSb6の処理において全てのリズムカテゴリに属するリズムパターンレコードを計算の対象としている。その理由は、以下のとおりである。リズムパターンレコードに含まれるリズムパターンデータにおいては、1小節内に8分のオンセット時刻間隔と16分のオンセット時刻間隔がほぼ同数ある場合等のように、どちらのリズムカテゴリに属するのかが紙一重であるものが存在する。このような場合に、ステップSb5において仮に入力リズムパターンに対するリズムカテゴリが正しく判定されなかったとしても、ステップSb6において全てのリズムカテゴリに属するリズムパターンレコードを計算の対象とすることで、ユーザが意図していたリズムパターンが正しく検出される可能性が高くなる。
ここで、ステップSb6における処理を、図20を参照して説明する。図20は、リズムパターンにおけるズレの計算を説明するための模式図である。図20で示されるように、入力リズムパターンをJとして、リズムパターンレコードに記述されたリズムパターンをKとすると、JとKにおけるズレの大きさの計算は、以下の手順で行われる。
(1)制御部721は、入力リズムパターンJにおける各オンセット時刻を基準として、リズムパターンKにおける最も近いオンセット時刻との時刻差の絶対値を算出する(図20における(1))。
(2)制御部721は、手順(1)で算出した各絶対値の積分値を算出する。
(3)制御部721は、リズムパターンKにおける各オンセット時刻を基準として、入力リズムパターンJにおける最も近いオンセット時刻との時刻差の絶対値を算出する(図20における(3))。
(4)制御部721は、手順(3)で算出した各絶対値の積分値を算出する。
(5)制御部721は、手順(2)で算出した積分値と手順(4)で算出した積分値との平均値を、リズムパターンJとリズムパターンKとのズレとして算出する。
なお、実施形態においては、充分な数のリズムパターンを用意していないため、図20(3)に記載されているように、制御部721は、時刻差の絶対値が基準間隔(ここでは8分なので0.125)より大きいものは積分値を算出する際に用いないという処理を行っているが、この処理は省略することも可能である。制御部721は、リズムパターンテーブルに含まれる全てのリズムパターンレコードにおけるリズムパターンについて、上述した手順(1)〜(5)の計算を行う。
次に、制御部721は、ステップSb4でリズムカテゴリ毎に算出した類似度距離と、ステップSb6で算出したリズムパターンのズレとを乗算する。そして制御部721は、リズムパターンテーブルに含まれる、RAMに記憶されたパートIDを持つ全てのリズムパターンレコードについて、入力リズムパターンとの距離を算出する(ステップSb7)。ここで上述したように、入力リズムパターンをJとし、任意のリズムパターンレコードにおけるリズムパターンをKとしたとき、ステップSb7を式で表すと以下のようになる。
JとKのリズムパターンの距離=(Jと、Kが所属するリズムカテゴリとの類似度距離)×(JとKとのリズムパターンのズレ)
ここで、JとKのリズムパターンの距離が小さいほど、KのリズムパターンがJの入力リズムパターンに類似している度合いが高いことを意味している。つまりここでは、JとKのリズムパターンの距離が、類似の度合いを表している。以降、このリズムパターンの距離が小さいことを、「類似の度合いが高い」ということがある。なお、この計算に際して、基本的には、ステップSb5で入力リズムパターンが該当すると判定されたリズムカテゴリ内から、検索結果が出力されるように、以下のような処理が行われる。制御部721は、ステップSb5で判定されたリズムカテゴリと、リズムパターンKの属するリズムカテゴリとが一致するかを判定し、一致しない場合には、上記計算式において予め定められた定数(例えば0.5)を加算する。このようにすれば、ステップSb5で判定されたリズムカテゴリと一致しないリズムカテゴリに属するリズムパターンレコードについては、リズムパターン同士の距離が大きく算出されるため、ステップSb5で入力リズムパターンが該当すると判定されたリズムカテゴリ内から、検索結果が出力されやすくなる。
そして、制御部721は、選択されたパートのリズムパターンテーブルと入力リズムパターンとに基づいて、入力リズムパターンとの距離が小さいリズムパターンデータを有する楽音データから、上記距離が小さい順番で所定の範囲に入る個数だけの楽音データ群を検索結果として取得し、これらをRAMに記憶させると(ステップSb8)、図18の処理を終了する。この所定の範囲は、パラメータとして記憶部722に記憶されており、ユーザが操作部725を用いて変更可能としてもよい。ここで、制御部721は、ユーザによって入力されたBPMに近いBPMを持つ楽音データ群のみを検索結果として出力するためのフィルタリング機能を備えており、ユーザは、操作部725を介して上記フィルタリング機能を任意にON/OFFすることが可能である。上記フィルタリング機能がONに設定されている場合、ステップSb8において制御部721は、入力BPMとその差が予め決められた範囲内に収まらないBPMを有する楽音データ群を、検索結果から除外する。具体的には、例えば、ステップSb8において制御部721は、入力BPMの(1/21/2)倍から21/2倍のBPMを有する楽音データ群のみを検索結果として取得し、それ以外の楽音データを検索結果から除外する。なお、上述した(1/21/2)倍及び21/2倍という係数は一例に過ぎず、その他の値であってもよい。
制御部721がこのようなフィルタリング機能を備える理由は、以下のようなものである。本実施形態において制御部721は、検索結果の楽音データが示す楽音をユーザによって入力又は指定されたBPMで再生させることが可能である。このとき、制御部721によって、楽音データの本来のBPMとは大幅に異なるBPMがユーザにより入力されると、楽音データが示す楽音が音声出力部726によって放音される際に、ユーザに違和感を与えてしまうことがある。例えば、ユーザが、BPM240のテンポでリズムパターンを入力し、制御部721が上記リズムパターンを持つ楽音データ群を検索した結果、検索結果の楽音データ群に含まれる楽音データが示す本来のBPMが60であった場合を考える。この場合、検索結果に含まれる楽音データに基づく楽音は、本来のBPMの4倍のBPMで音声出力部726によって放音されることになるため、音が本来のBPMの4倍速で早送り再生された状態となり、結果としてユーザに違和感を与えることとなる。また、例えば楽音データがWAVEやmp3などのオーディオファイルである場合、本来のBPMとユーザによって指定されたBPMとの差が大きくなるほど、再生時の音質は劣化する。このような問題を解決するために、制御部721は、フィルタリング機能を備えているわけである。
再び図17に戻る。ステップSa5の検索処理を終えると、制御部721は、ステップSb8でRAMに記憶された楽音データ群を検索結果として表示部724に表示させる(ステップSa6)。
図21は、楽音データについての検索結果の一例を表した模式図である。図21は、ユーザがベース入力音域鍵盤711aを用いて入力したリズムパターンに基づいて、制御部721が検索結果として取得した楽音データ群が、表示部724に表示された場合を表している。表示部724の上部には、BPM指定スライダ751、キー指定鍵盤752及びコード指定ボックス753が表示される。BPM指定スライダ751は、例えば所定の長さを有する溝と、溝に設けられたつまみと、BPM表示欄とで構成される。ユーザが、操作部725を用いてつまみの位置を変更させると、制御部721は、変更後のつまみの位置に応じたBPMをBPM表示欄に表示させる。図21においては、溝の左端から右端へ向けてつまみの位置が移動されるにつれてBPM表示欄に表示されるBPMが早いものとなり、溝の右端から左端へ向けてつまみの位置が移動されるにつれてBPM表示欄に表示されるBPMが遅いものとなる。制御部721は、BPM指定スライダ751を用いて指定されたBPM(指定BPMという)で、検索結果からユーザにより選択された楽音データ群に含まれる楽音データが示す楽音を再生させる。すなわち、制御部721は、検索結果からユーザにより選択された楽音データ群に含まれる楽音データのBPMを、指定されたBPMと同期させる。なお、情報処理装置720が外部機器と同期を取って接続している場合、外部機器において指定されたBPMを情報処理装置720が受信して、受信したBPMを指定BPMとして用いるようにしてもよい。また、この場合、BPM指定スライダ751を用いて指定したBPMを外部機器に送信可能としてもよい。
キー指定鍵盤752は、所定の音域(ここでは1オクターブ)が割り当てられた鍵盤を模した画像である。キー指定鍵盤752における各鍵には、対応する音高が割り当てられている。ユーザが、操作部725を用いて或る鍵を指定すると、制御部721は、指定された鍵に割り当てられた音高を取得し、これを指定キーとしてRAMに記憶させる。制御部721は、キー指定鍵盤752を用いて指定されたキーで、検索結果からユーザにより選択された楽音データ群に含まれる楽音データが示す楽音を再生させる。すなわち、制御部721は、検索結果からユーザにより選択された楽音データ群に含まれる楽音データのキーを、指定されたキーと同期させる。なお、情報処理装置720が外部機器と同期を取って接続している場合、外部機器において指定されたキーを情報処理装置720が受信して、受信したキーを指定されたキーとして用いるようにしてもよい。また、この場合、キー指定鍵盤752を用いて指定したキーを外部機器に送信可能としてもよい。
コード指定ボックス753は、ユーザにより指定されたコードの入力を受け付ける入力ボックスである。ユーザが、操作部725を用いて、例えば、「Maj7」といった和音種類を指定して入力すると、制御部721は、入力された和音種類を指定コードとしてRAMに記憶させる。制御部721は、検索結果から楽音データ群に含まれる楽音データのうち、コード指定ボックス753を用いて指定された和音種類をもつ楽音データを検索結果として取得する。コード指定ボックス753は、プルダウン形式としてコード名称をリスト表示させてフィルタリングしてもよい。なお、情報処理装置720が外部機器と同期を取って接続している場合、外部機器において指定されたコードを情報処理装置720が受信して、受信したコードを指定されたコードとして用いるようにしてもよい。また、この場合、コード指定ボックス753を用いて指定したコードを外部機器に送信可能としてもよい。また、入力形態として、表示部上に和音種類毎にボタンを表示させ、それをクリックして指定するようにしてもよい。
表示部724の下部には、検索結果の楽音データ群が一覧として表示される。ユーザは、検索結果の一覧において、それぞれ異なるパートを表すタブ(パートタブという)のうちいずれかを指定することで、各パートについて検索結果の楽音データ群の一覧を表示させる。ドラムスのパートタブが指定された場合、ユーザが操作部725(ここではキーボード)を用いて、上、右、左といった矢印が割り当てられたキーを押下することで、制御部721は、バスドラム、スネアドラム、ハイハット及びシンバルといった、ドラムスを構成する複数のパートのうち、押下されたキーと対応したパートの検索結果を表示させる。パートタブのうち再生履歴と表示されるタブには、検索結果のうち、それまでにユーザにより選択されて再生された楽音データを有する楽音データ群が表示される。なお、上述したタブのほかに、ユーザが気にいったパート毎の波形データの組み合わせを登録したものである自動伴奏データを一覧表示するために、「自動伴奏データ」という名前のタブを追加し、登録した自動伴奏データを検索できるようにしてもよい。
検索結果において、項目「順位」は、検索結果の楽音データ群について類似度の高い順位を表す。項目「ファイル名」は、楽音データ群が有する楽音データのファイル名を表す。項目「類似度」は、入力リズムパターンと、検索結果である楽音データ群のそれぞれの楽音データが有するリズムパターンとの間の距離を表している。すなわち、「類似度」で表される数値が小さいほど、該距離が短く、入力リズムパターンに類似する度合いが高いことを意味している。制御部721は、検索結果の表示の際に、類似度の小さい順に楽音データの名前とそれに関連する情報を並べて表示させる。「キー」は、その楽音データを音高変換するときの基準の音高を表す。なお、「キー」は、リズム楽器に相当するパートのデータでは、未指定として表示される。「ジャンル」は、楽音データのそれぞれが所属するジャンルを表す。「BPM」は、楽音データのそれぞれに含まれるBPMであって、楽音データが示す楽音の本来のBPMを表す。「パート名」は、楽音データ群に含まれるパートIDにより識別されるパートの名称である。ここにおいてユーザは、「キー」、「ジャンル」及び「BPM」の少なくともいずれか1の項目を用いて、この検索結果をフィルタリングして表示させることが可能である。
再び図17に戻る。ユーザが、検索結果として表示された楽音データ群のうち1つを選択し、例えばマウスを用いてダブルクリックを行うと、制御部721は、ユーザにより選択された楽音データを、作成中の自動伴奏データの一つのパートのデータとして特定し、RAMの自動伴奏データテーブルの該当するパートの列に情報を記録する(ステップSa7)。このとき制御部721は、検索結果の表示画面において、選択されてダブルクリックが行われた楽音データの背景色を、選択されていない楽音データ群の背景色と異ならせて表示する。
次に制御部721は、小節線クロックに基づくデータ位置から、ステップSa7で特定されて自動伴奏テーブルに登録されている各パートの楽音データを読み出して、それぞれの楽音データに対応付けられたBPMとユーザにより指定されたBPMとの関係に基づく速度となるように、すなわち、特定された楽音データのBPMを指定されたBPMに同期させるように、この楽音データが示す楽音にタイムストレッチを施して、必要に応じてピッチ変換を施して再生する(ステップSa8)。ユーザにより指定されたBPMは、初回検索時には入力BPMが用いられ、検索結果に対してユーザがBPM指定スライダ751を用いてBPMを指定した場合には、この指定BPMが用いられる。なお、小節線クロックに基づくデータ位置に限らず、制御部721が、小節線の先頭から楽音データを読み出すようにしてもよい。
図22は、BPMの同期処理を説明する模式図である。タイムストレッチについては、周知の方法が用いられればよいが、例えば次のようにしてもよい。楽音データがWAVEやmp3のようなオーディオファイルの場合、この楽音データが有するBPMとユーザにより指定されたBPMとの差が大きくなるにつれて、再生時の音質が劣化する。これに対して、制御部721は次のような処理を行う。「(楽音データが有するBPM×(1/21/2))<(ユーザにより指定されたBPM)<(楽音データが有するBPM×21/2)」の場合、制御部721は、ユーザにより指定されたBPMとなるように楽音データにタイムストレッチを施す(図22(a))。また、「(ユーザにより指定されたBPM)<(楽音データが有するBPM×(1/21/2))」の場合、制御部721は、ユーザにより指定されたBPMの倍のBPMとなるように楽音データにタイムストレッチを施す(図22(b))。また、「(楽音データが有するBPM×21/2)」<(ユーザにより指定されたBPM)」の場合、制御部721は、ユーザにより指定されたBPMの半分のBPMとなるように楽音データにタイムストレッチを施す(図22(c))。このようにすることで、楽音データが有するBPMとユーザにより指定されたBPMとの差が大きいことに起因して再生時の音質が劣化するような事態を少なくすることができる。上述の(1/21/2)や21/2といった係数は一例であり、他の値であってもよい。これにより、ユーザによる入力リズムパターンにおけるオンセット時刻とオフセット時刻との差が、ユーザによる押鍵時間が長いために大きくなったり、逆にユーザによる押鍵時間が短いために小さくなったりしたときに、タイムストレッチにより伸張する音の長さの変化を予め決められた範囲に収めることが可能となる。結果として、ユーザは、入力リズムパターンに対する検索結果に感じる違和感が少ないものとなる。
また、ユーザがキー指定鍵盤752を用いてキーを指定している場合、制御部721は、コードパートの楽音データが示す楽音を、この楽音データに対応付けられたキーと指定キーとの差に応じてピッチ変換させて、すなわち、特定された楽音データのキーを指定キーに同期させて再生させる。例えば、特定された楽音データに対応付けられたキーが「C」であり、指定キーが「A」であるような場合、特定された楽音データのピッチを上げる方法と下げる方法が考えられるが、ここでは、ピッチシフト量が少なく、音質の劣化を少なくすることが期待できるため、特定された楽音データのピッチを上げる方法を採用する。
図23は、キーテーブルを表す図である。キーテーブルは記憶部722に記憶されている。キーテーブルには、1オクターブを12音階で表した各キーの名称と、各キーに順番に割り振られたキーNoとが記述されている。制御部721は、ピッチ変換を行う際、キーテーブルを参照する。制御部721は、キーテーブルにおいて、特定された楽音データに対応付けられたキーに応じたキーNoから指定キーに応じたキーNoを減算した値を算出する。この値を、キー差分という。そして、制御部721は、「−6≦キー差分≦6」となる場合は、特定された楽音データを、その楽音の周波数が、「2の(キー差分/12)乗」となるようにピッチ変換する。また、制御部721は、「キー差分>7」となる場合は、特定された楽音データを、その楽音の周波数が、「2の((キー差分−12)/12)乗」となるようにピッチ変換する。また、制御部721は、「キー差分<−7」となる場合は、特定された楽音データを、その楽音の周波数が、「2の((キー差分+12)/12)乗」となるようにピッチ変換する。制御部721は、ピッチ変換を行った楽音データが示す楽音を音声出力部726から出力させる。上述の式は一例であり、再生時の音質が保障されるように予め決められればよい。
また、ユーザがコード指定ボックス753でコードを指定している場合、制御部721は、検索結果から選択された楽音データにおいて、指定されたコードに応じて音高変換された楽音データを再生させる。すなわち、制御部721は、特定された楽音データのコードを、指定されたコードに音高変換して再生する。
ステップSa8の次に、検索結果のうち別の楽音データがユーザにより選択されてクリックが行われると(ステップSa9;Yes)、制御部721は処理をステップSa7に戻す。この場合、制御部721は、新たに選択された楽音データを特定した後、作成中の自動伴奏データのパートとして特定し(ステップSa7)、ステップSa8の処理を行う。なお、楽音データは、自動伴奏データのパートとして規定のパート数に達するまで登録可能であって、例えば、ドラムパート(最大4チャンネル)、ベースパート(最大1チャンネル)、コードパート(最大3チャンネル)などのように、各パートに登録数の上限がある。例えば、ドラムパートを5つ指定しようとすると、それまで再生されていたドラムの楽音データの変わりに、新しく指定した楽音データが登録されることになる。
一方、ステップSa8の次に、検索結果のうち別の楽音データがユーザにより選択されることなく(ステップSa9;No)、ユーザにより検索処理の終了が指示されると(ステップSa10;Yes)、制御部721は、自動伴奏データテーブルと該テーブルによって指定されるファイルを一つのデータファイルにして、自動伴奏データのファイルとして記憶部722に記憶させて(ステップSa11)、処理フローを終了する。ユーザは、操作部725を用いて、記憶部722に記憶された自動伴奏データを任意に読み出させることが可能である。一方、ユーザにより検索処理の終了が指示されない場合(ステップSa10;No)、制御部721は処理をステップSa1に戻す。そして、ユーザが、異なるパートを選択してリズム入力装置710を用いてリズムパターンを入力して以降の処理が行われると、自動伴奏データの異なるパートの楽音データが登録される。そして、自動伴奏データを組み合わせるために必要とする数だけパートの登録が済んだ状態となるまでユーザが操作を行うことで、自動伴奏データが作成されることになる。また、既に再生されているパートの楽音データが示す楽音に重ねて、新たに選択されたパートの楽音データが示す楽音が出力される。このとき、制御部721は、小節線クロックに基づくデータ位置から楽音データを読み出すため、複数のパートについての楽音データの楽音が同期して出力されることとなる。
各パートの進行形態には、大別して以下のような3通りのバリエーションが考えられる。ここで、演奏進行タイミングの同期制御については、設定に従って検索された自動伴奏データをユーザが指定した後、小節単位、2拍単位、1拍単位、8分単位又は指定無しのうち、いずれかの基準を用いてクオンタイズされたタイミングで再生を開始することが可能である。1つ目の進行形態は、「節頭で同期させる」というものである。この場合、ユーザが各パートの伴奏を指定した後、小節線クロックが小節頭になった時点で対応する小節頭の位置から楽音データが再生される。2つ目の進行形態は、「拍頭で同期させる」というものである。この場合、ユーザが各パートの伴奏を指定した後、小節線クロックが拍頭になった時点で対応する拍位置から楽音データが再生される。3つ目の進行形態は、「同期しない」というものである。この場合、ユーザが各パートの伴奏を指定した直後に、対応する進行位置から楽音データが再生される。このような進行形態のバリエーションは、その設定内容が記憶部722に記憶されており、ユーザは操作部725を用いて任意の設定内容を読み出させることが可能である。
次に、ループ再生モード、演奏再生モード、及び演奏ループ再生モードの各々において、制御部721が行う処理の詳細について説明を行う。上述したように、ユーザは、入力リズムパターンを入力することで、検索結果のリズムパターンレコードに基づく音を出力させることが可能である(ループ再生モード及び演奏ループ再生モード)。また、上述したように、ユーザは、検索結果のリズムパターンレコードにおける構成音を用いて、リズム入力装置710に対して演奏操作を行い、この演奏操作によるフレーズの音を出力させることが可能である(演奏再生モード及び演奏ループ再生モード)。以下において、ループ再生モード、演奏再生モード、及び演奏ループ再生モードにおける各々の違いについて説明する。
ループ再生モードは、1小節からなる検索結果のリズムパターンレコードに基づく音を、小節線クロックが刻むBPMで、伴奏に合わせて制御部721が繰り返し再生対象として出力するモードである。ループ再生モードでは、図9に示すような処理が行われる。小節線クロックが、1小節内における検索結果のリズムパターンレコードの各構成音の発音開始時刻を越えると、制御部721は、この構成音を再生対象とする。ここで、小節線クロックは、その値が1に達する、すなわち1小節が経過すると、再び0の値となり、以降、0から1の間の値を繰り返す。従って、この小節線クロックの繰り返しの周期で、検索結果のリズムパターンレコードに基づく音が繰り返し再生対象として出力されることとなる。図9において、矢印で表されるように、小節線クロックが、検索結果のリズムパターンレコードの各構成音の発音開始時刻を越えると、制御部721が各構成音を再生対象とするようになっている。ループ再生モードは、主に、ユーザが、検索結果フレーズがどのような音量、音色、リズムパターンで構成されているかを確認する際に指定されるモードである。
演奏再生モードは、ユーザがリズム入力装置710を用いて演奏操作を行うと、ユーザが演奏操作を行った時刻に対応した、検索結果フレーズの構成音が制御部721によって再生対象とされるモードである。演奏再生モードでは、図6に示すような処理が行われる。演奏再生モードにおいては、1小節内において、ユーザが演奏操作を行った時刻においてのみ、音が再生対象とされる。つまり、演奏再生モードは、ループ再生モードとは異なり、ユーザがリズム入力装置710を用いて演奏操作を行わない時刻においては、音が出力されることはない。ここで、ユーザが、検索結果におけるリズムパターンと全く同一のリズムパターンで演奏操作を行った場合、検索結果のリズムパターンに基づく音そのものが出力されることとなる。演奏再生モードは、ユーザが、検索結果のリズムパターンにおける構成音を用いて、自ら演奏を継続的に行いたいときに指定されるモードである。
図6では、双方向の矢印で示された区間(「01」〜「06」)における矢印で示された時刻に、ユーザがリズム入力装置710を用いて演奏操作を行ったことを表している。演奏再生モードにおいては、ベロシティデータ、トリガーデータ、検索結果のリズムパターンの各構成音の発音開始時刻、及び各構成音の波形、という4つのパラメータが制御部721に入力される。このうち、ベロシティデータ及びトリガーデータは、ユーザによるリズム入力装置710を用いた入力リズムパターンに基づくものである。また、検索結果のリズムパターンの各構成音の発音開始時刻、及び各構成音の波形は、検索結果のリズムパターンレコードに含まれるものである。演奏再生モードにおいては、ユーザがリズム入力装置710を用いて演奏操作を行う度に、ベロシティデータ及びトリガーデータが制御部721に入力され、以下のような処理が行われる。制御部721は、トリガーデータのオンセット時刻と、検索結果のリズムパターンの各構成音の発音開始時刻との時刻差が最も小さい構成音の波形を、ベロシティデータの大きさに応じた音量を指定して、音声出力部726に出力する。
さらに、制御部721は、再生に使用され、操作のあったパートの楽音データについて、それぞれ操作に応じて変更された一時楽音データとして記憶部722に記憶させる。この一時楽音データは、ユーザによる操作の都度、制御部721によって、ユーザの操作に応じた波形のものに書き換えられる。そして、自動伴奏データの再生中に一時楽音データが記憶部722に記憶されているときは、最新の一時楽音データに基づいて再生がなされる。具体的には、一時楽音データが記憶部722に記憶されているときには、上述したステップSa11では、この一時楽音データとその他の選択されたパートの楽音データとに基づいて、自動伴奏データのファイルや楽音データが記録されることになる。このように、本実施形態によれば、ユーザは、自動伴奏データの再生中に演奏操作子を操作することにより、対応するパートの楽音データを編集して新しい自動伴奏データを作成することができる。
なお、ここにおいて、検索結果のリズムパターンの各構成音のアタック強度を制御部721に対する入力パラメータとして追加することで、以下のようにしてもよい。この場合、制御部721が、トリガーデータのオンセット時刻と検索結果のリズムパターンの各構成音の発音開始時刻との時刻差が最も小さい構成音の波形を、検索結果のリズムパターンにおける各構成音のアタック強度の大きさに対するベロシティデータの大きさに応じた音量を指定して、音声出力部726に出力するようにしてもよい。なお、トリガーデータが入力されなかった区間に対応する構成音の波形は、音声出力部726に出力されない。
次に、演奏ループ再生モードは、ループ再生モードと演奏再生モードを組み合わせた内容のモードである。演奏ループ再生モードにおいては、制御部721が、1小節毎に、ユーザによってリズム入力装置710を用いた演奏操作が行われたかどうかを判定している。演奏ループ再生モードでは、ユーザがリズム入力装置710を用いて演奏操作を行うまでは、制御部721は、検索結果フレーズに基づく音声を再生対象とする。つまり、この時点では、ループ再生モードと同じ動作である。そして、ユーザが、ある小節内において、リズム入力装置710を用いて演奏操作を行うと、この1小節の間は、制御部721は演奏再生モードと同じ動作に従って処理を行う。つまり、ユーザが演奏操作を行った時刻に対応した、検索結果のリズムパターンの構成音が制御部721によって再生対象とされて発音される。演奏ループ再生モードでは、一度でもユーザによって演奏操作が行われると、その後の小節で演奏操作が行われなかった場合、直前の小節においてユーザが入力した時刻に対応した、検索結果フレーズの構成音が制御部721によって再生対象とされて発音される。制御部721は、操作のあったパートの楽音データについて、それぞれ操作に応じて変更された一時楽音データとして記憶部722に記憶させる。この一時楽音データは、ユーザによる操作の都度、制御部721によってユーザの操作に応じた波形のものに書き換えられる。そして、自動伴奏データの再生中に一時楽音データが記憶部722に記憶されているときは、最新の一時楽音データに基づいてループ再生がなされる。上述したステップSa11では、この一時楽音データとその他の選択されたパートの楽音データとに基づいて、自動伴奏データのファイルや楽音データが記録されることになる。このようにして、本実施形態によれば、ユーザは、自動伴奏データの再生中に、演奏操作子を操作することにより、対応するパートの楽音データを編集して、新しい自動伴奏データを作成することができる。演奏ループ再生モードは、ユーザが、検索結果のリズムパターンにおける構成音を用いて自ら演奏を行うとともに、検索結果のリズムパターンの構成音を、入力したリズムパターンによってループ再生させたい場合に指定されるモードである。
このように、第3実施形態によれば、選択されたパートについてユーザが意図する楽音のパターンに基づいて検索された自動伴奏に関する楽音データのうち、少なくともユーザの意図する楽音のパターンに最も近い楽音データを特定することができる。このとき、ユーザは、複数の演奏操作子に対応付けられた各々異なるパートのうち任意のパートを選択してリズムパターンを入力するため、特定のパートについてのリズムパターンを思いついたときに、このパートについてのリズムパターンを入力して検索を行うことが可能となる。また、ユーザは、パートを選択してリズムパターンを入力してそれぞれのパートの演奏として登録するだけでよいため、直感的かつ効率良く自動伴奏データを検索することが可能となる。また、このようにして検索された自動伴奏データのうち、ユーザにより選択された自動伴奏データが同期して再生されるため、ユーザは、複数のパートによる合奏の自動伴奏音を直感的かつ効率良く得ることができる。
次に、本発明の第4実施形態について説明する。
<第4実施形態>
(スタイルデータの検索システム)
<構成>
第4実施形態は、音楽データ処理システムの例としてのスタイルデータを検索するシステムである。第4実施形態では、第3実施形態の音楽データ作成システム100において、自動伴奏DB7221が、スタイルデータを記憶するとともに、スタイルデータを検索するためのスタイルテーブルを有している。その他の構成については、第3実施形態と第4実施形態は同様である。
本実施形態におけるスタイルデータは、第3実施形態と同様に電子楽器やシーケンサなどに読み込まれ、いわゆる自動伴奏データと同様の役割を果たす。まず、以下に、本実施形態に係るスタイルデータ及びこれと関連するデータについて概略を説明する。
スタイルデータは、「Bebop01」、「HardRock01」又は「Salsa01」といったそれぞれ異なるスタイルについて集めた伴奏音データ片を、伴奏パターンの最小単位である「セクション」(1〜数小節)毎に、それぞれセクションデータとして纏めた伴奏音データ片の集合であり、記憶部722に記憶される。セクションには複数の種類があり、例えば、「イントロ」、「メイン」、「フィルイン」又は「エンディング」といった構成上の種類と、さらに各セクションにおける「ノーマル」、「バリエーション1」又は「バリエーション2」といったパターンの種類とが存在する。また、セクション毎のスタイルデータには、バスドラム、スネアドラム、ハイハット、シンバル、フレーズ、コード及びベースのそれぞれのパートについて、MIDIフォーマットに従って記述された演奏データの識別子(リズムパターンID)が含まれている。それぞれのスタイルデータの各セクションについて、制御部721により演奏データからパート毎にリズムパターンが解析され、解析結果に従った内容が、スタイルテーブルに登録される。例えば、ベースパートのデータについては、制御部721は、基準となる音高を用いて、演奏データにおける音高の時系列に沿った並びを解析し、解析結果に従った内容をスタイルテーブルに登録する。また、コードパートのデータについては、制御部721は、基準となる和音を用いて、演奏データにおいて用いられているコードを解析し、解析結果に従った内容として「Cmaj7」などのコード情報を、後述する和音進行情報テーブルに登録する。
本実施形態では、さらに各スタイルデータに対応して、セクション進行情報、和音進行情報を有する。セクション進行情報は、楽曲演奏の進行に従って、スタイルデータ中からセクションを時系列的に順次指定するための情報である。和音進行情報は、楽曲演奏の進行に従って演奏されるべき和音を時系列的に順次指定するための情報である。ここで、或る一つのスタイルデータが選択されると、選択されたスタイルデータと対応するセクション進行情報、和音進行情報に基づいて、セクション進行情報テーブルと和音進行情報テーブルとにデータがそれぞれ登録されることになる。なお、セクション進行情報を用いずに、ユーザの指定によって各セクションを選択するようにしてもよい。また、和音進行情報を用いずに、鍵盤711を用いて入力した入力音からコード情報を特定し、それらコード情報に基づいて伴奏を再生させるようにしてもよい。コード情報には、コードのルート音と、コードの種類を示す和音情報とが含まれる。
以下に、スタイルデータの構成を説明する。図24A及び図24Bは、スタイルデータに関するテーブルの一例である。これらのテーブルを構成する、スタイルテーブル、セクション進行情報、和音進行情報等について簡単に説明する。
図24Aは、スタイルテーブルの一例を表した図である。図24Aにおいては、スタイルテーブルの一例として、「ジャンル」が「Swing&JAZZ」である複数のスタイルデータが表されている。1件のスタイルデータは、「スタイルID」、「スタイル名」、「セクション」、「キー」、「ジャンル」、「BPM」、「拍子」、「ベースリズムパターンID」、「コードリズムパターンID」、「フレーズリズムパターンID」、「バスドラムリズムパターンID」、「スネアドラムリズムパターンID」、「ハイハットリズムパターンID」、及び「シンバルリズムパターンID」といった複数の項目からなる。「スタイルID」は、スタイルデータを一意に識別するための識別子である。「スタイル名」は、各スタイルデータを一意に識別する名称である。
スタイルテーブルにおいて、或るスタイル名を有するスタイルデータは、複数のセクションによって構成されている。セクションは、例えば、イントロ(I(ノーマル),II(バリエーション1),III(バリエーション2))、メイン(A(ノーマル),B(バリエーション1),C(バリエーション2),D(バリエーション3))、エンディング(1(ノーマル),2(バリエーション1),3(バリエーション2))といった複数の区間に分割され、それぞれの区間にはノーマルとバリエーションパターンのパターンを有している。つまり、「セクション」は、或るスタイル名を有するスタイルの各々が所属するセクションを表す。例えば、「Bebop01」というスタイル名のスタイルがユーザにより選択されて再生を指示されると、制御部721は、「Bebop01」というスタイル名を有するスタイルデータのうち、セクションがイントロのノーマルパターン「I」であるスタイルデータに基づく楽音を再生させ、その次にセクションがメインのノーマルパターン「A」であるスタイルデータに基づく楽音を所定回数、繰り返して再生させ、その後、セクションがエンディングのノーマルパターン「1」に基づく楽音を再生させる。このようにして、制御部721は、選択されたスタイルのスタイルデータに基づく楽音を、そのセクションの順序に従って、再生させる。「キー」は、各スタイルデータを音高変換させるときの基準となる音高を表す。図では、音名で記述されているが、特定のオクターブの中での音名を示すため、実質的に音高を表すことになる。「ジャンル」は各スタイルデータが所属する音楽のジャンルの名称を表す。「BPM」は、各スタイルデータに基づく音が再生される際のテンポを表す。「拍子」は、3拍子あるいは4拍子などの、各スタイルデータにおける拍子の種類を表す。なお、演奏中にバリエーションの切替え指示があると、対応するセクションのバリエーションパターンに演奏が切り替わり、パターンの最後まで演奏してノーマルパターンに戻る。
各々のスタイルデータには、各パートについて、パート毎のリズムパターンIDが1対1で対応付けて記述されている。例えば図24Aにおいて「スタイルID」が「0001」のスタイルデータは、「ベースリズムパターンID」が「010010101」である。これは、図15Aに示すリズムパターンテーブルにおいて、パートIDが「01」(ベース)であり、且つ、リズムパターンIDが「010010101」であって、「リズムパターンデータ」が「BebopBass01Rhythm.txt」、「楽音データ」が「BebopBass01Rhythm.wav」であるリズムパターンレコードと、「スタイルID」が「0001」のスタイルデータとが対応付けられていることを表す。各々のスタイルデータには、ベース以外のそれぞれのパートのリズムパターンIDについても、同様の対応付けが記述されている。ユーザにより或るスタイル名のスタイルデータが選択されて再生が指示されると、制御部721は、このスタイルデータの有する各パートのリズムパターンIDと対応付けられた楽音データを、同期させて再生させる。スタイルデータを構成するパート毎のリズムパターンIDの組み合わせは、相性のよいもの同士となるように予め決められている。ここで、リズムパターンレコード同士の相性がよいとは、例えば、異なるパートのリズムパターンレコードについて、お互いにそのBPMが近いとか、キーが同じであるとか、ジャンルが同じであるとか、拍子が同じであるといった事を基準にすればよい。
図24B(a)は、セクション進行情報テーブルを表す。
セクション進行情報テーブルは、楽曲演奏の進行に従って、スタイルデータ中からセクションを時系列的に順次指定するための情報を取りまとめたテーブルである。図24B(a)の構成例に示されるように、セクション進行情報は、スタイルID、スタイルを指定するスタイル指定データSt、セクションを指定するセクション情報Sni、各セクションの開始時間と終了時間との位置(通常、小節単位)を表すセクション開始タイミングデータTssi,Tsei(i=1,2,3,…)、及びセクション進行情報の最終位置を表すセクション進行エンドデータSeから構成することができ、例えば記憶部722に記憶される。つまり、各セクション情報Sniは、対応するセクションに関するデータの記憶領域を指定し、その前後にあるタイミングデータTssi,Tseiは、指定されたセクションによる伴奏の開始及び終了を指示する。従って、このセクション進行情報を用いて、伴奏スタイル指定データStで指定された伴奏スタイルデータの中から、タイミングデータTssi,Tsei及びセクション情報Sniの組合わせの繰返しで、セクションを順次指定することができる。
図24B(b)は、和音進行情報テーブルを表す。
和音進行情報テーブルは、楽曲演奏の進行に従って演奏されるべき和音を時系列的に順次指定するための情報を取りまとめたテーブルである。和音進行情報は、図24B(b)の構成例に示されるように、スタイルID、調情報Key、和音名Cnj、和音名Cnjを規定するための和音根音情報Crj、和音タイプ情報Ctj、各和音の開始及び終了時間位置(通常、拍単位)を表す和音開始及び終了タイミングデータTcsj,Tcej(j=1,2,3,…)、及び和音進行情報の最終位置を表す和音進行エンドデータCeから構成することができ、例えば、記憶部722に記憶される。ここで、各2つの情報Crj,Ctjで規定される和音情報Cnjは、セクション情報Sniで指定されたセクション中の和音演奏データに対して演奏すべき和音の種類を指示し、その前後にあるタイミングデータTcsi,Tceiは、この和音による演奏の開始及び終了を指示する。従って、この和音進行情報を用いると、調情報Keyにより調を指定した上、タイミングデータTcsj,Tcej及び和音情報Cnjの組合わせの繰返しによって、演奏すべき和音を順次指定することができる。
なお、セクション進行情報や和音進行情報のタイミングは、通常、小節単位或いは拍単位で設定されるが、必要に応じて他の任意のタイミングを採用することができ、例えば、クロックタイミング単位でタイミング設定し、楽曲の小節先頭からのクロックタイミング数を各種タイミングデータ等に使用することができる。また、或るセクションSni又は和音Cnjの終了後直ちに次のセクションSni+1或いは和音Cnj+1が開始する場合は、終了タイミングデータTsei,Tcei又は開始タイミングデータTss+1,Tcei+1の何れかを省略することができる。
セクション情報及び和音進行情報から所望の演奏音を得る手法を簡単に説明する。制御部721は、「セクション進行情報」中の伴奏スタイル指定データStと、順次読み出されるセクション情報Sniにより指定されたセクション(例えば、「BeBop01」の「Main−A」)の伴奏音データ片を読み出すと、これをRAMに記憶させる。ここで、各セクションに関するデータは、基準となる和音(例えば、「Cmaj」)に従って記憶されている。記憶部722には、上記基準となる和音に従った伴奏音データ片を、指定された任意の和音に従った音に変換するための変換規則を記述した変換テーブルが記憶されている。和音進行情報テーブルから順次読み出された任意の和音情報Cnj(例えば、「Dmaj」)が制御部721に供給されると、前記基準となる和音に従った伴奏音データ片は、この変換テーブルに基づいて、上記読み出された任意の和音情報Cnjに従った音に変換される。音声出力部726は、この変換された音を出力する。セクション進行情報から読み出されるセクション情報が変化する毎に、制御部721に供給される伴奏音データ片が変化するので、発音される音が変化する。一方、和音進行情報から読み出される和音情報が変化したときは、変換規則が変化し、その結果、発音される音が変化する。
<動作>
図25は、第4実施形態に係る情報処理装置720が行う処理のフロー図である。図25において、ステップSd0〜Sd5については、第3実施形態に係る図17のステップSa0〜Sa5と同様である。第4実施形態のステップSd6において、制御部721は、ステップSd5における検索結果のリズムパターンレコードと同一のパターンIDが、いずれかのパートのリズムパターンIDに設定されたスタイルデータを検索結果として表示させる。
図26は、スタイルデータの検索結果の一例を表す図である。図26(a)は、ユーザがコード入力音域鍵盤711bを用いて入力したリズムパターンに基づいて、制御部721が検索結果として出力したスタイルデータが、表示部724に表示された場合を表している。図26(a)〜図26(c)において、項目「類似度」は、入力リズムパターンと、検索結果であるスタイルデータのリズムパターンとの間の距離を表している。すなわち、「類似度」で表される数値が小さいほど、入力リズムパターンに類似する度合いが高いことを意味している。図26(a)に示されるように、「類似度」(ステップSb7で算出されたリズムパターン同士の距離)が小さい順番で、すなわち入力リズムパターンに対する類似の度合いが高い順番で、スタイルデータが表示されている。ここにおいてユーザは、「キー」、「ジャンル」又は「BPM」のすくなくともいずれか一の項目を用いて、この検索結果をフィルタリングして表示させることが可能である。また、ユーザがリズムパターンを入力した際のBPM、すなわち入力BPMが、検索結果の上部に入力BPM表示欄801として表示される。また、検索結果の上部には、検索結果のスタイルデータを入力BPMでフィルタリングするためのテンポフィルター802と、検索結果のスタイルデータを指定した拍子でフィルタリングするための拍子フィルター803とが表示される。なお、他にも、「コード」、「スケール」、「音色」を表示し、「コード」であればコードパートにおいて使用しているコードで、「スケール」であればスタイルデータを作成した調で、「音色」であれば各パートの音色で、それぞれでフィルタリングしてもよい。
制御部721は、ユーザが入力BPMに近いBPMを持つスタイルデータのみを検索結果として出力するためのフィルタリング機能を備えており、ユーザは、検索結果の上部に表示されるテンポフィルター802に対して、操作部725を介して任意に上記フィルタリング機能のON/OFFを設定することが可能である。具体的には、上述したように各スタイルデータには「BPM」が含まれているから、上記フィルタリング機能がONである場合、制御部721は、入力BPMの例えば(1/21/2)倍〜21/2倍のBPMを持つスタイルデータに関する情報のみを検索結果として表示する。なお、入力BPMに適用する上記係数の値(1/21/2)〜21/2は一例であり、その他の値であってもよい。
図26(b)は、図26(a)の状態から、ユーザが、フィルタリング機能をONにした状態を表している。図26(b)では、上述した(1/21/2)〜21/2という係数を用いて制御部721がフィルタリングを行っている。つまり、図26(b)では、入力BPMが100であるため、71〜141のBPMを持つスタイルデータが、フィルタリングの結果として表示されている。このようにすることで、ユーザは、入力BPMと近いBPMを持つスタイルデータを検索結果として得ることができ、検索結果に対してより納得感を持てるようになる。
また、ユーザは、操作部725を用いて拍子フィルター803に対して4/4拍子などの任意の拍子を表す情報を入力することで、入力された拍子情報と対応づけられたスタイルデータの情報が検索結果として表示されるように、フィルタリングを行うことが可能である。なお、指定された拍子のスタイルデータに絞りこむだけでなく、予めグルーピングされた関連する拍子も含めて抽出するようにしてもよい。例えば4拍子指定時だと4拍子のスタイルデータだけが抽出されるだけではなく、4拍子のメトロノーム上で入力が容易な、2拍子、8分の6拍子も含めて抽出されるようにしてもよい。
また、ユーザは、初めに或るパートを指定して、入力リズムパターンに近いリズムパターンを持つスタイルデータを検索(1回目の検索)した後に、初めに指定したパートと異なるパートを指定してリズムパターンを入力し、再び検索(2回目の検索)を行うことで、1回目の検索で出力されたスタイルデータが2回目の検索によって絞り込まれた検索結果を得ることが可能である。この場合の検索結果における「類似度」は、各々のスタイルデータにおいて、1回目の検索で指定されたパートにおける類似度と、2回目の検索で指定されたパートにおける類似度とが加算された値となっている。例えば図26(c)は、図26(a)の検索結果が表示された状態において、ユーザがパートにハイハットを指定してリズムパターンを入力した結果の表示内容を表している。また、図26(c)では、拍子フィルター803に入力された「4/4」の拍子情報を持つスタイルデータを検索結果として表示させる。図26(c)における「類似度」は、各々のスタイルデータにおいて、対象パートが「コード」である場合の類似度と、対象パートが「ハイハット」である場合の類似度とが加算された値となっている。なお、図26においては、「第1検索パート」及び「第2検索パート」という項目で表されるように、2つのパートを用いて検索可能なことを示しているが、検索の際に指定できるパートの数はこれに限ったものではない。また、ユーザが、或るパートを指定して検索を行った後に、初めに指定したパート(第1検索パート)と異なるパート(第2検索パート)を指定してリズムパターンを入力した場合、制御部721は、第1検索パートを用いた検索結果に関わらず、第2検索パートのみを用いた検索結果を出力(上書き検索という)するようにしてもよい。このような絞り込み検索と上書き検索とは、情報処理装置720の操作部725を介して、ユーザにより切り替え可能としてもよい。
また、複数の異なるパートが指定された場合の検索方法は、上述した内容に限らない。例えば、ユーザが、異なる複数のパートを同時に指定して演奏操作を行った場合、次のようにすればよい。制御部721は、ユーザにより指定された各パートのパートIDを持つリズムパターンレコードと、当該パートの入力リズムパターンとに基づいて、両者の類似度を各々算出する。次に制御部721は、指定された各パートのリズムパターンレコードについて算出された類似度を、上記リズムパターンレコードと対応付けられたスタイルデータごとに加算する。そして表示部724は、加算後の類似度が最も小さい、すなわち最も類似しているスタイルデータから昇順で表示する。例えばユーザが、バスドラムとスネアドラムのパートについて同時に演奏操作を行ってリズムパターンを入力した場合、制御部721は、バスドラムの類似度とスネアドラムの類似度をそれぞれ算出すると、スタイルデータごとに両者を加算する。このようにすれば、ユーザは、複数のパートを同時に指定して、意図するリズムパターンとの類似度が決められた条件を満たすようなリズムパターンで構成されたフレーズを持つスタイルデータを検索することができる。
図26(a)〜(c)のいずれかにおいて、操作部725を用いてユーザが任意のスタイルデータを選択すると、制御部721は、ユーザにより選択されたスタイルデータを特定し(ステップSd7)、特定したスタイルデータの構成表示画面を表示部724に表示させる。
図27は、スタイルデータの構成表示画面の一例を表す図である。ここでは、ユーザが、検索結果からスタイル名が「Bebop01」であるスタイルデータを選択したものとする。構成表示画面の上部には、選択されたスタイルのスタイル名、キー、BPM及び拍子が表示される。構成表示画面の中央には、セクションを示すタブ(セクションタブという)401が表示されるとともに、各タブが示すセクションにおける各パートの情報がそれぞれトラックに展開されて表示される。各パートの情報には、それぞれのリズムパターンレコードにおけるBPM、リズムカテゴリ及びキーが表示される。図27において横軸は時間軸を表し、図において左から右に向かって時間が進行することを表す。また、タブで示されるセクションにおける各トラックに示される各パートのリズムパターンに基づいて、各構成音の発音開始時刻に相当する位置に、その画像の左端が対応するように所定の画像812が表示される。ここでは、この画像812は構成表示画面に対して上下に所定の幅を持った棒状の形状で表示される。ユーザが、操作部725を用いてセクションタブ811のうち任意のタブを選択すると、制御部721は、選択されたタブのセクションのスタイルデータに基づく楽音を再生する(ステップSd8)。なお、この画面では、図示しない操作子の操作によって、ユーザが作成したオリジナルのスタイルデータや、既存あるいはオリジナルのスタイルデータに含まれる演奏データを、登録、編集及び確認することも可能である。
情報処理装置720は、スタイルデータの構成表示画面において、図示しない操作子をユーザが操作することによる再生開始指示に基づいてスタイルデータの再生が可能である。その再生時の動作のモードとして、自動伴奏モード、差し替え検索モード及び追従検索モードの3種類を備えている。ユーザは、操作部725を用いることで、これらのモードを切り替えることが可能である。自動伴奏モードの場合、選択されたスタイルデータに基づく演奏データが再生されるとともに、ユーザは、リズム入力装置710や操作部725を用いて演奏操作を行うことが可能であり、演奏操作に基づく音が、選択されたスタイルデータに基づく楽音とともに出力される。このとき、制御部721はミュート機能を備えており、ユーザは、操作部725を用いて任意のパートについてミュート機能を働かせることで、このパートの演奏データが再生されないようにすることが可能である。この場合、ユーザは、ミュートさせていないパートを伴奏音源のように聴きながら、ミュートさせたパートについては自らが演奏操作を行うことが可能である。
また、差し替え検索モードの場合、図27で示される構成表示画面において、ユーザが、操作部725を用いて任意のパートを指定してリズム入力装置710に対してリズムパターンを入力すると、制御部721は、以下のような処理を行う。この場合、制御部721は、再生中のスタイルデータにおいて予め組み合わされた演奏データのうち、指定されたパートについて、入力されたリズムパターンに基づく検索結果から選択された演奏データに差し替える。このとき、ユーザが任意のパートを指定して、リズム入力装置710を用いてリズムパターンを入力すると、制御部721は指定されたパートについて上述した検索処理を行い、図21のような検索結果の画面を表示部724に表示させる。ユーザが検索結果から特定の一件を選択すると、制御部721は、再生中のスタイルにおいて、ユーザにより指定されたパートの演奏データを選択されたものに差し替える。そして、その差替えられた演奏データによって演奏がなされる。このようにすることで、ユーザは、検索結果から選択したスタイルのうち、所望するパートについて、自らの入力リズムパターンに基づく演奏データに差し替えて演奏することが可能となる。これにより、ユーザは、既に組み合わされたものに限らず、セクション毎、パート毎に自らの意図するリズムパターンを反映させたスタイルデータを得ることができるため、情報処理装置720を用いて、検索だけでなく作曲を行うことが可能となる。
また、追従検索モードの場合、ユーザが、ミュート機能を用いて、ミュートさせていないパートを伴奏音源のように聴きながら、ミュートさせたパートについて自ら演奏操作を行うと、制御部721は、演奏操作が行われたパートの入力リズムパターンと相性の良い演奏データを、演奏操作が行われていない各パートについて検索する。ここでリズムパターン同士の相性が良いとは、キー、ジャンル又は拍子が同じであるとか、入力BPMに対して予め決められた範囲内のBPMを有するといったことに基づいて、予め決められれば良い。制御部721は、演奏操作が行われたパートの入力リズムパターンと相性の良い演奏データのうち、類似度が最も小さい(すなわち最も類似している)ものを特定すると、これらを同期させて再生させる。このようにすれば、検索結果に対するユーザの納得感が低いものであっても、ユーザは、パートを指定してリズムパターンを入力することで、自らの入力したリズムパターンと相性の良いスタイルデータを再生させることが可能となる。
ステップSd8の次に、操作部725を用いてユーザが別のスタイルデータを選択すると(ステップSd9;Yes)、制御部721は、処理をステップSd7に戻す。この場合、制御部721は、新たに選択されたスタイルデータを特定し(ステップSd7)、特定したスタイルデータの再生画面を表示部724に表示させる。ステップSd8の次に、操作部725を用いてユーザが別のスタイルデータを選択することなく(ステップSd9;No)、検索処理の終了が指示されると(ステップSd10;Yes)、制御部721は処理を終了する。
このように、第4実施形態によれば、ユーザは、選択されたパートについて演奏操作によってリズムパターンを入力することで、特定のパートの楽音データに限らず、入力リズムパターンと類似するリズムパターンの楽音データと、これと相性の良い楽音データとが組み合わさったスタイルデータを得ることが出来る。また、ユーザは、検索結果のスタイルデータのうち、任意のパートの楽音データについて、最初に入力したのとは異なる入力リズムパターンと類似する楽音データに差し替えて演奏したり、そのデータを作成したりすることが可能である。これにより、ユーザは、情報処理装置720を用いて検索だけでなく作曲を行うことが可能となる。
<変形例>
以上の実施形態は次のように変形可能である。尚、以下の変形例は、特に実施形態を指定したものを除き、適宜組み合わせて実施しても良い。
<プレイバックモード及び構成音分割再生モード>
(変形例1)
第1実施形態及び第2実施形態において、ユーザがフレーズデータを再生させるときのモードとして、上述した内容以外に、楽音信号生成装置10がプレイバックモードと構成音分割再生モードとを備えるようにしてもよい。プレイバックモードは、ユーザがフレーズデータの再生開始位置を任意に指定可能なモードである。また、構成音分割再生モードでは、各構成音の単位でフレーズデータがフレーズデータベース202に含まれており、ユーザは、指定した構成音のみを再生させることが可能である。ユーザは、操作部400を用いて、再生時におけるプレイバックモード及び構成音分割再生モードを任意に選択することが可能である。ここで、プレイバックモードは、音信号の生成の形態のモードにおける第1のモードの一例である。また、構成音分割再生モードは、上記モードにおける第2のモードの一例である。また、操作部400は、音信号の生成の形態のモードを第1のモードと第2のモードとから選択する選択手段の一例である。
図28は、プレイバックモードにおける表示内容を表す模式図である。プレイバックモードでは、制御部100が、選択されたフレーズデータを表す波形の画像を表示部300に表示させる。図28(a)において、フレーズデータの波形が1小節分表示されている。図28において、フレーズデータの波形の図形上に表示される白抜きの棒は、小節線821を表す。小節線821は、時間の経過に伴い、楽音データの波形上を進行方向(ここでは右)に向かって移動する。1小節は0から1の間で正規化されており、小節線821は「1」の位置に到達すると、再び「0」の位置から「1」の位置へ向かって移動を繰り返す。ここで、例えば矢印822で示される位置をユーザが操作部400を用いて指定すると、制御部100は、指定された位置に小節線821を移動させて表示させるとともに、指定された位置に基づく開始位置からフレーズデータを読み出す。そして制御部100は、読み出したフレーズデータから楽音信号を生成し、生成した楽音信号に基づく音を再生させる。この結果、表示部300に表示される内容は図28(b)に示すようなものとなる。
また、プレイバックモードにおいて、ユーザが操作部400を用いて頭出し再生の指示を行うと、制御部100は、表示部300にその波形を表示させた楽音データを先頭から再生させる。このとき、例えば指示がボタンによって行われる場合、ユーザがボタンを長押しすると、制御部100は、フレーズデータにおいて発音開始時刻が最も早い構成音のデータから楽音信号を生成し、生成した楽音信号に基づく音を連続して繰り返し再生する。このほかに、例えば1小節が4拍で構成されるときに、ユーザの操作に応じて、2拍目の頭出しや3拍目の頭出しを可能としてもよい。また、例えば、表示された波形のうち任意の範囲をユーザが操作部400を用いて選択し、頭出し再生の操作が行われると、フレーズデータにおいて選択された範囲(例えば1拍目〜2拍目の区間)に相当する構成音が繰り返し再生される。また、操作子がターンテーブルのようなものである場合、制御部100は、ユーザがターンテーブルを用いて行った操作に基づいて、小節線821の表示位置を変更するとともに、変更後の小節線821の位置に基づく開始位置のフレーズデータから楽音信号を生成し、生成した楽音信号に基づく音を再生させる。プレイバックモードは、ユーザが、或るフレーズデータの音色を確認したり、先頭に位置する構成音を連続して再生させることで演奏を行ったりするときに用いられる。
次に、構成音分割再生モードについて説明する。構成音分割再生モードでは、制御部100は、選択されたフレーズデータの波形の画像を図5に示すような態様で表示部300に表示させる。図5において、フレーズデータの波形が1小節分表示されている。1小節は0から1の間で正規化されている。図5に示すフレーズデータの波形の画像は、構成音毎、すなわちフレーズデータを分ける区間毎に分割された画像(区間画像という)の組み合わせからなる。例えば、図5において、「t1」で示される構成音は、その発音開始時刻から次の構成音の発音開始時刻までの範囲、すなわち、小節線上において0.127〜0.373までの範囲の区間画像が割り当てられている。ユーザは、各構成音に割り当てられた区間画像を指定して、この構成音を再生させるような操作を行うことが可能である。
ユーザが、操作部400に設けられているホイールやボタンを利用して分割された構成音の位置を指定して、操作部400に設けられている再生指示ボタンを用いて再生指示をすると、制御部100は、トリガーデータを得る。制御部100は、本発明に係る第2の特定手段の一例である。制御部100は、トリガーデータに基づき指定された位置に基づく位置情報に対応する区間画像に割り当てられた構成音を特定すると、特定した構成音のみを抽出したフレーズデータから楽音信号を生成し、生成した楽音信号を一時記憶部105に記憶させる。これにより、ユーザは、構成音の発音開始時刻と多少ずれた位置を指定しても、所望する構成音を再生させることが可能となる。このとき、クリップノイズを防ぐために、構成音の波形の終端から所定の範囲についてフェードアウトさせる処理を施してもよい。そして、制御部100は、一時記憶部105に記憶された楽音信号を、再生させる。必要に応じて、再生指示ボタンとしてタップなどを利用して、操作時のベロシティデータを得られるようにし、一時記憶部105に記憶された楽音信号を、ベロシティデータの大きさに応じた音量で再生させてもよい。ここで、制御部100は、一時記憶部105に記憶された楽音信号を、フレーズデータにおいてこの構成音が本来有する強度に対するベロシティデータの大きさに応じた音量で再生させてもよい。
(変形例2)
第1実施形態及び第2実施形態において、各構成音の開始及び終了付近で楽音信号がそれぞれフェードイン、フェードアウトするように生成しても良い。詳細には、楽音信号生成装置10は、開始時刻においては構成音の振幅をほぼゼロとし、振幅を徐々に大きくして、予め定められた時間が経過した時刻において本来再生されるべき振幅となるようにしても良い。また、楽音信号生成装置10は、構成音を途中から、すなわち次の構成音の開始時刻から予め定められた時間だけ前の時刻から、振幅を徐々に小さくして、構成音の終了時刻においてほぼ振幅ゼロとなるようにしても良い。なお、ここでいう予め定められた時間とは、例えば、数msecから数十msecまでの範囲であり、この範囲でユーザが調整可能な構成が好ましい。このような楽音信号のフェードイン、フェードアウトについては、フレーズデータに予め施しても良いし、演奏再生中にリアルタイムで振幅を操作することによって実行しても良い。また、フェードイン、フェードアウトするか否かについては、上記時間調整とともに、操作部400への操作によってユーザに選択可能とさせる構成としても良い。
(変形例3)
第3実施形態及び第4実施形態では、ループ再生モード或いは演奏ループ再生モードにおいて1件のリズムパターンレコードが検索結果として出力されていたが、これに限らず、制御部721が、入力リズムパターンを基準として、一定以上の類似度を持つ複数のリズムパターンレコードを、類似度の高い順番に並び替えて検索結果として出力してもよい。このとき、検索結果として出力されるフレーズレコードの件数は、ROMに定数として記憶されていてもよいし、記憶部722に変数として記憶され、ユーザにより変更可能としてもよい。例えば検索結果として出力されるフレーズレコードの件数が5件である場合、各フレーズレコードのフレーズ楽音データの名称が5件分、表示部724にリスト形式で表示される。そしてユーザが選択したフレーズレコードに基づく音が、音声出力部726から出力される。
(変形例4)
第3実施形態及び第4実施形態において、楽器の種類が音高に幅のある楽器の場合、フレーズ楽音データにおける各構成音のキーと、外部音源を含む伴奏のキーが一致しない場合がある。このような場合に備えて、ユーザが操作部725を通じて操作を行うことで、制御部721が、フレーズ楽音データにおける各構成音のキーを変更可能としてもよい。また、このようなキーの変更は、操作部725を介して行われてもよいし、リズム入力装置710に設けられたフェーダー、つまみ、ホイール、ボタン等の操作子を介して行われてもよい。また、予め上記構成音のキーを表すデータを自動伴奏DB7221に記憶させておくことで、ユーザがキーを変更した場合に、制御部721が、変更後のキーが何かをユーザに告知するようにしてもよい。
(変形例5)
第3実施形態及び第4実施形態において、楽音データによっては、構成音の終了付近で波形の振幅(パワー)が0近くに収束されていないものがあり、この場合、構成音に基づく音声が出力された後に、クリップノイズが発生する場合がある。これを防ぐために、制御部721が、構成音の開始及び終了付近の一定範囲を自動でフェードイン又はフェードアウトする機能を有していてもよい。ここでユーザは、上記フェードイン又はフェードアウトを適用させるかどうかを、操作部725あるいはリズム入力装置710に設けられた何らかの操作子を介して選択可能である。
図29は、楽音データにおける各構成音に対して、フェードアウトが適用された場合を表す模式図である。図29に示されるように、“フェード”と矢印で示された箇所に、フェードアウトが適用されることで、該当する箇所の波形の振幅が徐々に小さくなり、構成音の終了時刻においては振幅がほぼ0となっている。なお、各構成音について、フェードアウトが適用される期間は、数msecから数十msec程度の範囲内で、ユーザにより調整可能である。また、このフェードアウトを適用する処理は、ユーザによる演奏操作の前処理として行われてもよいし、リアルタイムの処理、または後処理として行われてもよい。
(変形例6)
第3実施形態及び第4実施形態において、ユーザが演奏操作を行った結果であるフレーズを、制御部721が録音し、この録音した内容を、一般的に音源ループ素材で用いられているようなファイルフォーマットで出力可能としてもよい。例えば、楽曲制作において、ユーザ自らが欲するリズムパターンが自動伴奏DB7221に記憶されていない場合に、このように自身の演奏を記録する機能があると、ユーザは、欲していたものとイメージが近いフレーズ楽音データを手に入れることが可能となる。
(変形例7)
また、第3実施形態及び第4実施形態において、制御部721は、再生対象とする楽音データを1つに限らず、複数の楽音データを再生対象として、複数のフレーズを音声として重ねて出力可能としてもよい。この場合、例えば表示部724に複数のトラックが表示され、ユーザは各々のトラックに対して、それぞれ異なる楽音データ及び再生モードを割り当てることが可能である。これにより、例えばユーザは、トラックAにコンガの楽音データをループ再生モードで割り当てることでこれを伴奏とし、トラックBにおいてジャンベの楽音データを演奏再生モードで割り当てることで演奏を行う、といったことが可能となる。
(変形例8)
第3実施形態及び第4実施形態において、ユーザの演奏操作によって入力されたベロシティデータに対して、検索結果の楽音データにおける、上記ベロシティデータに紐付けられたトリガーデータと同じ時刻を持つ構成音(構成音Aとする)のアタック強度の大きさが極端に異なる(ここでは予め定められた閾値を超える場合とする)場合、以下のような処理が行われてもよい。上述のような場合、制御部721は、上記楽音データにおいて、入力されたベロシティデータにほぼ対応した大きさのアタック強度を持つ複数の構成音から、ランダムに選択した構成音と構成音Aを差し替える。ここでユーザは、上述した処理を適用させるかどうかを、操作部725あるいはリズム入力装置710に設けられた何らかの操作子を介して選択可能である。このようにすれば、ユーザは自らが行った演奏操作により近い出力結果を得ることが可能となる。
(変形例9)
第3実施形態においては、楽音データはWAVEやmp3といったファイルフォーマットからなるとしたが、これに限らず、例えばMIDI形式のようなシーケンスデータとしてもよい。この場合、記憶部722には、MIDI音源が記憶される。
この場合、記憶部722には、MIDIデータの形式でファイルが記憶され、音声出力部726に相当する構成はMIDI音源となる。特に第3実施形態及び第4実施形態において、楽音データがMIDI形式である場合、キーシフトやピッチ変換に際してタイムストレッチなどの処理が不要となる。従って、この場合、制御部721は、ユーザによりキー指定鍵盤752を用いてキーが指定されたときは、楽音データが表すMIDI情報のうちキーを示す情報を指定キーに変更する。また、この場合、リズムパターンテーブルにおいて、各リズムパターンレコードが複数のコードに応じた楽音データを有する必要がない。制御部721は、ユーザによりコード指定ボックス203を用いてコードが指定されたときは、楽音データが表すMIDI情報のうちコードを示す情報を、指定されたコードに変更する。このように、楽音データがMIDI形式のファイルであっても、上述した実施形態と同様の効果を奏することができる。また、第4実施形態においては、オーディオデータを使ったスタイルデータを利用してもよい。この場合、基本的な構成は、第2実施形態のスタイルデータと同様だが、各パートの演奏データがオーディオデータとして記憶されている点が異なるものである。また、MIDIとオーディオが組み合わされたスタイルデータを利用してもよい。
(変形例10)
第3実施形態及び第4実施形態においては、ユーザの演奏操作によるトリガーデータと自動伴奏DB7221に含まれるリズムパターンデータとの比較によって、制御部721が特定のリズムパターンレコードを検出していたが、これに限らず、制御部721は、ユーザの演奏操作によるトリガーデータ及びベロシティデータの双方を用いて自動伴奏DB7221を検索するようにしてもよい。この場合、同じリズムパターンを持つ楽音データが2つ存在した場合に、各構成音のアタック強度が、ユーザの演奏操作によるベロシティデータと、より近い楽音データが検索結果として検出される。このようにすれば、アタック強度についても、ユーザがイメージしていたものに近い楽音データが、検索結果として出力されることが可能となる。
=リズムパターン同士のズレの計算方法=
第3実施形態及び第4実施形態における、リズムパターン同士のズレの計算方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その計算方法のバリエーションを記載する。
(変形例11)
例えば、確実にリズムカテゴリが一致した検索結果が出力されるように、入力リズムパターンに該当するリズムカテゴリを判定した後、判定結果のリズムカテゴリに属するフレーズレコード又はリズムパターンレコードのみを対象として、リズムパターンのズレの計算(ステップSb6)、及びリズムパターン同士の距離の計算(ステップSb7)が行われるようにしてもよい。このようにした場合、計算量が少なくてすむため、情報処理装置720における負荷が下がるとともに、ユーザにとっての応答時間も短くなる。
<ズレが基準より小さいものはズレを0扱いor小さく補正>
(変形例12)
ステップSb6におけるリズムパターン同士のズレの計算において、以下のような処理を施してもよい。変形例12において、制御部721は、入力リズムパターンにおいて比較対象のリズムパターンにおけるオンセット時刻との時刻差の絶対値が閾値より小さいオンセット時刻については、その時刻差の絶対値はユーザの手入力による意図しないものであるとみなして、ズレの値を0あるいは本来の値より小さくなるように補正する。この閾値は、例えば「1」という値であり、予め記憶部722aに記憶されている。例えば、入力リズムパターンのオンセット時刻が「1,13,23,37」であり、比較対象のリズムパターンのオンセット時刻が「0,12,24,36」であったとする。この場合、各オンセット時刻の差の絶対値は、「1,1,1,1」となる。ここで閾値が「1」であったとすると、制御部721は、各オンセット時刻の差の絶対値に係数αを乗算して補正を行う。係数αは0から1の間を取り、ここでは0であるものとする。この場合、補正後の各オンセット時刻の差の絶対値は、「0,0,0,0」となるから、制御部721は、両者のリズムパターンのズレを0と算出する。係数αは、予め決められて記憶部722に記憶されていてもよいが、2つのリズムパターンのズレの大きさに係数αの値を対応付けた補正カーブをリズムカテゴリ毎に記憶部722に記憶させることで、制御部721がこの補正カーブに従って係数αを決定してもよい。
<ズレが基準より大きいものは計算に用いない>
(変形例13)
ステップSb6におけるリズムパターン同士のズレの計算において、以下のような処理を施してもよい。変形例13において、制御部721は、入力リズムパターンにおいて比較対象のリズムパターンにおけるオンセット時刻との時刻差の絶対値が閾値より大きいオンセット時刻については、計算に用いない、あるいは本来の値より小さくなるようにズレを補正する。これにより、例えばユーザが1小節の前半部分や後半部分だけリズムパターンを入力した場合であっても、リズムパターンが入力された区間を対象として検索が行われる。従って、例えば、1小節通して同一のリズムパターンを有するリズムパターンレコードが自動伴奏DB7221に含まれなくても、ユーザは、入力リズムパターンに或る程度類似したリズムパターンレコードを検索結果として得ることができる。
<ベロシティパターンの差を考慮>
(変形例14)
ステップSb6におけるリズムパターン同士のズレの計算において、ベロシティパターンの差を考慮した算出方法を用いてもよい。入力リズムパターンをAとして、リズムパターンレコードに記述されたリズムパターンをBとすると、変形例14におけるAとBとのズレの大きさの計算は、以下の手順で行われる。
(11)制御部721は、リズムパターンAにおける各オンセット時刻を基準として、リズムパターンBにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
(12)制御部721は、手順(11)で算出した各絶対値の総和を算出する。
(13)制御部721は、リズムパターンAにおける各オンセット時刻のベロシティデータと、リズムパターンBにおける各オンセット時刻のアタック強度との差の絶対値の総和を算出する。
(14)制御部721は、リズムパターンBにおける各オンセット時刻を基準として、リズムパターンAにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
(15)制御部721は、手順(14)で算出した各絶対値の総和を算出する。
(16)制御部721は、リズムパターンBにおける各オンセット時刻のベロシティデータと、リズムパターンAにおける各オンセット時刻のアタック強度との差の絶対値の総和を算出する。
(17)制御部721は、以下の式(1)に従って、リズムパターンAとリズムパターンBとのズレを算出する。
リズムパターンAとリズムパターンBとのズレ=α×(手順(12)で算出した時刻差の絶対値の総和+手順(15)で算出した時刻差の絶対値の総和)/2+(1−α)×(手順(13)で算出したベロシティの差の絶対値の総和+手順(16)で算出したベロシティの差の絶対値の総和)/2・・・式(1)
式(1)においてαは0<α<1を満たす予め決められた係数であり、記憶部722aに記憶されている。ユーザは、操作部725を用いて係数αの値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、オンセット時刻の一致度とベロシティの一致度とのどちらを優先するかによって、係数αの値を設定すればよい。このようにすれば、ユーザは、ベロシティを考慮した検索結果を得ることができる。
<デュレーションパターンの差を考慮>
(変形例15)
ステップSb6におけるリズムパターン同士のズレの計算において、デュレーションパターンの差を考慮した算出方法を用いてもよい。入力リズムパターンをAとして、リズムパターンレコードに記述されたリズムパターンをBとすると、変形例15におけるAとBとのズレの大きさの計算は、以下の手順で行われる。
(21)制御部721は、リズムパターンAにおける各オンセット時刻を基準として、リズムパターンBにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
(22)制御部721は、手順(21)で算出した各絶対値の総和を算出する。
(23)制御部721は、リズムパターンAにおける各オンセット時刻のデュレーションパターンと、リズムパターンBにおける各オンセット時刻のデュレーションパターンとの差の絶対値の総和を算出する。
(24)制御部721は、リズムパターンBにおける各オンセット時刻を基準として、リズムパターンAにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
(25)制御部721は、手順(24)で算出した各絶対値の総和を算出する。
(26)制御部721は、リズムパターンBにおける各オンセット時刻のデュレーションパターンと、リズムパターンAにおける各オンセット時刻のデュレーションパターンとの差の絶対値の総和を算出する。
(27)制御部721は、以下の式(2)に従って、リズムパターンAとリズムパターンBとのズレを算出する。
リズムパターンAとリズムパターンBとのズレ=β×(手順(22)で算出した時刻差の絶対値の総和+手順(25)で算出した時刻差の絶対値の総和)/2+(1−β)×(手順(23)で算出したデュレーションの差の絶対値の総和+手順(26)で算出したデュレーションの差の絶対値の総和)/2・・・式(2)
式(2)においてβは0<β<1を満たす予め決められた係数であり、記憶部722に記憶されている。ユーザは、操作部725を用いて係数βの値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、オンセット時刻の一致度とデュレーションパターンの一致度とのどちらを優先するかによって、係数βの値を設定すればよい。このようにすれば、ユーザは、デュレーションを考慮した検索結果を得ることができる。
以上が、リズムパターン同士のズレの計算方法のバリエーションについての説明である。
=リズムパターン同士の距離の計算方法=
第3実施形態及び第4実施形態における、リズムパターン同士の距離の計算方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その計算方法のバリエーションを記載する。
<両者の値の総和に係数を用いる>
(変形例16)
第3実施形態及び第4実施形態におけるステップSb7において、制御部721は、ステップSb4でリズムカテゴリについて算出した類似度距離と、ステップSb6で算出したリズムパターンのズレとを乗算することで、リズムパターン同士の距離を計算していたが、上記類似度距離又は上記ズレのどちらか一方が「0」の値であると、リズムパターン同士の距離が「0」と算出され、他方の値を反映しないものとなってしまう。これに対して、ステップSb7において制御部721が以下の式(3)に従ってリズムパターン同士の距離を算出してもよい。
リズムパターン同士の距離=(ステップSb4でリズムカテゴリについて算出した類似度距離+γ)×(ステップSb6で算出したリズムパターンのズレ+δ)・・・式(3)
式(3)において、γ及びδは予め決められた定数であり、記憶部722に記憶されている。ここで、γ及びδは適当に小さな値であればよい。このようにすれば、ステップSb4でリズムカテゴリについて算出した類似度距離と、ステップSb6で算出したリズムパターンのズレのどちらか一方が「0」の値であっても、他方の値が反映されたリズムパターン同士の距離が算出される。
<両者の値を定数倍したものの和を用いる>
(変形例17)
ステップSb7におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例17では、ステップSb7において制御部721が以下の式(4)に従ってリズムパターン同士の距離を算出する。
リズムパターン同士の距離=ε×ステップSb4でリズムカテゴリについて算出した類似度距離+(1−ε)×ステップSb6で算出したリズムパターンのズレ・・・式(4)
式(4)においてεは0<ε<1を満たす予め決められた係数である。係数εは記憶部722に記憶されており、ユーザは操作部725を用いてその値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、リズムカテゴリについて算出した類似度距離と、リズムパターンのズレとのどちらを優先するかによって、係数εの値を設定すればよい。このようにすれば、ユーザは、より自らの所望する検索結果を得ることができる。
<入力時のテンポに近いテンポを持つものの距離を小さく算出>
(変形例18)
ステップSb7におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例18では、ステップSb7において制御部721が以下の式(5−1)に従ってリズムパターン同士の距離を算出する。
リズムパターン同士の距離=(ステップSb4でリズムカテゴリについて算出した類似度距離+ステップSb6で算出したリズムパターンのズレ)×з×|入力BPM−リズムパターンレコードのBPM|・・・式(5−1)
式(5−1)においてзは0<з<1を満たす予め決められた定数である。зは記憶部722に記憶されており、ユーザは操作部725を用いてその値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、BPMの差をどの程度優先するかによって、係数зの値を設定すればよい。このとき、入力BPMとそのBPMとの差が予め決められた閾値を越えるようなリズムパターンレコードは、制御部721が検索結果から除外するようにしてもよい。このようにすれば、ユーザは、BPMを考慮した検索結果を得ることができる。
また、上記式(5−1)の別の例として、以下のものを用いてもよい。
リズムパターン同士の距離=(ステップSb4でリズムカテゴリについて算出した類似度距離+ステップSb6で算出したリズムパターンのズレ)+з×|入力BPM−リズムパターンレコードのBPM|・・・式(5−2)
式(5−2)においても、式(5−1)と同様に、зは0<з<1を満たす予め決められた定数である。зは記憶部22に記憶されており、ユーザは操作部25を用いてその値を変更可能である。式(5−2)を用いれば、例えばεをかなり小さい値にすることで、基本的にはリズムパターンが近いものほど高順位で結果が出力され、更に、リズムパターンが一致しているものの中からテンポが近い順に表示されるようにすることができる。
<入力時の音色に近い音色を持つものの距離が小さく算出されるように補正>
(変形例19)
ステップSb7におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例19では、ステップSb7における上述した式のいずれかにおいて、制御部721が、右辺に対して、リズムパターンの入力時に指定された楽音の音色と比較対象のリズムパターンレコードの音色との一致度を乗算する。音色の一致度の算出方法については、周知の方法が用いられればよい。ここでは、一致度の値が小さい程、両者の音色が近いものであり、一致度の値が大きい程、両者の音色が離れているものとする。このようにすれば、ユーザはリズムパターンの入力時に体感する音色に近い音色のリズムパターンレコードが検索結果として得られやすいため、ユーザは検索結果により納得感を持つことができる。
音色を考慮した検索は、具体的な手法として、例えば以下のようなものが考えられる。まず、パート毎に使用されている音色データ(具体的には音色のプログラムナンバとMSB(Most Significant Bit)及びLSB(Least Significant Bit))を、音色IDと紐付けて予めスタイルテーブルに記述しておく。ユーザは、操作部25を用いて音色データを指定して、リズムパターンを入力する。そして、制御部21は、指定された音色データと一致する音色データに対応したスタイルデータが検索候補として出力されやすくなるように制御する。または、音色IDを単位として音色データ毎の類似度合が予め記述されたデータテーブルを予め記憶部22に記憶させておき、制御部21が、類似度合の高い音色データの音色IDを有するスタイルデータを優先して検索するように制御してもよい。
<入力時のジャンルに近いジャンルを持つものの距離が小さく算出されるように補正>
(変形例20)
ステップSb7におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例20では、ユーザは、リズムパターンの入力時に、操作部725を用いてジャンルを指定することが可能である。変形例20では、ステップSb7における上述した式のいずれかにおいて、制御部721が、右辺に対して、リズムパターンの入力時に指定されたジャンルと比較対象のリズムパターンレコードのジャンルとの一致度を乗算する。ここで、ジャンルは、大ジャンル、中ジャンル、小ジャンルといったように、段階的に区分けされていてもよい。制御部721は、指定されたジャンルと一致する又は含むリズムパターンレコードと入力リズムパターンとの距離がより小さくなるように、また、指定されたジャンルと一致しない又は含まないリズムパターンレコードと入力リズムパターンとの距離がより大きくなるように、ジャンルの一致度を算出し、ステップSb7における式に補正を行えばよい。このようにすれば、ユーザはリズムパターンの入力時に指定したジャンルと一致する又は含むリズムパターンレコードが検索結果として得られやすいため、ユーザは検索結果により納得感を持つことができる。
以上が、リズムパターン同士の距離の計算方法のバリエーションについての説明である。
=入力リズムパターンとリズムカテゴリとの距離の算出方法=
第3実施形態及び第4実施形態における、入力リズムパターンとリズムカテゴリとの距離の算出方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その算出方法のバリエーションを記載する。
<カテゴリに特有の入力時刻間隔の個数>
(変形例21)
変形例21において、制御部721は、入力リズムパターンにおいて比較対象のリズムカテゴリを象徴するオンセット時刻間隔が含まれる個数に基づいて、入力リズムパターンと各リズムカテゴリとの距離を算出する。図30は、オンセット時刻間隔テーブルの一例を表す図である。オンセット時刻間隔テーブルは記憶部722に予め記憶されている。オンセット時刻間隔テーブルは、リズムカテゴリの分類を示す名称と、各リズムカテゴリにおいて対象となるオンセット時刻間隔との組み合わせからなる。なお、ここでは1小節を48に等分して正規化したものとしてオンセット時刻間隔テーブルの内容が予め決められている。
例えば、ここで、上述した方法により、制御部721が、入力リズムパターンにおけるオンセット時刻からオンセット時刻間隔を算出し、算出結果にクオンタイズを施した結果、以下の(d)で表す数値群を算出したとする。
(d)12,6,6,6,6,6
制御部721は、算出した数値群と、図30に示すオンセット時刻間隔テーブルとに従って、4分のオンセット時刻間隔が1個、8分のオンセット時刻間隔が5個であると特定する。そして制御部721は、以下の式(6)に従って、入力リズムパターンと各リズムカテゴリとの距離を算出する。
入力リズムパターンとリズムカテゴリNとの距離=1−(入力リズムパターンにおけるリズムカテゴリNの対象となるオンセット時刻間隔の個数/入力リズムパターンにおけるオンセット時刻間隔の総数)・・・(6)
上述した式は一例であり、対象となるオンセット時刻間隔がより多く含まれているリズムカテゴリほど、入力リズムパターンとの距離が小さく算出されるものであればよい。式(6)に従った結果、制御部721は、例えば入力リズムパターンと8分のリズムカテゴリとの距離を、0.166と算出する。また、式(6)に従った結果、制御部721は、例えば入力リズムパターンと4分のリズムカテゴリとの距離を、0.833と算出する。制御部721は、このようにして入力リズムパターンと各リズムカテゴリとの距離を算出し、最も距離が小さく算出されたリズムカテゴリに入力リズムパターンが属する、と判定する。
<DBリズムカテゴリと入力リズムカテゴリとのマトリクス>
(変形例22)
入力リズムパターンとリズムカテゴリとの距離の算出方法は、上述したものに限らず、次のようにしてもよい。変形例20では、距離参照表なるものを記憶部722が記憶している。図31は、距離参照表の一例を表す図である。距離参照表では、入力リズムパターンの属し得るリズムカテゴリと、自動伴奏DB7221に記憶された各リズムパターンレコードが属し得るリズムカテゴリとの距離が、マトリクス状に表されている。例えば、制御部721が、入力リズムパターンが属するリズムカテゴリを8分と判定したとする。制御部721は、判定結果である入力リズムパターンが属するリズムカテゴリと、距離参照表とに基づいて、入力リズムパターンと各リズムカテゴリとの距離を特定する。例えば、この場合、制御部721は、入力リズムパターンと4分のリズムカテゴリとの距離を「0.8」と特定し、入力リズムパターンと8分のリズムカテゴリとの距離を「0」と特定する。これにより、制御部721は、8分のリズムカテゴリが入力リズムパターンと最も距離が小さいと判定する。
<カテゴリに特有の入力時刻とスコアに基づく>
(変形例23)
入力リズムパターンとリズムカテゴリとの距離の算出方法は、上述したものに限らず、次のようにしてもよい。変形例23において、制御部721は、入力リズムパターンにおいて比較対象のリズムカテゴリを象徴するオンセット時刻が含まれる個数に基づいて、入力リズムパターンと各リズムカテゴリとの距離を算出する。図32は、オンセット時刻テーブルの一例を表す図である。オンセット時刻テーブルは記憶部722aに予め記憶されている。オンセット時刻テーブルは、リズムカテゴリの分類を示す名称と、各リズムカテゴリにおいて対象となるオンセット時刻と、入力リズムパターンに対象となるオンセット時刻が含まれる場合に加算するスコアとの組み合わせからなる。なお、ここでは1小節を48に等分して正規化したものとしてオンセット時刻テーブルの内容が予め決められている。
例えば、制御部721が、入力リズムパターンから、(e)で示すオンセット時刻を得たとする。
(e)0,12,18,24,30,36,42
制御部721は、このオンセット時刻とオンセット時刻テーブルとに基づいて、各リズムカテゴリに対する入力リズムパターンのスコアを算出する。ここでは、制御部721は、4分のリズムカテゴリに対するスコアとして「8」を算出し、8分のリズムカテゴリに対するスコアとして「10」を算出し、8分3連のリズムカテゴリに対するスコアとして「4」を算出し、16分のリズムカテゴリに対するスコアとして「7」を算出する。そして制御部721は、算出したスコアが最も高いリズムカテゴリを、入力リズムパターンとの距離が最も小さいリズムカテゴリであると判定する。ここでは、制御部721は、入力リズムパターンが8分のリズムカテゴリと最も距離が小さいと判定する。
以上が、入力リズムパターンとリズムカテゴリとの距離の算出方法のバリエーションについての説明である。
<音高パターンで検索>
(変形例24)
第3実施形態及び第4実施形態において、ユーザがパートを指定して入力した音高パターンによって検索が行われるようにしてもよい。変形例24では、図15に示すリズムパターンテーブルにおいて、「リズムパターンID」という項目名は「パターンID」となる。また、変形例24において、図15に示すリズムパターンテーブルにおける各リズムパターンレコードには、「音高パターンデータ」という項目が追加される。音高パターンデータは、1小節を構成するフレーズにおける各構成音の音高の時系列に沿った変化が記録されたデータファイルである。音高パターンデータは、例えばテキストファイルに、構成音の音高の時系列に沿った変化が記述されたものである。また、前述したように、オンセット情報には、トリガーデータ以外に鍵盤のノートナンバーが含まれている。このうち、トリガーデータにおけるオンセット時刻の並びが入力リズムパターンに相当し、鍵盤のノートナンバーの並びが入力音高パターンに相当する。ここで、情報処理装置720が音高パターンを検索するときには周知の方法のいずれかを用いればよい。例えば、ユーザがパートにコードを指定して、「C−D−E」というルートの音高シーケンスを入力した場合、情報処理装置720の制御部721は、このシーケンスにおける音高の進行を「0−2−4」という相対的な数値で表した音高パターンデータを持つリズムパターンレコードを検索結果として出力する。
また、例えばユーザがパートにフレーズを指定して、「D−D−E−G」という単音の音高パターンを入力した場合、制御部721は、入力された音高パターンを表すMIDI情報を生成する。制御部721は、リズムパターンテーブルにおいて、この生成したMIDI情報と同一又は類似した音高パターンデータを持つ音高パターンレコードを検索結果として出力する。このような音高パターンによる検索と、リズムパターンによる検索とは、その検索のモードを、情報処理装置720の操作部725を介してユーザにより切り替え可能としてもよい。
<リズムパターン&音高パターン両指定検索>
(変形例25)
第3実施形態及び第4実施形態において、ユーザがパートを指定して入力したリズムパターンによって検索が行われた結果のうち、上記音高パターンがより類似したリズムパターンレコードが検索結果として出力されるようにしてもよい。変形例25のリズムパターンテーブルにおける各リズムパターンレコードは、各パートについての「パターンID」とともに、各パートについての「音高パターンデータ」を含んでいる。
図33は、音高パターンを用いた検索の処理内容を表す模式図である。図33(a)及び(b)において、横軸は経過する時間を表し、縦軸は音高を表す。変形例25では、図18の検索処理のフローチャートにおいて、次のような処理が追加される。例えばユーザが、ベース入力音域鍵盤711aにおける鍵盤を操作して、「C―E―G―E」というメロディを、4分のリズムで入力していたとする。このときの入力音高パターンは、例えば「60,64,67,64」というノートナンバーの並びで表される。図33(a)は、この音高パターンを表したものである。ここでは、パートがベースであるため、リズムパターン検索部214は、ステップSb6において、音高パターンテーブルのうち、パートIDが「01(ベース)」である音高パターンレコードを比較対象として、比較対象の音高パターンレコードに含まれる音高パターンデータと、入力音高パターンとのズレを算出する。
制御部721は、入力音高パターンと、パートIDが「01(ベース)」である各リズムパターンレコードに含まれる音高パターンデータが表す音高パターン(以降、音源の音高パターンという)との音程の分散を求める。これは、音程の差分にバラつきが少ないほど、音高パターンが類似しているとみなせる、という考えに基づいている。例えば、入力音高パターンが上述したように「60,64,67,64」で表され、或る音源の音高パターンが「57,60,64,60」で表されたとする。図33(b)では、入力音高パターンと音源の音高パターンとが並べて表されている。ここで、以下の式(7)で音程の平均値を求めることで、式(8)により音程の分散を求めることができる。
((|60−57|)+(|64−60|)+(|67−64|)+(|64−60|))/4=3.5・・・式(7)
((|3.5−3|)2+(|3.5−4|)2+(|3.5−3|)2+(|3.5−4|)2)/4=0.25・・・式(8)
上記式で表されるように、「60,64,67,64」で表される入力音高パターンと、「57,60,64,60」で表される音源の音高パターンとの音程の分散は、「0.25」となる。制御部721は、このような音程の分散を、音源の音高パターンの全てについて算出する。
次に、ステップSb7において、制御部721は、音高パターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いを求める。ここで、音高パターンを考慮しない場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いをSと定義し、上記音程の分散をVと定義すると、音高パターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いSpは、変数x、定数yを用いて以下の式(9)で表せる。式(9)において、0<x<1であり、y>0である。
Sp=(1−x)S+xyV・・・式(9)
変数xが0の場合、上記式は「Sp=S」となるため、求められる類似の度合いは、音高パターンを考慮しない場合のものとなる。一方、xが1に近づくにつれて、上記式で求められる類似の度合いは、より音高パターンを考慮した場合のものとなる。変数xの大きさは、ユーザが操作部725を用いて変更可能としてもよい。なお、式(9)においては、上記音程の分散に代えて、音高の差分の平均誤差を用いてもよい。そして制御部721は、検索結果であるリズムパターンレコードを、音高パターンを考慮した場合の、検索結果のリズムパターンと入力リズムパターンとの類似の度合いが高い(距離が小さい)順番で並び替えると、RAMに記憶させる。
また、入力音高パターンにおけるオンセット時刻及びオンセットの個数と、音源の音高パターンを構成する各ノートのオンセット時刻及びノートの個数とが一致するとは限らない。このような場合、制御部721は、以下の手順に従って、入力音高パターンの各オンセットに、音源音高パターンのどのノートが対応しているかを決定する。
(31)制御部721は、入力音高パターンの各ノートのオンセット時刻を基準として、音源の音高パターンにおける最も近いオンセット時刻のノートとの音高の差分を算出する。
(32)制御部721は、音源の音高パターンの各ノートのオンセット時刻を基準として、入力音高パターンにおける最も近いオンセット時刻のノートとの音高の差分を算出する。
(33)制御部721は、手順(31)で算出した差分と手順(32)で算出した差分との平均値を、入力音高パターンと音源の音高パターンとの音高の差分として算出する。
なお、計算量を抑えるために、手順(31)若しくは手順(32)のいずれかのみを用いて音高の差分が算出されるようにしてもよい。なお、音高パターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いの算出方法は、上述の方法に限らず、他の方法が用いられてもよい。
また、対応する音高の差分の絶対値を12で割ると、入力音高パターンそのものと類似した伴奏ではなく12音階における音高パターンが類似した伴奏が検索できる。ここで、音高をノートナンバーで表したときに、「36,43,36」という音高パターンAと、「36,31,36」という音高パターンBとの2つの対応する音高パターンを比較する場合について説明する。両者の音高パターンは互いに異なるが、構成音は同じ「C,G,C」であって、Gのノートナンバーがオクターブ違うだけなので、類似したパターンであるとみなせる。制御部21は、音高パターンA及びBについて、12音階における音高パターンの差を以下の式(10)及び式(11)に従って計算する。
(|36−36|/12)+(|43−31|/12)+(|36−36|/12)=0・・・式(10)
(|0−0|^2)(|0−0|^2)(|0−0|^2)=0・・・式(11)
12音階における音高の変動のパターンが一致しているため、音高パターンAと音高パターンBの12音階における音高パターンの類似度は0と算出される。すなわち、この場合、音高パターンBが、音高パターンAに最も類似する音高パターンとして出力される。このように、入力音高パターンそのものとの類似度合いだけでなく、12音階における音高の変動のパターンも考慮すると、ユーザは、より納得感のある結果が得られる。
また、入力音高パターンそのものと、12音階における音高の変動のパターンとの両方を考慮したリズムパターンの類似度をもとに検索結果を出力してもよい。この場合の計算式は、例えば以下の式(12)のように表せる。
入力音高パターンそのものと12音階における音高の変動のパターンを考慮したリズムパターンの類似度=(1−X)×(リズムパターンの類似度)+XY{(1−κ)(音高のパターンの類似度)+κ(12音階のパターンの類似度)}・・・式(12)
ここで、X、Y及びκは、0<X<1、Y>0、0<κ<1をそれぞれ満たす予め決められた定数である。なお、上記式は一例であってこの限りではない。
このようにすれば、ユーザが意図したリズムパターンのみならず、音高パターンについてもユーザが意図したものと近いリズムパターンレコードが検索結果として出力されることとなる。これにより、ユーザは、入力リズムパターンとリズムパターンは同じだが、音高パターンが異なるようなリズムパターンレコードを検索結果として得ることが可能となる。
<トリガーとベロシティの両方で検索>
(変形例26)
第3実施形態及び第4実施形態において、制御部721は、ユーザの演奏操作によるトリガーデータ及びベロシティデータの双方を用いて自動伴奏DB7221を検索するようにしてもよい。この場合、極めて類似したリズムパターンを持つリズムパターンデータが2つ存在したときは、制御部721は、アタック強度パターンデータに記述された各構成音のアタック強度がユーザの演奏操作によるベロシティデータとより近いリズムパターンデータを検索結果として出力する。このようにすれば、アタック強度についても、ユーザがイメージしていたものに近い自動伴奏データが、検索結果として出力されることが可能となる。
(変形例27)
第3実施形態及び第4実施形態において、制御部721が自動伴奏DB7221を検索するにあたって、トリガーデータ及びベロシティデータに加えて、同一の音が鳴り続ける長さを表すデュレーションデータを用いてもよい。ここで、各構成音におけるデュレーションデータは、オフセット時刻から直前のオンセット時刻を差し引いた時間の長さで表される。デュレーションデータは、リズム入力装置710における入力手段が鍵盤である場合に、情報処理装置720がオフセット時刻を明確に取得することが可能であるため、特に有効に活用することができる。この場合、フレーズテーブル及びリズムパターンテーブルにおいて、「デュレーションパターンデータ」という項目が追加されることとなる。デュレーションパターンデータは、1小節を構成するフレーズにおける各構成音の鳴り続ける長さが記録されたデータファイルであり、例えばテキストファイルに、各構成音の鳴り続ける長さが記述されたものである。この場合、情報処理装置720は、ユーザにより入力された、1小節におけるデュレーションのパターンを用いて、フレーズテーブル又はリズムパターンテーブルから、上記入力されたデュレーションのパターンと最も類似するデュレーションパターンデータを持つフレーズレコード又はリズムパターンレコードを検索結果として出力するようにすればよい。このようにすれば、類似したリズムパターンを持つフレーズレコード又はリズムパターンレコードが複数存在しても、情報処理装置720が、スラー(伸ばす)のあるリズムパターンや、スタッカート(はねる)のあるリズムパターン等を識別して検索結果として出力することが可能となる。
<音色の近いものを検索>
(変形例28)
第3実施形態及び第4実施形態において、情報処理装置720が検索を行うにあたって、入力リズムパターンにおける音色と同一又は類似の度合いが高い音色を持つフレーズを持つ自動伴奏データを検索するようにしてもよい。例えば、それぞれのリズムパターンデータに対し、使用される音色毎にその音色の識別情報を対応付けて持たせておき、ユーザがリズムパターンを入力する際に、事前に音色を指定しておくことで、対応する音色で発音するリズムパターンに絞ったうえでそのリズムパターンの類似度が高いものを検索されるようにすればよい。この場合、リズムパターンテーブルにおいて、項目「音色ID」が追加される。ユーザは、演奏操作子を用いてリズムパターンを入力する際に、例えば操作部725を用いて音色を指定する。音色の指定は、リズム入力装置710が備える操作子によって行われてもよい。ユーザが演奏操作を行うと、演奏操作が行われた際に指定された音色のIDが、MIDI情報の一部として情報処理装置720に入力される。情報処理装置720は、入力された音色IDに基づく音の音色と、リズムパターンテーブルにおける指定されたパートの各リズムパターンレコードにおける音色IDに基づく音の音色を比較し、比較結果に基づいて、両者が予め決められた対応関係にある場合、そのリズムパターンレコードを特定する。この対応関係は、例えば、比較結果に基づいて両者の楽器種類が同じであると識別可能なように予め決められており、記憶部722に記憶されている。ここで、音色の比較については、各々の音の波形におけるスペクトラムを比較するなど、周知の方法を用いればよい。このようにすれば、リズムパターンが類似していることに加え、指定したパートについて音色が類似した自動伴奏データをユーザは得ることが可能となる。なお、具体的な手法としては、変形例19に記載した内容と同様の手法で実現できる。
(変形例29)
第3実施形態及び第4実施形態においては、入力時刻間隔ヒストグラムと発音時刻間隔ヒストグラムとの差分の絶対値が最も小さいことを、入力時刻間隔ヒストグラムに対する発音時刻間隔ヒストグラムの類似度が高いと判断していたが、両者の類似度が高いことを示す条件は、上記のような両ヒストグラムの差分の絶対値に限らない。例えば、両ヒストグラムの各時刻間隔成分の積などの相関度が最も大きいとか閾値を超えるといったことや、両ヒストグラムの差分の2乗が最も小さいとか閾値未満であるといったこと、両ヒストグラムの各時刻間隔成分における値が類似していることを示すような条件であれば、どのような条件を用いてもよい。
(変形例30)
第3実施形態及び第4実施形態においては、リズム入力装置710から入力されたリズムパターンに従って、情報処理装置720が、当該リズムパターンに類似するリズムパターンを持つ楽音データを検索し、検索結果の楽音データを音に変換して出力していたが、次のようにしてもよい。例えば、上記実施形態に相当する内容をウェブサービスによって実施する場合、上記実施形態において情報処理装置720が備える機能を、当該ウェブサービスを提供するサーバ装置が備えることとなる。そして、ユーザの操作によって、クライアント装置である自端末(例えばPC)が、インターネットや専用線等を介して入力リズムパターンを上記サーバ装置に送信する。サーバ装置は、受信した入力リズムパターンに基づいて、記憶手段から当該入力リズムパターンに類似するリズムパターンを持つ楽音データを検索し、検索結果の楽音データを自端末に送信する。そして自端末は、受信した楽音データに基づく音を出力する。なお、この場合、サーバ装置の提供するウェブサイトやアプリケーションにおいて、小節線クロックがユーザに提示されるようにすればよい。
(変形例31)
第1実施形態〜第4実施形態において、入力装置20及びリズム入力装置710は、ユーザが演奏操作したときに、トリガーデータ(及びベロシティデータ)を出力するものであれば、ドラムパッドのような形状に限らず、鍵盤楽器や弦楽器、吹奏楽器などの演奏に用いられる操作子であっても良い。また、入力装置20及びリズム入力装置710は、楽器の操作子に限らず、例えば、車のダッシュボードやハンドルデスクに衝撃センサを設け、打撃を与えたときにトリガーデータ(及びベロシティデータ)を出力させるようにした、いわゆる操作子として機能するものであってもよい。また、入力装置20及びリズム入力装置710は、パソコンのキーボードやマウス、タッチパネルなど、OA(Office Automation)機器や家電機器に備えられた操作子であってもよい。これらの場合、各操作子を操作したときに出力される信号を、楽音信号生成装置10及び情報処理装置720にトリガーデータとして入力し、楽音信号生成装置10及び情報処理装置720から出力される楽音信号に基づいて、各機器に備えられたスピーカーから音が出力されるように構成されれば良い。なお、本発明においては、携帯電話、スマートフォン又はタブレットPC(Personal computer)を、楽音信号生成装置10、入力装置20、リズム入力装置710あるいは情報処理装置720として用いても良い。
ここで、演奏操作子がタッチパネルである場合の例を考える。タッチパネルにおいては、その画面上に複数のアイコンが表示されることがある。ここで、各アイコンに楽器や楽器の操作子(鍵盤など)の画像が表示されるようにすれば、ユーザは、どのアイコンをタッチすればどのような楽器や楽器の操作子に基づく楽音が発せされるのかが分かるようになる。このようにした場合、タッチパネルにおいて上記各アイコンが表示される各々の領域が、実施形態における演奏操作子の各々と対応することとなる。
<指定BPMでなく本来のBPMでも再生可能>
(変形例32)
第3実施形態及び第4実施形態において、リズムパターンレコードには本来のBPMが情報として含まれているから、ユーザが操作部725を用いて行った操作に従って、制御部721が、リズムパターンレコードに含まれる楽音データが示す楽音を本来のBPMで再生するようにしてもよい。また、検索結果から特定のリズムパターンレコードがユーザにより選択されて制御部721がこれを特定すると、制御部721が、特定された直後は上記入力されたBPMまたは上記指定されたBPMに基づく速度でリズムパターンレコードに含まれる楽音データが示す楽音を再生し、時間の経過に伴って、BPMがリズムパターンレコードの持つ本来のものに徐々に近づくように制御してもよい。
(変形例33)
第3実施形態及び第4実施形態において、ユーザが検索結果に対してより納得感を持てるようにするための方法は、上述したフィルタリング機能に限ったものではない。
<類似度にBPMの差による重み付けを行う>
例えば、入力リズムパターンとリズムパターンテーブルに含まれるリズムパターンレコードとの距離を求める算出式に、入力BPMとリズムパターンレコードが有する本来のBPMとの差に基づく重み付けを導入してもよい。ここで、aを予め定められた定数とし、入力リズムパターンとリズムパターンテーブルに含まれるリズムパターンレコードとの距離をLとすると、上記重み付けを導入した場合の類似度を求める計算式は、例えば以下の式(13)のように表せる。
類似度=L+|入力BPM−リズムパターンレコードの有するBPM|/a・・・式(13)
なお、上記類似度を求める計算式は式(13)のようなものに限ったものではなく、入力BPMとリズムパターンレコードの持つBPMとが近いほど類似度が小さくなる(すなわち類似の度合いが高くなる)ような計算式であればよい。
<フィルタリングのバリエーション>
上述の実施形態のように、プルダウンで特定の対象をユーザが指定して表示結果を絞るように使用してもよいが、リズムパターン入力時の演奏情報を自動で解析して自動で表示結果を絞るような方法でもよい。また、鍵盤などから入力したリズム入力のピッチの演奏情報から、コードタイプやスケールを判定してそのコードタイプやスケールで登録された伴奏が自動で検索結果として表示されるようにしてもよい。例えばロックっぽいコードでリズム入力したら、ロックのスタイルが検索されやする。他には、中東っぽいスケールでリズムを入力したら、中東っぽいフレーズが検索されやすくなる。また、鍵盤入力時に指定された音色の情報によって、同じ音色情報を持ち、且つリズムパターンが一致するものを検索するようにしてもよい。例えば、スネアドラムのリムショットでリズム入力した場合、同じリズムパターンを持つ候補の中でもリムショットの音色の伴奏が優先して表示されるようにする。
<パッドの代わりに鍵盤でドラムス入力>
(変形例34)
第3実施形態及び第4実施形態において、リズム入力装置710が入力パッド812を備えない場合、リズム入力装置710が次のような構成を取ってもよい。この場合、デフォルトの状態では鍵盤711には、ベース入力音域鍵盤711a、コード入力音域鍵盤711b、及びフレーズ入力音域鍵盤711cが所定の鍵域に各々割り当てられている。ここでユーザが、操作部725を介してドラムスのパートの入力を行う旨を指示すると、制御部721は、鍵盤711の所定の鍵域にドラムのパートを割り当てる。例えば、制御部721は、C3にバスドラムのパートを割り当て、D3にスネアドラムのパートを割り当て、E3にハイハットのパートを割り当て、F3にシンバルのパートを割り当てる、といった具合である。なお、この場合、制御部721は、鍵盤711の全鍵域における操作子(すなわち各鍵)に、各々異なる楽器音を割り当てることが可能である。ここで制御部721が、鍵盤711における各操作子(各鍵)の上部や下部に、割り当てられる楽器音に関する画像(例えばスネアドラムの画像)を表示するようにしてもよい。
<パートの操作子を視聴覚的に判別しやすくする>
(変形例35)
第3実施形態及び第4実施形態において、ユーザが、どの操作子を操作すれば、どのパートが制御部721によって検索されるのかを視覚的に分かりやすくするために、次のようにしてもよい。例えば、制御部721が、鍵盤711における各操作子(各鍵)の上部や下部に、割り当てられるパートに関する画像(例えば、ギターのコードが押さえられた画像、ピアノが単音で演奏されている画像(例えば単一の鍵が指で押さえられている画像)、又はスネアドラムの画像等)を表示する。また、制御部721が、上述の画像を各操作子の上部や下部に表示するに限らず、表示部724に表示させてもよい。この場合、表示部724には、例えば鍵盤711を模した鍵盤の画像が表示されるとともに、実際の鍵盤711の各鍵域に割り当てられているのと同じ割り当て状態で、鍵盤の画像の各鍵域に対して割り当てられたパートの画像が表示される。または、ユーザが、どの操作子を操作すれば、どのパートが制御部721によって検索されるのかを聴覚的に分かりやすくするために、次のようにしてもよい。例えば、ユーザがベース入力音域鍵盤711aに対して入力を行うと、制御部721は、音声出力部726からベースの音声を出力させる。このようにすれば、ユーザは、どの操作子を操作すれば、どのパートが検索されるのかを視覚的又は聴覚的に判別可能となるため、操作入力が容易なものとなり、結果として自らが望む伴奏音源を得やすくなる。
<検索の計算:処理の順番入れ替え可能>
(変形例36)
第3実施形態及び第4実施形態では、図18の処理フローにおいて、リズムカテゴリ毎のオンセット時刻間隔の分布を計算(ステップSb1)した後に、入力リズムパターンにおけるオンセット時刻間隔の分布を計算していた(ステップSb3)が、ステップSb1とステップSb3の順番を入れ替えてもよい。また、処理ステップの入れ替えに関わらず、制御部721が、リズムカテゴリ毎のオンセット時刻間隔の分布を計算した後、計算結果をRAMや記憶部722に記憶させるようにしてもよい。このようにすれば、制御部721は一度計算した結果を再度計算する必要がなく、処理速度の向上を見込むことが可能となる。
<和音の丸め込み>
(変形例37)
第3実施形態及び第4実施形態では、例えば、ユーザがベース入力音域鍵盤711aにおいて、和音となるように鍵盤を押下したとき等のように、ユーザが所定時間内において複数の操作子を操作してリズムパターンを入力する場合には、次のような問題がある。例えば、1小節において、ユーザが「0.25」のタイミングでリズムを入力したかったとする。ここで、ユーザが、自身では同一のタイミングのつもりで複数の操作子を操作しても、実際には、或る操作子が「0.25」のオンセット時刻で操作され、他の操作子が「0.26」のオンセット時刻で操作された場合、制御部721は、これらのオンセット時刻のとおりに入力リズムパターンを記憶してしまう。このような場合、ユーザが意図していたものとは異なる検索結果が出力される可能性があり、ユーザにとっては操作性がよいものとはいえない。これに対して、次のようにしてもよい。
変形例37において、制御部721は、リズム入力装置710から入力されるオンセット情報と、自動伴奏DB7221に含まれるパートテーブルとに基づいて、同一のタイミングにおいて同じパートにおける複数の操作子に対して操作が行われたか否かを判定する。例えば、制御部721は、ベース入力音域鍵盤711aに含まれる操作子のうち、或る操作子のオンセット時刻と他の操作子のオンセット時刻との差分が所定時間内に収まる場合、これらの操作子が同一のタイミングで操作されたと判定する。ここで所定時間とは、例えば50msec(ミリ秒)である。そして制御部721は、上記判定の結果、これらの操作子に対する操作を同一のタイミングにおける操作であるとみなす旨の情報を、該当するオンセット時刻を持つトリガーデータと対応付けて制御部721に出力する。制御部721は、同一のタイミングにおける操作であるとみなす旨の情報が対応付けられたトリガーデータのうち、開始時刻が遅い方のオンセット時刻を持つトリガーデータを除外した入力リズムパターンを用いてリズムパターン検索を行う。つまり、この場合、ユーザの所定時間内の操作に基づくオンセット時刻のうち、開始時刻が早い方のオンセット時刻がリズムパターン検索に用いられることとなる。また、これに限らず、ユーザの所定時間内の操作に基づくオンセット時刻のうち、開始時刻が遅い方のオンセット時刻がリズムパターン検索に用いられるようにしてもよい。つまり、制御部721は、ユーザの所定時間内の操作に基づく複数のオンセット時刻のいずれかを用いてリズムパターン検索を行うようにすればよい。また、制御部721が、ユーザの所定時間内の操作に基づく複数のオンセット時刻の平均を求め、この平均値を、上記ユーザの所定時間内の操作におけるオンセット時刻として、リズムパターン検索を行うようにしてもよい。このようにすれば、ユーザが所定時間内において複数の操作子を用いてリズム入力を行った場合であっても、ユーザが意図していたものと近い検索結果が出力されるようにすることが可能となる。
<頭拍欠け問題の解消>
(変形例38)
第3実施形態及び第4実施形態において、制御部721が小節単位で入力リズムパターンを記憶するタイミングを、小節線クロックに基づく小節の切り替えタイミングと同じものとすると、以下のような問題が生じることがある。例えば、ユーザの操作によってリズムパターンが入力される場合、ユーザが自身で感じている時刻間隔と小節線クロックとのズレによって、ユーザが意図していたリズムパターンと実際のオンセット時刻との間に数msec〜数十msecの誤差が生じる。従って、例えば、ユーザが小節頭の拍を入力しているつもりでも、上記誤差によって1つ前の小節のリズム入力として扱われてしまうことがあり、この場合、このリズム入力は入力リズムパターンとして記憶されないことがある。このような場合、ユーザが意図していたものと異なる検索結果が出力されてしまい、ユーザにとって操作性がよいとはいえない。このような問題に対しては、制御部721がRAMに入力リズムパターンを記憶させる際に、小節の頭よりも数十msec早い時点(すなわち直前の小節における最後の数十msec)から、最後の数十msecを除く小節の終わりまでを処理の対象範囲とすればよい。つまり、制御部721は、RAMに記憶させる入力リズムパターンの対象範囲を数十msec分だけ前にずらすこととなる。このようにすれば、ユーザが意図していたものと異なる検索結果が出力されることを少なくすることができる。
<検索直後に再生>
(変形例39)
第3実施形態及び第4実施形態において、制御部721がリズムパターン検索を行うタイミングを、小節線クロックに基づく小節の切り替えタイミングと同じものとすると、以下のような問題が生じることがある。例えば、本発明における検索方法は、検索結果の楽音データが、リズム入力の直後の小節で小節線クロックと同期して再生されるようなプレイバック機能を備えた楽音データ処理装置にも応用可能である。この場合、リズム入力の直後の小節における頭から検索結果の楽音データが再生されるには、上記小節の頭の時点より以前、つまりリズム入力が行われた小節内で検索結果が出力される必要がある。また、RAMの記憶容量の問題等により、事前に再生対象である楽音データを予め読み込んでRAMに記憶させておくことが不可能な場合には、リズム入力が行われた小節内で検索結果の楽音データを読み込んでRAMに記憶させる必要がある。このような問題に対しては、制御部721がリズムパターン検索を行うタイミングを、小節の切り替えタイミングよりも、例えば数十msec早いものとすればよい。このようにすれば、小節の切り替えが行われる前に検索が行われ、検索結果の楽音データがRAMに記憶されることで、リズム入力の直後の小節における頭から検索結果の楽音データが再生されることが可能となる。
<複数小節検索>
(変形例40)
第3実施形態及び第4実施形態において、入力リズムパターンを1小節単位に限らず、複数小節(N小節とする)に跨るリズムパターンを検索できるように、以下のようにしてもよい。この場合、例えば、制御部721が、N小節のまとまりを持った入力リズムパターンを用いてリズムパターンテーブルを検索する方法がある。しかしこの方法では、ユーザが、小節線クロックに合わせてリズムパターンを入力する際に、1小節目がどこかを指定する必要がある。また、検索結果がN小節後に出力されるため、検索結果が出力されるまでに時間がかかってしまう。これに対して、次のようにしてもよい。
図34は、複数小節のリズムパターンを検索する場合の処理内容を表す模式図である。変形例40において、自動伴奏DB7221におけるリズムパターンテーブルには、N小節に跨るリズムパターンデータを持つリズムパターンレコードが含まれている。また、ユーザは、操作部725を用いて、検索するリズムパターンの小節数を指定する。この指定内容は、例えば表示部724に表示される。ここで例えば、ユーザが、検索するリズムパターンの小節を「2小節」と指定したとする。ユーザによって操作子を用いてリズムが入力されると、制御部721は、まず、1小節目の入力リズムパターンを記憶する。そして制御部721は、1小節目の入力リズムパターンに基づいてリズムパターンを検索する。この検索の手順は以下のようなものである。制御部721は、2小節に跨るリズムパターンデータを持つリズムパターンレコードを対象として、1小節目の入力リズムパターンと、各リズムパターンデータにおける1小節目のリズムパターン及び2小節目のリズムパターンとの距離を算出する。そして制御部721は、各リズムパターンデータについて算出した、1小節目の入力リズムパターンと上記1小節目のリズムパターンとの距離、及び1小節目の入力リズムパターンと上記2小節目のリズムパターンとの距離のうち、それぞれ小さい方の距離を、リズムパターンデータごとにRAMに記憶させる。制御部721は、2小節目の入力リズムパターンについても同様の処理を行う。そして制御部721は、RAMに記憶された上記距離をリズムパターンデータごとに加算すると、加算後の値を、各リズムパターンデータにおける入力リズムパターンに対する距離を表すスコアとする。そして制御部721が、上記スコアが予め定められた閾値以下であるリズムパターンデータを、スコアの小さい順に並べ替えて検索結果として出力する。このようにすれば、複数小節に跨るリズムパターンデータを持つリズムパターンレコードを検索することが可能となる。このとき、1小節ごとに入力リズムパターンとリズムパターンデータとの距離が算出されるため、ユーザは1小節目がどこかを指定する必要がなく、また、検索結果が出力されるまでに時間がかかることもない。
<入力リズムパターンの取得方法1:係数0.5→四捨五入>
(変形例41)
第3実施形態及び第4実施形態において、制御部721が、入力リズムパターンをRAMに記憶させるにあたり、上述した方法に限らず、以下のようにしてもよい。式(14)は、入力リズムパターンにおいてn番目に入力されたオンセット時刻を求める計算式である。式(14)において、Lは或る小節の先頭を0としたときの、この小節の末尾を表し、0以上の実数である。また、式(14)においてNは、1小節内のクロック回数である分解能を表す。
[(n番目のオンセット時刻−小節の開始時刻)/(小節の終了時刻−小節の開始時刻)×N+0.5]×L/N・・・式(14)
式(14)において、「0.5」の値は、オンセット時刻が算出されるにあたり、端数に対して四捨五入の効果をもたらすものであり、これを、0以上1未満の別の数値に置き換えてもよい。例えば、この値を「0.2」とすると、端数に対して七捨八入の効果がもたらされる。この値は、パラメータとして記憶部722に記憶されており、ユーザが操作部725を用いて変更可能である。
前述したように、フレーズデータ及びリズムパターンデータは、オペレーターにより、市販のオーディオループ素材から構成音開始時刻を抽出されることで予め作成されることがある。このようなオーディオループ素材では、聴覚的な音の厚みを出すことを目的として、例えばバッキングのギターの音が、本来あるべきジャストのタイミングから意図的に少しずらされている場合がある。このような場合に上記パラメータの値を調整することで、端数の切り上げ及び切り下げが行われた結果のフレーズデータ及びリズムパターンデータが得られる。この結果、作成されたフレーズデータ及びリズムパターンデータでは、上述したズレが解消されているから、ユーザは、ズレのことを気にしないで、所望するジャストなタイミングでリズムパターンを入力して検索を行うことが可能となる。
(変形例42)
第3実施形態及び第4実施形態において、リズム入力装置710及び情報処理装置720が一体となった装置により本発明が実現されてもよい。この場合、この装置として、例えば、携帯電話や、タッチスクリーンを備えた移動通信端末などが考えられる。本変形例では、この装置がタッチスクリーンを備えた移動通信端末である場合を例に挙げて説明する。
図35は、本変形例における移動通信端末830を表す図である。
移動通信端末830は、その表面にタッチスクリーン831を有する。ユーザは、タッチスクリーン831における任意の位置をタッチして移動通信端末830に対する操作を行うことが可能であるとともに、ユーザの操作に応じた表示内容がタッチスクリーン831に表示される。なお、移動通信端末830のハードウェア構成は、表示部724及び操作部725を合わせた機能がタッチスクリーン831によって実現されることと、移動通信端末830がリズム入力装置710及び情報処理装置720とが一体となったものであることを除けば、図13で示すものと共通している。以下では、制御部や記憶部や自動伴奏DBについて、図13と同じ符号を付して説明する。
タッチスクリーン831の上部には、BPM指定スライダ751、キー指定鍵盤752及びコード指定ボックス753が表示される。BPM指定スライダ751、キー指定鍵盤752及びコード指定ボックス753は、図21を用いて説明したものと同様である。タッチスクリーン831の下部には、検索結果のリズムパターンレコードが一覧として表示される。ユーザが、それぞれ異なるパートを表すパート選択画像832のうちいずれかを指定すると、制御部721は、指定されたパートについて検索結果のリズムパターンレコードの一覧をタッチスクリーン831に表示させる。
検索結果における項目「順位」、項目「ファイル名」、項目「類似度」、項目「BPM」及び項目「キー」は、図21を用いて説明したものと同様である。なお、このほかに、「ジャンル」や「楽器種類」などの関連する情報を表示させてもよい。ユーザが、一覧から任意の再生指示画像833を指定すると、指定された再生指示画像833に応じたリズムパターンレコードの楽音データが再生される。このような移動通信端末830によっても、第3実施形態及び第4実施形態で上述したのと同様の効果を奏する。
(変形例43)
第1実施形態及び第2実施形態では、フレーズデータにおいて1つの区間に1つの構成音が含まれる構成としたが、1つの区間に複数の構成音が含まれていても良い。このように、1つの区間に複数の構成音を含めると、極端に速い演奏操作が必要なフレーズであっても、音の数よりも少ない演奏操作に基づいて適切に構成音を生成することができる。また、1つの構成音が複数の区間にまたがっていても良い。また、フレーズデータについては、1小節の長さに限らず、より長いフレーズや短いフレーズ、また、小節の途中から開始又は終了するフレーズであっても良い。すなわち、楽音信号生成装置10は、伴奏の再生期間のうち、予め定められた期間にわたって再生すべき構成音を複数の区間毎に規定するものであれば、どのような長さのフレーズでも演奏させることができる。
(変形例44)
第1実施形態及び第2実施形態において、楽音信号生成装置10は、一時記憶部105を備えなくとも良い。この場合、フレーズデータベース202に、各区間で規定された構成音のデータを付随させておけば良い。特定部106は、特定した構成音のデータを第1信号生成部107に供給させるようフレーズデータベース202に指示する。この指示がされると、構成音のデータがフレーズデータベース202から読み出されて、第1信号生成部107に転送される。
(変形例45)
第1実施形態及び第2実施形態において、楽音信号生成装置10は、フレーズデータに、MIDIデータ及びMIDI音源データを用いても良い。この場合、フレーズデータベース202は、開始時刻データと、これに対応する構成音毎のMIDIイベント情報を示すMIDIデータと、MIDI音源データとを記憶する。また、演奏に用いるフレーズが操作部400によって選択された場合、当該選択されたフレーズに対応するMIDIデータ及びMIDI音源データがフレーズデータベース202から読み出されて一時記憶部105に記憶される。また、特定部106は、特定した構成音のMIDIデータ及びMIDI音源データを一時記憶部105から読み出して、第1信号生成部107に供給する。第1信号生成部107は、供給されたMIDIデータを解釈し、特定された構成音の楽音信号を、ベロシティデータで示される強度の音量で生成して、ミキサー600に供給する。
なお、MIDIデータは、複数のMIDIイベント情報を示すものであっても良い。すなわち、1つの演奏操作に対して和音(又は異なる楽器の音)やアルペジオなどが再生されても良い。
図36は、複数のMIDIイベントの再生を説明するための図である。図36の上欄には、開始時刻、ノートナンバー(ピッチ)、デュレーション(音の長さ)をそれぞれ表す複数のMIDIイベント情報によって構成されたフレーズの一例が、縦軸にピッチ、横軸に時刻を示すロール形式で視覚的に示されている。図36に示すフレーズでは、時間的に1番目から4番目までの開始時刻において、3個、3個、2個、4個の音がそれぞれ開始されている。図36の例では、4番目の開始時刻の各音は、開始時刻が一致しておらず、時間を置いて順番に開始されている。この場合、情報処理装置720bは、人がそのフレーズを聞いて区切りを感じる時刻を開始時刻とすれば良く、これらの音が一定時間の範囲に開始するものであれば、1つの構成音として扱えば良い。図36の下欄には、トリガーデータが入力された時刻が「入力1」、「入力2」で示されている。この場合、情報処理装置720bは、「入力1」の時刻において、この時刻に開始時刻が最も近い2番目の開始時刻に対応する3つのMIDIイベントをMIDI音源を用いて再生させる。また、楽音信号生成装置10は、「入力2」の時刻において、この時刻に開始時刻が最も近い4番目の開始時刻に対応する4つのMIDIイベントをMIDI音源を用いて再生させる。これら4つのMIDIイベントは、開始時刻がそれぞれ異なるため、情報処理装置720bは、「入力2」の時刻に、開始時刻が最も速いMIDIイベントを再生し、各々の開始時刻に達したところで、他のMIDIイベントをそれぞれ再生させる。
(変形例46)
第1実施形態及び第2実施形態において、楽音信号生成装置10は、伴奏データ及び小節線クロックを示すデータを、伴奏データベース201、伴奏選択部101及び小節線クロック生成部102に相当する機能を備えた外部装置から取得してもよい。この場合、楽音信号生成装置10は、取得部500を介してこれらのデータを取得し、伴奏データを第2信号生成部108に供給し、小節線クロックを示すデータをトリガー時刻出力部103に供給すればよい。
(変形例47)
第1実施形態及び第2実施形態において、第1信号生成部107が生成した構成音を示す楽音信号と、第2信号生成部108が生成した伴奏音を示す楽音信号とをミキシングする前に、音量バランスを調整してもよい。例えば、楽音信号生成装置10は、ユーザによる操作部400(ボタンやフェーダー、つまみなど)の操作に応じて、これらの音の音量バランスを調整すればよい。
(変形例48)
<近いものではなく、トリガー時刻を含む区間の音を再生>
第1実施形態及び第2実施形態において、特定部106が特定する構成音は、フレーズデータにおいて、その開始時刻がトリガー時刻に最も時間的に近い構成音に限らず、次のようにしてもよい。本変形例において、フレーズデータが例えば図3に示すようなものである場合、特定部106は、トリガー時刻が時刻t0から時刻t1の間に含まれる場合、「01」の構成音を特定する。つまり、特定部106は、その開始時刻から終了時刻の間にトリガー時刻が含まれる構成音を特定する。このようにすれば、ユーザは、例えばその演奏操作のタイミングが遅れてしまうようなことがあっても、フレーズデータを構成する各構成音どおりの音を得ることができる。
(変形例49)
本発明は、楽音信号生成装置や楽音データ処理装置以外にも、これらを実現するための方法や、コンピュータに図2、図7及び図16に示した機能を実現させるためのプログラムとしても把握される。かかるプログラムは、これを記憶させた光ディスク等の記録媒体の形態で提供されたり、インターネット等を介して、コンピュータにダウンロードさせ、これをインストールして利用させるなどの形態でも提供されたりする。
(変形例50)
第3実施形態及び第4実施形態における検索モードについては、上述の実施形態における自動伴奏モード、差し替え検索モード、追従検索モードの3種類とは別に、以下のようなモードの切り替えが考えられる。1つ目は、常に検索処理が小節ごとに自動で動作しており、類似した最上位の1つあるいは類似した所定数の検索結果が自動で再生されるモードである。このモードは、主に自動伴奏などを用途として用いられる。2つ目は、ユーザが検索の開始を指示したときにメトロノームのみが再生され、ユーザがリズムを入力すると、リズム入力が終了後、自動で又は操作の指示を与えたことを契機として、検索結果が表示されるモードである。
(その他の変形例)
第3実施形態及び第4実施形態においては、ステップSb6におけるリズムパターンのズレの計算において、Aを基準としたBの時刻差と、Bを基準としたAの時刻差との2つを用いていたが(symmetric Distance方式という)、これに限らず、両者のうちどちらか一方のみを用いて計算を行ってもよい。
また、MIDIデータを用いて検索又は再生を行う場合、マルチトラックで複数のパートの演奏データを再生するものにおいて、特定のトラックに対して検索を行うようにしてもよい。
また、第3実施形態及び第4実施形態において、リズムカテゴリの判定(ステップSb2〜ステップSb5)を省略して、リズムパターンのズレの計算(ステップSb6)の結果のみを用いて、ステップSb7におけるリズムパターン同士の距離を行ってもよい。
また、第3実施形態及び第4実施形態におけるリズムパターンのズレの計算(ステップSb6)において、算出されたズレの値に、相当する構成音のアタック強度を乗算することで、より強いアタック強度を持つ構成音を含むリズムパターンレコードが、検索結果の候補から外れやすくなるようにしてもよい。
実施形態においては、自動伴奏データに1小節のものを用いていたが、音声の長さはこれに限る必要はない。
また、第3実施形態及び第4実施形態において、ユーザが演奏操作子に拠らずに操作部725を用いてパートを指定可能としてもよい。この場合、ユーザが、パートを指定したあとに演奏操作子を操作すると、指定されたパートの入力が行われることとなる。例えば、ユーザが、操作部725を用いて「ベース」のパートを指定すると、その後にコード入力音域鍵盤711bを操作しても、制御部721は、これを「ベース」のパートの入力とみなす、といった具合である。
また、第3実施形態及び第4実施形態においては、リズム入力装置710において、バスドラム入力パッド812a、スネアドラム入力パッド812b、ハイハット入力パッド812c、シンバル入力パッド812dというように、種類の異なる各々のリズムパートにパッドをひとつずつ割り当てていたが、これに限らず、音色の異なる複数のリズムパートについて単独のパッドで入力可能としてもよい。この場合、ユーザは、操作部725を用いて、リズムパートの種類を指定することが可能である。
また、上記の各実施形態では、リズムパターンデータは、0〜1の小数値で表記しているが、複数の整数値(たとえば、0〜96)で表記するようにしてもよい。
さらに、検出結果は、類似度の高いものを所定個数検出するようにしていたが、それ以外の条件で検出するようにしてもよい。たとえば、類似度が所定の範囲に入るものを検出するようにしてもよいし、その範囲をユーザが設定し、設定された範囲に含まれるものを検出するようにしてもよい。また、希望する類似度が、近すぎず遠すぎずのものを検索したいときは、所定の範囲の上限値と下限値を予めユーザが設定するようにすればよい。
また、楽音データ、自動伴奏データ、スタイルデータ等を編集する機能を備えさせてもよい。この場合、検出結果を表示した画面から、ユーザが、所望の楽音データ、自動伴奏データ、スタイルデータを選択する。そして、選択されたものを表示した画面では、選択されたデータがパート毎に展開して表示される。このような画面において、ユーザは、それぞれのパートについて、所望の楽音データ、自動伴奏データ、演奏データ等の各種データを編集できるようにしてもよい。
また、楽音データ、自動演奏データ及びスタイルデータに適用される音の内容は、楽器の音に限らず、人の声や動物の鳴声や効果音等、種々の音に適用できる。この場合、検索に必要な最低限のパラメータ(進行上の発音タイミング、音の強さ、音高等)を得られるものであればよい。音の内容として楽器以外の音も含む楽音データを「音データ」とする。
さらに、入力パターンは、演奏操作による入力だけでなく、ある閾値以上の音量の音声等を集音してそれを入力として入力パターンを得る等、他の手法で得られるようにしてもよい。