(57)【要約】  音楽生成のための方法及び装置である。この方法及び装置は、外部プロセスに反応して、少なくとも２つの主旋律のマテリアルの使用により、音楽を生成するために有利に利用される。多様なタイプのパートのための音楽生成器によって、音楽が、これらの主旋律からの音楽生成器の各タイプのパートから成るマテリアで生成される。これらのマテリアルは生成器の特定タイプのパートを備える。【選択図】図３
2008506150.tif 000002
【特許請求の範囲】
【請求項１】
事前に決定された少なくとも２つの主旋律から、抽出される音楽をリアルタイムに生成する方法であって、
１以上の前記主旋律から抽出される、音楽の第１セグメントを生成するステップと、
前記第１セグメントのコンテキストを示す少なくとも１つの特徴に関連した１以上のパラメータを計算するステップと、
前記パラメータのうち少なくとも１つを前記１以上の主旋律の音楽コンテキストと比較することで、第２セグメントの音楽コンテンツを決定するステップと、
前記第１セグメントのコンテキストと前記１以上の主旋律のコンテキストとの間の比較に基づいて前記第２セグメントを生成するステップと、
を備える方法。
【請求項２】
各セグメントは、音符が設定される最大で１つの時点のみを備える、請求項１に記載の方法。
【請求項３】
前記第２セグメントは、前記第１セグメントの後又は同時に生じる、請求項１又は２に記載の方法。
【請求項４】
新規セグメントを連続的に生成することにより、連続したセグメントのフローを生成するステップをさらに備える、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
奏でる音符を示す同時期のセグメントの前に、より高いアブストラクションレベルを示すセグメントが生成される、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
コンテキストパラメータは、調和分析又は拍節分析を示すパラメータである、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
どの主旋律からセグメントを導き出すかを選択する場合に、外部プロセスの状態を示すデータを使用する、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
コンピュータ上で実行された場合に、請求項１〜７のいずれか１項に記載のステップを実行するコンピュータソフトウェアプログラム製品。
【請求項９】
音楽データを生成するシステムであって、
１以上の主旋律から抽出される音楽の第１セグメントを生成するユニットと、
前記第１セグメントのコンテキストを示す少なくとも１つの特徴に関連した１以上のパラメータを計算する計算ユニットと、
前記パラメータの少なくとも１つを前記１以上の主旋律の音楽コンテキストと比較することで、第２セグメントの音楽コンテンツを決定するユニットと、
前記第１セグメントのコンテキストと前記１以上の主旋律のコンテキストとの比較に基づいて前記第２セグメントを生成するユニットと、
を備えるシステム。
【請求項１０】
前記主旋律を記憶するためのメモリをさらに備える、請求項９に記載のシステム。
【請求項１１】
最新の生成されたセグメントは、先行のセグメントの後又は同時期に生じる、請求項９又は１０に記載のシステム。
【請求項１２】
奏でる音符を示す同時期セグメントの前に、より高いアブストラクションレベルを示すセグメントが生成される、請求項９〜１１のいずれか１項に記載のシステム。
【請求項１３】
コンテキストパラメータは、調和分析又は拍節分析を示すパラメータである、請求項９〜１２のいずれか１項に記載のシステム。
【請求項１４】
さらに、外部プロセスの状態を示すデータを受信するユニットを備える、請求項９〜１３のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部プロセスを音楽的に表現する方法及び装置に関し、また一般に、リアルタイムでの実行が可能な自動音楽生成の方法及び装置に関する。
【背景技術】
【０００２】
コンピュータゲームのようなプロセスに、プロセスが変化することで生成される音楽も変化するように、リアルタイムに音楽を提供することができる。既存のこのようなシステムには、例えば、マイクロソフト・ダイレクト・ミュージック（Ｍｉｃｒｏｓｏｆｔ  ＤｉｒｅｃｔＭｕｓｉｃ）（登録商標）、マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）（登録商標）システム、又は、ルーカス・アーツ（Ｌｕｃａｓ  Ａｒｔｓ）がインタラクティブな音楽のために開発したシステム・イムゼ（ｓｙｓｔｅｍ  Ｉｍｕｓｅ）（登録商標）があり、これらはゲーム中の離散的なイベントに反応する。例えば、コンピュータゲーム内のこれらのシステムを使用する２つの相手方の間における連続的なアプローチのような連続的な変化の音楽的解釈には、一連の離散的イベントによる連続的な変化の「シミュレーション」が必要であり、この各々にその音楽的相対物が提供されなくてはならない。いくつかの連続的な変化を同時に、音楽的かつ独立的に具体化する場合には、これらのシステムでは良好な結果が得られない。
【０００３】
マイクロソフト・ダイレクト・ミュージック（登録商標）等の音楽システムは、事前に定義された音楽フラグメントを再構成するものである。フラグメントの再生成を行える半面、コンピュータゲーム内での変化に反応するシステムの能力は限られている。マイクロソフト・ダイレクト・ミュージック（登録商標）等のシステムでは、音色、ダイナミクス又はジェスチャー的特徴を個別に変化させることは困難又は不可能である。マイクロソフト・ダイレクト・ミュージック（登録商標）等の音楽システムでは、コンピュータゲームの作成者に、多数の小さなフラグメントを定義すると共にこれらをどのように再構成するかを定義しなければならないという重荷を負わせてしまう。
【０００４】
オッペンハイムへの米国特許第５，６６３，５１７号では、「音楽モーフィング」のためのシステムが提案されている。しかし、この特許に記載のシステムは、リズム及び拍節特徴、さらにジェスチャー的特徴の処理が不十分であり、また、多くのアプリケーションに対する調和構造の一貫性に欠けている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、音楽を生成するための柔軟且つ管理可能な方法を提供することである。
【０００６】
さらなる目的は、リアルタイム制約と協働可能で、好ましくはコンピュータゲーム等の外部プロセスから送信された入力データストリームに反応して実行できる音楽を生成する方法を提供することである。
【０００７】
本発明のさらなる目的は、内在する多数の主旋律からインテリジェントな方法で抽出された連続した音楽の流れを生成する方法を提供することである。
【課題を解決するための手段】
【０００８】
これらの目的及び他の目的は、添付の特許請求の範囲に記載された方法によって得られる。本発明は、さらに、これらの方法を実現するための音楽生成システム及びソフトウェアにも拡張される。
【発明の効果】
【０００９】
従って、本発明によれば、多数の異なる主旋律を使用して、インテリジェントな方法で主旋律のコンテキストを維持するよう努力しながら、音楽出力をリアルタイムで生成する。
【００１０】
主旋律のコンテキストを示す多数の異なるパラメータを追跡及び予測し、このような計算されたパラメータに応答してどの音符を演奏するかを選択することで、コンテキストが維持されることが好ましい。そのため、これを達成するためのアルゴリズムは、入力された主旋律のコンテキストの特徴に関する一般的な観察方法を使用することで、演奏される音楽のコンテキストを維持することができる。
【００１１】
コンテキストは、現在演奏されている音楽のコンテキストを表す多数の異なるパラメータを追跡及び分析し、このような計算されたパラメータに応答して、どの音符を演奏するかを選択することにより維持されることが好ましい。パラメータは、現在演奏されている音楽の演奏中の特徴と非演奏中の特徴の両方を示す。特に、非演奏中の特徴を示すパラメータは、抽出レベルが高く、高音質出力の生成の基礎となる有意義なコンテキストを作成する上で有用である。
【００１２】
従って、演奏される音楽のコンテンツを、現在演奏されている音楽のコンテキストの特徴を表す多数のパラメータの追跡及び分析によって維持できると認識することにより、優れた音楽コンテンツと人間の耳に聞き心地のよい音を設けた音楽出力が得られる。
【００１３】
有利なことに、音楽を包括的に構築、例えば、演奏する音符を選択する（奏でる）前に、調和分析及び拍節分析等のような非演奏の特徴の分析から開始することができる。
【００１４】
コンテキストパラメータは、音楽コンテキスト内の、一方で作成されたばかりの音楽と他方で入力された主旋律における時間内の特定のモーメントとの間の類似性を獲得するのに十分なアブストラクトである。入力された主旋律におけるこれら特定のモーメントからのマテリアルを使用して、生成された音楽が延長される。多数のダイナミックウエイトとして定義されるコンピュータゲーム等の外部プロセスの表現として音楽を生成する際、ダイナミックウエイトがより重い主旋律からのマテリアルは、ダイナミックウエイトがより軽い主旋律からのマテリアルよりも頻繁に使用される。その結果、ダイナミックウエイトの変化が、生成された音楽に、異なる主旋律同士の間の準即興変換（ｑｕａｓｉ−ｉｍｐｒｏｖｉｓｉｏｎａｌ  ｔｒａｎｓｉｔｉｏｎｓ）として反映される一方、より重い入力主旋律のコンテキスト特徴は維持される。
【００１５】
連続した音楽変化とは、ある音楽表現が別の音楽表現に連続的に変換されることを意味する。本発明によれば（コンピュータゲーム）作成者、又は音楽を備えた別のプロセスの作成者は、この変化の最初と最後に、音楽がどう演奏されるかを定義することができる。次に、本発明は、例えばゲームに変化が生じた時に、これら２つの表現の間に音楽伝送を挿入する。表現同士の間で、音色、ダイナミクス、ジェスチャー的特徴、調音、不協和音処理、調和シーケンス、テンポ、アゴージック等を連続的に変化させることが可能である。そのため、本発明は、任意数の音楽表現同士の間で流れ、永続的な連続した音楽の流れを生成する。音楽に設定されたプロセスにおいて同時期に相互から独立している連続的又は離散的ないくつかの変化を、互いに独立するいくつかの音楽次元における、同時、連続又は離散的な変化として音楽的に成形することができる。
【００１６】
次に、本発明を、非限定的な例により、また添付の図面を参照しながらより詳細に説明する。
【発明を実施するための最良の形態】
【００１７】
（用語集）
和音：１：多数の同時に奏でられる、又は演奏される音符。２：調和分析と表される音楽理論部分内で、和音という用語は、調和シーケンスを分析し、通常、音高クラスの組として形式化するために使用される。
【００１８】
調音比率：引き上げの特性であり、ａｋと略される。ａが前のストライクとその後のストライクとの間の距離とすると、ｂは前のストライクからリフトまでの距離となり、ａｋ＝ｂ／ａが得られる。
【００１９】
ｓｃａｌｅＣｈｏｒｄ：ＣＳ内の各セグメントによって実現されるインターフェース。三乗根、和音及び音階をモデリングする。最も重要な方法は、それぞれ和音と音高で構成された音高クラスの組内のメンバーシップを検査するブーリーン（Ｂｏｏｌｅａｎ）法である。ｓｃａｌｅＣｈｏｒｄのシーケンスは調和シーケンスを定義する。
【００２０】
周期署名（ｃｙｃｌｅ  ｓｉｇｎａｔｕｒｅ）：各々の入力データパートと各々の計算ステップには、周期署名が１つずつ割り当てられている。周期署名は１組の整数又は周期で構成されているため、全ての数字がこれよりも大きな全ての整数を割ることができ、最大の整数はパートの長さの尺度である。周期署名は、入力データパートがいつ相互に対して多かれ少なかれ類似していると見なされるかを定義し、これにより、そのパートのマテリアル特性を定義する。式（１）を参照。
【００２１】
次元：各パートが一連のセグメントとして定義され、各セグメントは多数の次元を含み、その値は、セグメントの延長時間中にパートの性質を定義する。
【００２２】
ファーストビート：時点ｔ又はｔ（ｍｏｄ  ｐ）＝０にて新規の和音が開始される場合の、入力データパートの時点ｔはファーストビートである。ｐは、入力データパートの小節長さである。
【００２３】
ヒストリーストリング：ヒストリーストリングは、深度（ｄｅｐｔｈ）ｄとのテール類似性（ｔａｉｌ  ｓｉｍｉｌａｒｉｔｙ）に存在するｄ次元の実値のシーケンスである。
【００２４】
コーナー、コーナー主旋律、コーナーパート：全ての状態変数が１つを除いてその最小にある場合、状態はコーナー内に位置している。コーナー主旋律は、この一意の変数が割り当てられた主旋律である。コーナー主旋律のパートがコーナーパートを構成している。状態がコーナー内へ移動すると、通常、生成された音楽はコーナー主旋律に集中する。
【００２５】
比較ストリング：部分的なテール類似性の説明を参照。
【００２６】
協和音カテゴリ：従来の音楽理論では、１つの音符はその他の音符に対して多かれ少なかれ不協和音又は子音である。ここでは、協和音カテゴリ又は協和音値は、対（音高、ｓｃａｌｅＣｈｏｒｄ）の属性である。協和音値は、例えばＣＳ内のｓｃａｌｅＣｈｏｒｄ、調和シーケンスであるパーツの上位タイプの値に依存する次元である。Ｍｅｌ内には、例えば、セグメントのそれぞれ開始時と終了時における音高の協和音値を表すＭｅｌＯｎＣＣとＭｅｌＯｆｆＣＣが存在する。ＭｅｌＯｎＣＣは、セグメント中で有効なｓｃａｌｅＣｈｏｒｄに関連した音高の協和音値であり、ＭｅｌＯｆｆＣＣは、次のセグメントのｓｃａｌｅＣｈｏｒｄに関連した音高の協和音値である。
【００２７】
様々な値の組を使用することができ、例を次に挙げる。
１．３つの値：和音音符、音階音符、非音階音符。
２．４つの値：三和音音符、別の和音音符、音階音符、非音階音符
【００２８】
これらの値は、下方向に傾いた値に関連して配置される：
１．和音音符、音階音符、非音階音符、又は、
２．三和音音符、別の和音音符、音階音符、非音階音符
【００２９】
パートナウ（ＰａｒｔＮｏｗ）：入力パートは自己のパートナウ変数内の時間を記録する。たまに、ｐＮｏｗとも呼ばれる。
【００３０】
ソースプロセス：音楽に解釈されるプロセスである。このプロセスは、例えばコンピュータゲームであってよい。静止多次元的なデータの組が音楽に解釈される場合は、データの組を、１つの次元を転置する時間によりプロセスに変換することができる。
【００３１】
プロセス：多次元的なデータの組、例えばＲｎの部分的な組であり、時間と共に、又は、その意味を維持しながら、このような組に変換されることが可能なオブジェクトとして変化する。
【００３２】
レジスタ次元：いくつかの音楽的特性は、いわゆるレジスタ次元により記述できる。メロディの絶対音程は、ＭｅｌＡＰｉｔｃｈにより記述されるが、さらにレジスタ次元であるＭｅｌＰｉｔｃｈＲｅｇによっても記述できる。絶対値では、メロディパートの上限及び下限、最小及び最大、最高及び最低音符が存在する。絶対値ａを有するセグメント内のレジスタ値ｒは、次式の通り計算することができる：
ｒ＝（ａ−ｍｉｎ）／（ｍａｘ−ｍｉｎ）  これにより、０≦ｒ≦１となる。
【００３３】
レジスタ値の典型的な使用方法を以下に説明する：
メロディ生成器が第１音符を演奏する際、生成器の最高及び最低音符の値であるｍａｘとｍｉｎを最初に計算し、ＭｅｌＰｉｔｃｈＲｅｇについての値ｒを、補間により、全ての主旋律にわたり形成する。次に、ａＲａｗ＝ｍｉｎ＋ｒ（ｍａｘ−ｍｉｎ）から絶対音程ａＲａｗにある値を取る。その後、ＭｅｌＯｎＣＣの値を計算し、生成器によって奏でられる第１音符の音高を、少なくともこの協和音値を有する次の音高にａＲａｗをディゾルブすることにより得られる。
【００３４】
セグメント：入力データと生成されたパートが、異なる期間を有する複数の一連のセグメントとしてモデリングされる。各セグメントの終了時間は、次のセグメントの開始時間に等しい。
【００３５】
最大共通ディバイダｇｃｄ：ｇｃｄ（ａ、ｂ）はａ及びｂを割ることができる最大整数である。ここで、ａとｂは整数である。
【００３６】
小節長さ：パートの特性。主旋律の全長を割る期間であり、通常、周期署名の要素である。ユーザにより構成される。
【００３７】
状態変数、状態ウエイト：ウエイトを参照。
【００３８】
ウエイト：音楽的に解釈されるソースプロセスは、１組のダイナミックウエイトで内部的に表すことができる。状態変数又は状態ウエイトとも呼ばれる。所定のモーメントにおけるこれらウエイトの値は、そのモーメントにおけるソースプロセスの状態を示すか、又は符号化する。状態変数／ウエイトの組み合わせは、ソースプロセスの状態スペース内の１つのベクトルとして見ることができる。コンピュータプログラム内での実現において、ウエイトが負でない実数によって定義されている場合、即ち、ウエイトが、ゼロ以上の浮遊点によってコンピュータ内に示される場合には、特定の計算を簡略化することができる。
【００３９】
本明細書に記載のシステムは、従来のポピュラー音楽に存在する基本拍節構造の傾向を有利に利用して、主旋律の時点間の程度の異なる類似性を識別する。さらに、このシステムでは、生成される音楽は、音楽コンテキストを維持するために入力データ内の音楽が自己成長法と同じ方法で確実に自己成長する。
【００４０】
本発明によれば、音楽は、その時々の一瞬毎にリアルタイムで生成することができる。これは例えば、この音楽モーフィングシステムが同じパート内の１以上の音符をアタックした場合、この時点ではこれらの音符がどの程度長く続くのか決定されていないにも関わらず、システムが、一度に一増分ステップずつ正しいリズムで前進して、ソースプロセスの状態の変更と音楽の発展を考慮できるよう可能な限り遅く決定を行うことを意味する。
【００４１】
図１は、変更がプロセスによって駆動される多数の主旋律の音楽モーフィングを示すと共に、音楽モーフィング装置を概略的に示す。同図にはプロセス１０が示されており、これは、１組のダイナミックウエイト又は状態の変数１２Ｓ：｛Ｓ１，Ｓ２，Ｓ３，．．．，Ｓｎ｝として解釈及び符号化されるコンピュータゲームであってよく、これは次に、オーケストラ１６により入力された利用可能な入力データ１４からのマテリアルの使用に影響を与える。生成された音楽は、例えばＭＩＤＩを介して音楽生成装置１８へ転送される。
【００４２】
音楽モーフィングは、ダイナミック状態ウエイトを各々含んだ多数の主旋律によって生成される音楽である。一実施形態によれば、状態変数／ウエイトは、Ｒ＋Ｕ｛０｝にわたって定義される。有限数の状態変数を使用することにより、有限数の状態を表すことが可能になる点を理解することが重要である。
【００４３】
本明細書に記載のシステムを使用してプロセスに応じて音楽を生成する場合、各モーメントの状態ウエイトの値が、そのプロセスの現在の状態の解釈を構成することができる。この表示が作成される方法、即ち、ソースプロセスから状態ウエイトへ変換される方法は本発明の範囲に包まれないが、本発明の一実施形態はこの変換の実行を補助することができる。
【００４４】
好ましい一実施形態では、ダイナミックウエイトｗを有する主旋律ｔからの音楽マテリアルを使用して、より大きな比率ｒ＝ｗ／Ｗを生成しており、ここで、Ｗは全ての主旋律のダイナミックウエイトの合計である。ｐ（０）＝０，ｐ（１）＝１であり、かつ、残りの関数が間隔［０，１］で増加している限り、任意の確率関数ｐ（ｒ）を使用して、ｔからのマテリアルの使用可能性を表すことができる。
【００４５】
本明細書に記載の方法及びプロセスは、コンピュータシステムにて実施することができ、コンピュータソフトウェアとして実現することができる。このシステムは、主旋律に関係なく、また、ダイナミックウエイトの変化に関係なく、任意の組の対（主旋律、ダイナミックウエイト）から音楽を作成することができる。次の２つの異なる用途を例として挙げる：
・例えば従来のパーソナルコンピュータ上で実行されるソフトウェアプログラム。ユーザは、事前定義された又はまとめられた多数の主旋律から選択し、これをグラフィカルユーザインターフェースの操作によって実行する際に、ソースプロセスを生成することができる。
・コンピュータゲーム製造者は、本発明を使用して、彼らのコンピュータゲーム用に適合する音楽サウンドトラックを作成できる。企業には、コンピュータゲームの作成者のために製造環境が提供されることができる。この製造環境は、映画に音楽を付加する場合に使用されるものと類似している。この環境内で、ゲームと状態変数の間の変換と、主旋律の変数／ウエイトの割り当てとが実施される。異なる種類の音楽、異なるレベルの設定等でゲームを検査実行することが可能である。
【００４６】
このシステムは、少なくとも３つの異なるレベルにおけるコンピュータゲームに統合できる：
１．Ｘ−ｂｏｘ、ｇａｍｅＣｕｂｅ等のようなハードウェアプラットホーム上に配置されるレベル。
２．「ゲームモータ」（「３Ｄモータ」、「物理モータ」、即ちゲームを実行するモデルにサポートを提供する手段）内に統合されるレベル。これにより、ソースプロセスと状態変数の間の変換が促進される。
３．１つのコンピュータゲーム内に統合されるレベル。
【００４７】
図２は、音楽モーフィング装置を概略的に示す。同図は、入力された主旋律の数が状態変数の数と同じであり、各主旋律に一意の状態変数が割り当てられている場合の音楽モーフィングを示している。本発明は、その一般的な形式において、主旋律と同数のダイナミックウエイトを設けることが重要であり、また、いくつかの主旋律は同じｓを共有することができる。この装置は入力データプロセス１０、ダイナミックウエイト１２Ｓ：｛Ｓ１，Ｓ２，Ｓ３，．．．，Ｓｎ｝、異なるパート毎の音楽生成器を設けたオーケストラ１４、及び図１に示したものに従った音楽演奏装置１８を装備している。さらに、この装置には１組の音楽入力主旋律２０Ｔ：｛Ｔ１，Ｔ２，Ｔ３，．．．，Ｔｎ｝が設けられている。
【００４８】
本発明はさらに、音楽生成器によって生成された音楽を音楽演奏装置１８へ移行させるためのインターフェース２２を設けている。インターフェース２２は、一実施形態によれば、生成された音楽をＭＩＤＩ１８のような形式で記憶しておくデータファイルであってよい。
【００４９】
入力データ：
１．開始時（スタートアップ時）における入力データ
ａ．主旋律の数Ｔ：｛ｔ１，ｔ２，．．．，ｔｎ｝。
主旋律は、楽譜又は同様の情報（ＭＩＤＩ又はその他の形式）と、これらの楽譜の解釈に関する情報とで構成された音楽情報を含む。ここでは、この楽譜の解釈に関する情報を構成情報として示している。
ｂ．１組のダイナミックウエイト、Ｓ：｛ｓ１，ｓ２，．．．，ｓｍ｝。
ｃ．各ｔに唯一のｓが割り当てられるようにマッピングＴ→Ｓ。
２．本発明の実行中
ａ．Ｓへのアクセス。本システムがＳの値を１秒間に多数回読み出す。
【００５０】
出力データ：
本システムは、ＭＩＤＩ又はその他の形式の音楽情報の流れを、出力データとして生成する。この出力をシンセサイザに供給し、実際の音楽に変換することができる。シンセサイザは、音楽生成システムと同じコンピュータ上に配置したり、又は、コンピュータのＭＩＤＩ出力に出力データを供給して外部シンセサイザ上で音楽を演奏することもできる。情報はさらに、さらなるプロセス又は記憶のためにファイル上に書き込むことができる。
【００５１】
入力データの各主旋律は、情報をパートに含まないか、又はいくつかのパートに含むであろう。これは、音符の内容（演奏される音符の音高、又は適切な時期のその開始又は終了等）、音色（演奏された音符がどのように聞こえるべきか、そのパートを演奏しているのは何の楽器か）、及びダイナミクス（音の強度／音の強度の変化）に関する情報を含むことができる。主旋律はさらに、テンポ及びテンポの変化に関する情報を含んでいてもよい。
【００５２】
本明細書に記載の本システムの音楽生成コンポーネントは、生成器として表すことができる。システムをオーケストラ１４として見た場合には、生成器はオーケストラの演奏者ということになる。入力の各パートは１つの生成器に対応している。各生成器は、それぞれの主旋律から最大で１つのパートを取る。
【００５３】
生成器とパートは多数の様々なタイプとして存在しているため、あるタイプの生成器はあるタイプのパートのみを扱うことができ、また、これとは反対に、あるタイプのパートはあるタイプの生成器によって扱われるようになっている。１つの主旋律は、同タイプの数個のパートを含むことができる。
【００５４】
図３は、音楽の生成時に実行される異なる基本ステップを示すフローチャートである。第１ステップ１０１では、多数の主旋律がメモリ内に読み出される。次に、ステップ１０３にて、外部プロセスに関連した値が読み出される。例えば、外部プロセスは、ここで説明する異なる主旋律にそれぞれ関連した多数のダイナミックウエイトとして示すことができる。
【００５５】
その後、ステップ１０５にて、第１セグメント期間の調和コンテキストを示す第１ｓｃａｌｅＣｈｏｒｄを選択することで、第１音楽セグメントが生成される。次に、ステップ１０７にて、必要に応じて主旋律が再配置される。次に、ステップ１０９にて、別のセグメントが生成される。次のセグメントは、先に生成されたセグメントに関連した副次的な同時期又は後のセグメントであってよい。ステップ１０９にてセグメントを決定する際に、システムが、先に決定されたコンテキストパラメータと、ここで説明されている外部プロセスを表す現在のウエイトとを利用する。次に、ステップ１１１にて、新規のセグメント内のコンテキストパラメータが必要に応じて評価される。その後、音楽出力を生成する必要がある限り、ステップ１０７〜１１１が繰り返される。
【００５６】
本明細書に記載の本システムの１つの態様は、マルコフ過程として見ることができる。通常、マルコフ過程は、離散過程（即ち、有限数の別個の状態を有する過程）を意味し、この場合、各状態は１以上の先行状態の関数である。このような過程は、コンピュータ上で、サフィックスツリーを使用して容易にシミュレーションすることができる。これらのツリーを構成する場合、この過程の状態は、ストリング・オーバ・アルファベットとして相互を追従する方法で観察される。ストリング・オーバ・アルファベットは、この過程の総状態スペースによって構成されている。
【００５７】
次に、これらのツリーは、「過程の最新のｋ状態をＳ＝｛Ｓｎ，Ｓｎ−１，Ｓｎ−２，．．．，Ｓｎ−ｋ−１｝として与えると、この後、どの状態Ｓｎ＋１が予測されるか？」といったタイプの質問への回答を容易に提供することができる。さらに、Ｓの後にどの状態が続くかを考慮して周波数の管理を行っている場合には、異なるＳに異なる状態の確率を与えることができる。
【００５８】
音楽は、記号のストリングとして見なされるため、マルコフ過程として見なすのに非常に適している。多様なスタイルの音楽を識別するため、又はあるスタイルの新規の音楽を生成するためにサフィックスツリーを使用する例は数多く存在する。
【００５９】
本明細書に記載のシステムの目的の１つは、入力データ内の音楽が自己成長するのと同じ方法で、音楽を自己成長させることである。入力データパート内で適切なマテリアルを見つけるために、生成器は、ここで多次元ストリングの部分的なテール類似性として示す、以下の原理を利用する。この原理はマルコフ過程の形式として見ることができる。
【００６０】
テール類似性の定義：
２つの記号ストリングｇ＝ｇ１，ｇ２，．．．，ｇｊ、及びｔ＝ｔ１，ｔ２，．．．，ｔｋについて、ｇが深度ｄに対する位置ｐにおいてｔに類似したテールであることが有効であり、次式が得られる。
ｇｊ＝ｔｐ
ｇｊ−１＝ｔｐ−１
．．．
ｇｊ−ｄ＋１＝ｔｐ−ｄ＋１
【００６１】
例１
ｇ＝．．．ａｂｃ及びｔ＝ｄｅｆｇである場合、ｇは、どの位置においてもテール類似性ｔを示さない。
【００６２】
例２
ｇ＝ａｂｃ及びｔ＝ｄｅｆｃｇである場合、ｇは、深度１に対する位置４においてテール類似性ｔを示す。
【００６３】
例３
ｇ＝．．．ａａｂｃ及びｔ＝ｄｅｆａｂｃｇｈｉである場合、ｇは、深度３に対する位置６においてテール類似性ｔを示す。
【００６４】
例４
ｇ＝．．．ａｂｃ及びｔ＝ｄｅｂｃｆｇａｂｃｄである場合、ｇは、深度２に対する位置４と深度３に対する位置９においてテール類似性を示す。
【００６５】
上記の例におけるストリングｇは、生成されたストリング又はｇストリングとして示され、ストリングｔは、主旋律ストリング又はｔストリングと示されている。関連テール類似性については、本発明に従って生成されたストリングのテール類似性が、所定の主旋律ストリングに対して検査される。
【００６６】
ｔストリングが周期的と見なされる場合、即ち、第１記号が最終記号の後にも現れる場合には、深度は位置よりも大きい可能性がある：
【００６７】
例５
ｇ＝ａｂｃ及びｔ＝ｃｄｅｆａｂである場合、ｇは、深度３に対する位置１においてテール類似性ｔを示す。
【００６８】
次に、説明をいくつかの次元にまで広げる。
長さｍの次元ｎにある記号ｕのストリングは、ｎ個組（ｎ−ｔｕｐｌｅｓ）の編成されたシーケンスであり、次式で示される：
ｕ＝（ｕ１，１，ｕ１，２，．．．，ｕ１，ｎ），（ｕ２，１，ｕ２，２，．．．，ｕ２，ｎ），．．．，（ｕｍ，１ｕｍ，２，．．．，ｕｍ，ｎ）
従って、ｕｉ，ｊは、ｉ番目のタプル（ｔｕｐｌｅ）のｊ番目の要素を示す。
【００６９】
多次元ストリングｇは、比較ストリングを使用することにより、部分的なテール類似性に関連して同次元性の別のストリングｔと比較することができる。この比較ストリングは、ｇストリングをｔストリングと比較する方法を明記している。この比較ストリングは異なる方法で定義することができる。ここでは、編成された整数のタプルのシーケンスを一例として使用している。比較されるストリングの次元は、どのタプルよりも多い要素を有している。空のタプルが現れる可能性がある。ｃ＝（２，１，４），（４），（３）を、ｔストリングｔとｇストリングｇとの間のテール類似性を決定するための比較ストリングとし、最終タプルは指数ｊを有するとする。指数ｐにおけるｔに対するｇのテール類似性の深度は、それが以下の等式のシーケンスをいくつ保持しているかによって決定される：
１．ｇｊ，２＝ｔｐ，２
２．ｇｊ，１＝ｔｐ，１
３．ｇｊ，４＝ｔｐ，４
４．ｇｊ−１，４＝ｔｐ−１，４
５．ｇｊ−２，３＝ｔｐ−２，３
【００７０】
これら５つの等式の全てが真である場合、位置ｐにおけるテール類似性の深度は５である。条件１が有効でない場合は、進行中の条件のどれもが有効であるかもしれない事実に関係なく、位置ｐにおいて有効なテール類似性はない。比較ストリング内の１つの位置に空のタプルがある場合には、関連するタプルにおいてどの要素も比較されないことを意味する。
【００７１】
音楽のパートを、１つの時間セグメント中に各タプルが音楽の特性を示す多次元ストリングとしてモデリングすることにより、これが、音楽のどの局面が、また、どのセグメント内において、音楽の同一又は後続のセグメント内に含まれた特性のインパクトを有するかを示すことができる。そのため、これらのセグメントは特定の期間を有し、また、各セグメントの終了時間は、後続のセグメントの開始時間と同一である。このモデリング方法を使用して、入力データを分析することができる。本システムは、生成された音楽と入力データ間のタイプの異なる部分的テール類似性の要求を異なる比較ストリングによって上げることにより、生成された音楽が入力データの音楽の自己成長方法と似た方法で自己成長できるようにする。これは、生成された音楽が異なる主旋律同士の間のモーフィングである場合でも同様である。先述の説明における、テール類似性に関するタプルは、パートがモデリングされるセグメントに対応していることが好ましく、また、上述のタプル内の要素は、１つのセグメント内の音楽の特性を表す値に関連している。これらの値のタイプは次元と表すことができる。
【００７２】
完全なテール類似性では、比較ストリングの全てのタプルがｇストリング及びｔストリングの次元数と同じだけの整数を含んでいることが必要である。従って、この完全性は、全ての次元が残されることなく比較され、深度の大きさと無関係であるという事実で構成される。
【００７３】
本明細書に記載のシステムの別の態様は、拍節の規則性を利用する音楽の傾向である。従来の音楽の音時間は規則的として経験される。即ち、音楽の異なるモーメントがある程度まで同様に経験される。これにより、本発明は、「ある時点において演奏された音は、これと類似する時点においても演奏されることが可能である」という原理に従って動作する。
【００７４】
そのため、周期的で、拍節が時間に対して規則的な主旋律を、入力データとして使用することが好ましい。即ち、これらの主旋律は、複数の短い期間が集まった期間で構成されていると説明することができる。従って、例えば３／４小節のエバーグリーンからの３２小節のコーラスの拍節は、パターン（４，８，３）に従った周期内の周期であると説明することができる。即ち、コーラスは、各々が８と３／４小節を含んだ４つの期間に分割される。本発明によれば、このような１つの主旋律における各パートを周期署名に添付し、例えば｛ｎ，ｎ／４，ｎ／（４＊８），ｎ／（４＊８＊３）｝と説明される。このため、この例において周期署名は４つの要素、コーラス（ｎ）の全長、８小節期間、３／４小節、及び４分音符を含む。
【００７５】
周期署名は、空でない数字の組として記載できるため、この組の全ての数で、これよりも大きな全ての数を割ることができ、また、最大数がその主旋律の長さの尺度である。８番目と１６番目がパートの優位である場合には、周期署名を｛ｎ，ｎ／４，ｎ／（４＊８）ｎ／（４＊８＊３），ｎ／（４＊８＊３＊２），ｎ／（４＊８＊３＊２＊”）｝へ拡張することができる。
【００７６】
この時間における類似性の原理は次式で表すことができる：
・１つのパート内において２つの時点ｔ１，ｔ２が類似すると考えられる：
ｔ１（ｍｏｄ  ｍ）＝ｔ２（ｍｏｄ  ｍ）          式（１）
ここで、ｍはこのパートの周期署名の要素であり、このｍが大きい程、類似性が高くなる。
【００７７】
通常、音時間は整数で、即ち、共通の音符（全音符、半音符、４分音符等）の時間値に対応して示される。これは、通常のシーケンサプログラムにおいて、「チック」又は「クリック」として測定される。音時間が「リアルタイム」にかけて移動する速度（秒で示す）は、テンポの問題である。
【００７８】
本システムは、１以上の周期署名を取得する。異なる署名を、生成される音楽の異なる特性の計算に使用することができる。周期署名は、それぞれの主旋律の構成情報内に設けられている。
【００７９】
本システムを実現するコードを実行しているコンピュータプログラムは、任意の高レベル言語で書くことができる。このプログラムは約１００個のクラスを含んでおり、これらのほとんどが異なる音楽的特性又は次元を表す。次に、このプログラムの構造を理解するために、プログラムのインフラストラクチャを形成する最も重要なクラスについて簡単に説明する。
【００８０】
ＴｈｅｍｅＭａｎａｇｅｒ
Ｓｉｎｇｌｅｔｏｎ
ファイルから主旋律を読み出す。
【００８１】
Ｐｒｏｄｕｃｅｒ
Ｓｉｎｇｌｅｔｏｎ
音楽コンテンツの生成に重要である。「演奏家達」、即ち生成器を取り扱う。
【００８２】
生成器
本システムは、タイプの異なる多数の生成器を装備している。生成器は、いくつかの主旋律のうちの１つの中のパートから情報を取り出して、そのパートの表記を構成し、ｇｅｎｅｒａｔｅＵｎｔｉｌ（ｐｏｉｎｔＯｆＴｉｍｅ  ｔ）と示された方法により、プロデューサが命令した通りに音楽を生成する。生成器は、音符のオンセットと解除、相互に関連した異なる音色の強度、音量、テンポ等に関連して音楽マテリアルを生成する。さらに生成器は、例えばシンセサイザで生成された音響信号の処理を、シーケンサへのメッセージを介し、残響、圧縮等によって制御する。各生成器は、生成されたマテリアルをシーケンサに書き込む。
【００８３】
シーケンサ
Ｓｉｎｇｌｅｔｏｎ
このユニットは、生成器から音楽情報を受信し、これを、その時間スタンプに従ってシンセサイザＡＰＩ上で演奏する、及び／又は、ファイルに保存する。時間スタンプは音時間において表される。即ち、シーケンサはテンポも考慮する。
【００８４】
各パートが、セグメント／ポイントの連続シーケンスとしてモデリングされる。各セグメントは持続期間を有し、各後続のセグメントは１つ前のセグメントが終了した時に開始する。各セグメントは多数の特性又は次元を有する。これらの特性／次元のタイプは、様々なタイプのパート毎に異なる。パートによって構成された一連のセグメントは、多次元の複数の部屋を歩くようなものと考えられる。各タイプのパートは、１組の次元を有する部屋として定義され、１つのパート内の各セグメントは全ての次元の値を有する。
【００８５】
一実施形態による次元のいくつかは、例えば以下のとおり、全てのパートに共通のものである。
１．Ｏｓｔ：セグメントの「オンセット時間」
２．Ｏｆｆ：セグメントの終了時間
３．Ｄｕｒ：セグメントの持続期間、即ち、時間の範囲
【００８６】
演奏されるパートは、ストライク及びリフトに合わせてシーケンスとしてモデリングされる。ストライク時では、セグメントＯｓｔにてアタックされる音符はゼロ個又は数個である。リフト時では、ゼロ個又は数個の音符が解放される。一実施形態によれば、全ての演奏されるパートは以下を含んでいる：
１．ストライク：そのセグメントがストライクであるか否か。
２．最終ストライク：最終ストライクのためのＯｓｔ。このセグメントがストライクである場合、この値はＯｓｔと等しい。
３．ＲｅｍＳｔｒｉｋｅＤｕｒ：残余ストライク持続期間。次のストライクまでに残っている時間。
４．ＬｉｆｔＬｉｓｔ：最新ストライクとその次のストライクの間の全てのリフトの表であり、各リフトの調音比率と音コンテンツに関する情報を含んでいる。
５．ＬｉｆｔＣｏｕｎｔ：最終ストライクからこのセグメントの終了時までに作成されたリフトの数。
【００８７】
これ以外の特性は、このタイプのパートには特別なものである。例えば、以下の５つのタイプのパートを使用できる。
１．ＣＳ：和音及び音階シーケンス。ＣＳは無音パートであり、その他のパートに調和シーケンスを提供する。ＣＳでは、各セグメント内に以下を含んでいる。
ａ．適用可能なｓｃａｌｅＣｈｏｒｄ。
ｂ．音高としてのｓｃａｌｅＣｈｏｒｄの根音。
ｃ．セグメントの根音と１つ前のセグメントの根音との距離。
２．Ｍｅｌ：メロディ。このメロディは演奏されるパートであり、一度にストライクの音符１つだけを演奏する。メロディ内の各セグメントの中には、特に以下が含まれる。
ａ．ＭｅｌＡＰｅｔｃｈ：最終のオンセット音符の音高。
ｂ．ＭｅｌＲｅｌＰｉｔｃｈ：１つ前の音符からの半音符距離として表される最終オンセット音符の相対音高。
ｃ．ＭｅｌＰｉｔｃｈＲｅｇ：レジスタ内の、メロディの最高音符と最低音符の間の場所として表される音高。
ｄ．ＭｅｌＤｉｒ：ＭｅｌＲｅｌＰｉｔｃｈ（＋、−、又は０）のサインである相対音高の方向。
ｅ．ＭｅｌＯｎＣＣ：セグメントの開始時における音高の協和音値＊。
ｆ．ＭｅｌＯｆｆＣＣ：セグメントの終了時における音高の協和音値＊。
ｇ．ＭｅｌＶｅｌ：最終オンセット音符のダイナミクス／速度。
ｈ．ＭｅｌＲｅｌＶｅｌ：最新のオンセット音符と比較したダイナミクス／速度の変化。
３．ＣＰ、ＣｈｏｒｄＰｌａｙｅｒ：演奏されるパート。このモデルは、全体としてメロディと同じであるが、同時に演奏されるいくつかの音符へ拡張される。ＣＰは、以下を説明する。
ａ．キーボード上で同時に実行される音符間の距離。
ｂ．異なる音階関数（ｓｃａｌｅ  ｆｕｎｃｔｉｏｎ）（根音、３番目、５番目、７番目等）の場所の定義。
ｃ．演奏された和音内の音符が、先の和音内で演奏された音符とどのように関連しているか。速度はどのように音符が音にされるかを表す。
４．Ｂａｓｓ：これもＭｅｌの拡張である。このバスパートのモデルは、バスがある和音音符から、恐らくは別の音符を間に挟み、次の和音音符へと移動されることで演奏される原理に基づいて構成される。このバスパートは、各セグメントに、とりわけ以下を扱う次元を含んでいる。
ａ．ｔｐｎｅ：次のものの時点
ｂ．ｔｐａ：次のもの（ａｎｎｅ）に近い和音音符オンセットの時点
ｃ．ｔｋａ：ａｎｎｅの音高
ｄ．ａａ：Ｏｓｔの後かつｔｐａの前にオンセットされる和音音符の数
ｅ．ｔｐｎａ：次の和音音符の時点
ｆ．ｔｋｎａ：次の和音音符の音高クラス
ｇ．ａｓ：Ｏｓｔの後かつｔｐｎａの前に演奏される音階音符の数
ｈ．ｔｐｎｓ：次の音階音符の時点
ｉ．ｔｋｎｓ：次の音階音符の音高
ｊ．ａｉ：Ｏｓｔ後かつｔｐｎｓ前に演奏される非音階音符の数
ｋ．ｔｐｎｉ：次の非音階音符の時点
ｌ．ｔｋｎｉ：次の非音階音符の音高クラス
ｍ．現在の音高
ｎ．根音協和音：主音（根音）が３番目及び５番目よりも協和できるようにするための協和音定義の拡張。５番目は７番目等よりも協和性が高い。
５．Ｐｅｒｃ：パーカッションパート。ここでのモデルにおける基本は、時間単位毎のストライク数で表す密度として表現される。
【００８８】
特定タイプのパートはその他のパートよりも上位であるため、この上位タイプの値がこれよりも下位のタイプの値に影響を与えることができる。従って、ＣＳはＭｅｌよりも上位である。これは、ＭｅｌＯｎＣＣとＭｅｌＯｆｆＣＣは音高だけに依存するのではなく、ＣＳ内のセグメントに与えられた和音及び音階にも依存するためである。その結果、同時期のセグメントについては、ＣＳ内のセグメントをＭｅｌ内のセグメントよりも前に生成することが必要となる。一般に、上位パートは、同じ期間内の下位パートよりも前に生成されることが好ましい。
【００８９】
上位タイプのパートと下位タイプのパートにおけるパート間の全ての関係は、全ての子がその親の下位となるツリーを形成する。根音のパートのタイプは、他のどのパートのタイプの下位にもあたらない。このタイプのパートは第１次と示される。本発明のこの実施形態によれば、ＣＳは第１次タイプである。各主旋律内には、第１次パートと呼ばれる唯一のパートが含まれ、また、オーケストラ内には、第１次タイプの生成器が１つだけ設けられている。
【００９０】
各パートは、独自の現在示されるｐＮｏｗ（ｐはパートを意味する）を含んでいる。第１次パートを含む全てのパートが、各自のｐＮｏｗを、その第１次パートの最後に生成されたパートの検査に基づいて、連続的に適合又は再配置させるので、この第１次タイプの役割は重要である。第１次パートの生成器がｇＮｏｗ（ｇは生成器を意味する）を増分している場合には、これと同時に生成器の入力データパートも等しく増分される。その後、入力データパートの再配置により、ｐＮｏｗが実施される。以下に、一実施形態による再配置について説明する。
１．全体としてのオーケストラ、全ての生成器、及びその全ての入力データパートは、オーケストラが演奏を開始した時点であるゼロから時間をカウントする。
２．第１次パートの生成器は、１つのセグメントの生成を終了すると、セグメントの持続期間ｄ＝ｋｍ−ｔによって、そのｇＮｏｗを増分する。この場合、ｔはセグメントの開始時間、ｋｍは生成器のｋ−ｓｅｔの最小要素（以降を参照）である。この最小要素はｔよりも大きい。その後、生成器がその入力パートの各々である一意の値、ｉＮｏｗを計算する：即ち、各パートにつき、＝ｐＮｅｗ＋ｄとなる。
３．次に、可能であれば、各パートが、新規に生成された第１次パートと自己の主旋律の第１次パートとの間のテール類似性を検索することにより、ｈＮｏｗ（ｈはヒストリー）と示されている値を１つ又は複数決定する。本発明の実現における一実施形態では、ＣＳは第１次パートであり、有効な音階和音と、相対及び絶対主音とにテール類似性が決定される。本発明によれば、各入力データパートは、生成された調和シーケンス内で、その絶対音高及びその変換された音高の両方に関連して自己を方向付けることができる。調和シーケンスのコンテンツに関連した再配置は、調和鼓動後、即ち生成された調和シーケンスがｓｃａｌｅＣｈｏｒｄを変更する時点後の再配置によって補助される。
４．検査／比較から、ｈＮｏｗに可能な値が１つしか得られなかった場合には、関連周期署名のｍが含まれていれば、そのパートではｐＮｏｗ＝ｈＮｏｗとなり、従って次式が得られる。
ｉＮｏｗ（ｍｏｄ  ｍ）＝ｈＮｏｗ（ｍｏｄ  ｍ）          式（２）
ｈＮｏｗに使用可能な値がいくつかある場合には、Ｍ＝｛ｈＮｏｗ１，ｈＮｏｗ２，．．．｝となり、ｐＮｏｗ：＝ｈＮｏｗｉがＭ内のｈＮｏｗｉに設定される。これは、ｍの最大値で式（２）を満たす、即ち、ｉＮｏｗに最も類似したｈＮｏｗである。検査／比較によって、ｈＮｏｗに使用可能な値が全く得られない場合、又は、有効な周期署名内にｍが全く存在しない場合には、式（２）を満たし、ｐＮｏｗ：＝ｉＮｏｗ（ｍｏｄ  ｎ）が設定される。この場合、ｎは主旋律の長さである。
５．これ以外の入力データパートは、自己のＣＳを介して、正しい調子でその正確な位置を得る。
【００９１】
一実施形態によれば、入力データパートは、さらなる値を使用して、式（２）に従った類似性を見つける。即ち、その独自の有効周期署名における最短周期の最大共通ドライバ、次に、最も重いＣＳ入力データパートに有効な周期署名を見つける。これにより、小節モード変更を上手く制御することができる。
【００９２】
一実施形態によれば、ＣＳ生成器内に、「ｐｏｓｉｔｉｏｎＭａｓｔｅｒ」（ＰＭ）と呼ばれる変数を使用している。ＰＭは、ＣＳ内の最も重い入力データパートに対して開始される。入力データパートＳを再配置する場合、新規位置も式（２）に従って選択することができる。この場合は、ｍ＝ｇｃｄ（Ｓ．ｓｃ、ＰＭ．ｓｃ）であり、ｓｃは「最短周期」を示す。従って、再配置されるべきパートについての周期署名内の最短周期の最大共通ドライバと、ｐｏｓｉｔｉｏｎＭａｓｔｅｒについての周期署名内の最短周期とを見つけ、より高い値のｍで類似性を満たせなかった場合には、この値を式（２）内のｍに使用することができる。ここでは、これをｐｏｓｉｔｉｏｎＭａｓｔｅｒに対する再配置として示す。
【００９３】
この実施形態によるＣＳ生成器は、先行のｐｏｉｎｔＭａｓｔｅｒに関連して作成されたその入力データパートを再配置し、その後、最も重いパートが新規のｐｏｓｉｔｉｏｎＭａｓｔｅｒとなる。
【００９４】
別の定義ｂａｒＧｒｏｕｐと共に使用することで、拍節変更を上手く制御することができる。Ｂ．ｓｃがＡ．ｓｃで割られる、又はＡ．ｓｃがＢ．ｓｃで割られる場合、２つの入力データパートＡとＢは同じｂａｒＧｒｏｕｐに属する。ここで、ｓｃは、上述と同様に最短周期を意味する。ＣＳ生成器が、新規の音階和音の時間を決定する場合、ユーザがシステムをそのように構成していれば、このような入力パートのみが、最も重い入力データパートと同じｂａｒＧｒｏｕｐに属する決定を行うことができる。類似のメカニズムを使用して、演奏されるパート内におけるストライクオンセット時間を決定することができる。
【００９５】
さらなる実施形態によれば、拍節の変更は、決定可能な閾値以上のウエイトを有する異なるｂａｒＧｒｏｕｐから入力された入力データ小節に、対応する特典を順番に与えることで制御される。
【００９６】
ｐＮｏｗで示される入力データパートの時間は周期的である。しかし、生成器の時間は直線的である。これは連続的に増加している。
【００９７】
システムのユーザは、周期署名と再配置の組み合わせによって、生成された音楽の拍節を上手く制御することが可能になる。
【００９８】
第１次タイプにタイムリファレンスとしての役割を維持させるためには、これを、任意の演奏中の生成器がアクティブである際に、全ての主旋律内の全ての時点と、生成された音楽の全ての時点とに定義する必要がある。第１次タイプの生成器は、任意の演奏中の生成器が休止しない限り休止することができない。上述したように、本発明によれば、ＣＳは第１次タイプである。あるいは、例えば、純粋なソロであれば、メロディがその第１次タイプとなることも可能である。この場合には、関連する音高及び期間にかけてテール類似性を決定することにより、再配置が適切に実行される。
【００９９】
異なる生成器を制御するアルゴリズムは、多くの共通の特性を含んでいるが、いくつかの特性は特別である。各生成器は、生成器のタイプに属した一連のセグメントであるｗａｌｋ  ｉｎ  ｔｈｅ  ｓｐａｃｅを生成する。生成器が次のセグメントに進む前に、１つのセグメント内の全ての次元を決定する必要がある。いくつかの次元は、別の次元内の値に基づいて自明的に更新される。例えば、ＭｅｌＡＰｉｔｃｈがＭｅｌＲｅｌＰｉｔｃｈの値を与え、次にこれがＭｅｌＤｉｒの値を与える。ＭｅｌＡＰｉｔｃｈは、最高音符及び最低音符の値と共に、ＭｅｌＰｉｔｃｈＲｅｇの値を示す。
【０１００】
このような自明的な更新がなく生成された１つのセグメント内の寸法の値を決定するべく実行された各計算では、比較ストリング、周期署名、及び最小限の深度が存在する。比較ストリングは、どのセグメント内にどの次元が、どの順序で比較されるかを明記している。以下の場合、このような次元にある生成器は、１つの入力データパートからの値に寄与する：
１．そのパートの主旋律のウエイトがゼロよりも大きい。
２．当該決定に属する比較ストリングに従って、新規に生成されたパートと、パートのｐＮｏｗによって与えられた位置における入力データパートと間の少なくとも最小限の深度にテール類似性を見つけることができる。
【０１０１】
パートのｐＮｏｗに十分なテール類似性が存在しない場合には、これと似た時点における類似性を、有効な周期署名と式（１）に従って検索することができる。
【０１０２】
部分的なテール類似性が関与したこの作業方法は、マルコフチェーンを使用した作業方法と似ている。特定のモーメントにおいて音楽の状態を定義する際と同様に、全てのパートを同時に調べる形で音楽演奏全体を観察する場合、多様な状態の数が多過ぎて扱い難い。本システムは、下位パート生成前に上位パートを生成できるよう階層を形成することにより、この複雑性をそれぞれの部分に分割する。下位パートを上位パートに自己適合させることにより、いわゆる「ロールバック」を排除できる。この複雑性は、ジェスチャー的及び計量的な特徴のモデリングと不協和音の処理とによって音楽現象を普遍化することでも制限される。
【０１０３】
異なる次元について新規に生成された値は、選択又は補間によって計算される。選択とは、十分なテール類似性を示すことができる入力データパートによって提供された複数の代替物から、生成器が１つを選ぶことを意味する。この代替物は、最大のダイナミックウエイトを有するもの、又は、より重い代替物に選択される機会を与えるべく、選択肢のダイナミックウエイトを考慮して、異なる代替物間で任意の選択を行って得られたもののいずれかである。
【０１０４】
補間では、１以上のパートの値が共に計量される。パートのダイナミックウエイトが考慮されるが、さらに、所与のヒストリーストリングにて特定の値が現れる周波数も考慮される。式（１）に従えば数個の時点同士がほぼ同様となることができるため、同じ比較ストリング及び深度に異なる値が数個存在していてよい。
【０１０５】
この関連値の検索の詳細はいくつかの方法で達成できる。この検索は３つ以上の方向にわたり、異なる主旋律にわたり、テール類似性に関連した異なる深度の要求にわたり、さらに式（１）による異なる時点間の異なる類似性にわたり達成できると言える。様々な方法を用いて様々な決定を行うことができる。例えば最大深度へ要求の検索は、パートからのマテリアルを使用可能にするために、生成されたパート全体が、全ての次元について、パートの全長に対応する完全な深度との完全なテール類似性を示すべきであることを意味する。
【０１０６】
一実施形態によれば、最大周期にかけての特定の深度ｄの検索は、短い周期についてではなく、実時点ｐＮｏｗ（ｍｏｄ  ｎ）についての深度ｄにテール類似性が要求されることを意味する。ここで、ｎはパートの全長の尺度である。複数の入力データパートが一様でない場合は、最大深度と最長の周期の両方への要求が、最後に、最大で１つの入力データパートによって満たされ、これにより、その時点でのモーフィングが不可能となる。
【０１０７】
これら両方への要求の厳密性を、異なる順序で低減することができる。深度は大きいが、時点の類似性（短い周期）がさらに一層少ない状態で、又は、深度への要求はさらに一層少ないが、主として、より等しい時点（長い周期）で検索を行うことができる。
【０１０８】
１つ又は限定数のパートからマテリアルを見つけることができるという意味、又は、可能な限り多くのパートからマテリアルを見つけることが目的であるという意味で、検索において異なる方法を検出することも可能である。第１の方法は、全てのパートにかけての同時検索を含み、また、要求が、深度と時間類似性に対して、少なくとも１つのヒットが得られるまで連続的に低下される。この方法を「先着順（ｆｉｒｓｔ  ｃｏｍｅ，ｆｉｒｓｔ  ｓｅｒｖｅｄ）」と示す。第２の方法は、一度に１つのパートの検索を実行するものであり、要求が連続的に低下して最後には最小となる。これは、マテリアルに貢献できる可能性を全てのパートに与えるための最小の深度と最短の周期である。ここではこの方法を「平等主義」と示す。直感的に、選択には先着順方法がより適切なようである。平等主義方法は、全てのパートについての値を用い、これにより十分なテール類似性が示されるため、補間の場合により適しているようである。
【０１０９】
最小限の要求での検索でヒットがなかった場合には、生成された最新のマテリアル内で、入力データパートが十分に自己を認識していないことを意味する。これにはいくつかの理由がある。この理由とは別に、他のアプローチへの必要性もある。１組の規則を利用してこのような状況を解決することができる。全ての生成器は、入力データに関係なく、またターゲットプロセスの状態変化とは別に、全ての状況下においてデータを伝送しなければならない。
【０１１０】
さらに、不要な計算の実行を回避することが望ましい。特に、生成器のｎｏｗ変数とパートは、全ての入力パートがストライクを実行する傾向にある「臨界モーメント」に全く影響することなく可能な限り効率的に増分されることによって恩恵を受ける。以下の説明でこれについて述べる。
【０１１１】
ストライクに関して、即ち、ＣＳ内の新規の和音と、演奏されるパート内のオンセット音符に関して、関連する生成器のコンストラクタ内において以下の動作が生じる。まず最初に、生成器内で全てのパートの全ての周期署名内の全ての要素の組Ｓが形成される。次に、Ｓ内の全ての要素の最大共通ディバイダｄが決定される。この値ｄは、生成器のステップ周期と呼ばれる。その後、ストライクが生じる部分である（全てのパートはゼロから始まる）生成器の全パート内の全時点の組Ａが形成される。第１公式（式３）を使用することで、全てのｂの組Ｂを形成でき、この組Ｂは、全てのａがＡに含まれる次式から得られる。
ｂ＝ａ（ｍｏｄ  ｄ）          式（３）
第２公式（式４）を使用して、全ての臨界ポイント時間ｋの組Ｋが次式より形成される。
ｋ＝ｂ＋ｎ＊ｄ、ｂ∈Ｂ、ｎ∈Ｎ          式（４）
ここで、∈は「組に属する」ことを示し、Ｎは自然数を示す。ステップ周期はｄであり、Ｂ内の要素は、ステップ周期内において生成器が一周毎にステップする「ステップ」である。
【０１１２】
式（４）に従って形成可能な全てのｋの組Ｋは、全ての臨界モーメント又は開始点の生成器のＫ組と示される。生成器はＫ組の完全なリストを形成しない（Ｋは無限である）。これに対し、組ＢはリストＬ’内に配置されて増分を続け、その後、Ｌ’中の各要素と次の要素との間の差分からリストＬが作成される。これで、生成器に変数ｇＮｏｗが与えられ、入力データパートにｐＮｏｗが与えられたことになり、これらは全てゼロから始まり、次に、ｇＮｏｗが、何度も繰り返しＬを横切り、その値をｇＮｏｗに加算することで、全ての臨界モーメントｋを取得する。同時に、全てのｐＮｏｗも増分され、また、入力データパートｐＮｏｗの再配置はここでは式（２）に従ってのみ実施されるため、新規の臨界モーメントはバイパスされない。ｇＮｏｗの新規値についてはそれぞれ、生成器が新規のセグメントを生成する。
【０１１３】
上位生成器を設けた生成器、つまり、上位タイプを有するパートを生成する生成器は、そのステップ周期が発展するに従い、これがさらに上位生成器のステップ周期をも分割し、また、上位生成器のＢ組内の全ての要素がそれぞれ独自のＢ組に加算されることを考慮しなければならない。これは、上位パート内のセグメント境界が、下位パートにおける特性の変化を同パート内の他の変化に関係なく示すので、生成器のパートが、優位生成器がそのようなセグメント境界を有するところで、セグメント境界を有さなければならないからである。
【０１１４】
演奏されるパートは、第１ステップにおいて、一連のセグメントとしてモデリングされる。この一連のセグメントでは、各セグメントが、ストライク又はリフトから開始され、また、全てのストライク及びリフトが２つのセグメント間の境界を上昇させる（第２ステップでは、ストライク後の全てのリフトが、それぞれの次元ＬｉｆｔＬｉｓｔとしてセグメント内に示される。これは、実ストライクから開始され、また、セグメント同士を融合させることにより、リフトに対応したセグメント制限が排除される）。ストライクと次のリフトとの距離は、調音比率としてＬｉｆｔＬｉｓｔで示される。実際の生成器のコンストラクタ内で実行される第３ステップでは、パートの時間範囲内にｋが含まれている場合、１つのパートの全てのセグメントが、生成器のＫ組内に存在するモーメントｋに分割される。そして、これらのパートを有するサフィックスツリーが作成される。この第３ステップを設ける理由は、生成器の全てのパートが、Ｋ内の全てのモーメントにて生成されたパートにおいて何が起こるかを効率的に知ることができるようにするためである。
【０１１５】
多様な比較ストリングにおける、また、多様な周期におけるテール類似性を迅速に決定するために、本発明の開始時に、各タイプの計算についてサフィックスツリーが作成される。
【０１１６】
図６はサフィックスツリーを説明する。この図は、破線によって２つの部分に分けられている。左側部分はヒストリーを含み、右側部分はフューチャーを含む。ヒストリー側は実際のサフィックス、又はむしろプレフィックスであり、比較ストリングによってルート及び下方から与えられた次元のパートの全シーケンスを含む。フューチャー側は、各サフィックス／プレフィックスに使用可能な将来のシナリオを全て含んでいる。これらは、図の右下部分に示すように、唯一のレベル、即ち、ツリーが決定すべき次元によって構成することができる。しかし、この破線が引かれた図の右上部分に示すように、多数のサブツリーを含むこともできる。次に、これらのサブツリーの多様なレベルが多様な次元を含んでおり、また、ツリーが決定しようとする次元と共に変化すると仮定できる。多くの場合、フューチャーツリーは、ヒストリー側のルートに最も近いノード次元と同じセグメントから導出された次元と値を含む。これは以下の例によって例証される。
【０１１７】
メロディ生成器が、セグメントｐ内の新規の音高を決定すると、ｐ内のＭｅｌＲｅｌＰｉｔｃｈの決定が実タスクを構成する。先着順の原理と選択の原理に従って、全てのパートに検索が行われる。しかし、新規音高と先行のストライクの音高との間の距離だけでなく、新規の音高の協和音値にも関心がある。入力パートの協和音及び不協和音のパターンを保存することができる。フューチャーブランチを構築する場合には、ＭｅｌＲｅｌＰｉｔｃｈだけでなくＭｅｌＯｎＣＣも考慮され、これは、本発明の一実施形態によれば、パートのＭｅｌＲｅｌＰｉｔｃｈに代替物を選択するアルゴリズムが、フューチャーブランチの元の値に、最低でも同じ協和音値を、生成された調和シーケンスに従って解決させることを意味する。このようにして、ジェスチャー的特徴と不協和音の処理との組み合わせが保存される。また、ＭｅｌＰｉｔｃｈＲｅｇを関与させれば、音高レジスタ内の異なるパターンの場所に対して、パートの代替物を計量することもできる。
【０１１８】
本発明の一実施形態によれば、演奏されるパートのための生成器内の基本アルゴリズムは、以下のとおり擬似コード内に書き込むことができる。
可変ｇＮｏｗは、通常、セグメント内のＯｓｔと同様に、生成器の「ｎｏｗ」の、現在生成されている現在の値を保持する。変数「ａｌｌ  ｐＮｏｗ」は、入力データパートの個別のＮｏｗ：ｓを示す。
【０１１９】
各ｇＮｏｗと生成された各セグメントについて：
１．リフトを作成するか否かを決定する
ａ．「作成する」場合
ｉ．どの音符を解放するかを決定する
ｉｉ．データをシーケンサに送信する
２．ストライクを決定する。即ちストライクを作成するかを決定する。
ａ．「作成する」場合
ｉ．どの音符をオンセットにするか、またその方法を決定する
ｉｉ．データをシーケンサに送信する
ｂ．「作成しない」場合には動作なし
３．ＲｅｍＳｔｒｉｋｅＤｕｒ（選択、先着順、又は平等主義）を決定する。
４．前のストライクと後のストライクとの間のリフトの数であるａｌを決定する。
ａ．ＬｉｆｔＣｏｕｎｔ≧ａｌの場合には動作なし
ｂ．上記以外の場合：次のリフトの時点を決定する
ｉ．次のリフト（平等主義補間）に調音比率ａｋを決定する。
ｉｉ．ａｋ及びＲｅｍＳｔｒｉｋｅｄｕｒにより、次のリフトに時間ｔを決定する。
ｉｉｉ．（ｔ＜次のｇＮｏｗ）である場合
１．ｔにて解放する音符を決定する
２．データをシーケンサへ送信する
３．ＬｉｆｔＣｏｕｎｔを増分する
ｉｖ．これ以外の場合は動作なし
５．ｇＮｏｗ（及び全てのｐＮｏｗ）を増分し、次のセグメントにまで増分する。
【０１２０】
アルゴリズムは、２つの重要な特性を備えている。第一の特性は、そのいずれかのリフトの時点又は次のストライクのリフトの時点を決定することなく、ストライクが達成されることである。パートによって長いと見なされた音符が、状態が変更された場合、ストライクの後に、別の主旋律によって短い音符であると解釈されることもある。第二の特性は、調音にわたって補間を行うことができることである。
【０１２１】
ＲｅｍＳｔｒｉｋｅＤｕｒと調音比率によるリフトの時点の計算が本発明において代表的である。ｇＮｏｗがこの時点に達する前に、次のストライクに使用可能な時点が決定される。この値は、可能性として次のリフト又はストライクが実行される前に多数回変更することができる暫時値としてのみ存在する。Ｓｔｒｉｋｅ／ｓｔｒｉｋｅにて、オンセット音符の速度も決定される。
【０１２２】
一実施形態によれば、演奏中の生成器には、音色及び音量を扱う「アシスタント生成器」ＴｉｍｂｒｅＳｈｉｆｔｅｒも設けられている。コーナーにおいて生成器が演奏を開始すると、コーナー主旋律の音色のみが音を出す。状態が別のコーナーへ移動すると、この音色が新規コーナー主旋律の音色にスムーズに変換される。この変換は、本発明の一実施形態によれば、従来技術に従って、例えばいくつかのｍｉｄｉチャネル内の同じ音符を同時に演奏し、また、１つのチャネルの音量を増加させながら、第２チャネルの音量を低減させて、全体の音量を変化させないようにすることで、音色の変更を実行することにより達成される。本発明の別の実施形態によれば、音色は周波数ドメイン内で作成される。
【０１２３】
本発明によるバスパートはユニゾンである。即ち、一度に２つ以上の音符を決して演奏しない。バスパートを生成するアルゴリズムでは、暫時値の原理がずっと先まで行使される。バスパートの推測は、バスパートが、ダウンビート（用語集を参照）付近のある和音音符から、ゼロ又はいくつかの別の和音音符を介して、次のダウンビート付近の和音音符まで、また、ある和音音符から、ゼロ又はいくつかの音階音符を介して、別の和音音符まで、さらに、ある音階音符から、ゼロ又はいくつかの非音階音符を介して、別の音階音符まで移動することで演奏されるというものである。以下のアルゴリズムの実施形態に従って、それぞれの新規のｇＮｏｗに暫時的なフューチャーが新たに投影される。
【０１２４】
各ｇＮｏｗと生成された各セグメントについて：
１．ＣＳと、そのパートの構成された小節の長さとを使用して、次のダウンビートの時点ｔｐｎｅを決定する。
２．ｔｐｎｅ付近のオンセット和音音符ａｎｎｅに時点ｔｐａを決定する。
３．ａｎｎｅに音高ｔｋａを決定する。
４．ｇＮｏｗ後かつｔｐａ前にオンセットする和音音符の数ａａを決定する。
ａ．ａａ＞０の場合
ｉ．次の和音音符に時点ｔｐａを決定する
ｉｉ．次の和音音符にｔｐａ音高を決定する
ｂ．上記以外の場合
ｉ．ｔｐｎａ：＝ｔｐａを設定する
ｉｉ．ｔｋｎａ：＝ｔｋａを設定する
５．ｇＮｏｗの後かつｔｐｎａの前に演奏される音階音符の数ａｓを決定する
ａ．ａｓ＞０の場合
ｉ．次の和音音符に時点ｔｐｎｓを決定する
ｉｉ．次の音階音符に音高ｔｋｎｓを決定する
ｂ．上記以外の場合
ｉ．ｔｐｎｓ：＝ｔｐｎａを設定する
ｉｉ．ｔｋｎｓ：＝ｔｋｎａを設定する
６．ｇＮｏｗ後かつｔｐｎｓ前に演奏される非音階音符の数ａｉを決定する
ａ．ａｉ＞０の場合、
ｉ．次の非音階音符に時点ｔｐｎｉを決定する
ｉｉ．次の非音階音符に音高ｔｋｎｉを決定する
ｂ．上記以外の場合、
ｉ．ｔｐｎｉ：＝ｔｐｎｓを設定する
【０１２５】
おそらく、本発明は、各主旋律が同じアンサンブルを有する場合においてより理解されるだろう。全ての生成器が、各主旋律からパートを１つ取り出す。各生成器は常に演奏を続け、状態変数が変化すると、主旋律が相互にモーフィングを行う。しかし、１組の主旋律を異なるアンサンブルと共に使用することも可能である。オーケストラは常に、全ての主旋律のアンサンブルの組み合わせによって構成される。生成器を「ｔａｃｅｔ」の状態に設定するメカニズムが必要である。即ち、生成器をスイッチオフすることが可能でなければならない。これは、ＣＰ１とＣＰ２のそれぞれについて、閾値ｔｓＣＰ１とｔｓＣＰ２によって実行される。これらは、主旋律レベル又はグローバルレベルで構成することができる。
【０１２６】
異なるアンサンブルを備えた２つの主旋律Ｔ１（ＣＳ，Ｍｅｌ，ＣＰ１，Ｂａ）とＴ２（ＣＳ，Ｍｅｌ，ＣＰ２，Ｂａ）の例を考える。この場合、ＣＳ、Ｍｅｌ、ＣＰ１、ＣＰ２、及びＢａで構成されたオーケストラが作成される。各主旋律に１つの状態変数Ｓ１、Ｓ２がそれぞれ割り当てられる。オーケストラがコーナーｈ１＝（ｍａｘＳ１，ｍｉｎＳ２）において開始されると、Ｔ１のアンサンブルによってＴ１が演奏される。状態がｈ２＝（ｍｉｎＳ１，ｍａｘＳ２）へ移動されると、ＣＰ１は、Ｓ１＜ｔｓＣＰ１である際に演奏を停止する。ＣＰ２は、ｓ２＞ｔｓＣＰ２である際に演奏を開始する。このメカニズムは、生成された音楽のどの部分において生成器が演奏を停止するかを決定するために、主旋律レベルでの音楽条件で補完された。これらの「終了条件」は主に不協和音処理に対応する。
【０１２７】
全ての主旋律についてこのような閾値をゼロよりも高く設定し、全ての状態変数をＲ＋∪｛０｝よりも上に定義することで、原点（０，０，．．．，０）に近い状態が、オーケストラが演奏を停止することを意味する実施形態が得られる。
【０１２８】
これにより、主旋律がオーケストラのフルアンサンブルにパートを含める必要がなくなる。１以上の主旋律は、１つのシングルパートについてのみ、又は１以上のパートの特定の局面のみ、例えば音程コンテンツあるいはダイナミクスについてのマテリアルを含んでいてもよい。主旋律の構成情報内に、エクスポートされる即ち懸案の生成器によって考慮される主旋律の局面を指定することが可能である。エクスポートパート又はパートの１局面が、同じパートの別の局面、もしくは別のパートの別の局面に依存する場合には、主旋律は、これらの局面又はパートを含むか、あるいは他の主旋律内の関連情報を参照する必要がある。
【０１２９】
例えば、ある主旋律があるメロディパートのダイナミクスに影響を与えるためだけに使用される場合、そのメロディパートに音量情報を、その主旋律のｍｉｄファイル（又はそれに相当するファイル）内の唯一の音楽情報として配置することができる。主旋律の構成情報内には、そのパートの主旋律がダイナミクスだけをエクスポートし、音符はエクスポートしない旨が明記されている。しかし、主旋律は、自己のＣＳを含むか、又は別の主旋律のＣＳを参照する形でＣＳを含んでいる必要があり、ＣＳを含まない場合、その主旋律の再配置手順の実行が不可能となる。
【０１３０】
上述の、周期署名を使用して拍節特徴を扱う方法は、任意の拍節構造を記述及び利用するべく拡張することができる。例えばＡＡＢＡＡＣＣ．．．（全てのＡの長さは等しく、全てのＢの長さは等しい、等）のように異なるセクションに大文字を使用した「形式ストリング」を用いて主旋律の形式が記述される場合、また、各セクションＡ、Ｂ、Ｃ、．．．内の拍節特徴を上述した周期署名で記述できる場合には、異なる周期署名を異なるセクションと関連付けすることができるため、本発明は主旋律を任意で、例えば非対称な拍節構造で扱うことが可能である。次に、入力パートのｎｏｗに、追加フィールド表示セクションが供給される。時間位置フィールドは、ｎｏｗが現在のセクション内のどの程度深い場所に在るかを示す。式１によれば、ｔ１とｔ２の間の時間の類似性は、ＧＣＤ（ｓｃ１、ｓｃ２）でもまだ存在しており、この場合、ｓｃ１とｓｃ２は、ｔ１、ｔ２のセクションの周期署名内における最短周期であり、セクションが異なる主旋律を有する場合と非常に似ている。
【０１３１】
一実施形態では、本システムはｍｉｄｉマテリアルを生成する。現代のｍｉｄｉ制御された楽器では音色がかなり豊富であり、サンプリング技術によって特定の可能性が得られるが、例えばｍｉｄｉのフレームワーク内で人間の歌を扱うことは依然として難しい。しかし、本発明を、サウンドファイル（．ｗａｖ，．ｍｐ３等）上に録音されたフラグメントを扱えるように拡張することは可能である。また、ｍｉｄｉ形式の音楽分析を、懸案のファイルと関連付けしたり、他の入力データを分析する方法と類似の方法でコンテンツを分析する機能を本発明に設けたりすることが可能である。この情報により、サウンドファイルを生成された音楽の一部分として使用して、主に不協和音／協和音、及び調和シーケンスの処理に関連した、サウンドファイルの演奏により示される規則を順守することができる。
【０１３２】
本システムは、従来の音楽の中の音符が時間内の各位置に設定されているという事実を利用することができる。これは、従来の音楽の音符と同様に、複数の比較的小さい整数の同等物、多くの場合２（全音符、半音符、４分音符等）と３（三音符）の整数のみによって指定することができる。入力中の音楽が、我々の最も単純な音符値に対応する時間位置に対する変位を設けている場合には、状況はより複雑になる。従来の音符を伴うこのような変位は、通常は望ましくないと述べることができる。市販されているシーケンサプログラムは、長期にわたり、これを、マイクロ変位した時間位置を内在する情報内に残させながら、一方で、定量化された、即ちユーザが構成した次に高い音符値へと変位された音符によって音楽を表示する方法で解決してきた。これと似た方法で、本発明は、一実施形態に従い、ユーザが構成した定量化を用いてマイクロ変位させた音符を扱うことができるため、あたかも、定量化された位置と変位を、例えば補間によって個別に扱うことができるように、オンセット時間を扱うことができる。
【０１３３】
本システムはさらに、共通のｓｃａｌｅＣｈｏｒｄｓを含まない異なるＣＳ間にも優れた変位を見つけることができる。一実施形態では、これを、２つの音階和音Ａ、Ｂの間における類似性の尺度を用い、また、半音として表されるＡとＢそれぞれにおける各和音と各音階内における、共通音高の数と、音高間の平均距離とに基づいて実行することができる。あるパートが、実時間位置又は類似時間位置上で最後に演奏されたｓｃａｌｅＣｈｏｒｄを見つけられない場合には、パートはそのウエイトを、類似する時間位置上のｓｃａｌｅＣｈｏｒｄｓのウエイト上に、１つ前のものと最も似ているｐａｒｔＮｏｗとして置くことができる。この類似性は、構成によって異なるが、入力パートの元のキー内（最も類似性が高い）で、又は生成された音楽の現在のキー内で決定することができる。このようにしてユーザは、生成された調和シーケンスを主旋律の調和シーケンスへ移動させる主旋律の権利を構成することができる。
【０１３４】
図４は、架空の例証された主旋律Ｔ１、Ｔ２からの２つのｓｃａｌｅＣｈｏｒｄシーケンス入力パートＣＳ１、ＣＳ２と、生成されたｓｃａｌｅＣｈｏｒｄシーケンスの時間軸とを概略的に示す。これらはＣＳ生成器によって扱われる。上述の説明によれば、ＣＳ１は、第１ステップにおいて、制限０，８，１６，２０，２４（＝０（ｍｏｄ２４））を設けた４つのセグメントを含んでいる。これらは、Ｄメジャースケールを含んでいる（１６，２０）を除く全てのセグメント内に、特に、現在の和音（それぞれＣ，Ｇ，Ｄ，Ｇメジャー三和音）と現在の音階（Ｇメジャースケール）を示す次元を含む。ＣＳ１は、全ての計算の周期署名｛２４，８｝で構成される。ＣＳ２は、ステップ１に関連した形で、制限０、８，１６，２４，３２（＝０（ｍｏｄ３２））が設けられた４つのセグメントを含んでいる。ＣＳ２は、全ての計算の周期署名｛３２、１６｝で構成される。ＣＳ生成器のステップ周期は、この２つの入力データパートを含む場合にのみ、最短周期｛８、１６｝＝８の最大共通ディバイダとなる。式（３）を用いることで、ＣＳ生成器について、組Ｂ＝｛０、４｝と、組Ｋ内の開始点＝｛０，４｝８＝｛０，４，８，１２，１６，．．．｝が得られる。次に、ＣＳ１，ＣＳ２の両方内のセグメントが、Ｋにより定義された全ての時点において分割される。ＣＳ１とＣＳ２は、４の長さを持ったそれぞれ６個及び８個のセグメントを構成する。図面底部にて、ＣＳ生成器の臨界時点が時軸３０上にマークされている。
【０１３５】
対応する方法では、図５によるＴ１：Ｍｅｌ１とＴ２：Ｍｅｌ２へのメロディ入力データパートが、周期署名｛２４，８，４｝と｛３２，１６｝の各々によって処理される。Ｍｅｌ生成器に、ステップ周期ｇｃｄ（８，４，１６）＝４が与えられる。８は、図４で計算された上位生成器（ＣＳ）のステップ周期であり、また、上述したように、下位生成器のステップ周期の計算において考慮される。組Ｂ＝｛０，２，３｝において、Ｂ内の数字３は１９（ｍｏｄ４）から導出され、これ以外のオンセット時間で０又は２が得られ、例えば４（ｍｏｄ４）＝０及び１０（ｍｏｄ４）＝２となる。Ｍｅｌ生成器のＢを形成する場合には上位生成器（ＣＳ）のＢが考慮されるが、ここでは、これ以上の要素は追加されない。図面の底部において、Ｍｅｌ生成器の組Ｋ＝｛０，２，３｝４＝｛０，２，３，４，６，７，８，１０，１１，．．．｝が時軸４０に沿ってマークされている。
【０１３６】
図６は、入力主旋律Ｔ１がどのような周期であるかを示す。これは上述したＴ２、及び本発明で使用されている多くの主旋律にも該当する。本発明の一実施形態ではさらに、生成された音楽の導入及び終了部分に非周期的主旋律を使用することもできる。
【０１３７】
図７では、生成器が、本発明の一実施形態に従うテール類似性による比較によって、ルート６２を有するサフィックスツリー６０から次に生成されたデータの計算の関連値を発見する様子を示す。このツリーには、入力データパートのいくつかのセグメント内の情報のパートが収容されている。以下の表は、パートからの後続したセグメントを示す。
【表１】
2008506150.tif 000003
【０１３８】
この表はセグメントｍ−１、ｍ、ｍ＋１を示しており、これらの各々は、３つの異なる次元１，２，３を表す値ｖ（ａ，ｂ）を含んでいる。図中に実線で示したノードは、セグメントｉ、Ｖ（２，ｉ）内の次元２の値がｖ（１，ｉ）、ｖ（３，ｉ−１）及びｖ（１，ｉ−１）に依存する様子を示している。
【０１３９】
この場合の比較ストリングは（１）（３，１）となる。この図は垂直点線で分割されている。左側はヒストリー、右側はフューチャーである。これは、フューチャー側の値がヒストリー側の値に依存することを意味する。図中のフューチャー側に破線で示したノードは、フューチャー側にいくつかの次元が導入されればサブツリーに成長できることを示している。このサブツリーは、これらの次元の共変動に関する情報を収容するように作成することができる。
【０１４０】
好ましくは、値の結合はサフィックスツリー６０の形式で行えるが、従来の周知の結合を用いることもできる。
【０１４１】
この例では、生成器は、レベル／深度３にて値Ｖ（２，ｍ）を見つける。これは、次に生成されたデータの計算に使用する入力データとして適するように、深度の所定基準に従った十分なテール類似性を有することを意味する。計算では、現在の値ｖ（２，ｍ）を生じさせる周波数と、入力データパートの状態の現在のウエイトとに対する考慮も行う。
【０１４２】
図８は、サフィックスツリーが、入力データパートから送られた、本発明の一実施形態によるセグメントｍ−１内の次元の値からの１つのセグメント内における異なる次元の値への依存性に関する情報を収容している様子を概略的に示す。入力データパートは、メロディ入力データパートであり、また、メロディを生成するためにマテリアル用のメロディ生成器として使用されるいくつかのパートのうちの１つであってよい。入力データパートの各セグメントは１組の次元を設けており、この次元の各々は、以下のいくつかのセグメントとその次元値にかけての表に従った、そのセグメント内のパートの特性を説明する値を設けている。
【表２】
2008506150.tif 000004
【０１４３】
この表は３つのツリーセグメントのみ含むが、入力データパートはかなり多くのツリーセグメントを含むことができる。図８中のツリーを使用して、新たに生成されたセグメント内の音高の計算に用いる入力データを選択することができる。
【０１４４】
図８中のツリーは符号７０で示したルートを設けており、また、点線の左側にヒストリーを、右側にフューチャーを設けている。
【０１４５】
現在の計算のための比較ストリングは０（ＯｆｆＣＣ，ＯｎＣＣ，Ｏｆｆ，Ｄｉｒ）である。ストリングの開始時に設けられた空タプルは、ｍ内のどの値も、ｍ内の音高を決定するために使用されないと解釈される。比較ストリングに従った次元値は、ヒストリーストリングと呼ばれる、点線の左側に見られる。
【０１４６】
ヒストリーストリング内の各ノードに「フューチャーブランチ」が構成され、このフューチャーブランチは、それぞれの深度のヒストリーストリングの新規音高の依存性に関する情報を収容する。これらのフューチャーブランチは、図中の点線の右側に見られる。内部ノード中にいくつかの異なる値が存在する場合には、フューチャーブランチは、図７で述べた説明に従ってサブツリーを形成する。
【０１４７】
比較ストリングの次元は以下のとおりである：
・ＯｆｆＣＣ：次のセグメント中の音高の協和音値
・ＯｎＣＣ：このセグメント中の音高の協和音値
・Ｏｆｆ：このセグメントのための時間（＝次のセグメントの開始時間に等しい）
・Ｄｉｒ：メロディ的な動作の方向。このセグメント内に音高を与えている。
【０１４８】
フューチャーブランチの次元は以下のとおりである：
・ＲｅｌＰｉｔｃｈ：前のストライク内の音高に関連したセグメントの音高。上げ又は下げの半音符で示される。
・ＯｎＣＣ：このセグメント内の音高の協和音値。ＯｎＣＣが含まれると、生成された調和シーケンスに対して少なくともこの値に選択された音高をディゾルブすることが可能になる。
・ＰｉｔｃｈＲｅｇ：新規音高が終了するレジスタを表す。これを使用して、異なる代替物を、生成時に終了するレジスタまでの距離に反比例にて計量することができる。さらなるレジスタ次元については用語集を参照。
【０１４９】
図８に関連して説明したように、ツリーは、全ての入力データパートのセグメント用の次元値をヒストリーストリング及びフューチャーブランチ内に作成するために構成される。
【０１５０】
メロディ生成器は、その入力データパートに基づいてユニゾンメロディを生成する。上述した、演奏中の生成器のアルゴリズムに従ったメロディ生成器が新規の音符をストライクしようと決定したと仮定する。比較ストリングに従ったテール類似性が存在する場合には、比較ストリングと、先に決定された最小限の深度とが、次に生成されるセグメントｇ内の新規音高を計算するための入力を、この深度においてフューチャーブランチからピックアップできると定義する。先に決定された深度が４であり、最新の生成器セグメントｇ−１の値がｍ−１内の値に一致する場合、即ち次のとおりである場合、
ＯｆｆＣＣ＿ｇ−１＝ＯｆｆＣＣ＿ｍ−１        （ａ）
ＯｎＣＣ＿ｇ−１＝ＯｆｆＣＣ＿ｍ−１          （ｂ）
Ｏｆｆ＿ｇ−１＝Ｏｆｆ＿ｍ−１                （ｃ）
Ｄｉｒ＿ｇ−１＝Ｄｉｒ＿ｍ−１                （ｄ）
計算のための入力データを、図８中の右下にあるフューチャーブランチに従って、生成器によって送信される代替物のリストに書き込むことができる（以下を参照）。最小限の深度が３であり、等式（ａ）〜（ｃ）が有効であれば、図中下の右側等にあるフューチャーブランチからデータを選択することができる。時点Ｏｆｆが、現在の入力データのｐＮｏｗと比較され、また、最後に計算に使用された周期の値を使用して式（１）が有効である場合には、類似性（ｃ）が有効である。
【０１５１】
一実施形態のモデルには、メロディの音程に関する区別ステップ／リープが存在する。メロディデータパート内のステップ／リープのパターンは、生成されたメロディと関係するだろう。ＯｎＣＣとステップ／リープとの間に矛盾がある場合、例えば、現在の協和音値がリープなしでは到達できない場合、アルゴリズムはこれらの矛盾をディゾルブする必要がある。一実施形態によれば、この場合、ユーザは、自分の好みに従ってシステムを構成することができる。
【０１５２】
異なる次元をフューチャーブランチ内に導入する順序は、連続した値の組を有し、リーフ内に配置されなければならないＰｉｔｃｈＲｅｇ以外、関連性がない。
【０１５３】
アピアランスの周波数も、フューチャーブランチのリーフ内に書き込まれる。異なる代替物を計量する場合には値が収集され、このＲｅｌＰｉｔｃｈのための値がリスト内にそのウエイトと共に書き込まれ、この場合、これは、アピアランスの周波数及び状態のウエイトの積であり、上述したようにレジスタに関連して調整することが可能である。
【０１５４】
図９では、生成器が、図８で説明した手順に従って、次の音楽データ計算のための入力データを収集するために、代替物のリストをその入力データパートＩＰ１、ＩＰ２、ＩＰ３へ送信する様子を示している。入力データパートは、そのウエイトがゼロよりも大きく、要求されたテール類似性が近くにある場合に、上記に従ってその入力データをリスト内に書き込む。この要求されたテール類似性がない場合にどうなるかは計算によって異なる。現在の計算で、各入力データパートがデータに寄与することが重要である場合には、各入力データパートにリストが送信され、各入力データパートについて要求が「局所的に」、特定のレベルにまで低下され、また、この要求が満たされると、入力データパートからデータが取り出される。この対策は平等主義と呼ばれる。
【０１５５】
しかし、現在の計算では、可能な限り高いテール類似性を示す代替物が好ましく、ターン毎に、全ての入力データパートにリストが送信され、各ターンについての要求があるレベルにまで、又は１以上の入力データパートがリストに書き込まれるまで低下される。この対策は「先着順」と呼ばれる。
【０１５６】
ある決定に選択された対策とは別に、テール類似性への要求を２つの方法で低下することができる。ほぼ全てのテール類似性の計算は、現在の入力データパート内に比較された値が存在し、これによりデータが選択される時点を考慮する。示されたテール類似性への要求は、テール類似性の深度を低減することにより低下されるか、又は、この要求を、より短い周期での時間類似性を探す、即ち、現在の入力データパートのｐＮｏｗとの一様性を次第に失ってゆく時点においてテール類似性を探すことによって低下される。
【０１５７】
特定の計算ではさらに、入力データパートをリストに書き込めるようにするために、別のある要求を満たす必要がある。例えば、現在の入力データパートの周期署名と、最高のダイナミックウエイトを有する入力データパートとの間に、特定の一様性が要求される場合もある。
【０１５８】
いくつかの値、例えば、最高及び最低の演奏される音符と、特定の音階関数の最高及び最低の演奏される音符は、演奏されるパート全体に対して広域的である。演奏する生成器は、例えば入力パートに対応する値及びその状態変数にわたる直線補間によって、これらの値に対処する。最高及び最低の、演奏される音符は、生成された音楽中の音高のハードバウンダリによって略構成されている。例えば不協和音の処理により、これらのバウンダリを常に厳重に追従することができるが、生成器内にこの限度を超える値が見つかると、十分な入力パートが現在のｐＮｏｗ（ｍｏｄ：その最短周期）にてストライクを有する場合、この時点に対してストライクを強制することができ、これによりそのパラメータを限度内に調整する。一実施形態では、「ＮｕｍｂｅｒＯｆＳｏｕｎｄｉｎｇＮｏｔｅｓ」の値を各セグメントの開始時点にて更新でき、また、この値が限度を大幅に超えている場合には、ストライクを類似の方法で強制することができる。
【０１５９】
本発明の一実施形態では、「ビート位置フィルタ」を使用することで、同じビート内で複数の異なるリズムが衝突することを防止している。この衝突の例として、同一の４分音符内で２番目の１６分音符と３番目の１８分音符の三音符の連続的なオンセットを挙げることができるが、このようなことは、そのリズムが入力内に発生しなかった場合でも、生成された音楽内で起こり得る。即ち、入力パートは、パートのｐＮｏｗの観点から、（何らかの周期上で）先に生成されたストライクのビート位置にストライクが存在する場合のみストライクを是認する。これにより、最後に生成されたストライクのビート位置の値が入力パート内に受け入れられ、ｔ（ｍｏｄビート長）によって与えられる。この場合ビート長は構成可能な値である。このフィルタは、ｐＮｏｗが新規ビートに到達した場合には、個別の入力パートによって保留されることができる。
【０１６０】
図１０は、システムの初期化におけるそれぞれの生成器の様子を示しており、システムは、入力データ主旋律１，２，３の各タイプのパートからパートを取り出す。
【０１６１】
ここで説明している本システムのさらに別の態様は、ＣｈｏｒｄＰｌａｙｅｒ（ＣＰ）、和音演奏パートタイプの使用である。ＣＰは、一度に２つ以上の演奏される音符を演奏することができるパートタイプである。基本的に、ＣＰはＭｅｌの拡張である。このモデルは、不協和音の処理とジェスチャー的な特徴に集中する。従って、協和音カテゴリの役割は重要である。先述したＭｅｌでは、ある和音音符が特定の音楽的モーメントにおいて演奏されるのであれば、別の和音音符も演奏されるであろうという概念に従い、全ての和音音符が同様に処理される。ＣＰではより複雑である。異なるマルチパート調和入力パート間をモーフィングできるようにするために、異なる関数及び意味の音符が、調和シーケンスに関連してどのように行動及び発展するかについて説明する。例えば、異なる入力パートが、共通のｓｃａｌｅＣｈｏｒｄを含んでいない場合でも、生成されたパートに影響を与えることができるように、音符を複数のレジスタにわたって（「キーボード上に」）分布させる様子を説明する抽出が必要である。さらに、同時に演奏され、又はストライクされる音符の音高クラスの組が、異なるｓｃａｌｅＣｈｏｒｄを有する入力パートにかかる調和シーケンスにわたってどのように発展するかについての共通の特徴を理解することが有利である。このために、音階関数（ＳｃＦｕｎｃ）の使用が可能である。
【０１６２】
音階関数の役割は、特定のｓｃａｌｅＣｈｏｒｄ、即ちそのｓｃａｌｅＣｈｏｒｄのその音高クラスの関数が存在する場合に、特定の音高クラスの組によって演奏されることである。我々は、全てのｓｃａｌｅＣｈｏｒｄと全ての音高クラスにわたり定義された以下のマッピングを作成した：
ｓｃａｌｅＣｈｏｒｄ×ＰｉｔｃｈＣｌａｓｓ→ＳｃＦｕｎｃ
音階関数の抽出は、自然倍音スペクトルから抽出した音階と和音を見る方法として理解できる。演奏される音質の周波数がｆである場合、倍音は周波数２ｆ，３ｆ，４ｆ，５ｆ，．．．を有する。より低い倍音は、音楽に使用されている音階ステップと上手く対応する。音程として表され、ｆ無しで以下が得られる：１（根音又は主音）、２（オクターブ）、３（オクターブ＋純５度）、４（ダブルオクターブ）、５（ダブルオクターブ＋メジャー３度）、６（ダブルオクターブ＋純５度）、７（ダブルオクターブ＋マイナー７度）、８（トリプルオクターブ）、９（トリプルオクターブ＋メジャー２度）等。表１で指摘しているように、最初の１６個の倍音は、特に他のマテリアルの中でも、ｓｃａｌｅＣｈｏｒｄ（メジャー三和音、ｊｏｎｉｃ音階）を生成していると見ることができる。主音からの音程が、主音より開始するオクターブに変換される。
【表３】
2008506150.tif 000005
【０１６３】
まず、音階ステップＰＲＩＭＥ、ＦＩＦＴＨ、及びＴＨＩＲＤが形成される。より高い倍音で形成された音階ステップ、即ちＭＩＮＯＲ  ＳＥＶＥＮＴＨ、ＳＥＣＯＮＤ、ＦＯＵＲＴＨ、ＳＩＸＴＨ、及びＭＡＪＯＲ  ＳＥＶＥＮＴＨでは、通常音楽に使用される倍音と音階ステップの間の音高の差がますます厄介なものになる。表中では、これを引用符で括った音符名で示している。
【０１６４】
音高を同じオクターブへ変換させて７個の音符音階を作成し、ＰＲＩＭＥ、ＳＥＣＯＮＤ、ＴＨＩＲＤ、ＦＯＵＲＴＨ、ＦＩＦＴＨ、ＳＥＶＥＮＴＨ（オクターブ）が得られる。
【０１６５】
根音ｒからの音程を有する音高クラスの音階関数ｓは２つの成分ｓ．ｖａｌｕｅとｓ．ｏｆｆｓｅｔを有する。値はｓの主関数を表す。Ｏｆｆｓｅｔはｒ−ｎであり、ここで、ｎは音階関数（ｓ．ｖａｌｕｅ，０）を有する音高クラスの音程である。ｏｆｆｓｅｔ＝０を有する音基関数は主関数と呼ばれる。
【０１６６】
次式はマッピングの原理であり、
ｓｃａｌｅＣｈｏｒｄ×ｐｉｔｃｈ−ｃｌａｓｓ→ＳｃＦｕｎｃ
任意のｓｃａｌｅＣｈｏｒｄ及び任意の音高クラスから、ここで使用している音階関数までを以下により例証する：
１．主関数の数を決定する。
２．全ての主関数を割り当てる（セクション３及び以降）。主関数は音高クラスに割り当てられるが、まず、より高い値の協和音カテゴリに、例えば最初に和音音符に、２番目に音階音符に、３番目に非音階音符に割り当てられる。全ての主関数が、先述の説明による倍音スペクトルによって指示されたものに可能な限り近い音程に割り当てられる。
３．“ｐｒｉｍｅ”（ｐｒｉｍｅ，０）を可能な限り根音の付近に割り当てる。
４．“ｆｉｆｔｈ”（ｆｉｆｔｈ，０）を７付近に割り当て、オクターブを割る。
５．“ｔｈｉｒｄ”（ｔｈｉｒｄ，０）を４付近の、ｐｒｉｍｅとｆｉｆｔｈの間に割り当てる。
６．“ｓｅｖｅｎｔｈ”（ｓｅｖｅｎｔｈ，０）を１０付近の、ｆｉｆｔｈとオクターブの間に割り当てる。
７．さらなる主関数を音高クラスの、既に割り当てられた主関数間に割り当て、これを所望の数の主関数に達するまで続ける。４つの主関数を割り当てた後に、ｐｒｉｍとｔｈｉｒｄの間に「ｓｅｃｏｎｄ」を、ｆｉｆｔｈとｓｅｖｅｎｔｈの間に「ｓｉｘｔｈ」を割り当てることができる。
【０１６７】
主関数の割り当てが終わると、その他の音高クラスがその音階関数を得る。この詳細は、プレファレンスと呼ばれる以下の表によって管理される。
【表４】
2008506150.tif 000006
【０１６８】
この場合の音階関数のマッピングは７個の主関数、ｐｒｉｍｅ、ｓｅｃｏｎｄ、ｔｈｉｒｄ、ｆｏｕｒｔｈ、ｆｉｆｔｈ、ｓｉｘｔｈ、及びｓｅｖｅｎｔｈを使用する。プレファレンスは、各々の主関数に最も望まれる音程を半音にて記述している。ｆｉｆｔｈに最も望まれる音程は７半音であり、次は６、その次は８である。ｓｅｖｅｎｔｈに最も望まれる音程は１０であり、次は１１、その次は９、その他と続く。これは、ｓｃａｌｅＣｈｏｒｄの和音が純５度を（７半音）と減５度（６半音）を含む場合、純５度が音階関数（ｆｉｆｔｈ，０）と減音程（ｆｉｆｔｈ−１）を得る。
【０１６９】
本実施における音階関数の割り当て全般の手順は以下のとおりである：
Ｆｉｒｓｔが全ての主関数に割り当てられる（ｏｆｆｓｅｔ＝０）。
Ｆｉｒｓｔ  ｐｒｉｍｅが割り当てられる。
根音０半音（純主音）からの音程がｓｃａｌｅＣｈｏｒｄの和音にある場合、これは音階関数（ｐｒｉｍｅ，０）を得る。
又は、音程１が和音にある場合は、音階関数（ｐｒｉｍｅ，０）が割り当てられる。
又は、音程０がｓｃａｌｅＣｈｏｒｄの音階にある場合は、（ｐｒｉｍｅ，０）を得る。
又は、音程１が音階にある場合は、（ｐｒｉｍｅ，０）を得る。
又は、音程０が（ｐｒｉｍｅ，０）を得る。
【０１７０】
その後、ｆｉｆｔｈが割り当てられる。
音程７半音（純５度）がｓｃａｌｅＣｈｏｒｄの和音にある場合、これに音階関数（ｆｉｆｔｈ，０）が割り当てられる。
又は、音程６（減５度）が和音にある場合は（ｆｉｆｔｈ，０）を得る。
又は、音程８がｓｃａｌｅＣｈｏｒｄの音階にある場合は（ｆｉｆｔｈ，０）を得る。
又は、音程７がｓｃａｌｅＣｈｏｒｄの音階にある場合は（ｆｉｆｔｈ，０）を得る。
又は、音程６が音階にある場合は（ｆｉｆｔｈ，０）を得る。
又は、音程８が音階にある場合は（ｆｉｆｔｈ，０）を得る。
又は、音程７にある音高クラスに（ｆｉｆｔｈ，０）が割り当てられる。
【０１７１】
この割り当てが終わると、ｔｈｉｒｄ、ｓｅｖｅｎｔｈ、ｓｅｃｏｎｄ、ｆｏｕｒｔｈ、及びｓｉｘｔｈの主関数が、プレファレンスに示された音程に同じ方法で割り当てられる。音階主関数がその音高クラスに割り当てられている場合には、これ以外の音高クラスに、ｏｆｆｓｅｔ≠０によって音階関数が割り当てられる。この割り当ては、ｓｃａｌｅＣｈｏｒｄの根音からの半音である音程０，１，２，．．．から始まり、音高クラス毎に実行される。この割り当ては、音高クラスが音階関数を受け取っていない場合にのみ実行される。ｒを、ｓｃａｌｅＣｈｏｒｄの根音と音階関数を割り当てられる音高クラスｐとの間の音程と仮定する。プレファレンスが、ｒが見付かるまで、上から下へ、左から右へ列毎に読み出される。ｐの音階関数の値はｍであり、ここでｍは、ｒが見付かったプレファレンス内の行に記述されている主関数であり；ｐの音階関数のｏｆｆｓｅｔはｒ−ｎであり、ここでｎは、ｓｃａｌｅＣｈｏｒｄの根音と音階関数（ｍ，０）を有する音高クラスとの間の音程である。
【０１７２】
西洋音楽の理論では７和音音階がドミナントであるが、音階関数の援助を得ることで、我々はこれ以上又はこれ以下の数のステップで音階を容易にモデリングすることができる。次のｓｃａｌｅＣｈｏｒｄ
｛Ｃ，｛Ｃ，Ｄ＃，Ｆ＃，Ａ｝，｛Ｃ，Ｄ，Ｄ＃，Ｆ，Ｆ＃，Ｇ＃，Ａ，Ｈ｝｝
は、次のように書かれる従来の音高クラス（Ｃ＝０、Ｃ＃＝１等）の記述を含んでおり、
｛０，｛０，３，６，９｝，｛０，２，３，５，６，８，９，１１｝｝
記述されたアルゴリズムとプレファレンスを用いて、音高クラスを音階関数上に、以下のとおりマッピングする。
【表５】
2008506150.tif 000007
【０１７３】
協和音値の表記は、ｉｎ＿ｔｒｉａｄではＴ、ｉｎ＿ｃｈｏｒｄではＣ、ｉｎ＿ｓｃａｌｅではＳ、ｎｏｎ＿ｓｃａｌｅではＮである。
【０１７４】
ｓｃａｌｅＣｈｏｒｄの音階は次の音階関数を得る：
（ＰＲＩＭＥ，Ｏ）、（ＳＥＣＯＮＤ，０）、（ＴＨＩＲＤ，０）、（ＦＯＵＲＴＨ，０）（ＦＩＦＴＨ，０）、（ＳＩＸＴＨ，０）、（ＳＥＶＥＮＴＨ，０）、（ＳＥＶＥＮＴＨ，２）。
【０１７５】
和音は以下のようになる：
（ＰＲＩＭＥ，０）、（ＴＨＩＲＤ，０）、（ＦＩＦＴＨ，０）、（ＳＥＶＥＮＴＨ，０）。
【０１７６】
全ての共通の三和音は、メジャーであってもマイナーであっても、増であっても減であっても、全ての７和音と同様、音階関数（（ＰＲＩＭＥ，０），（ＴＨＩＲＤ，０），（ＦＩＦＴＨ，０））と同じに見える。そのため、従来の調和構造を有する音楽では、この抽出を多様なｓｃａｌｅＣｈｏｒｄにわたって使用でき、これにより、ＣＰ入力パートは、ｓｃａｌｅＣｈｏｒｄを共有している場合であっても、生成されたパートに影響を与えられるようになる。演奏された和音内のそれぞれの音階関数のレジスタ値、又は１つのパート全体内における最高及び最低の音階関数の出現を記録することができる。さらに、これらの値を使用して、ＣＰ生成器が異なる音階関数の音符をキーボードのレジスタにかけて分布させる方法を管理することができるが、これは、例えば、主旋律のダイナミックウエイトが時間と共に変化するに従い、これらの境界値を直線的にマッピングし、限度を超えた音符については確率をスケールダウンすることによって行うことができる。
【０１７７】
演奏及びストライクされる音高クラスの組の説明は、調和構造がマルチパートハーモニーの自動的な理解の基礎を形成できるということから導き出される。この組に多数の例を使用できるが、この目的でもやはり音階関数が適任である。
【０１７８】
ＣＰのモデル内には演奏中の３タイプのｓｃａｌｅ−ｆｕｎｃｔｉｏｎ  ｓｅｔが存在する。ＣＰパートの各セグメントＸ内には以下が含まれる。
１．ＳｏｎＳｅｔ：演奏中のＸ．ｏｓｔの全ての音階関数の組
２．ＳｔｒｕｃｋＳｅｔ：Ｘ．ｏｓｔにて設定された音階関数の組
３．ＰｒＳｔｒＳｏｎＳｅｔ：Ｘ内のｓｃａｌｅＣｈｏｒｄによって解釈されたとおりにＸの前の最終ストライクにて演奏されている音階関数の組。
【０１７９】
ＰｒＳｔｒＳｏｎＳｅｔとＳｏｎＳｅｔは、演奏される音符の組がＣＳの調和構造にかけて発展する様子を表す。ＳｔｒｕｃｋＳｅｔは、どの音階関数を共にオンセットにできるかを示す。これら３タイプの組のうちの１組が、１つのパートの作業を監視するか、多数の組の作業をまとめて監視することができる。
【０１８０】
作曲者が通常の入力パートを超えて自分の意思を明確に示すことができるようにするために、主旋律のソースに相補的パート（ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｐａｒｔ）又はｃｏｍｐパートを供給することができる。通常の入力パートとは、主旋律が自己のキーにて状態コーナーに集束した際に奏でられる演奏される入力パートである。１以上のｃｏｍｐパートを通常の（主要）入力パートに結合して、さらなる音楽マテリアルを記述することができる。ｃｏｍｐパート内の音符は、数例を除き、その主要パートの一部として分析される。セグメントの濃度、演奏される音符の数は主要パートによってのみ与えられる。セグメントＸ内の音階関数ｓは以下の比率である。
（Ｘ内のｓの演奏される音符の数）／（Ｘ．濃度）
【０１８１】
音階関数の比率、及び最高と最低の間のレジスタ値も、主要パートによる付与が可能である。主要パート内だけでなくｃｏｍｐ内の音階関数は、協和音と音階関数に関連してこれと類似している主要パート内の音符から付与された値である。
【０１８２】
図１１に、この３タイプの組を示す。
【０１８３】
ＣＰパート１はＭａｉｎ１とＣｏｍｐ１によって定義され、また、セグメントＡ、．．．、Ｅで構成されている。それぞれのセグメントにＳｏｎＳｅｔ、ＳｔｒｕｃｋＳｅｔ、ＰｒＳｔｒＳｏｎＳｅｔを構成する際にＭａｉｎ１とＣｏｍｐ１の両方を考慮した場合、以下の表が得られる（読み易くするために音高クラスの組を記載している）：
【表６】
2008506150.tif 000008
【０１８４】
Ｂ、Ｃ及びＤのＰｒＳｔｒＳｏｎＳｅｔは、全て同じＧ７ミクソリディア旋法ｓｃａｌｅＣｈｏｒｄで演奏されるため、１つ前のセグメントのＳｏｎＳｅｔと同一である。Ｅ．ＰｒＳｔｒＳｏｎＳｅｔの値は、セグメントＥのＣメジャートニックにより解釈された通りの、セグメントＤの演奏される音高クラスの音階関数の組である。
【０１８５】
３タイプの組は、ＣＰパートの生成に以下の方法で使用することができる。新規に生成された１番目以降のセグメントの各々について、そのＰｒＳｔｒＳｏｎＳｅｔが、既に生成されたセグメントのデータ及びｓｃａｌｅＣｈｏｒｄから更新される。以下の各入力パート内の関数Ｆ（“ｐｒＳｔｒ”）：
Ｆ：Ｘ．ＰｒＳｔｒＳｏｎＳｅｔ→｛ｓ｜ｓはＸ．ＳｏｎＳｅｔ内の使用可能な音階関数｝
は、そのセグメントＰｒＳｔｒＳｏｎＳｅｔ及びＳｏｎＳｅｔの各々に関する情報により、「セグメントＸがこのＰｒＳｔｒＳｏｎＳｅｔを有すると仮定した場合、Ｘ．ＳｏｎＳｅｔ内に見つかるのはどの音階関数であるか？」と応答することができる。
【０１８６】
各入力パート内には別の関数Ｇ（“ＩｎｓｃａｌｅＣｈｏｒｄ”）である
Ｇ：ｓｃａｌｅＣｈｏｒｄ→｛ｓ｜ｓは現在のｓｃａｌｅＣｈｏｒｄと共に演奏されることが可能な音階関数｝
は、ｓ「ｓｃａｌｅＣｈｏｒｄＹを仮定した場合、Ｙと共に演奏されることができるのはどのｓｃａｌｅＣｈｏｒｄであるか？」と応答することができる。
【０１８７】
各入力パート内の第３関数Ｈ（“Ｒａｔｅ”）である
Ｈ：｛Ｍ｜Ｍ⊆Ｘ．ＳｏｎＳｅｔ｝×ｔ→｛（Ｓ，ｒａｔｅ）｜ｓ∈Ｘ．ＳｏｎＳｅｔ，ｒａｔｅ∈Ｒ｝
は、「時間ｔ（あるいは、式１に従ったある時点）においてＭ⊆Ｘ．ＳｏｎＳｅｔであると仮定した場合、Ｘ．ＳｏｎＳｅｔはどのような様相を呈し、また、その音階関数の値は何になるか？」との質問に応答することができる。
【０１８８】
各入力パート内の第４関数Ｉ（“Ｓｔｒｕｃｋ”）である
Ｉ：｛Ｎ｜Ｎ⊆Ｘ．ＳｔｒｕｃｋＳｅｔ｝→｛Ｘ．ＳｔｒｕｃｋＳｅｔ｝
は、「Ｎ⊆Ｘ．ＳｔｒｕｃｋＳｅｔと仮定した場合、Ｘの開始地点でオンセットにできるのはどの音階関数であるか？」との質問に応答する。
【０１８９】
セグメントＸ内で演奏されるべく選択された全ての音符、即ちＸ．ＳｏｎＳｅｔ関数に新たに追加された全ての音符について、関数Ｈは再び使用可能なＸ．ＳｏｎＳｅｔのメンバー及びその値を推定する必要があり；Ｘ．ｏｓｔにてオンセットにされるべく選択された全ての音符、即ち、Ｘ．ＳｔｒｕｃｋＳｅｔに新たに追加された全ての音符について、関数Ｉは再びＸ．ＳｔｒｕｃｋＳｅｔの使用可能なメンバーを推定する必要がある。
【０１９０】
各入力パート内の第５関数Ｊ（“Ｖｏｉｃｉｎｇ”）は、使用可能な候補の音高Ｐの全てについて、現在生成中のパートのコンテキスト内へのｐの適合度合いを示す適格ウエイトｗを戻す。
Ｊ：生成されたパート×入力パート×Ｆ×Ｇ×Ｈ×Ｉ×｛音高ｐ｝×時間→Ｒ
【０１９１】
関数Ｊは、関数Ｆ、Ｇ、Ｈ及びＩと、ボイスリーディングに関する情報、入力パートから導出された不協和音の処理に関する情報、また特に、１つのセグメント内の音符が先行のセグメントからどのように成長したかに関する情報とを使用する、先述したパート１スコア１では、セグメントＥ内の音符Ｃ２が、セグメントＤ内のＨ１から、階段状動作にて半音上がっており、また、セグメントＤ内のＤ２がセグメントＣ内のＣ＃２から階段状動作にて半音上がっている様子が見られる。
【０１９２】
さらに関数Ｊは、このような動作と、リ―プによる移動とに関与している音符に協和音カテゴリを考慮することで、不協和音の処理の特徴を保持することができる。
【０１９３】
関数Ｊは、さらに、パート全体の最高音符と最低音符内への配置から導出された関与する音符の、あるいはセグメントの演奏されている音符のレジスタ値を考慮することができる。Ｊはさらに、使用可能な候補音高間の音階関数における類似性と、音符がセグメント内に制限されるか否かとを考慮できる。
【０１９４】
マルチパート調和の生成は、例えばボイスリーディングと、同時に演奏される音階関数の濃度との間の対立、あるいは平行５度とオクターブの回避を解決する必要がある。
【０１９５】
ここで述べている、入力データと生成されたパート内で発生するパターンとの間の類似性の局面の全ては、関数Ｊによって戻されたウエイト内部で、音符の的確性の多様な局面が同時に考慮され、最も適格な音符が選択される方法で測定することができる。
【０１９６】
このｓｃａｌｅＣｈｏｒｄのモデル、音階関数、及び音階関数の組を仮定すると、セグメントに音符を選択するためのＣＰアルゴリズムの主要パートを以下のとおり示すことができる。
１．セグメント濃度を推定する。
２．一方で演奏されたものに、他方で現在のｓｃａｌｅＣｈｏｒｄに付与された使用可能な音高クラスを推定する。
３．ボイスリーディング、不協和音の処理、レジスタ配置等を考慮して音符を選択する。
【０１９７】
生成されたＣＰパートのセグメントＸについて演奏される音符の選択に関するより詳細な説明を以下に述べる：
１．例えば入力パートとそのダイナミックウエイトにかけて直線性を補間することにより、Ｘの濃度ｎを決定する。
２．Ｘ内の現在のｓｃａｌｅＣｈｏｒｄを仮定して、１２個の音高クラスの全てについて音階関数を更新する。
３．先行のデータからＸ．ＰｒＳｔｒＳｏｎＳｅｔを更新する。
４．Ｘ．ＰｒＳｔｒＳｏｎＳｅｔと現在のｓｃａｌｅＣｈｏｒｄを仮定して、関数Ｆ及びＧにより、Ｍ＝｛Ｘ．ＳｏｎＳｅｔ内の使用可能なメンバー｝を導出する。
５．Ｘ．ＳｏｎＳｅｔ：＝φ。
６．Ｘ．ＳｔｒｕｃｋＳｅｔ：＝φ。
７．Ｘ．ＳｏｎＳｅｔの関数Ｈと、入力パートの“ｎｏｗｓ”を仮定して、関数Ｈによって、Ｘ内の使用可能な音階関数全てに値を導出する。
８．Ｘ．ＳｔｒｕｃｋＳｅｔを仮定して、関数Ｉにより、Ｎ＝｛Ｘ．ＳｔｒｕｃｋＳｅｔ内の使用可能なメンバー｝を導出する。
９．全ての音階関数の「ハンガー」を、その値、現在の濃度及びｎを仮定して導出する。
１０．関数Ｊにより、全ての使用可能な候補音高に適格ウエイトを導出する。
１１．音符ｅを選択し、ｅが演奏されている場合には、これを再度ストライクするか否かを決定する。
１２．Ｘ．ＳｏｎＳｅｔにｅの音階関数を追加し、音符ｅを再度ストライクする場合には、Ｘ．ＳｔｒｕｃｋＳｅｔに追加する。
１３．選択した音符の数＝ｎになるまで７〜１２を繰り返す。
１４．データを送信する。
【０１９８】
「９．」で述べられている「ハンガー」とは、音高クラスがその値に到達するためにセグメント内により多くの音符を必要とするという緊急な要求に応じて、全ての音高クラスに値を戻す関数である。値＞０の場合、ハンガー＞０である。ボイスリーディングと他の考慮との間のバランスが取れるよう、音高クラスのハンガーは０よりも大きく、これはハンガーがその値を超えてしまう場合でも同じである。
【０１９９】
いくつかの場合では、入力パートは、関数Ｆ、Ｈ及びＩのアーギュメントとして付与された場合には、組Ｓを認識することはできない。この場合には、Ｓの最大限のサブセットを使用することで、そのパートに自己を主張させる機会を与えることができる。
【０２００】
説明したＳｏｎＳｅｔ、ＳｔｒｕｃｋＳｅｔ及びＰｒＳｔｒＳｏｎＳｅｔの論理を使用して、２つ以上のパートによって演奏されている音符及びオンセットの音符の結合を表すことで、これらのパートによって演奏されるパートの総数を分析又は制御することができる。これにより、上述した類似性の尺度を調整することが可能となるため、ボイスリーディングと不協和音の処理のパターンの役割の重要性が多少増し、より際立ったメロディ特徴を設け、また、演奏される全ての音符の結合における音階関数値へのさらなる配慮に、さらに多少の伴奏の性質が加えられる。このような区別は、同じパート内のより高い音符とより低い音符の間にも適用できる。
【０２０１】
さらに、本システムは調和変調を、制御され、ユーザが構成できる方法で実行することができる。ｓｃａｌｅＣｈｏｒｄの音階の音高クラスの組によって、音楽のキーが識別される。時点ｔにｓｃａｌｅＣｈｏｒｄ  ｓｃを与えた場合、本発明は、ｓｃの変調を構成している別のキーに変換されたｓｃａｌｅＣｈｏｒｄを識別することができる。この場合、ｓｃａｌｅＣｈｏｒｄの音階の変換は和音ではなくセントラルである。式（１）の時点の類似性を考慮した場合には、音楽の拍節構造を破壊することなく、制御された変調を実行することができる。この一例を表ｘに示す。１曲の短いカデンザは、長さの等しい４つの小節で構成されている。拍節的には、この曲は２つの２小節周期によって構成されていると考えられる。懸案の時点が４つあり、２つの周期と式（１）を仮定した場合、０が２と類似し、１が３と類似する。
【表７】
2008506150.tif 000009
【０２０２】
生成された変調（ａ）は時点１にて生じる。Ｃ／Ｃメジャーの代わりに選択されたＧ／ＧメジャーｓｃａｌｅＣｈｏｒｄは、ＣメジャーからＧメジャーへの変調を構成する。生成された変調（ｂ）はさらに時点１においても生じる。選択されたＤ／ＧメジャーはさらにＣからＧへの変調を構成する。この場合、Ｄ／ＧメジャーｓｃａｌｅＣｈｏｒｄの元の時点は３であるため、選択されたｓｃａｌｅＣｈｏｒｄは、１つの周期の拍節シフトをさらに意味する。時点２において、生成された変調（ｃ）及び（ｄ）は、ＣからＦへ反対の方向に移動する。４つ全ての例において、変調時に選択するための２つのｓｃａｌｅＣｈｏｒｄが存在する。最適なｓｃａｌｅＣｈｏｒｄを選択するために、実現又は構成に応じて多数の配慮を行うことができる。例えば、隣接した２つのｓｃａｌｅＣｈｏｒｄの間の類似性を考慮するか（（ｄ）項のＣ／ＣメジャーとＢｂ／Ｆメジャー）、又は元の一連の主旋律のｓｃａｌｅＣｈｏｒｄと、これに代わるｓｃａｌｅＣｈｏｒｄとの間の類似性を考慮することができる（（ｄ）項のＢｂ／Ｆメジャーに対するＦ／Ｃメジャー）。
【０２０３】
変調が生じる音程を構成することができる。上述の全ての例において、上又は下への変調が１つの純５度によって実行される。許可された変調は任意の音程（半音、全音、マイナー又はメジャー３度、４度／５度、又はトリトナス）で存在することができ、及び／又は、その音程の任意数の連続した上又は下へのリープ、例えば１つ又は２つの上５度又は下５度、１つ又は２つの上半音又は下半音等として表される。さらに、これらの変調発生方法の特徴はダイナミックであってもよく、これにより、主旋律が、その状態変数が低い際にはあるタイプの変調に対して働き、状態変数が高い際には別のタイプの変調に対して働くようになる。
【０２０４】
異なる状態変数が、同じ主旋律の挙動の異なる局面に影響を与えるようにすることも可能である。
【図面の簡単な説明】
【０２０５】
【図１】音楽モーフィング装置を概略的に示す。
【図２】主旋律（Ｔ）の数（ｎ）がダイナミックウエイト／状態変数（Ｓ）と等しい場合の音楽モーフィング装置を概略的に示す。
【図３】音楽を生成する際に実行するステップを示すフローチャートである。
【図４】２つの入力データパート、より詳細には和音パートＣＳ１と音階シーケンスパートＣＳ２と、生成される和音及び音階シーケンスパートの時軸を概略的に示す。
【図５】２つの入力データパート、より詳細には２つのメロディパートＭｅｌ１、Ｍｅｌ２と、生成されるメロディパートの時軸を概略的に示す。
【図６】上記のＣＳ１とＭｅｌ１を含んだ主旋律内の周期性を、これらの時軸を描くことで概略的に示す。
【図７】サフィックスツリーを概略的に示す。
【図８】図６による音楽的特性又は次元の値を有するサフィックスツリーを概略的に示す。
【図９】生成器が、リストを使用して多数の入力データパートからデータを収集し、これらのデータから、生成されるセグメント内の特性の値を決定できる様子を概略的に示す。
【図１０】生成器が、入力データの主旋律からそれぞれの入力データパートを収集して、そのパートからのマテリアルを使用して音楽を生成できるようパートの表示を作成する様子を概略的に示す。
【図１】
2008506150.tif 000010
【図２】
2008506150.tif 000011
【図３】
2008506150.tif 000012
【図４】
2008506150.tif 000013
【図５】
2008506150.tif 000014
【図６】
2008506150.tif 000015
【図７】
2008506150.tif 000016
【図８】
2008506150.tif 000017
【図９】
2008506150.tif 000018
【図１０】
2008506150.tif 000019
【図１１】
2008506150.tif 000020
【国際調査報告】
2008506150.tif 000021
2008506150.tif 000022
2008506150.tif 000023