(57)【特許請求の範囲】
【請求項１】
有音程楽器パートから構成される電子音楽ファイルから音楽パートを生成するための方法であって、
ある楽器パートのある期間にわたる特徴の評価値を、他の楽器パートの前記期間にわたる特徴の評価値と比較することにより、どの楽器パートが最も高い評価値を前記期間にわたって有しているのかを判断すると共に、前記最も高い評価値を、現在選択されている楽器パートの前記期間にわたる特徴の評価値及び一方の楽器パートから他方の楽器パートへ選択を変更する場合に付加されるスイッチングコストの合計値と比較することにより、前記最も高い評価値と前記合計値のいずれか大きい方を有する楽器パートを示す制御ストリームを生成する段階と、
制御ストリームに基づいて、楽器パートの１つを、前記期間にわたって選択する段階と、
音楽パートを生成するために、前記期間にわたって選択された楽器パートを出力する段階とを具備することを特徴とする方法。
【請求項２】
前記制御ストリームは、電子音楽ファイルにより定義された期間を検査することにより生成されることを特徴とする請求項１に記載の方法。
【請求項３】
前記制御ストリームを生成する段階は、
対応する楽器パートのための値を含む測定ストリームを得る段階と、
最も高い評価値を前記期間にわたって有する、測定ストリーム内の楽器パートを識別する段階とを具備することを特徴とする請求項１に記載の方法。
【請求項４】
前記測定ストリームを得る段階は、音楽パートの特徴を分析する段階を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記特徴は、所定期間内の楽器パートの発音する音符数を表すストラム速度、平均的な音程、同時発音数、ラウドネス、および、ヴォーカルパートの有無のうち１つ以上を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記制御ストリームを生成する段階は、合成測定ストリームを得るために、測定ストリームを合併する段階をさらに具備し、
最も高い評価値を前記期間にわたって有する、前記測定ストリーム内の楽器パートは、合成測定ストリームを用いて識別されることを特徴とする請求項３に記載の方法。
【請求項７】
前記電子音楽ファイルは、電子楽器ディジタルインターフェース（ＭＩＤＩ）ファイルであることを特徴とする請求項１に記載の方法。
【請求項８】
前記生成段階と、選択段階と、出力段階とを、第１の期間に続く第２の期間にわたって反復する段階をさらに具備し、
前記音楽パートは、第１の期間にわたって選択された楽器パートと、第２の期間にわたって選択された楽器パートとを具備することを特徴とする請求項１に記載の方法。
【請求項９】
各楽器パートはイベントストリームを具備し、該イベントストリーム内の各イベントはタイムスタンプを有し、
前記方法は、互いに所定期間以内に存在するイベントのタイムスタンプを、これらのタイムスタンプが同じとなるように変更する段階をさらに具備することを特徴とする請求項１に記載の方法。
【請求項１０】
前記生成段階は、セレクタモジュールを用いて行われ、かつ、選択段階および出力段階は、スイッチャーモジュールを用いて行われることを特徴とする請求項１に記載の方法。
【請求項１１】
有音程楽器パートから構成される電子音楽ファイルから音楽パートを生成するためのコンピュータ読み取り可能な媒体上に記憶されるコンピュータプログラムであって、
前記コンピュータプログラムは、
ある楽器パートのある期間にわたる特徴の評価値を、他の楽器パートの前記期間にわたる特徴の評価値と比較することにより、どの楽器パートが最も高い評価値を前記期間にわたって有しているのかを判断すると共に、前記最も高い評価値を、現在選択されている楽器パートの前記期間にわたる特徴の評価値及び一方の楽器パートから他方の楽器パートへ選択を変更する場合に付加されるスイッチングコストの合計値と比較することにより、前記最も高い評価値と前記合計値のいずれか大きい方を有する楽器パートを示す制御ストリームを生成する段階と、
制御ストリームに基づいて、楽器パートの１つを、前記期間にわたって選択する段階と、
音楽パートを生成するために、前記期間にわたって選択された楽器パートを出力する段階とを機械に行わせる命令を具備することを特徴とするコンピュータプログラム。
【請求項１２】
前記制御ストリームは、電子音楽ファイルにより定義された期間を検査することにより生成されることを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記制御ストリームを生成する段階は、
対応する楽器パートのための値を含む測定ストリームを得る段階と、
最も高い評価値を前記期間にわたって有する、測定ストリーム内の楽器パートを識別する段階とを具備することを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１４】
前記測定ストリームを得る段階は、音楽パートの特徴を分析する段階を含むことを特徴とする請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記特徴は、所定期間内の楽器パートの発音する音符数を表すストラム速度、平均的な音程、同時発音数、ラウドネス、および、ヴォーカルパートの有無のうち１つ以上を含むことを特徴とする請求項１４に記載のコンピュータプログラム。
【請求項１６】
前記制御ストリームを生成する段階は、合成測定ストリームを得るために、測定ストリームを合併する段階をさらに具備し、
最も高い評価値を前記期間にわたって有する、前記測定ストリーム内の楽器パートは、合成測定ストリームを用いて識別されることを特徴とする請求項１３に記載のコンピュータプログラム。
【請求項１７】
前記電子音楽ファイルは、電子楽器ディジタルインターフェース（ＭＩＤＩ）ファイルであることを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１８】
前記生成段階と、選択段階と、出力段階とを、第１の期間に続く第２の期間にわたって反復する段階を機械に行わせる命令をさらに具備し、
前記音楽パートは、第１の期間にわたって選択された楽器パートと、第２の期間にわたって選択された楽器パートとを具備することを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項１９】
各楽器パートはイベントストリームを具備し、該イベントストリーム内の各イベントはタイムスタンプを有し、
前記コンピュータプログラムは、互いに所定期間以内に存在するイベントのタイムスタンプを、これらのタイムスタンプが同じとなるように変更する段階を機械に行わせる命令をさらに具備することを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項２０】
前記生成段階は、セレクタモジュールを用いて行われ、かつ、選択段階および出力段階は、スイッチャーモジュールを用いて行われることを特徴とする請求項１１に記載のコンピュータプログラム。
【請求項２１】
有音程楽器パートから構成される電子音楽ファイルから音楽パートを生成するための装置であって、
実行可能な命令を記憶するメモリと、
命令を実行するプロセッサとを具備し、
前記命令は、
ある楽器パートのある期間にわたる特徴の評価値を、他の楽器パートの前記期間にわたる特徴の評価値と比較することにより、どの楽器パートが最も高い評価値を前記期間にわたって有しているのかを判断すると共に、前記最も高い評価値を、現在選択されている楽器パートの前記期間にわたる特徴の評価値及び一方の楽器パートから他方の楽器パートへ選択を変更する場合に付加されるスイッチングコストの合計値と比較することにより、前記最も高い評価値と前記合計値のいずれか大きい方を有する楽器パートを示す制御ストリームを生成する段階と、
制御ストリームに基づいて、楽器パートの１つを、前記期間にわたって選択する段階と、
音楽パートを生成するために、前記期間にわたって選択された楽器パートを出力する段階とを行うための命令であることを特徴とする装置。
【請求項２２】
前記制御ストリームは、電子音楽ファイルにより定義された期間を検査することにより生成されることを特徴とする請求項２１に記載の装置。
【請求項２３】
前記制御ストリームを生成する段階は、
対応する楽器パートのための値を含む測定ストリームを得る段階と、
最も高い評価値を前記期間にわたって有する、測定ストリーム内の楽器パートを識別する段階とを具備することを特徴とする請求項２１に記載の装置。
【請求項２４】
前記測定ストリームを得る段階は、音楽パートの特徴を分析する段階を含むことを特徴とする請求項２３に記載の装置。
【請求項２５】
前記特徴は、所定期間内の楽器パートの発音する音符数を表すストラム速度、平均的な音程、同時発音数、ラウドネス、および、ヴォーカルパートの有無のうち１つ以上を含むことを特徴とする請求項２４に記載の装置。
【請求項２６】
前記制御ストリームを生成する段階は、合成測定ストリームを得るために、測定ストリームを合併する段階をさらに具備し、
最も高い評価値を前記期間にわたって有する、前記測定ストリーム内の楽器パートは、合成測定ストリームを用いて識別されることを特徴とする請求項２３に記載の装置。
【請求項２７】
前記電子音楽ファイルは、電子楽器ディジタルインターフェース（ＭＩＤＩ）ファイルであることを特徴とする請求項２１に記載の装置。
【請求項２８】
前記プロセッサは、前記生成段階と、選択段階と、出力段階とを、第１の期間に続く第２の期間にわたって反復する段階を行うための命令を実行し、
前記音楽パートは、第１の期間にわたって選択された楽器パートと、第２の期間にわたって選択された楽器パートとを具備することを特徴とする請求項２１に記載の装置。
【請求項２９】
各楽器パートはイベントストリームを具備し、該イベントストリーム内の各イベントはタイムスタンプを有し、
前記プロセッサは、互いに所定期間以内に存在するイベントのタイムスタンプを、これらのタイムスタンプが同じとなるように変更する段階を行うための命令を実行することを特徴とする請求項２１に記載の装置。
【請求項３０】
前記生成段階は、セレクタモジュールを用いて行われ、かつ、選択段階および出力段階は、スイッチャーモジュールを用いて行われることを特徴とする請求項２１に記載の装置。
【発明の詳細な説明】
【０００１】
【関連出願の相互参照】
本願は、２０００年３月２２日に出願された米国仮出願第６０／１９１，３６８号の優先権を主張するものであり、該米国仮出願の内容は、参照により、本明細書において完全に説明されるものとして本願に編入される。
【０００２】
【参照による編入】
米国特許第５，４９１，２９７号明細書、および、米国特許第５，３９３，９２６号明細書は、参照により、本明細書において完全に説明されるものとして本願に編入される。
【０００３】
【発明の属する技術分野】
本発明は、概略的には、電子音楽ファイルから音楽パートを生成することに関する。
【０００４】
【従来の技術】
カラオケマシンは、ヴォーカル伴奏者の代わりに楽器パートを提供する。米国特許第５，４９１，２９７号明細書、および、米国特許第５，３９３，９２６号明細書に説明されているような仮想楽器によって、未熟な演奏者にも楽器の演奏を奨励することが可能となる。カラオケマシンおよび仮想楽器は、ともに、予め録音された音楽パートをオーディオの代わりに用いる。
【０００５】
従来的には、このような音楽パートは、熟練した演奏者により準備され、かつ、録音される。この方法は、時間を浪費し、労力を要し、かつ、費用がかかる。
【０００６】
【発明が解決しようとする課題】
本発明は、“プレイ・アロング（play-along）”パート（すなわち、電子音楽ファイル内に含まれる情報に基づいて、カラオケマシン上で、仮想楽器上で、または、同様の装置上で演奏できる音楽パート）を生成するための、コンピュータにより実施される方法である。電子音楽ファイル内に含まれる情報を用いてプレイ・アロングパートを生成することにより、本発明は、熟練した演奏者が各プレイ・アロングパートを新たに作曲する必要性を低減させる。この結果として、本発明は、比較的安価かつ迅速に歌曲のためのプレイ・アロングパートを生成することを可能にする。
【０００７】
【課題を解決するための手段】
概略的に、一特徴において、本発明は、有音程楽器パートから構成される電子音楽ファイルから音楽パートを生成することに向けられる。本発明に関するこの特徴は、どの楽器パートが最も高い値をある期間にわたって有しているのかを示す制御ストリームを生成する段階と、制御ストリームに基づいて、楽器パートの１つを、前記期間にわたって選択する段階と、音楽パートを生成するために、前記期間にわたって選択された楽器パートを出力する段階とを特徴とする。この特徴は、以下のうちの１つ以上を含むことができる。
【０００８】
前記制御ストリームについては、電子音楽ファイルにより定義された他の期間を検査することにより、ある楽器パートの前記期間にわたる寄与を、他の楽器パートの前記期間にわたる寄与と比較することにより、かつ／または、一方の楽器パートと他方の楽器パートとの間のスイッチングコストに基づいて、生成することができる。制御ストリームを生成するプロセスは、対応する楽器パートのための値を含む測定ストリームを得る段階と、最も高い値を前記期間にわたって有する、測定ストリーム内の楽器パートを識別する段階とを含むことができる。
【０００９】
前記制御ストリームを生成するプロセスは、合成測定ストリームを得るために、測定ストリームを合併する段階を含むことができる。最も高い値を前記期間にわたって有する、前記測定ストリーム内の楽器パートについては、合成測定ストリームを用いて識別することができる。前記制御ストリームについては、セレクタオブジェクトを用いて生成することができ、かつ、前記選択段階および出力段階は、スイッチャーオブジェクトを用いて行うことができる。
【００１０】
前記測定ストリームを得る段階は、音楽パートの特徴を分析する段階を含むことができる。これらの特徴は、ストラム速度、平均的な音程、同時発音数、ラウドネス、および、ヴォーカルパートのうち１つ以上を含むことができる。前記電子音楽ファイルは、電子楽器ディジタルインターフェース（ＭＩＤＩ）ファイルであってもよい。前記生成プロセスと、選択プロセスと、出力プロセスとについては、第１の期間に続く第２の期間にわたって反復することができる。この場合に、前記音楽パートは、第１の期間にわたって選択された楽器パートと、第２の期間にわたって選択された楽器パートとを含むことができる。
【００１１】
各楽器パートは、イベントストリームを含むことができる。各イベントは、タイムスタンプを有することができる。互いに所定期間以内に存在するイベントのタイムスタンプについては、これらのタイムスタンプが同じとなるように変更することができる。
【００１２】
概略的に、他の特徴において、本発明は、電子音楽ファイルから音楽パートを生成することに向けられる。この特徴は、電子音楽ファイル内のパターンを識別する段階と、音楽パートを生成するために、パターンを選択的に結合する段階とを特徴とする。本発明に関するこの特徴は、以下のうちの１つ以上を含むことができる。
【００１３】
前記パターンは、電子音楽ファイル内の個々の楽器トラックを含むことができる。前記パターンを選択的に結合するプロセスは、パターンの１つを選択する段階と、選択されたパターンのリズムの複雑度が所定の閾値を超過するか否かを判断する段階と、選択されたパターンのリズムの複雑度が所定の閾値を超過しなければ、該選択されたパターンを音楽パートに追加する段階とを含むことができる。前記選択されたパターンのリズムの複雑度が所定の閾値を超過すれば、該選択されたパターンを廃棄することができる。
【００１４】
前記選択されたパターンのリズムの複雑度については、該選択されたパターンの音楽的特徴に基づいて決定することができる。前記音楽的特徴は、選択されたパターンの拍、選択されたパターン内のシンコペートされた音符、および、選択されたパターン内のある音符と選択されたパターン内の他の音符との近接度のうち１つ以上を含むことができる。
【００１５】
前記パターン選択的に結合するプロセスは、パターンの１つを選択する段階と、選択されたパターンが、音楽パート内に既に存在するパターンに類似しているか否かを判断する段階と、選択されたパターンが、音楽パート内に既に存在するパターンに類似していなければ、該選択されたパターンを音楽パートに追加する段階とを含むことができる。選択されたパターンが、音楽パート内に既に存在するパターンに類似していれば、該選択されたパターンを廃棄することができる。前記パターンが類似しているか否かを判断するプロセスについては、曖昧な比較、および／または、量子化を用いて行うことができる。
【００１６】
相対的に高い頻度を有するパターンが結合される前に、相対的に低い頻度を有するパターンを、音楽パートを生成するために結合することができる。前記電子音楽ファイルは、電子楽器ディジタルインターフェース（ＭＩＤＩ）ファイルであってもよい。前記電子音楽ファイルは、イベントを含むことができる。識別プロセスと選択的に結合するプロセスとを行う前に、予め指定されたイベント以外の全てのイベントを電子音楽ファイルから除去することができる。
【００１７】
この要約は、本発明の性質を迅速に理解できるように提供される。例示的な実施形態に関する詳細な説明について、以下に述べる。
【００１８】
【発明の実施の形態】
本明細書においては、シンセサイザー制御ファイル（synthesizer control file：ＳＣＦ）のような電子音楽ファイルから音楽パートを生成するための、コンピュータにより実施される方法について説明する。通常的なＳＣＦの例は、電子楽器ディジタルインターフェース（ＭＩＤＩ）ファイルである。
【００１９】
Ｉ．《定義》
“オブジェクト（object）”は、関数を実行するための、かつ／または、物理的要素を表すためのソフトウェアモジュールである。
【００２０】
“イベント（event）”は、楽曲の時間内における特定の瞬間についての情報である。ＳＣＦファイル内の音楽パートは、順序づけられたイベントのリストを含む。これらのイベントの各々は、シンセサイザーに、所定の時刻に何をすべきか（例えば、音符（note）の発音の開始、音符の発音の停止、音符の音程の変更など）を指示する。
【００２１】
“イベントノード（event node）”は、イベントを表すオブジェクトである。イベントノードは、タイムスタンプと他の情報とを含む。イベントノードは、これらのイベントノードが行う演算（例えば、ノートオン（note-on）、ノートオフ（note-off）、ピッチベンド、ピッチチェンジなどのように）にちなんで名づけられ、かつ、必要に応じて、収集、修正、作成、かつ、削除され得る。“イベント”および“イベントノード”については、相互交換的に用いることができる。
【００２２】
“ＳＣＦタイム（SCF-time）”は、イベントノード内のタイムスタンプにより指定される時間である。ＳＣＦタイムは、楽曲の始まりに対して測定される。楽曲の始まりは、ＳＣＦタイムが“ゼロ”であるとして定義される。
【００２３】
“イベントストリーム（event stream）”は、ＳＣＦタイムにより順序づけられた（SCF time-ordered）イベントノード・シーケンスであり、これらのイベントノードは、要請に基づいて後続の各イベントノードを供給する責任を負うオブジェクトにより発せられる。
【００２４】
“イベントフィルター（event filter）”は、イベントストリームを特定の方法で変換するオブジェクトである。イベントフィルターは一系列の形で連続しており、これにより、複雑なイベントストリーム変換を、単純なイベントストリームから構成することができる。基本的に、イベントフィルターは、要請された場合に、イベントストリーム内における次のイベントノードを供給する責任を負う。要請を履行するために、イベントフィルターは、頻繁に、系列内における前のイベントフィルターに要請する必要がある。こうして、連続したイベントフィルター系列が与えられれば、直前のイベントフィルターにイベントノードを要請することによって、全てのイベントフィルターが、イベントストリームを変換するために必要な仕事を行う。フィルター系列内における最初のフィルターは、そのイベントを、入力ＳＣＦから読み出す。
【００２５】
イベントは、イベントフィルターを１つずつ通過する必要はない。個々のイベントを修正するほかに、イベントフィルターは、イベントをイベントストリームから除去することができ、または、イベントをイベントストリームへ追加することができる。イベントを再処理するための設備は存在しない。イベントストリームは、ＳＣＦタイムの順方向へ進行し、逆方向へは進行しない。イベントフィルターは、各イベントをクライアントへ一度だけ供給する。このために、イベントストリームを複写するためのオブジェクト（“複写部（replicator）”）が存在し、これにより、そのイベントを２つ以上の異なる方法で処理することができる。
【００２６】
前記複写部は、１つのイベントストリームを読み出し、かつ、多数のイベントストリームを出力する。複写部は、自身がそのソースから読み出すイベントノードを複写することにより、同じイベントストリームを多数のクライアントに供給する。複写部のクライアントは、イベントを同期的に読み出す必要はない。複写部は、イベントの内部待ち行列（internal queue）を維持し、該イベントの各々については、少なくとも１人の複写部のクライアントにより読み出すことができるが、全てのクライアントにより読み出すことができるとは限らない。こうして、各クライアントは、イベントを自身のペースで要請することができる。
【００２７】
“マージャー（merger）”は、イベントストリームを接合するためのオブジェクトである。ある時点（point）において、ＳＣＦファイル内の全ての音楽パートは別々のストリームとして存在し、これらのストリームについては、さらなる処理のために結合する必要がある。この結合は、マージャーを用いて行われる。マージャーは、イベントストリームの適切なタイムシーケンスを維持する（すなわち、マージャーは、これらのストリームをインターリーブして、結果的に生じるイベントストリームをＳＣＦタイム順の形に保つ）。さらに、マージャーは、自身が処理する各イベントノード内に、どのマージャーのソースからイベントノードが読み出されたのかを示す番号を記憶することができる。この番号は、“ソーススタンプ”と称される。ソーススタンプを付された（source-stamped）マージャー出力は、“合成イベントストリーム（composite event stream）”と称される。合成イベントストリームは、個々の“成分（component）”ストリームからなる１つのストリームである。
【００２８】
これらのイベントは、ＳＣＦ内に見出される種類のものに限られる必要はない。“測定イベント（measurement event）”オブジェクトが特に有用である。測定イベントオブジェクトは、標準的なタイムスタンプの他に、１つの符号付き３２ビット整数値を含む。測定イベントオブジェクトのみを含むストリーム、または、単なる“測定イベント”は、“測定ストリーム（measurement stream）”と称される。自身の出力を測定ストリームの形に変換するイベントフィルターは、“評価部（evaluator）”と称される。
【００２９】
測定ストリーム内のイベントにより指定された値は、以下のように解釈される：
ＳＣＦタイム内のある時点に到着する測定値は、次の測定値が到着するまで真（true）状態を保持すると仮定される。これにより、ＳＣＦタイムの（３２ビットの符号付き整数値に制限された）あらゆる段階的（stepwise）関数を測定ストリームとして表すことができ、かつ、各測定ストリームは、事実上、ＳＣＦタイムの段階的関数の特性を有する。
【００３０】
測定イベントオブジェクトのみを含む合成イベントストリームは、“合成測定ストリーム（composite measurement stream）”と称される。このようなストリームは、多数の測定ストリームを１つの測定ストリームとして表すのに便利な方法である。
【００３１】
ＳＣＦは、該ＳＣＦが作成された楽曲の本来のリズム分割に相当する“小節（measures）”と称される別個のセグメントの形に分割される。ＳＣＦ内に含まれる小節の総数については、ＳＣＦファイルを検査することにより決定することができる。
【００３２】
“イベントバッファ（event buffer）”は、１つ以上のイベントを一時的に記憶することを許容するオブジェクトである。
【００３３】
“近接度減少部（proximity thinner）”は、イベントを、これらのイベントと関連づけられた開始時刻に基づいて、イベントストリームから除去するオブジェクトである。より明確には、近接度減少部は、前のイベントの開始から指定時間間隔以内に発生するイベントを除去する。前記時間間隔は、近接度減少部が構成される場合に指定される。
【００３４】
“パターン（pattern）”は、１小節内で発生する１つの楽器の全イベントをカプセル化するオブジェクトである。一例としては、ＳＣＦの１０小節目においてスネアドラムがどのように演奏されるのかを定義する全てのイベントをカプセル化するパターンである。空白のパターンが有効（valid）であり、かつ、この実施形態においては、スネアドラムが、例えば１０小節目において全く演奏されないことを示す。
【００３５】
“パターンバッファ（pattern buffer）”は、１つの楽器と関連づけられるオブジェクトであって、かつ、該楽器のための１つ以上の異なるパターンを一時的に記憶するオブジェクトである。記憶されたパターンは、パターンバッファ内における該パターンの位置を表す整数により識別される。この整数は、パターン識別子（ＩＤ）と称される。さらに、各パターンのために、パターンバッファは、ＳＣＦ内においてパターンに遭遇した回数のカウントを維持する。前記回数は、パターンの“頻度（frequency）”と称される。
【００３６】
“合成パターン（composite pattern）”は、１小節内で発生する２つ以上の楽器の全イベントをカプセル化するオブジェクトである。一例としては、ＳＣＦの１０小節目においてスネアドラムおよびベースドラムがどのように演奏されるのかを定義する全てのイベントをカプセル化する合成パターンである。合成パターンを作成するために、あるパターンの内容が、他のパターンまたは他の合成パターンと結合される。
【００３７】
“パターンマップ（pattern map）”は、１つの楽器のために、ＳＣＦ内の各小節と関連づけられる特有のパターンを識別するオブジェクトである。パターンマップは、ＳＣＦ内の各小節に対して１つずつのパターンＩＤのリストである。
【００３８】
“パターンアナライザ（pattern analyzer）”は、全体的なリズムの複雑度（rhythmic complexity）、および、規則的なリズムの反復（rhythmic repetition）、という２つの別々の特徴を評価するために、パターンまたは合成パターンを分析するオブジェクトである。これらの特徴、および、これらの特徴がどのように評価されるのかについて、以下に説明する。
【００３９】
“曖昧な比較（fuzzy comparison）”は、比較されている２つの項目が同一であると宣言するために、これらの項目の厳密な整合を必要としない比較である。この比較においては、ある閾値勾配、または、“曖昧係数（fuzz factor）”が定義され、かつ、用いられる。比較されている２つの項目の所定の特徴に関する値が許容可能な曖昧係数の範囲内に収まれば、この特徴は、２つの項目に対して同一であると見なされる。他の全ての特徴についても同様に同一であると見なされれば、これらの項目自体もまた、同一であると見なされる。
【００４０】
ＳＣＦからのイベントの処理において用いられる通常的な慣例は、“量子化（quantization）”と称される。量子化は、実際には、イベントを変更して、該イベントが含む数値を、予め定義された量の倍数であって該数値に最も近い倍数と強制的に等しくさせる。２つのパターンを比較するために、曖昧係数を用いる代わりに、量子化が用いられない理由を尋ねることは、もっともなことである。結局は、２つのパターン内の全てのイベントの全ての値を量子化することができ、かつ、厳密な整合について２つのパターンをチェックすることができ、このことは、曖昧な比較よりもはるかに簡単なプロセスである。曖昧係数は、量子化が情報を破壊するという理由により、量子化の代わりに用いられる。量子化は、望ましくない結果となり得る。例えば、８分音符の３連符がストレートな８分音符の形に量子化される可能性があり、これにより、量子化されているパターン本来の感覚が損なわれる。“曖昧さ”を用いることは、重要な情報を廃棄することがない“スマートな量子化”を作成しようとするよりも容易である。
【００４１】
“プレイ・アロング（play-along）”音楽パートは、“有音程（pitched）”、および、“無音程（non-pitched）”、という２種類からなる。有音程パートは、メロディを演奏するために用いることができる楽器によって演奏できる音楽パートである。このような楽器の例には、ピアノ、ギター、トランペット、または、バイオリンが含まれる。無音程パートは、マルチインストゥルメント・ドラムキットや、ボンゴや、または、メロディを演奏するためには稀にしか用いられない種々の打楽器のようなのようなドラムによって演奏できる音楽パートである。
【００４２】
有音程パートは、楽曲内の全ての有音程パートを分析することにより生成される。楽曲の時間内における各時点のために、最適な有音程パートの内容が、該有音程パート内に含まれるために選択される。事実上、有音程パートは、元の楽曲内に存在する有音程パートの最も適切なセグメントからなる連結状態（concatenation）である。有音程パートを生成するためのソフトウェアについては、より詳細に後述する。
【００４３】
無音程パートは、楽曲内の全ての無音程パートを分析することにより生成される。楽曲の時間内における各時点のために、既存の無音程パートのうちの最も適切な要素が、新たな無音程パートを形成するために、選択され、かつ、結合される。事実上、無音程プレイ・アロングパートは、既存の全ての無音程パートを合併したものであるが、所望の結果を達成するために、ある内容については除去される。無音程パートを生成するためのソフトウェアについては、より詳細に後述する。
【００４４】
II．《有音程パートの生成》
有音程パートを生成するためのプロセスは、ＳＣＦタイム（SCF-time）内の各時点において、元の作品内の各有音程音楽パートの性質を測定すること、および、ＳＣＦタイムが進行する際に、最適な元のパートからの内容を選択することを含む。これらのタスクを行うために、スイッチャー（switcher）、および、セレクタ（chooser）、という２つのソフトウェアイベントプロセッサが用いられる。これらのイベントプロセッサの動作について、以下に説明する。
【００４５】
Ａ．〈スイッチャー〉
スイッチャーは、制御ストリーム、および、合成イベントストリーム、という２つの入力ストリームを受け取る。制御ストリームは、ソース識別子を含む測定ストリームである。ソース識別子の各々は、入力してくる合成イベントストリーム内の１つの成分ストリームを選択するために用いられる。
【００４６】
前記スイッチャーは、選択された成分を、合成ストリームから分離する。例として、６つの成分ストリームのマージャーにより作成された合成入力ストリームが存在すると仮定する。合成入力ストリームのための制御ストリームは、ゼロから５までの値を含み、この場合に、ゼロは、第１成分ストリームに対応し、１は、第２成分ストリームに対応し、…、以下同様である。スイッチャーは、制御ストリームからの値を受け取り、かつ、該値により識別された成分ストリームを、成分ストリームから分離する。
【００４７】
前記スイッチャーは、その入力（例えば、合成イベント）ストリームの両方からのイベントを、ＳＣＦタイム順の形で読み出し、かつ、その出力へ、最も最近に読み出された制御ストリームイベント内の値と整合するソーススタンプを有するイベントのみを通過させる。こうして、ＳＣＦタイム内の各時点において、制御ストリームは、どの成分ストリームがスイッチャーの出力へ通過したのかを判断する。出力されないストリームは阻止される。
【００４８】
Ｂ．〈セレクタ〉
以下、セレクタへ移ると、セレクタは、幾つかの入力測定ストリームのうちのどれがＳＣＦタイム内の各時点において最も高い値を含んでいるのかを示す測定ストリームを生成する。セレクタは、入力ストリームの各成分をＳＣＦタイムの関数として扱い、かつ、ＳＣＦタイム内の各時点における最大入力を識別する関数を出力する。セレクタは、出力関数（測定ストリーム）の揮発性をインテリジェントに低減させる方法を含むこともできる。この特徴について、以下に説明する。
【００４９】
図１は、有音程プレイ・アロングパートを多数の有音程入力パートから得るために、前述したソフトウェアオブジェクト（すなわち、複写部、セレクタ、スイッチャー、マージャー、および、評価部）がどのように相互接続されているのかを示している。
【００５０】
図１において、有音程入力パート０〜ｎが、複写部（Ｒ0）１０〜（Ｒn）１３を通して送られ、該複写部（Ｒ0）１０〜（Ｒn）１３は、出力１０Ａ〜１３Ａを生成する。出力１０Ａ〜１３Ａは、評価部（Ｅ0）１５〜（Ｅn）１８へ送られ、該評価部（Ｅ0）１５〜（Ｅn）１８は、ｎ個の測定ストリームを生成する。これらの測定ストリーム２０は、マージャー（Ａ）２２を通して送られ、該マージャー（Ａ）２２において、合成測定ストリーム２４の形に結合される。合成測定ストリーム２４は、セレクタ２６へ出力される。セレクタ２６は、１つの測定ストリーム２８を出力する。１つの測定ストリーム２８は、ＳＣＦタイム内の現時点において最も高い値を有する、合成測定ストリーム２４内の音楽パートを示す。１つの測定ストリーム２８は、スイッチャー３０のための制御ストリームとして用いられる。すなわち、測定ストリーム２８は、スイッチャーの出力３２を選択する。
【００５１】
各複写部（Ｒ0）１０〜（Ｒn）１３からの出力１０Ｂ〜１３Ｂは、直接的に、マージャー（Ｂ）３４内へ送られる。マージャー（Ｂ）３４は、出力（Ｂ）１０Ｂ〜１３Ｂを合併して、音楽データの合成ストリーム３６を作成する。この合成ストリーム３６は、スイッチャー３０へ送られる。スイッチャー３０は、入力された制御ストリーム２８を用いて、入力された合成ストリーム３６のうちのどの成分がＳＣＦタイム内の現時点において最も高い値を有しているのかを選択し、かつ、これにより、その時にどの成分（１０Ｂ、１１Ｂ、１２Ｂ、または、１３Ｂ）をスイッチャー３０がその出力３２へ通過させるべきかを選択する。
【００５２】
動作中に、セレクタ２６は、合成測定ストリーム２４（ＳＣＦタイムに関する幾つかの関数）を受け取り、かつ、入力ストリームのうちどの成分が時間内の任意の時点において最も高い値を有しているのかを識別するストリーム２８を出力する。このような出力をスイッチャー３０へ送ることは、外観上雑然とした出力音楽パート、すなわち、（入力音楽パートを構成する成分片（component pieces）であって、）メロディの認識を可能にするには短過ぎる可能性がある継続時間（duration）からなる成分片を有する音楽パート、という結果となり得る。例えば、ある入力パートからのメロディラインが開始され、次に、入力パートからの他の装飾的モチーフにより短時間で中断される可能性がある。
【００５３】
中断されない場合にはまとまりのある音楽セクションを、このように不必要に中断することを回避するために、セレクタ２６については、“より長期間の展望（longer term perspective）”をその入力ストリーム２４に採用するように構成することができる。すなわち、セレクタ２６に、特定の音楽パートからの短期間での転換をさせないようにすることができる。このことは、経済予測に類似したプロセスを用いて、かつ、コストを、ある入力ストリームから他の入力ストリームへのスイッチング作用に起因するものと考えることにより、達成することができる。これを正当づけるために、スイッチングストリームは、隠喩的には投資上の適切な収益と称され得るものを提供する必要がある。セレクタ２６は、現在何を行うべきかを決定するために、自由裁量的に、全ての情報が備わったＳＣＦタイムの未来を見ることができる。このことは、以下の通りに行われる。
【００５４】
セレクタ２６へ入力される測定ストリーム２４の各成分ストリームは、特定の時刻に発生する測定イベントを含む。前述したように、測定ストリームは、ＳＣＦタイムの段階的関数を表すものである。したがって、測定ストリーム２４のこれらの成分（すなわち、ストリーム２０）については、“入力関数”と考えることができる。
【００５５】
ＳＣＦタイム内の２つの特定の時点の間における入力関数の寄与（contribution）は、指定された期間にわたる、該関数の下方の領域であってかつＳＣＦタイム軸の上方の領域に等しい。関数の負値部分は、負の寄与を有する。数学的用語において、関数の寄与は、指定された期間にわたる、関数の積分（integral）である。入力関数が段階的であるので、このような積分は計算し易い。計算は、矩形領域を加算および減算することに等しい。例えば、関数ＡがＳＣＦタイム０〜６において値３を有し、かつ、ＳＣＦタイム６〜１０において値−１を有していれば、時刻０から時刻１０までの期間にわたる関数Ａの寄与は、
（３＊（６−０））＋（−１＊（１０−６））
＝１８−４
＝１４
となる。
【００５６】
セレクタのスイッチコストは、ある入力関数から他の入力関数へ選択を変更することが該セレクタにとってどれだけ望ましくないかを示す量である。スイッチコストを測定するための単位（units）は、関数の寄与を測定するための単位（すなわち、ＳＣＦ継続時間を乗算した値）と同じである。
【００５７】
セレクタ２６が進行する際に、その出力値は、該セレクタ２６が最適と見なす入力関数を反映する。ＳＣＦタイム内の各時点において（ただし、時刻ゼロは除く。これについては後述する）、セレクタ２６は、以下の決定を行う必要がある：
（１）現時点での自身の選択に委ねたままにする（同じ出力値を保つ）こと、
（２）新たな入力関数を選択する（出力値を変更する）こと。
選択肢２は、スイッチコストの影響を受けるので、全ての考えられ得る入力関数の未来値を観測することにより正当化される必要がある。
選択肢１は、スイッチコストの影響を受けないので、選択肢２が正当化されないという単純な事実により正当化される。
【００５８】
各入力関数が段階的であるので、合成測定ストリーム２４については、以下の通りに特徴づけることができる：
合成測定ストリーム２４は、１つ以上の入力関数値が変化するＳＣＦタイム内の時点により分離される、入力関数値が変化しない継続時間を含む。入力関数値が変化しないＳＣＦタイムの期間は、フレームと称される。何らかの入力条件の変化により出力値の変化を動機づけする必要があるので、出力値は、フレームの間においては決して変化せず、フレーム間の時点においてのみ変化する。
【００５９】
各入力関数は、各フレームのための特有の寄与を有しており、これは、フレームのＳＣＦ継続時間と、該フレームの間における関数値との積に等しい。これにより、「ある入力関数から他の入力関数へのスイッチングがコストの影響を受ける場合に、各フレームに対して、どの入力関数を最適と識別すべきか」というセレクタの問題を低減させることができる。
【００６０】
スイッチャーにより行われる調停（arbitration）プロセスは、各フレームの始めにおいて、以下の通りに進行する。ここで、“MAXIMUM_LOOKAHEAD”は、スイッチャーが楽曲において予見することができるＳＣＦタイムの最大量である。
【表１】
0004834821.tif 000002
上記の方法において、各スイッチは、実際の将来的な結果の点から見て正当化されるが、得られた寄与がスイッチングコストよりも重要でなければ、何のスイッチングも行われない。
【００６１】
上記のプロセスは、１つの正当性を求めるだけである。すなわち、上記のプロセスは、スイッチングを行うこと、または、行わないことのいずれかを正当化するために必要な場合に限って未来を見るだけである。上記のプロセスは、他の措置をとる理由が他に存在するか否かを知るために、未来をそれ以上見ることはない。このように、前記プロセスは、必ずしも、フレームの初めから終わりまでの全体的な最適経路を見つけ出すようには保証されていない。実際に選択された経路が他の可能性よりも優れていない場合の例を、以下に示す。１０のスイッチコストと、フレームの寄与とを、入力関数Ａ，Ｂに関して以下の通りに仮定する：
フレーム：  １    ２    ３    ４
Ａ：        １１  ０    １１  ０
Ｂ：        ０    １１  ０    １１
関数Ａから開始し、かつ、３回スイッチングすると、結果として関数Ｂとなる。総寄与（total contribution）とスイッチコストとの差は、１１＋１１−１０＋１１−１０＋１１−１０＝１４となる。しかしながら、フレーム２の初めから終わりまで関数Ａのままとし、次に、フレーム４において関数Ｂへスイッチングすると、総寄与とスイッチコストとの差は、１１＋０＋１１＋１１−１０＝２３となる。
【００６２】
しかしながら、実際には、前述の制限は問題とはならない。実施されたようなプロセスは、真の全体的な最適経路を生じさせるプロセスよりも迅速に実行される。
【００６３】
スイッチコストが存在するので、最初のフレームの始めにおける最初の関数の選択については、自由裁量的に行うべきではない。そのように行うことは、スイッチコストよりも優先するのに十分に優れた他の入力関数が現れるまで、最適状態に及ばない（sub-optimal）入力関数によって開始することを意味し得る。したがって、あるフレーム番号Ｎに対して、入力関数Ｆの総寄与が、スイッチコストと次に最適な入力関数Ｇの寄与との和よりも大きいことが判明するまで、前記プロセスは、ＳＣＦタイム０において開始される全てのパートのフレーム寄与を走査する。いったん、このことが行われれば、入力関数Ｆは、第１の選択と称される。
【００６４】
前記第１の選択を行うためにこの方法を用いることは、いかなる入力関数も現在選択されることによって他の入力関数よりも優位な立場になることがないことを除けば、後続の全ての選択を行うための方法を用いることと等価である。行われた選択は、次に最適な（next-best）選択について、スイッチコストによる以上に優れた寄与を行う（out-contribute）。
【００６５】
図２を参照すると、各評価部１５〜１８（図１）のソフトウェアアーキテクチャについて説明されている。セレクタ２６が動作するために、該セレクタ２６には合成測定ストリーム２４が与えられる。このストリームの各成分２０は、入力音楽パートの短期間の性質の評価である。これらの測定は、音楽評価部４０〜４３により行われる。
【００６６】
音楽評価部４０〜４３は、音楽イベントのストリームを処理し、かつ、測定イベントのストリームを供給する。有音程パートの派生に重要なこれらの評価部について、以下に説明する。
【００６７】
ストラム速度評価部（strum speed evaluator）は、ユーザーが所定の音楽パートをトリガリングする場合にストラムしなければならない頻度を測定する。この値は、ストラム／秒の形で測定される。例えば、連続的な４分音符を含み、１２０拍（beat）／分のテンポの、かつ、４／４拍子のパートは、ストラム速度２を有する。ストラム速度は、各ストラム毎に再評価され、かつ、その値は、次のストラムまでの時間の逆数を乗算した定数である。
【００６８】
音程評価部（pitch evaluator）は、入力ストリーム内において発音している全ての音符の平均的な音程を測定する。どの音符も発音されていなければ、平均的な音程は、ゼロと定義される。ピアノ上における中央のＣ音（middle C）は、音程値６０を有するものと定義される。音符の音程値は、音程が半音上がる毎に１だけ高くなり、かつ、音程が半音下がる毎に１だけ低くなる。
【００６９】
同時発音数評価部（polyphony evaluator）は、ＳＣＦタイム内の各瞬間において発音する音符数を測定する。入力音楽ストリームは、ノートオン・イベントと、ノートオフ・イベントとを含む。ノートオン・イベントは、同時発音数を１だけ増加させる。ノートオフ・イベントは、同時発音数を１だけ減少させる。
【００７０】
ラウドネス評価部（loudness evaluator）は、入力音楽ストリーム内の知覚されたラウドネスを測定する。音楽ストリーム内の各音符は、該音符が演奏されるベロシティ（velocity）を有している。ベロシティという概念は、ピアノ演奏から生じたものであり、かつ、特定のピアノのキーが押し下げられる速度を指す。ベロシティが高いほど、より大きな音の音符という結果となる。
【００７１】
さらに、ラウドネスの決定には、パート全体に適用される全体的なボリューム（ＭＩＤＩ用語においては、チャンネルボリュームである）と、音符が演奏されている間に変更できて、音符のボリュームを強めたり弱めたりすることを可能にする値である“エクスプレッション係数（expression factor）”が加えられる。全体的なラウドネスは、現在発音している全ての音符の平均的なベロシティと、全体的なパートのボリュームおよび現在のエクスプレッション係数との積である。
【００７２】
派生フィルター（derivative filter）は、入力ストリーム内の値が変化する速度を測定するために用いられる。派生フィルターは、各入力イベントノードに対して出力イベントノードを供給するが、該派生フィルターが返す値は、各入力イベントノードと次の入力ノードとの関数である。出力値は、値の差を、ＳＣＦタイムの差で除算した値に比例する。付録Ｂ（Appendix B：図７）は、派生フィルターを実施するための一方法を示すコンピュータコードを示している。
【００７３】
図２を参照すると、複写部４６は、入力音楽パート（図示せず）の複写を４つ作成する。４つの評価部４０〜４３は、複写部の出力４６Ａ〜４６Ｄをそれぞれ処理して、音楽に関する種々の特徴を測定する。これらの特徴は、
ストラム速度（音符が始まる頻度）、
発音している音符の平均的な音程、
同時発音数（発音している音符の数）、
ラウドネス（発音している音符に関して知覚されるサウンドレベル）
を含む。
“ストラム速度”評価部４３からの出力は、２つの出力を有する他の複写部４８内へ達する。これらの出力のうちの１つの出力５０は、（前述した）派生フィルター５２へ通過させられ、これにより、ストラム加速度を示す測定値５４が生成される。
【００７４】
結果的に生じた５つの測定ストリーム５４〜５８、および、カラオケの歌い手のヴォーカルの有無を示す２進測定ストリーム（ゼロまたは１ 〜 図示せず）は、マージャー６０により、合成測定ストリーム６２の形に合併される。この合成測定ストリーム６２は、音楽的特徴統合部（music aspect integrator）６４へ供給される。音楽的特徴統合部６４は、全ての入力関数を、音楽的特徴により示される通りのパートの音楽的性質を測定するような方法で結合する。
【００７５】
前記音楽的特徴統合部に与えられる合成測定ストリーム内の一測定値は、当該の有音程入力パートの測定値ではない。これは、前述したカラオケ・ヴォーカルパートの測定値である。カラオケ・ヴォーカルパートは、カラオケの用途の場合において歌い手が歌うと想定されるメロディを含む、ＳＣＦファイル内の音楽パートである。カラオケ・ヴォーカルパートについては、（作成者によりＳＣＦ内に供給されたラベリングまたは他のインジケータのような）特有の基準により、他のパートを容易に区別することができ、かつ、そうでない場合には、カラオケ・ヴォーカルパートは、有音程パート生成プロセスにより処理されない。
【００７６】
歌い手がＳＣＦタイム内の所定の時点において歌うか否かは、優れた有音程パートと見なされることに影響を及ぼす。歌い手が歌っていない間には、有音程パートが可能な限り旋律的（melodic）であることが好ましい。これにより、プレイ・アロングパートが興味深い状態に保たれ、かつ、ユーザーが独唱者として振る舞うことが可能となる。歌い手が歌っている間には、プレイ・アロングパートはメロディを含むべきではない。その理由は、このことにより、ヴォーカルが損なわれるためである。代わりに、プレイ・アロングパートは、よりポリフォニック（マルチピッチ、和音的）であるべきである。通常的な音楽的慣例において、ポリフォニック・パートは、最も頻繁に、メロディの伴奏をつける。このことは、歌い手がメロディを歌っている場合に好都合である。ユーザーは、自身の伴奏者として振る舞う。したがって、有音程パートは、歌い手が歌っていない場合には楽しいものとなり、歌い手が歌っている場合には趣味のよい（すなわち、楽しむことができて、品の良い）ものとなる。
【００７７】
カラオケ・ヴォーカルパートは、以下の通りに処理される。検出されたヴォーカルパートは、音符検出部（図示せず）を通して流れ、該音符検出部は、音符が発音している場合には１の値を有し、そうでない場合にはゼロの値を有する測定ストリームを出力する。結果的に生じた測定ストリームは、“クランパー（clumper）”を通して送られ、該クランパーは、指定量のＳＣＦタイムにわたって入力がゼロである場合の期間を除いては、１の値を有する測定ストリームを出力するイベントフィルターである。実際には、６拍分の時間が良好に作用するが、より長い、または、より短いＳＣＦタイムの期間を用いることもできる。結果的に生じた出力は、カラオケのヴォーカルが、一度に６拍よりも長い期間にわたって無音を保持する音楽を含む場合には１の値を有し、カラオケのヴォーカルが６拍よりも長い期間にわたって無音となる場合にはゼロの値を有する測定ストリームである。測定ストリームの値は、このような無音期間が始まるとゼロとなり、該期間が終了すると１となる。
【００７８】
この測定ストリームは、歌い手がＳＣＦタイム内の各時点において歌っているか否かを示すのに役立つ。前記ストリームは、その複写を十分に作成するため複写部を通して送られ、これにより、各々の複写を、１つの有音程入力パートのための音楽的特徴統合部へ、該パートの統合されている音楽的特徴とともに送ることができる。
【００７９】
前記音楽的特徴統合部は、以下の点においてセレクタと類似している：
・音楽的特徴統合部は、合成測定ストリームを入力として利用する。
・音楽的特徴統合部の出力は、１つの測定ストリームである。
・音楽的特徴統合部は、フレーム（すなわち、音楽的特徴統合部の入力値が変化しないＳＣＦタイムの期間）と協働する。
音楽的特徴統合部のタスクは、各フレームに対して、該音楽的特徴統合部の全入力値を結合して、これらの入力値により示されている音楽パートの性質を表す、該フレームのための１つの出力値を形成することである。
【００８０】
前記音楽的特徴統合部は、各フレームの始めにおいて、１つの値を出力する。この値は、前記フレームのための全ての入力値（すなわち、ストラム速度、平均的な音程、同時発音数、ラウドネス、ストラム加速度、カラオケの歌い手のメロディの有無）の関数である。これらの値を積分する実際の関数については、多くの関数の１つであってもよい。付録Ａ（Appendix A：図６）に示されるコンピュータコードは、前記統合部を実施するための一方法を示している。このコードにおいて、変数“value”は、現在のフレームのための音楽的特徴統合部の出力値である。
【００８１】
有音程パート生成プロセスに関する全ての説明については、上記に与えられている。有音程パート生成プロセスの変形例について、以下に説明する。
【００８２】
スイッチャー３０が動作するために、スイッチャー３０は、各音符を、１つの分割できない単位として扱う。音符の途中で入力ストリームをスイッチすることは望ましくない。その理由は、この音符の終わりをシグナリングするイベントが決して生じないためである。スイッチングのために、各音符は、特定の時刻に開始される継続時間を備えた１つのイベントとして扱われる。こうして、各音符は、全体的に、保持されるか、または、廃棄される。同様に、スイッチャーは、各入力ストリーム（例えば、ピッチベンド）により設定された音楽的状態についての内部情報を維持し、これにより、特定のストリームへスイッチングする場合に、そのストリームのための適切なイベントが出力され、これにより、イベント受信部の状態が、所定の入力ストリームにより要請された状態に整合するように変更される。こうして、スイッチャーから生じる音楽は、然るべき状態で発音される。
【００８３】
入力音楽パートの特徴を測定するプロセスについては、図２に関して前述してある。他の実施形態においては、４つの評価部を通して入力音楽パートを送る複写部４６が存在しなくてもよい。代わりに、入力ストリームを４つの異なる方法で評価する１つのオブジェクトが存在することができる。このオブジェクトは、４つの評価部から現れるような４つの出力測定ストリームを生成する。しかしながら、当初の複写部４６が不要であるので、作成しかつ次に破壊する必要があるイベントノードがより少数で済むために、計算時間が低減される。
【００８４】
前記ＳＣＦ内のある有音程パートについては、有音程パート生成のために無視することができる。このようなパートは、“ＳＣＦ内で指定された第３のパートであること”のような、ある基準または取り決めにより容易に識別可能である。無視されるパートの例は、ベースパートと、ガイドメロディと、ヴォーカルハーモニーパートとを含むことができる。
【００８５】
処理速度を高める方法として、いわゆる“タイムクリーニング（time cleaning）”を行うことにより、ＳＣＦ全体を前処理（preprocess）することができる。タイムクリーニングは、互いに非常に近接して（すなわち、ＳＣＦタイム内における所定の期間以内に）発生する任意のイベントに、全く同じタイムスタンプを持たせるイベントフィルターにより行われる。これにより、セレクタおよび音楽的特徴統合部がストリーム処理の間に扱う必要があるフレームの数が低減される。
【００８６】
III．《無音程パートの生成》
ＳＣＦ内の無音程パートは、これらの無音程パートのＳＣＦファイル内における位置のような１つ以上の所定の基準により、有音程パートとは容易に区別される。例えば、ＭＩＤＩファイルは、トラックから構成される。これらのトラックは、１つ以上の楽器に対応している。ＭＩＤＩトラック１０は、無音程楽器を含む。無音程パート生成部について説明するために、ＳＣＦ内に含まれる全ての無音程パートの整理統合（consolidation）を意味する“全無音程パート（full non-pitched part）”という用語を定義する。各無音程パートが１つ以上の無音程楽器と関連づけられた音符を含むことができることに留意されたい。前述したように、無音程楽器は、スタンダードドラムキットや、他の種々雑多な打楽器からなる種々の打楽器を含む。これらの楽器は、以下の楽器を含むが、これらに制限されるものではない。
スタンダードドラムキット：
ベースドラム
スネアドラム
タムタムドラム
スプラッシュシンバル
クラッシュシンバル
ライドシンバル
ハイハットシンバル
種々雑多な打楽器：
タンバリン
マラカス
ウッドブロック
カウベル
コンガ
ボンゴ
便宜上、“楽器”という語が本節（第III節：無音程パートの生成）の任意の箇所において用いられる場合に、この語は、前述したようなあらゆる無音程楽器を指すものとする。
【００８７】
プロドラマーの演奏は、典型的には、スタンダードドラムキットと、他の種々雑多な打楽器とを利用し、かつ、二本の手および二本の足の調和した動きを用いて種々の楽器を同時に演奏することを必要とする。ドラマーの演奏により結果的に生成される複合的リズムは、おそらくは、（特に、本明細書に説明される音楽パートを生成するために、１つのコントローラ（例えば、マイクロプロセッサ）しか使用できないように制限された場合に）平均的なユーザーが上手く処理するためには複雑過ぎる。ＳＣＦ内に含まれるドラム演奏は、実際のドラマーの演奏を綿密に模写するように作成されるので、単にこの演奏を抽出して、プレイ・アロングパートとしてユーザーに呈するだけでは、望ましいとは言えない。無音程パート生成部のタスクは、以下の基準を満たすプレイ・アロングパートを作成することである：
（１）ＳＣＦ内に表された楽曲全体に沿って演奏される場合に、良好に協働すること
（２）平均的なユーザーが上手く処理するために複雑過ぎないこと
（３）可能な限り多様な、かつ、興味深いものであること。
【００８８】
第１の基準は、ＳＣＦ内に表される全無音程パート内に存在する個々の要素を用いてプレイ・アロングパートを構成することにより満たされる。各要素は楽曲全体と良好に協働するように設計されているので、理論上は、これらの要素の任意の組み合わせもまた良好に協働する。したがって、無音程パート生成部の本質は、ＳＣＦの全無音程パートを、その全ての成分片の形に分解し、かつ、第２および第３の基準を満たすような、これらの成分片に関する最適な組み合わせを決定することである。これらの成分片は、パターンと称され、これについては、第Ｉ節：《定義》において前述してある。
【００８９】
図３を参照すると、無音程パート生成プロセスは、ＳＣＦ７０内に含まれる全ての無音程パート６８を、ＳＣＦタイム順の１つのイベントストリーム７２の形に結合するためのマージャー６６を用いることにより始まる。これらのイベントは処理のために合併されるが、これらのイベントについては楽器毎に分離することができる。その理由は、ＳＣＦ内の各イベントが、自身がどの楽器を制御するように意図されているのかを識別するためである。後述するように、イベントバッファ７４は、全無音程パート内の各楽器のための１小節の音楽イベントによって満たされる。これらのバッファからのイベントは、パターン７６を作成するために出力される。独自のパターンが、パターンバッファ／マップの組７８に追加される。これらのパターンは、無音程音楽パートを生成するために、選択的に結合される。
【００９０】
無音程プレイ・アロングパートの作成は、パターン作成、および、パート生成、という２段階のプロセスである。この実施形態において、パート生成が発生する前に、パターン作成プロセスが最初に全体として実行される。
【００９１】
Ａ．〈パターン作成〉
パターン作成は、ＳＣＦファイル内の全ての無音程楽器により用いられるリズムが分析されかつ識別されるプロセスである。パターン作成の目的は、ＳＣＦファイル内の各無音程パートを、少数の識別可能なパターンの組み合わせとして表すことである。
【００９２】
新たに作成されたパターン７６の数は、楽器数と、ＳＣＦ内の小節数との積に等しい。実際にパターンバッファに記憶される新たなパターンの数は、おそらくは、はるかに少数である。その理由は、複写パターンがパターンバッファに記憶されないためである。これにより、必要な記憶空間が低減されるだけでなく、多数の小節にわたる所定の楽器の循環（recurring）パターンの頻度をログ（log）するための方法が提供される。
【００９３】
パターン作成は、以下の通りに進行する。このプロセスは、各楽器のための空白のイベントバッファ７４と、各楽器のための空白のパターンバッファ８０と、各楽器のための対応する空白のパターンマップ８２とを作成する。歌曲内の各小節のために、前記プロセスは、全てのイベントを、現在の小節のための全無音程パートから読み出し、各楽器のためのイベントバッファ７４を、現在の小節からの該楽器のイベントによって満たす。各楽器のために、前記プロセスは、対応する新たなパターン７６を、該楽器のイベントバッファから作成する。次に、前記プロセスは、パターン比較を行って、現在の楽器のためのパターンが既にパターンバッファ／マップ７８内に存在するか否かを判断する。パターンが既に存在すれば、前記プロセスは、パターンバッファ内のパターンの頻度をインクリメントし、パターンのＩＤの音符を取り出し、かつ、パターンを廃棄する。その理由は、このパターンの複写が既に存在するためである。パターンが存在しなければ、前記プロセスは、新たなパターンをパターンバッファ８０に追加し、該新たなパターンに、次に利用可能なパターンＩＤを与え、かつ、該新たなパターンに頻度１を与える。前記プロセスは、さらに、楽器の対応するパターンマップ８２にパターンのＩＤを追加し、かつ、楽器のイベントバッファを空白にする。
【００９４】
この時点において、パターンについての情報を、パターンバッファ８０とパターンマップ８２とから抽出することができる。例えば、どのリズムがスネアドラムにより１０小節目において用いられたのかを判断するために、スネアドラムのパターンバッファとスネアドラムのパターンマップとを用いることが可能である。スネアドラムのパターンバッファは、さらに、ＳＣＦ全体においてスネアドラムにより用いられたあらゆるパターンの頻度を示す。
【００９５】
この実施形態において、パターン比較（パターン作成プロセスの一部）は、２階層の曖昧な比較プロセスである。２つのパターン内の個々のイベントの曖昧な比較に関して、ある一定以上のパーセンテージが成功と見なされれば、２つのパターンの曖昧な比較は成功であると見なされる（すなわち、これらのパターンが同一であると見なされる）。典型的には、この閾値パーセンテージは、９０％以上である。これらの比較のために、ノートオン・イベントのみが考慮される。その理由は、これらのイベントが、パターンのリズムに影響を与える唯一のイベントであるためである。比較されるノートオン・イベントの各組に関して、イベントの楽器、イベントのタイムスタンプ、イベントのベロシティまたはラウドネス、という３つの値が検査される。
【００９６】
最初に、タイムスタンプが比較される。これらのタイムスタンプの差が、時間単位に関する許容可能な曖昧係数の範囲外となれば、曖昧なイベント比較は失敗であり、かつ、終了する。次に、楽器が比較される。この場合には、曖昧さは存在しない。楽器が厳密に整合しなければ、曖昧なイベント比較は失敗であり、かつ、終了する。最後に、音符のベロシティが比較される。これらの音符のベロシティの差が、ベロシティ単位に関する許容可能な曖昧係数の範囲外となれば、この比較は失敗である。そうでない場合には、曖昧なイベント比較は成功である。
【００９７】
イベントのタイムスタンプがあまりにも離れ過ぎているという理由で曖昧なイベント比較が失敗であった場合に発生する内容が、特に重要である。この場合には、２つのパターンが同期していないことが可能性として考えられる。前のタイムスタンプを示していたイベントがスキップされ、かつ、これに続くイベントが、比較において代わりに用いられる。この理由について、例により明確にする。各々が多数のイベントを含む２つのパターンが、一方のパターンにおいて１つのイベントが欠けていることを除いては全ての点で全く同一である場合に、これらのパターンが不整合であると自動的に見なすことは、望ましいことではない。イベントがこうしてスキップされる度に、１組のイベントを不整合と見なすことと等価であるペナルティが科される。
【００９８】
Ｂ．〈パート生成〉
パート生成は、パターン作成プロセスにおいて識別されたパターンが選択的に結合されて、最終的な無音程プレイ・アロングパートを形成するプロセスである。この目的は、歌曲の各小節のために、適切な合成パターンを作成することである。パート生成は、稀にしか発生しない（低頻度の）リズムパターンの利用を際立たせて、プレイ・アロングパートが興味深く、かつ、多様なものであることを保証する。
【００９９】
楽曲内の各小節のために、パート生成プロセスは、その小節の間にわたって、最も低頻度のパターンを有する楽器を選択することにより始まる。タイ（tie）の場合には、最初に遭遇された楽器が選択される。次に、他の楽器からのパターンが選択される。低頻度のパターンが最初に選択され、これにより、該低頻度のパターンが最終的なプレイ・アロングパート内に含まれることが保証される。より高頻度のパターンは、後で追加され、かつ、パターン分析の結果として廃棄される可能性がより高い。
【０１００】
図４は、１小節のためのパート生成プロセス８６を示している。各小節のために、プロセス８６は、空白の合成パターンによって開始される（９０）。プロセス８６は、小節内で発音する全ての楽器のためのパターンを検査する。全てのパターンが使用されていれば（９２）、プロセス８６は、合成パターンを（前述した）近接度減少部によって処理し（９４）、かつ、この結果を、現在の小節のための最終的なプレイ・アロングパートとなるように割り当てる（９６）。楽曲内の現在の小節に対して全てのパターンが使用されていなければ（９２）、プロセス８６は、これらのパターンの中から、最も低頻度である未使用のパターンを見つけ出す（９８）。プロセス８６は、このパターンを使用されたものとしてマーキングし、かつ、このパターンを合成パターンに追加する（９９）。合成パターンの全体的なリズムの複雑度が高過ぎると、パターン分析部オブジェクトが判断すれば（１００）、または、合成パターンの全体的なリズムが規則的または反復的であり過ぎる場合には（１０２）、プロセス８６は、このパターンを合成パターンから除去し、かつ、次のパターンのために反復される。
【０１０１】
本明細書に説明される音楽パートを生成するために、１つのコントローラ（例えば、マイクロプロセッサ）しか使用できないように制限を与えられた場合に、前記近接度減少部は、ストリーム内の２つのイベントが、ユーザーがこれらのイベントを別々にトリガリングすることが不可能なほど時間的に近接して一緒には発生しないことを保証するために用いられる。
【０１０２】
前記パターン分析部は、合成パターンの全体的なリズムの複雑度を測定する。合成パターンが、ユーザーが上手く処理するために複雑過ぎれば、最後に追加された１つのパターンが合成パターンから除去され、かつ、廃棄される。そうでない場合には、最後の追加によって合成パターンの全体的なリズムが規則的または反復的になり過ぎたのではないことをさらに保証すべく、該合成パターンが分析される。合成パターンのリズムが規則的または反復的になり過ぎた場合には、最後に追加された１つのパターンが合成パターンから除去され、かつ、廃棄される。前記プロセスは、合成パターンに追加しようとするパターンが存在しなくなるまで進行する。
【０１０３】
所定のパターンにより表されたリズムを演奏することがユーザーにとってどれだけ難しいかを示す数を決定するために、任意の１つのパターンまたは合成パターンを、パターン分析部により評価することができる。パターン分析部は、自身が評価するパターン内の全ての音符に、困難度ポイント（difficulty points）を割り当てる。所定の音符に割り当てられる困難度ポイントの数は、該音符のリズムを演奏することがどれだけ難しいかを表す。パターン分析部がパターンを横断する際、これらの困難度ポイントに関する続けざまの合計が保たれる。パターンの終端に到達すると、困難度ポイントの合計数は、予め定義された閾値に対して比較される。閾値が超過されれば、パターンのリズムは平均的なユーザーが演奏するためには複雑過ぎると見なされる。個々の音符には、以下の基準に基づいて、３つの形式の困難度ポイントが割り当てられる：
（１）ビートポイント：この音符が拍（beat）に当たる場合
（２）シンコペーションポイント：この音符が、シンコペートされたリズムの一部であるか否か
（３）近接度ポイント：この音符が、他の音符に対してどれだけ近接しているか
各音符は、適切な場合に、各形式に関して、ゼロの、または、より大きな困難度ポイントを受け取る。
【０１０４】
１．〈ビートポイント〉
拍上で発生する音符を含むリズムは、比較的演奏し易い。したがって、音符が拍上で発生すれば、該音符には、ゼロのビートポイントが割り当てられる。音符が２つの拍の中間（すなわち、ハーフビート上で）発生すれば、該音符には、少数のビートポイントが割り当てられる。音符がクォータービート（quarter-beat）上で発生すれば、該音符には、さらに大きなビートポイントが割り当てられる。３連符またはスウィングの感覚の場合によくあるように、音符が第３拍上で発生すれば、該音符には、さらに大きなビートポイントが割り当てられる。最後に、音符が上記の範疇のいずれにも分類されなければ、該音符は、拍上の、より不明瞭な他の部分に存在すると見なされ、かつ、該音符には、考えられ得る最も大きな数のビートポイントが、パターン分析部により割り当てられる。
【０１０５】
２．〈シンコペーションポイント〉
前記パターン分析部は、シンコペートされていると見なされるあらゆる音符に、シンコペーションポイントを追加する。シンコペートされたリズムは、概して、音楽的背景が乏しい者にとっては、演奏するのがより困難である。シンコペートされていると見なされるには、音符は、２つの拍の中間（ハーフビート上）で発生する必要があり、かつ、先行拍の直後に発生する音符であってはいけない。このことは、先行拍が推測されることを意味し、かつ、先行拍がたとえ発音していなくても演奏者により認識される必要があることを意味する。
【０１０６】
３．〈近接度ポイント〉
最後に、ある音符が先行音符の直後に時間的に非常に近接して発生した場合に、該音符には、近接度ポイントがパターン分析部により与えられる。実験によって、平均的なユーザーは、１秒当たり約６個の音符まで、容易にトリガリングできることが確認されている（期間を拡張すればできなくなるが）。このことは、トリガリング装置の感度がかなり良いことを前提としている。所定の音符が、１秒当たり６個の音符と一致するよりも遅い速度で先行音符に続く場合には、近接度ポイントは追加されない。１秒当たり６個の音符よりも速い速度で音符が生じた場合には、幾らかの近接度ポイントが追加される。速度が１秒当たり８個の音符以上に上昇した場合には、より大きな近接度ポイントが追加される。速度が１秒当たり１０個の音符よりも高く上昇した場合には、最大数の近接度ポイントが追加される。
【０１０７】
前記パターン内で同時に発生する音符を多数の楽器が有していれば、これらの音符のうちの１つだけにポイントが割り当てられる。パターン分析部は、独自の開始時刻を備えた音符を扱うだけである。重ね合わされた音符（superimposed note）は、所定のリズムをユーザーにとって演奏しづらいものにはせず、これらの音符は、単に、ユーザーに、多数の楽器を一度に発音させるだけである。
【０１０８】
所定のパターンが、等間隔に配置された音符を、該パターン内の拍の２倍の数だけ含み、これらの音符が一つおきに拍に当たる場合に、該パターンは、規則的および反復的であり過ぎると見なされる。このようなパターンは、通常は“ストレートな８分音符”と称される音符を含むことになる。所定のパターンが、等間隔に配置された音符を、該パターン内の拍の３倍の数だけ含み、これらの音符が二つおきに拍に当たる場合に、該パターンもまた、規則的および反復的であり過ぎると見なされる。このようなパターンは、通常は“ストレートな８分３連符”と称される音符を含むことになり、かつ、スウィングの感覚を有することになる。１つのパターンを合成パターンに追加することによって該合成パターンがこれらの条件のいずれかを示せば、たった今追加された１つのパターンは、パターン分析部により、合成パターンから除去される。
【０１０９】
発行された様々な形式の困難度ポイントの実際の数、困難度の閾値、および、曖昧係数と閾値パーセンテージとを定義するために用いられる値については、結果的に生成されるパートをより演奏し易くさせるように、または、該パートの演奏意欲をより刺激するように、全て修正することができる。
【０１１０】
前記無音程パート生成プロセスに対して行われる最適化について、以下に説明する。これらの最適化は必要なものではないが、実施された場合には、速度の向上を大いにもたらす。
【０１１１】
無音程パート生成では特にリズムを扱うので、ノートオン・イベントのみが必要とされる。ノートオフ・イベントはプレイ・アロングパートを通して無視される。その理由は、シンセサイザーの中にはノートオフ・イベントを必要とするものもあるが、ノートオフ・イベントは無音程パート生成部により用いられないためである。このように、他の全てのイベントについては、予め取り除くことができる。これにより、無関係なイベントの有無をプロセス内の全ての段階にチェックさせるという余分なオーバーヘッドが節約され、かつ、無関係なイベントが全て拒絶される。このことは、“形式減少部（type thinner）”によって行われる。形式減少部は、特定の形式のイベントをイベントストリームから選択的に除去するために用いられるイベントフィルターである。除去すべき１つまたは複数の形式のイベントは、この形式減少部が構成される場合に指定される。代替例として、形式減少部については、指定された形式を除くあらゆる形式のイベントを除去するように構成することができる。したがって、ここでは、ノートオン・イベントとノートオフ・イベントとを除く全てのイベントを除去する形式減少部を用いて、イベントストリームを予めフィルタリングする。
【０１１２】
最適化については、新たに作成されたパターンをパターンバッファ内の全ての既存パターンと比較する必要がある場合に行うことができる。その理由は、パターンの曖昧な比較が比較的遅いプロセスであるためである。パターンがパターンバッファ内に入れられると、ＣＲＣ（巡回冗長検査（Cyclical Redundancy Check））が、該パターンの内容から決定され、かつ、該パターンの属性と考えられる（attributed）。ＣＲＣは、十分に公知のプロセスにより作成された３２ビットの整数値である。ＣＲＣは、厳密な（曖昧ではない）比較のために、パターンの内容を識別する。同一であるＣＲＣを有する２つのパターンは、同一である可能性が非常に高い。異なるＣＲＣを有する２つのパターンは、同一ではない。
【０１１３】
したがって、２つのパターンを比較する場合に、該２つのパターンのＣＲＣが最初に比較される。ＣＲＣが等しければ（これはよくある場合であるが）、これらのパターンは厳密に整合すると見なされ、かつ、比較的遅い曖昧な比較は省略される。ＣＲＣが整合しなければ、曖昧な比較が行われる。
【０１１４】
IV．《アーキテクチャ》
図５は、本明細書に説明される方法にしたがって、かつ、図１〜図４と関連して、音楽パートを生成するためのコンピュータ１０４を示している。コンピュータ１０４は、プロセッサ１０６と、ランダムアクセスメモリ１０８と、記憶媒体１１０（例えば、ハードディスク）とを有する。記憶媒体１１０は、コンピュータの命令１１２を記憶し、該コンピュータの命令１１２は、メモリ１０８の外部にあるプロセッサ１０６により実行され、これにより、有音程および無音邸音楽パートの両方が、本明細書に説明される方法／ソフトウェアを用いて生成される。
【０１１５】
本明細書に説明される方法／ソフトウェアは、図１〜図５のハードウェア／アーキテクチャ／ＧＵＩ構成とともに用いることに制限されるものではなく、任意の計算または処理環境における適用可能性を提供する。前記方法については、ハードウェア、ソフトウェア、または、これら２つの組み合わせ（例えば、ＡＳＩＣ（特定用途向け集積回路）またはプログラム可能な論理回路）の形で実施することができる。前記方法については、プログラム可能なコンピュータ上で実行される１つ以上のコンピュータプログラムの形で実施することができ、該プログラム可能なコンピュータは、各々が、プロセッサと、該プロセッサにより読み取り可能な記録媒体（揮発性メモリ、不揮発性メモリ、および／または、記憶素子を含む）と、少なくとも１つの入力装置と、１つ以上の出力装置とを有する。プログラムコードについては、出力情報を生成するために入力されたデータに適用することができる。
【０１１６】
このような各プログラムについては、コンピュータシステムと通信するために、高水準の手続き型言語またはオブジェクト指向言語の形で実施することができる。しかしながら、前記プログラムについては、アセンブリ言語またはマシン語の形で実施することもできる。前記プログラムについては、コンパイルされた言語、または、解釈された言語であってもよい。
【０１１７】
各コンピュータプログラムについては、汎用または特殊目的のプログラム可能なコンピュータにより読み取り可能な記憶媒体または素子（例えば、ＣＤ−ＲＯＭ、ハードディスク、または、磁気フロッピー（登録商標）ディスク）に記憶することができる。このことは、前記コンピュータが前記記憶媒体または素子を読み取ってシステムを実施する際に、該コンピュータを構成しかつ動作するためである。前記システムについては、少なくとも部分的には、コンピュータ読み取り可能な記録媒体として実施することもでき、コンピュータプログラムによって構成することもでき、この場合には、実行時に、コンピュータプログラム内の命令によって、コンピュータが適切に動作する。
【０１１８】
前記ＳＣＦファイルまたは電子音楽ファイルについては、任意のソースから得ることができる。例えば、これらのファイルについては、インターネットのようなネットワークからダウンロードすることもでき、コンパクトディスクのような記憶媒体から検索することもでき、または、シンセサイザー上で生成してコンピュータ１０４へ直接的に入力することもできる。
【０１１９】
本発明は、前述した特有のオブジェクトおよび他のソフトウェアに制限されるものではない。他の実施形態もまた、冒頭の請求項の範囲内にある。
【図面の簡単な説明】
【図１】  有音程楽器パートを生成するためのソフトウェアのブロック図である。
【図２】  図１のブロック図に含まれるソフトウェアのブロック図である。
【図３】  無音程楽器パートの生成において用いるためのソフトウェアのブロック図である。
【図４】  無音程楽器パートの生成において用いるための方法を示す図である。
【図５】  図１および図４のソフトウェアを実施できるハードウェアのブロック図である。
【図６】  音楽的特徴統合部を実施するための一方法を示すコンピュータコードを示す付録Ａである。
【図７】  派生フィルターを実施するための一方法を示すコンピュータコードを示す付録Ｂである。
【符号の説明】
１０〜１３  複写部
１０Ａ〜１３Ａ  複写部の出力
１０Ｂ〜１３Ｂ  複写部の成分
１５〜１８  評価部
２０  測定ストリーム
２２  マージャー（Ａ）
２４  合成測定ストリーム
２６  セレクタ
２８  単一の測定ストリーム
３０  スイッチャー
３２  スイッチャーの出力
３４  マージャー（Ｂ）
３６  音楽データの合成ストリーム
４０〜４３  音楽評価部
４６，４８  複写部
４６Ａ〜４６Ｄ，５０  複写部の出力
５２  派生フィルター
５４〜５８  測定ストリーム
６０  マージャー
６２  合成測定ストリーム
６４  音楽的特徴統合部
６６  マージャー
６８  無音程パート
７０  ＳＣＦ
７４  イベントバッファ
７６  パターン
７８  パターンバッファ／マップの組
８０  パターンバッファ
８２  パターンマップ
１０４  コンピュータ
１０６  プロセッサ
１０８  ランダムアクセスメモリ
１１０  記憶媒体
１１２  コンピュータの命令
【図１】
0004834821.tif 000003
【図２】
0004834821.tif 000004
【図３】
0004834821.tif 000005
【図４】
0004834821.tif 000006
【図５】
0004834821.tif 000007
【図６】
0004834821.tif 000008
【図７】
0004834821.tif 000009