(57)【特許請求の範囲】
【請求項１】
一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに対応したグループの演奏データを検索するメロディ検索装置において、
一連の演奏データによって表された音符列の平均音長を各グループごとにそれぞれ計算して、同計算した平均音長が、所定値以上、曲全体の平均音長よりも所定値以上長い、または他のグループの計算した平均音長に対して相対的に長いグループの演奏データをメロディパートの候補から除外するようにしたことを特徴とするメロディ検索装置。
【請求項２】
一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに属する演奏データを抽出するメロディ検索装置において、
曲全体を検索区間として、前記複数グループのうちから、メロディパートに属する演奏データを含む一つのグループを検索する第１メロディ検索手段と、
前記第１メロディ検索手段によって検索された一つのグループの演奏データに基づいて、同一つのグループ内における音符の存在しない区間を無音区間として検出する無音区間検出手段と、
前記無音区間検出手段によって検出された無音区間を検索対象として、前記複数グループのうちで前記第１メロディ検索手段によって検索された一つのグループを除外したグループに属する演奏データのうちから、前記無音区間を検索対象としたメロディパートに属する演奏データを検索する第２メロディ検索手段とを備え、
前記第１メロディ検索手段によって検索された一つのグループに属する演奏データに、前記第２メロディ検索手段によって検索されたメロディパートに属する演奏データを加えた演奏データを、曲全体のメロディパートの演奏データとするようにしたことを特徴とするメロディ検索装置。
【請求項３】
一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに対応したグループの演奏データをコンピュータに検索させるコンピュータ読取り可能なメロディ検索プログラムにおいて、
前記コンピュータに、
一連の演奏データによって表された音符列の平均音長を各グループごとにそれぞれ計算させて、同計算させた平均音長が、所定値以上、曲全体の平均音長よりも所定値以上長い、または他のグループの計算した平均音長に対して相対的に長いグループの演奏データをメロディパートの候補から除外させるようにしたことを特徴とするメロディ検索プログラム。
【請求項４】
一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに属する演奏データをコンピュータに抽出させるコンピュータ読取り可能なメロディ検索プログラムにおいて、
前記コンピュータに、
曲全体を検索区間として、前記複数グループのうちから、メロディパートに属する演奏データを含む一つのグループを検索させ、
前記検索させた一つのグループの演奏データに基づいて、同一つのグループ内における音符の存在しない区間を無音区間として検出させ、かつ
前記検出させた無音区間を検索対象として、前記複数グループのうちで前記検索させた一つのグループを除外したグループに属する演奏データのうちから、前記無音区間を検索対象としたメロディパートに属する演奏データを検索させて、
前記検索させた一つのグループに属する演奏データに、前記検索させたメロディパートに属する演奏データを加えた演奏データを、曲全体のメロディパートの演奏データとさせるようにしたことを特徴とするメロディ検索プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに関する演奏データを検索するメロディ検索装置およびコンピュータ読み取り可能なメロディ検索プログラムに関する。
【０００２】
【従来の技術】
自動演奏用の演奏データは、メロディ、リズム、和音伴奏、ベース伴奏などの各演奏パートごとに、一連の音符列を表す演奏データをグループ化し、複数グループの演奏データを各トラックに対応させている。そして、メロディパートの演奏データを取り出して、メロディパートのみの演奏音を聞いたり、同メロディパートをアレンジしたり、メロディパートを和音伴奏パートまたはベース伴奏パートのアレンジの参考にしたりする場合、曲全体の演奏データの中からメロディパートの演奏データのみを取り出す必要がある。従来、このようなメロディパートの演奏データの取り出しにおいては、ユーザが手作業で行なっていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、多数の演奏パートを含む演奏データ中から適正なメロディパートの演奏データのみを取り出す作業は手間がかかる。また、初心者にあっては、このようなメロディパートの演奏データの取り出しが不能である場合もある。
【０００４】
【発明の概要】
本発明は、上記問題に対処するためになされたもので、その目的は、一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに関する演奏データを自動的に検索することが可能なメロディ検索装置を提供することにある。
【０００５】
前記目的を達成するために、本発明の特徴は、一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに対応したグループの演奏データを検索するメロディ検索装置において、一連の演奏データによって表された音符列の平均音長を各グループごとにそれぞれ計算して、同計算した平均音長が、所定値以上、曲全体の平均音長よりも所定値以上長い、または他のグループの計算した平均音長に対して相対的に長いグループの演奏データをメロディパートの候補から除外するようにしたことにある。
【００１１】
この本発明の特徴によれば、複数グループの演奏データの中から、メロディパートに対応しないグループの演奏データが除外されて、メロディパートに対応したグループの演奏データが取り出される。したがって、メロディパートに関する演奏データがユーザによる手間を省いて自動的に検索されることになるので、メロディパートのみの演奏音を聞いたり、同メロディパートをアレンジしたり、メロディパートを和音伴奏パートまたはベース伴奏パートのアレンジの参考にしたりする場合に便利になる。
【００１４】
また、本発明の他の特徴は、一連の音符列を表す演奏データによってそれぞれ構成された複数グループの演奏データの中から、メロディパートに属する演奏データを抽出するメロディ検索装置において、曲全体を検索区間として、前記複数グループのうちから、メロディパートに属する演奏データを含む一つのグループを検索する第１メロディ検索手段と、前記第１メロディ検索手段によって検索された一つのグループの演奏データに基づいて、同一つのグループ内における音符の存在しない区間を無音区間として検出する無音区間検出手段と、前記無音区間検出手段によって検出された無音区間を検索対象として、前記複数グループのうちで前記第１メロディ検索手段によって検索された一つのグループを除外したグループに属する演奏データのうちから、前記無音区間を検索対象としたメロディパートに属する演奏データを検索する第２メロディ検索手段とを備え、前記第１メロディ検索手段によって検索された一つのグループに属する演奏データに、前記第２メロディ検索手段によって検索されたメロディパートに属する演奏データを加えた演奏データを、曲全体のメロディパートの演奏データとするようにしたことにある。
【００１６】
この本発明の他の特徴によれば、複数グループにわたってメロディパートに関する演奏データが用意されている場合、例えば通常のメロディパートにギターソロパートなどが付加されている場合でも、このギターソロパートと連結したメロディパートの演奏データを得ることができる。
【００１７】
また、前述した本発明に関する特徴は、メロディ検索方法およびコンピュータプログラムに関する発明として捉えることもできる。
【００１８】
【発明の実施の形態】
以下、本発明の一実施形態を図面を用いて説明する。図１は、本発明に係るメロディ検索装置を内蔵した電子楽器の概略ブロック図である。
【００１９】
この電子楽器は、演奏操作子群１１、パネル操作子群１２及びディスプレイ１３を備えている。演奏操作子群１１は、例えば複数の鍵からなる鍵盤などで構成されており、それらの操作により楽音の発生および発生楽音の音高を指示する。パネル操作子群１２は、操作パネルにそれぞれ配設され、それらの操作により発生楽音の音色、音量などの指定、ディスプレイ１３の表示内容の指示などを含む電子楽器全体の作動を指示する。なお、このパネル操作子群１２には、テンキー、カーソル移動キー、マウスなどの操作子も含まれる。これらの演奏操作子群１１及びパネル操作子群１２の各操作は、バス２０に接続された検出回路１４，１５によりそれぞれ検出される。ディスプレイ１３は、ＣＲＴ表示器、液晶表示器などで構成されており、各種情報を文字、数字または画像表示するものである。このディスプレイ１３は、バス２０に接続された表示回路１６により表示制御される。
【００２０】
また、この電子楽器は、バス２０に接続された音源回路１７も備えている。音源回路１７は、楽音信号を時分割で形成するための複数の楽音信号形成チャンネルを有しており、バス２０を介して供給された演奏情報（キーオン信号、キーオフ信号、音高データ（音名データ）、音色情報など）に基づいて楽音信号を形成して出力する。なお、この音源回路１７は、ピアノ音、ギター音のような音高を有する楽音信号ばかりではなく、ドラム、シンバルなどのリズム楽器の楽音信号も形成する。音源回路１７には、Ｄ/Ａ変換器、アンプ、スピーカからなるサウンドシステム１８が接続されており、同システム１８は音源回路１７からの楽音信号に対応した楽音を発生する。
【００２１】
また、バス２０には、ＣＰＵ２１，ＲＯＭ２２、ＲＡＭ２３、タイマ２４および外部記憶装置２５も接続されている。ＣＰＵ２１，ＲＯＭ２２、ＲＡＭ２３およびタイマ２４は、マイクロコンピュータ本体部を構成するもので、各種プログラムを実行して電子楽器の各種動作を制御する。
【００２２】
外部記憶装置２５は、予め組み込まれたハードディスクＨＤなどの記録媒体、着脱可能に組み付けられるフレキシブルディスクＦＤ、コンパクトディスグＣＤなどの記録媒体と、同記録媒体に対してプログラム及びデータの読み書きを可能とするドライブ装置とからなる。外部記録媒体には、各種プログラムおよび各種データが記憶されている。本実施形態では、特に図２のメロディ形成プログラム（図３のメロディ検索ルーチンを含む）が記憶されているとともに、各種の曲に対応した複数組の自動演奏データも記憶されている。また、各種プログラムおよび各種データの一部に関しては、ＲＯＭ２２にも記憶されている。
【００２３】
ここで、一曲分の自動演奏データについて、一例を上げて説明しておく。この自動演奏データは、図４(Ａ)に示すように、第１〜第ｎトラックからなる複数トラック分の演奏データによって構成されている。１トラック分の自動演奏データは、例えば、メロディパート、リズムパート、和音伴奏パート、ベース伴奏パートなどにそれぞれ対応している。各トラックの演奏データは、演奏データの開始および終了をそれぞれ表すスタートコードおよびエンドコードの間に挟まれて、曲の進行（時間経過）に従って配列された音色選択データ、ボリュームデータ、エクスプレッションデータ、ノートオンイベントデータ、ノートオフイベントデータ、デュレーションデータなどからなる。なお、このトラックが、本発明に係り、一連の演奏データによって構成されるグループに対応する。
【００２４】
音色選択データは、楽音信号の音色を曲の開始時に指定または曲の途中で変更するためのデータであり、図４(Ｂ)に示すように、識別コードとしての音色選択コードに、音源チャンネル（ＭＩＤＩチャンネル）番号データおよび音色名データを付加して構成されている。音源チャンネル番号データは、音色名データが適用される音源回路１７内の音源チャンネル（ＭＩＤＩチャンネル）を表す。音色名データは、前記音源チャンネルにて形成される楽音信号の音色を表す。
【００２５】
ボリュームデータは、楽音信号の音量を曲の開始時に指定または曲の途中で変更するためのデータであり、図４(Ｃ)に示すように、識別コードとしてのボリュームコードに、音源チャンネル番号データおよび音量データを付加して構成されている。音源チャンネル番号データは、音量データが適用される音源回路１７内の音源チャンネルを表す。音量データは、前記音源チャンネルにて形成される楽音信号の音量レベルを表す。なお、音量データは、その値が大きくなるに従って大きくなる音量レベルを表しており、本実施形態においては「０」〜「１２７」のうちのいずれかの値を取り得る。
【００２６】
エクスプレッションデータも、楽音信号の音量を曲の開始時に指定または曲の途中で変更するためのデータであり、図４(Ｄ)に示すように、識別コードとしてのエクスプレッションコードに、前記ボリュームデータの場合と同様な音源チャンネル番号データおよび音量データを付加して構成されている。このエクスプレッションデータは、電子楽器におけるエクスプレッションペダルの情報に相当し、楽音信号の音量をダイナミックに変更制御ものである。一方、ボリュームデータは、電子楽器におけるボリューム操作子の情報に相当し、楽音信号の音量をスタティックに変更制御するものである。
【００２７】
ノートオンイベントデータは、楽音信号の発生開始を指示するためのデータであり、図４(Ｅ)に示すように、識別コードとしてのノートオンコードに、音源チャンネル番号データ、ノートナンバデータおよびベロシティデータを付加して構成されている。音源チャンネル番号データは、ノートナンバデータおよびベロシティデータが適用される音源回路１７内の音源チャンネルを表す。ノートナンバデータは、前記音源チャンネルにて生成される楽音信号の音高を表す。ベロシティデータは、電子楽器における鍵タッチの強さの情報に相当し、前記ノートナンバデータにより指定される楽音信号の音量レベルを表す。なお、ベロシティデータも、その値が大きくなるに従って大きくなる音量レベルを表しており、本実施形態においては「０」〜「１２７」のうちのいずれかの値を取り得る。
【００２８】
また、このノートオンイベントデータは、通常、音高を有する楽音信号に利用されるものであるが、ドラム、シンバルなどのリズム楽器音の発生指示のためにも利用される。この場合、ノートナンバデータに代えて、リズム楽器名を表す楽器名データが利用される。
【００２９】
ノートオフイベントデータは、楽音信号の発生終了を指示するためのデータであり、図４(Ｆ)に示すように、識別コードとしてのノートオフコードに、前記ノートオンイベントデータの場合と同様な音源チャンネル番号データおよびノートナンバデータを付加して構成されている。ただし、この場合も、リズム楽器に関しては、ノートナンバデータに代えて、リズム楽器名を表す楽器名データが利用される。
【００３０】
デュレーションデータは、演奏データの再生時における前述した音色選択データ、ボリュームデータ、エクスプレッションデータ、ノートオンイベントデータ、ノートオフイベントデータなどの出現時間間隔を表すもので、識別コードとしてのデュレーションコードに、チック数データを付加して構成されている。チック数データは、所定の基準音符長に対するテンポクロック信号の数を表すデータ（一種の音符長を表すデータ）として定義されるもので、本実施形態では４分音符長がチック数「４８０」に定義されている。なお、テンポクロック信号は、曲のテンポによって変更される基準クロック信号をさす。
【００３１】
このような複数トラックの演奏データは、自動演奏再生プログラムによって再生されて、前述した音色名データ、音量データ、ノートナンバデータ、ベロシティデータおよびこれらのデータに基づいて生成した新たなデータが、曲の進行に従って音源回路１７に供給される。そして、音源回路１７は、前記供給された各データに応じて制御されて、同各データに応じた楽音信号を発生する。しかし、本発明には、この演奏データの再生は直接関係しないので、これ以上の説明は省略する。また、この演奏データ中の音源チャンネル番号データによって表された音源チャンネルは、音源回路１７において楽音信号を形成する一つずつの楽音信号形成チャンネルを意味するものではなく、音源回路１７における複数の楽音信号形成チャンネルを含む楽音信号形成チャンネル群を示している。
【００３２】
ふたたび、図１の説明に戻る。バス２０には、ＭＩＤＩインターフェース回路２６および通信インターフェース回路２７も接続されている。ＭＩＤＩインターフェース回路２６は、自動演奏装置（シーケンサ）、鍵盤などの演奏装置、他の楽器、パーソナルコンピュータなどの他のＭＩＤＩ対応機器３１に接続されて、同機器３１から自動演奏データを含む各種のＭＩＤＩ情報を受信し、または同機器３１に各種のＭＩＤＩ情報を送信するためのインターフェース回路である。通信インターフェース回路２７は、インターネットなどの通信ネットワーク３２を介して外部との交信を可能とするものである。
【００３３】
次に、上記のように構成した実施形態の動作を説明する。まず、ユーザは、図示しないプログラムの実行により、ディスプレイ１３の画面を見ながらパネル操作子群１２を操作することにより、メロディパートに関する演奏データを取り出そうとする曲の演奏データを選択してＲＡＭ２３に記憶させる。この場合、演奏データとしては、外部記憶装置２５に予め記憶されている自動演奏データ、ＭＩＤＩインターフェース回路２６を介して入力可能なＭＩＤＩ対応機器３１に記憶されている自動演奏データ、通信インターフェース回路２７および通信ネットワーク３２を介して入手可能な自動演奏データを利用できる。場合によっては、本電子楽器における演奏操作子群１１およびパネル操作子群１２を用いた演奏による演奏データをＲＡＭ２３または外部記憶装置２５に記憶しておいて、同記憶しておいた演奏データを用いることもできる。
【００３４】
次に、ユーザは、外部記憶装置２５内のハードディスグＨＤ、フレキシブルディスクＦＤ、コンパクトディスグＣＤなどの記録媒体またはＲＯＭ２２に記憶されているメロディ形成プログラムを起動する。なお、このメロディ形成プログラムが外部記憶装置２５およびＲＯＭ２２に記憶されていない場合には、ＭＩＤＩインターフェース回路２６を介したＭＩＤＩ対応機器３１、または通信インターフェース回路２７および通信ネットワーク３２を介した外部からメロディ形成プログラムの提供を受けることも可能である。
【００３５】
このメロディ形成プログラムの実行は、図２のステップ１００にて開始され、ＣＰＵ２１は、ステップ１０２にてメロディ検索区間の初期化処理を実行する。この初期化処理においては、メロディ検索区間として、曲全体すなわち図４の各トラックにおけるスタートコードとエンドコードで挟まれた全ての演奏データがそれぞれ指定される。この処理後、ステップ１０４にて、メロディ検索ルーチンが実行される。
【００３６】
このメロディ検索ルーチンは図３に詳細に示されており、その実行がステップ２００にて開始される。この実行開始後、ＣＰＵ２１はステップ２０２〜２１２からなる各種除外処理を実行する。このメロディ検索ルーチンによる処理の特徴は、前記ステップ２０２〜２１２の各種除外処理においてメロディ以外のパートの特徴を有する演奏データを記憶したトラックを抽出して、同抽出したトラックを順次除外していき、最後に残ったトラックを、メロディパートの演奏データが記憶されているトラックであるとして決定するようにしている。以下、ステップ２０２〜２１２の各種除外処理のアルゴリズムについて順次説明する。
【００３７】
ａ．ステップ２０２のリズムパート除外処理
複数パートを含む曲に関する演奏データにおいては、発生される楽音信号の音色を少なくともトラックごとに指定することが原則である。また、ドラム、シンバルなどのリズム楽器の音色を指定する演奏データを含むトラックはリズムパートに関するものである。これらの点に着目して、このリズムパート除外処理においては、複数トラックの中からリズムパートに関するトラックを除外する。
【００３８】
具体的には、演奏データがＧＭ規格に基づいていれば、リズム楽器は音源回路１７の音源チャンネル「１０」に割当てられるようになっている。なお、ＧＭ規格とは、ＭＩＤＩ音源標準化の規格をさす。したがって、このリズムパート除外処理においては、ＣＰＵ２１は、演奏データがＧＭ規格に基づいていること（演奏データに通常記録されている）を確認した上で、各トラックの演奏データを順次読み出して、同読み出した演奏データが音源チャンネルを「１０」を指定しているかを順次調べる。そして、音源チャンネル「１０」を指定している演奏データを含んでいれば、同演奏データを含むトラックをリズムパートに関するものであると判定して（図４参照）、同トラックをメロディパート候補から除外する。また、リズム楽器名を表す演奏データを含むトラックをリズムパートに関するものであると判定して（図４参照）、同トラックをメロディパート候補から除外するようにしてもよい。この場合には、演奏データがＧＭ規格に基づいたものである必要はない。
【００３９】
ｂ.ステップ２０４のベースパート除外処理
ベースパートの演奏に利用されるエレクトリックベース、コントラバスなどのベースパート用楽器は、メロディ演奏に利用されることはない。この点に着目して、このベースパート除外処理においては、前記ステップ２０２の除外処理後における残りの複数のトラックの中から、ベースパートに関するトラックを除外する。具体的には、ＣＰＵ２１は、前記残りの各トラックの演奏データを順次読み出して、同読み出した演奏データがベースパート用楽器名を表しているかを調べる。そして、ベースパート用楽器名を指定するための演奏データを含んでいれば、同演奏データを含むトラックをベースパートに関するものであると判定して（図４参照）、同トラックをメロディパート候補から除外する。
【００４０】
ｃ．ステップ２０６の音符存在範囲率による除外処理
トラックがメロディパートに関するものであれば、曲全体中に、ある程度以上（例えば、曲全体の６０パーセント以上）の区間で音符が存在していると考えられる。この点に着目して、この音符存在範囲率による除外処理においては、前記ステップ２０４の処理後における残りの複数トラックの中から、曲全体に対する音符を含む区間の割合が所定値以下であるトラックは、メロディパートに関するものでないとして、同トラックをメロディパート候補から除外する。
【００４１】
具体的には、ＣＰＵ２１は、前記ステップ２０４の除外処理後に残っている複数トラックの各トラックの演奏データを順次読み出して、同読み出した演奏データに基づいて音符が存在している区間を各トラックごとに調べる。すなわち、一つのノートオンイベントデータが現われてから同ノートオンイベントデータに対応するノートオフイベントが現われるまでの区間を、音符が存在している区間とする。そして、次の音符が存在している区間が前記一つの音符が存在している区間に連続する限り、この連続する区間を音符が存在する区間とする。一方、次の音符の区間が、前の音符の区間終了後に開始される場合には、前の音符の区間終了から次の音符の区間開始までを音符の存在しない区間とする。
【００４２】
なお、前の音符の区間終了から次の音符の区間開始までの期間が短い場合には、連続する区間とみなすようにしてもよい。例えば、前の音符の区間終了から次の音符の区間開始までの期間が、３２分音符に相当する時間以下であれば連続した音符の存在する区間とみなし、同期間が３２分音符分に相当する時間を越える場合には音符の存在しない区間とする。
【００４３】
図５は一つのトラックの演奏データの解析結果を表しており、この場合、曲全体中で、区間Ａ，Ｂ，Ｃが音符の存在する区間である。そして、区間Ａ，Ｂ，Ｃの各長さを加算し、同加算された長さを曲全体の長さで除算して音符存在範囲率を計算する。例えば、曲の全体の長さを１６小節とし、区間Ａ，Ｂ，Ｃがそれぞれ４，８，２小節であったならば、音符存在範囲率は０．８８（＝(４＋８＋２)／１６）になる。なお、実際には、この区間の計算はチック数によって計算されるので、１２小節分のチック数「２６，８００」を１６小節分のチック数「３０，７２０」で除算することにより計算される。
【００４４】
このような音符存在範囲率を各トラックごとに計算した後、前記ステップ２０２，２０４の除外処理によって残っている複数トラックの中から、音符存在範囲率が所定値（例えば、０．６）以下であるトラックを、メロディパート候補から除外する。
【００４５】
また、前記のように、音符存在範囲率が所定値以下のトラックをメロディパート候補から除外することに代えまたは加えて、音符存在範囲率が他のトラックと比べて相対的に低いトラックをメロディパート候補から除外するようにしてもよい。すなわち、音符存在範囲率が低い順に一つまたは複数のトラックをメロディパート候補から除外するようにしてもよい。
【００４６】
ｄ．ステップ２０８の平均音量による除外処理
トラックがメロディパートに関するものであれば、同トラックの演奏データによって発音される楽音信号の平均音量は大きいはずである。例えば、メロディパートの楽音信号の平均音量は、少なくとも、全てのトラックごとの平均音量の中の最大値（以下、最大平均音量という）の８０パーセント以上であると考えられる。この点に着目し、この平均音量による除外処理においては、前記ステップ２０６の除外処理後に残っている複数トラックの中から、演奏データによって指定される平均音量が、前記最大平均音量よりも所定値以上小さいトラックを、メロディパートに関するものでないとしてメロディパート候補から除外する。
【００４７】
具体的には、ＣＰＵ２１は、前記ステップ２０２〜２０６の除外処理後に残っている複数トラックの各トラックの演奏データを順次読み出して、同読み出した演奏データに基づいて音符の平均音量を各トラックごとに計算する。一つのトラックに属する音符の音量は、ボリュームデータ中の音量データと、エクスプレッションデータ中の音量データと、各ノートオンイベントデータ中のベロシティデータとの積を、前記音量データ（ベロシティデータでも同じ）の取り得る値の最大値（本実施形態では「１２７」）を２乗した値で除算して決定される。
【００４８】
したがって、ＣＰＵ２１は、各トラックごとに、直前に現われたボリュームデータおよびエクスプレッションデータ中の各音量データをそれぞれ独立に記憶しておく。そして、ノートオンイベントデータが現われるたびに前記記憶しておいた両音量データの積に、ノートイベントデータ中のベロシティデータ値を乗算した値（＝ボリュームデータ中の音量データ値＊エクスプレッションデータ中の音量データ値＊ベロシティデータ値）を計算し、この乗算結果を前記音量データの取り得る値の最大値（例えば、「１２７」）の２乗値で除算して一音符分の音量データを計算する。
【００４９】
次に、ＣＰＵ２１は、一つのトラックに含まれる全ての音符に関する一音符分の音量データを加算し、同加算結果を同トラックに含まれる音符の数で除算して、一つのトラックに関する一音符分の平均音量を計算する。このような一音符分の平均音量の計算は、各トラック毎に行われる。このような一音分の平均音量を各トラックごとに計算した後、前記ステップ２０２〜２０６の除外処理後に残っている全てのトラックの中で、前記計算した平均音量が最大のトラックを抽出する。そして、この抽出トラックの平均音量を最大平均音量とする。そして、平均音量が最大平均音量よりも所定値以上小さいトラックを、メロディパート候補から除外する。この場合、前記所定値以上小さい音量とは、最大平均音量よりも所定比率分以上小さい音量であっても、最大平均音量よりも絶対的な所定値以上小さい音量であってもよい。
【００５０】
また、前記のように各トラックの平均音量を最大平均音量と比較するのに代えてまたは加えて、次のようにして各トラックをメロディパート候補から除外するようにしてもよい。すなわち、平均音量が絶対的な所定値以下であるトラックを、メロディパート候補から除外するようにする。また、全てのトラックの平均音量の平均値をさらに計算し、各トラックの平均音量が前記平均値よりも所定値以上低いとき、同各トラックをメロディパート候補から除外するようにする。
【００５１】
さらに、前記平均音量に関する除外条件に代えまたは加えて、一音符分の平均音量が他のトラックと比べて相対的に小さいトラックをメロディパート候補から除外するようにしてもよい。すなわち、一音符分の平均音量が低い順に一つまたは複数のトラックをメロディパート候補から除外するようにしてもよい。
【００５２】
ｅ．ステップ２１０の平均音長による除外処理
トラックがメロディパートに関するものであれば、同トラックの各演奏データによって発音される楽音信号の平均音長はそれほど長くないはずである。例えば、メロディパートの楽音信号の平均音長は、２分音符に相当する長さ程度未満であると考えられる。平均音長が長いパートは、ストリングス音などの伴奏パートや、パッドの伴奏パートであると考えれる。なお、パッドとは、シンセサイザーなどの音色名の一つで比較的丸みのある持続音（白玉と呼ばれることもある）である。この点に着目して、この平均音長による除外処理においては、前記ステップ２０２〜２０８の除外処理後に残っている複数トラックの中から、演奏データによって指定される楽音信号の音長の平均値が所定長以上であるトラックは、メロディパートに関するものでないとして、同トラックをメロディパート候補から除外する。
【００５３】
具体的には、ＣＰＵ２１は、前記ステップ２０２〜２０８の除外処理後に残っている複数トラックの各トラックの演奏データを順次読み出して、同読み出した演奏データに基づいて音符の平均音長を各トラックごとに計算する。音符の音長は、ノートオンイベントデータが現われたタイミングから、同ノートオンイベントデータに対応したノートオフイベントデータの現われるまでの時間長にほぼ等しい。
【００５４】
したがって、ＣＰＵ２１は、ノートオンイベントデータにより表された一音符ごとに、同ノートオンイベントデータの発生タイミングからノートオフイベントデータの発生タイミングまでの時間長を計算する。この時間長は、対応する音符のノートオンイベントデータとノートオフイベントデータとの間に位置するデュレーションデータすなわちチック数を累算することにより計算される。これにより、一つの音符の音符長が計算される。
【００５５】
次に、ＣＰＵ２１は、一つのトラックに含まれる全ての音符に関する音符長を加算して、同加算結果を同トラックに含まれる音符の数で除算して、一つのトラックに関する平均音長を計算する。このような平均音長の計算は各トラック毎に行われる。このように平均音長を各トラックごとに計算した後、同平均音長が所定値以上であるトラックを、メロディパート候補から除外する。この場合、前述したように音長はチック数によって表されるので、チック数と所定値とが比較される。そして、本実施形態では、４分音符の音符長はチック数「４８０」に対応するので、例えば前記計算した平均音長を表すチック数が「９６０」以上のトラックがメロディパート候補から除外される。
【００５６】
また、前記のように各トラックの平均音長を絶対的な所定値と比較するのに代えてまたは加えて、次のようにして各トラックをメロディパート候補から除外するようにしてもよい。すなわち、さらに全てのトラックの平均音長の平均値を計算し、各トラックの平均音長が前記平均値よりも所定値以上長いとき、同各トラックをメロディパート候補から除外するようにする。なお、この場合も、平均値よりも所定値以上長い平均音長とは、平均値よりも所定比率分以上長い音長であっても、平均値よりも絶対的な所定値以上長い音長であってもよい。
【００５７】
さらに、前記平均音長に関する除外条件に代えまたは加えて、平均音長が他のトラックと比べて相対的に長いトラックをメロディパート候補から除外するようにしてもよい。すなわち、平均音長が長い順に一つまたは複数のトラックをメロディパート候補から除外する。
【００５８】
ｆ．ステップ２１２の重複率による除外処理
トラックがメロディパートに関するものであれば、単旋律が多く、複数音が同時に重複して発音されることは少ない。単旋律であっても、テヌート演奏の場合は前後の音符が若干重なるので「重複なし」とは言い切れないが、重複はあまり多くないと考えられる。これに対して、伴奏パートなどでは、和音などのように複数音が同時に発音される可能性が極めて高い。この点に着目して、この重複率による除外処理においては、前記ステップ２０２〜２１０の除外処理後に残っている複数トラックの中から、重複率の高いトラックを、メロディパートに関するものでないとして、メロディパート候補から除外する。なお、この重複率は、一曲に登場する音符の音長の合計を、音符が存在する区間の合計で除算した値として定義される。
【００５９】
具体的には、ＣＰＵ２１は、前記ステップ２０２〜２１０の除外処理後に残っている複数トラックの各トラックの演奏データを順次読み出して、同読み出した演奏データに基づいて重複率を各トラックごとに計算する。まず、一つのトラックに関し、一曲に登場する音符の音長の合計を計算する。この音長の合計は、新たに計算することも可能であるが、前記ステップ２１０の平均音長の計算過程で計算した一つのトラックに含まれる全ての音符に関する音符長の加算値を記憶しておいて、この記憶値を利用すると便利である。
【００６０】
次に、音符が存在する区間の合計を計算する。この区間の合計は、新たに計算することも可能であるが、前記ステップ２０６の音符存在範囲率の計算過程で計算した音符が存在する区間の加算結果を記憶しておいて、この記憶値を利用すると便利である。そして、前記一曲に登場する音符の音長の合計値を前記音符が存在する区間の合計値で除算すれば、重複率が計算される。このような重複率の計算を各トラックごとに行った後、同重複率が所定値以上であるトラックを、メロディパート候補から除外する。例えば、この所定値としては、「２．０」程度の値を採用できる。
【００６１】
また、前記のように各トラックの重複率を絶対的な所定値と比較するのに代えてまたは加えて、次のようにして各トラックをメロディパート候補から除外するようにしてもよい。すなわち、前記ステップ２０２〜２１０の除外処理後に残っている全てのトラックの重複率の平均値をさらに計算し、各トラックの重複率が前記平均値よりも所定値以上高いとき、同各トラックをメロディパート候補から除外するようにする。この場合も、平均値よりも所定値以上高い重複率とは、平均値よりも所定比率分以上高い重複率であっても、平均値よりも絶対的な所定値以上高い重複率であってもよい。
【００６２】
さらに、前記メロディパート候補からの除外条件に代えまたは加えて、重複率が他のトラックと比べて相対的に大きいトラックをメロディパート候補から除外するようにしてもよい。すなわち、重複率が大きい順に一つまたは複数のトラックをメロディパート候補から除外する。
【００６３】
次に、同ステップ２１２にてメロディパートに対応するトラックを決定する。この決定においては、前記ステップ２０２〜２１２の除外処理によって一つのトラックしか残されていなければ、同一つのトラックをメロディパートに対応したトラックとして決定する。一方、複数のトラックがメロディパート候補として残っている場合には、重複率が最も低いトラックをメロディパートに関するトラックとして決定する。そして、ステップ２１４にて、このメロディ検索ルーチンの実行を終了する。
【００６４】
このようにしてメロディパートに対応したトラックが検索されるが、前述したステップ２０２〜２１２による除外処理はどのような順番でもよい。また、ステップ２０２〜２１２の除外処理のうちのいずれか一つまたは複数の処理を省略してもよい。しかしながら、ステップ２１２においては、除外処理のほかに最終的に一つのトラックを決定する処理も行っている。したがって、ステップ２０２〜２１２の除外処理条件の順番を入れ替えた場合、最後のステップの除外処理後に複数トラックが残っている場合には、前記残っている複数トラックの中から、重複率の最も低いトラックをメロディパートに対応するトラックとして決定する。また、入れ替えられた最後のステップの除外処理条件により、最もメロディパートに適した一つトラックを決定するようにしてもよい。さらに、音符存在範囲率、平均音量、平均音長および重複率の全て、または一部を組み合わせて評価して、最もメロディパートに適した一つトラックを決定するようにしてもよい。
【００６５】
ふたたび、図２のメロディ形成プログラムの説明に戻る。前記ステップ１０４のメロディ検索ルーチンの実行後、ステップ１０６にて前記メロディパートに無音区間が存在するかをチェックする。この無音区間のチェックは、複数のトラックに跨ってメロディパートに関する演奏データが記憶されている可能性があるからである。
【００６６】
この無音区間のチェックにおいては、ＣＰＵ２１は、前記メロディパートに関するトラックであると判定されたトラックの演奏データを順次読み出して、発音の指示されていない無音区間をチェックする。具体的には、ノートオンイベントデータが現われてからノートオフイベントデータが現われるまでの区間は、楽音の発音が指示されている区間であるので、それ以外の区間、すなわちノートオンイベントデータが全く現われる前または全てのノートオンイベントデータによる発音指示がノートオフイベントデータによって打ち消されてから、次にノートオンイベントが新たに現われるまでの区間を検出する。なお、この場合、検出した区間が短い場合（例えば、２分音符相当長さ以下の場合）には、休符に関するタイミングもあるので、無音区間として検出しないようにする。そして、この無音区間が存在しなければ、ステップ１０６にて「Ｎｏ」と判定して、ステップ１１０に進む。
【００６７】
一方、前記無音区間が存在すれば、ステップ１０６にて「Ｙｅｓ」と判定して、ステップ１０８に進む。ステップ１０８においては、前記検出した無音区間を検索区間に設定して、ステップ１０４に戻る。ステップ１０４においては、前記メロディパートとして決定したトラック以外の全てのトラックに対して、前記設定された検索区間（無音区間）を対象に、上述した図３のメロディ検索ルーチンの処理を実行する。したがって、この無音区間に対して、前記決定したトラック以外のトラックがメロディパートに関するトラックとして決定される。
【００６８】
なお、前記無音区間のチェックにおいて、複数の無音区間が設定されれば、ステップ１０８にて検索区間として複数の無音区間が設定され、ステップ１０４のメロディ検索ルーチンの処理により同複数の無音区間に対してメロディパートに関するトラックがそれぞれ決定される。ただし、メロディ検索処理ルーチンにおける各処理においては、複数の無音区間は独立して処理される。
【００６９】
前記ステップ１０４のメロディ検索ルーチンの実行後、ＣＰＵ２１は、ステップ１０６にてふたたび無音区間をチェックする。これは、前記２回目のメロディ検索によっても、１回目のメロディ検索による無音区間内にさらに無音区間が存在することがあるからである。そして、曲全体にわたって無音区間がなくなるまで、ステップ１０４〜１０８の処理を繰り返し実行する。これにより、曲全体にわたって無音区間が無くなれば、前述のように、ステップ１０６にて「Ｙｅｓ」と判定して、ステップ１１０に進む。
【００７０】
図６の上部は、この無音区間の再メロディ検索の様子を示している。この場合、１回目のメロディ検索により、メロディパートのトラックとしてトラックｉが決定されている。この場合、トラックｉにおけるメロディＡ−１、メロディＡ−２及びメロディＡ−３の各間に無音区間が存在する。また、２回目のメロディ検索により、前回の無音区間に対するメロディパートのトラックとしてトラックｊが決定されている。この場合、トラックｊにおけるメロディＢ−１とメロディＢ−２との間、およびトラックｉにおけるメロディＡ−２とトラックｊにおけるメロディＢ−３との間に無音区間が存在する。そして、前記メロディＢ−１とメロディＢ−２との間の無音区間に対しては、メロディパートのトラックとしてトラックｋが決定されている。また、前記メロディＡ−２とメロディＢ−３との間の無音区間に対しては、メロディパートのトラックとしてトラックｍが決定されている。そして、これらの場合のメロディをメロディＣ−１およびメロディＤ−１としてそれぞれ表している。
【００７１】
ステップ１１０においては、複数のメロディ区間が存在するか、言い換えれば複数のトラックの演奏データがメロディとして決定されたかを判定する。複数のメロディ区間が存在しなければ、ステップ１１０にて「Ｎｏ」と判定して、ステップ１１４に進む。そして、ステップ１１４にて前記メロディ検索ルーチンにて決定されたトラックの演奏データをメロディに関するデータとして決定して、ステップ１１６にてこのメロディ形成プログラムの実行を終了する。
【００７２】
一方、複数のメロディ区間が存在する場合、ステップ１１０にて「Ｙｅｓ」と判定し、ステップ１１２にてメロディとして決定された各区間を連結する。この各区間の連結においては、前記メロディパートとして決定された各トラック中の演奏データのうちで、メロディ部として決定された各演奏データを抽出して、これらの各演奏データを順次ＲＡＭ２３に書き込みながら連結する。この連結した例を図６の下部に示す。
【００７３】
そして、このステップ１１４の処理後、ステップ１１６にてこのメロディ形成プログラムの実行を終了する。なお、このようにして決定されたメロディを表す演奏データは、メロディ抽出のために外部記憶装置２５などから読み出した複数のトラックからなる演奏データと共に記憶しておくとよい。
【００７４】
上記作動説明からも理解できるとおり、図３のメロディ検索ルーチンの実行により、複数トラックの演奏データの中から、メロディパートに対応しないグループの演奏データが除外されて、メロディパートに対応したグループの演奏データが取り出される。したがって、メロディパートに関する演奏データがユーザによる手間を省いて自動的に検索されることになるので、メロディパートのみの演奏音を聞いたり、同メロディパートをアレンジしたり、メロディパートを和音伴奏パートまたはベース伴奏パートのアレンジの参考にしたりする場合に便利になる。
【００７５】
また、このメロディ検索ルーチンにおいては、リズム楽器、ベースパート、音符存在範囲率、平均音量、平均音長および音符の重複率からなる複数の異なる条件により、複数グループの演奏データをメロディパートの候補から順次除外していって、同除外後に残ったグループの演奏データをメロディパートの演奏データとして決定している。したがって、メロディパートに対応したグループの演奏データの検索が精度よく行なわれる。
【００７６】
また、上記実施形態おいては、図２のステップ１０４〜１１４の処理により、メロディ検索に検索された演奏データ中の無音区間が調べられ、無音区間が存在すれば同無音区間を対象とするメロディ検索が繰り返し実行されて、新たなメロディパートに対応する演奏データが検索される。そして、これらの検索された複数の演奏データは連結されて、連続したメロディパートの演奏データが形成される。その結果、複数のトラックにわたってメロディパートに関する演奏データが用意されている場合、例えば通常のメロディパートにギターソロパートなどが付加されている場合でも、このギターソロパートと連結したメロディパートの演奏データを得ることができる。
【００７７】
なお、上記実施形態においては、複数パートの各演奏データを複数のトラックにそれぞれ分けて記憶した例について説明した。しかし、本発明は、一つのトラック内に複数パートの演奏データを混在させて記憶した自動演奏用データにも適用できる。この場合、各イベントデータ中の音源チャンネル番号データをチェックすることにより、各パートを区別するようにするとよい。
【００７８】
また、上記実施形態においてはメロディ検索装置を電子楽器に適用した例について説明したが、パーソナルコンピュータなどのプログラム処理可能な各種電子機器であれば、どのような電子機器にも本発明は適用できる。
【００７９】
さらに、本発明の実施にあたっては、上記実施形態およびその変形例に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変形も可能である。
【図面の簡単な説明】
【図１】  本発明の一実施形態に係るメロディ検索装置を適用した電子楽器の全体概略ブロック図である。
【図２】  図１のＣＰＵによって実行されるメロディ形成プログラムを示すフローチャートである。
【図３】  図２のメロディ検索ルーチンの詳細を示すフローチャートである。
【図４】  演奏データの一例を示すフォーマット図である。
【図５】  音符存在範囲率の計算を説明するための説明図である。
【図６】  複数のメロディの連結例を説明するための説明図である。
【符号の説明】
１１…演奏操作子群、１２…パネル操作子群、１３…ディスプレイ、１７…音源回路、２１…ＣＰＵ、２２…ＲＯＭ、２３…ＲＡＭ、２５…外部記憶装置。
【図１】
0003807333.tif 000002
【図２】
0003807333.tif 000003
【図３】
0003807333.tif 000004
【図４】
0003807333.tif 000005
【図５】
0003807333.tif 000006
【図６】
0003807333.tif 000007