(57)【特許請求の範囲】
【請求項１】
伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報と、音の強度を示す強度データとを対応付けて記憶する記憶手段と、
前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、
前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、
前記音データが示す音のうち前記特定された区間の音を示す音信号を、前記入力の強度を示すベロシティデータに基づく音量で生成する生成手段と、
前記入力手段への入力を示すトリガーデータと前記ベロシティデータとが入力されたとき、入力されたベロシティデータで示される強度と、前記第１の特定手段によって特定された区間を示す区間情報に対応する強度データで規定される強度との差が閾値以上であるか否かを判断する判断手段と
を具備し、
前記判断手段によって前記差が閾値以上であると判断された場合に、前記第１の特定手段は、前記入力されたベロシティデータで示される強度に基づいて、前記複数の区間のいずれかの区間を特定する
ことを特徴とする音信号生成装置。
【請求項２】
伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、
前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、
前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、
前記音データが示す音のうち前記特定された区間の音を示す音信号を生成する生成手段と、
前記生成手段による音信号の生成の形態のモードを第１のモードと第２のモードから選択する選択手段と、
前記複数の区間の各々に対応した区間画像を表示する表示手段と、
前記区間画像のいずれかを指定する操作を受け付ける受付手段と、
前記受け付けられた操作によって指定された前記区間画像に対応する前記区間を特定する第２の特定手段とを具備し、
前記生成手段は、前記選択手段で第１のモードが選択されたときには前記第１の特定手段によって特定された区間の音を示す音信号を生成し、前記第２のモードが選択されたときには第２の特定手段によって特定された区間の音を示す音信号を生成する
ことを特徴とする音信号生成装置。
【請求項３】
伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、
前記再生期間において入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、
前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、
前記特定された区間がどの区間であっても、前記音データが示す音のうち当該特定された区間の音を示す音信号を生成する生成手段と
を具備することを特徴とする音信号生成装置。
【請求項４】
コンピュータを、
伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報と、音の強度を示す強度データとを対応付けて記憶する記憶手段と、
前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、
前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、
前記音データが示す音のうち前記特定された区間の音を示す音信号を、前記入力の強度を示すベロシティデータに基づく音量で生成する生成手段と、
前記入力手段への入力を示すトリガーデータと前記ベロシティデータとが入力されたとき、入力されたベロシティデータで示される強度と、前記第１の特定手段によって特定された区間を示す区間情報に対応する強度データで規定される強度との差が閾値以上であるか否かを判断する判断手段
として機能させ、
前記判断手段によって前記差が閾値以上であると判断された場合に、前記第１の特定手段は、前記入力されたベロシティデータで示される強度に基づいて、前記複数の区間のいずれかの区間を特定する
プログラム。
【請求項５】
コンピュータを、
伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、
前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、
前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、
前記音データが示す音のうち前記特定された区間の音を示す音信号を生成する生成手段と、
前記生成手段による音信号の生成の形態のモードを第１のモードと第２のモードから選択する選択手段と、
前記複数の区間の各々に対応した区間画像を表示する表示手段と、
前記区間画像のいずれかを指定する操作を受け付ける受付手段と、
前記受け付けられた操作によって指定された前記区間画像に対応する前記区間を特定する第２の特定手段
として機能させ、
前記生成手段は、前記選択手段で第１のモードが選択されたときには前記第１の特定手段によって特定された区間の音を示す音信号を生成し、前記第２のモードが選択されたときには第２の特定手段によって特定された区間の音を示す音信号を生成する
プログラム。
【請求項６】
コンピュータを、
伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、
前記再生期間において入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、
前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、
前記特定された区間がどの区間であっても、前記音データが示す音のうち当該特定された区間の音を示す音信号を生成する生成手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏操作等に基づいて音信号を生成する音信号生成装置、及び、コンピュータを当該音信号生成装置として機能させるプログラムに関する。
【背景技術】
【０００２】
従来より、楽曲の伴奏音を示すデータを複数の区間に区切るとともに、これらの区間のデータを、所定のキーを押下するなどの操作がなされるごとに順次再生する技術が知られている（特許文献１参照）。この技術によれば、楽曲の再生タイミングが区間の開始タイミングに達するごとに、演奏者（ユーザ）が所定のキーを押下すると、当該区間の伴奏音が再生されるので、簡単な操作で伴奏音を再生することが可能になる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２４４５４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ユーザは、他の伴奏に合わせて演奏操作する場合に、伴奏のある期間において、その期間に演奏されるべき音の数だけ演奏操作を行うとは限らない。ユーザが自分の好みのタイミングで行った（いわゆるアレンジをした）演奏操作や誤った演奏操作が行われた結果、本来その期間になされるべき回数よりも多い（又は少ない）演奏操作が行われる場合がある。このような場合、上記技術では、ユーザの意図した音よりも時間的に後ろ（又は前）の音が再生されてしまうことがある。
本発明は、このような事情に鑑みてなされたもので、その目的の１つは、ユーザが演奏や歌唱等に基づいて音の入力をする際に、演奏操作や発音・発声等がなされたときの時間的位置に対して適切な音を再生する技術を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するために本発明に係る音信号生成装置は、伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報と、音の強度を示す強度データとを対応付けて記憶する記憶手段と、前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、前記音データが示す音のうち前記特定された区間の音を示す音信号を、前記入力の強度を示すベロシティデータに基づく音量で生成する生成手段と、前記入力手段への入力を示すトリガーデータと前記ベロシティデータとが入力されたとき、入力されたベロシティデータで示される強度と、前記第１の特定手段によって特定された区間を示す区間情報に対応する強度データで規定される強度との差が閾値以上であるか否かを判断する判断手段とを具備し、前記判断手段によって前記差が閾値以上であると判断された場合に、前記第１の特定手段は、前記入力されたベロシティデータで示される強度に基づいて、前記複数の区間のいずれかの区間を特定することを特徴とする。
【０００６】
また、本発明に係る音信号生成装置は、伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、前記音データが示す音のうち前記特定された区間の音を示す音信号を生成する生成手段と、前記生成手段による音信号の生成の形態のモードを第１のモードと第２のモードから選択する選択手段と、前記複数の区間の各々に対応した区間画像を表示する表示手段と、前記区間画像のいずれかを指定する操作を受け付ける受付手段と、前記受け付けられた操作によって指定された前記区間画像に対応する前記区間を特定する第２の特定手段とを具備し、前記生成手段は、前記選択手段で第１のモードが選択されたときには前記第１の特定手段によって特定された区間の音を示す音信号を生成し、前記第２のモードが選択されたときには第２の特定手段によって特定された区間の音を示す音信号を生成することを特徴とする。
【０００７】
また、本発明に係る音信号生成装置は、伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、前記再生期間において入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、前記特定された区間がどの区間であっても、前記音データが示す音のうち当該特定された区間の音を示す音信号を生成する生成手段とを具備することを特徴とすることを特徴とする。
【０００９】
また本発明は、コンピュータを、伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報と、音の強度を示す強度データとを対応付けて記憶する記憶手段と、前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、前記音データが示す音のうち前記特定された区間の音を示す音信号を、前記入力の強度を示すベロシティデータに基づく音量で生成する生成手段と、前記入力手段への入力を示すトリガーデータと前記ベロシティデータとが入力されたとき、入力されたベロシティデータで示される強度と、前記第１の特定手段によって特定された区間を示す区間情報に対応する強度データで規定される強度との差が閾値以上であるか否かを判断する判断手段として機能させ、前記判断手段によって前記差が閾値以上であると判断された場合に、前記第１の特定手段は、前記入力されたベロシティデータで示される強度に基づいて、前記複数の区間のいずれかの区間を特定するプログラムを提供する。
【００１２】
また、本発明は、コンピュータを、伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、前記再生期間における入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、前記音データが示す音のうち前記特定された区間の音を示す音信号を生成する生成手段と、前記生成手段による音信号の生成の形態のモードを第１のモードと第２のモードから選択する選択手段と、前記複数の区間の各々に対応した区間画像を表示する表示手段と、前記区間画像のいずれかを指定する操作を受け付ける受付手段と、前記受け付けられた操作によって指定された前記区間画像に対応する前記区間を特定する第２の特定手段として機能させ、前記生成手段は、前記選択手段で第１のモードが選択されたときには前記第１の特定手段によって特定された区間の音を示す音信号を生成し、前記第２のモードが選択されたときには第２の特定手段によって特定された区間の音を示す音信号を生成するプログラムを提供する。
また、本発明は、コンピュータを、伴奏の再生期間のうち、予め決められた期間の音を示す音データと、当該期間を複数に分ける各区間を示す区間情報とを対応付けて記憶する記憶手段と、前記再生期間において入力手段への入力に基づいて、当該入力された前記期間におけるタイミングを示すトリガー時刻を出力するトリガー時刻出力手段と、前記トリガー時刻と前記区間情報との関係に基づいて、前記複数の区間のいずれかの区間を特定する第１の特定手段と、前記特定された区間がどの区間であっても、前記音データが示す音のうち当該特定された区間の音を示す音信号を生成する生成手段として機能させるためのプログラムを提供する。
【発明の効果】
【００１３】
本発明によれば、ユーザが演奏や歌唱等に基づいての音の入力をする際に、演奏操作や発声等がなされたときの時間的位置に対して適切な音を再生する技術を提供することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係る演奏システムの構成を示すブロック図
【図２】楽音信号生成装置における機能の構成を示すブロック図
【図３】小節線クロックを説明するための図
【図４】制御部が楽音信号を生成する処理を示すフローチャート
【図５】フレーズデータの一例を示す図
【図６】フレーズの再生結果の一例を示す図
【図７】楽音信号生成装置における機能の構成を示すブロック図
【図８】フレーズの再生結果の一例を示す図
【図９】フレーズのループ再生を説明するための図
【図１０】演奏操作のタイミングと再生される音との関係を説明するための図
【図１１】第３実施形態に係る音楽データ作成システムの構成図
【図１２】リズム入力装置を表す模式図
【図１３】情報処理装置のハードウェア構成を表すブロック図
【図１４】自動伴奏ＤＢに含まれるテーブルの内容を表す模式図
【図１５Ａ】自動伴奏ＤＢに含まれるテーブルの内容を表す模式図
【図１５Ｂ】自動伴奏ＤＢに含まれるテーブルの内容を表す模式図
【図１６】情報処理装置及びその周辺の機能的構成を表すブロック図
【図１７】第３実施形態に係る情報処理装置が行う処理のフローチャート
【図１８】検索処理のフローチャート
【図１９】オンセット時刻間隔の分布表を表す図
【図２０】リズムパターンにおけるズレの計算を説明するための模式図
【図２１】自動伴奏データについての検索結果の一覧を表した模式図
【図２２】ＢＰＭの同期処理を説明する模式図
【図２３】キーテーブルの一例を表す図
【図２４Ａ】スタイルデータに関するテーブルの一例を表す図
【図２４Ｂ】スタイルデータに関するテーブルの一例を表す図
【図２５】第４実施形態に係る情報処理装置が行う処理のフローチャート
【図２６】スタイルレコードの検索結果の一例を表す図
【図２７】スタイルレコードの構成表示画面の一例を表す図
【図２８】プレイバックモードにおける表示内容を表す模式図
【図２９】楽音データにおける各構成音に対して、フェードアウトが適用された場合を表す模式図
【図３０】オンセット時刻間隔テーブルの一例を表す図
【図３１】距離参照表の一例を表す図
【図３２】オンセット時刻テーブルの一例を表す図
【図３３】メロディパターンを用いた検索の処理内容を表す模式図
【図３４】複数小節のリズムパターンを検索する場合の処理内容を表す模式図
【図３５】移動通信端末を表す図
【図３６】複数のＭＩＤＩイベントの再生を説明するための図
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面を参照して説明する。まず、本発明の基本となる第１実施形態について説明する。
＜第１実施形態＞
（楽音信号生成装置）
＜構成＞
図１は、本発明の第１実施形態に係る楽音信号生成装置１０について、当該楽音信号生成装置１０を含めた演奏システム１全体のハードウェア構成を示すブロック図である。この図に示されるように、演奏システム１は、楽音信号生成装置１０と、入力装置２０と、スピーカー３０とを有する。
【００１６】
このうち、楽音信号生成装置１０は、制御部１００と、記憶部２００と、表示部３００と、操作部４００と、取得部５００と、ミキサー６００と、アンプ７００とを備える。制御部１００は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）及び時計部Ｔを有する。ＣＰＵは、ＲＯＭ又は記憶部２００に記憶されている機能プログラムをＲＡＭにロードして実行することによって、各種の機能ブロックを構築する。ＲＡＭは、ＣＰＵが機能プログラムを実行する際に、データ等を一時的に記憶する領域としても機能する。時計部Ｔは、内部で生成したクロック信号に基づき時刻をミリ秒単位で算出する機能を有する。
【００１７】
記憶部２００は、ハードディスクドライブなどにより構成され、演奏に用いられる楽曲データを記憶するものであり、特に本実施形態では、後述するように伴奏データベース２０１及びフレーズデータベース２０２が構築される。表示部３００は、制御部１００の制御によって画像を表示するものである。操作部４００は、キーボードや、マウス、フェーダー、ボタン、つまみ、表示部３００の画面に設けられたタッチパネルなどである。操作部４００は、ユーザによって操作されると、その操作内容を示すデータを制御部１００に供給する。取得部５００は、入力装置２０から供給されるデータを取得するインターフェースであり、取得したデータを制御部１００に供給する。ミキサー６００は、複数の楽音信号をミキシングする。アンプ７００は、ミキシングされた楽音信号を増幅する。
【００１８】
一方、入力装置２０は、ドラムパッドのように打撃面２１を有する。演奏時においてユーザが打撃部材２２によって打撃面２１を打撃すると、入力装置２０は、打撃されたこと、すなわち演奏操作されたことを示すトリガーデータと、打撃の強度、すなわち当該演奏操作の強度を示すベロシティデータとを、取得部５００を介して制御部１００に供給する。スピーカー３０は、増幅された楽音信号を音響変換して外部に出力する。
【００１９】
次に、このようなハードウェア構成において、制御部１００が機能プログラムを実行したときに構築される機能ブロックについて、図２を参照して説明する。伴奏データベース２０１は、楽曲を構成する伴奏データをパート毎に記憶する。伴奏データには、その伴奏が再生されたときに時間的な再生位置を示す再生時刻データと、伴奏における小節線の時間的な位置を示す小節線時刻データとが付随する。なお、再生時刻データ及び小節線時刻データは、その時間的な位置を、楽曲の演奏開始時刻を起点とした経過時間で示し、本実施形態にあっては最小単位をｍｓｅｃ（ミリ秒）で規定する。また、伴奏データベースは、伴奏データを複数の楽曲分記憶する。
【００２０】
伴奏選択部１０１は、操作部４００を介して選択された楽曲に対応する伴奏データと、これに付随する再生時刻データと小節線時刻データとを伴奏データベース２０１から読み出すものである。小節線クロック生成部１０２は、演奏の開始が指示されたときに演奏の進行にともなって更新される再生時刻データを、小節線時刻データで示される小節線で正規化した小節線クロックに、時計部Ｔによるクロック信号を用いて変換（再計算）するものである。詳細には、再生時刻データで示される時間的な位置が、ある小節線から次の小節線までの区間に入っているとき、小節線クロック生成部１０２は、ある小節線の時刻を「０．０００」とし、次の小節線の時刻を「１．０００」として正規化するとともに、再生時刻データで示される時間的な再生位置が「０．０００」から「１．０００」までの正規化区間においてどの位置であるかを示す値を小節線クロックとして出力する。
【００２１】
ここで、小節線クロックなる概念について図３を参照して補足的に説明する。
この図は、再生時刻データで示される時間的位置が例えば「２分６８００ｍｓｅｃ」であって、その時間的位置を前後で挟む小節線のうち、時間的前方の小節線の時刻が「２分６０００ｍｓｅｃ」であり、時間的後方の小節線の時刻が「２分８０００ｍｓｅｃ」である場合を示している。この場合、時間的前方の小節線が「０．０００」に、時間的後方の小節線が「１．０００」に、それぞれ正規化されるので、再生時刻データで示される時間的な位置は、小節線クロックの「０．４００」に変換されることになる。なお、図３における信号波形は、当該小節線区間において再生されるべき伴奏データの一例を示している。また、この小節線クロックは、再生時刻データが演奏の進行にともなって更新されるのに合わせて、逐一更新される。
【００２２】
説明を再び図２に戻すと、トリガー時刻出力部１０３は、トリガーデータが取得部５００を介して入力装置２０から供給されたときに、その供給時点における小節線クロックをトリガー時刻データとして出力するものである。なお、トリガー時刻出力部１０３は、トリガーデータが供給されると、その都度、トリガー時刻データを出力する。
【００２３】
一方、フレーズデータベース２０２は、ユーザが演奏する伴奏のうち、例えば１小節分のフレーズを演奏するためのフレーズデータを複数種類にわたって記憶する。このフレーズデータは、１小節分のフレーズが例えば図５に示されるような信号波形で示されるとともに、「０１」〜「０６」の区間でそれぞれ規定される６つの構成音からなる場合、６つの構成音の信号波形をそれぞれ規定するデータと、各音の開始時刻をそれぞれ小節線で正規化して示す開始時刻データとによって構成される。なお、この図５においては、「０１」の区間で規定された構成音の開始時刻ｔ０が「０．０００」であり、「０２」の区間で規定された構成音の開始時刻ｔ１が「０．１２７」であり、「０３」の区間で規定された構成音の開始時刻ｔ２が「０．３７３」であり、「０４」の区間で規定された構成音の開始時刻ｔ３が「０．５０１」であり、「０５」の区間で規定された構成音の開始時刻ｔ４が「０．６２８」であり、「０６」の区間で規定された構成音の開始時刻ｔ５が「０．７５１」である例を示している。
【００２４】
フレーズ選択部１０４は、演奏に用いるフレーズが操作部４００によって選択された場合に、当該選択されたフレーズに対応するフレーズデータを、フレーズデータベース２０２から読み出すものである。一時記憶部１０５は、ＲＡＭの一部に割り当てられた記憶領域であり、フレーズ選択部１０４によってフレーズデータベース２０２から読み出されたフレーズデータを一時的に記憶するものである。
【００２５】
特定部１０６は、トリガー時刻出力部１０３からトリガー時刻データが出力されたときに、フレーズデータの開始時刻データのうち、当該トリガー開始時刻に最も近いものを特定し、特定した開始時刻データに対応する構成音のデータを一時記憶部１０５から読み出すものである。特定部１０６は、本発明にかかる第１の特定手段の一例である。第１信号生成部１０７は、一時記憶部１０５から読み出された構成音のデータを楽音信号に、入力装置２０から取得部５００を介して供給されたベロシティデータで示される音量になるように変換するものである。一方、第２信号生成部１０８は、操作部４００を介して演奏の開始が指示されたときに、伴奏選択部１０１から転送された伴奏データから楽音信号を生成するものである。なお、本実施形態では、伴奏データについては伴奏音をサンプルした波形データとし、伴奏選択部１０１が、演奏開始が指示されたときに波形データを第２信号生成部１０８に転送する構成とする。ここで、伴奏データを波形データ以外のデータ、例えばＭＩＤＩ（Musical Instruments Digital Interface）データとする場合には、第２信号生成部１０８が、ＭＩＤＩデータを解釈して楽音信号を生成することになる。この場合、再生時刻データは、第２信号生成部１０８が、楽音信号の生成にともなって小節線クロック生成部１０２に供給する構成にすれば良い。
【００２６】
＜動作＞
次に、第１実施形態に係る楽音信号生成装置１０の動作について説明する。まず、ユーザは、操作部４００を操作して、演奏を希望する楽曲を選択する。これにより、伴奏選択部１０１は、選択された楽曲に係る伴奏データと、当該伴奏データに付随する小節線時刻データとを、伴奏データベース２０１から読み出し、このうち、小節線時刻データを事前に小節線クロック生成部１０２に転送する。また、ユーザは、操作部４００を操作して、演奏を希望するフレーズを選択する。これにより、フレーズ選択部１０４は、選択されたフレーズに係るフレーズデータをフレーズデータベース２０２から読み出して、一時記憶部１０５に記憶させるとともに、当該フレーズデータの開始時刻データを特定部１０６に供給する。この状態において、ユーザが操作部４００を操作して演奏開始を指示すると、第１に、伴奏選択部１０１は、伴奏データベース２０１から読み出した伴奏データを、指定されたキー及びテンポに対応するように必要に応じて変換して、第２信号生成部１０８に転送する。これによって、第２信号生成部１０８は、選択された楽曲の伴奏音を示す楽音信号を、指定されたテンポ及びキーにしたがって生成することになる。第２に、伴奏選択部１０１は、読み出した伴奏データに付随する再生時刻データを、第２信号生成部１０８への伴奏データの転送に合わせて、すなわち演奏の進行に合わせて、小節線クロック生成部１０２に供給する。
【００２７】
小節線クロック生成部１０２は、第１に、演奏の開始指示後に演奏の進行に合わせて逐一される再生時刻データを入力したときに、当該再生時刻データで示される時間的位置が、どの小節線に挟まれた区間であるのかを判別し、第２に、判別した小節線の区間で当該再生時刻データを正規化し、小節線クロックとして逐一変換して出力する。
【００２８】
第１実施形態では、演奏開始の指示がなされると、選択された楽曲の伴奏音を示す楽音信号が第２信号生成部１０８によって生成され、スピーカー３０によって発音される。これにより、ユーザが演奏するフレーズ以外の伴奏音の再生が進行することになる。このとき、小節線クロック生成部１０２は、再生時刻で示される演奏の時間的位置を小節線クロックに正規化して逐一出力している。この状態において、ユーザが打撃部材２２によって打撃面２１を打撃したか否かによって動作が分かれる。そこで以下については、この動作について説明することにする。
【００２９】
図４は、このときの動作を説明するフローチャートである。まず、ステップＳ５０において、トリガー時刻出力部１０３は、取得部５００を介してトリガーデータが入力されたか否かを判別する。トリガーデータが入力されていなければ、以下の処理は不要なので、手順はステップＳ９０にスキップする。一方、トリガーデータが入力されたのであれば、ステップＳ６０において、トリガー時刻出力部１０３は、トリガーデータが入力された時点において小節線クロック生成部１０２から出力されている小節線クロックをトリガー時刻データとして特定部１０６に供給する。特定部１０６は、トリガー時刻出力部１０３からトリガー時刻データの供給を受けると、ステップＳ７１〜Ｓ７６において、当該トリガー時刻データで示されるトリガー時刻ｔに対し、フレーズデータにおいて各構成音の開始時刻が最も時間的に近い構成音を特定する。
【００３０】
例えば、フレーズデータが図５に示したように６音で構成されて、当該フレーズが繰り返されると仮定した場合、トリガー開始時刻データで示される時刻ｔから次のようにして構成音が特定される。すなわち、時刻ｔが、時刻ｔ０と時刻ｔ１との中間地点以降から、時刻ｔ１と時刻ｔ２との中間地点よりも手前の地点までの範囲であれば、「０２」の構成音が特定される（ステップＳ７２）。同様に、トリガー開始時刻ｔが、時刻ｔ１と時刻ｔ２との中間地点以降から、時刻ｔ２と時刻ｔ３との中間地点よりも手前の地点までの範囲であれば、「０３」の構成音が特定され、時刻ｔ２と時刻ｔ３の中間地点以降から、時刻ｔ３と時刻ｔ４との中間地点よりも手前の地点までの時間的な範囲であれば、「０４」の構成音が特定され、時刻ｔ３と時刻ｔ４との中間地点以降から、時刻ｔ４と時刻ｔ５との中間地点よりも手前の地点までの範囲であれば、「０５」の構成音が特定される。このように、フレーズデータは複数の区間に分けられており、各々の区間には各構成音が対応している。上述した「時刻ｔ１」や「時刻ｔ２」は、各区間を示す区間情報の一例である。また、フレーズの繰り返しを考慮すると、時刻ｔが、１つ前のフレーズにおける時刻ｔ５と今回のフレーズにおける時刻ｔ０との中間地点以降から、時刻ｔ０と時刻ｔ１との中間地点よりも手前の地点までの時間的な範囲であれば、「０１」の構成音が特定され（ステップＳ７１）、時刻ｔ４と時刻ｔ５との中間地点以降から、時刻ｔ５と１つ後のフレーズにおける時刻ｔ０との中間地点よりも手前の地点までの範囲であれば、「０６」の構成音が特定される（ステップＳ７６）。
【００３１】
そして、特定部１０６は、特定した構成音のデータを一時記憶部１０５から読み出して、第１信号生成部１０７に供給する。これにより、ステップＳ８０において、第１信号生成部１０７は、特定された構成音の楽音信号を、ベロシティデータで示される強度の音量で生成して、ミキサー６００に供給する。この楽音信号は、他の伴奏音を示す楽音信号とミキサー６００によってミキシングされた後、スピーカー３０によって音響変換されて発音される。
【００３２】
なお、ステップＳ５０の判別結果が「Ｎｏ」である場合、又は、ステップＳ８０の終了後、演奏継続すべきか否かが伴奏選択部１０１によって判別されて、判別結果が「Ｙｅｓ」であれば、手順が再びステップＳ５０に戻る一方、判別結果が「Ｎｏ」であれば、この処理が終了する。なお、演奏継続すべきとは、例えば第２信号生成部１０８に伴奏データを転送している途中であることや、操作部４００によって演奏停止が指示されていないことなどを意味する。これにより、ステップＳ５０からＳ９０までの処理が、選択された楽曲の伴奏データがすべて転送されて演奏が終了するまで、又は、演奏停止が指示されるまで、繰り返し実行される。
【００３３】
ところで、演奏の一部においては、選択したフレーズとほぼ同じリズムパターンで演奏操作しつつも、演奏の他の一部では、選択したフレーズにはないタイミングで演奏操作を追加したり、逆に、選択したフレーズに存在するタイミングでの演奏操作を省略したりするケースがある。このようなケースにおいて、従来で述べたように、ユーザが所定の操作をする毎に区間のデータを順次再生する技術では、再生される音に破綻が生じてしまう。例えば、１小節内のフレーズのうち、前半部分において全く演奏操作をしない状態で、後半部分で演奏操作を加えると、前半部分の構成音が、後半部分で演奏操作したリズムパターンで発生することになり、ユーザの意図から全く外れてしまうことになる。
【００３４】
これに対して第１実施形態に係る楽音信号生成装置１０によれば、例えば、図６の上欄に示されるようにフレーズデータの構成音と開始時刻データとが規定されている場合に、ユーザによって演奏操作が下向きの矢印で示される時刻（トリガー時刻）になされたとき、下欄で示されるように構成音が再生される。詳細には、左から１つ目のトリガー時刻に演奏操作がなされると、開始時刻が最も近い「０１」の構成音が、ベロシティデータにしたがった強度で発音される。以下同様に２つ目〜６つ目のトリガー時刻に演奏操作がなされると、開始時刻が最も近い「０１」〜「０６」の構成音が、それぞれベロシティデータにしたがった強度で発音される。
したがって、第１実施形態に係る楽音信号生成装置１０では、選択したフレーズのうち、あるタイミングで演奏操作しなくても、次回演奏操作したときに、その演奏操作したタイミングに最も近い構成音が自動的に選択されて再生されるので、ユーザの意図から全く外れた構成音が再生されてしまう、という不都合を回避することが可能になる。また、第１実施形態に係る楽音信号生成装置１０では、選択したフレーズとほぼ同じリズムパターンで演奏操作されたとき、選択したフレーズがほぼフレーズデータで規定される通りに再生されることにもなる。
【００３５】
なお、第１実施形態に係る楽音信号生成装置１０に対しては、次のような機能を追加しても良い。例えば、ユーザによって選択されたフレーズが伴奏に合わせて、演奏操作なしにループ再生されるように楽音信号を生成しても良い（ループ再生）。詳細には、楽音信号生成装置１０は、伴奏の再生中に、小節線クロックがフレーズデータの開始時刻に至ったときに、その開始時刻の構成音のデータを一時記憶部１０５から読み出して第１信号生成部に転送する構成としても良い。フレーズが繰り返される場合、小節線クロックも「０」から「１」までカウントすると、再び「０」から「１」までのカウントを繰り返すループに入るので、このループの周期でフレーズが繰り返されることになる。
【００３６】
図９は、このフレーズのループ再生を説明するための図である。詳細には、図５に示したフレーズデータを一例として示しており、小節クロックが時刻ｔ１〜ｔ５にそれぞれ達する毎に、「０１」〜「０６」の構成音がそれぞれ再生される状態が示されている。ユーザは、ループ再生されるフレーズを聞くことで、選択したフレーズの音量や、リズムパターン、音色などを確認することができる。
【００３７】
また、楽音信号生成装置１０は、演奏操作があった場合は、上述したように演奏操作したタイミングに最も近い構成音を再生するとともに、演奏操作したタイミングを示すトリガー時刻データを順番に記憶する一方、演奏操作がなくなった場合には、記憶したトリガー時刻データを順番に読み出して、前の小節で再生した構成音を再度繰り返して再生するように構成しても良い（パーカッションループ再生）。これにより、ユーザは、演奏操作をしている場合にはフレーズを演奏することができ、演奏操作をやめた場合には、直前に演奏したフレーズの音を確認することができる。
【００３８】
楽音信号生成装置１０は、ユーザによる操作部４００への所定の操作により、小節の最初からフレーズが再生されるように楽音信号を生成しても良い。これにより、ユーザは、フレーズの最初がどこなのかを確認したり、上記ループ再生やパーカッションループ再生において、フレーズの一部分だけを繰り返し再生して演奏に変化を付けたりすることができる。
【００３９】
演奏操作に基づき再生されたフレーズを小節単位で録音し、ループ素材で用いられるフォーマットで出力するように構成しても良い。これにより、ユーザは、楽曲を作成する際自分がほしいリズムパターンやグルーブのループ素材がない場合に、そのループ素材の楽器音と同じ楽器の似たフレーズを選択して演奏することで、所望のフレーズと比較的イメージが近いループ素材を得ることができる。また、楽音信号生成装置１０は、ユーザが演奏する伴奏を複数トラックにわたって設定するとともに、トラック毎に、実施形態で説明した再生、上記ループ再生、上記パーカッションループ再生を個別に設定しても良い。これにより、複数の操作子に個別の楽器をアサインして、演奏することが可能となる。
【００４０】
＜第２実施形態＞
（楽音信号生成装置の別態様）
次に、本発明の第２実施形態に係る楽音信号生成装置について説明する。なお、第２実施形態に係る楽音信号生成装置は、第１実施形態に係る楽音信号生成装置と、ハードウェア構成が同一であり、機能ブロックだけが異なる。そこで以下では、この機能ブロックにおける相違点を中心に説明することにする。なお、第２実施形態に係る楽音信号生成装置１０については、その制御部において構築される機能ブロックが異なるので、説明の便宜上、制御部１００ａと表記して説明することとする。
【００４１】
図７は、第２実施形態に係る楽音信号生成装置１０において構築される機能ブロックを示す図である。図７が、図２に示した第１実施形態と相違する部分は、判断部１０９が追加されている点にある。この追加に関連した点について言及すると、フレーズデータでは、フレーズの構成音の強度を示す構成音強度データが、開始時刻データに対応付けられている。また、特定部１０６は、トリガー時刻出力部１０３からトリガー時刻データの供給を受けると、フレーズデータにおける開始時刻データのうち、当該トリガー開始時刻データで示されるトリガー時刻に最も近い構成音のデータを特定して、特定した構成音の構成音強度データを判断部１０９に供給する。判断部１０９は、トリガーデータとともに出力されたベロシティデータと、特定部１０６から供給された構成音強度データとを比較して、それらの強度の差が予め定められた閾値以上であるか否かを判別する。判断部１０９は、この判断結果を示すデータとともに、強度の差が閾値以上であると判断した場合には判断に用いたベロシティデータも合わせて特定部１０６に返信する。
【００４２】
特定部１０６は、判断部１０９から差が閾値以上である旨の判断結果を受領した場合、トリガー開始時刻に開始時刻が最も近い構成音ではなく、構成音強度データで示される強度のうち、受領したベロシティデータで示される強度に最も近い構成音を特定して、特定した構成音のデータを一時記憶部１０５から読み出す。なお、特定部１０６は、判断部１０９から差が閾値よりも小さい旨の判断結果を受領した場合、第１実施形態と同様にトリガー開始時刻に開始時刻が最も近い構成音を特定して、特定した構成音のデータを一時記憶部１０５から読み出す。
なお、第１信号生成部１０７は、一時記憶部１０５から読み出された構成音のデータに基づく構成音の楽音信号を、ベロシティデータで示される強度の音量で生成して、ミキサー６００に供給する点については第１実施形態と同様である。
【００４３】
図８は、第２実施形態におけるフレーズの再生結果の一例を示す図である。
この例において、下向きの矢印が演奏タイミングを示し、矢印の長さが演奏操作の強度に対応している。このため、ユーザは、１、３回目の演奏操作を弱く、５、７回目の演奏操作を強くしている。図８において、１、３回目の演奏操作に対して、規定される構成音の開始時刻が最も近い区間はそれぞれ「０１」、「０２」であるが、１、３回目の演奏操作の強度に対して、区間「０１」、「０２」の強度の差がそれぞれ閾値以上であると判断されたために、１、３回目の演奏操作の強度に最も近い区間「０３」、「０５」の構成音にそれぞれ差し替えられている。同様に、５、７回目の演奏操作に対して、規定される構成音の開始時刻が最も近い区間はそれぞれ「０３」、「０５」であるが、５、７回目の演奏操作の強度に対して、区間「０３」、「０５」の強度の差がそれぞれ閾値以上であると判断されたために、５、７回目の演奏操作の強度に最も近い区間「０６」、「０１」の構成音にそれぞれ差し替えられている。
【００４４】
この第２実施形態によれば、演奏操作によるベロシティデータの強度と、選択されたフレーズの構成音の強度とが、閾値以上になるほど極端に差が生じている場合、トリガー時刻に開始時刻が最も近い構成音から、ベロシティデータに最も近い強度の構成音に差し替えられる。このため、選択されたフレーズの雰囲気を残しつつ、演奏操作に対応した強度に対応しないような構成音が再生されてしまうことがあるので、特に打楽器を演奏する場合の違和感やストレス感を軽減することが可能になる。
【００４５】
なお、第２実施形態においては、ベロシティデータで示される強度に最も近い強度の構成音を生成したが、このベロシティデータで示される強度に近い強度を有する複数の構成音からランダムに選んだ構成音を生成しても良い。これにより、楽音信号生成装置１０は、強度が最も近い構成音を生成する場合と比較して、再生される構成音が単調になることを抑えることができる。
【００４６】
また、第２実施形態においては、トリガー時刻が区間中の特定範囲にある場合に限って、演奏操作の強度に対応した構成音を生成し、それ以外の場合には、ベロシティデータで示される強度に対応した構成音を生成する構成としても良い。
図１０は、演奏操作のタイミングと再生される音との関係を説明するための図である。楽音信号生成装置１０は、トリガー時刻が各区間で規定された構成音の開始時刻を中心とした時間αの範囲、すなわち、各開始時刻の前後の時間α／２の範囲にある場合に限って、その開始時刻に始まる構成音を生成し、それ以外の範囲（図１０においてβ１〜β６で示した範囲）にある場合は、ベロシティデータで示される強度に対応した構成音の楽音信号を生成する。
【００４７】
次に、本発明の第３実施形態について説明する。
＜第３実施形態＞
（音楽データ作成システム）
＜構成＞
第３実施形態は、音楽データ処理システムの一例としての音楽データ作成システムであり、音楽データの一例として自動伴奏データを作成するシステムである。本実施形態における自動伴奏データは、電子楽器やシーケンサなどに読み込まれ、いわゆるＭＩＤＩの自動伴奏データと同様の役割を果たす。図１１は、第３実施形態における音楽データ作成システム１００を表す図である。音楽データ作成システム１００は、リズム入力装置７１０、及び情報処理装置７２０を備えており、各々が通信線により接続されて相互に通信ができるようになっている。この通信は、無線によって実現されてもよい。第３実施形態において、リズム入力装置７１０は、入力手段として例えば鍵盤とパッドを備えている。ユーザが、リズム入力装置７１０に設けられた鍵盤を押鍵することにより、リズム入力装置７１０は、押鍵されたこと、すなわち演奏操作がなされたことを示すトリガーデータと、押鍵の強度、すなわち当該演奏操作の強度を示すベロシティデータとを、１小節を単位として、情報処理装置７２０に入力する。ここで、トリガーデータは、ユーザが鍵盤を押鍵する毎に生成されるものであって、押鍵されたことを示すキーオン情報で表される。トリガーデータの各々にはベロシティデータが対応付けられている。１小節内に生成されたトリガーデータとベロシティデータの集合は、この１小節において、ユーザがリズム入力装置７１０を用いて入力したリズムのパターン（入力リズムパターンという）を表している。ユーザは、この入力リズムパターンを鍵盤の鍵域に対応したパートについて入力することになる。また、打楽器を示すパートについては、ユーザは、パッドを使って入力リズムパターンを入力する。このように、リズム入力装置７１０は、ユーザによる演奏操作が入力される入力手段の一例である。
【００４８】
情報処理装置７２０は、例えばＰＣ（Personal Computer）である。情報処理装置７２０は、自動伴奏データとその自動伴奏データを構成する各パートに用いられる楽音データを複数含んだデータベースとそれを利用するアプリケーションを備えている。このアプリケーションは、楽音データを検索する際に入力された入力リズムパターンに基づいてパートを選択するための選択機能と、作成中の自動伴奏データや作成後の自動伴奏データを再生する再生機能とを備えている。自動伴奏データは、各々が固有のリズムパターンを持つ複数のパートで構成され、各パートは、例えば、ベース、和音からなるコード、単音からなるフレーズ、バスドラム、スネアドラム、ハイハット、及びシンバル等であり、それらを組み合わせたものとなっている。具体的には、これらのデータは、自動伴奏データテーブルと該テーブルに規定されるｔｘｔやＷＡＶＥ等の各種ファイルで構成される。各パートのデータである楽音データは、それぞれ１つの音色で所定の長さ（例えば、２小節、４小節又は８小節など）を有する演奏音について、例えばＷＡＶＥやｍｐ３といったファイルフォーマットで記録されたものである。なお、データベースには、自動伴奏データを差替えする際に利用される、現時点では自動伴奏データにおいて未使用の楽音データも記録されている。
【００４９】
そして情報処理装置７２０は、このデータベースから、入力リズムパターンが入力された際のパートについて、選択機能によってリズム入力装置７１０から入力された入力リズムパターンと同一又は類似したリズムを持つ楽音データを検索し、検索結果の楽音データを有する自動伴奏データの名称等を一覧表示する。そして情報処理装置７２０は、一覧からユーザによって選択された自動伴奏データに基づく音を出力する。このとき、情報処理装置７２０は、検索結果の自動伴奏データに基づく音を繰り返し再生する。このように、ユーザが、複数のパートのいずれかについて入力した入力リズムパターンから自動伴奏データを検索し、その検索結果のなかから一つを選択すると、情報処理装置７２０は、選択された自動伴奏データに基づく音を再生する。既に選択されているパートがあれば、そのパートに所定のタイミング（例えば拍のタイミング）が同期するように、必要に応じてテンポを速くあるいは遅く変更させて再生する。このように、音楽データ作成システム１００では、各々異なる複数のパートが選択されて、選択されたパートについてユーザがリズムパターンを入力することで検索が行われる。そして、ユーザが、検索結果が表す自動伴奏データから任意のパートの自動伴奏データを選択して組み合わせることで、これらの自動伴奏データが同期しながら再生される。なお、検索機能は、ユーザが操作部７２５(後述)を操作することによってそのＯＮ／ＯＦＦが切り替えられる。
【００５０】
情報処理装置７２０がアプリケーションプログラムを実行するときの動作のモードとして、ループ再生モード、演奏再生モード、及び演奏ループ再生モードがある。ユーザは、情報処理装置７２０に備えられた操作部７２５（後述）を用いて、動作のモードを変更することが可能である。上記動作のモードがループ再生モードの場合、情報処理装置７２０は、各々異なるリズムパターンを持つ楽音データを複数記憶したデータベースにおいて、リズム入力装置７１０から入力された入力リズムパターンと同一又は最も類似したリズムパターンを有する楽音データを検索し、検索結果の楽音データを音に変換して出力する。このとき、情報処理装置７２０は、検索結果の楽音データに基づく音を繰り返し再生する。一方、上記動作のモードが演奏再生モードの場合、情報処理装置７２０は、上記検索結果の楽音データを音として出力するだけでなく、検索結果の楽音データにおける構成音を用いた演奏操作に基づく音を出力することが可能である。また、上記動作のモードが演奏ループ再生モードである場合、情報処理装置７２０は、検索結果の楽音データに基づく音を繰り返し出力するともに、ユーザが検索結果フレーズにおける構成音を用いて行った演奏操作に基づく音を繰り返し出力することが可能である。
【００５１】
図１２は、リズム入力装置７１０を表す模式図である。リズム入力装置７１０は、入力手段として鍵盤７１１及び入力パッド７１２を備えている。ユーザが、これらの入力手段を用いてリズムパターンを入力すると、情報処理装置７２０は入力リズムパターンに基づいて、楽音データを検索する。リズム入力装置７１０における鍵盤７１１の予め決められた鍵域又は入力パッド７１２の種類には、各々異なる上記パートの何れかが対応付けられている。例えば、鍵盤７１１の全鍵域は、２つのスプリットポイントで低音域鍵盤、中音域鍵盤と高音域鍵盤に分けられる。低音域鍵盤は、ベース入力音域鍵盤７１１ａとして利用され、ベースのパートが対応付けられている。中音域鍵盤は、コード入力音域鍵盤７１１ｂとして利用され、和音からなるコードのパートが対応付けられている。高音域鍵盤は、フレーズ入力音域鍵盤７１１ｃとして利用され、単音からなるフレーズのパートが対応付けられている。また、バスドラム入力パッド７１２ａには、バスドラムのパートが対応付けられている。スネアドラム入力パッド７１２ｂには、スネアドラムのパートが対応付けられている。ハイハット入力パッド７１２ｃには、ハイハットのパートが対応付けられている。シンバル入力パッド７１２ｄには、シンバルのパートが対応付けられている。ユーザは、リズム入力装置７１０において、押鍵する鍵盤７１１の鍵域又は押下する入力パッド７１２の種類を指定して演奏操作を行うことで、指定した入力手段に対応付けられたパートについて楽音データを検索することが可能である。このように、鍵盤１１及び入力パッド１２が、演奏操作子の各々と対応することとなる。
【００５２】
例えば、ユーザが、ベース入力音域鍵盤７１１ａに相当する鍵盤を押鍵してリズムパターンを入力すると、情報処理装置７２０は、当該リズムパターンと同一又は所定の類似度の範囲に含まれるリズムパターンを持つベースの楽音データを特定し、この特定されたベースの楽音データを検索結果として表示する。以降において、ユーザがリズムパターンを入力する際に操作する対象であることから、ベース入力音域鍵盤７１１ａ、コード入力音域鍵盤７１１ｂ、フレーズ入力音域鍵盤７１１ｃ、バスドラム入力パッド７１２ａ、スネアドラム入力パッド７１２ｂ、ハイハット入力パッド７１２ｃ、及びシンバル入力パッド７１２ｄのことを、演奏操作子と呼ぶ場合がある。ユーザがリズム入力装置７１０における或る演奏操作子を操作すると、リズム入力装置７１０は、当該操作に応じた例えば操作信号を情報処理装置７２０に入力する。ここで、この操作信号は、例えばＭＩＤＩ（Musical Instrument Digital Interface）形式の情報（以下、ＭＩＤＩ情報という）とする。ＭＩＤＩ情報には、上述したトリガーデータ及びベロシティデータのほかに、演奏操作子が鍵盤であればノートナンバーが含まれ、演奏操作子がパッドであればチャンネル情報が含まれる。情報処理装置７２０は、受け取ったＭＩＤＩ情報から、対象のパートを特定する。
【００５３】
また、リズム入力装置７１０は、ＢＰＭ入力操作子７１３を備える。ここで、ＢＰＭとは、１分間における拍の数であって、リズム入力装置７１０においてユーザに通知される楽音のテンポを表す。ＢＰＭ入力操作子７１３は、例えば液晶ディスプレイなどの表示面とホイールとで構成される。ユーザがホイールを回転させると、回転の停止位置に応じた値のＢＰＭが表示面に表示される。以降、ＢＰＭ入力操作子７１３を用いて入力されたＢＰＭのことを入力ＢＰＭという。リズム入力装置７１０は、入力リズムパターンとともに、入力ＢＰＭを識別する情報を含むＭＩＤＩ情報を情報処理装置７２０に入力する。情報処理装置７２０は、ＭＩＤＩ情報に含まれる入力ＢＰＭに基づいて、音を音声出力部７２６（後述）から出力したり、光を表示部７２４（後述）に点滅させて、ユーザに対してテンポと演奏進行タイミングを報知する（いわゆるメトロノームの機能である）。ユーザは、これらの音あるいは光から体感するテンポおよび演奏進行タイミングに基づいて、演奏操作子を操作する。
【００５４】
図１３は情報処理装置７２０のハードウェア構成を表すブロック図である。情報処理装置７２０は、制御部７２１、記憶部７２２、入出力インターフェース部７２３、表示部７２４、操作部７２５、及び音声出力部７２６を備えており、各部がバスを介して接続されている。制御部７２１、入出力インターフェース部７２３、表示部７２４、操作部７２５、及び音声出力部７２６は、第３実施形態におけるものと同様である。記憶部７２２は、自動伴奏ＤＢ７２２１を記憶している。自動伴奏ＤＢ７２２１は、自動伴奏データに関する各種情報と、楽音データと、これらのデータに関する各種情報を含んでいる。
【００５５】
図１４、図１５Ａ及び図１５Ｂは、自動伴奏ＤＢ７２２１に含まれるテーブルの内容を表す模式図である。自動伴奏ＤＢ７２２１には、パートテーブル、楽器種類テーブル、リズムカテゴリテーブル及びリズムパターンテーブルが含まれ、そして自動伴奏データの中に含まれる自動伴奏データテーブルが含まれている。図１４（ａ）はパートテーブルの一例を表したものである。「パートＩＤ」は、自動伴奏データを構成するパートを一意に識別するための識別子であり、例えば２桁の数字で表される。「パート名」は、パートの種類を表す名称であり、上述した「ベース」、「コード」、「フレーズ」、「バスドラム」、「スネアドラム」、「ハイハット」、及び「シンバル」といった異なるパート毎に、パートＩＤが対応付けられてパートテーブルに記述されている。なお、「パート名」は図１４（ａ）に表された内容に限ったものではない。「ノートナンバー」は、各パートが、鍵盤においてどの鍵域に割り当てられているかを表すＭＩＤＩ情報である。ＭＩＤＩ情報では、鍵盤における「中央ハ」にノートナンバー「６０」が割り当てられる。このノートナンバーを基準として、例えば図１４（ａ）に示されるように、「ベース」のパートには、ノートナンバーが第１の閾値「４５」以下のノートナンバーが割り当てられ、「フレーズ」のパートには、ノートナンバーが第２の閾値「７５」以上のノートナンバーが割り当てられ、「コード」のパートには、ノートナンバーが「４６」以上であって「７４」以下のノートナンバーが割り当てられている。なお、上述した第１の閾値及び第２の閾値は一例であり、この値に限ったものではない。また、第１の閾値及び第２の閾値はユーザにより変更可能としてもよい。
【００５６】
「チャンネル情報」は、各パートが、どの入力パッドに割り当てられているかを表すＭＩＤＩ情報である。例えば図１４（ａ）に示されるように、「バスドラム」のパートには「１２ａ」のチャンネル情報が割り当てられ、「スネアドラム」のパートには「１２ｂ」のチャンネル情報が割り当てられ、「ハイハット」のパートには「１２ｃ」のチャンネル情報が割り当てられ、「シンバル」のパートには「１２ｄ」のチャンネル情報が割り当てられている。
【００５７】
図１４（ｂ）は楽器種類テーブルの一例を表したものである。「楽器種類ＩＤ」は、楽器の種類を一意に識別するための識別子であり、例えば３桁の数字で表される。「楽器種類」は、楽器の種類を表す名称であり、例えば「ウッドベース」、「エレキベース」、「スラップベース」といった、異なる楽器の種類毎に、楽器種類ＩＤが対応付けられて楽器種類テーブルに記述されている。例えば楽器種類「ウッドベース」は、「００１」の楽器種類ＩＤに対応付けられて楽器種類テーブルに記述されている。その他の楽器種類についても、同様に各楽器種類ＩＤに対応付けられて、楽器種類テーブルに記述されている。なお、「楽器種類」は図１４（ｂ）に表された内容に限ったものではない。
【００５８】
図１４（ｃ）は、リズムカテゴリテーブルの一例を表したものである。「リズムカテゴリＩＤ」は、リズムパターンのカテゴリ（リズムカテゴリという）を一意に識別するための識別子であり、例えば２桁の数字で表される。ここでリズムパターンとは、予め定められた長さの期間において各々の音が発音される時刻の並びを表す。特にここにおいて、リズムパターンとは、１小節において各々の音が発音される時刻の並びを表す。「リズムカテゴリ」は、リズムカテゴリを表す名称であり、例えば「８分」、「１６分」、「８分３連」といった、異なるリズムカテゴリ毎に、リズムカテゴリＩＤが対応付けられてリズムカテゴリテーブルに記述されている。例えば「８分」のリズムカテゴリは、「０１」というリズムカテゴリＩＤが対応付けられてリズムカテゴリテーブルに記述されている。なお、「リズムカテゴリ」は図１４（ｃ）に表された内容に限ったものではない。例えば、拍子やジャンルといった大まかなカテゴリ分けをしたり、一つのリズムパターンごとに一つの別のカテゴリＩＤを割り当てるなど、より細かなカテゴリ分けをしたり、これらを組み合わせて複数階層のカテゴリを付与してもよい。
【００５９】
図１５Ａは、リズムパターンテーブルの一例を表したものである。リズムパターンテーブルには、パートを一意に識別するパートＩＤ毎にグループ化されたリズムパターンレコードが複数記述されている。図１５Ａにおいては、リズムパターンテーブルの一例として、パートが「ベース」（パートＩＤが「０１」）である複数のリズムパターンレコードが表されている。１件のリズムパターンレコードは、「自動伴奏ＩＤ」、「パートＩＤ」、「楽器種類ＩＤ」、「リズムカテゴリＩＤ」、「リズムパターンＩＤ」、「リズムパターンデータ」、「アタック強度パターンデータ」、「楽音データ」、「キー」、「ジャンル」、「ＢＰＭ」及び「コード」といった複数の項目からなる。このリズムパターンテーブルが、それぞれのパート毎に記述されている。
【００６０】
「自動伴奏ＩＤ」は、自動伴奏データを一意に識別するための識別子であり、各パートについて１つずつのリズムパターンレコードの組み合わせに対して、同一のＩＤが割り当てられている。例えば、同一の自動伴奏ＩＤを有する自動伴奏データは、例えばジャンル、キー又はＢＰＭといった項目について同一の内容を有するように予め組み合わせられることで、この自動伴奏データが複数のパートについて合奏で再生されたときに違和感の少ないものとなっている。上述したように「楽器種類ＩＤ」は、楽器の種類を一意に識別するための識別子である。同一のパートＩＤを持つリズムパターンレコードは、楽器種類ＩＤ毎にグループ化されており、ユーザはリズム入力装置７１０を用いてリズムの入力を行う前に、操作部７２５を用いて楽器の種類を選択することが可能である。ユーザによって選択された楽器の種類は、ＲＡＭに記憶される。「リズムカテゴリＩＤ」は、各々のリズムパターンレコードが、前述したリズムカテゴリのうち、どのリズムカテゴリに属するかを識別するための識別子である。例えば、図１５Ａにおいて「リズムカテゴリＩＤ」が「０１」であるリズムパターンレコードは、図１４（ｃ）のリズムカテゴリテーブルに表されるように、「８分」のリズムカテゴリに属する。「リズムパターンＩＤ」は、各々のリズムパターンレコードを一意に識別するための識別子であり、例えば９桁の数字からなる。この９桁の数字は、「パートＩＤ」２桁と、「楽器種類ＩＤ」３桁と、「リズムカテゴリＩＤ」２桁と、枝番２桁との組み合わせである。
【００６１】
「リズムパターンデータ」は、１小節を構成するフレーズにおける各構成音の発音開始時刻が記録されたデータファイルであり、例えばテキストファイルに、各構成音の発音開始時刻が記述されたものである。この発音開始時刻は、入力リズムパターンにおける、演奏操作がなされたことを示すトリガーデータに相当する。ここで、各構成音の発音開始時刻は、予め１小節の長さを１として正規化されている。つまり、「リズムパターンデータ」に記述される各構成音の発音開始時刻は、０から１の間の値を取る。
【００６２】
なお、リズムパターンデータは、上述のように、オペレーターによって市販のオーディオループ素材からゴーストノートが除外されることで作成される方法に限らず、予めコンピュータによって自動的にゴーストノートが除外されることで抽出されてもよい。例えば、リズムパターンデータの抽出元のデータがＭＩＤＩ形式の場合、コンピュータによって以下のような方法でリズムパターンデータが作成されてもよい。コンピュータのＣＰＵは、ＭＩＤＩ形式のデータから、チャンネルごとの構成音開始時刻を1小節の間、抽出し、リズム入力と判断しづらいゴーストノート（例えば、極端に小さなベロシティデータを持つものなど）を除外する。そしてコンピュータのＣＰＵは、ゴーストノートを除外した後のＭＩＤＩ形式のデータにおいて、和音入力のように一定時間内に複数の入力があった場合、これら複数の入力を1つのリズム入力にまとめる処理を行うことで、リズムパターンデータの作成を自動で行う。
【００６３】
また、ドラムスパートに関しては、１つのチャンネル内にバスドラム、スネアドラム、シンバルといった複数の楽器音が存在する場合もある。このような場合、コンピュータのＣＰＵは、以下のようにしてリズムパターンデータの抽出を行う。ドラムスの場合、ノートナンバーごとに対応している楽器音が決まっている場合が多い。例えば、ドラムスパートでノートナンバー「４０」にスネアドラムの音色が割り当てられているとする。これに基づいてコンピュータのＣＰＵは、伴奏音源のドラムスパートが収録されたチャンネルにおいて、スネアドラムの音が割り当てられているノートナンバーの構成音開始時刻を抽出することで、スネアドラムのリズムパターンデータの抽出を行う。
【００６４】
「アタック強度パターンデータ」は、１小節を構成するフレーズにおける各構成音のアタック強度が記録されたデータファイルであり、例えばテキストファイルに上記各構成音のアタック強度が数値として記述されたものである。このアタック強度は、入力リズムパターンにおける、演奏操作の強度を示すものであるベロシティデータに相当する。つまり、アタック強度とは、各構成音の強度を意味する。アタック強度は、ＭＩＤＩ情報のベロシティデータそのものとしてテキストファイルに記述されてもよい。
【００６５】
「楽音データ」は、リズムパターンレコードに基づく音そのものに関するデータファイルの名前であり、例えばＷＡＶＥやｍｐ３といった音声ファイルフォーマットからなる楽音データのファイルを示す。「キー」は、楽音データが示す楽音のキー（調）を表す。「ジャンル」は、リズムパターンレコードが所属する音楽のジャンルを表す。「ＢＰＭ」は、１分間における拍の数であって、リズムパターンレコードに含まれる楽音データに基づく音のテンポを表す。
【００６６】
「コード」は、楽音データが示す楽音の和音の種類を表す。「コード」は、そのパートがコード（和音の種類）であるリズムパターンレコードにおいて設定される。図１５Ａにおいては、「パートＩＤ」が「０２」であるリズムパターンレコードにおいて、「コード」の一例として「Ｍａｊ７」が示されている。パートがコードであるリズムパターンレコードは、一のリズムパターンＩＤについて複数種類の「コード」を有し、各々の「コード」に応じた楽音データを有する。図１５Ａの場合、リズムパターンＩＤが「０２００４０１０１」のリズムパターンレコードは、図示しない例えば「Ｍａｊ」、「７」、「ｍｉｎ」、「ｄｉｍ」、「Ｓｕｓ４」などの複数種類のコードについて、各々のコードに応じた楽音データを有する。このとき、同一のリズムパターンＩＤを有するリズムパターンレコードは、「楽音データ」と「コード」以外については同じ内容を有する。ここで、各リズムパターンレコードは、各コードのルート音（「キー」と同じ音高）のみで構成された楽音データと、各コードのルート音を除いたそれぞれの構成音で構成された楽音データとを有するようにしてもよい。この場合、制御部７２１は、ルート音で構成された楽音データが示す楽音と、ユーザにより指定されたコードを示し、ルート音を除く構成音で構成された楽音データが示す楽音とを同時に再生させる。図１５Ａにおいては、パートが“ベース”であるリズムパターンレコードを一例として表したが、実際にはリズムパターンテーブルには、図１５Ａにその一部を表しているように、複数の種類のパート（ここでは、コード、フレーズ、バスドラム、スネアドラム、ハイハット、シンバル）に応じたリズムパターンレコードが記述されている。
【００６７】
図１５Ｂは、自動伴奏データテーブルの一例を表す。このテーブルは、自動伴奏時に、パート毎に、どの楽音データをどのような条件で利用するかを規定するテーブルである。自動伴奏データテーブルの構成は、リズムパターンテーブルと同様である。テーブルの１行目に記述される自動伴奏データは、関連する特定パートが組み合わされたものであり、合奏時の自動伴奏に関する情報を規定する。この合奏時の自動伴奏に関する情報は、他のデータと区別されるために、「パートＩＤ」が「９９」であり、「楽器種類ＩＤ」が「９９９」であり、リズムパターンＩＤが「９９９９９０１０１」となっている。これらの各値は、そのデータが合奏による自動伴奏のデータであることを表している。また、合奏時の自動伴奏に関する情報は、各パートの楽音データが組み合わされて合成された一の楽音データを有する。この楽音データ「ＢｅＢｏｐ０１．ｗａｖ」が再生されると、全てのパートが組み合わさった状態で楽音が再生されることとなる。なお、自動伴奏データとして複数パートを一つの楽音データで演奏できるファイルは必ずしも必要ではなく、ないときには、楽音データの情報は空欄となる。合奏時の自動伴奏に関する情報における「リズムパターンデータ」及び「アタック強度パターンデータ」には、合奏時の自動伴奏の楽音（すなわちＢｅＢｏｐ０１．ｗａｖ）に基づくリズムパターンとアタック強度とが記述されている。また、図２３Ｂにおいて、パートＩＤ「０１」で表される２行目以降の自動伴奏データは、パート毎にユーザによって選択された内容を表す。ここでは、ユーザによって、パートＩＤ「０１」〜「０７」までの各パートについて、特定の楽器が指定されたうえで、「ＢｅＢｏｐ」スタイルの自動伴奏データが選択されている。また、リズム楽器に相当するパートの「キー」を未指定としたが、音高変換するときには、基準となる音高を指定するようにし、指定された音高と基準となる音高の音程に応じて、楽音データの音高を変換するようにしてもよい。
【００６８】
図１６は、情報処理装置７２０及びその周辺の機能構成を表すブロック図である。制御部７２１は、ＲＯＭや記憶部７２２に記憶されたアプリケーションを構成する各プログラムをＲＡＭに読み出して実行することにより、テンポ取得部７２１１、進行部７２１２、通知部７２１３、パート選択部７２１４、パターン取得部７２１５、検索部７２１６、特定部７２１７、出力部７２１８、コード受付部７２１９及び音高受付部７２２０の各機能を実現する。以降において、これら各部を主体として処理の説明を行うことがあるが、処理の主体の実体は、制御部７２１である。なお、以降の説明において「オンセット」とは、リズム入力装置７１０における入力状態がオフからオンに切り替わることを指す。例えば、「オンセット」とは、リズム入力装置７１０の入力手段が鍵盤であれば鍵盤が押鍵された状態のことであり、リズム入力装置７１０の入力手段がパッドであればパッドを叩かれた状態のことであり、リズム入力装置７１０の入力手段がボタンであればボタンが押下された状態のことである。これに対して「オフセット」とは、リズム入力装置７１０の入力手段が鍵盤であれば鍵盤が押鍵されてから離された状態のことであり、リズム入力装置７１０の入力手段がパッドであればパッドに対する打撃が完了した状態のことであり、リズム入力装置７１０の入力手段がボタンであれば押下されたボタンから指が離された状態のことである。また、以降の説明において「オンセット時刻」とは、リズム入力装置７１０における入力状態がオフからオンに切り替わった時の各々の時刻を表す。換言すれば、「オンセット時刻」とは、リズム入力装置７１０においてトリガーデータが発生した時刻を表す。これに対して、「オフセット時刻」とは、リズム入力装置７１０における入力状態がオンからオフに切り替わった時の各々の時刻を表す。換言すれば、「オフセット時刻」とは、リズム入力装置７１０において発生したトリガーデータが消滅した時刻を表す。また、以降の説明において「オンセット情報」とは、オンセット時刻においてリズム入力装置７１０から情報処理装置７２０へ入力される情報である。「オンセット情報」には、上述したトリガーデータ以外に、鍵盤のノートナンバーやチャンネル情報等が含まれている。
【００６９】
テンポ取得部７２１１は、ユーザによって指定されたＢＰＭ、すなわち指定テンポを取得する。ここで、ユーザによって指定されたＢＰＭとは、ＢＰＭ入力操作子７１３及び後述するＢＰＭ指定スライダ７５１のうち少なくともいずれかを用いて指定されたＢＰＭのことである。ＢＰＭ入力操作子７１３及びＢＰＭ指定スライダ７５１は連動しており、ユーザがその一方を用いてＢＰＭを指定すると、指定されたＢＰＭが他方の表示欄に表示される。進行部７２１２は、図示しないスイッチによるユーザのテンポ報知の開始指示を受けて、指定テンポに基づいて、指示を受けたタイミングから小節内の指定時刻（演奏進行タイミング）を進行させる。通知部７２１３は、小節内の指定時刻をユーザに通知する。具体的には通知部７２１３は、１小節の長さを１として正規化した場合に、進行中の時間軸において、数十ｍｓｅｃ（ミリ秒）ごとにクロック信号（以降において小節線クロックという）としてパターン取得部７２１５に出力する。つまり、小節線クロックは、指定時刻が１小節中のどこに位置するかを表すものであり、０から１の間の値をとる。通知部７２１３は、ユーザによって指定された指定テンポに基づいて小節線クロックを生成する。
【００７０】
パート選択部７２１４は、複数の演奏パートのなかからユーザの指定に基づいて特定パートを選択する。具体的には、パート選択部７２１４は、リズム入力装置７１０から入力されるＭＩＤＩ情報に含まれるパートを識別する情報が、ノートナンバーであるかチャンネル情報であるかを特定する。そしてパート選択部７２１４は、特定した内容と自動伴奏ＤＢ７２２１に含まれるパートテーブルとに基づいて、ユーザによって操作されたのはどの演奏操作子であるか、すなわち、楽音データを構成する複数のパートのうちどのパートを指定して入力が行われたか、を特定し、検索すべきパートの楽音データとリズムパターンテーブル等を選択する。パート選択部７２１４は、受け取ったＭＩＤＩ情報がノートナンバーである場合、当該ノートナンバーとパートテーブルの記述内容とを比較して、ユーザによる操作が、ベース入力音域鍵盤７１１ａ、コード入力音域鍵盤７１１ｂ、或いはフレーズ入力音域鍵盤７１１ｃのいずれに対するものであるかを特定し、対応するパートの楽音データとリズムパターンテーブル等選択する。また、パート選択部７２１４は、受け取ったＭＩＤＩ情報がチャンネル情報である場合、当該ノートナンバーとパートテーブルの記述内容とを比較して、ユーザによる操作が、バスドラム入力パッド７１２ａ、スネアドラム入力パッド７１２ｂ、ハイハット入力パッド７１２ｃ、或いはシンバル入力パッド７１２ｄのいずれに対するものであるかを特定し、対応する楽音データとリズムパターンテーブル等を選択する。パート選択部７２１４は、選択したパートに対応するパートＩＤを検索部７２１６に出力する。
【００７１】
パターン取得部７２１５は、複数の演奏パートのなかから選択された特定パートについて入力パターンを取得する。具体的にはパターン取得部７２１５は、小節線クロックを基準として、リズム入力装置７１０から入力される、トリガーデータが発生した時刻、すなわちオンセット時刻を１小節毎にＲＡＭに記憶させる。このようにして、１小節を単位として、ＲＡＭに記憶されたオンセット時刻の並びが、入力リズムパターンとなる。ここで記憶されるオンセット時刻は、小節線クロックに基づいているため、上記小節線クロックと同様に、０から１の間の値をとる。また、小節線クロックは、外部から情報処理装置７２０に入力されるものを用いてもよい。
【００７２】
また、ユーザが、１小節を単位としたリズムパターンを正確に入力できるように、情報処理装置７２０からユーザに対して小節線が開始する時刻をフィードバックする必要がある。これは、例えばメトロノームのように、小節や拍の時刻で、情報処理装置７２０が、音や光を発したり画面の表示内容を変更したりすることで、ユーザに対して視覚的或いは聴覚的に小節線の位置が伝えられればよい。このとき、通知部７２１３から出力される小節線クロックに基づいて、音声出力部７２６が音を発したり、表示部７２４が光を発したりする。また、その他の方法として、小節線クロックにあわせて、予め小節線の位置を表す例えばクリック音を付加した伴奏音を出力部７２１８が再生してもよい。この場合、ユーザは、伴奏音源から自らが感じる小節線に合わせて、リズムパターンを入力する。
【００７３】
検索部７２１６は、楽音のデータを組み合わせた楽音データを複数記憶したデータベースである自動伴奏ＤＢ７２２１を検索して、特定パートの楽音データに含まれる楽音のリズムパターンと入力リズムパターンとの比較結果に基づいて、楽音データを検索結果として取得する。自動伴奏ＤＢ７２２１は、複数の演奏パートについてそれぞれ個別の楽音のデータで構成されている。また、検索部７２１６は、検索結果を表示部７２４に表示させる。また、検索部７２１６ａは検索結果を表示部７２４に表示させ、ユーザが取得した検索結果のなかから所望の楽音データを選択すると、これを自動伴奏データ中の一つのパートの自動伴奏パートデータとして登録する。そして、ユーザは、各パートについて、この作業を繰り返すことで、自動伴奏データを作成する。自動伴奏ＤＢ７２２１は、複数の演奏パートについてそれぞれ個別の楽音データと自動伴奏データと、それぞれのデータの情報を管理する複数のテーブルとで構成されている。特定部７２１７は、取得された検索結果のうち、特定パートの楽音のパターンが所定の範囲に入る楽音データを特定する。この所定の範囲は、例えば両者の類似の度合いが高い順番で昇順に並べたときの楽音のパターンの個数で表され、記憶部に記憶されており、操作部を用いてユーザにより変更可能としてもよい。つまり、この所定の範囲が広いほど、特定部７２１７は、検索結果から多くの楽音データを特定し、所定の範囲が狭いほど、特定部７２１７は、検索結果のうち類似の度合いが高い楽音データのみを特定することになる。例えば、ユーザが、入力したリズムパターンにより近い検索結果を得たい場合には、上記所定の範囲を狭く設定することで、所望する検索結果が得られやすくなる。一方、ユーザが、入力したリズムパターンに対してより多くの検索結果を得たい場合には、上記所定の範囲を広く設定すればよい。また、希望する類似度が高いものだけでなく、高すぎず低すぎずのもの等のある程度似ているもの等を検索したいときは、検索対象とする類似度の上限値と下限値を設定できるようにし、システムであるいは予めユーザが設定するようにすればよい。出力部７２１８は、楽音データや自動伴奏データの再生時に、小節内の現在位置、すなわち小節線クロックに基づくデータ位置から特定された楽音データを読み出して、この楽音データが示す楽音を、この楽音データに対応付けられた演奏テンポと指定テンポとの関係に基づく速度で再生し、楽音の再生信号を音声出力部７２６に出力する。音声出力部７２６は、この再生信号に基づく音声を出力する。また、出力部７２１８は、演奏再生モード及び演奏ループ再生モードにおける、検索結果の楽音データにおける構成音を用いた、ユーザによる演奏操作を制御する。コード受付部７２１９は、ユーザにより指定されたコードの入力を受け付ける。音高受付部７２２０は、ユーザによって指定された音の音高を表す音高情報の入力を受け付ける。
【００７４】
次に、図１７及び図１８を用いて、検索機能がＯＮの状態において、制御部７２１が入力リズムパターンに基づいて自動伴奏データの検索を行う一連の処理について説明を行う。
図１７は、情報処理装置７２０が行う処理のフロー図である。
まず、ユーザが、リズム入力装置７１０の図示しない操作子で自動伴奏データ作成を指示すると、本フローのプログラムが実行される。情報処理装置７２０は、ユーザの指示に基づいて、プログラムの実行開始後、初期設定を行う。（ステップＳａ０）。初期設定では、ユーザは、操作部７２５を用いて各鍵域それぞれに対応する楽器種類および入力パッドに対応する楽器種類を指定し、ＢＰＭ入力操作子７１３を用いてＢＰＭを入力する。また、制御部７２１は、図１４、図１５Ａ及び図１５Ｂに示した各種テーブルをＲＡＭに読み出す。初期設定後、ユーザは、リズム入力装置７１０を用いて、鍵盤７１１における所定の鍵域又は入力パッド７１２ａ〜１２ｄにおけるいずれか、すなわちパートを指定してリズムパターンを入力する。リズム入力装置７１０は、指定されたパートを識別する情報と、指定された楽器種類を識別する情報と、入力ＢＰＭを識別する情報と、入力リズムパターンとを含むＭＩＤＩ情報を情報処理装置７２０に送信する。制御部７２１は、入出力インターフェース部７２３を用いてリズム入力装置７１０からＭＩＤＩ情報を受信すると、図１７に示すフローに沿って処理を実行する。
【００７５】
まず、制御部７２１は、受信したＭＩＤＩ情報に含まれる、ユーザにより入力されたＢＰＭを識別する情報を取得すると、これをＲＡＭに読み出された自動伴奏テーブルに記録すべき自動伴奏データのＢＰＭとして記憶させる（ステップＳａ１）。次に、制御部７２１は、受信したＭＩＤＩ情報に含まれる、ノートナンバーやチャンネル情報といったユーザにより選択されたパートを識別する情報と、自動伴奏ＤＢ７２２１に含まれるパートテーブルとに基づいて、ユーザにより指定されたパートのパートＩＤを取得すると、これをＲＡＭに読み出されたパートテーブルと自動伴奏テーブルに記録すべきパートのパートＩＤとして記憶させる（ステップＳａ２）。ここでは、ユーザが、ベース入力音域鍵盤７１１ａを用いてリズムパターンを入力し、制御部７２１が、図２２（ａ）に示されるようにパートＩＤとして「０１」を取得し、これをＲＡＭに記憶させたとする。
【００７６】
次に、制御部７２１は、受信したＭＩＤＩ情報に含まれる、ユーザにより指定された楽器種類を識別する情報と、自動伴奏ＤＢ７２２１に含まれる楽器種類テーブルとに基づいて、ユーザにより指定された楽器種類の楽器種類ＩＤを取得すると、これをＲＡＭに読み出された楽器種類テーブルと自動伴奏テーブルに記録すべきパートの楽器種類ＩＤとして記憶させる（ステップＳａ３）。ここでは、ユーザが、操作部７２５を用いて楽器種類に「エレキベース」を指定することで、制御部７２１が、図２２（ｂ）に示されるように楽器種類ＩＤとして「００２」を取得し、これをＲＡＭに読み出された自動伴奏テーブルに記録すべきパートの楽器種類ＩＤとして記憶させたとする。次に、制御部７２１は、受信したＭＩＤＩ情報に含まれる入力リズムパターンを取得すると、これをＲＡＭに記憶させる（ステップＳａ４）。次に制御部７２１は、自動伴奏ＤＢ７２２１から、ユーザが指定したパート及び楽器種類について、入力リズムパターンと同一又は類似したリズムパターンを持つ楽音データを検索する（ステップＳａ５）。ステップＳａ５の詳細について、次に図１８を用いて説明する。
【００７７】
図１８は検索処理のフロー図である。初めに、制御部７２１は、リズムパターンテーブルに記述された全てのリズムパターンを用いて、リズムカテゴリ毎にオンセット時刻間隔の分布を計算する（ステップＳｂ１）。ここで、リズムパターンレコードにおけるリズムパターンデータには、１小節の長さを１として正規化された各構成音の発音開始時刻、すなわちオンセット時刻が含まれている。ここでオンセット時刻間隔とは、時間軸上で隣り合うオンセット時刻同士の間隔であり、０から１の間の数値で表される。また、ここにおいて、上述したオンセット時刻間隔の分布は、１小節を４８の時刻で均等に区切った場合に、各々の時刻に相当するオンセット時刻間隔の個数で表される。なお、本実施形態において１小節を４８の時刻で区切る理由は、４拍子系のリズムを前提として一拍を１２等分すれば、８分、８分３連、１６分といった複数の異なるリズムカテゴリを識別するのに適した分解能となるためである。ここで、分解能とは、シーケンサや、本実施形態におけるアプリケーションプログラムのようなシーケンスソフトで表現できる、最も短い長さの音符のことである。本実施形態における分解能は、１小節で４８であるため、１つの四分音符を１２に分割可能な設定となっている。
【００７８】
なお、以降の説明では、入力リズムパターンに対する説明においても、リズムパターンレコードと対応する意味で、「オンセット時刻間隔」という言葉を用いる。つまり、入力リズムパターンにおいては、時間軸上で隣り合うオンセット時刻同士の間隔が、オンセット時刻間隔に相当する。ステップＳｂ１で求められるリズムカテゴリ毎のオンセット時刻間隔の分布は、後述するステップＳｂ３で求められる入力リズムパターンにおけるオンセット時刻間隔の分布との、比較対象となるものである。処理フローの冒頭において、ステップＳｂ１の計算を行うのは、処理の対象となるリズムパターンレコード及びリズムカテゴリが変更されることがなく同一である場合、ステップＳｂ１で求められるオンセット時刻間隔の分布は一定であって、一度計算で求めてしまえば、その後計算をやり直す必要がなくなるためである。従って、ステップＳｂ１における計算は、情報処理装置７２０の電源がＯＮされたときや、検索処理の起動時に行われるようにしてもよい。また、ステップＳｂ１で求められるオンセット時刻間隔の分布についてのデータを、制御部７２１が、予め計算してＲＯＭ等に記憶しておくことで、検索処理の起動時に上記データを読み込むようにしてもよい。
【００７９】
ここで、具体的なオンセット時刻の数値を用いて、ステップＳｂ１におけるオンセット時刻間隔の分布を計算する方法を説明する。一例として、以下の（ａ）で表される８分のリズムパターンが、リズムパターンレコードにおけるリズムパターンデータに記述されていたとする。
（ａ）０，０．２５，０．３７５，０．５，０．６２５，０．７５，０．８７５
制御部７２１は、（ａ）のリズムパターンから、以下の（ｂ）で表されるオンセット時刻間隔を算出する。
（ｂ）０．２５，０．１２５，０．１２５，０．１２５，０．１２５，０．１２５
次に制御部７２１は、（ｂ）で算出された各々のオンセット時刻間隔に４８を乗算し、さらに０．５を加算した数値の小数点以下を切り捨てる処理（クオンタイズという）を行うことで、以下の（ｃ）で表す数値群を算出する。
（ｃ）１２，６，６，６，６，６
ここでクオンタイズとは、制御部７２１が、各オンセット時刻間隔を分解能にあわせて補正することを意味している。クオンタイズを行う理由は、以下のとおりである。リズムパターンテーブルにおけるリズムパターンデータに記述された発音開始時刻は、分解能（ここでは４８）に従ったものとなっている。よって、オンセット時刻間隔を用いてリズムパターンテーブルを検索する際には、検索に用いるオンセット時刻間隔も分解能に従ったものでないと、検索の精度が低くなってしまう。このような理由により、制御部７２１は、（ｂ）で表される各々のオンセット時刻間隔に対して、上述したクオンタイズの処理を施す。
【００８０】
上述の例に従って、例えば以下のような８分のリズムパターン、１６分のリズムパターン、及び８分３連のリズムパターンが２つずつ、各リズムパターンレコードにおけるリズムパターンデータに記述されている場合を考える。
・８分カテゴリ
（Ａ）０，０．２５，０．３７５，０．５，０．６２５，０．７５，０．８７５
（Ｂ）０，０．１２１，０．２５２，０．３７，０．５１，０．６２５，０．７４９，０．８７６
・１６分カテゴリ
（Ｃ）０，０．１２５，０．１８７５，０．２５１，０．３７４，０．４３２５，０．５，０．６２５，０．６８７５，０．７５，０．８７６，０．９３２５
（Ｄ）０，０．６２５，０．１２５，０．１８７５，０．２５１，０．３１２５，０．３７５，０．４３２５，０．５，０．５６２５，０．６２５，０．６８７５，０．７５，０．８１２５，０．８７５，０．９３２５
・８分３連カテゴリ
（Ｅ）０，０．０８３３，０．１６６６，０．２５，０．３３３３，０．４１６６，０．５，０．５８３３，０．６６６６，０．７５，０．８３３３，０．９１６６６
（Ｆ）０，０．１６６６，０．２５，０．３３３３，０．４１６６，０．５，０．６６６６，０．７５，０．８３３３，０．９１６６６
制御部７２１は、上記（Ａ）〜（Ｆ）に対して上述したのと同様の計算方法を用いて、リズムカテゴリ毎にオンセット時刻間隔の分布を求める。図１９（ａ）は、制御部７２１がリズムカテゴリ毎に計算したオンセット時刻間隔の分布を、分布表に割り当てたものである。
【００８１】
ステップＳｂ１の次に、制御部７２１は、ＲＡＭに記憶されたパートＩＤ及び楽器種類ＩＤを用いて、リズムパターンテーブルを検索する（ステップＳｂ２）。なお、楽器種類の指定は必須ではなく、楽器種類がユーザにより指定されなかった場合、制御部７２１は、パートＩＤのみに従ってリズムパターンテーブルを検索する。以降の処理において、制御部７２１は、ステップＳｂ２における検索結果のリズムパターンレコードを処理の対象とする。
【００８２】
ここで、上述したように、入力リズムパターンには、１小節の長さを１として正規化されたオンセット時刻が含まれている。ステップＳｂ２の次に、制御部７２１は、ＲＡＭに記憶された入力リズムパターンにおける、オンセット時刻間隔の分布をステップＳｂ１と同様の方法で計算する（ステップＳｂ３）。ここにおいて、入力リズムパターンは、上述した（ａ）のようなものであり、（ｂ）で算出された各々のオンセット時刻間隔にクオンタイズ処理が施されることで、入力リズムパターンについて、（ｃ）のような数値群が算出されるものとする。図１９（ｂ）は、制御部７２１が入力リズムパターンについて計算したオンセット時刻間隔の分布を、分布表に割り当てたものである。
【００８３】
ここで、図１９（ａ）〜図１９（ｃ）に示された分布表を参照しながらオンセット時刻間隔の分布についてさらに説明を行う。
図１９（ａ）は入力リズムパターンにおけるオンセット時刻間隔の分布表である。図１９（ａ）において、横軸は、１小節を４８の時刻で区切ったときの時刻の間隔（時刻間隔という）を表し、縦軸は、横軸で表された各々の時刻間隔に相当する、クオンタイズされたオンセット時刻間隔の個数の比率を表す。図１９（ａ）では、入力リズムパターンに基づく、上述した（ｃ）の数値群が分布表に割り当てられている。この個数比率は、合計が１となるように制御部７２１によって正規化されている。図１９（ａ）では、クオンタイズされたオンセット時刻間隔である（ｃ）の数値群において、最も個数が多い「６」の時刻間隔に分布のピークがあることが分かる。
【００８４】
ステップＳｂ３の次に、制御部７２１は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布表（ここでは図１９（ａ））と、入力リズムパターンに基づくオンセット時刻間隔の分布表（ここでは図１９（ｂ））とを用いて、両者の類似度を表す距離（以降において単に類似度距離という）を算出する（ステップＳｂ４）。図１９（ｃ）は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布（図１９（ｂ））と、入力リズムパターンに基づくオンセット時刻間隔の分布（図１９（ａ））との差分を表す分布表である。ステップＳｂ４における類似度距離の算出方法は以下のようなものである。まず、制御部７２１は、リズムパターンテーブルに記述されたリズムカテゴリ毎のリズムパターンに基づくオンセット時刻間隔の分布表と、入力リズムパターンに基づくオンセット時刻間隔の分布表とにおいて、両分布表における同一の時刻間隔毎に、個数比率の差分の絶対値を求める。そして制御部７２１は、各リズムカテゴリについて、上述の時刻間隔毎に求めた絶対値を全て足し合わせた値の平方根を算出する。この算出された平方根で表される値が類似度距離となる。この類似度距離は、値が小さいほど類似度が高く、値が大きいほど類似度が低いことを表す。図１９（ｃ）では、８分のリズムカテゴリにおいて、図１９（ａ）と図１９（ｂ）とに基づく個数比率の差分が最も小さい。これは、上述の算出方法に従って、分布表に表された８分、１６分、８分３連のリズムカテゴリのうち、８分のリズムカテゴリと入力リズムパターンとが、最も上記類似度の距離が小さいことを表している。
【００８５】
ステップＳｂ４の次に、制御部７２１は、リズムパターンテーブルに記述されたリズムカテゴリのうち、類似度距離が最も小さいリズムカテゴリを、入力リズムパターンが該当するリズムカテゴリである、と判定する（ステップＳｂ５）。つまり、ここでは制御部７２１は、入力リズムパターンのリズムカテゴリが８分であると特定することになる。このように、制御部７２１は、ステップＳｂ２〜ステップＳｂ５を通じて、入力リズムパターンの該当する可能性が高いリズムカテゴリを特定する。
【００８６】
次に制御部７２１は、リズムパターンテーブルに記述されたリズムパターンのうち、入力リズムパターンに対して、類似の度合いが高いリズムパターンを特定するために、リズムパターンテーブルに記述された全てのリズムパターンと入力リズムパターンとのズレの大きさを計算する（ステップＳｂ６）。ここで、ズレの大きさとは、入力リズムパターンにおける各オンセット時刻と、リズムパターンテーブルに記述された各々のリズムパターンにおける各オンセット時刻とがどれだけ離れているかを表す。つまり、上記ズレの大きさが小さい程、入力リズムパターンとリズムパターンテーブルに記述されたリズムパターンとにおける類似の度合いが高いこととなる。
【００８７】
また、ステップＳｂ５までの処理において、入力リズムパターンに該当する可能性が高いリズムカテゴリを特定する一方で、ステップＳｂ６の処理において全てのリズムカテゴリに属するリズムパターンレコードを計算の対象としている。その理由は、以下のとおりである。リズムパターンレコードに含まれるリズムパターンデータにおいては、１小節内に８分のオンセット時刻間隔と１６分のオンセット時刻間隔がほぼ同数ある場合等のように、どちらのリズムカテゴリに属するのかが紙一重であるものが存在する。このような場合に、ステップＳｂ５において仮に入力リズムパターンに対するリズムカテゴリが正しく判定されなかったとしても、ステップＳｂ６において全てのリズムカテゴリに属するリズムパターンレコードを計算の対象とすることで、ユーザが意図していたリズムパターンが正しく検出される可能性が高くなる。
【００８８】
ここで、ステップＳｂ６における処理を、図２０を参照して説明する。図２０は、リズムパターンにおけるズレの計算を説明するための模式図である。図２０で示されるように、入力リズムパターンをＪとして、リズムパターンレコードに記述されたリズムパターンをＫとすると、ＪとＫにおけるズレの大きさの計算は、以下の手順で行われる。
（１）制御部７２１は、入力リズムパターンＪにおける各オンセット時刻を基準として、リズムパターンＫにおける最も近いオンセット時刻との時刻差の絶対値を算出する（図２０における（１））。
（２）制御部７２１は、手順（１）で算出した各絶対値の積分値を算出する。
（３）制御部７２１は、リズムパターンＫにおける各オンセット時刻を基準として、入力リズムパターンＪにおける最も近いオンセット時刻との時刻差の絶対値を算出する（図２０における（３））。
（４）制御部７２１は、手順（３）で算出した各絶対値の積分値を算出する。
（５）制御部７２１は、手順（２）で算出した積分値と手順（４）で算出した積分値との平均値を、リズムパターンＪとリズムパターンＫとのズレとして算出する。
【００８９】
なお、実施形態においては、充分な数のリズムパターンを用意していないため、図２０（３）に記載されているように、制御部７２１は、時刻差の絶対値が基準間隔（ここでは８分なので０．１２５）より大きいものは積分値を算出する際に用いないという処理を行っているが、この処理は省略することも可能である。制御部７２１は、リズムパターンテーブルに含まれる全てのリズムパターンレコードにおけるリズムパターンについて、上述した手順（１）〜（５）の計算を行う。
【００９０】
次に、制御部７２１は、ステップＳｂ４でリズムカテゴリ毎に算出した類似度距離と、ステップＳｂ６で算出したリズムパターンのズレとを乗算する。そして制御部７２１は、リズムパターンテーブルに含まれる、ＲＡＭに記憶されたパートＩＤを持つ全てのリズムパターンレコードについて、入力リズムパターンとの距離を算出する（ステップＳｂ７）。ここで上述したように、入力リズムパターンをＪとし、任意のリズムパターンレコードにおけるリズムパターンをＫとしたとき、ステップＳｂ７を式で表すと以下のようになる。
ＪとＫのリズムパターンの距離＝（Ｊと、Ｋが所属するリズムカテゴリとの類似度距離）×（ＪとＫとのリズムパターンのズレ）
ここで、ＪとＫのリズムパターンの距離が小さいほど、ＫのリズムパターンがＪの入力リズムパターンに類似している度合いが高いことを意味している。つまりここでは、ＪとＫのリズムパターンの距離が、類似の度合いを表している。以降、このリズムパターンの距離が小さいことを、「類似の度合いが高い」ということがある。なお、この計算に際して、基本的には、ステップＳｂ５で入力リズムパターンが該当すると判定されたリズムカテゴリ内から、検索結果が出力されるように、以下のような処理が行われる。制御部７２１は、ステップＳｂ５で判定されたリズムカテゴリと、リズムパターンＫの属するリズムカテゴリとが一致するかを判定し、一致しない場合には、上記計算式において予め定められた定数（例えば０．５）を加算する。このようにすれば、ステップＳｂ５で判定されたリズムカテゴリと一致しないリズムカテゴリに属するリズムパターンレコードについては、リズムパターン同士の距離が大きく算出されるため、ステップＳｂ５で入力リズムパターンが該当すると判定されたリズムカテゴリ内から、検索結果が出力されやすくなる。
【００９１】
そして、制御部７２１は、選択されたパートのリズムパターンテーブルと入力リズムパターンとに基づいて、入力リズムパターンとの距離が小さいリズムパターンデータを有する楽音データから、上記距離が小さい順番で所定の範囲に入る個数だけの楽音データ群を検索結果として取得し、これらをＲＡＭに記憶させると（ステップＳｂ８）、図１８の処理を終了する。この所定の範囲は、パラメータとして記憶部７２２に記憶されており、ユーザが操作部７２５を用いて変更可能としてもよい。ここで、制御部７２１は、ユーザによって入力されたＢＰＭに近いＢＰＭを持つ楽音データ群のみを検索結果として出力するためのフィルタリング機能を備えており、ユーザは、操作部７２５を介して上記フィルタリング機能を任意にＯＮ／ＯＦＦすることが可能である。上記フィルタリング機能がＯＮに設定されている場合、ステップＳｂ８において制御部７２１は、入力ＢＰＭとその差が予め決められた範囲内に収まらないＢＰＭを有する楽音データ群を、検索結果から除外する。具体的には、例えば、ステップＳｂ８において制御部７２１は、入力ＢＰＭの（１／２1/2）倍から２1/2倍のＢＰＭを有する楽音データ群のみを検索結果として取得し、それ以外の楽音データを検索結果から除外する。なお、上述した（１／２1/2）倍及び２1/2倍という係数は一例に過ぎず、その他の値であってもよい。
【００９２】
制御部７２１がこのようなフィルタリング機能を備える理由は、以下のようなものである。本実施形態において制御部７２１は、検索結果の楽音データが示す楽音をユーザによって入力又は指定されたＢＰＭで再生させることが可能である。このとき、制御部７２１によって、楽音データの本来のＢＰＭとは大幅に異なるＢＰＭがユーザにより入力されると、楽音データが示す楽音が音声出力部７２６によって放音される際に、ユーザに違和感を与えてしまうことがある。例えば、ユーザが、ＢＰＭ２４０のテンポでリズムパターンを入力し、制御部７２１が上記リズムパターンを持つ楽音データ群を検索した結果、検索結果の楽音データ群に含まれる楽音データが示す本来のＢＰＭが６０であった場合を考える。この場合、検索結果に含まれる楽音データに基づく楽音は、本来のＢＰＭの４倍のＢＰＭで音声出力部７２６によって放音されることになるため、音が本来のＢＰＭの４倍速で早送り再生された状態となり、結果としてユーザに違和感を与えることとなる。また、例えば楽音データがＷＡＶＥやｍｐ３などのオーディオファイルである場合、本来のＢＰＭとユーザによって指定されたＢＰＭとの差が大きくなるほど、再生時の音質は劣化する。このような問題を解決するために、制御部７２１は、フィルタリング機能を備えているわけである。
【００９３】
再び図１７に戻る。ステップＳａ５の検索処理を終えると、制御部７２１は、ステップＳｂ８でＲＡＭに記憶された楽音データ群を検索結果として表示部７２４に表示させる（ステップＳａ６）。
【００９４】
図２１は、楽音データについての検索結果の一例を表した模式図である。図２１は、ユーザがベース入力音域鍵盤７１１ａを用いて入力したリズムパターンに基づいて、制御部７２１が検索結果として取得した楽音データ群が、表示部７２４に表示された場合を表している。表示部７２４の上部には、ＢＰＭ指定スライダ７５１、キー指定鍵盤７５２及びコード指定ボックス７５３が表示される。ＢＰＭ指定スライダ７５１は、例えば所定の長さを有する溝と、溝に設けられたつまみと、ＢＰＭ表示欄とで構成される。ユーザが、操作部７２５を用いてつまみの位置を変更させると、制御部７２１は、変更後のつまみの位置に応じたＢＰＭをＢＰＭ表示欄に表示させる。図２１においては、溝の左端から右端へ向けてつまみの位置が移動されるにつれてＢＰＭ表示欄に表示されるＢＰＭが早いものとなり、溝の右端から左端へ向けてつまみの位置が移動されるにつれてＢＰＭ表示欄に表示されるＢＰＭが遅いものとなる。制御部７２１は、ＢＰＭ指定スライダ７５１を用いて指定されたＢＰＭ（指定ＢＰＭという）で、検索結果からユーザにより選択された楽音データ群に含まれる楽音データが示す楽音を再生させる。すなわち、制御部７２１は、検索結果からユーザにより選択された楽音データ群に含まれる楽音データのＢＰＭを、指定されたＢＰＭと同期させる。なお、情報処理装置７２０が外部機器と同期を取って接続している場合、外部機器において指定されたＢＰＭを情報処理装置７２０が受信して、受信したＢＰＭを指定ＢＰＭとして用いるようにしてもよい。また、この場合、ＢＰＭ指定スライダ７５１を用いて指定したＢＰＭを外部機器に送信可能としてもよい。
【００９５】
キー指定鍵盤７５２は、所定の音域（ここでは１オクターブ）が割り当てられた鍵盤を模した画像である。キー指定鍵盤７５２における各鍵には、対応する音高が割り当てられている。ユーザが、操作部７２５を用いて或る鍵を指定すると、制御部７２１は、指定された鍵に割り当てられた音高を取得し、これを指定キーとしてＲＡＭに記憶させる。制御部７２１は、キー指定鍵盤７５２を用いて指定されたキーで、検索結果からユーザにより選択された楽音データ群に含まれる楽音データが示す楽音を再生させる。すなわち、制御部７２１は、検索結果からユーザにより選択された楽音データ群に含まれる楽音データのキーを、指定されたキーと同期させる。なお、情報処理装置７２０が外部機器と同期を取って接続している場合、外部機器において指定されたキーを情報処理装置７２０が受信して、受信したキーを指定されたキーとして用いるようにしてもよい。また、この場合、キー指定鍵盤７５２を用いて指定したキーを外部機器に送信可能としてもよい。
【００９６】
コード指定ボックス７５３は、ユーザにより指定されたコードの入力を受け付ける入力ボックスである。ユーザが、操作部７２５を用いて、例えば、「Ｍａｊ７」といった和音種類を指定して入力すると、制御部７２１は、入力された和音種類を指定コードとしてＲＡＭに記憶させる。制御部７２１は、検索結果から楽音データ群に含まれる楽音データのうち、コード指定ボックス７５３を用いて指定された和音種類をもつ楽音データを検索結果として取得する。コード指定ボックス７５３は、プルダウン形式としてコード名称をリスト表示させてフィルタリングしてもよい。なお、情報処理装置７２０が外部機器と同期を取って接続している場合、外部機器において指定されたコードを情報処理装置７２０が受信して、受信したコードを指定されたコードとして用いるようにしてもよい。また、この場合、コード指定ボックス７５３を用いて指定したコードを外部機器に送信可能としてもよい。また、入力形態として、表示部上に和音種類毎にボタンを表示させ、それをクリックして指定するようにしてもよい。
【００９７】
表示部７２４の下部には、検索結果の楽音データ群が一覧として表示される。ユーザは、検索結果の一覧において、それぞれ異なるパートを表すタブ（パートタブという）のうちいずれかを指定することで、各パートについて検索結果の楽音データ群の一覧を表示させる。ドラムスのパートタブが指定された場合、ユーザが操作部７２５（ここではキーボード）を用いて、上、右、左といった矢印が割り当てられたキーを押下することで、制御部７２１は、バスドラム、スネアドラム、ハイハット及びシンバルといった、ドラムスを構成する複数のパートのうち、押下されたキーと対応したパートの検索結果を表示させる。パートタブのうち再生履歴と表示されるタブには、検索結果のうち、それまでにユーザにより選択されて再生された楽音データを有する楽音データ群が表示される。なお、上述したタブのほかに、ユーザが気にいったパート毎の波形データの組み合わせを登録したものである自動伴奏データを一覧表示するために、「自動伴奏データ」という名前のタブを追加し、登録した自動伴奏データを検索できるようにしてもよい。
【００９８】
検索結果において、項目「順位」は、検索結果の楽音データ群について類似度の高い順位を表す。項目「ファイル名」は、楽音データ群が有する楽音データのファイル名を表す。項目「類似度」は、入力リズムパターンと、検索結果である楽音データ群のそれぞれの楽音データが有するリズムパターンとの間の距離を表している。すなわち、「類似度」で表される数値が小さいほど、該距離が短く、入力リズムパターンに類似する度合いが高いことを意味している。制御部７２１は、検索結果の表示の際に、類似度の小さい順に楽音データの名前とそれに関連する情報を並べて表示させる。「キー」は、その楽音データを音高変換するときの基準の音高を表す。なお、「キー」は、リズム楽器に相当するパートのデータでは、未指定として表示される。「ジャンル」は、楽音データのそれぞれが所属するジャンルを表す。「ＢＰＭ」は、楽音データのそれぞれに含まれるＢＰＭであって、楽音データが示す楽音の本来のＢＰＭを表す。「パート名」は、楽音データ群に含まれるパートＩＤにより識別されるパートの名称である。ここにおいてユーザは、「キー」、「ジャンル」及び「ＢＰＭ」の少なくともいずれか１の項目を用いて、この検索結果をフィルタリングして表示させることが可能である。
【００９９】
再び図１７に戻る。ユーザが、検索結果として表示された楽音データ群のうち１つを選択し、例えばマウスを用いてダブルクリックを行うと、制御部７２１は、ユーザにより選択された楽音データを、作成中の自動伴奏データの一つのパートのデータとして特定し、ＲＡＭの自動伴奏データテーブルの該当するパートの列に情報を記録する（ステップＳａ７）。このとき制御部７２１は、検索結果の表示画面において、選択されてダブルクリックが行われた楽音データの背景色を、選択されていない楽音データ群の背景色と異ならせて表示する。
【０１００】
次に制御部７２１は、小節線クロックに基づくデータ位置から、ステップＳａ７で特定されて自動伴奏テーブルに登録されている各パートの楽音データを読み出して、それぞれの楽音データに対応付けられたＢＰＭとユーザにより指定されたＢＰＭとの関係に基づく速度となるように、すなわち、特定された楽音データのＢＰＭを指定されたＢＰＭに同期させるように、この楽音データが示す楽音にタイムストレッチを施して、必要に応じてピッチ変換を施して再生する（ステップＳａ８）。ユーザにより指定されたＢＰＭは、初回検索時には入力ＢＰＭが用いられ、検索結果に対してユーザがＢＰＭ指定スライダ７５１を用いてＢＰＭを指定した場合には、この指定ＢＰＭが用いられる。なお、小節線クロックに基づくデータ位置に限らず、制御部７２１が、小節線の先頭から楽音データを読み出すようにしてもよい。
【０１０１】
図２２は、ＢＰＭの同期処理を説明する模式図である。タイムストレッチについては、周知の方法が用いられればよいが、例えば次のようにしてもよい。楽音データがＷＡＶＥやｍｐ３のようなオーディオファイルの場合、この楽音データが有するＢＰＭとユーザにより指定されたＢＰＭとの差が大きくなるにつれて、再生時の音質が劣化する。これに対して、制御部７２１は次のような処理を行う。「（楽音データが有するＢＰＭ×（１／２1/2））＜（ユーザにより指定されたＢＰＭ）＜（楽音データが有するＢＰＭ×２1/2）」の場合、制御部７２１は、ユーザにより指定されたＢＰＭとなるように楽音データにタイムストレッチを施す（図２２（ａ））。また、「（ユーザにより指定されたＢＰＭ）＜（楽音データが有するＢＰＭ×（１／２1/2））」の場合、制御部７２１は、ユーザにより指定されたＢＰＭの倍のＢＰＭとなるように楽音データにタイムストレッチを施す（図２２（ｂ））。また、「（楽音データが有するＢＰＭ×２1/2)」＜（ユーザにより指定されたＢＰＭ）」の場合、制御部７２１は、ユーザにより指定されたＢＰＭの半分のＢＰＭとなるように楽音データにタイムストレッチを施す（図２２（ｃ））。このようにすることで、楽音データが有するＢＰＭとユーザにより指定されたＢＰＭとの差が大きいことに起因して再生時の音質が劣化するような事態を少なくすることができる。上述の（１／２1/2）や２1/2といった係数は一例であり、他の値であってもよい。これにより、ユーザによる入力リズムパターンにおけるオンセット時刻とオフセット時刻との差が、ユーザによる押鍵時間が長いために大きくなったり、逆にユーザによる押鍵時間が短いために小さくなったりしたときに、タイムストレッチにより伸張する音の長さの変化を予め決められた範囲に収めることが可能となる。結果として、ユーザは、入力リズムパターンに対する検索結果に感じる違和感が少ないものとなる。
【０１０２】
また、ユーザがキー指定鍵盤７５２を用いてキーを指定している場合、制御部７２１は、コードパートの楽音データが示す楽音を、この楽音データに対応付けられたキーと指定キーとの差に応じてピッチ変換させて、すなわち、特定された楽音データのキーを指定キーに同期させて再生させる。例えば、特定された楽音データに対応付けられたキーが「Ｃ」であり、指定キーが「Ａ」であるような場合、特定された楽音データのピッチを上げる方法と下げる方法が考えられるが、ここでは、ピッチシフト量が少なく、音質の劣化を少なくすることが期待できるため、特定された楽音データのピッチを上げる方法を採用する。
【０１０３】
図２３は、キーテーブルを表す図である。キーテーブルは記憶部７２２に記憶されている。キーテーブルには、1オクターブを１２音階で表した各キーの名称と、各キーに順番に割り振られたキーＮｏとが記述されている。制御部７２１は、ピッチ変換を行う際、キーテーブルを参照する。制御部７２１は、キーテーブルにおいて、特定された楽音データに対応付けられたキーに応じたキーＮｏから指定キーに応じたキーＮｏを減算した値を算出する。この値を、キー差分という。そして、制御部７２１は、「−６≦キー差分≦６」となる場合は、特定された楽音データを、その楽音の周波数が、「２の（キー差分／１２）乗」となるようにピッチ変換する。また、制御部７２１は、「キー差分＞７」となる場合は、特定された楽音データを、その楽音の周波数が、「２の（（キー差分−１２）／１２）乗」となるようにピッチ変換する。また、制御部７２１は、「キー差分＜−７」となる場合は、特定された楽音データを、その楽音の周波数が、「２の（（キー差分＋１２）／１２）乗」となるようにピッチ変換する。制御部７２１は、ピッチ変換を行った楽音データが示す楽音を音声出力部７２６から出力させる。上述の式は一例であり、再生時の音質が保障されるように予め決められればよい。
【０１０４】
また、ユーザがコード指定ボックス７５３でコードを指定している場合、制御部７２１は、検索結果から選択された楽音データにおいて、指定されたコードに応じて音高変換された楽音データを再生させる。すなわち、制御部７２１は、特定された楽音データのコードを、指定されたコードに音高変換して再生する。
【０１０５】
ステップＳａ８の次に、検索結果のうち別の楽音データがユーザにより選択されてクリックが行われると（ステップＳａ９；Ｙｅｓ）、制御部７２１は処理をステップＳａ７に戻す。この場合、制御部７２１は、新たに選択された楽音データを特定した後、作成中の自動伴奏データのパートとして特定し（ステップＳａ７）、ステップＳａ８の処理を行う。なお、楽音データは、自動伴奏データのパートとして規定のパート数に達するまで登録可能であって、例えば、ドラムパート（最大４チャンネル）、ベースパート（最大１チャンネル）、コードパート（最大３チャンネル）などのように、各パートに登録数の上限がある。例えば、ドラムパートを５つ指定しようとすると、それまで再生されていたドラムの楽音データの変わりに、新しく指定した楽音データが登録されることになる。
【０１０６】
一方、ステップＳａ８の次に、検索結果のうち別の楽音データがユーザにより選択されることなく（ステップＳａ９；Ｎｏ）、ユーザにより検索処理の終了が指示されると（ステップＳａ１０；Ｙｅｓ）、制御部７２１は、自動伴奏データテーブルと該テーブルによって指定されるファイルを一つのデータファイルにして、自動伴奏データのファイルとして記憶部７２２に記憶させて（ステップＳａ１１）、処理フローを終了する。ユーザは、操作部７２５を用いて、記憶部７２２に記憶された自動伴奏データを任意に読み出させることが可能である。一方、ユーザにより検索処理の終了が指示されない場合（ステップＳａ１０；Ｎｏ）、制御部７２１は処理をステップＳａ１に戻す。そして、ユーザが、異なるパートを選択してリズム入力装置７１０を用いてリズムパターンを入力して以降の処理が行われると、自動伴奏データの異なるパートの楽音データが登録される。そして、自動伴奏データを組み合わせるために必要とする数だけパートの登録が済んだ状態となるまでユーザが操作を行うことで、自動伴奏データが作成されることになる。また、既に再生されているパートの楽音データが示す楽音に重ねて、新たに選択されたパートの楽音データが示す楽音が出力される。このとき、制御部７２１は、小節線クロックに基づくデータ位置から楽音データを読み出すため、複数のパートについての楽音データの楽音が同期して出力されることとなる。
【０１０７】
各パートの進行形態には、大別して以下のような３通りのバリエーションが考えられる。ここで、演奏進行タイミングの同期制御については、設定に従って検索された自動伴奏データをユーザが指定した後、小節単位、２拍単位、１拍単位、８分単位又は指定無しのうち、いずれかの基準を用いてクオンタイズされたタイミングで再生を開始することが可能である。１つ目の進行形態は、「節頭で同期させる」というものである。この場合、ユーザが各パートの伴奏を指定した後、小節線クロックが小節頭になった時点で対応する小節頭の位置から楽音データが再生される。２つ目の進行形態は、「拍頭で同期させる」というものである。この場合、ユーザが各パートの伴奏を指定した後、小節線クロックが拍頭になった時点で対応する拍位置から楽音データが再生される。３つ目の進行形態は、「同期しない」というものである。この場合、ユーザが各パートの伴奏を指定した直後に、対応する進行位置から楽音データが再生される。このような進行形態のバリエーションは、その設定内容が記憶部７２２に記憶されており、ユーザは操作部７２５を用いて任意の設定内容を読み出させることが可能である。
【０１０８】
次に、ループ再生モード、演奏再生モード、及び演奏ループ再生モードの各々において、制御部７２１が行う処理の詳細について説明を行う。上述したように、ユーザは、入力リズムパターンを入力することで、検索結果のリズムパターンレコードに基づく音を出力させることが可能である（ループ再生モード及び演奏ループ再生モード）。また、上述したように、ユーザは、検索結果のリズムパターンレコードにおける構成音を用いて、リズム入力装置７１０に対して演奏操作を行い、この演奏操作によるフレーズの音を出力させることが可能である（演奏再生モード及び演奏ループ再生モード）。以下において、ループ再生モード、演奏再生モード、及び演奏ループ再生モードにおける各々の違いについて説明する。
【０１０９】
ループ再生モードは、１小節からなる検索結果のリズムパターンレコードに基づく音を、小節線クロックが刻むＢＰＭで、伴奏に合わせて制御部７２１が繰り返し再生対象として出力するモードである。ループ再生モードでは、図９に示すような処理が行われる。小節線クロックが、１小節内における検索結果のリズムパターンレコードの各構成音の発音開始時刻を越えると、制御部７２１は、この構成音を再生対象とする。ここで、小節線クロックは、その値が１に達する、すなわち１小節が経過すると、再び０の値となり、以降、０から１の間の値を繰り返す。従って、この小節線クロックの繰り返しの周期で、検索結果のリズムパターンレコードに基づく音が繰り返し再生対象として出力されることとなる。図９において、矢印で表されるように、小節線クロックが、検索結果のリズムパターンレコードの各構成音の発音開始時刻を越えると、制御部７２１が各構成音を再生対象とするようになっている。ループ再生モードは、主に、ユーザが、検索結果フレーズがどのような音量、音色、リズムパターンで構成されているかを確認する際に指定されるモードである。
【０１１０】
演奏再生モードは、ユーザがリズム入力装置７１０を用いて演奏操作を行うと、ユーザが演奏操作を行った時刻に対応した、検索結果フレーズの構成音が制御部７２１によって再生対象とされるモードである。演奏再生モードでは、図６に示すような処理が行われる。演奏再生モードにおいては、1小節内において、ユーザが演奏操作を行った時刻においてのみ、音が再生対象とされる。つまり、演奏再生モードは、ループ再生モードとは異なり、ユーザがリズム入力装置７１０を用いて演奏操作を行わない時刻においては、音が出力されることはない。ここで、ユーザが、検索結果におけるリズムパターンと全く同一のリズムパターンで演奏操作を行った場合、検索結果のリズムパターンに基づく音そのものが出力されることとなる。演奏再生モードは、ユーザが、検索結果のリズムパターンにおける構成音を用いて、自ら演奏を継続的に行いたいときに指定されるモードである。
【０１１１】
図６では、双方向の矢印で示された区間（「０１」〜「０６」）における矢印で示された時刻に、ユーザがリズム入力装置７１０を用いて演奏操作を行ったことを表している。演奏再生モードにおいては、ベロシティデータ、トリガーデータ、検索結果のリズムパターンの各構成音の発音開始時刻、及び各構成音の波形、という４つのパラメータが制御部７２１に入力される。このうち、ベロシティデータ及びトリガーデータは、ユーザによるリズム入力装置７１０を用いた入力リズムパターンに基づくものである。また、検索結果のリズムパターンの各構成音の発音開始時刻、及び各構成音の波形は、検索結果のリズムパターンレコードに含まれるものである。演奏再生モードにおいては、ユーザがリズム入力装置７１０を用いて演奏操作を行う度に、ベロシティデータ及びトリガーデータが制御部７２１に入力され、以下のような処理が行われる。制御部７２１は、トリガーデータのオンセット時刻と、検索結果のリズムパターンの各構成音の発音開始時刻との時刻差が最も小さい構成音の波形を、ベロシティデータの大きさに応じた音量を指定して、音声出力部７２６に出力する。
【０１１２】
さらに、制御部７２１は、再生に使用され、操作のあったパートの楽音データについて、それぞれ操作に応じて変更された一時楽音データとして記憶部７２２に記憶させる。この一時楽音データは、ユーザによる操作の都度、制御部７２１によって、ユーザの操作に応じた波形のものに書き換えられる。そして、自動伴奏データの再生中に一時楽音データが記憶部７２２に記憶されているときは、最新の一時楽音データに基づいて再生がなされる。具体的には、一時楽音データが記憶部７２２に記憶されているときには、上述したステップＳａ１１では、この一時楽音データとその他の選択されたパートの楽音データとに基づいて、自動伴奏データのファイルや楽音データが記録されることになる。このように、本実施形態によれば、ユーザは、自動伴奏データの再生中に演奏操作子を操作することにより、対応するパートの楽音データを編集して新しい自動伴奏データを作成することができる。
【０１１３】
なお、ここにおいて、検索結果のリズムパターンの各構成音のアタック強度を制御部７２１に対する入力パラメータとして追加することで、以下のようにしてもよい。この場合、制御部７２１が、トリガーデータのオンセット時刻と検索結果のリズムパターンの各構成音の発音開始時刻との時刻差が最も小さい構成音の波形を、検索結果のリズムパターンにおける各構成音のアタック強度の大きさに対するベロシティデータの大きさに応じた音量を指定して、音声出力部７２６に出力するようにしてもよい。なお、トリガーデータが入力されなかった区間に対応する構成音の波形は、音声出力部７２６に出力されない。
【０１１４】
次に、演奏ループ再生モードは、ループ再生モードと演奏再生モードを組み合わせた内容のモードである。演奏ループ再生モードにおいては、制御部７２１が、１小節毎に、ユーザによってリズム入力装置７１０を用いた演奏操作が行われたかどうかを判定している。演奏ループ再生モードでは、ユーザがリズム入力装置７１０を用いて演奏操作を行うまでは、制御部７２１は、検索結果フレーズに基づく音声を再生対象とする。つまり、この時点では、ループ再生モードと同じ動作である。そして、ユーザが、ある小節内において、リズム入力装置７１０を用いて演奏操作を行うと、この１小節の間は、制御部７２１は演奏再生モードと同じ動作に従って処理を行う。つまり、ユーザが演奏操作を行った時刻に対応した、検索結果のリズムパターンの構成音が制御部７２１によって再生対象とされて発音される。演奏ループ再生モードでは、一度でもユーザによって演奏操作が行われると、その後の小節で演奏操作が行われなかった場合、直前の小節においてユーザが入力した時刻に対応した、検索結果フレーズの構成音が制御部７２１によって再生対象とされて発音される。制御部７２１は、操作のあったパートの楽音データについて、それぞれ操作に応じて変更された一時楽音データとして記憶部７２２に記憶させる。この一時楽音データは、ユーザによる操作の都度、制御部７２１によってユーザの操作に応じた波形のものに書き換えられる。そして、自動伴奏データの再生中に一時楽音データが記憶部７２２に記憶されているときは、最新の一時楽音データに基づいてループ再生がなされる。上述したステップＳａ１１では、この一時楽音データとその他の選択されたパートの楽音データとに基づいて、自動伴奏データのファイルや楽音データが記録されることになる。このようにして、本実施形態によれば、ユーザは、自動伴奏データの再生中に、演奏操作子を操作することにより、対応するパートの楽音データを編集して、新しい自動伴奏データを作成することができる。演奏ループ再生モードは、ユーザが、検索結果のリズムパターンにおける構成音を用いて自ら演奏を行うとともに、検索結果のリズムパターンの構成音を、入力したリズムパターンによってループ再生させたい場合に指定されるモードである。
【０１１５】
このように、第３実施形態によれば、選択されたパートについてユーザが意図する楽音のパターンに基づいて検索された自動伴奏に関する楽音データのうち、少なくともユーザの意図する楽音のパターンに最も近い楽音データを特定することができる。このとき、ユーザは、複数の演奏操作子に対応付けられた各々異なるパートのうち任意のパートを選択してリズムパターンを入力するため、特定のパートについてのリズムパターンを思いついたときに、このパートについてのリズムパターンを入力して検索を行うことが可能となる。また、ユーザは、パートを選択してリズムパターンを入力してそれぞれのパートの演奏として登録するだけでよいため、直感的かつ効率良く自動伴奏データを検索することが可能となる。また、このようにして検索された自動伴奏データのうち、ユーザにより選択された自動伴奏データが同期して再生されるため、ユーザは、複数のパートによる合奏の自動伴奏音を直感的かつ効率良く得ることができる。
【０１１６】
次に、本発明の第４実施形態について説明する。
＜第４実施形態＞
（スタイルデータの検索システム）
＜構成＞
第４実施形態は、音楽データ処理システムの例としてのスタイルデータを検索するシステムである。第４実施形態では、第３実施形態の音楽データ作成システム１００において、自動伴奏ＤＢ７２２１が、スタイルデータを記憶するとともに、スタイルデータを検索するためのスタイルテーブルを有している。その他の構成については、第３実施形態と第４実施形態は同様である。
【０１１７】
本実施形態におけるスタイルデータは、第３実施形態と同様に電子楽器やシーケンサなどに読み込まれ、いわゆる自動伴奏データと同様の役割を果たす。まず、以下に、本実施形態に係るスタイルデータ及びこれと関連するデータについて概略を説明する。
スタイルデータは、「Ｂｅｂｏｐ０１」、「ＨａｒｄＲｏｃｋ０１」又は「Ｓａｌｓａ０１」といったそれぞれ異なるスタイルについて集めた伴奏音データ片を、伴奏パターンの最小単位である「セクション」（１〜数小節）毎に、それぞれセクションデータとして纏めた伴奏音データ片の集合であり、記憶部７２２に記憶される。セクションには複数の種類があり、例えば、「イントロ」、「メイン」、「フィルイン」又は「エンディング」といった構成上の種類と、さらに各セクションにおける「ノーマル」、「バリエーション１」又は「バリエーション２」といったパターンの種類とが存在する。また、セクション毎のスタイルデータには、バスドラム、スネアドラム、ハイハット、シンバル、フレーズ、コード及びベースのそれぞれのパートについて、ＭＩＤＩフォーマットに従って記述された演奏データの識別子（リズムパターンＩＤ）が含まれている。それぞれのスタイルデータの各セクションについて、制御部７２１により演奏データからパート毎にリズムパターンが解析され、解析結果に従った内容が、スタイルテーブルに登録される。例えば、ベースパートのデータについては、制御部７２１は、基準となる音高を用いて、演奏データにおける音高の時系列に沿った並びを解析し、解析結果に従った内容をスタイルテーブルに登録する。また、コードパートのデータについては、制御部７２１は、基準となる和音を用いて、演奏データにおいて用いられているコードを解析し、解析結果に従った内容として「Ｃｍａｊ７」などのコード情報を、後述する和音進行情報テーブルに登録する。
【０１１８】
本実施形態では、さらに各スタイルデータに対応して、セクション進行情報、和音進行情報を有する。セクション進行情報は、楽曲演奏の進行に従って、スタイルデータ中からセクションを時系列的に順次指定するための情報である。和音進行情報は、楽曲演奏の進行に従って演奏されるべき和音を時系列的に順次指定するための情報である。ここで、或る一つのスタイルデータが選択されると、選択されたスタイルデータと対応するセクション進行情報、和音進行情報に基づいて、セクション進行情報テーブルと和音進行情報テーブルとにデータがそれぞれ登録されることになる。なお、セクション進行情報を用いずに、ユーザの指定によって各セクションを選択するようにしてもよい。また、和音進行情報を用いずに、鍵盤７１１を用いて入力した入力音からコード情報を特定し、それらコード情報に基づいて伴奏を再生させるようにしてもよい。コード情報には、コードのルート音と、コードの種類を示す和音情報とが含まれる。
【０１１９】
以下に、スタイルデータの構成を説明する。図２４Ａ及び図２４Ｂは、スタイルデータに関するテーブルの一例である。これらのテーブルを構成する、スタイルテーブル、セクション進行情報、和音進行情報等について簡単に説明する。
図２４Ａは、スタイルテーブルの一例を表した図である。図２４Ａにおいては、スタイルテーブルの一例として、「ジャンル」が「Ｓｗｉｎｇ＆ＪＡＺＺ」である複数のスタイルデータが表されている。１件のスタイルデータは、「スタイルＩＤ」、「スタイル名」、「セクション」、「キー」、「ジャンル」、「ＢＰＭ」、「拍子」、「ベースリズムパターンＩＤ」、「コードリズムパターンＩＤ」、「フレーズリズムパターンＩＤ」、「バスドラムリズムパターンＩＤ」、「スネアドラムリズムパターンＩＤ」、「ハイハットリズムパターンＩＤ」、及び「シンバルリズムパターンＩＤ」といった複数の項目からなる。「スタイルＩＤ」は、スタイルデータを一意に識別するための識別子である。「スタイル名」は、各スタイルデータを一意に識別する名称である。
【０１２０】
スタイルテーブルにおいて、或るスタイル名を有するスタイルデータは、複数のセクションによって構成されている。セクションは、例えば、イントロ（Ｉ（ノーマル），ＩＩ（バリエーション１），ＩＩＩ（バリエーション２））、メイン（Ａ（ノーマル），Ｂ（バリエーション１），Ｃ（バリエーション２），Ｄ（バリエーション３））、エンディング（１（ノーマル），２（バリエーション１），３（バリエーション２））といった複数の区間に分割され、それぞれの区間にはノーマルとバリエーションパターンのパターンを有している。つまり、「セクション」は、或るスタイル名を有するスタイルの各々が所属するセクションを表す。例えば、「Ｂｅｂｏｐ０１」というスタイル名のスタイルがユーザにより選択されて再生を指示されると、制御部７２１は、「Ｂｅｂｏｐ０１」というスタイル名を有するスタイルデータのうち、セクションがイントロのノーマルパターン「Ｉ」であるスタイルデータに基づく楽音を再生させ、その次にセクションがメインのノーマルパターン「Ａ」であるスタイルデータに基づく楽音を所定回数、繰り返して再生させ、その後、セクションがエンディングのノーマルパターン「１」に基づく楽音を再生させる。このようにして、制御部７２１は、選択されたスタイルのスタイルデータに基づく楽音を、そのセクションの順序に従って、再生させる。「キー」は、各スタイルデータを音高変換させるときの基準となる音高を表す。図では、音名で記述されているが、特定のオクターブの中での音名を示すため、実質的に音高を表すことになる。「ジャンル」は各スタイルデータが所属する音楽のジャンルの名称を表す。「ＢＰＭ」は、各スタイルデータに基づく音が再生される際のテンポを表す。「拍子」は、３拍子あるいは４拍子などの、各スタイルデータにおける拍子の種類を表す。なお、演奏中にバリエーションの切替え指示があると、対応するセクションのバリエーションパターンに演奏が切り替わり、パターンの最後まで演奏してノーマルパターンに戻る。
【０１２１】
各々のスタイルデータには、各パートについて、パート毎のリズムパターンＩＤが１対１で対応付けて記述されている。例えば図２４Ａにおいて「スタイルＩＤ」が「０００１」のスタイルデータは、「ベースリズムパターンＩＤ」が「０１００１０１０１」である。これは、図１５Ａに示すリズムパターンテーブルにおいて、パートＩＤが「０１」（ベース）であり、且つ、リズムパターンＩＤが「０１００１０１０１」であって、「リズムパターンデータ」が「ＢｅｂｏｐＢａｓｓ０１Ｒｈｙｔｈｍ．ｔｘｔ」、「楽音データ」が「ＢｅｂｏｐＢａｓｓ０１Ｒｈｙｔｈｍ．ｗａｖ」であるリズムパターンレコードと、「スタイルＩＤ」が「０００１」のスタイルデータとが対応付けられていることを表す。各々のスタイルデータには、ベース以外のそれぞれのパートのリズムパターンＩＤについても、同様の対応付けが記述されている。ユーザにより或るスタイル名のスタイルデータが選択されて再生が指示されると、制御部７２１は、このスタイルデータの有する各パートのリズムパターンＩＤと対応付けられた楽音データを、同期させて再生させる。スタイルデータを構成するパート毎のリズムパターンＩＤの組み合わせは、相性のよいもの同士となるように予め決められている。ここで、リズムパターンレコード同士の相性がよいとは、例えば、異なるパートのリズムパターンレコードについて、お互いにそのＢＰＭが近いとか、キーが同じであるとか、ジャンルが同じであるとか、拍子が同じであるといった事を基準にすればよい。
【０１２２】
図２４Ｂ（ａ）は、セクション進行情報テーブルを表す。
セクション進行情報テーブルは、楽曲演奏の進行に従って、スタイルデータ中からセクションを時系列的に順次指定するための情報を取りまとめたテーブルである。図２４Ｂ（ａ）の構成例に示されるように、セクション進行情報は、スタイルＩＤ、スタイルを指定するスタイル指定データＳｔ、セクションを指定するセクション情報Ｓｎｉ、各セクションの開始時間と終了時間との位置（通常、小節単位）を表すセクション開始タイミングデータＴｓｓｉ，Ｔｓｅｉ（ｉ＝１，２，３，…）、及びセクション進行情報の最終位置を表すセクション進行エンドデータＳｅから構成することができ、例えば記憶部７２２に記憶される。つまり、各セクション情報Ｓｎｉは、対応するセクションに関するデータの記憶領域を指定し、その前後にあるタイミングデータＴｓｓｉ，Ｔｓｅｉは、指定されたセクションによる伴奏の開始及び終了を指示する。従って、このセクション進行情報を用いて、伴奏スタイル指定データＳｔで指定された伴奏スタイルデータの中から、タイミングデータＴｓｓｉ，Ｔｓｅｉ及びセクション情報Ｓｎｉの組合わせの繰返しで、セクションを順次指定することができる。
【０１２３】
図２４Ｂ（ｂ）は、和音進行情報テーブルを表す。
和音進行情報テーブルは、楽曲演奏の進行に従って演奏されるべき和音を時系列的に順次指定するための情報を取りまとめたテーブルである。和音進行情報は、図２４Ｂ（ｂ）の構成例に示されるように、スタイルＩＤ、調情報Ｋｅｙ、和音名Ｃｎｊ、和音名Ｃｎｊを規定するための和音根音情報Ｃｒｊ、和音タイプ情報Ｃｔｊ、各和音の開始及び終了時間位置（通常、拍単位）を表す和音開始及び終了タイミングデータＴｃｓｊ，Ｔｃｅｊ（ｊ＝１，２，３，…）、及び和音進行情報の最終位置を表す和音進行エンドデータＣｅから構成することができ、例えば、記憶部７２２に記憶される。ここで、各２つの情報Ｃｒｊ，Ｃｔｊで規定される和音情報Ｃｎｊは、セクション情報Ｓｎｉで指定されたセクション中の和音演奏データに対して演奏すべき和音の種類を指示し、その前後にあるタイミングデータＴｃｓｉ，Ｔｃｅｉは、この和音による演奏の開始及び終了を指示する。従って、この和音進行情報を用いると、調情報Ｋｅｙにより調を指定した上、タイミングデータＴｃｓｊ，Ｔｃｅｊ及び和音情報Ｃｎｊの組合わせの繰返しによって、演奏すべき和音を順次指定することができる。
【０１２４】
なお、セクション進行情報や和音進行情報のタイミングは、通常、小節単位或いは拍単位で設定されるが、必要に応じて他の任意のタイミングを採用することができ、例えば、クロックタイミング単位でタイミング設定し、楽曲の小節先頭からのクロックタイミング数を各種タイミングデータ等に使用することができる。また、或るセクションＳｎｉ又は和音Ｃｎｊの終了後直ちに次のセクションＳｎｉ＋１或いは和音Ｃｎｊ＋１が開始する場合は、終了タイミングデータＴｓｅｉ，Ｔｃｅｉ又は開始タイミングデータＴｓｓ＋１，Ｔｃｅｉ＋１の何れかを省略することができる。
【０１２５】
セクション情報及び和音進行情報から所望の演奏音を得る手法を簡単に説明する。制御部７２１は、「セクション進行情報」中の伴奏スタイル指定データＳｔと、順次読み出されるセクション情報Ｓｎｉにより指定されたセクション（例えば、「ＢｅＢｏｐ０１」の「Ｍａｉｎ−Ａ」）の伴奏音データ片を読み出すと、これをＲＡＭに記憶させる。ここで、各セクションに関するデータは、基準となる和音（例えば、「Ｃｍａｊ」）に従って記憶されている。記憶部７２２には、上記基準となる和音に従った伴奏音データ片を、指定された任意の和音に従った音に変換するための変換規則を記述した変換テーブルが記憶されている。和音進行情報テーブルから順次読み出された任意の和音情報Ｃｎｊ（例えば、「Ｄｍａｊ」）が制御部７２１に供給されると、前記基準となる和音に従った伴奏音データ片は、この変換テーブルに基づいて、上記読み出された任意の和音情報Ｃｎｊに従った音に変換される。音声出力部７２６は、この変換された音を出力する。セクション進行情報から読み出されるセクション情報が変化する毎に、制御部７２１に供給される伴奏音データ片が変化するので、発音される音が変化する。一方、和音進行情報から読み出される和音情報が変化したときは、変換規則が変化し、その結果、発音される音が変化する。
【０１２６】
＜動作＞
図２５は、第４実施形態に係る情報処理装置７２０が行う処理のフロー図である。図２５において、ステップＳｄ０〜Ｓｄ５については、第３実施形態に係る図１７のステップＳａ０〜Ｓａ５と同様である。第４実施形態のステップＳｄ６において、制御部７２１は、ステップＳｄ５における検索結果のリズムパターンレコードと同一のパターンＩＤが、いずれかのパートのリズムパターンＩＤに設定されたスタイルデータを検索結果として表示させる。
【０１２７】
図２６は、スタイルデータの検索結果の一例を表す図である。図２６（ａ）は、ユーザがコード入力音域鍵盤７１１ｂを用いて入力したリズムパターンに基づいて、制御部７２１が検索結果として出力したスタイルデータが、表示部７２４に表示された場合を表している。図２６（ａ）〜図２６（ｃ）において、項目「類似度」は、入力リズムパターンと、検索結果であるスタイルデータのリズムパターンとの間の距離を表している。すなわち、「類似度」で表される数値が小さいほど、入力リズムパターンに類似する度合いが高いことを意味している。図２６（ａ）に示されるように、「類似度」（ステップＳｂ７で算出されたリズムパターン同士の距離）が小さい順番で、すなわち入力リズムパターンに対する類似の度合いが高い順番で、スタイルデータが表示されている。ここにおいてユーザは、「キー」、「ジャンル」又は「ＢＰＭ」のすくなくともいずれか一の項目を用いて、この検索結果をフィルタリングして表示させることが可能である。また、ユーザがリズムパターンを入力した際のＢＰＭ、すなわち入力ＢＰＭが、検索結果の上部に入力ＢＰＭ表示欄８０１として表示される。また、検索結果の上部には、検索結果のスタイルデータを入力ＢＰＭでフィルタリングするためのテンポフィルター８０２と、検索結果のスタイルデータを指定した拍子でフィルタリングするための拍子フィルター８０３とが表示される。なお、他にも、「コード」、「スケール」、「音色」を表示し、「コード」であればコードパートにおいて使用しているコードで、「スケール」であればスタイルデータを作成した調で、「音色」であれば各パートの音色で、それぞれでフィルタリングしてもよい。
【０１２８】
制御部７２１は、ユーザが入力ＢＰＭに近いＢＰＭを持つスタイルデータのみを検索結果として出力するためのフィルタリング機能を備えており、ユーザは、検索結果の上部に表示されるテンポフィルター８０２に対して、操作部７２５を介して任意に上記フィルタリング機能のＯＮ／ＯＦＦを設定することが可能である。具体的には、上述したように各スタイルデータには「ＢＰＭ」が含まれているから、上記フィルタリング機能がＯＮである場合、制御部７２１は、入力ＢＰＭの例えば（１／２1/2）倍〜２1/2倍のＢＰＭを持つスタイルデータに関する情報のみを検索結果として表示する。なお、入力ＢＰＭに適用する上記係数の値（１／２1/2）〜２1/2は一例であり、その他の値であってもよい。
【０１２９】
図２６（ｂ）は、図２６（ａ）の状態から、ユーザが、フィルタリング機能をＯＮにした状態を表している。図２６（ｂ）では、上述した（１／２1/2）〜２1/2という係数を用いて制御部７２１がフィルタリングを行っている。つまり、図２６（ｂ）では、入力ＢＰＭが１００であるため、７１〜１４１のＢＰＭを持つスタイルデータが、フィルタリングの結果として表示されている。このようにすることで、ユーザは、入力ＢＰＭと近いＢＰＭを持つスタイルデータを検索結果として得ることができ、検索結果に対してより納得感を持てるようになる。
【０１３０】
また、ユーザは、操作部７２５を用いて拍子フィルター８０３に対して４／４拍子などの任意の拍子を表す情報を入力することで、入力された拍子情報と対応づけられたスタイルデータの情報が検索結果として表示されるように、フィルタリングを行うことが可能である。なお、指定された拍子のスタイルデータに絞りこむだけでなく、予めグルーピングされた関連する拍子も含めて抽出するようにしてもよい。例えば４拍子指定時だと４拍子のスタイルデータだけが抽出されるだけではなく、４拍子のメトロノーム上で入力が容易な、２拍子、８分の６拍子も含めて抽出されるようにしてもよい。
【０１３１】
また、ユーザは、初めに或るパートを指定して、入力リズムパターンに近いリズムパターンを持つスタイルデータを検索（１回目の検索）した後に、初めに指定したパートと異なるパートを指定してリズムパターンを入力し、再び検索（２回目の検索）を行うことで、１回目の検索で出力されたスタイルデータが２回目の検索によって絞り込まれた検索結果を得ることが可能である。この場合の検索結果における「類似度」は、各々のスタイルデータにおいて、１回目の検索で指定されたパートにおける類似度と、２回目の検索で指定されたパートにおける類似度とが加算された値となっている。例えば図２６（ｃ）は、図２６（ａ）の検索結果が表示された状態において、ユーザがパートにハイハットを指定してリズムパターンを入力した結果の表示内容を表している。また、図２６（ｃ）では、拍子フィルター８０３に入力された「４／４」の拍子情報を持つスタイルデータを検索結果として表示させる。図２６（ｃ）における「類似度」は、各々のスタイルデータにおいて、対象パートが「コード」である場合の類似度と、対象パートが「ハイハット」である場合の類似度とが加算された値となっている。なお、図２６においては、「第１検索パート」及び「第２検索パート」という項目で表されるように、２つのパートを用いて検索可能なことを示しているが、検索の際に指定できるパートの数はこれに限ったものではない。また、ユーザが、或るパートを指定して検索を行った後に、初めに指定したパート（第１検索パート）と異なるパート（第２検索パート）を指定してリズムパターンを入力した場合、制御部７２１は、第１検索パートを用いた検索結果に関わらず、第２検索パートのみを用いた検索結果を出力（上書き検索という）するようにしてもよい。このような絞り込み検索と上書き検索とは、情報処理装置７２０の操作部７２５を介して、ユーザにより切り替え可能としてもよい。
【０１３２】
また、複数の異なるパートが指定された場合の検索方法は、上述した内容に限らない。例えば、ユーザが、異なる複数のパートを同時に指定して演奏操作を行った場合、次のようにすればよい。制御部７２１は、ユーザにより指定された各パートのパートＩＤを持つリズムパターンレコードと、当該パートの入力リズムパターンとに基づいて、両者の類似度を各々算出する。次に制御部７２１は、指定された各パートのリズムパターンレコードについて算出された類似度を、上記リズムパターンレコードと対応付けられたスタイルデータごとに加算する。そして表示部７２４は、加算後の類似度が最も小さい、すなわち最も類似しているスタイルデータから昇順で表示する。例えばユーザが、バスドラムとスネアドラムのパートについて同時に演奏操作を行ってリズムパターンを入力した場合、制御部７２１は、バスドラムの類似度とスネアドラムの類似度をそれぞれ算出すると、スタイルデータごとに両者を加算する。このようにすれば、ユーザは、複数のパートを同時に指定して、意図するリズムパターンとの類似度が決められた条件を満たすようなリズムパターンで構成されたフレーズを持つスタイルデータを検索することができる。
【０１３３】
図２６（ａ）〜（ｃ）のいずれかにおいて、操作部７２５を用いてユーザが任意のスタイルデータを選択すると、制御部７２１は、ユーザにより選択されたスタイルデータを特定し（ステップＳｄ７）、特定したスタイルデータの構成表示画面を表示部７２４に表示させる。
【０１３４】
図２７は、スタイルデータの構成表示画面の一例を表す図である。ここでは、ユーザが、検索結果からスタイル名が「Ｂｅｂｏｐ０１」であるスタイルデータを選択したものとする。構成表示画面の上部には、選択されたスタイルのスタイル名、キー、ＢＰＭ及び拍子が表示される。構成表示画面の中央には、セクションを示すタブ（セクションタブという）４０１が表示されるとともに、各タブが示すセクションにおける各パートの情報がそれぞれトラックに展開されて表示される。各パートの情報には、それぞれのリズムパターンレコードにおけるＢＰＭ、リズムカテゴリ及びキーが表示される。図２７において横軸は時間軸を表し、図において左から右に向かって時間が進行することを表す。また、タブで示されるセクションにおける各トラックに示される各パートのリズムパターンに基づいて、各構成音の発音開始時刻に相当する位置に、その画像の左端が対応するように所定の画像８１２が表示される。ここでは、この画像８１２は構成表示画面に対して上下に所定の幅を持った棒状の形状で表示される。ユーザが、操作部７２５を用いてセクションタブ８１１のうち任意のタブを選択すると、制御部７２１は、選択されたタブのセクションのスタイルデータに基づく楽音を再生する（ステップＳｄ８）。なお、この画面では、図示しない操作子の操作によって、ユーザが作成したオリジナルのスタイルデータや、既存あるいはオリジナルのスタイルデータに含まれる演奏データを、登録、編集及び確認することも可能である。
【０１３５】
情報処理装置７２０は、スタイルデータの構成表示画面において、図示しない操作子をユーザが操作することによる再生開始指示に基づいてスタイルデータの再生が可能である。その再生時の動作のモードとして、自動伴奏モード、差し替え検索モード及び追従検索モードの３種類を備えている。ユーザは、操作部７２５を用いることで、これらのモードを切り替えることが可能である。自動伴奏モードの場合、選択されたスタイルデータに基づく演奏データが再生されるとともに、ユーザは、リズム入力装置７１０や操作部７２５を用いて演奏操作を行うことが可能であり、演奏操作に基づく音が、選択されたスタイルデータに基づく楽音とともに出力される。このとき、制御部７２１はミュート機能を備えており、ユーザは、操作部７２５を用いて任意のパートについてミュート機能を働かせることで、このパートの演奏データが再生されないようにすることが可能である。この場合、ユーザは、ミュートさせていないパートを伴奏音源のように聴きながら、ミュートさせたパートについては自らが演奏操作を行うことが可能である。
【０１３６】
また、差し替え検索モードの場合、図２７で示される構成表示画面において、ユーザが、操作部７２５を用いて任意のパートを指定してリズム入力装置７１０に対してリズムパターンを入力すると、制御部７２１は、以下のような処理を行う。この場合、制御部７２１は、再生中のスタイルデータにおいて予め組み合わされた演奏データのうち、指定されたパートについて、入力されたリズムパターンに基づく検索結果から選択された演奏データに差し替える。このとき、ユーザが任意のパートを指定して、リズム入力装置７１０を用いてリズムパターンを入力すると、制御部７２１は指定されたパートについて上述した検索処理を行い、図２１のような検索結果の画面を表示部７２４に表示させる。ユーザが検索結果から特定の一件を選択すると、制御部７２１は、再生中のスタイルにおいて、ユーザにより指定されたパートの演奏データを選択されたものに差し替える。そして、その差替えられた演奏データによって演奏がなされる。このようにすることで、ユーザは、検索結果から選択したスタイルのうち、所望するパートについて、自らの入力リズムパターンに基づく演奏データに差し替えて演奏することが可能となる。これにより、ユーザは、既に組み合わされたものに限らず、セクション毎、パート毎に自らの意図するリズムパターンを反映させたスタイルデータを得ることができるため、情報処理装置７２０を用いて、検索だけでなく作曲を行うことが可能となる。
【０１３７】
また、追従検索モードの場合、ユーザが、ミュート機能を用いて、ミュートさせていないパートを伴奏音源のように聴きながら、ミュートさせたパートについて自ら演奏操作を行うと、制御部７２１は、演奏操作が行われたパートの入力リズムパターンと相性の良い演奏データを、演奏操作が行われていない各パートについて検索する。ここでリズムパターン同士の相性が良いとは、キー、ジャンル又は拍子が同じであるとか、入力ＢＰＭに対して予め決められた範囲内のＢＰＭを有するといったことに基づいて、予め決められれば良い。制御部７２１は、演奏操作が行われたパートの入力リズムパターンと相性の良い演奏データのうち、類似度が最も小さい（すなわち最も類似している）ものを特定すると、これらを同期させて再生させる。このようにすれば、検索結果に対するユーザの納得感が低いものであっても、ユーザは、パートを指定してリズムパターンを入力することで、自らの入力したリズムパターンと相性の良いスタイルデータを再生させることが可能となる。
【０１３８】
ステップＳｄ８の次に、操作部７２５を用いてユーザが別のスタイルデータを選択すると（ステップＳｄ９；Ｙｅｓ）、制御部７２１は、処理をステップＳｄ７に戻す。この場合、制御部７２１は、新たに選択されたスタイルデータを特定し（ステップＳｄ７）、特定したスタイルデータの再生画面を表示部７２４に表示させる。ステップＳｄ８の次に、操作部７２５を用いてユーザが別のスタイルデータを選択することなく（ステップＳｄ９；Ｎｏ）、検索処理の終了が指示されると（ステップＳｄ１０；Ｙｅｓ）、制御部７２１は処理を終了する。
【０１３９】
このように、第４実施形態によれば、ユーザは、選択されたパートについて演奏操作によってリズムパターンを入力することで、特定のパートの楽音データに限らず、入力リズムパターンと類似するリズムパターンの楽音データと、これと相性の良い楽音データとが組み合わさったスタイルデータを得ることが出来る。また、ユーザは、検索結果のスタイルデータのうち、任意のパートの楽音データについて、最初に入力したのとは異なる入力リズムパターンと類似する楽音データに差し替えて演奏したり、そのデータを作成したりすることが可能である。これにより、ユーザは、情報処理装置７２０を用いて検索だけでなく作曲を行うことが可能となる。
【０１４０】
＜変形例＞
以上の実施形態は次のように変形可能である。尚、以下の変形例は、特に実施形態を指定したものを除き、適宜組み合わせて実施しても良い。
＜プレイバックモード及び構成音分割再生モード＞
（変形例１）
第１実施形態及び第２実施形態において、ユーザがフレーズデータを再生させるときのモードとして、上述した内容以外に、楽音信号生成装置１０がプレイバックモードと構成音分割再生モードとを備えるようにしてもよい。プレイバックモードは、ユーザがフレーズデータの再生開始位置を任意に指定可能なモードである。また、構成音分割再生モードでは、各構成音の単位でフレーズデータがフレーズデータベース２０２に含まれており、ユーザは、指定した構成音のみを再生させることが可能である。ユーザは、操作部４００を用いて、再生時におけるプレイバックモード及び構成音分割再生モードを任意に選択することが可能である。ここで、プレイバックモードは、音信号の生成の形態のモードにおける第１のモードの一例である。また、構成音分割再生モードは、上記モードにおける第２のモードの一例である。また、操作部４００は、音信号の生成の形態のモードを第１のモードと第２のモードとから選択する選択手段の一例である。
【０１４１】
図２８は、プレイバックモードにおける表示内容を表す模式図である。プレイバックモードでは、制御部１００が、選択されたフレーズデータを表す波形の画像を表示部３００に表示させる。図２８（ａ）において、フレーズデータの波形が１小節分表示されている。図２８において、フレーズデータの波形の図形上に表示される白抜きの棒は、小節線８２１を表す。小節線８２１は、時間の経過に伴い、楽音データの波形上を進行方向（ここでは右）に向かって移動する。１小節は０から１の間で正規化されており、小節線８２１は「１」の位置に到達すると、再び「０」の位置から「１」の位置へ向かって移動を繰り返す。ここで、例えば矢印８２２で示される位置をユーザが操作部４００を用いて指定すると、制御部１００は、指定された位置に小節線８２１を移動させて表示させるとともに、指定された位置に基づく開始位置からフレーズデータを読み出す。そして制御部１００は、読み出したフレーズデータから楽音信号を生成し、生成した楽音信号に基づく音を再生させる。この結果、表示部３００に表示される内容は図２８（ｂ）に示すようなものとなる。
【０１４２】
また、プレイバックモードにおいて、ユーザが操作部４００を用いて頭出し再生の指示を行うと、制御部１００は、表示部３００にその波形を表示させた楽音データを先頭から再生させる。このとき、例えば指示がボタンによって行われる場合、ユーザがボタンを長押しすると、制御部１００は、フレーズデータにおいて発音開始時刻が最も早い構成音のデータから楽音信号を生成し、生成した楽音信号に基づく音を連続して繰り返し再生する。このほかに、例えば１小節が４拍で構成されるときに、ユーザの操作に応じて、２拍目の頭出しや３拍目の頭出しを可能としてもよい。また、例えば、表示された波形のうち任意の範囲をユーザが操作部４００を用いて選択し、頭出し再生の操作が行われると、フレーズデータにおいて選択された範囲（例えば１拍目〜２拍目の区間）に相当する構成音が繰り返し再生される。また、操作子がターンテーブルのようなものである場合、制御部１００は、ユーザがターンテーブルを用いて行った操作に基づいて、小節線８２１の表示位置を変更するとともに、変更後の小節線８２１の位置に基づく開始位置のフレーズデータから楽音信号を生成し、生成した楽音信号に基づく音を再生させる。プレイバックモードは、ユーザが、或るフレーズデータの音色を確認したり、先頭に位置する構成音を連続して再生させることで演奏を行ったりするときに用いられる。
【０１４３】
次に、構成音分割再生モードについて説明する。構成音分割再生モードでは、制御部１００は、選択されたフレーズデータの波形の画像を図５に示すような態様で表示部３００に表示させる。図５において、フレーズデータの波形が１小節分表示されている。１小節は０から１の間で正規化されている。図５に示すフレーズデータの波形の画像は、構成音毎、すなわちフレーズデータを分ける区間毎に分割された画像（区間画像という）の組み合わせからなる。例えば、図５において、「ｔ1」で示される構成音は、その発音開始時刻から次の構成音の発音開始時刻までの範囲、すなわち、小節線上において０．１２７〜０．３７３までの範囲の区間画像が割り当てられている。ユーザは、各構成音に割り当てられた区間画像を指定して、この構成音を再生させるような操作を行うことが可能である。
【０１４４】
ユーザが、操作部４００に設けられているホイールやボタンを利用して分割された構成音の位置を指定して、操作部４００に設けられている再生指示ボタンを用いて再生指示をすると、制御部１００は、トリガーデータを得る。制御部１００は、本発明に係る第２の特定手段の一例である。制御部１００は、トリガーデータに基づき指定された位置に基づく位置情報に対応する区間画像に割り当てられた構成音を特定すると、特定した構成音のみを抽出したフレーズデータから楽音信号を生成し、生成した楽音信号を一時記憶部１０５に記憶させる。これにより、ユーザは、構成音の発音開始時刻と多少ずれた位置を指定しても、所望する構成音を再生させることが可能となる。このとき、クリップノイズを防ぐために、構成音の波形の終端から所定の範囲についてフェードアウトさせる処理を施してもよい。そして、制御部１００は、一時記憶部１０５に記憶された楽音信号を、再生させる。必要に応じて、再生指示ボタンとしてタップなどを利用して、操作時のベロシティデータを得られるようにし、一時記憶部１０５に記憶された楽音信号を、ベロシティデータの大きさに応じた音量で再生させてもよい。ここで、制御部１００は、一時記憶部１０５に記憶された楽音信号を、フレーズデータにおいてこの構成音が本来有する強度に対するベロシティデータの大きさに応じた音量で再生させてもよい。
【０１４５】
（変形例２）
第１実施形態及び第２実施形態において、各構成音の開始及び終了付近で楽音信号がそれぞれフェードイン、フェードアウトするように生成しても良い。詳細には、楽音信号生成装置１０は、開始時刻においては構成音の振幅をほぼゼロとし、振幅を徐々に大きくして、予め定められた時間が経過した時刻において本来再生されるべき振幅となるようにしても良い。また、楽音信号生成装置１０は、構成音を途中から、すなわち次の構成音の開始時刻から予め定められた時間だけ前の時刻から、振幅を徐々に小さくして、構成音の終了時刻においてほぼ振幅ゼロとなるようにしても良い。なお、ここでいう予め定められた時間とは、例えば、数ｍｓｅｃから数十ｍｓｅｃまでの範囲であり、この範囲でユーザが調整可能な構成が好ましい。このような楽音信号のフェードイン、フェードアウトについては、フレーズデータに予め施しても良いし、演奏再生中にリアルタイムで振幅を操作することによって実行しても良い。また、フェードイン、フェードアウトするか否かについては、上記時間調整とともに、操作部４００への操作によってユーザに選択可能とさせる構成としても良い。
【０１４６】
（変形例３）
第３実施形態及び第４実施形態では、ループ再生モード或いは演奏ループ再生モードにおいて１件のリズムパターンレコードが検索結果として出力されていたが、これに限らず、制御部７２１が、入力リズムパターンを基準として、一定以上の類似度を持つ複数のリズムパターンレコードを、類似度の高い順番に並び替えて検索結果として出力してもよい。このとき、検索結果として出力されるフレーズレコードの件数は、ＲＯＭに定数として記憶されていてもよいし、記憶部７２２に変数として記憶され、ユーザにより変更可能としてもよい。例えば検索結果として出力されるフレーズレコードの件数が５件である場合、各フレーズレコードのフレーズ楽音データの名称が５件分、表示部７２４にリスト形式で表示される。そしてユーザが選択したフレーズレコードに基づく音が、音声出力部７２６から出力される。
【０１４７】
（変形例４）
第３実施形態及び第４実施形態において、楽器の種類が音高に幅のある楽器の場合、フレーズ楽音データにおける各構成音のキーと、外部音源を含む伴奏のキーが一致しない場合がある。このような場合に備えて、ユーザが操作部７２５を通じて操作を行うことで、制御部７２１が、フレーズ楽音データにおける各構成音のキーを変更可能としてもよい。また、このようなキーの変更は、操作部７２５を介して行われてもよいし、リズム入力装置７１０に設けられたフェーダー、つまみ、ホイール、ボタン等の操作子を介して行われてもよい。また、予め上記構成音のキーを表すデータを自動伴奏ＤＢ７２２１に記憶させておくことで、ユーザがキーを変更した場合に、制御部７２１が、変更後のキーが何かをユーザに告知するようにしてもよい。
【０１４８】
（変形例５）
第３実施形態及び第４実施形態において、楽音データによっては、構成音の終了付近で波形の振幅（パワー）が０近くに収束されていないものがあり、この場合、構成音に基づく音声が出力された後に、クリップノイズが発生する場合がある。これを防ぐために、制御部７２１が、構成音の開始及び終了付近の一定範囲を自動でフェードイン又はフェードアウトする機能を有していてもよい。ここでユーザは、上記フェードイン又はフェードアウトを適用させるかどうかを、操作部７２５あるいはリズム入力装置７１０に設けられた何らかの操作子を介して選択可能である。
【０１４９】
図２９は、楽音データにおける各構成音に対して、フェードアウトが適用された場合を表す模式図である。図２９に示されるように、“フェード”と矢印で示された箇所に、フェードアウトが適用されることで、該当する箇所の波形の振幅が徐々に小さくなり、構成音の終了時刻においては振幅がほぼ０となっている。なお、各構成音について、フェードアウトが適用される期間は、数ｍｓｅｃから数十ｍｓｅｃ程度の範囲内で、ユーザにより調整可能である。また、このフェードアウトを適用する処理は、ユーザによる演奏操作の前処理として行われてもよいし、リアルタイムの処理、または後処理として行われてもよい。
【０１５０】
（変形例６）
第３実施形態及び第４実施形態において、ユーザが演奏操作を行った結果であるフレーズを、制御部７２１が録音し、この録音した内容を、一般的に音源ループ素材で用いられているようなファイルフォーマットで出力可能としてもよい。例えば、楽曲制作において、ユーザ自らが欲するリズムパターンが自動伴奏ＤＢ７２２１に記憶されていない場合に、このように自身の演奏を記録する機能があると、ユーザは、欲していたものとイメージが近いフレーズ楽音データを手に入れることが可能となる。
【０１５１】
（変形例７）
また、第３実施形態及び第４実施形態において、制御部７２１は、再生対象とする楽音データを１つに限らず、複数の楽音データを再生対象として、複数のフレーズを音声として重ねて出力可能としてもよい。この場合、例えば表示部７２４に複数のトラックが表示され、ユーザは各々のトラックに対して、それぞれ異なる楽音データ及び再生モードを割り当てることが可能である。これにより、例えばユーザは、トラックＡにコンガの楽音データをループ再生モードで割り当てることでこれを伴奏とし、トラックＢにおいてジャンベの楽音データを演奏再生モードで割り当てることで演奏を行う、といったことが可能となる。
【０１５２】
（変形例８）
第３実施形態及び第４実施形態において、ユーザの演奏操作によって入力されたベロシティデータに対して、検索結果の楽音データにおける、上記ベロシティデータに紐付けられたトリガーデータと同じ時刻を持つ構成音（構成音Ａとする）のアタック強度の大きさが極端に異なる（ここでは予め定められた閾値を超える場合とする）場合、以下のような処理が行われてもよい。上述のような場合、制御部７２１は、上記楽音データにおいて、入力されたベロシティデータにほぼ対応した大きさのアタック強度を持つ複数の構成音から、ランダムに選択した構成音と構成音Ａを差し替える。ここでユーザは、上述した処理を適用させるかどうかを、操作部７２５あるいはリズム入力装置７１０に設けられた何らかの操作子を介して選択可能である。このようにすれば、ユーザは自らが行った演奏操作により近い出力結果を得ることが可能となる。
【０１５３】
（変形例９）
第３実施形態においては、楽音データはＷＡＶＥやｍｐ３といったファイルフォーマットからなるとしたが、これに限らず、例えばＭＩＤＩ形式のようなシーケンスデータとしてもよい。この場合、記憶部７２２には、ＭＩＤＩ音源が記憶される。
この場合、記憶部７２２には、ＭＩＤＩデータの形式でファイルが記憶され、音声出力部７２６に相当する構成はＭＩＤＩ音源となる。特に第３実施形態及び第４実施形態において、楽音データがＭＩＤＩ形式である場合、キーシフトやピッチ変換に際してタイムストレッチなどの処理が不要となる。従って、この場合、制御部７２１は、ユーザによりキー指定鍵盤７５２を用いてキーが指定されたときは、楽音データが表すＭＩＤＩ情報のうちキーを示す情報を指定キーに変更する。また、この場合、リズムパターンテーブルにおいて、各リズムパターンレコードが複数のコードに応じた楽音データを有する必要がない。制御部７２１は、ユーザによりコード指定ボックス２０３を用いてコードが指定されたときは、楽音データが表すＭＩＤＩ情報のうちコードを示す情報を、指定されたコードに変更する。このように、楽音データがＭＩＤＩ形式のファイルであっても、上述した実施形態と同様の効果を奏することができる。また、第４実施形態においては、オーディオデータを使ったスタイルデータを利用してもよい。この場合、基本的な構成は、第２実施形態のスタイルデータと同様だが、各パートの演奏データがオーディオデータとして記憶されている点が異なるものである。また、ＭＩＤＩとオーディオが組み合わされたスタイルデータを利用してもよい。
【０１５４】
（変形例１０）
第３実施形態及び第４実施形態においては、ユーザの演奏操作によるトリガーデータと自動伴奏ＤＢ７２２１に含まれるリズムパターンデータとの比較によって、制御部７２１が特定のリズムパターンレコードを検出していたが、これに限らず、制御部７２１は、ユーザの演奏操作によるトリガーデータ及びベロシティデータの双方を用いて自動伴奏ＤＢ７２２１を検索するようにしてもよい。この場合、同じリズムパターンを持つ楽音データが２つ存在した場合に、各構成音のアタック強度が、ユーザの演奏操作によるベロシティデータと、より近い楽音データが検索結果として検出される。このようにすれば、アタック強度についても、ユーザがイメージしていたものに近い楽音データが、検索結果として出力されることが可能となる。
【０１５５】
＝リズムパターン同士のズレの計算方法＝
第３実施形態及び第４実施形態における、リズムパターン同士のズレの計算方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その計算方法のバリエーションを記載する。
（変形例１１）
例えば、確実にリズムカテゴリが一致した検索結果が出力されるように、入力リズムパターンに該当するリズムカテゴリを判定した後、判定結果のリズムカテゴリに属するフレーズレコード又はリズムパターンレコードのみを対象として、リズムパターンのズレの計算（ステップＳｂ６）、及びリズムパターン同士の距離の計算（ステップＳｂ７）が行われるようにしてもよい。このようにした場合、計算量が少なくてすむため、情報処理装置７２０における負荷が下がるとともに、ユーザにとっての応答時間も短くなる。
【０１５６】
＜ズレが基準より小さいものはズレを０扱いor小さく補正＞
（変形例１２）
ステップＳｂ６におけるリズムパターン同士のズレの計算において、以下のような処理を施してもよい。変形例１２において、制御部７２１は、入力リズムパターンにおいて比較対象のリズムパターンにおけるオンセット時刻との時刻差の絶対値が閾値より小さいオンセット時刻については、その時刻差の絶対値はユーザの手入力による意図しないものであるとみなして、ズレの値を０あるいは本来の値より小さくなるように補正する。この閾値は、例えば「１」という値であり、予め記憶部７２２ａに記憶されている。例えば、入力リズムパターンのオンセット時刻が「１，１３，２３，３７」であり、比較対象のリズムパターンのオンセット時刻が「０，１２，２４，３６」であったとする。この場合、各オンセット時刻の差の絶対値は、「１，１，１，１」となる。ここで閾値が「１」であったとすると、制御部７２１は、各オンセット時刻の差の絶対値に係数αを乗算して補正を行う。係数αは０から１の間を取り、ここでは０であるものとする。この場合、補正後の各オンセット時刻の差の絶対値は、「０，０，０，０」となるから、制御部７２１は、両者のリズムパターンのズレを０と算出する。係数αは、予め決められて記憶部７２２に記憶されていてもよいが、２つのリズムパターンのズレの大きさに係数αの値を対応付けた補正カーブをリズムカテゴリ毎に記憶部７２２に記憶させることで、制御部７２１がこの補正カーブに従って係数αを決定してもよい。
【０１５７】
＜ズレが基準より大きいものは計算に用いない＞
（変形例１３）
ステップＳｂ６におけるリズムパターン同士のズレの計算において、以下のような処理を施してもよい。変形例１３において、制御部７２１は、入力リズムパターンにおいて比較対象のリズムパターンにおけるオンセット時刻との時刻差の絶対値が閾値より大きいオンセット時刻については、計算に用いない、あるいは本来の値より小さくなるようにズレを補正する。これにより、例えばユーザが１小節の前半部分や後半部分だけリズムパターンを入力した場合であっても、リズムパターンが入力された区間を対象として検索が行われる。従って、例えば、１小節通して同一のリズムパターンを有するリズムパターンレコードが自動伴奏ＤＢ７２２１に含まれなくても、ユーザは、入力リズムパターンに或る程度類似したリズムパターンレコードを検索結果として得ることができる。
【０１５８】
＜ベロシティパターンの差を考慮＞
（変形例１４）
ステップＳｂ６におけるリズムパターン同士のズレの計算において、ベロシティパターンの差を考慮した算出方法を用いてもよい。入力リズムパターンをＡとして、リズムパターンレコードに記述されたリズムパターンをＢとすると、変形例１４におけるＡとＢとのズレの大きさの計算は、以下の手順で行われる。
（１１）制御部７２１は、リズムパターンＡにおける各オンセット時刻を基準として、リズムパターンＢにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
（１２）制御部７２１は、手順（１１）で算出した各絶対値の総和を算出する。
（１３）制御部７２１は、リズムパターンＡにおける各オンセット時刻のベロシティデータと、リズムパターンＢにおける各オンセット時刻のアタック強度との差の絶対値の総和を算出する。
（１４）制御部７２１は、リズムパターンＢにおける各オンセット時刻を基準として、リズムパターンＡにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
（１５）制御部７２１は、手順（１４）で算出した各絶対値の総和を算出する。
（１６）制御部７２１は、リズムパターンＢにおける各オンセット時刻のベロシティデータと、リズムパターンＡにおける各オンセット時刻のアタック強度との差の絶対値の総和を算出する。
（１７）制御部７２１は、以下の式（１）に従って、リズムパターンＡとリズムパターンＢとのズレを算出する。
リズムパターンＡとリズムパターンＢとのズレ＝α×（手順（１２）で算出した時刻差の絶対値の総和＋手順（１５）で算出した時刻差の絶対値の総和）／２＋（１−α）×（手順（１３）で算出したベロシティの差の絶対値の総和＋手順（１６）で算出したベロシティの差の絶対値の総和）／２・・・式（１）
式（１）においてαは０＜α＜１を満たす予め決められた係数であり、記憶部７２２ａに記憶されている。ユーザは、操作部７２５を用いて係数αの値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、オンセット時刻の一致度とベロシティの一致度とのどちらを優先するかによって、係数αの値を設定すればよい。このようにすれば、ユーザは、ベロシティを考慮した検索結果を得ることができる。
【０１５９】
＜デュレーションパターンの差を考慮＞
（変形例１５）
ステップＳｂ６におけるリズムパターン同士のズレの計算において、デュレーションパターンの差を考慮した算出方法を用いてもよい。入力リズムパターンをＡとして、リズムパターンレコードに記述されたリズムパターンをＢとすると、変形例１５におけるＡとＢとのズレの大きさの計算は、以下の手順で行われる。
（２１）制御部７２１は、リズムパターンＡにおける各オンセット時刻を基準として、リズムパターンＢにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
（２２）制御部７２１は、手順（２１）で算出した各絶対値の総和を算出する。
（２３）制御部７２１は、リズムパターンＡにおける各オンセット時刻のデュレーションパターンと、リズムパターンＢにおける各オンセット時刻のデュレーションパターンとの差の絶対値の総和を算出する。
（２４）制御部７２１は、リズムパターンＢにおける各オンセット時刻を基準として、リズムパターンＡにおける最も近いオンセット時刻との時刻差の絶対値を算出する。
（２５）制御部７２１は、手順（２４）で算出した各絶対値の総和を算出する。
（２６）制御部７２１は、リズムパターンＢにおける各オンセット時刻のデュレーションパターンと、リズムパターンＡにおける各オンセット時刻のデュレーションパターンとの差の絶対値の総和を算出する。
（２７）制御部７２１は、以下の式（２）に従って、リズムパターンＡとリズムパターンＢとのズレを算出する。
リズムパターンＡとリズムパターンＢとのズレ＝β×（手順（２２）で算出した時刻差の絶対値の総和＋手順（２５）で算出した時刻差の絶対値の総和）／２＋（１−β）×（手順（２３）で算出したデュレーションの差の絶対値の総和＋手順（２６）で算出したデュレーションの差の絶対値の総和）／２・・・式（２）
式（２）においてβは０＜β＜１を満たす予め決められた係数であり、記憶部７２２に記憶されている。ユーザは、操作部７２５を用いて係数βの値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、オンセット時刻の一致度とデュレーションパターンの一致度とのどちらを優先するかによって、係数βの値を設定すればよい。このようにすれば、ユーザは、デュレーションを考慮した検索結果を得ることができる。
以上が、リズムパターン同士のズレの計算方法のバリエーションについての説明である。
【０１６０】
＝リズムパターン同士の距離の計算方法＝
第３実施形態及び第４実施形態における、リズムパターン同士の距離の計算方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その計算方法のバリエーションを記載する。
＜両者の値の総和に係数を用いる＞
（変形例１６）
第３実施形態及び第４実施形態におけるステップＳｂ７において、制御部７２１は、ステップＳｂ４でリズムカテゴリについて算出した類似度距離と、ステップＳｂ６で算出したリズムパターンのズレとを乗算することで、リズムパターン同士の距離を計算していたが、上記類似度距離又は上記ズレのどちらか一方が「０」の値であると、リズムパターン同士の距離が「０」と算出され、他方の値を反映しないものとなってしまう。これに対して、ステップＳｂ７において制御部７２１が以下の式（３）に従ってリズムパターン同士の距離を算出してもよい。
リズムパターン同士の距離＝（ステップＳｂ４でリズムカテゴリについて算出した類似度距離＋γ）×（ステップＳｂ６で算出したリズムパターンのズレ＋δ）・・・式（３）
式（３）において、γ及びδは予め決められた定数であり、記憶部７２２に記憶されている。ここで、γ及びδは適当に小さな値であればよい。このようにすれば、ステップＳｂ４でリズムカテゴリについて算出した類似度距離と、ステップＳｂ６で算出したリズムパターンのズレのどちらか一方が「０」の値であっても、他方の値が反映されたリズムパターン同士の距離が算出される。
【０１６１】
＜両者の値を定数倍したものの和を用いる＞
（変形例１７）
ステップＳｂ７におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例１７では、ステップＳｂ７において制御部７２１が以下の式（４）に従ってリズムパターン同士の距離を算出する。
リズムパターン同士の距離＝ε×ステップＳｂ４でリズムカテゴリについて算出した類似度距離＋（１−ε）×ステップＳｂ６で算出したリズムパターンのズレ・・・式（４）
式（４）においてεは０＜ε＜１を満たす予め決められた係数である。係数εは記憶部７２２に記憶されており、ユーザは操作部７２５を用いてその値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、リズムカテゴリについて算出した類似度距離と、リズムパターンのズレとのどちらを優先するかによって、係数εの値を設定すればよい。このようにすれば、ユーザは、より自らの所望する検索結果を得ることができる。
【０１６２】
＜入力時のテンポに近いテンポを持つものの距離を小さく算出＞
（変形例１８）
ステップＳｂ７におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例１８では、ステップＳｂ７において制御部７２１が以下の式（５−１）に従ってリズムパターン同士の距離を算出する。
リズムパターン同士の距離＝（ステップＳｂ４でリズムカテゴリについて算出した類似度距離＋ステップＳｂ６で算出したリズムパターンのズレ）×з×｜入力ＢＰＭ−リズムパターンレコードのＢＰＭ｜・・・式（５−１）
式（５−１）においてзは０＜з＜１を満たす予め決められた定数である。зは記憶部７２２に記憶されており、ユーザは操作部７２５を用いてその値を変更可能である。例えば、ユーザは、リズムパターンを検索するにあたり、ＢＰＭの差をどの程度優先するかによって、係数зの値を設定すればよい。このとき、入力ＢＰＭとそのＢＰＭとの差が予め決められた閾値を越えるようなリズムパターンレコードは、制御部７２１が検索結果から除外するようにしてもよい。このようにすれば、ユーザは、ＢＰＭを考慮した検索結果を得ることができる。
【０１６３】
また、上記式（５−１）の別の例として、以下のものを用いてもよい。
リズムパターン同士の距離＝（ステップＳｂ４でリズムカテゴリについて算出した類似度距離＋ステップＳｂ６で算出したリズムパターンのズレ）+з×｜入力ＢＰＭ−リズムパターンレコードのＢＰＭ｜・・・式（５−２）
式（５−２）においても、式（５−１）と同様に、зは０＜з＜１を満たす予め決められた定数である。зは記憶部２２に記憶されており、ユーザは操作部２５を用いてその値を変更可能である。式（５−２）を用いれば、例えばεをかなり小さい値にすることで、基本的にはリズムパターンが近いものほど高順位で結果が出力され、更に、リズムパターンが一致しているものの中からテンポが近い順に表示されるようにすることができる。
【０１６４】
＜入力時の音色に近い音色を持つものの距離が小さく算出されるように補正＞
（変形例１９）
ステップＳｂ７におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例１９では、ステップＳｂ７における上述した式のいずれかにおいて、制御部７２１が、右辺に対して、リズムパターンの入力時に指定された楽音の音色と比較対象のリズムパターンレコードの音色との一致度を乗算する。音色の一致度の算出方法については、周知の方法が用いられればよい。ここでは、一致度の値が小さい程、両者の音色が近いものであり、一致度の値が大きい程、両者の音色が離れているものとする。このようにすれば、ユーザはリズムパターンの入力時に体感する音色に近い音色のリズムパターンレコードが検索結果として得られやすいため、ユーザは検索結果により納得感を持つことができる。
【０１６５】
音色を考慮した検索は、具体的な手法として、例えば以下のようなものが考えられる。まず、パート毎に使用されている音色データ（具体的には音色のプログラムナンバとＭＳＢ（Most Significant Bit）及びＬＳＢ（Least Significant Bit））を、音色ＩＤと紐付けて予めスタイルテーブルに記述しておく。ユーザは、操作部２５を用いて音色データを指定して、リズムパターンを入力する。そして、制御部２１は、指定された音色データと一致する音色データに対応したスタイルデータが検索候補として出力されやすくなるように制御する。または、音色ＩＤを単位として音色データ毎の類似度合が予め記述されたデータテーブルを予め記憶部２２に記憶させておき、制御部２１が、類似度合の高い音色データの音色ＩＤを有するスタイルデータを優先して検索するように制御してもよい。
【０１６６】
＜入力時のジャンルに近いジャンルを持つものの距離が小さく算出されるように補正＞
（変形例２０）
ステップＳｂ７におけるリズムパターン同士の距離の計算は、上述したものに限らず、次のような方法を用いてもよい。変形例２０では、ユーザは、リズムパターンの入力時に、操作部７２５を用いてジャンルを指定することが可能である。変形例２０では、ステップＳｂ７における上述した式のいずれかにおいて、制御部７２１が、右辺に対して、リズムパターンの入力時に指定されたジャンルと比較対象のリズムパターンレコードのジャンルとの一致度を乗算する。ここで、ジャンルは、大ジャンル、中ジャンル、小ジャンルといったように、段階的に区分けされていてもよい。制御部７２１は、指定されたジャンルと一致する又は含むリズムパターンレコードと入力リズムパターンとの距離がより小さくなるように、また、指定されたジャンルと一致しない又は含まないリズムパターンレコードと入力リズムパターンとの距離がより大きくなるように、ジャンルの一致度を算出し、ステップＳｂ７における式に補正を行えばよい。このようにすれば、ユーザはリズムパターンの入力時に指定したジャンルと一致する又は含むリズムパターンレコードが検索結果として得られやすいため、ユーザは検索結果により納得感を持つことができる。
以上が、リズムパターン同士の距離の計算方法のバリエーションについての説明である。
【０１６７】
＝入力リズムパターンとリズムカテゴリとの距離の算出方法＝
第３実施形態及び第４実施形態における、入力リズムパターンとリズムカテゴリとの距離の算出方法は一例に過ぎず、異なる計算方法を用いてもよい。以下には、その算出方法のバリエーションを記載する。
＜カテゴリに特有の入力時刻間隔の個数＞
（変形例２１）
変形例２１において、制御部７２１は、入力リズムパターンにおいて比較対象のリズムカテゴリを象徴するオンセット時刻間隔が含まれる個数に基づいて、入力リズムパターンと各リズムカテゴリとの距離を算出する。図３０は、オンセット時刻間隔テーブルの一例を表す図である。オンセット時刻間隔テーブルは記憶部７２２に予め記憶されている。オンセット時刻間隔テーブルは、リズムカテゴリの分類を示す名称と、各リズムカテゴリにおいて対象となるオンセット時刻間隔との組み合わせからなる。なお、ここでは１小節を４８に等分して正規化したものとしてオンセット時刻間隔テーブルの内容が予め決められている。
【０１６８】
例えば、ここで、上述した方法により、制御部７２１が、入力リズムパターンにおけるオンセット時刻からオンセット時刻間隔を算出し、算出結果にクオンタイズを施した結果、以下の（ｄ）で表す数値群を算出したとする。
（ｄ）１２，６，６，６，６，６
制御部７２１は、算出した数値群と、図３０に示すオンセット時刻間隔テーブルとに従って、４分のオンセット時刻間隔が１個、８分のオンセット時刻間隔が５個であると特定する。そして制御部７２１は、以下の式（６）に従って、入力リズムパターンと各リズムカテゴリとの距離を算出する。
入力リズムパターンとリズムカテゴリＮとの距離＝１−（入力リズムパターンにおけるリズムカテゴリＮの対象となるオンセット時刻間隔の個数／入力リズムパターンにおけるオンセット時刻間隔の総数）・・・（６）
上述した式は一例であり、対象となるオンセット時刻間隔がより多く含まれているリズムカテゴリほど、入力リズムパターンとの距離が小さく算出されるものであればよい。式（６）に従った結果、制御部７２１は、例えば入力リズムパターンと８分のリズムカテゴリとの距離を、０．１６６と算出する。また、式（６）に従った結果、制御部７２１は、例えば入力リズムパターンと４分のリズムカテゴリとの距離を、０．８３３と算出する。制御部７２１は、このようにして入力リズムパターンと各リズムカテゴリとの距離を算出し、最も距離が小さく算出されたリズムカテゴリに入力リズムパターンが属する、と判定する。
【０１６９】
＜ＤＢリズムカテゴリと入力リズムカテゴリとのマトリクス＞
（変形例２２）
入力リズムパターンとリズムカテゴリとの距離の算出方法は、上述したものに限らず、次のようにしてもよい。変形例２０では、距離参照表なるものを記憶部７２２が記憶している。図３１は、距離参照表の一例を表す図である。距離参照表では、入力リズムパターンの属し得るリズムカテゴリと、自動伴奏ＤＢ７２２１に記憶された各リズムパターンレコードが属し得るリズムカテゴリとの距離が、マトリクス状に表されている。例えば、制御部７２１が、入力リズムパターンが属するリズムカテゴリを８分と判定したとする。制御部７２１は、判定結果である入力リズムパターンが属するリズムカテゴリと、距離参照表とに基づいて、入力リズムパターンと各リズムカテゴリとの距離を特定する。例えば、この場合、制御部７２１は、入力リズムパターンと４分のリズムカテゴリとの距離を「０．８」と特定し、入力リズムパターンと８分のリズムカテゴリとの距離を「０」と特定する。これにより、制御部７２１は、８分のリズムカテゴリが入力リズムパターンと最も距離が小さいと判定する。
【０１７０】
＜カテゴリに特有の入力時刻とスコアに基づく＞
（変形例２３）
入力リズムパターンとリズムカテゴリとの距離の算出方法は、上述したものに限らず、次のようにしてもよい。変形例２３において、制御部７２１は、入力リズムパターンにおいて比較対象のリズムカテゴリを象徴するオンセット時刻が含まれる個数に基づいて、入力リズムパターンと各リズムカテゴリとの距離を算出する。図３２は、オンセット時刻テーブルの一例を表す図である。オンセット時刻テーブルは記憶部７２２ａに予め記憶されている。オンセット時刻テーブルは、リズムカテゴリの分類を示す名称と、各リズムカテゴリにおいて対象となるオンセット時刻と、入力リズムパターンに対象となるオンセット時刻が含まれる場合に加算するスコアとの組み合わせからなる。なお、ここでは１小節を４８に等分して正規化したものとしてオンセット時刻テーブルの内容が予め決められている。
【０１７１】
例えば、制御部７２１が、入力リズムパターンから、（ｅ）で示すオンセット時刻を得たとする。
（ｅ）０，１２，１８，２４，３０，３６，４２
制御部７２１は、このオンセット時刻とオンセット時刻テーブルとに基づいて、各リズムカテゴリに対する入力リズムパターンのスコアを算出する。ここでは、制御部７２１は、４分のリズムカテゴリに対するスコアとして「８」を算出し、８分のリズムカテゴリに対するスコアとして「１０」を算出し、８分３連のリズムカテゴリに対するスコアとして「４」を算出し、１６分のリズムカテゴリに対するスコアとして「７」を算出する。そして制御部７２１は、算出したスコアが最も高いリズムカテゴリを、入力リズムパターンとの距離が最も小さいリズムカテゴリであると判定する。ここでは、制御部７２１は、入力リズムパターンが８分のリズムカテゴリと最も距離が小さいと判定する。
以上が、入力リズムパターンとリズムカテゴリとの距離の算出方法のバリエーションについての説明である。
【０１７２】
＜音高パターンで検索＞
（変形例２４）
第３実施形態及び第４実施形態において、ユーザがパートを指定して入力した音高パターンによって検索が行われるようにしてもよい。変形例２４では、図１５に示すリズムパターンテーブルにおいて、「リズムパターンＩＤ」という項目名は「パターンＩＤ」となる。また、変形例２４において、図１５に示すリズムパターンテーブルにおける各リズムパターンレコードには、「音高パターンデータ」という項目が追加される。音高パターンデータは、１小節を構成するフレーズにおける各構成音の音高の時系列に沿った変化が記録されたデータファイルである。音高パターンデータは、例えばテキストファイルに、構成音の音高の時系列に沿った変化が記述されたものである。また、前述したように、オンセット情報には、トリガーデータ以外に鍵盤のノートナンバーが含まれている。このうち、トリガーデータにおけるオンセット時刻の並びが入力リズムパターンに相当し、鍵盤のノートナンバーの並びが入力音高パターンに相当する。ここで、情報処理装置７２０が音高パターンを検索するときには周知の方法のいずれかを用いればよい。例えば、ユーザがパートにコードを指定して、「Ｃ−Ｄ−Ｅ」というルートの音高シーケンスを入力した場合、情報処理装置７２０の制御部７２１は、このシーケンスにおける音高の進行を「０−２−４」という相対的な数値で表した音高パターンデータを持つリズムパターンレコードを検索結果として出力する。
【０１７３】
また、例えばユーザがパートにフレーズを指定して、「Ｄ−Ｄ−Ｅ−Ｇ」という単音の音高パターンを入力した場合、制御部７２１は、入力された音高パターンを表すＭＩＤＩ情報を生成する。制御部７２１は、リズムパターンテーブルにおいて、この生成したＭＩＤＩ情報と同一又は類似した音高パターンデータを持つ音高パターンレコードを検索結果として出力する。このような音高パターンによる検索と、リズムパターンによる検索とは、その検索のモードを、情報処理装置７２０の操作部７２５を介してユーザにより切り替え可能としてもよい。
【０１７４】
＜リズムパターン＆音高パターン両指定検索＞
（変形例２５）
第３実施形態及び第４実施形態において、ユーザがパートを指定して入力したリズムパターンによって検索が行われた結果のうち、上記音高パターンがより類似したリズムパターンレコードが検索結果として出力されるようにしてもよい。変形例２５のリズムパターンテーブルにおける各リズムパターンレコードは、各パートについての「パターンＩＤ」とともに、各パートについての「音高パターンデータ」を含んでいる。
【０１７５】
図３３は、音高パターンを用いた検索の処理内容を表す模式図である。図３３（ａ）及び（ｂ）において、横軸は経過する時間を表し、縦軸は音高を表す。変形例２５では、図１８の検索処理のフローチャートにおいて、次のような処理が追加される。例えばユーザが、ベース入力音域鍵盤７１１ａにおける鍵盤を操作して、「Ｃ―Ｅ―Ｇ―Ｅ」というメロディを、４分のリズムで入力していたとする。このときの入力音高パターンは、例えば「６０，６４，６７，６４」というノートナンバーの並びで表される。図３３（ａ）は、この音高パターンを表したものである。ここでは、パートがベースであるため、リズムパターン検索部２１４は、ステップＳｂ６において、音高パターンテーブルのうち、パートＩＤが「０１（ベース）」である音高パターンレコードを比較対象として、比較対象の音高パターンレコードに含まれる音高パターンデータと、入力音高パターンとのズレを算出する。
【０１７６】
制御部７２１は、入力音高パターンと、パートＩＤが「０１（ベース）」である各リズムパターンレコードに含まれる音高パターンデータが表す音高パターン（以降、音源の音高パターンという）との音程の分散を求める。これは、音程の差分にバラつきが少ないほど、音高パターンが類似しているとみなせる、という考えに基づいている。例えば、入力音高パターンが上述したように「６０，６４，６７，６４」で表され、或る音源の音高パターンが「５７，６０，６４，６０」で表されたとする。図３３（ｂ）では、入力音高パターンと音源の音高パターンとが並べて表されている。ここで、以下の式（７）で音程の平均値を求めることで、式（８）により音程の分散を求めることができる。
（（｜６０−５７｜）＋（｜６４−６０｜）＋（｜６７−６４｜）＋（｜６４−６０｜））／４＝３．５・・・式（７）
（（｜３．５−３｜）2＋（｜３．５−４｜）2＋（｜３．５−３｜）2＋（｜３．５−４｜）2）／４＝０．２５・・・式（８）
上記式で表されるように、「６０，６４，６７，６４」で表される入力音高パターンと、「５７，６０，６４，６０」で表される音源の音高パターンとの音程の分散は、「０．２５」となる。制御部７２１は、このような音程の分散を、音源の音高パターンの全てについて算出する。
【０１７７】
次に、ステップＳｂ７において、制御部７２１は、音高パターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いを求める。ここで、音高パターンを考慮しない場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いをＳと定義し、上記音程の分散をＶと定義すると、音高パターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いＳｐは、変数ｘ、定数ｙを用いて以下の式（９）で表せる。式（９）において、０＜ｘ＜１であり、ｙ＞０である。
Ｓｐ＝（１−ｘ）Ｓ+ｘｙＶ・・・式（９）
変数ｘが０の場合、上記式は「Ｓｐ＝Ｓ」となるため、求められる類似の度合いは、音高パターンを考慮しない場合のものとなる。一方、ｘが１に近づくにつれて、上記式で求められる類似の度合いは、より音高パターンを考慮した場合のものとなる。変数ｘの大きさは、ユーザが操作部７２５を用いて変更可能としてもよい。なお、式（９）においては、上記音程の分散に代えて、音高の差分の平均誤差を用いてもよい。そして制御部７２１は、検索結果であるリズムパターンレコードを、音高パターンを考慮した場合の、検索結果のリズムパターンと入力リズムパターンとの類似の度合いが高い（距離が小さい）順番で並び替えると、ＲＡＭに記憶させる。
【０１７８】
また、入力音高パターンにおけるオンセット時刻及びオンセットの個数と、音源の音高パターンを構成する各ノートのオンセット時刻及びノートの個数とが一致するとは限らない。このような場合、制御部７２１は、以下の手順に従って、入力音高パターンの各オンセットに、音源音高パターンのどのノートが対応しているかを決定する。
（３１）制御部７２１は、入力音高パターンの各ノートのオンセット時刻を基準として、音源の音高パターンにおける最も近いオンセット時刻のノートとの音高の差分を算出する。
（３２）制御部７２１は、音源の音高パターンの各ノートのオンセット時刻を基準として、入力音高パターンにおける最も近いオンセット時刻のノートとの音高の差分を算出する。
（３３）制御部７２１は、手順（３１）で算出した差分と手順（３２）で算出した差分との平均値を、入力音高パターンと音源の音高パターンとの音高の差分として算出する。
なお、計算量を抑えるために、手順（３１）若しくは手順（３２）のいずれかのみを用いて音高の差分が算出されるようにしてもよい。なお、音高パターンを考慮した場合の、入力リズムパターンと検索結果のリズムパターンとの類似の度合いの算出方法は、上述の方法に限らず、他の方法が用いられてもよい。
【０１７９】
また、対応する音高の差分の絶対値を１２で割ると、入力音高パターンそのものと類似した伴奏ではなく１２音階における音高パターンが類似した伴奏が検索できる。ここで、音高をノートナンバーで表したときに、「３６，４３，３６」という音高パターンＡと、「３６，３１，３６」という音高パターンＢとの２つの対応する音高パターンを比較する場合について説明する。両者の音高パターンは互いに異なるが、構成音は同じ「Ｃ，Ｇ，Ｃ」であって、Ｇのノートナンバーがオクターブ違うだけなので、類似したパターンであるとみなせる。制御部２１は、音高パターンＡ及びＢについて、１２音階における音高パターンの差を以下の式（１０）及び式（１１）に従って計算する。
（｜３６−３６｜／１２）＋（｜４３−３１｜／１２）＋（｜３６−３６｜／１２）＝０・・・式（１０）
（|０−０|＾２）（|０−０|＾２）（|０−０|＾２）＝０・・・式（１１）
１２音階における音高の変動のパターンが一致しているため、音高パターンＡと音高パターンＢの１２音階における音高パターンの類似度は０と算出される。すなわち、この場合、音高パターンＢが、音高パターンＡに最も類似する音高パターンとして出力される。このように、入力音高パターンそのものとの類似度合いだけでなく、１２音階における音高の変動のパターンも考慮すると、ユーザは、より納得感のある結果が得られる。
【０１８０】
また、入力音高パターンそのものと、１２音階における音高の変動のパターンとの両方を考慮したリズムパターンの類似度をもとに検索結果を出力してもよい。この場合の計算式は、例えば以下の式（１２）のように表せる。
入力音高パターンそのものと１２音階における音高の変動のパターンを考慮したリズムパターンの類似度＝（１−Ｘ）×(リズムパターンの類似度)＋ＸＹ｛（１−κ）（音高のパターンの類似度）＋κ（１２音階のパターンの類似度）｝・・・式（１２）
ここで、Ｘ、Ｙ及びκは、０＜Ｘ＜１、Ｙ＞０、０＜κ＜１をそれぞれ満たす予め決められた定数である。なお、上記式は一例であってこの限りではない。
【０１８１】
このようにすれば、ユーザが意図したリズムパターンのみならず、音高パターンについてもユーザが意図したものと近いリズムパターンレコードが検索結果として出力されることとなる。これにより、ユーザは、入力リズムパターンとリズムパターンは同じだが、音高パターンが異なるようなリズムパターンレコードを検索結果として得ることが可能となる。
【０１８２】
＜トリガーとベロシティの両方で検索＞
（変形例２６）
第３実施形態及び第４実施形態において、制御部７２１は、ユーザの演奏操作によるトリガーデータ及びベロシティデータの双方を用いて自動伴奏ＤＢ７２２１を検索するようにしてもよい。この場合、極めて類似したリズムパターンを持つリズムパターンデータが２つ存在したときは、制御部７２１は、アタック強度パターンデータに記述された各構成音のアタック強度がユーザの演奏操作によるベロシティデータとより近いリズムパターンデータを検索結果として出力する。このようにすれば、アタック強度についても、ユーザがイメージしていたものに近い自動伴奏データが、検索結果として出力されることが可能となる。
【０１８３】
（変形例２７）
第３実施形態及び第４実施形態において、制御部７２１が自動伴奏ＤＢ７２２１を検索するにあたって、トリガーデータ及びベロシティデータに加えて、同一の音が鳴り続ける長さを表すデュレーションデータを用いてもよい。ここで、各構成音におけるデュレーションデータは、オフセット時刻から直前のオンセット時刻を差し引いた時間の長さで表される。デュレーションデータは、リズム入力装置７１０における入力手段が鍵盤である場合に、情報処理装置７２０がオフセット時刻を明確に取得することが可能であるため、特に有効に活用することができる。この場合、フレーズテーブル及びリズムパターンテーブルにおいて、「デュレーションパターンデータ」という項目が追加されることとなる。デュレーションパターンデータは、１小節を構成するフレーズにおける各構成音の鳴り続ける長さが記録されたデータファイルであり、例えばテキストファイルに、各構成音の鳴り続ける長さが記述されたものである。この場合、情報処理装置７２０は、ユーザにより入力された、１小節におけるデュレーションのパターンを用いて、フレーズテーブル又はリズムパターンテーブルから、上記入力されたデュレーションのパターンと最も類似するデュレーションパターンデータを持つフレーズレコード又はリズムパターンレコードを検索結果として出力するようにすればよい。このようにすれば、類似したリズムパターンを持つフレーズレコード又はリズムパターンレコードが複数存在しても、情報処理装置７２０が、スラー（伸ばす）のあるリズムパターンや、スタッカート（はねる）のあるリズムパターン等を識別して検索結果として出力することが可能となる。
【０１８４】
＜音色の近いものを検索＞
（変形例２８）
第３実施形態及び第４実施形態において、情報処理装置７２０が検索を行うにあたって、入力リズムパターンにおける音色と同一又は類似の度合いが高い音色を持つフレーズを持つ自動伴奏データを検索するようにしてもよい。例えば、それぞれのリズムパターンデータに対し、使用される音色毎にその音色の識別情報を対応付けて持たせておき、ユーザがリズムパターンを入力する際に、事前に音色を指定しておくことで、対応する音色で発音するリズムパターンに絞ったうえでそのリズムパターンの類似度が高いものを検索されるようにすればよい。この場合、リズムパターンテーブルにおいて、項目「音色ＩＤ」が追加される。ユーザは、演奏操作子を用いてリズムパターンを入力する際に、例えば操作部７２５を用いて音色を指定する。音色の指定は、リズム入力装置７１０が備える操作子によって行われてもよい。ユーザが演奏操作を行うと、演奏操作が行われた際に指定された音色のＩＤが、ＭＩＤＩ情報の一部として情報処理装置７２０に入力される。情報処理装置７２０は、入力された音色ＩＤに基づく音の音色と、リズムパターンテーブルにおける指定されたパートの各リズムパターンレコードにおける音色ＩＤに基づく音の音色を比較し、比較結果に基づいて、両者が予め決められた対応関係にある場合、そのリズムパターンレコードを特定する。この対応関係は、例えば、比較結果に基づいて両者の楽器種類が同じであると識別可能なように予め決められており、記憶部７２２に記憶されている。ここで、音色の比較については、各々の音の波形におけるスペクトラムを比較するなど、周知の方法を用いればよい。このようにすれば、リズムパターンが類似していることに加え、指定したパートについて音色が類似した自動伴奏データをユーザは得ることが可能となる。なお、具体的な手法としては、変形例１９に記載した内容と同様の手法で実現できる。
【０１８５】
（変形例２９）
第３実施形態及び第４実施形態においては、入力時刻間隔ヒストグラムと発音時刻間隔ヒストグラムとの差分の絶対値が最も小さいことを、入力時刻間隔ヒストグラムに対する発音時刻間隔ヒストグラムの類似度が高いと判断していたが、両者の類似度が高いことを示す条件は、上記のような両ヒストグラムの差分の絶対値に限らない。例えば、両ヒストグラムの各時刻間隔成分の積などの相関度が最も大きいとか閾値を超えるといったことや、両ヒストグラムの差分の２乗が最も小さいとか閾値未満であるといったこと、両ヒストグラムの各時刻間隔成分における値が類似していることを示すような条件であれば、どのような条件を用いてもよい。
【０１８６】
（変形例３０）
第３実施形態及び第４実施形態においては、リズム入力装置７１０から入力されたリズムパターンに従って、情報処理装置７２０が、当該リズムパターンに類似するリズムパターンを持つ楽音データを検索し、検索結果の楽音データを音に変換して出力していたが、次のようにしてもよい。例えば、上記実施形態に相当する内容をウェブサービスによって実施する場合、上記実施形態において情報処理装置７２０が備える機能を、当該ウェブサービスを提供するサーバ装置が備えることとなる。そして、ユーザの操作によって、クライアント装置である自端末（例えばＰＣ）が、インターネットや専用線等を介して入力リズムパターンを上記サーバ装置に送信する。サーバ装置は、受信した入力リズムパターンに基づいて、記憶手段から当該入力リズムパターンに類似するリズムパターンを持つ楽音データを検索し、検索結果の楽音データを自端末に送信する。そして自端末は、受信した楽音データに基づく音を出力する。なお、この場合、サーバ装置の提供するウェブサイトやアプリケーションにおいて、小節線クロックがユーザに提示されるようにすればよい。
【０１８７】
（変形例３１）
第１実施形態〜第４実施形態において、入力装置２０及びリズム入力装置７１０は、ユーザが演奏操作したときに、トリガーデータ（及びベロシティデータ）を出力するものであれば、ドラムパッドのような形状に限らず、鍵盤楽器や弦楽器、吹奏楽器などの演奏に用いられる操作子であっても良い。また、入力装置２０及びリズム入力装置７１０は、楽器の操作子に限らず、例えば、車のダッシュボードやハンドルデスクに衝撃センサを設け、打撃を与えたときにトリガーデータ（及びベロシティデータ）を出力させるようにした、いわゆる操作子として機能するものであってもよい。また、入力装置２０及びリズム入力装置７１０は、パソコンのキーボードやマウス、タッチパネルなど、ＯＡ（Office Automation）機器や家電機器に備えられた操作子であってもよい。これらの場合、各操作子を操作したときに出力される信号を、楽音信号生成装置１０及び情報処理装置７２０にトリガーデータとして入力し、楽音信号生成装置１０及び情報処理装置７２０から出力される楽音信号に基づいて、各機器に備えられたスピーカーから音が出力されるように構成されれば良い。なお、本発明においては、携帯電話、スマートフォン又はタブレットＰＣ（Personal computer）を、楽音信号生成装置１０、入力装置２０、リズム入力装置７１０あるいは情報処理装置７２０として用いても良い。
【０１８８】
ここで、演奏操作子がタッチパネルである場合の例を考える。タッチパネルにおいては、その画面上に複数のアイコンが表示されることがある。ここで、各アイコンに楽器や楽器の操作子（鍵盤など）の画像が表示されるようにすれば、ユーザは、どのアイコンをタッチすればどのような楽器や楽器の操作子に基づく楽音が発せされるのかが分かるようになる。このようにした場合、タッチパネルにおいて上記各アイコンが表示される各々の領域が、実施形態における演奏操作子の各々と対応することとなる。
【０１８９】
＜指定ＢＰＭでなく本来のＢＰＭでも再生可能＞
（変形例３２）
第３実施形態及び第４実施形態において、リズムパターンレコードには本来のＢＰＭが情報として含まれているから、ユーザが操作部７２５を用いて行った操作に従って、制御部７２１が、リズムパターンレコードに含まれる楽音データが示す楽音を本来のＢＰＭで再生するようにしてもよい。また、検索結果から特定のリズムパターンレコードがユーザにより選択されて制御部７２１がこれを特定すると、制御部７２１が、特定された直後は上記入力されたＢＰＭまたは上記指定されたＢＰＭに基づく速度でリズムパターンレコードに含まれる楽音データが示す楽音を再生し、時間の経過に伴って、ＢＰＭがリズムパターンレコードの持つ本来のものに徐々に近づくように制御してもよい。
【０１９０】
（変形例３３）
第３実施形態及び第４実施形態において、ユーザが検索結果に対してより納得感を持てるようにするための方法は、上述したフィルタリング機能に限ったものではない。
＜類似度にＢＰＭの差による重み付けを行う＞
例えば、入力リズムパターンとリズムパターンテーブルに含まれるリズムパターンレコードとの距離を求める算出式に、入力ＢＰＭとリズムパターンレコードが有する本来のＢＰＭとの差に基づく重み付けを導入してもよい。ここで、ａを予め定められた定数とし、入力リズムパターンとリズムパターンテーブルに含まれるリズムパターンレコードとの距離をＬとすると、上記重み付けを導入した場合の類似度を求める計算式は、例えば以下の式（１３）のように表せる。
類似度＝Ｌ＋｜入力ＢＰＭ−リズムパターンレコードの有するＢＰＭ｜／ａ・・・式（１３）
なお、上記類似度を求める計算式は式（１３）のようなものに限ったものではなく、入力ＢＰＭとリズムパターンレコードの持つＢＰＭとが近いほど類似度が小さくなる（すなわち類似の度合いが高くなる）ような計算式であればよい。
【０１９１】
＜フィルタリングのバリエーション＞
上述の実施形態のように、プルダウンで特定の対象をユーザが指定して表示結果を絞るように使用してもよいが、リズムパターン入力時の演奏情報を自動で解析して自動で表示結果を絞るような方法でもよい。また、鍵盤などから入力したリズム入力のピッチの演奏情報から、コードタイプやスケールを判定してそのコードタイプやスケールで登録された伴奏が自動で検索結果として表示されるようにしてもよい。例えばロックっぽいコードでリズム入力したら、ロックのスタイルが検索されやする。他には、中東っぽいスケールでリズムを入力したら、中東っぽいフレーズが検索されやすくなる。また、鍵盤入力時に指定された音色の情報によって、同じ音色情報を持ち、且つリズムパターンが一致するものを検索するようにしてもよい。例えば、スネアドラムのリムショットでリズム入力した場合、同じリズムパターンを持つ候補の中でもリムショットの音色の伴奏が優先して表示されるようにする。
【０１９２】
＜パッドの代わりに鍵盤でドラムス入力＞
（変形例３４）
第３実施形態及び第４実施形態において、リズム入力装置７１０が入力パッド８１２を備えない場合、リズム入力装置７１０が次のような構成を取ってもよい。この場合、デフォルトの状態では鍵盤７１１には、ベース入力音域鍵盤７１１ａ、コード入力音域鍵盤７１１ｂ、及びフレーズ入力音域鍵盤７１１ｃが所定の鍵域に各々割り当てられている。ここでユーザが、操作部７２５を介してドラムスのパートの入力を行う旨を指示すると、制御部７２１は、鍵盤７１１の所定の鍵域にドラムのパートを割り当てる。例えば、制御部７２１は、Ｃ３にバスドラムのパートを割り当て、Ｄ３にスネアドラムのパートを割り当て、Ｅ３にハイハットのパートを割り当て、Ｆ３にシンバルのパートを割り当てる、といった具合である。なお、この場合、制御部７２１は、鍵盤７１１の全鍵域における操作子（すなわち各鍵）に、各々異なる楽器音を割り当てることが可能である。ここで制御部７２１が、鍵盤７１１における各操作子（各鍵）の上部や下部に、割り当てられる楽器音に関する画像（例えばスネアドラムの画像）を表示するようにしてもよい。
【０１９３】
＜パートの操作子を視聴覚的に判別しやすくする＞
（変形例３５）
第３実施形態及び第４実施形態において、ユーザが、どの操作子を操作すれば、どのパートが制御部７２１によって検索されるのかを視覚的に分かりやすくするために、次のようにしてもよい。例えば、制御部７２１が、鍵盤７１１における各操作子（各鍵）の上部や下部に、割り当てられるパートに関する画像（例えば、ギターのコードが押さえられた画像、ピアノが単音で演奏されている画像（例えば単一の鍵が指で押さえられている画像）、又はスネアドラムの画像等）を表示する。また、制御部７２１が、上述の画像を各操作子の上部や下部に表示するに限らず、表示部７２４に表示させてもよい。この場合、表示部７２４には、例えば鍵盤７１１を模した鍵盤の画像が表示されるとともに、実際の鍵盤７１１の各鍵域に割り当てられているのと同じ割り当て状態で、鍵盤の画像の各鍵域に対して割り当てられたパートの画像が表示される。または、ユーザが、どの操作子を操作すれば、どのパートが制御部７２１によって検索されるのかを聴覚的に分かりやすくするために、次のようにしてもよい。例えば、ユーザがベース入力音域鍵盤７１１ａに対して入力を行うと、制御部７２１は、音声出力部７２６からベースの音声を出力させる。このようにすれば、ユーザは、どの操作子を操作すれば、どのパートが検索されるのかを視覚的又は聴覚的に判別可能となるため、操作入力が容易なものとなり、結果として自らが望む伴奏音源を得やすくなる。
【０１９４】
＜検索の計算：処理の順番入れ替え可能＞
（変形例３６）
第３実施形態及び第４実施形態では、図１８の処理フローにおいて、リズムカテゴリ毎のオンセット時刻間隔の分布を計算（ステップＳｂ１）した後に、入力リズムパターンにおけるオンセット時刻間隔の分布を計算していた（ステップＳｂ３）が、ステップＳｂ１とステップＳｂ３の順番を入れ替えてもよい。また、処理ステップの入れ替えに関わらず、制御部７２１が、リズムカテゴリ毎のオンセット時刻間隔の分布を計算した後、計算結果をＲＡＭや記憶部７２２に記憶させるようにしてもよい。このようにすれば、制御部７２１は一度計算した結果を再度計算する必要がなく、処理速度の向上を見込むことが可能となる。
【０１９５】
＜和音の丸め込み＞
（変形例３７）
第３実施形態及び第４実施形態では、例えば、ユーザがベース入力音域鍵盤７１１ａにおいて、和音となるように鍵盤を押下したとき等のように、ユーザが所定時間内において複数の操作子を操作してリズムパターンを入力する場合には、次のような問題がある。例えば、１小節において、ユーザが「０．２５」のタイミングでリズムを入力したかったとする。ここで、ユーザが、自身では同一のタイミングのつもりで複数の操作子を操作しても、実際には、或る操作子が「０．２５」のオンセット時刻で操作され、他の操作子が「０．２６」のオンセット時刻で操作された場合、制御部７２１は、これらのオンセット時刻のとおりに入力リズムパターンを記憶してしまう。このような場合、ユーザが意図していたものとは異なる検索結果が出力される可能性があり、ユーザにとっては操作性がよいものとはいえない。これに対して、次のようにしてもよい。
【０１９６】
変形例３７において、制御部７２１は、リズム入力装置７１０から入力されるオンセット情報と、自動伴奏ＤＢ７２２１に含まれるパートテーブルとに基づいて、同一のタイミングにおいて同じパートにおける複数の操作子に対して操作が行われたか否かを判定する。例えば、制御部７２１は、ベース入力音域鍵盤７１１ａに含まれる操作子のうち、或る操作子のオンセット時刻と他の操作子のオンセット時刻との差分が所定時間内に収まる場合、これらの操作子が同一のタイミングで操作されたと判定する。ここで所定時間とは、例えば５０ｍｓｅｃ（ミリ秒）である。そして制御部７２１は、上記判定の結果、これらの操作子に対する操作を同一のタイミングにおける操作であるとみなす旨の情報を、該当するオンセット時刻を持つトリガーデータと対応付けて制御部７２１に出力する。制御部７２１は、同一のタイミングにおける操作であるとみなす旨の情報が対応付けられたトリガーデータのうち、開始時刻が遅い方のオンセット時刻を持つトリガーデータを除外した入力リズムパターンを用いてリズムパターン検索を行う。つまり、この場合、ユーザの所定時間内の操作に基づくオンセット時刻のうち、開始時刻が早い方のオンセット時刻がリズムパターン検索に用いられることとなる。また、これに限らず、ユーザの所定時間内の操作に基づくオンセット時刻のうち、開始時刻が遅い方のオンセット時刻がリズムパターン検索に用いられるようにしてもよい。つまり、制御部７２１は、ユーザの所定時間内の操作に基づく複数のオンセット時刻のいずれかを用いてリズムパターン検索を行うようにすればよい。また、制御部７２１が、ユーザの所定時間内の操作に基づく複数のオンセット時刻の平均を求め、この平均値を、上記ユーザの所定時間内の操作におけるオンセット時刻として、リズムパターン検索を行うようにしてもよい。このようにすれば、ユーザが所定時間内において複数の操作子を用いてリズム入力を行った場合であっても、ユーザが意図していたものと近い検索結果が出力されるようにすることが可能となる。
【０１９７】
＜頭拍欠け問題の解消＞
（変形例３８）
第３実施形態及び第４実施形態において、制御部７２１が小節単位で入力リズムパターンを記憶するタイミングを、小節線クロックに基づく小節の切り替えタイミングと同じものとすると、以下のような問題が生じることがある。例えば、ユーザの操作によってリズムパターンが入力される場合、ユーザが自身で感じている時刻間隔と小節線クロックとのズレによって、ユーザが意図していたリズムパターンと実際のオンセット時刻との間に数ｍｓｅｃ〜数十ｍｓｅｃの誤差が生じる。従って、例えば、ユーザが小節頭の拍を入力しているつもりでも、上記誤差によって１つ前の小節のリズム入力として扱われてしまうことがあり、この場合、このリズム入力は入力リズムパターンとして記憶されないことがある。このような場合、ユーザが意図していたものと異なる検索結果が出力されてしまい、ユーザにとって操作性がよいとはいえない。このような問題に対しては、制御部７２１がＲＡＭに入力リズムパターンを記憶させる際に、小節の頭よりも数十ｍｓｅｃ早い時点（すなわち直前の小節における最後の数十ｍｓｅｃ）から、最後の数十ｍｓｅｃを除く小節の終わりまでを処理の対象範囲とすればよい。つまり、制御部７２１は、ＲＡＭに記憶させる入力リズムパターンの対象範囲を数十ｍｓｅｃ分だけ前にずらすこととなる。このようにすれば、ユーザが意図していたものと異なる検索結果が出力されることを少なくすることができる。
【０１９８】
＜検索直後に再生＞
（変形例３９）
第３実施形態及び第４実施形態において、制御部７２１がリズムパターン検索を行うタイミングを、小節線クロックに基づく小節の切り替えタイミングと同じものとすると、以下のような問題が生じることがある。例えば、本発明における検索方法は、検索結果の楽音データが、リズム入力の直後の小節で小節線クロックと同期して再生されるようなプレイバック機能を備えた楽音データ処理装置にも応用可能である。この場合、リズム入力の直後の小節における頭から検索結果の楽音データが再生されるには、上記小節の頭の時点より以前、つまりリズム入力が行われた小節内で検索結果が出力される必要がある。また、ＲＡＭの記憶容量の問題等により、事前に再生対象である楽音データを予め読み込んでＲＡＭに記憶させておくことが不可能な場合には、リズム入力が行われた小節内で検索結果の楽音データを読み込んでＲＡＭに記憶させる必要がある。このような問題に対しては、制御部７２１がリズムパターン検索を行うタイミングを、小節の切り替えタイミングよりも、例えば数十ｍｓｅｃ早いものとすればよい。このようにすれば、小節の切り替えが行われる前に検索が行われ、検索結果の楽音データがＲＡＭに記憶されることで、リズム入力の直後の小節における頭から検索結果の楽音データが再生されることが可能となる。
【０１９９】
＜複数小節検索＞
（変形例４０）
第３実施形態及び第４実施形態において、入力リズムパターンを１小節単位に限らず、複数小節（Ｎ小節とする）に跨るリズムパターンを検索できるように、以下のようにしてもよい。この場合、例えば、制御部７２１が、Ｎ小節のまとまりを持った入力リズムパターンを用いてリズムパターンテーブルを検索する方法がある。しかしこの方法では、ユーザが、小節線クロックに合わせてリズムパターンを入力する際に、１小節目がどこかを指定する必要がある。また、検索結果がＮ小節後に出力されるため、検索結果が出力されるまでに時間がかかってしまう。これに対して、次のようにしてもよい。
【０２００】
図３４は、複数小節のリズムパターンを検索する場合の処理内容を表す模式図である。変形例４０において、自動伴奏ＤＢ７２２１におけるリズムパターンテーブルには、Ｎ小節に跨るリズムパターンデータを持つリズムパターンレコードが含まれている。また、ユーザは、操作部７２５を用いて、検索するリズムパターンの小節数を指定する。この指定内容は、例えば表示部７２４に表示される。ここで例えば、ユーザが、検索するリズムパターンの小節を「２小節」と指定したとする。ユーザによって操作子を用いてリズムが入力されると、制御部７２１は、まず、１小節目の入力リズムパターンを記憶する。そして制御部７２１は、１小節目の入力リズムパターンに基づいてリズムパターンを検索する。この検索の手順は以下のようなものである。制御部７２１は、２小節に跨るリズムパターンデータを持つリズムパターンレコードを対象として、１小節目の入力リズムパターンと、各リズムパターンデータにおける１小節目のリズムパターン及び２小節目のリズムパターンとの距離を算出する。そして制御部７２１は、各リズムパターンデータについて算出した、１小節目の入力リズムパターンと上記１小節目のリズムパターンとの距離、及び１小節目の入力リズムパターンと上記２小節目のリズムパターンとの距離のうち、それぞれ小さい方の距離を、リズムパターンデータごとにＲＡＭに記憶させる。制御部７２１は、２小節目の入力リズムパターンについても同様の処理を行う。そして制御部７２１は、ＲＡＭに記憶された上記距離をリズムパターンデータごとに加算すると、加算後の値を、各リズムパターンデータにおける入力リズムパターンに対する距離を表すスコアとする。そして制御部７２１が、上記スコアが予め定められた閾値以下であるリズムパターンデータを、スコアの小さい順に並べ替えて検索結果として出力する。このようにすれば、複数小節に跨るリズムパターンデータを持つリズムパターンレコードを検索することが可能となる。このとき、１小節ごとに入力リズムパターンとリズムパターンデータとの距離が算出されるため、ユーザは１小節目がどこかを指定する必要がなく、また、検索結果が出力されるまでに時間がかかることもない。
【０２０１】
＜入力リズムパターンの取得方法１：係数０．５→四捨五入＞
（変形例４１）
第３実施形態及び第４実施形態において、制御部７２１が、入力リズムパターンをＲＡＭに記憶させるにあたり、上述した方法に限らず、以下のようにしてもよい。式（１４）は、入力リズムパターンにおいてｎ番目に入力されたオンセット時刻を求める計算式である。式（１４）において、Ｌは或る小節の先頭を０としたときの、この小節の末尾を表し、０以上の実数である。また、式（１４）においてＮは、１小節内のクロック回数である分解能を表す。
[（ｎ番目のオンセット時刻−小節の開始時刻）／（小節の終了時刻−小節の開始時刻）×Ｎ＋０．５]×Ｌ／Ｎ・・・式（１４）
式（１４）において、「０．５」の値は、オンセット時刻が算出されるにあたり、端数に対して四捨五入の効果をもたらすものであり、これを、０以上１未満の別の数値に置き換えてもよい。例えば、この値を「０．２」とすると、端数に対して七捨八入の効果がもたらされる。この値は、パラメータとして記憶部７２２に記憶されており、ユーザが操作部７２５を用いて変更可能である。
【０２０２】
前述したように、フレーズデータ及びリズムパターンデータは、オペレーターにより、市販のオーディオループ素材から構成音開始時刻を抽出されることで予め作成されることがある。このようなオーディオループ素材では、聴覚的な音の厚みを出すことを目的として、例えばバッキングのギターの音が、本来あるべきジャストのタイミングから意図的に少しずらされている場合がある。このような場合に上記パラメータの値を調整することで、端数の切り上げ及び切り下げが行われた結果のフレーズデータ及びリズムパターンデータが得られる。この結果、作成されたフレーズデータ及びリズムパターンデータでは、上述したズレが解消されているから、ユーザは、ズレのことを気にしないで、所望するジャストなタイミングでリズムパターンを入力して検索を行うことが可能となる。
【０２０３】
（変形例４２）
第３実施形態及び第４実施形態において、リズム入力装置７１０及び情報処理装置７２０が一体となった装置により本発明が実現されてもよい。この場合、この装置として、例えば、携帯電話や、タッチスクリーンを備えた移動通信端末などが考えられる。本変形例では、この装置がタッチスクリーンを備えた移動通信端末である場合を例に挙げて説明する。
【０２０４】
図３５は、本変形例における移動通信端末８３０を表す図である。
移動通信端末８３０は、その表面にタッチスクリーン８３１を有する。ユーザは、タッチスクリーン８３１における任意の位置をタッチして移動通信端末８３０に対する操作を行うことが可能であるとともに、ユーザの操作に応じた表示内容がタッチスクリーン８３１に表示される。なお、移動通信端末８３０のハードウェア構成は、表示部７２４及び操作部７２５を合わせた機能がタッチスクリーン８３１によって実現されることと、移動通信端末８３０がリズム入力装置７１０及び情報処理装置７２０とが一体となったものであることを除けば、図１３で示すものと共通している。以下では、制御部や記憶部や自動伴奏ＤＢについて、図１３と同じ符号を付して説明する。
【０２０５】
タッチスクリーン８３１の上部には、ＢＰＭ指定スライダ７５１、キー指定鍵盤７５２及びコード指定ボックス７５３が表示される。ＢＰＭ指定スライダ７５１、キー指定鍵盤７５２及びコード指定ボックス７５３は、図２１を用いて説明したものと同様である。タッチスクリーン８３１の下部には、検索結果のリズムパターンレコードが一覧として表示される。ユーザが、それぞれ異なるパートを表すパート選択画像８３２のうちいずれかを指定すると、制御部７２１は、指定されたパートについて検索結果のリズムパターンレコードの一覧をタッチスクリーン８３１に表示させる。
【０２０６】
検索結果における項目「順位」、項目「ファイル名」、項目「類似度」、項目「ＢＰＭ」及び項目「キー」は、図２１を用いて説明したものと同様である。なお、このほかに、「ジャンル」や「楽器種類」などの関連する情報を表示させてもよい。ユーザが、一覧から任意の再生指示画像８３３を指定すると、指定された再生指示画像８３３に応じたリズムパターンレコードの楽音データが再生される。このような移動通信端末８３０によっても、第３実施形態及び第４実施形態で上述したのと同様の効果を奏する。
【０２０７】
（変形例４３）
第１実施形態及び第２実施形態では、フレーズデータにおいて１つの区間に１つの構成音が含まれる構成としたが、１つの区間に複数の構成音が含まれていても良い。このように、１つの区間に複数の構成音を含めると、極端に速い演奏操作が必要なフレーズであっても、音の数よりも少ない演奏操作に基づいて適切に構成音を生成することができる。また、１つの構成音が複数の区間にまたがっていても良い。また、フレーズデータについては、１小節の長さに限らず、より長いフレーズや短いフレーズ、また、小節の途中から開始又は終了するフレーズであっても良い。すなわち、楽音信号生成装置１０は、伴奏の再生期間のうち、予め定められた期間にわたって再生すべき構成音を複数の区間毎に規定するものであれば、どのような長さのフレーズでも演奏させることができる。
【０２０８】
（変形例４４）
第１実施形態及び第２実施形態において、楽音信号生成装置１０は、一時記憶部１０５を備えなくとも良い。この場合、フレーズデータベース２０２に、各区間で規定された構成音のデータを付随させておけば良い。特定部１０６は、特定した構成音のデータを第１信号生成部１０７に供給させるようフレーズデータベース２０２に指示する。この指示がされると、構成音のデータがフレーズデータベース２０２から読み出されて、第１信号生成部１０７に転送される。
【０２０９】
（変形例４５）
第１実施形態及び第２実施形態において、楽音信号生成装置１０は、フレーズデータに、ＭＩＤＩデータ及びＭＩＤＩ音源データを用いても良い。この場合、フレーズデータベース２０２は、開始時刻データと、これに対応する構成音毎のＭＩＤＩイベント情報を示すＭＩＤＩデータと、ＭＩＤＩ音源データとを記憶する。また、演奏に用いるフレーズが操作部４００によって選択された場合、当該選択されたフレーズに対応するＭＩＤＩデータ及びＭＩＤＩ音源データがフレーズデータベース２０２から読み出されて一時記憶部１０５に記憶される。また、特定部１０６は、特定した構成音のＭＩＤＩデータ及びＭＩＤＩ音源データを一時記憶部１０５から読み出して、第１信号生成部１０７に供給する。第１信号生成部１０７は、供給されたＭＩＤＩデータを解釈し、特定された構成音の楽音信号を、ベロシティデータで示される強度の音量で生成して、ミキサー６００に供給する。
【０２１０】
なお、ＭＩＤＩデータは、複数のＭＩＤＩイベント情報を示すものであっても良い。すなわち、１つの演奏操作に対して和音（又は異なる楽器の音）やアルペジオなどが再生されても良い。
図３６は、複数のＭＩＤＩイベントの再生を説明するための図である。図３６の上欄には、開始時刻、ノートナンバー（ピッチ）、デュレーション（音の長さ）をそれぞれ表す複数のＭＩＤＩイベント情報によって構成されたフレーズの一例が、縦軸にピッチ、横軸に時刻を示すロール形式で視覚的に示されている。図３６に示すフレーズでは、時間的に１番目から４番目までの開始時刻において、３個、３個、２個、４個の音がそれぞれ開始されている。図３６の例では、４番目の開始時刻の各音は、開始時刻が一致しておらず、時間を置いて順番に開始されている。この場合、情報処理装置７２０ｂは、人がそのフレーズを聞いて区切りを感じる時刻を開始時刻とすれば良く、これらの音が一定時間の範囲に開始するものであれば、１つの構成音として扱えば良い。図３６の下欄には、トリガーデータが入力された時刻が「入力１」、「入力２」で示されている。この場合、情報処理装置７２０ｂは、「入力１」の時刻において、この時刻に開始時刻が最も近い２番目の開始時刻に対応する３つのＭＩＤＩイベントをＭＩＤＩ音源を用いて再生させる。また、楽音信号生成装置１０は、「入力２」の時刻において、この時刻に開始時刻が最も近い４番目の開始時刻に対応する４つのＭＩＤＩイベントをＭＩＤＩ音源を用いて再生させる。これら４つのＭＩＤＩイベントは、開始時刻がそれぞれ異なるため、情報処理装置７２０ｂは、「入力２」の時刻に、開始時刻が最も速いＭＩＤＩイベントを再生し、各々の開始時刻に達したところで、他のＭＩＤＩイベントをそれぞれ再生させる。
【０２１１】
（変形例４６）
第１実施形態及び第２実施形態において、楽音信号生成装置１０は、伴奏データ及び小節線クロックを示すデータを、伴奏データベース２０１、伴奏選択部１０１及び小節線クロック生成部１０２に相当する機能を備えた外部装置から取得してもよい。この場合、楽音信号生成装置１０は、取得部５００を介してこれらのデータを取得し、伴奏データを第２信号生成部１０８に供給し、小節線クロックを示すデータをトリガー時刻出力部１０３に供給すればよい。
【０２１２】
（変形例４７）
第１実施形態及び第２実施形態において、第１信号生成部１０７が生成した構成音を示す楽音信号と、第２信号生成部１０８が生成した伴奏音を示す楽音信号とをミキシングする前に、音量バランスを調整してもよい。例えば、楽音信号生成装置１０は、ユーザによる操作部４００（ボタンやフェーダー、つまみなど）の操作に応じて、これらの音の音量バランスを調整すればよい。
【０２１３】
（変形例４８）
＜近いものではなく、トリガー時刻を含む区間の音を再生＞
第１実施形態及び第２実施形態において、特定部１０６が特定する構成音は、フレーズデータにおいて、その開始時刻がトリガー時刻に最も時間的に近い構成音に限らず、次のようにしてもよい。本変形例において、フレーズデータが例えば図３に示すようなものである場合、特定部１０６は、トリガー時刻が時刻ｔ０から時刻ｔ１の間に含まれる場合、「０１」の構成音を特定する。つまり、特定部１０６は、その開始時刻から終了時刻の間にトリガー時刻が含まれる構成音を特定する。このようにすれば、ユーザは、例えばその演奏操作のタイミングが遅れてしまうようなことがあっても、フレーズデータを構成する各構成音どおりの音を得ることができる。
【０２１４】
（変形例４９）
本発明は、楽音信号生成装置や楽音データ処理装置以外にも、これらを実現するための方法や、コンピュータに図２、図７及び図１６に示した機能を実現させるためのプログラムとしても把握される。かかるプログラムは、これを記憶させた光ディスク等の記録媒体の形態で提供されたり、インターネット等を介して、コンピュータにダウンロードさせ、これをインストールして利用させるなどの形態でも提供されたりする。
【０２１５】
（変形例５０）
第３実施形態及び第４実施形態における検索モードについては、上述の実施形態における自動伴奏モード、差し替え検索モード、追従検索モードの３種類とは別に、以下のようなモードの切り替えが考えられる。１つ目は、常に検索処理が小節ごとに自動で動作しており、類似した最上位の１つあるいは類似した所定数の検索結果が自動で再生されるモードである。このモードは、主に自動伴奏などを用途として用いられる。２つ目は、ユーザが検索の開始を指示したときにメトロノームのみが再生され、ユーザがリズムを入力すると、リズム入力が終了後、自動で又は操作の指示を与えたことを契機として、検索結果が表示されるモードである。
【０２１６】
（その他の変形例）
第３実施形態及び第４実施形態においては、ステップＳｂ６におけるリズムパターンのズレの計算において、Ａを基準としたＢの時刻差と、Ｂを基準としたＡの時刻差との２つを用いていたが（ｓｙｍｍｅｔｒｉｃ  Ｄｉｓｔａｎｃｅ方式という）、これに限らず、両者のうちどちらか一方のみを用いて計算を行ってもよい。
また、ＭＩＤＩデータを用いて検索又は再生を行う場合、マルチトラックで複数のパートの演奏データを再生するものにおいて、特定のトラックに対して検索を行うようにしてもよい。
また、第３実施形態及び第４実施形態において、リズムカテゴリの判定（ステップＳｂ２〜ステップＳｂ５）を省略して、リズムパターンのズレの計算（ステップＳｂ６）の結果のみを用いて、ステップＳｂ７におけるリズムパターン同士の距離を行ってもよい。
また、第３実施形態及び第４実施形態におけるリズムパターンのズレの計算（ステップＳｂ６）において、算出されたズレの値に、相当する構成音のアタック強度を乗算することで、より強いアタック強度を持つ構成音を含むリズムパターンレコードが、検索結果の候補から外れやすくなるようにしてもよい。
【０２１７】
実施形態においては、自動伴奏データに１小節のものを用いていたが、音声の長さはこれに限る必要はない。
また、第３実施形態及び第４実施形態において、ユーザが演奏操作子に拠らずに操作部７２５を用いてパートを指定可能としてもよい。この場合、ユーザが、パートを指定したあとに演奏操作子を操作すると、指定されたパートの入力が行われることとなる。例えば、ユーザが、操作部７２５を用いて「ベース」のパートを指定すると、その後にコード入力音域鍵盤７１１ｂを操作しても、制御部７２１は、これを「ベース」のパートの入力とみなす、といった具合である。
また、第３実施形態及び第４実施形態においては、リズム入力装置７１０において、バスドラム入力パッド８１２ａ、スネアドラム入力パッド８１２ｂ、ハイハット入力パッド８１２ｃ、シンバル入力パッド８１２ｄというように、種類の異なる各々のリズムパートにパッドをひとつずつ割り当てていたが、これに限らず、音色の異なる複数のリズムパートについて単独のパッドで入力可能としてもよい。この場合、ユーザは、操作部７２５を用いて、リズムパートの種類を指定することが可能である。
また、上記の各実施形態では、リズムパターンデータは、０〜1の小数値で表記しているが、複数の整数値（たとえば、０〜９６）で表記するようにしてもよい。
【０２１８】
さらに、検出結果は、類似度の高いものを所定個数検出するようにしていたが、それ以外の条件で検出するようにしてもよい。たとえば、類似度が所定の範囲に入るものを検出するようにしてもよいし、その範囲をユーザが設定し、設定された範囲に含まれるものを検出するようにしてもよい。また、希望する類似度が、近すぎず遠すぎずのものを検索したいときは、所定の範囲の上限値と下限値を予めユーザが設定するようにすればよい。
また、楽音データ、自動伴奏データ、スタイルデータ等を編集する機能を備えさせてもよい。この場合、検出結果を表示した画面から、ユーザが、所望の楽音データ、自動伴奏データ、スタイルデータを選択する。そして、選択されたものを表示した画面では、選択されたデータがパート毎に展開して表示される。このような画面において、ユーザは、それぞれのパートについて、所望の楽音データ、自動伴奏データ、演奏データ等の各種データを編集できるようにしてもよい。
また、楽音データ、自動演奏データ及びスタイルデータに適用される音の内容は、楽器の音に限らず、人の声や動物の鳴声や効果音等、種々の音に適用できる。この場合、検索に必要な最低限のパラメータ（進行上の発音タイミング、音の強さ、音高等）を得られるものであればよい。音の内容として楽器以外の音も含む楽音データを「音データ」とする。
さらに、入力パターンは、演奏操作による入力だけでなく、ある閾値以上の音量の音声等を集音してそれを入力として入力パターンを得る等、他の手法で得られるようにしてもよい。
【符号の説明】
【０２１９】
１…演奏システム、１０…楽音信号生成装置、２０…入力装置、２１…打撃面、２２…打撃部材、３０…スピーカー、１００、７２１…制御部、１０１…伴奏選択部、１０２…小節線クロック生成部、１０３…トリガー時刻出力部、１０４…フレーズ選択部、１０５…一時記憶部、１０６…特定部、１０７…第１信号生成部、１０８…第２信号生成部、１０９…判断部、２００，７２２…記憶部、２０１…伴奏データベース、２０２…フレーズデータベース、３００，７２４…表示部、４００，７２５…操作部、５００…取得部、６００…ミキサー、７００…アンプ、７１０…リズム入力装置、７１１…鍵盤、７１１ａ…ベース入力音域鍵盤、７１１ｂ…コード入力音域鍵盤、７１１ｃ…フレーズ入力音域鍵盤、７１２…入力パッド、７１２ａ…バスドラム入力パッド、７１２ｂ…スネアドラム入力パッド、７１２ｃ…ハイハット入力パッド、７１２ｄ…シンバル入力パッド、７１３…ＢＰＭ入力操作子、７２０…情報処理装置、７２２１…自動伴奏ＤＢ、７２３…入出力インターフェース部、７２６…音声出力部、７３０…音楽データ製作システム、７５１…ＢＰＭ指定スライダ、７５２…キー指定鍵盤、７５３…コード指定ボックス、８０１…入力ＢＰＭ表示欄、８０２…テンポフィルター、８０３…拍子フィルター、８１１…セクションタブ、８１２…画像、８２１…小節線、８２２…矢印、８３０…移動通信端末、８３１…タッチスクリーン、８３２…パート選択画像、８３３…再生指示画像、Ｔ…時計部
【図１】
0005879996.tif 000002
【図２】
0005879996.tif 000003
【図３】
0005879996.tif 000004
【図４】
0005879996.tif 000005
【図５】
0005879996.tif 000006
【図６】
0005879996.tif 000007
【図７】
0005879996.tif 000008
【図８】
0005879996.tif 000009
【図９】
0005879996.tif 000010
【図１０】
0005879996.tif 000011
【図１１】
0005879996.tif 000012
【図１２】
0005879996.tif 000013
【図１３】
0005879996.tif 000014
【図１４】
0005879996.tif 000015
【図１５Ａ】
0005879996.tif 000016
【図１５Ｂ】
0005879996.tif 000017
【図１６】
0005879996.tif 000018
【図１７】
0005879996.tif 000019
【図１８】
0005879996.tif 000020
【図１９】
0005879996.tif 000021
【図２０】
0005879996.tif 000022
【図２１】
0005879996.tif 000023
【図２３】
0005879996.tif 000024
【図２４Ａ】
0005879996.tif 000025
【図２４Ｂ】
0005879996.tif 000026
【図２５】
0005879996.tif 000027
【図２６】
0005879996.tif 000028
【図２７】
0005879996.tif 000029
【図２８】
0005879996.tif 000030
【図２９】
0005879996.tif 000031
【図３０】
0005879996.tif 000032
【図３１】
0005879996.tif 000033
【図３２】
0005879996.tif 000034
【図３３】
0005879996.tif 000035
【図３４】
0005879996.tif 000036
【図３５】
0005879996.tif 000037
【図３６】
0005879996.tif 000038
【図２２】
0005879996.tif 000039