(57)【特許請求の範囲】
【請求項１】
事例の課題曲と事例の編曲例との組からなる事例であって，それらの楽曲を表現する多声旋律が演繹オブジェクト指向データベースにおけるオブジェクト項として表現された事例情報が格納された事例ベースを参照し，入力した楽曲について事例に基づく編曲を行うコンピュータによる編曲処理方法であって，
編曲対象となる楽曲を入力する過程と，
前記入力した編曲対象となる楽曲を表現する多声旋律を，オブジェクト項で表現し記憶する過程と，
前記編曲対象となる楽曲のオブジェクト項と前記事例ベースに格納された事例の課題曲のオブジェクト項とのオブジェクト項間の包摂関係を用いて編曲対象となる楽曲に類似する事例の課題曲を検索する過程と，
検索した事例の課題曲と前記編曲対象となる楽曲とのオブジェクト項の共通部分を抽出する過程と，
前記事例の課題曲から前記共通部分へのオブジェクト項の変換を解析し，その変換解析結果を利用して，前記事例の課題曲に対応する事例の編曲例から前記共通部分の編曲を作成する過程と，
前記編曲対象の課題曲から前記共通部分へのオブジェクト項の変換を解析し，その変換解析結果を利用して，前記共通部分の編曲から前記編集対象の楽曲に対する編曲を作成する過程とを有する
ことを特徴とする事例に基づく編曲処理方法。
【請求項２】
前記多声旋律にグルーピング構造と時間構造に関する情報を付加することによりオブジェクト項を構成する
ことを特徴とする請求項１記載の事例に基づく編曲処理方法。
【請求項３】
最小上界を計算する関数をｌｕｂ，最大下界を表す関数をｇｌｂとし，前記事例の課題曲を表すオブジェクト項をＭc ，前記編曲対象となる楽曲を表すオブジェクト項をＭ，前記事例の編曲例を表すオブジェクト項をＰc とするとき，
前記共通部分の編曲を表すオブジェクト項Ｐa を，
Ｐa ＝ｌｕｂ（Ｍ，Ｐc ）
によって計算し，
前記編曲対象となる楽曲に対する編曲Ｐを，
Ｐ＝ｇｌｂ（Ｐa ，Ｍc ）
によって計算する
ことを特徴とする請求項１または請求項２記載の事例に基づく編曲処理方法。
【請求項４】
事例の課題曲と事例の編曲例とが格納された事例ベースを参照し，入力した楽曲について事例に基づく編曲を，コンピュータに行わせるための編曲処理プログラムであって，
編曲対象となる楽曲を入力する処理と，
前記入力した編曲対象となる楽曲を表現する多声旋律を，オブジェクト項で表現し記憶する処理と，
前記編曲対象となる楽曲のオブジェクト項と前記事例ベースに格納された事例の課題曲のオブジェクト項とのオブジェクト項間の包摂関係を用いて編曲対象となる楽曲に類似する事例の課題曲を検索する処理と，
検索した事例の課題曲と前記編曲対象となる楽曲とのオブジェクト項の共通部分を抽出する処理と，
前記事例の課題曲から前記共通部分へのオブジェクト項の変換を解析し，その変換解析結果を利用して，前記事例の課題曲に対応する事例の編曲例から前記共通部分の編曲を作成する処理と，
前記編曲対象の課題曲から前記共通部分へのオブジェクト項の変換を解析し，その変換解析結果を利用して，前記共通部分の編曲から前記編集対象の楽曲に対する編曲を作成する処理とを，
コンピュータに実行させるための事例に基づく編曲処理プログラム。
【請求項５】
事例の課題曲と事例の編曲例とが格納された事例ベースを参照し，入力した楽曲について事例に基づく編曲を，コンピュータに行わせるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって，
編曲対象となる楽曲を入力する処理と，
前記入力した編曲対象となる楽曲を表現する多声旋律を，オブジェクト項で表現し記憶する処理と，
前記編曲対象となる楽曲のオブジェクト項と前記事例ベースに格納された事例の課題曲のオブジェクト項とのオブジェクト項間の包摂関係を用いて編曲対象となる楽曲に類似する事例の課題曲を検索する処理と，
検索した事例の課題曲と前記編曲対象となる楽曲とのオブジェクト項の共通部分を抽出する処理と，
前記事例の課題曲から前記共通部分へのオブジェクト項の変換を解析し，その変換解析結果を利用して，前記事例の課題曲に対応する事例の編曲例から前記共通部分の編曲を作成する処理と，
前記編曲対象の課題曲から前記共通部分へのオブジェクト項の変換を解析し，その変換解析結果を利用して，前記共通部分の編曲から前記編集対象の楽曲に対する編曲を作成する処理とを，
コンピュータに実行させるためのプログラムを記録した
ことを特徴とする事例に基づく編曲処理プログラムの記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，コンピュータによる楽曲の自動編曲方法に係り，特に事例の編曲を模倣して未知曲の編曲を行う編曲処理方法に関する。
【０００２】
本発明では，コンピュータを用いた自動編曲のために多声旋律をオブジェクト項として表現する。音楽知識をコンピュータで取り扱うとは，まずコンピュータ上の項として表現し，それに対してある演算を施すことである。一般の知識をコンピュータ上に表現し演算する技術は，知識表現，知識処理などと呼ばれている。また，譜面上に書かれた情報をもとに，人間がどのように音楽的な処理を行っているかを探求している学問分野として音楽学が確立されている。
【０００３】
知識表現については，特に演繹オブジェクト指向データベース（ＤＯＯＤ）技術に関連が深い。音楽学では，特にＧＴＴＭ（Ｇｅｎｅｒａｔｉｖｅ  Ｔｈｅｏｒｙ  ｏｆ  Ｔｏｎａｌ  Ｍｕｓｉｃ）のタイムスパン簡約に関連が深い。
【０００４】
【従来の技術】
楽曲を与えると，それをもとに自動演奏するような機能を持つシステムは，すでに数多く市販されている。従来のシステムの多くは，ルールに基づくシステムである。ここでユーザが入力として与えるのは，和音進行，（単純な）モチーフ，ジャンル，演奏スタイル等の情報である。出力は，ピアノソロ，バンド風など様々である。ユーザから指定されたジャンルやスタイルに従って，ルールの種類を切り換える。
【０００５】
出力の和声は和音記号から，出力のメロディはモチーフから生成する。このとき，和声とメロディの整合性を取ったり，フィルインと呼ばれる短い装飾音（装飾フレーズ）を音符数の少ない部分に埋め込んだりするためにもルールが用いられる。
【０００６】
しかし，ルールに基づく編曲システムには，一般にルール知識の獲得，ルールが衝突した場合の解消法，暗黙的な知識の明示的な記述の点において問題があると言われている。そして，それらがそのまま従来の編曲システムの欠点となっている。
【０００７】
〔多声旋律を項として表現する手法に関して〕
従来手法では，音符あるいは音符の集合の間に同時，前，後という３種類の基本関係を与えているに過ぎなかった。
【０００８】
〔編曲アルゴリズムに関して〕
従来手法の多くは，前述のようにルールに基づいて編曲を行っている。その典型的なアルゴリズムは，入力情報を一旦パラメータ空間にマップし，パラメータ空間上でユーザの指示に従い演算を実行し，再びパラメータ空間から実際の多声旋律に戻し，それを出力とするものである。入力の多声旋律をパラメータ空間にマップするとき，幾つかのパラメータ，例えば音群の高さ，密度，フレーズの勾配等を予め決定しておき，与えられた多声旋律の各パラメータ値（ベクトル特徴量）を計算する。このベクトル特徴量をもって，入力多声旋律をパラメータ空間の一点に対応づける。
【０００９】
ユーザの指示に従いパラメータ空間上で様々な演算を行う。例えば，より緊張感の高いフレーズを生成したり，伴奏風の演奏を生成したりする等である。そして，出力の多声旋律が持つべきベクトル特徴量が求まる。最後に，そのベクトル特徴量から実際の多声旋律を生成する。このとき，ベクトル特徴量と実際の多声旋律の関係は１対多なので，確率統計的な手法が用いられることが多い。
【００１０】
形容詞的な感性語を用いて，希望する解を生成するような場合は，感性語とベクトル特徴量の相関を心理実験等により予め求めておき，その相関を満たすような出力を構成する。
【００１１】
従来のコンピュータを用いた自動編曲は，以上のような方法を用いており，事例に基づく編曲アルゴリズムを用いて，実際の音楽家が行う編曲と同様な編曲を自動的に行う編曲システムはなかった。
【００１２】
【発明が解決しようとする課題】
従来方法の欠点は，以下のとおりである。
【００１３】
（１）内部表現が不十分なので，音楽的な意味を反映した計算の実現が困難である。
【００１４】
内部表現は，２つの意味で不十分である。第１に，音符あるいは音符の集合の間に同時，前，後という単純で平板な基本関係しか与えていないので，音楽理論が教えるような多声旋律の階層的な解釈や構造を表現できない。
【００１５】
第２に，多声旋律に関して，事前に予想できないような様々な処理が要求される。処理に必要なパラメータや重視すべきパラメータは，実際の処理の種類やユーザの意図に大きく依存するが，それら全てを実行前やシステム設計時に知ることは非常に困難である。
【００１６】
（２）ルールを用いているので音楽的な知識に対応できない。
【００１７】
一般に音楽知識には，主観，曖昧さ，暗黙がある。それらをルールで明示的にかつ正確に書き下すのは困難である。特に，作曲に関する音楽知識は，そこからいかに芸術的に逸脱するかを規定するために存在していると言っても過言ではない。ルールとして記述されたことを守って解を生成しても，音楽的に意味のある解が得られるとは限らない。
【００１８】
（３）和音名（和音記号）を用いない楽曲を取り扱えない。
【００１９】
上述したように，従来システムでは演奏される和音は基本的には和音名から生成される。しかし，和音名は実際の和音の響きを忠実に表現しているわけではない。一般に，１つの和音名に対し，実際に演奏される和音は幾通りもあり得るし，逆に実際に演奏したい和音を表現する和音名も幾通りもある。
【００２０】
そこで和音を和音名ではなく，演奏される和音自体（音符の集合）で指定するような楽曲が存在している。そのような楽曲は，現時点においては，ジャンルを問わず特殊例ではなくなってきている（坂本龍一や小室哲哉の作品等が該当する）。
【００２１】
【課題を解決するための手段】
本発明では，上記課題を解決するため，あらかじめ多声旋律として表現（音符レベルの表現）されたいくつかの編曲事例が蓄えられており，単純なモチーフが与えられると，それに類似した編曲事例を利用して編曲を行う。
【００２２】
すなわち，本発明は，事例の課題曲と事例の編曲例とが格納された事例ベースを参照し，入力した楽曲について事例に基づく編曲を行うコンピュータによる編曲処理方法であって，前記事例の課題曲，前記事例の編曲例および編曲対象となる楽曲を表現する多声旋律をオブジェクト項で表現し，オブジェクト項間の包摂関係を用いて編曲対象となる楽曲に類似する事例の課題曲を検索し，検索した事例の課題曲とそれに対応する事例の編曲例と前記編曲対象となる楽曲とのオブジェクト項間の関係に基づいて前記編曲対象となる楽曲を編曲することを第１の特徴とする。
【００２３】
また，前記多声旋律にグルーピング構造と時間構造に関する情報を付加することによりオブジェクト項を構成することを第２の特徴とする。これによって，ユーザの意図は，入力のモチーフ，編曲事例にあらかじめ付与されたグルーピング構造と時間構造として表現される。
【００２４】
編曲のアルゴリズムに着目した場合の本発明の特徴は，編曲対象となる楽曲を入力する過程と，入力した楽曲に類似した事例の課題曲を，前記事例ベースから検索する過程と，検索した事例の課題曲と入力した楽曲との共通部分を抽出する過程と，前記事例の課題曲から前記共通部分への変換を解析し，その変換解析結果を利用して，対応する事例の編曲例から前記共通部分の編曲を作成する過程と，前記共通部分の編曲から前記入力した楽曲に対する編曲を作成する過程とを有することである。
【００２５】
具体的には，最小上界を計算する関数をｌｕｂ，最大下界を表す関数をｇｌｂとし，前記事例の課題曲を表すオブジェクト項をＭｃ  ，前記編曲対象となる楽曲を表すオブジェクト項をＭ，前記事例の編曲例を表すオブジェクト項をＰｃ  とするとき，
前記共通部分の編曲を表すオブジェクト項Ｐａ  を，
Ｐａ  ＝ｌｕｂ（Ｍ，Ｐｃ  ）
によって計算し，
前記入力した楽曲に対する編曲Ｐを，
Ｐ＝ｇｌｂ（Ｐａ  ，Ｍｃ  ）
によって計算する。
【００２６】
以上の各処理手段は，コンピュータとソフトウェアプログラムとによって実現可能である。そのソフトウェアプログラムは，コンピュータが読み取り可能な可搬媒体メモリ，半導体メモリ，ハードディスクなどの適当な記録媒体に格納することができる。
【００２７】
本発明が，従来技術による編曲処理と大きく異なる点は，事例の編曲を模倣して未知曲の編曲を行うこと，事例の課題曲，事例の編曲例および編曲対象となる楽曲を表現する多声旋律をオブジェクト項で表現し，そのオブジェクト項として表現された多声旋律を操作することによって，編曲を行うことである。したがって，従来技術と比較した場合の本発明の特徴は，以下のとおりである。
【００２８】
（１）十分な情報量を持った内部表現
内部構造が，そこから元の多声楽曲を常に復元できるように設計されている。つまり，入力された多声旋律にその階層構造の情報を付加したような内部構造となっており，これにより入力された多声旋律の階層構造が表現できかつ復元可能となっている。
【００２９】
（２）ルールを用いず事例を用いる
編曲するにあたり，演奏者に提示された簡単な譜面と，それをもとに演奏された実際の演奏譜の組を事例とする。システムにある未知曲が提示された時，事例で行われた編曲を真似て未知曲を編曲する。
【００３０】
（３）和音名を一切使わず音符レベルだけで計算を進める手法を採用
具体的には，多声旋律をオブジェクト項として表現する手法とオブジェクト項として表現された多声旋律を操作する手法からなる。
【００３１】
【発明の実施の形態】
１．楽曲編曲装置の構成例
図１は，本発明に係る楽曲編曲装置の構成例を示す。楽曲編曲装置１０は，ＣＰＵやメモリ等と，以下に説明する各部を実現するためのソフトウェアプログラムとによって構成される。楽曲入力装置１１は，事例を利用して編曲する対象となる楽曲を入力する装置である。入力する方法としては，楽譜の形式で入力する方法，楽曲のエディタから入力する方法，ＭＩＤＩデータとして入力する方法，音声入力により入力する方法など，種々の方法があり，いずれの入力方法を用いてもよい。楽曲出力装置１２は，編曲結果の楽曲を出力する装置であり，スピーカによる出力，楽譜の形式による出力，ＭＩＤＩデータによる出力など，出力方法は問わない。
【００３２】
事例ベース作成装置２０は，ＣＰＵやメモリ等と事例ベースを作成するためのソフトウェアプログラム等からなり，事例の楽曲Ｍｃ  とその事例の編曲Ｐｃ  とを入力し，多声旋律の分析を行って，事例の楽曲Ｍｃ  とその事例の編曲Ｐｃ  とをオブジェクト項で表現し，それらの組を事例ベース２１に格納する。なお，楽曲編曲装置１０と事例ベース作成装置２０とを，同一のハードウェアを用いて構成することもできる。
【００３３】
事例ベース２１は，編曲事例のデータが格納されているものであり，編曲事例として，事例の楽曲Ｍｃ  と音楽家が実際に楽曲Ｍｃ  を編曲した結果の事例の編曲Ｐｃ  との組を多数記憶している。これらの事例の楽曲Ｍｃ  と事例の編曲Ｐｃ  とは，後に詳しく述べる多声旋律のオブジェクト項として表現されている。
【００３４】
楽曲入力部１３は，楽曲入力装置１１から編曲対象となる楽曲を入力する手段である。入力は，通常の楽曲の一部でもよく，また音符化されたモチーフのようなものでもよい。オブジェクト項表現生成部１４は，入力した楽曲の多声旋律を分析し，その音楽的な対象を演繹オブジェクト指向データベースにおけるオブジェクト項として表現する手段である。
【００３５】
事例検索部１５は，オブジェクト項として表現された編曲対象の楽曲と，事例ベース２１に格納された事例の楽曲Ｍｃ  とを照合し，編集対象の楽曲に最も類似した事例の楽曲Ｍｃ  を検索する手段である。この事例との照合では，相対的類似度計算部１６によって計算した相対的な類似度を用いる。
【００３６】
編曲作成部１７は，事例検索部１５で検索した事例の楽曲Ｍｃ  とそれを編曲した事例の編曲Ｐｃ  とを表すオブジェクト項をもとに，編集対象の楽曲を事例と同じように編曲した楽曲のオブジェクト項を作成する。編曲出力部１８は，編曲した結果のオブジェクト項によって表現される楽曲を，必要に応じて譜面もしくはＭＩＤＩデータその他の形式に変換し，楽曲出力装置１２に出力する。
【００３７】
図１に示すシステムにおいて特徴的なことは，事例の楽曲（課題曲）Ｍｃ  ，事例の編曲Ｐｃ  ，ユーザが与える未知曲である編集対象の楽曲，編曲作成部１７が作成する編曲結果のそれぞれを表現する多声旋律が，オブジェクト項で表現されることである。オブジェクト項表現の単位としては，例えば小節単位，複数小節単位，ある和音でカバーされる範囲など，任意に定めて実施することが可能である。
【００３８】
２．演繹オブジェクト指向データベースについての一般的な説明
演繹オブジェクト指向データベース（ＤＯＯＤ：Ｄｅｄｕｃｔｉｖｅ  Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ｄａｔａｂａｓｅ）  は，知識表現の一手法である。演繹オブジェクト指向データベースにおけるオブジェクト項の一般形は，
種類（属性１の名前＝属性１の値，属性２の名前＝属性２の値，…）
のようになっている。
【００３９】
例えば，リンゴについて，赤いリンゴ，小さいリンゴという２つの概念（実体）を表現する場合を考える。ともに種類はリンゴである。「リンゴ」の場合，特にそれ以上の特徴はないので，
リンゴ
と記述する。「赤いリンゴ」は，単なるリンゴに色が赤いという特徴が付加されたものである。そこで，
リンゴ（色＝赤）
と記述する。また，「小さいリンゴ」は，サイズが小さいという特徴が付加されたと考えられるので，
リンゴ（サイズ＝小さい）
と記述する。以上から明らかなように，「大きくて青いリンゴ」の表現は，
リンゴ（サイズ＝大きい，色＝青）
となる。実際のオブジェクト項では，属性値にオブジェクト項を書くことで，より複雑な概念や実体を表現することができる。
【００４０】
なお，素性構造も本質的には演繹オブジェクト指向データベースと同じ概念であり，本明細書の全体において統一的な説明のため演繹オブジェクト指向データベースの用語を用いて説明するが，本明細書でいう演繹オブジェクト指向データベースには，素性構造の技術概念が含まれる。本明細書において，「演繹オブジェクト指向データベース」は「素性構造」と，「オブジェクト項」は「素性項」と読み替えることができる。
【００４１】
以上のように，オブジェクト項は  ｏ（  …，  ｌ  ＝  ｖ，…）  と記述される。ｏは基本オブジェクト項，ｌ＝ｖは属性，ｌは属性ラベル，ｖは属性値を表す。
【００４２】
属性には固有と非固有の２種類がある。固有属性とは，オブジェクトの識別に使用される属性であり，非固有属性はそうでない属性である。記法上は，
ｏ（…，ｌ＝ｖ，  …）／（  …，ｍ＝ｗ，  …）
のように，”／”  の左側に固有属性，右側に非固有属性を書く。例えば，「ｏ（ａ＝１）／（ｂ＝２）」と「ｏ（ａ＝１）／（ｃ＝３）」は，同一のオブジェクトである。
【００４３】
３．一般的な包摂関係の説明
事例を用いた編曲では，例えば入力した編集対象の楽曲と事例の楽曲とが類似しているかどうかを判断するための何らかの尺度が必要になる。そこで，本システムでは，音楽的な対象間に成り立つ順序関係を，オブジェクト項間の包摂関係に対応づけることにより，包摂関係を用いて対象間の相対的類似度を計算する。また，本システムにおいて包摂関係は，オブジェクト項間の共通部分の抽出，合成や，オブジェクト項の抽象化，具体化などの演算等に用いられる。以下では，この包摂関係についての説明を行う。なお，ここでは説明の都合上，包摂関係を集合の包含関係と同様な記号⊆で表す。
【００４４】
包摂関係とは，「情報量が多いオブジェクト⊆情報量が少ないオブジェクト」ということを意味している。「具体的なオブジェクト⊆抽象的なオブジェクト」，または「特殊⊆一般」と言い換えてもよい。ただし，包摂関係自体は公知の技術である。
【００４５】
簡単な例で説明する。「リンゴ」と「赤いリンゴ」を表現するオブジェクト項間の包摂関係を考える。「赤いリンゴ」のほうが「リンゴ」より「赤い」という特徴がある分だけ具体的で情報が多いとみなせる。このようなとき，
リンゴ（色＝赤）⊆リンゴ
と表記する。
【００４６】
一般に，ｓ⊆ｔとなるためには，次の２つの条件のいずれか一方または両方が成立することが必要である。
【００４７】
条件１．  ｓ＝ｋ（…，ｌ＝ｖ，…）かつｔ＝ｋ（…）
ｓの方にｌ＝ｖという属性が余計に付加されている。
他の属性に関しては，ｓとｔは同じ属性名と属性値を持っている。
〔例：  リンゴ（色＝赤）⊆リンゴ〕。
【００４８】
条件２．  ｓ＝ｋ（…，ｌ＝ｖ，…）かつｔ＝ｋ（…，ｌ＝ｗ，…）かつｖ⊆ｗ
ｓもｔも同じ名前の属性ｌを持っているが，その属性値の間にｖ⊆ｗという関係が成り立っている。
〔例：人間（住所＝東京（区＝新宿））⊆人間（住所＝東京）〕。
【００４９】
４．包摂関係の定義
オブジェクト項間の包摂関係は，以下に説明する演繹規則によって定義される。今，
ｏ１  ＝ｐ（…，ｌｍ  ＝ｖ，…），ｏ２  ＝ｑ（…，ｌｎ  ＝ｗ，…）とすると，
ｏ１  ，ｏ２  間の包摂関係は，
ｏ１  ⊆ｏ２  ←ｐ⊆ｑ∧∀ｍ∃ｌｎ  （ｌｍ  ＝ｌｎ  ∧ｖ⊆ｗ）
のように定義される。つまりｏ１  の基本項（ｐ）と全ての属性（ｌｍ  ）について，それらが全て具体的であるならば，ｏ１  の方が具体的あるいはｏ２  の方が抽象的であるという意味である。さらにｏ１  ，ｏ２  がオブジェクト項を要素に持つ集合の場合，ｏ１  ，ｏ２  間の包摂関係として様々な定義が考えられる。以下に，代表的な２つを演繹規則として記述する。
【００５０】
ｏ１  ⊆Ｈ  ｏ２  ←∀ｓｉ  ∈ｏ１  ∃ｔｊ  ∈ｏ２  ｓｉ  ⊆ｔｊ  
ｏ１  ⊆Ｓ  ｏ２  ←∀ｔｊ  ∈ｏ２  ∃ｓｉ  ∈ｏ１  ｓｉ  ⊆ｔｊ  
ここで「⊆Ｈ  」は，いわゆる集合のＨｏａｒｅ順序に，「⊆Ｓ  」は，Ｓｍｙｔｈ順序に等しい。例えば｛ｂ，ｄ｝⊆Ｈ  ｛ａ，ｂ，ｃ，ｄ｝，また，｛ａ，ｂ，ｃ，ｄ｝⊆Ｓ  ｛ｂ，ｄ｝のようになる。Ｈｏａｒｅ順序は，集合要素間に選言の意味がある場合に用いられ，Ｓｍｙｔｈ順序は，連言の意味がある場合に用いられる。
【００５１】
５．ドット記法の定義
ｐ（…，ｌ＝ｖ，  …）  というオブジェクト項があるとき，ｖの値に注目してｐ．ｌ＝ｖ  と表記する。
【００５２】
６．最小上界および最大下界の定義
オブジェクト項ｘ，ｙが与えられたとき，ｘとｙの最小上界  （ｌｅａｓｔ  ｕｐｐｅｒ  ｂｏｕｎｄ，  ｌｕｂ）  とは，
ｍｉｎ（｛ｚ｜ｘ⊆ｚ∧ｙ⊆ｚ｝）  であり，「ｌｕｂ（ｘ，ｙ）」と書く。
【００５３】
ｌｕｂの直観的な意味は，ある二つのオブジェクトに共通で抽象的なオブジェクトのうち，最も具体的なものであり，積集合を計算するイメージである。すなわち，ｘとｙよりも共通に大きい要素の中で最も小さいものである。いわば，積集合あるいは最小公倍数のようなものと考えてよい。
【００５４】
最大下界  （ｇｒｅａｔｅｓｔ  ｌｏｗｅｒ  ｂｏｕｎｄ，  ｇｌｂ）も同様に定義できる。オブジェクト項ｘ，ｙが与えられたとき，ｘとｙの最大下界とは，
ｍａｘ（｛ｚ｜ｚ⊆ｘ∧ｚ⊆ｙ｝）であり，「ｇｌｂ（ｘ，ｙ）」と書く。
すなわち，ｘとｙよりも共通に小さい要素の中で最も大きいものである。いわば，和集合あるいは最大公約数のようなものと考えてよい。
【００５５】
演繹オブジェクト指向データベースでは，ｌｕｂをｊｏｉｎ，ｇｌｂをｍｅｅｔとも呼ぶ。上で定義したオブジェクト項の領域は⊆に関して完備束を構成する。このｌｕｂやｇｌｂが以下で説明する編曲アルゴリズムを構成するときの基本演算子となる。
【００５６】
７．一つの音の表現
本表現法では音楽的な対象のうち，単なる１音，Ｃ，Ｃ５を演繹オブジェクト指向データベースを用いて以下のような項として表現する。
0003610017.tif 000002
前述の包摂関係を用いると，これらの音を表現するオブジェクト項間に下のような関係が自動的に成立する。
【００５７】
ｎｏｔｅ（ｐｉｔｃｈ＝Ｃ，ｏｃｔａｖｅ＝５）⊆ｎｏｔｅ（ｐｉｔｃｈ＝Ｃ）  ⊆ｎｏｔｅ
８．和音の表現
本表現法では音楽的な対象のうち，和音を集合として表現する。そして，集合もオブジェクト項の一種と定義する。
【００５８】
例えば，和音は以下のような項（集合項）として表現される。
0003610017.tif 000003
音の場合と同様，このようにオブジェクト項として表現された和音の間には，下のように自動的に包摂関係が成り立つ。
【００５９】
0003610017.tif 000004
９．和音の列の表現
Ｎ個の和音からなる和音の列の表現には，以下の方法ａ，ｂの２通りが考えられる。ここでは，読み易さのために，各和音をｃｈｏｒｄ１  ，ｃｈｏｒｄ２  のように表記する。
0003610017.tif 000005
方法ａは，個々の和音ごとに異なる属性を割り当てる方法である。方法ｂは，個々の和音を要素とするような線形リンク構造（［…］で表記）をある属性の属性値として持たせる方法である。
【００６０】
１０．和音名の表現
一般に和音名は，根音と和音の型から構成され，ジャズの和音ではテンションと呼ばれる音が付加されることがあるので，属性として，ｒｏｏｔ，ｔｙｐｅ，ｔｅｎｓｉｏｎを考える。以下，例を挙げる。
0003610017.tif 000006
上記の和音の列の表現と同様に，和音名の列の表現も考えられる。
【００６１】
１１．多声旋律の表現
以下では，特に本システムの編曲において用いる多声旋律の表現方法について述べる。旋律や和音を構成する複数の音が楽曲の一部あるいは全体を構成する。ここでは，そのような楽曲の一部あるいは全体を多声旋律と呼ぶ。一般のピアノ譜程度の譜面を考えた場合の多声旋律の例を図１７に示す。この曲（Ｎｅｆｅｒｔｉｔｉ）  は，和音名を使わずに多声旋律で和声が指定されているような楽曲である。
【００６２】
本システムでは，演繹オブジェクト指向データベース（ＤＯＯＤ）に基づいて多声旋律を表現するためのオブジェクト項を導入する。オブジェクト項の抽象化，具体化が，多声旋律の簡単化，複雑化にうまく対応するようにオブジェクト項を設計しなければならない。
【００６３】
１２．グルーピング構造の表現
楽曲のグルーピング構造を表現するために，ＧＴＴＭのタイムスパン簡約木（Ｔｉｍｅ−Ｓｐａｎ  Ｒｅｄｕｃｔｉｏｎ  Ｔｒｅｅ）を利用する。図２にグルーピング構造の例を示す。タイムスパン簡約木は，ボトムアップに楽曲構造的に重要な音  （和音）  と，隣接する重要でない音  （和音）  とをまとめて  （グルーピングして）  行く様子を表現している。
【００６４】
ここでは簡単化のためタイムスパン簡約木は二進木とし，重要な音を  ｐｒｉｍａｒｙ，そうでない音を  ｓｅｃｏｎｄａｒｙと呼ぶ。グルーピングされた  ｐｒｉｍａｒｙと  ｓｅｃｏｎｄａｒｙは，ある一つの音  （和音）  で代表され，それをｈｅａｄと呼ぶ。ｐｒｉｍａｒｙ／ｓｅｃｏｎｄａｒｙ  とｈｅａｄの関係には，ｐｒｉｍａｒｙ，  ｆｕｓｉｏｎ，  ｔｒａｎｓｆｏｒｍａｔｉｏｎａｌ  の３通りがある。
【００６５】
タイムスパン簡約木の末端のノード  （葉）  は，ある時刻に生起した音  （和音）  を表し，ｐｒｉｍａｒｙ／ｓｅｃｏｎｄａｒｙ  を持たない。タイムスパン簡約木では  ｐｒｉｍａｒｙの生起時刻が１段上のグルーピング構造の生起時刻となる。あるタイムスパン簡約木から  ｐｒｉｍａｒｙや  ｓｅｃｏｎｄａｒｙの枝を削除すると，より簡単なタイムスパン簡約木が得られる。
【００６６】
１３．時間構造の表現
まず，楽曲における時間構造の抽象化，具体化の関係について考察する。通常，定量的な記述を抽象化すると定性的な記述が得られる。多声旋律中に現われる各音の生起時刻は定量的に決められるが，これを抽象化した定性的な記述とは「順序」であると考えられる。これは，厳密な時刻が分からなくても，先か後かの順番だけ記述されているという状況である。
【００６７】
さらに順序は，縮退によって条件の緩い抽象的で簡単な順序になる。例えば，「イベントａが先でイベントｂが後」という順序を縮退すると，「イベントａはイベントｂより先あるいは同時」という順序が得られる。
【００６８】
以上の考察から，時間構造のモデルは，時刻に関する定量的な情報と順序に関する情報とを分離して記述できなければならないことが分かる。
【００６９】
本システムで提案する時間構造の例を図３に示す。図中  ｐ，  ｑ，  ｒ，  ｓ  はイベントである。まずイベントｐの生起時刻を基準と仮定する。次にイベントｓに着目すると，ｓはｐと＋ωの間に生起し  （順序に関する情報）  ，ｐから３拍半の時刻に生起する  （時刻に関する定量的な情報）  。同様にｑはｐとｓの間に生起し，ｐから１拍目，ｒはｑとｓの間に生起し，ｓから半拍目の場所に位置している。さらに，ｒの時刻が縮退する先は楽曲的により重要な拍であり  （この場合はｓ）  ，それが「→」で示されている。
【００７０】
１４．各オブジェクトの属性と属性値
本システムで実際に用いたオブジェクト項の構文規則を，図４に示す。
【００７１】
この構文において，ｏｂｊｃｌａｓｓ（ｎａｍｅ１：ｏｂｊｃｌａｓｓ１，…）のｏｂｊｃｌａｓｓはオブジェクトクラス名，ｎａｍｅ１  は固有属性名，ｏｂｊｃｌａｓｓ１  は属性値のオブジェクトクラス名あるいはデータ型という意味である。オブジェクトを構成する際に必須の属性と必須でない属性があり，必須でない属性名の左肩には  ＆を付けた。
【００７２】
小文字で始まる語はオブジェクト名を表し，大文字で始まる語はそれ以外のデータやデータ型を表す。Ｉｎｔｅｇｅｒ  は整数の集合を表し，Ｃ．．Ｂはドからシまでの１１の音名からなる集合を表し，Ａｆｔｅｒ  ，Ｂｅｆｏｒｅは予約語であり，＋ωは正の無限大の時刻，−ωは負の無限大の時刻の意味である。ｘ｜ｙは，ｘまたはｙという意味である。｛ｘ｝はｘからなる集合を表す。
【００７３】
オブジェクト項  ｃｈｏｒｄのｎｏｔｅｓ  属性は和音を構成する個々の音を表し，ｄｕｒａｔｉｏｎ属性は和音が鳴っている時間的長さを表す。ｎｏｔｅｓ  属性の値が  ｓｉｎｇｌｅｔｏｎ集合の時，それは単音と等価である。ｎｏｔｅオブジェクトの  ｎｏｔｅＮｕｍｂｅｒ  属性では，音高がＭＩＤＩノートナンバによって表現されている。
【００７４】
この  ｅｖｅｎｔオブジェクトは，時間的に重複するグルーピング構造も記述できるという点において，ＧＴＴＭのタイムスパン簡約木の拡張になっている。
【００７５】
１５．ｅｖｅｎｔ  オブジェクトに関する包摂関係
ｅｖｅｎｔ  オブジェクトは，上述したグルーピング構造と時間構造のモデルを実現している。つまり，モデルにおける抽象化，具体化の操作がオブジェクト項の包摂関係に対応付けられている。
【００７６】
グルーピング構造に関する抽象化は，楽曲構造上，重要でない音を削除することであり，これはｐｒｉｍａｒｙ  属性や  ｓｅｃｏｎｄａｒｙ属性を削除することに対応する。
【００７７】
時間構造に関する抽象化は２通りある。一つは定量的な時刻の情報を削除することであり，これはｄｉｆｆｅｒｅｎｃｅ属性を削除することに対応する。もう一つは，拍節構造的により重要な隣接する拍に時刻が縮退することであり，このために以下のような新しい包摂関係を導入する。
【００７８】
ある時刻を表現するオブジェクト項  ｔ  （ｔ  ⊆  ｔｅｍｐ）があるとき，ｔ．ｒｅｆｅｒｅｎｃｅ  によって指定される拍の方が拍節構造的により重要な拍である。したがって，ｔがｔ．（ｔ．ｒｅｆｅｒｅｎｃｅ）  に縮退すると，時間構造はより抽象的  （簡略）  になることが分かる。つまり，ｔ  ⊆  ｔ．（ｔ．ｒｅｆｅｒｅｎｃｅ）である。ここで，ｔ．ｒｅｆｅｒｅｎｃｅ  の指定は，グルーピング構造と整合しなくてはならないことに注意されたい。
【００７９】
図３の例では，時刻  ｔｒ  は，
ｔｅｍｐ（ａｆｔｅｒ＝ｔｑ，  ｂｅｆｏｒｅ＝ｔｓ，  ｒｅｆｅｒｅｎｃｅ＝Ｂｅｆｏｒｅ，  ｄｉｆｆｅｒｅｎｃｅ＝８分音符）  というオブジェクト項で記述できるので，  ｔｒ  ⊆  ｔｓ  となる。
【００８０】
１６．編曲アルゴリズム
本システムでは，音楽家がＭｃ  という簡単な楽曲を編曲してＰｃ  を創作することを模倣し，未知の簡単な楽曲Ｍから新しい編曲Ｐを合成するような編曲アルゴリズムを用いる。
【００８１】
図５に，事例に基づく編曲の原理を説明するための図を示す。図５のＡが編曲アルゴリズムが行う処理である。ｓ  の点線は，音楽家がＭｃ  という簡単な譜面を見たときにＰｃ  という演奏を行ったという対応関係を表している。編曲を行うときの音楽家の内省に基づき，以下のＳｔｅｐ１〜Ｓｔｅｐ４で未知の楽曲Ｍからそれの編曲Ｐを合成する。
Ｓｔｅｐ１）Ｍに類似したＭｃ  を持つ事例を検索する。
Ｓｔｅｐ２）ＭとＭｃ  の共通部分をＭａ  とする。
Ｓｔｅｐ３）Ｍｃ  からＭａ  への変換Ｆを模倣して，事例の編曲Ｐｃ  をＰａ  に変換する（Ｆ’）。
Ｓｔｅｐ４）ＭからＭａ  への変換Ｇを模倣して，さらに逆転させてＰａ  からＰを作る（Ｇ’−１）。
【００８２】
Ｓｔｅｐ１の最類似事例の検索は，次の参考文献１で提案した方法  （相対的類似度）  を援用する。
〔参考文献１〕平田圭二，青柳龍也，パーピープン：誰でもどこでもインタラクティブに使える知的ジャズ和音生成システム，情報処理学会，音楽情報科学研究会，研究報告，９９−ＭＵＳ−３１，  ｐｐ．７−１２（１９９９）。
【００８３】
編曲アルゴリズムの設計に際して以下の仮定を置く。
〔仮定１〕ＭとＭｃ  とは似ている。
〔仮定２〕ＦとＦ’とは似ている。ＧとＧ’も似ている。
【００８４】
ここで，〔仮定１〕はステップＳ１で保証される。〔仮定２〕は音楽家の内省から得られる。
【００８５】
Ｍ，Ｍｃ  ，Ｍａ  ，Ｐ，  Ｐｃ  ，Ｐａ  は，ＤＯＯＤのオブジェクト項として表現されるので，これらオブジェクト項間には包摂関係が成り立つ。以上から，次のように編曲アルゴリズムを設計する。
【００８６】
まず，Ｆを実現する具体的な関数について考える。Ｆを特徴付ける関係は，
Ｆ（Ｍｃ  ）＝Ｍａ        …（Ｆ１）
Ｆ（Ｍ）＝Ｍ            …（Ｆ２）
である。Ｆには様々な関数が考えられるが，ＭとＭｃ  の共通部分Ｍａ  を計算するには，最小上界を用いるのが自然なので，
Ｆ（Ｘ）＝  ｌｕｂ（Ｘ，Ｍ）
という定義が考えられる。Ｐａ  は，Ｐａ  ＝Ｆ’（Ｐｃ  ）として求められるが，〔仮定２〕より，
Ｐａ  ＝Ｆ（Ｐｃ  ）＝  ｌｕｂ（Ｐｃ  ，Ｍ）        …（式１）
を得る。
【００８７】
次に，関数Ｇを特徴付ける関係は，
Ｇ（Ｍ）＝Ｍａ            …（Ｇ１）
Ｇ（Ｍｃ  ）＝Ｍｃ        …（Ｇ２）
なので，同様に
Ｇ（Ｘ）＝  ｌｕｂ（Ｘ，Ｍｃ  ）
とすることができる。
【００８８】
ここで，Ｇを特徴付ける関係Ｇ１，Ｇ２の重要度について考える。〔仮定１〕から，Ｇ１においてＭをＭｃ  で置き換えた場合１と，Ｇ２においてＭｃ  をＭで置き換えた場合２とを比較する。
【００８９】
場合１からは，
Ｇ（Ｍｃ  ）＝Ｍａ  かつＧ（Ｍｃ  ）＝Ｍｃ  より，Ｍａ  ＝Ｍｃ  が得られる。
一方，場合２からは，
Ｇ（Ｍ）＝Ｍａ  かつＧ（Ｍ）＝Ｍより，Ｍａ  ＝Ｍ    が得られるが，関係Ｇ１も考慮するとＧは恒等写像になり，Ｇの特徴が消失する。よって，Ｇ２の方がより重要な関係であることが分かる。
【００９０】
逆写像Ｇ−１を特徴付ける関係は，関係Ｇ１，Ｇ２から
Ｇ−１（Ｍａ  ）＝ＭおよびＧ−１（Ｍｃ  ）＝Ｍｃ  となる。上のＧ１とＧ２の重要度に関する考察と，〔仮定１〕から，前者の関係をＧ−１（Ｍａ  ）＝Ｍｃ  と置き換えて，Ｇ−１を実現する関数を考える。
【００９１】
単純なものとして，Ｇ−１（Ｘ）＝  ｇｌｂ（Ｘ，Ｍｃ  ）が考えられる。ゆえに，〔仮定２〕より，
Ｐ＝Ｇ−１（Ｐａ  ）＝  ｇｌｂ（Ｐａ  ，Ｍｃ  ）      …（式２）
である。
【００９２】
以上の考察をまとめると，ＭからＰを合成する編曲アルゴリズムＡは，
式１，式２から，
Ａ（Ｘ）＝  ｇｌｂ（  ｌｕｂ（Ｐｃ  ，Ｘ），Ｍｃ  ）    …（式３）
と表すことができる。
【００９３】
関数Ａに注釈を加える。Ａはオブジェクト項の作る完備束上の連続関数である。この編曲アルゴリズムは，和音名  （コード記号）  を全く使わずに音符レベルで計算を行う。Ｍｃ  より抽象的な楽曲Ｍに対しては（Ｍｃ  ⊆Ｍ），Ａ（Ｍ）＝Ｍｃ  となる。
【００９４】
１７．具体的な処理の例
〔事例ベースの生成〕
図６に，事例ベース作成装置２０が行う事例ベースの作成の処理フローチャートを示す。
【００９５】
例えばジャズ等のアドリブを含む模範演奏の楽曲から事例ベース２１を作成するものとする。ステップＳ１０では，事例の楽曲の譜面を入力する。ここでは，音楽家が演奏の際に見た簡単な楽曲譜面を入力する。ステップＳ１１では，入力した楽曲譜面について，後述する多声旋律分析（図７）を行う。
【００９６】
次に，ステップＳ１２では，事例の編曲例として，実際に演奏された音を採譜した譜面を入力する。ステップＳ１３では，入力した譜面について，後述する多声旋律分析（図７）を行う。
【００９７】
ステップＳ１４では，ステップＳ１１における多声旋律の分析結果とステップＳ１３における多声旋律の分析結果とから，事例の楽曲のオブジェクト項表現と，実際の演奏を採譜した事例の編曲のオブジェクト項表現とをペアにして，それを一つの事例として事例ベース２１に格納する。以上のステップＳ１０〜Ｓ１４の処理を各事例ごとに繰り返す（ステップＳ１５）。
【００９８】
〔多声旋律の分析〕
図７に，多声旋律分析の処理フローチャートを示す。本処理は，事例ベースの作成時に用いられるほか，図１の楽曲編曲装置１０におけるオブジェクト項表現生成部１４による処理の際にも用いられる。
【００９９】
ステップＳ２０では，多声旋律を入力する。ここでは，和音名（和音記号，コードシンボル）は考えずに，旋律や和音を表現する多数の音符から構成される楽曲の一部あるいは全体を多声旋律として入力する。
【０１００】
ステップＳ２１では，ＧＴＴＭに従ってグルーピング構造を分析し，タイムスパン簡約木を得る。図８に，タイムスパン簡約木の例を示す。図８（Ａ）に示すような音楽家の意図を表す多声旋律について，隣接した音同士をボトムアップにまとめ上げていくことにより，階層構造が得られる。今，図８（Ａ）の最初の３個の音符に着目すると，その部分のタイム簡約木は図８（Ｂ）に示すようになり，その多声旋律の内部構造は図８（Ｃ）に示すように表される。これに対応するオブジェクト項表現は，図８（Ｄ）のようになる。ここでは，ｅｖｅｎｔ  を“ｅ”，ｈｅａｄを“ｈｄ”，ｐｒｉｍａｒｙ  を“ｐ”，ｓｅｃｏｎｄａｒｙ  を“ｓ”と簡略化して表現している。
【０１０１】
ステップＳ２２では，時間構造の分析を行い，その分析結果から時間構造ネットワークを得る。一般に，音楽家の意図は，タイミング的に重要な隣接音に依存して決まる。グルーピング構造の情報だけでは，音要素の時間的順序がわからない。そのため，時間構造を分析して，オブジェクト項表現に時間構造に関する情報を付加する。
【０１０２】
図９に，時間構造の分析例を示す。図９の例では，音要素ｔ１を基準にして時間構造を分析している。図９では，ｔｅｍｐを“ｔ”，ａｆｔｅｒ  を“ａｆｔ”，ｂｅｆｏｒｅを“ｂｆｒ”，ｒｅｆｆｒｅｎｃｅ  を“ｒｅｆ”，ｄｉｆｆｒｅｎｃｅ  を“ｄｉｆｆ”と簡略化して表現している。例えば，図９のｔ４オブジェクト項表現において，ｔ４は，ｔ１の後にあり，正の無限大の時刻（＋ω）より前にあることを示している。また，ｒｅｆ＝ａｆｔであるので，後続する拍のほうが前の拍より重要な拍であることを示している。ｄｉｆｆ＝３は，ｔ１との時間差が３拍であることを示している。
【０１０３】
ステップＳ２３では，図４に示すオブジェクト項の構文規則に従って，タイムスパン簡約木と時間構造ネットワークをオブジェクト項表現に翻訳する。図１０に，多声旋律のオブジェクト項表現の例を示す。図１０（Ａ）に示す内部構造を持つ多声旋律をオブジェクト項表現すると，図１０（Ｂ）に示すようになる。なお，ここでは前述した予約語の簡略化記載に加えて，ｃｈｏｒｄ  を“ｃｈｄ”，ｎｏｔｅｓ  を“ｎｔｓ”，ｎｏｔｅを“ｎｔ”，ｎｏｔｅＮｕｍｂｅｒを“ｎｎ”，ｄｕｒａｔｉｏｎを“ｄｕｒ”と簡略化して表現している。以上が多声旋律分析の処理である。
【０１０４】
〔編曲の処理〕
次に，図１の楽曲編曲装置１０が行う編曲の処理の流れについて説明する。図１１にその処理フローチャートを示す。また，図１２および図１３に，編曲の処理を説明するための例を示す。
【０１０５】
ステップＳ３０では，編曲対象となる未知の楽曲Ｍを入力する。楽譜による入力，ＭＩＤＩデータによる入力など，入力方法は問わない。ステップＳ３１では，図７で説明した多声旋律分析の処理により，未知の楽曲Ｍについてオブジェクト項表現に変換する。多声旋律分析の結果，図１２に示すＭのような階層構造（グルーピング構造）と時間構造が付加されたオブジェクト項表現が得られる。課題は，これから，編曲結果のＰとしてどのような階層構造と時間構造を持った多声旋律を生成するかである。
【０１０６】
ステップＳ３２では，未知の楽曲Ｍに類似した事例の楽曲Ｍｃ  を，相対的類似度の計算によって事例ベース２１から検索する。これによって，図１２に示すような事例の楽曲Ｍｃ  とその事例の編曲Ｐｃ  とが得られる。
【０１０７】
ステップＳ３３では，未知の楽曲Ｍと事例の楽曲Ｍｃ  との共通部分Ｍａ  を求める。オブジェクト項の共通部分を計算する処理については後述する。
【０１０８】
ステップＳ３４では，事例の楽曲Ｍｃ  から共通部分Ｍａ  への変換Ｆを模倣し，事例の編曲Ｐｃ  を共通部分の編曲Ｐａ  に変換する。編曲アルゴリズムの設計で述べた（式１）のように，共通部分の編曲Ｐａ  は，
Ｐａ  ＝Ｆ（Ｐｃ  ）＝  ｌｕｂ（Ｐｃ  ，Ｍ）        …（式１）
から求められる。図１３（Ａ）にその様子を示す。なお，上下に並んだ白丸の音符は，上または下のどちらかという意味である。実際に最小上界（ｌｕｂ）を計算する際には，隣接した音や１オクターブ離れた音は似ているとみなして「同じ」に準じ，ｌｕｂの結果に残す。
【０１０９】
次に，ステップＳ３５では，未知の楽曲Ｍから前記共通部分Ｍａ  への変換Ｇを模倣して，さらに変換を逆転させて，共通部分の編曲Ｐａ  から未知の楽曲の編曲Ｐを作る。具体的には，編曲アルゴリズムの設計で述べた（式２）のように，未知の楽曲の編曲Ｐは，
Ｐ＝Ｇ−１（Ｐａ  ）＝  ｇｌｂ（Ｐａ  ，Ｍｃ  ）      …（式２）
から求められる。すなわち，ステップＳ３４およびＳ３５による編曲アルゴリズムＡは，図１３（Ｂ）に示すような式の計算になる。なお，図１３（Ｂ）における白丸の音符は，和音の協和を考慮して出力するかどうかを決める。
【０１１０】
Ａ（Ｍ）＝  ｇｌｂ（  ｌｕｂ（Ｍ，Ｐｃ  ），Ｍｃ  ）    …（式３）
ステップＳ３６では，未知の編曲の楽曲Ｐを，指定された形式でディスプレイ，プリンタ，スピーカ，外部記憶装置その他の楽曲出力装置１２に出力する。
【０１１１】
〔相対的類似度の計算〕
図１４は，事例ベース２１の検索等で用いる相対的類似度の計算に関する処理フローチャートである。まず，ステップＳ４０では，相対的類似度を計算したい３つのオブジェクト項ａ，ｂ，ｃ  を入力する。ここで，比較したい類似度は，ａ−ｂ間とａ−ｃ間とする。すなわち，ａ−ｂ間とａ−ｃ間のどちらがより類似しているかを求めるものとする。
【０１１２】
ステップＳ４１では，後述するオブジェクト間の共通部分計算のルーチン（図１５）を呼び出し，ａとｂの共通部分（これをｌａｂとする）を再帰的に計算する。ステップＳ４２では，後述するオブジェクト間の合体部分計算のルーチン（図１６）を呼び出し，ａとｂの合体部分（これをｇａｂとする）を再帰的に計算する。
【０１１３】
同様に，ステップＳ４３では，後述するオブジェクト間の共通部分計算のルーチン（図１５）を呼び出し，ａとｃの共通部分（これをｌａｃとする）を再帰的に計算する。ステップＳ４４では，後述するオブジェクト間の合体部分計算のルーチン（図１６）を呼び出し，ａとｃの合体部分（これをｇａｃとする）を再帰的に計算する。
【０１１４】
ステップＳ４５の判定により，もし，ｌａｃ⊆ｌａｂかつｇａｃ⊇ｇａｂならば，ａ−ｂ間がａ−ｃ間より類似していると認定する（ステップＳ４６）。また，ステップＳ４７の判定により，もし，ｌａｃ⊇ｌａｂかつｇａｃ⊆ｇａｂならば，ａ−ｃ間がａ−ｂ間より類似していると認定する（ステップＳ４８）。それ以外の場合には，どちらが類似しているとも判定できないので，相対的類似度は不明とする（ステップＳ４９）。
【０１１５】
〔オブジェクト項の共通部分計算〕
図１５は，オブジェクト項の共通部分計算に関する処理フローチャートである。ここでは，自ルーチンの中で自ルーチンを呼び出す再帰的な処理を行う。まず，ステップＳ５０では，共通部分を計算したい２つのオブジェクト項ｘ，ｙを入力する。
【０１１６】
もし，ｘとｙが記号で，かつｘ＝ｙならば，解はｘとする。もし，ｘとｙが記号で，かつｘ≠ｙならば，解はトップ（ｔｏｐ）とする（ステップＳ５１〜Ｓ５４）。ここでトップとは，数値でたとえると無限大というように，あらゆる要素の中で最大の要素を意味する。それ以外の場合には，ステップＳ５５へ進む。
【０１１７】
次に，ステップＳ５５では，ｘ，ｙで共通する属性ｚを探す。ステップＳ５６では，ｘのｚ属性値をｘｚとし，ｙのｚ属性値をｙｚとする。その後，ステップＳ５７によって，オブジェクト項の共通部分計算を処理する自ルーチンを呼び出し，ｘｚとｘｙの共通部分ｘｙｚを再帰的に計算する。
【０１１８】
ステップＳ５８では，解のオブジェクト項のｚ属性の属性値をｘｙｚに設定する。その後，共通している全ての属性の処理が終了するまで，ステップＳ５６へ戻り，共通している全ての属性に対する処理を同様に繰り返す（ステップＳ５９）。
【０１１９】
〔オブジェクト項の合体部分計算〕
図１６は，オブジェクト項の合体部分計算に関する処理フローチャートである。ここでは，共通部分の計算の場合と同様に，自ルーチンの中で自ルーチンを呼び出す再帰的な処理を行う。まず，ステップＳ６０では，合体部分を計算したい２つのオブジェクト項ｘ，ｙを入力する。
【０１２０】
もし，ｘとｙが記号で，かつｘ＝ｙならば，解はｘとする。もし，ｘとｙが記号で，かつｘ≠ｙならば，解はボトム（ｂｏｔｔｏｍ）とする（ステップＳ６１〜Ｓ６４）。ここでボトムとは，数値でたとえると無限小というように，あらゆる要素の中で最小の要素を意味する。それ以外の場合には，ステップＳ６５へ進む。
【０１２１】
次に，ステップＳ６５では，ｘ，ｙで共通する属性ｚを探す。なお，共通していない属性をｚ’とする。
【０１２２】
ステップＳ６６では，ｘのｚ属性値をｘｚとし，ｙのｚ属性値をｙｚとする。その後，ステップＳ６７によって，オブジェクト項の合体部分計算を処理する自ルーチンを呼び出し，ｘｚとｙｚの合体部分ｘｙｚを再帰的に計算する。ステップＳ６８では，解のオブジェクト項のｚ属性の属性値をｘｙｚに設定する。
【０１２３】
その後，共通している全ての属性の処理が終了するまで，ステップＳ６６へ戻り，共通している全ての属性に対する処理を同様に繰り返す（ステップＳ６９）。ステップＳ７０では，共通していない属性ｚ’に関して，属性ｚ’とその属性値をそのまま解のオブジェクト項に設定する。
【０１２４】
【実施例】
以下では，実際に本発明を適用した例について説明する。
【０１２５】
１．事例としての  ｅｖｅｎｔオブジェクト
本システムにおける事例は，和声（Ｈ），課題楽曲あるいは旋律パート（Ｍ），それに対する編曲あるいは演奏例（Ｐ）の組から構成される。Ｈは  ｅｖｅｎｔオブジェクトとして表現され，ＭとＰの組はＨを表現する  ｅｖｅｎｔオブジェクトの非固有属性として表現される。
【０１２６】
以下に，非固有属性ｐｌａｙｓ  を持つｅｖｅｎｔ  オブジェクト項の定義例を示す。
0003610017.tif 000007
Ｈは事例楽曲の和音進行に関するグルーピング構造や時間構造を表す。和声の上方は，固有属性  （”／”  の左辺）  を用いて記述されているので，  ｅｖｅｎｔオブジェクトの識別子として機能する。
【０１２７】
ｐｌａｙｓ  は非固有属性であり，固有属性で識別された和声の雰囲気や文脈における編曲を表している。一つの和声に対して複数の課題楽曲とその編曲が考えられるので，ｐｌａｙｓ  属性値は集合となっている。ｐｌａｙｓ  は非固有属性なので，システム動作中にその属性値が変化してもオブジェクトの同一性が保たれる。
【０１２８】
ｐｌａｙオブジェクトのｍｅｌｏｄｙ属性でＭを記述し，ｐｅｒｆｏｒｍ  属性でＰを記述する。一つの課題楽曲に対して複数の編曲が考えられるので，ｐｅｒｆｏｒｍ  属性値は集合となっている。また，Ｈ，Ｍ，  Ｐの全てが  ｅｖｅｎｔオブジェクトによって表現される。Ｈを表現する全  ｅｖｅｎｔオブジェクトが必ず  ｐｌａｙｓ属性を持つとは限らないが，事例である  ｅｖｅｎｔオブジェクトは  ｐｌａｙｓ属性を持つ。
【０１２９】
図１７の例を用いて説明する。図の上方には和声Ｈのタイムスパン簡約木を描いた。ｅ１  は，Ｃ２  を  ｐｒｉｍａｒｙな部分木として，Ｃ１  を  ｓｅｃｏｎｄａｒｙな部分木として持つ  ｅｖｅｎｔオブジェクトを表している。同様に，ｅ２  はＣ３  を  ｐｒｉｍａｒｙな部分木として，ｅ１  を  ｓｅｃｏｎｄａｒｙな部分木として持つような  ｅｖｅｎｔオブジェクトを表している。
【０１３０】
例えばｅ１  を事例とする場合を考える。この事例には，先頭２小節分のＨ，  Ｍ，  Ｐが含まれる。それぞれを表現する  ｅｖｅｎｔオブジェクトをｅＨ  ，ｅＭ  ，ｅＰ  とすると，事例ｅ１  は，
ｅＨ  ／（ｐｌａｙｓ  ＝｛ｐｌａｙ（ｍｅｌｏｄｙ  ＝ｅＭ  ，  ｐｅｒｆｏｒｍ  ＝｛ｅＰ  ｝）  ｝）
と書ける。このとき，ｅＨ  の  ｐｒｉｍａｒｙと  ｓｅｃｏｎｄａｒｙの属性値として，Ｃ１  とＣ２  を表現する  ｅｖｅｎｔオブジェクト（それぞれｅＣ１，  ｅＣ２とする）  が出現している。しかし，ｅＣ１，  ｅＣ２は  ｐｌａｙｓ属性を持つ必要がない。つまり，事例を構成するトップのｅＨ  オブジェクトのみｐｌａｙｓ  属性を持つ。
【０１３１】
ｅｖｅｎｔ  オブジェクトは，その定義から明らかなように再帰的な構造をしている。したがって，事例の粒度は単和音から楽曲全体まで変化し得る。つまり，ｅ１  以外にもｅ２  ，ｅ３  を事例とすることもできるし，逆にＣ１  ，Ｃ２  の個々の和音を事例とすることもできる。
【０１３２】
事例の粒度は，推論を行う範囲  （拍数，小節数）  を規定する。事例の粒度が小さいと１回の推論で生成する編曲の範囲は小さくなる。このとき，類似した事例を多く検索することができるが，大域的な曲の流れを考慮した編曲は難しくなる。一方，粒度が大きいと１回の推論で生成する編曲の範囲は大きくなり，粒度が小さい場合と逆の特徴を示す。本実施例のシステムでは，簡単のため，一つの和音でカバーされた範囲の楽曲部分と編曲部分を一つの事例としている。
【０１３３】
２．事例ベース推論
本システムの事例は，一般に，
ｅＨ  ／（ｐｌａｙｓ  ＝｛ｐｌａｙ（ｍｅｌｏｄｙ  ＝ｅＭ  ，  ｐｅｒｆｏｒｍ＝｛ｅＰ  ｝）  ｝）
のように書ける。ここで，ｅＨ  は楽曲部分の和声を，ｅＭ  は対応する旋律を，ｅＰ  は対応する編曲  （演奏例）  を表している。
【０１３４】
本システムに未知曲が与えられたとき，その和音列をＣ１  ，Ｃ２  ，Ｃ３  ，…とすると，以下のように処理が進む。
（１）事例ベース中からＣｉ  に最も類似したｅＨ  を持つ事例を選ぶ。このとき，前記参考文献１で提案された相対的類似度を用いる。
（２）さらに，未知曲の旋律ｍに最も類似したｅＭ  を持つ事例に絞り込む。
（３）選ばれた事例を用いて，Ｃｉ  のカバーする範囲の編曲Ａ（ｍ）を計算する。
【０１３５】
上記（１）のステップにおいて，先に和声の類似性で事例を選択するのは，編曲という応用の性質を考慮し，和声の類似性の方が旋律の類似性よりも重要であると考えたからである。
【０１３６】
【発明の効果】
本発明に含まれる多声旋律をオブジェクト項として表現する手法や編曲アルゴリズムは，音楽家の内観に比較的忠実である。従って，本発明を利用するユーザ（音楽家）は実世界で作業する場合とほぼ同じメンタルモデルが適用できる。
【０１３７】
本発明に従えば，多声旋律を一旦オブジェクト項で表現してしまうと，後は機械的に計算を進めることができる。よって，恣意的な処理は多声旋律をオブジェクト項表現に変換する部分だけに限定される。もしシステムがユーザの意図に沿わない動作をした場合には，多声旋律をオブジェクト項表現に変換する部分だけを変更，修正すればよい。
【図面の簡単な説明】
【図１】本発明に係る楽曲編曲装置の構成例を示す図である。
【図２】グルーピング構造の例を示す図である。
【図３】時間構造の例を示す図である。
【図４】本システムで用いたオブジェクト項の構文規則の例を示す図である。
【図５】事例に基づく編曲の原理を説明するための図である。
【図６】事例ベースの作成の処理フローチャートである。
【図７】多声旋律分析の処理フローチャートである。
【図８】タイムスパン簡約木の例を示す図である。
【図９】時間構造の分析例を示す図である。
【図１０】多声旋律のオブジェクト項表現の例を示す図である。
【図１１】編曲の処理フローチャートである。
【図１２】編曲の処理を説明するための例を示す図である。
【図１３】編曲の処理を説明するための例を示す図である。
【図１４】相対的類似度の計算に関する処理フローチャートである。
【図１５】オブジェクト項の共通部分計算に関する処理フローチャートである。
【図１６】オブジェクト項の合体部分計算に関する処理フローチャートである。
【図１７】ｅｖｅｎｔオブジェクトによる事例の表現を説明する図である。
【符号の説明】
１０  楽曲編曲装置
１１  楽曲入力装置
１２  楽曲出力装置
１３  楽曲入力部
１４  オブジェクト項表現生成部
１５  事例検索部
１６  相対的類似度計算部
１７  編曲作成部
１８  編曲出力部
２０  事例ベース作成装置
２１  事例ベース
【図１】
0003610017.tif 000008
【図２】
0003610017.tif 000009
【図３】
0003610017.tif 000010
【図４】
0003610017.tif 000011
【図５】
0003610017.tif 000012
【図６】
0003610017.tif 000013
【図７】
0003610017.tif 000014
【図８】
0003610017.tif 000015
【図９】
0003610017.tif 000016
【図１０】
0003610017.tif 000017
【図１１】
0003610017.tif 000018
【図１２】
0003610017.tif 000019
【図１３】
0003610017.tif 000020
【図１４】
0003610017.tif 000021
【図１５】
0003610017.tif 000022
【図１６】
0003610017.tif 000023
【図１７】
0003610017.tif 000024