(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137000
(43)【公開日】2024-10-04
(54)【発明の名称】対位法的旋律の全列挙索引化システム、対位法的旋律の全列挙索引化方法、プログラム、学習支援システム、譜面の表示方法および自動作曲システム
(51)【国際特許分類】
G10G 3/04 20060101AFI20240927BHJP
G09B 15/00 20060101ALI20240927BHJP
G10G 1/00 20060101ALI20240927BHJP
G10H 1/00 20060101ALI20240927BHJP
G06F 16/901 20190101ALI20240927BHJP
【FI】
G10G3/04
G09B15/00 Z
G10G1/00
G10H1/00 102Z
G06F16/901
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023048330
(22)【出願日】2023-03-24
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 令和4年3月31日、国立音楽大学大学院 音楽研究:大学院研究年報第34輯103-118ページ
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】523109149
【氏名又は名称】土屋 憲靖
(74)【代理人】
【識別番号】100120640
【弁理士】
【氏名又は名称】森 幸一
(72)【発明者】
【氏名】土屋 憲靖
【テーマコード(参考)】
5B175
5D182
5D478
【Fターム(参考)】
5B175KA12
5D182AA16
5D182AD05
5D182AD10
5D478GG01
(57)【要約】
【課題】種目対位法の学習規則に則り、様々な音価や休符および臨時記号を含む一般的な旋律を全列挙および索引化することが可能な対位法的旋律の全列挙索引化システムを提供する。
【解決手段】種目対位法において学習規則上可能とされる全ての旋律を列挙および索引化するための対位法的旋律の全列挙索引化システムは、旋律種、旋法、声種、調号、小節数の各情報を入力し、入力した旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成し、旋律全体図に含まれる全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表し、旋律の集合から学習規則に違反する全ての旋律を取り除き、旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
種目対位法において学習規則上可能とされる全ての旋律を列挙および索引化するための対位法的旋律の全列挙索引化システムであって、
旋律種、旋法、声種、調号、小節数の各情報を入力し、
上記入力した旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成し、
上記旋律全体図に含まれる全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表し、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除き、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うように構成されていることを特徴とする対位法的旋律の全列挙索引化システム。
【請求項2】
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除くために、使用不可能とする変位記号の用法を含む集合をrestrict演算で算出すること、使用不可能とする音形を含む集合をrestrict演算で算出すること、および、使用不可能とする旋律の最高音の用法を含む集合をrestrict演算およびフロンティア法を用いて算出することを任意の順序で実行することにより算出された使用不可能な旋律の集合を上記旋律の集合から引き算する請求項1記載の対位法的旋律の全列挙索引化システム。
【請求項3】
種目対位法において学習規則上可能とされる全ての旋律を列挙および索引化するための対位法的旋律の全列挙索引化方法であって、
旋律種、旋法、声種、調号、小節数の各情報を入力するステップと、
上記入力した旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成するステップと、
上記旋律全体図に存在する全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表すステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除くステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うステップとを有することを特徴とする対位法的旋律の全列挙索引化方法。
【請求項4】
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除くステップは、任意の順序で実行する、使用不可能とする変位記号の用法を含む集合をrestrict演算で算出するステップ、使用不可能とする音形を含む集合をrestrict演算で算出するステップ、および、使用不可能とする旋律の最高音の用法を含む集合をrestrict演算およびフロンティア法を用いて算出するステップと、これらのステップを実行することにより算出された使用不可能な旋律の集合を上記旋律の集合から引き算するステップとを有する請求項3記載の対位法的旋律の全列挙索引化方法。
【請求項5】
請求項3または4記載の対位法的旋律の全列挙索引化方法をコンピュータに実行させるためのプログラム。
【請求項6】
種目対位法を学習するための学習支援システムであって、
下記の(1)~(11)で示す方法によって別解を検索する機能を有することを特徴とする学習支援システム。
(1)種目対位法の課題の情報および検索条件、表示件数、答案としての対旋律の各情報を入力とする。
(2)上記入力した情報に基づいて計算済みの解集合の有無を確認し、
上記計算済みの解集合が無のときは(3)に進み、
上記計算済みの解集合が有のときは(10)に進む。
(3)対旋律の条件に合う計算済みの旋律の集合の有無を確認し、
上記対旋律の条件に合う計算済みの旋律の集合が無のときは(4)に進み、
上記対旋律の条件に合う計算済みの旋律の集合が有のときは(5)に進む。
(4)対位法的旋律の全列挙索引化プログラムに対旋律の条件を入力して当該入力した対旋律の条件に合う旋律の集合を算出する。
(5)上記対旋律の条件に合う旋律の集合を読み込む。
(6)上記読み込んだ旋律の集合に対して定旋律との関係について対位法の規則に違反する旋律の集合を算出する。
(7)上記算出した、上記定旋律との関係について学習規則に違反する旋律の集合を上記読み込んだ旋律の集合から取り除くことにより解集合を算出する。
(8)上記解集合の要素数を算出する。
(9)上記入力した課題の情報と上記解集合との組を保存し、(11)に進む。
(10)上記計算済みの解集合が有のときは上記計算済みの解集合を読み込む。
(11)上記入力した検索条件、表示件数、答案としての対旋律の各情報に従って解となる旋律を表示する。
ここで、(4)における対位法的旋律の全列挙索引化プログラムは、
対旋律の旋律種、旋法、対旋律の声種、調号、小節数の各情報を入力するステップと、
上記入力した対旋律の旋律種、旋法、対旋律の声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成するステップと、
上記旋律全体図に存在する全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表すステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除くステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うステップと、
上記算出した旋律の集合を保存するステップとを有する。
【請求項7】
譜面における音高の表し方として下記の(1)~(7)で示す方法を用いる請求項6記載の学習支援システム。
(1)横軸が時間、縦軸が音高を表し、縦線が小節線を表す図を作成する。
(2)五線譜と同様の1オクターブ当たり7つの目盛りを持つ表示(音度に基づく表示)とする。
(3)音高位置を示す線の引き方は、三線譜、主音中心三線譜、大譜表、五線譜の4つの方法から学習者の好みに応じて選択できるようにする。
(4)三線譜は、各オクターブのドに太い線を引き、各オクターブのミとソ(絶対的音高)に細い線を引く方式である。
(5)主音中心三線譜は、各オクターブの主音に太い線を引き、各オクターブの中音(音階の第3音)と属音(音階の第5音)に細い線を引く方式である。
(6)大譜表は、ト音記号の5本とヘ音記号の5本の合わせて10本の線を引く方式である。
(7)五線譜は、声部に対応した音部記号の5本の線を引く方式である。
【請求項8】
譜面における各音符を表示する方法として下記の(1)~(2)で示す方法を用いる請求項6記載の学習支援システム。
(1)音符の形状
・譜面の中で最小の音価(単位の音価)を持つ音符を菱形として表す。
・菱形の中心を時刻と音高に合わせて配置する。
・菱形の横幅は、実際の音価に相当する長さの2倍の長さである。
・菱形の縦幅は、譜面におけるオクターブの幅を7目盛り分の長さとした時の2目盛り分の長さである。また、菱形の縦幅は、譜面におけるオクターブの幅をいかなる目盛り分の長さとした時でも2目盛り分の長さである。
・より長い音価を持つ音符は、菱形を横に重ねて連ねた時の上下の起伏を埋めることで得られる、横長の6角形として表示する。
・同音連打の音は、同音連打がタイでつながって1つの音だった場合の六角形を基に、その六角形を分割した形の五角形や四角形で表される。
(2)音符の意匠
・各音符を表す各図形は、黒または濃い灰色で縁取りされる。
・図形における音価に対応する横方向の幅を濃い色で塗りつぶし、余った左右両側の三角形の部分を薄い色で塗りつぶす。
・変位(シャープまたはフラット)の情報を持つ音符は、シャープの場合、図形における音価に対応する横方向の幅に相当する領域の上半分の領域を黒または濃い灰色で塗りつぶし、フラットの場合、図形における音価に対応する横方向の幅に相当する領域の下半分の領域を黒または濃い灰色で塗りつぶす。
【請求項9】
音域の表示方法として下記の(1)で示す方法を用いる請求項6記載の学習支援システム。
(1)入力対象の声部として特定の声部を選択している時、その声部の音域に相当する領域を半透明の薄い色で塗りつぶす。
【請求項10】
コンピュータを用いた譜面情報の表示方法であって、
譜面における音高の表し方として下記の(1)~(7)で示す方法を用いることを特徴とする譜面情報の表示方法。
(1)横軸が時間、縦軸が音高を表し、縦線が小節線を表す図を作成する。
(2)五線譜と同様の1オクターブ当たり7つの目盛りを持つ表示(音度に基づく表示)とする。
(3)音高位置を示す線の引き方は、三線譜、主音中心三線譜、大譜表、五線譜の4つの方法から学習者の好みに応じて選択できるようにする。
(4)三線譜は、各オクターブのドに太い線を引き、各オクターブのミとソ(絶対的音高)に細い線を引く方式である。
(5)主音中心三線譜は、各オクターブの主音に太い線を引き、各オクターブの中音(音階の第3音)と属音(音階の第5音)に細い線を引く方式である。
(6)大譜表は、ト音記号の5本とヘ音記号の5本の合わせて10本の線を引く方式である。
(7)五線譜は、声部に対応した音部記号の5本の線を引く方式である。
【請求項11】
コンピュータを用いた譜面情報の表示方法であって、
譜面における各音符を表示する方法として下記の(1)~(2)で示す方法を用いることを特徴とする譜面情報の表示方法。
(1)音符の形状
・譜面の中で最小の音価(単位の音価)を持つ音符を菱形として表す。
・菱形の中心を時刻と音高に合わせて配置する。
・菱形の横幅は、実際の音価に相当する長さの2倍の長さである。
・菱形の縦幅は、譜面におけるオクターブの幅を7目盛り分の長さとした時の2目盛り分の長さである。また、菱形の縦幅は、譜面におけるオクターブの幅をいかなる目盛り分の長さとした時でも2目盛り分の長さである。
・より長い音価を持つ音符は、菱形を横に重ねて連ねた時の上下の起伏を埋めることで得られる、横長の6角形として表示する。
・同音連打の音は、同音連打がタイでつながって1つの音だった場合の六角形を基に、その六角形を分割した形の五角形や四角形で表される。
(2)音符の意匠
・各音符を表す各図形は、黒または濃い灰色で縁取りされる。
・図形における音価に対応する横方向の幅を濃い色で塗りつぶし、余った左右両側の三角形の部分を薄い色で塗りつぶす。
・変位(シャープまたはフラット)の情報を持つ音符は、シャープの場合、図形における音価に対応する横方向の幅に相当する領域の上半分の領域を黒または濃い灰色で塗りつぶし、フラットの場合、図形における音価に対応する横方向の幅に相当する領域の下半分の領域を黒または濃い灰色で塗りつぶす。
【請求項12】
カノンと呼ばれる様式の音楽を自動作曲するための自動作曲システムであって、
旋律の集合および音価を入力し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に同時発音される2音に不協和音程が含まれる旋律を集めた第1の集合を算出し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に連続5度または連続8度が含まれる旋律を集めた第2の集合を算出し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に伸ばしている音に対する不協和音程の扱いに関して違反する旋律を集めた第3の集合を算出し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に伸ばしている音に対して増1度音程をなす部分が含まれる旋律を集めた第4の集合を算出し、
上記入力した旋律の集合から上記第1の集合、上記第2の集合、上記第3の集合および上記第4の集合に含まれる全ての旋律を取り除き、
上記入力した旋律の集合から上記第1の集合、上記第2の集合、上記第3の集合および上記第4の集合に含まれる全ての旋律を取り除いた後の旋律の集合について要素数を算出し、
上記入力した旋律の集合および音価と上記入力した旋律の集合から上記第1の集合、上記第2の集合、上記第3の集合および上記第4の集合に含まれる全ての旋律を取り除いた後の旋律の集合との組を保存するように構成されていることを特徴とする自動作曲システム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、対位法的旋律の全列挙索引化システム、対位法的旋律の全列挙索引化方法、プログラム、学習支援システム、譜面の表示方法および自動作曲システムに関する。
【背景技術】
【0002】
対位法は、同時に響く複数の旋律による音楽様式である多声音楽における旋律の美学を実践する作曲技術およびそれを習得する方法を意味する。「点、対、点」すなわち「音符、対、音符」を意味するラテン語punctus contra punctusに由来している。対位法を学習するための体系的な実習法を示した教程を対位法教程と呼ぶ。種目対位法(species counterpoint) (類的対位法とも呼ばれる)は、種目と呼ばれる各学習段階により易しい課題から難しい課題へと段階的に学習できるように設計された対位法教程を指す。種目対位法(応用課題を除く)の実習では、8-13小節程度の定旋律が与えられ、定旋律と同時進行する旋律(対旋律と呼ばれる)を創作することで実習する。対旋律には、音価やリズムに関する5つの種別があり、易しいもの(単純)から難しいもの(複雑)の順に、全音符種、2分音符種、4分音符種、移勢種、華麗種の5種(それぞれ第1-5種とも呼ばれる)がある。種目対位法は、
図56に示すように、2声から4声までの3通りの声部数と5つの種目との組み合わせからなる15の学習段階に分かれている。3声以上の課題は、その課題の中で用いられる最も複雑な旋律の旋律種に基づいて分類される。幾つかの教本には、自由および模倣(または追走またはカノン)と呼ばれる定旋律を伴わない追加の課題がある。
【0003】
種目対位法には、
図57に示すように、パレストリーナ様式とフランスの方式(ここでは「フランス方式」と呼ぶ)とがある。パレストリーナ様式は種目対位法において最も歴史のある代表的様式であり、その教本にはフックス(非特許文献1参照)、イエッペセン(非特許文献2参照)など多数ある。フランス方式の教本には、ケルゲーニ、デュボアらの各著書や、山口(非特許文献3参照)など多数がある。
【0004】
種目対位法はその体系性から作曲のためのアルゴリズムの一種として、あるいはパズルゲームの一種として捉えることができる。すなわち、種目対位法を計算科学的に捉えることで、種目対位法の計算可能性や計算複雑性を考察できる。例えば、無作為に作った旋律が種目対位法の規則に則る確率は、対位法課題の難易度を推量するために有用な定量的情報であると考えられる。
【0005】
種目対位法に関する学習支援システムの先行研究例として、フランス方式を対象とした「地球の旋律線」(非特許文献4参照)と、フランス方式およびパレストリーナ様式の両方を対象とした「Counterpointer」(非特許文献5参照)とがある。ただし、これらの学習支援システムには、解を評価する機能はあるが、解を生成する機能はない。これらの学習支援システムでは音符入力画面に五線譜による記譜法が採用されているが、学習支援システム上での学習は、必ずしも従来の対位法教育のような五線譜を用いた方法を採る必要はない。また、五線譜の採用は、一定のソルフェージュ(読譜)能力が必要となる点で、使用者に対する敷居を高くしてしまうといった欠点がある。また、五線譜は、オクターブ関係の異なる同一の音類(音の種類:ド・レ・ミ・ファ・ソ・ラ・シの7つがある)でもオクターブ位置によって線の上に有ったり、間(五線譜における線と線の間の位置)に有ったりと不統一に表示され、オクターブの関係が把握しづらい。種目対位法においては、音高同士の関係がとても重要であり、オクターブの関係を把握することは重要である。また、種目対位法の課題を解くことは高い集中力を必要とするものであり、より感覚的に音高の関係性が把握できる表示法が望ましい。さらに、教師による実際の学びでは、添削の際により良い音の選び方を教師が学習者に提案したり、既に解かれている良い別解を教師が学習者に例示したりすることで、別解を鑑賞し対位法の奥深さを学ぶといった過程があるが、これらの学習支援システムでは、入力された解に対して、正誤を判定し、および、誤りや注意点の指摘をするのみであり、別解を例示する機能はない。そのため、別解を鑑賞し対位法の奥深さを学ぶといった使用方法が出来なかった。
【0006】
対位法の解を自動生成する試みは、自動作曲に関連する研究としてかねてより注目されており、例えばバッハ様式のコラール(対位法楽曲の一様式)楽曲を生成する研究(非特許文献6、7参照)などがすでに存在する。ただし、これらは学習規則ではなく教師データに基づいていることから、出力に学習規則上の誤りが含まれる問題がある。
【0007】
本発明者は先に、組み合わせ集合の表現に適したデータ構造であるZDD(Zero-suppressed Binary Decision Diagrams: ゼロサプレス型二分決定グラフまたは零抑制二分決定図)およびその計算手法を用いて、類的対位法(種目対位法と同義)における学習規則上の全ての許容解についての全列挙手法の基礎的検討を行った(非特許文献8参照)。この手法は、対象とする対位法課題について、類的対位法の様式をパレストリーナ様式に、課題の範囲を最も基礎的な2声全音符の種目における変位記号を伴わない範囲に限定し、許容解を全列挙および索引化する手法である。しかしながら、この旋律の全列挙索引化手法では、対象とする旋律が2声全音符の種目における変位記号を伴わない範囲に限定されているため、適用範囲が狭かった。
【0008】
一方、種目対位法の教本には、追加の課題としてカノン(追走曲:同じ旋律を複数の声部が異なる時点から開始して同時に奏でる音楽様式)の実習課題が付属することも多い(
図57参照)。カノンもまた対位法の一種であり、カノンの可能性に対する計算科学的研究も、自動作曲への応用や音楽理論の研究のために重要である。非特許文献9には、リズムカノンの数え上げ(全列挙)手法が提案されている。しかしながら、このリズムカノンの数え上げ手法は、音高を持たないリズムに対する数え上げであり、音高を持った旋律による一般的なカノンを対象とするものではない。また、より数学的視点からの数え上げが目的であり、実際の譜例が示されることもなかった。カノンは、一つの旋律だけで楽曲として成立するような特殊な旋律であるから、カノンを列挙することができれば、その手法はカノンの可能性に対する計算科学的な研究成果であるとともに、実用的な自動作曲の手法であると言える。しかしながら、カノンは対位法で規定される厳しい規則を満たす旋律であるから、それを全列挙することは難しい。
【0009】
対位法を用いた自動作曲システムが提案されている(特許文献1、2参照)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2021-135335号公報
【特許文献2】特開2014-170146号公報
【非特許文献】
【0011】
【非特許文献1】J.J.Fux. Gradus Ad Parnassum(Johann Peter van Ghelen, Wien,1725).[坂本良隆訳. 古典対位法(音楽之友社,東京,1950)pp.1-17]
【非特許文献2】K.Jeppesen. Kontrapunkt: Lehrbuch der klassischen Vokalpolyphonie.(Wilhelm Hansen, Denmark, 1931).[柴田南雄・皆川達夫訳 2013 『対位法』音楽之友社 pp.107-117 ]
【非特許文献3】山口博史. パリ音楽院の方式による厳格対位法. (音楽之友社,東京,2012) pp.4-13.
【非特許文献4】[令和4年10月21日検索]、インターネット〈URL:https://www.senzoku-online.jp/CP〉
【非特許文献5】[令和5年2月16日検索]、インターネット〈URL:https://www.ars-nova.com/counterpointer3.html 〉
【非特許文献6】G.Hadjeres, F.Pachet and F.Nielsen. Deepbach: a steerable model for bachchorales generation. In International Conference on Machine Learning(pp.1362-1371).OMLR.(2017).
【非特許文献7】C.Z.A.Huang,T.Cooijmans,A.Roberts,A.Courville and D.Eck.Counterpoint by convolution.arXiv preprint arXiv:1903.07227.(2019).
【非特許文献8】土屋憲靖、三浦雅展、音楽音響研究会資料Vol 40,No.1,MA2021-02,pp.7-12, "類的対位法における許容解についてのZDDを用いた全列挙手法の基礎的検討"
【非特許文献9】Fripertinger, H. Enumeration of non-isomorphic canons. Tatra Mt. Math. Publ, 23(47), 47-57. (2001).
【非特許文献10】ホセ・テホン. パレストリーナ様式による対位法. (音楽之友社,東京,1971, 改訂版 1985) pp.12-31.
【非特許文献11】増田宏三. ルネッサンス対位法:パレストリーナ・スタイルによる. (国立音楽大学,東京,1984) pp.1-7.
【非特許文献12】吉崎清富. 対位法の泉. (東京音楽書院,東京,1987) pp.8-16.
【非特許文献13】ニコローシ・サルヴァトーレ. 古典純粋対位法. 幣原映智日本語校訂. (音楽之友社,東京,1977) pp.79-86.
【非特許文献14】S.Minato.Zero-suppressed BDDs for set manipulation in combinatorial problems.In Proceedings of the 30th International Design Automation Conference pp.272-277.(1993)
【非特許文献15】D.E.Knuth.The art of computer programming,volume 4A:combinatorial algorythms,part 1.(Pearson Education,London,2011) [有澤誠・和田英一監訳,筧一彦・小出洋訳(KADOKAWA, 東京,2017)pp.246-247]
【非特許文献16】T.Inoue, H.Iwashita,J.Kawahara and S.Minato. Graphillion:software library for very large sets of labeled graphs.International Journal onSoftware Tools for Technology Transfer,18(1),pp.57-66.(2016)
【非特許文献17】[令和5年3月23日閲覧]、インターネット〈URL:https://networkx.org/ 〉「NetworkX」
【非特許文献18】ERATO湊離散構造処理系プロジェクト,湊真一編.超高速グラフ列挙アルゴリズム.(森北出版,東京,2015)pp.25-27.127-130
【非特許文献19】Kawahara, J., Inoue, T., Iwashita, H., & Minato, S. I. (2017). Frontier-based search for enumerating all constrained subgraphs with compressed representation. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences,100(9), 1773-1784.
【非特許文献20】[令和5年3月12日閲覧]、インターネット〈URL:https://www.vector.co.jp/soft/win95/art/se093598.html 〉「てきとーシーケンサ」
【非特許文献21】島岡譲 『音楽の理論と実習 I』(音楽之友社,東京,1982)
【発明の概要】
【発明が解決しようとする課題】
【0012】
この発明が解決しようとする課題は、種目対位法の学習規則に則り、様々な音価や休符および臨時記号を含む一般的な旋律を全列挙および索引化することが可能な対位法的旋律の全列挙索引化システムを提供することである。
【0013】
この発明が解決しようとする他の課題は、種目対位法の学習規則に則り、様々な音価や休符および臨時記号を含む一般的な旋律を全列挙および索引化することが可能な対位法的旋律の全列挙索引化方法およびそのプログラムを提供することである。
【0014】
この発明が解決しようとするさらに他の課題は、別解を検索することができることにより学習者が種目対位法を容易に学習することができる学習支援システムを提供することである。
【0015】
この発明が解決しようとするさらに課題は、種目対位法の学習支援システムなどにおいて対位法の学習意図に即した表示方法による音符入力界面を実現することができる譜面の表示方法を提供することである。
【0016】
この発明が解決しようとするさらに他の課題は、音高を含んだ旋律による、カノンと呼ばれる様式の音楽を対象とし、実用的な自動作曲が可能となる自動作曲システムを提供することである。
【課題を解決するための手段】
【0017】
上記課題を解決するために、この発明は、
種目対位法において学習規則上可能とされる全ての旋律を列挙および索引化するための対位法的旋律の全列挙索引化システムであって、
旋律種、旋法、声種、調号、小節数の各情報を入力し、
上記入力した旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成し、
上記旋律全体図に含まれる全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表し、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除き、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うように構成されていることを特徴とする対位法的旋律の全列挙索引化システムである。
【0018】
この発明においては、必要に応じて、旋律の全列挙を行った後、入力した旋律種、旋法、声種、調号、小節数の各情報と学習規則に違反する旋律を取り除いた後の旋律の集合とを組にして保存する。
【0019】
種目対位法は、パレストリーナ様式とフランス方式との双方を含む。この発明においては、パレストリーナ様式についてはフックス(非特許文献1参照)、イエッペセン(非特許文献2参照)を中心にテホン(非特許文献10参照)、増田(非特許文献11参照)、吉崎(非特許文献12参照)、ニコローシ(非特許文献13参照)を参考とし、フランス方式については山口(非特許文献3参照)のみを参考とする。学習規則は、採用する種目対位法の様式や旋律種などに応じて決められる。
【0020】
旋律は、音符と休符との並びである。各音符は時刻(時刻=小節番号-1と定義する)と音高の情報を持ち、音高は音度と変位の2つの情報を持つ。休符は、特殊な値を音度として持つ音符として捉えられる。
【0021】
旋律全体図は、音符と旋律進行に関する全ての選択可能性を表す旋律の見取り図である。規則上使用可能な全ての音符および旋律進行をそれぞれ節点および有向辺として表せば、旋律全体図は無閉路有向グラフ(閉路とは始点と終点を同じくする経路を指す)として表現できる。旋律全体図において各音符は、時刻と音度を座標軸とした座標系の領域に配置された節点として表現され、それらの節点同士は常に時間方向の有向辺で結ばれる。各音符における変位の情報は、座標系とは別の領域に配置された変位を表す節点との辺の接続で表す。
【0022】
ゼロサプレス型二分決定グラフ(ZDDまたは零抑制二分決定図)は二分決定グラフ(BDD: Binary Decision Diagrams)の一種であり、1993年に湊によって提案された(非特許文献14参照)。ZDDは組み合わせ集合の表現に適しており、その構造自体が組み合わせ集合の索引としての性質を持つとされる。ここでは、ZDDの手法を応用することで旋律を効率的に列挙・索引化する。規則に則る旋律の集合をZDDとして表すことは、言い換えれば、あらゆる旋律についてその特徴に基づいて種目対位法の規則への適合を判定できる簡潔な図を作ることである。
【0023】
旋律全体図に含まれる全ての旋律を含む旋律の集合(旋律集合)をZDDとして表す。旋律全体図は、無閉路有向グラフであり、無閉路有向グラフにおける入り口から出口までの経路の集合は、「元の有向グラフと本質的に同じ「形」を持つ」ZDDと対応関係にある(非特許文献15参照)。各旋律は、旋律全体図に対する部分グラフとして表現でき、また部分グラフは、旋律全体図における全ての辺の集合に対する組み合わせとして表現できる。旋律は旋律全体図における辺の組み合わせとして表現できるから、旋律集合は、旋律全体図における辺の組み合わせ集合として表現できる。ここでは、この組み合わせ集合をZDDの形式で扱う。旋律集合において、ZDDは簡約された二分木である。ZDDにおける各節点は、組み合わせ集合における組み合わせの各要素に対応し、各節点から伸びる実線と破線の枝はその節点が示す要素に関する選択の有無をそれぞれ表す。
【0024】
ZDDは含まれる要素の索引として機能するため、ZDDを作成した時点で旋律の索引化は完了している。ここで、旋律の索引化とは、旋律の集合を検索に適した形式に変換することを意味する。すなわち、全ての旋律を予め索引化しておくことで、課題の解答となる旋律を高速に検索できると考えられる。学習者の答案に近い解を高速に探し出し、模範解答として提示するといった応用例が考えられる。
【0025】
旋律の集合から学習規則に違反する全ての旋律を取り除くためには、使用不可能とする変位記号の用法を含む集合をrestrict演算で算出すること、使用不可能とする音形を含む集合をrestrict演算で算出すること、および、使用不可能とする旋律の最高音の用法を含む集合をrestrict演算およびフロンティア法を用いて算出することを任意の順序で実行し、こうして算出された使用不可能な旋律の集合を旋律集合から引き算する、すなわち差集合演算を行う。
【0026】
旋律集合から学習規則に違反する全ての旋律を取り除いた後の旋律集合の要素数を算出することにより旋律の全列挙を行った時点で索引化も行われる。
【0027】
また、この発明は、
種目対位法において学習規則上可能とされる全ての旋律を列挙および索引化するための対位法的旋律の全列挙索引化方法であって、
旋律種、旋法、声種、調号、小節数の各情報を入力するステップと、
上記入力した旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成するステップと、
上記旋律全体図に存在する全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表すステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除くステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うステップとを有することを特徴とする対位法的旋律の全列挙索引化方法である。
【0028】
この発明において、上記の旋律の集合から学習規則に違反する全ての旋律を取り除くステップは、任意の順序で実行する、使用不可能とする変位記号の用法を含む集合をrestrict演算で算出するステップ、使用不可能とする音形を含む集合をrestrict演算で算出するステップ、および、使用不可能とする旋律の最高音の用法を含む集合をrestrict演算およびフロンティア法を用いて算出するステップと、これらのステップを実行することにより算出された使用不可能な旋律の集合を上記の旋律の集合から引き算するステップとを有する。
【0029】
また、この発明は、
上記の対位法的旋律の全列挙索引化方法をコンピュータに実行させるためのプログラムである。
【0030】
これらの対位法的旋律の全列挙索引化方法の発明およびそのプログラムの発明においては、その性質に反しない限り、上述の対位法的旋律の全列挙索引化システムの発明に関連して説明したことが成立する。
【0031】
また、この発明は、
種目対位法を学習するための学習支援システムであって、
下記の(1)~(11)で示す方法によって別解を検索する機能を有することを特徴とする学習支援システムである。
(1)種目対位法の課題の情報および検索条件、表示件数、答案としての対旋律の各情報を入力とする。
(2)上記入力した情報に基づいて計算済みの解集合の有無を確認し、
上記計算済みの解集合が無のときは(3)に進み、
上記計算済みの解集合が有のときは(10)に進む。
(3)対旋律の条件に合う計算済みの旋律の集合の有無を確認し、
上記対旋律の条件に合う計算済みの旋律の集合が無のときは(4)に進み、
上記対旋律の条件に合う計算済みの旋律の集合が有のときは(5)に進む。
(4)対位法的旋律の全列挙索引化プログラムに対旋律の条件を入力して当該入力した対旋律の条件に合う旋律の集合を算出する。
(5)上記対旋律の条件に合う旋律の集合を読み込む。
(6)上記読み込んだ旋律の集合に対して定旋律との関係について対位法の規則に違反する旋律の集合を算出する。
(7)上記算出した、上記定旋律との関係について学習規則に違反する旋律の集合を上記読み込んだ旋律の集合から取り除くことにより解集合を算出する。
(8)上記解集合の要素数を算出する。
(9)上記入力した課題の情報と上記解集合との組を保存し、(11)に進む。
(10)上記計算済みの解集合が有のときは上記計算済みの解集合を読み込む。
(11)上記入力した検索条件、表示件数、答案としての対旋律の各情報に従って解となる旋律を表示する。
ここで、(4)における対位法的旋律の全列挙索引化プログラムは、
対旋律の旋律種、旋法、対旋律の声種、調号、小節数の各情報を入力するステップと、
上記入力した対旋律の旋律種、旋法、対旋律の声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成するステップと、
上記旋律全体図に存在する全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表すステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除くステップと、
上記旋律の集合から上記学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うステップと、
上記算出した旋律の集合を保存するステップとを有する。
【0032】
この学習支援システムの音符入力界面において、譜面における音高の表し方として下記の(1)~(7)で示す方法を用いることができる。
(1)横軸が時間、縦軸が音高を表し、縦線が小節線を表す図を作成する。
(2)五線譜と同様の1オクターブ当たり7つの目盛りを持つ表示(音度に基づく表示)とする。
(3)音高位置を示す線の引き方は、三線譜、主音中心三線譜、大譜表、五線譜の4つの方法から学習者の好みに応じて選択できるようにする。
(4)三線譜は、各オクターブのドに太い線を引き、各オクターブのミとソ(絶対的音高)に細い線を引く方式である。
(5)主音中心三線譜は、各オクターブの主音に太い線を引き、各オクターブの中音(音階の第3音)と属音(音階の第5音)に細い線を引く方式である。
(6)大譜表は、ト音記号の5本とヘ音記号の5本の合わせて10本の線を引く方式である。
(7)五線譜は、声部に対応した音部記号の5本の線を引く方式である。
【0033】
また、この学習支援システムの音符入力界面において、譜面における各音符を表示する方法として下記の(1)~(2)で示す方法を用いることができる。
(1)音符の形状
・譜面の中で最小の音価(単位の音価)を持つ音符を菱形として表す。
・菱形の中心を時刻と音高に合わせて配置する。
・菱形の横幅は、実際の音価に相当する長さの2倍の長さである。
・菱形の縦幅は、譜面におけるオクターブの幅を7目盛り分の長さとした時の2目盛り分の長さである。また、菱形の縦幅は、譜面におけるオクターブの幅をいかなる目盛り分の長さとした時でも2目盛り分の長さである。
・より長い音価を持つ音符は、菱形を横に重ねて連ねた時の上下の起伏を埋めることで得られる、横長の6角形として表示する。
・同音連打の音は、同音連打がタイでつながって1つの音だった場合の六角形を基に、その六角形を分割した形の五角形や四角形で表される。
(2)音符の意匠
・各音符を表す各図形は、黒または濃い灰色で縁取りされる。
・図形における音価に対応する横方向の幅を濃い色で塗りつぶし、余った左右両側の三角形の部分を薄い色で塗りつぶす。
・変位(シャープまたはフラット)の情報を持つ音符は、シャープの場合、図形における音価に対応する横方向の幅に相当する領域の上半分の領域を黒または濃い灰色で塗りつぶし、フラットの場合、図形における音価に対応する横方向の幅に相当する領域の下半分の領域を黒または濃い灰色で塗りつぶす。
【0034】
また、この学習支援システムの音符入力界面において、音域の表示方法として下記の(1)で示す方法を用いることができる。
(1)入力対象の声部として特定の声部を選択している時、その声部の音域に相当する領域を半透明の薄い色で塗りつぶす。
【0035】
この学習支援システムの発明においては、その性質に反しない限り、上述の対位法的旋律の全列挙索引化システムの発明に関連して説明したことが成立する。
【0036】
また、この発明は、
コンピュータを用いた譜面情報の表示方法であって、
譜面における音高の表し方として下記の(1)~(7)で示す方法を用いることを特徴とする譜面情報の表示方法である。
(1)横軸が時間、縦軸が音高を表し、縦線が小節線を表す図を作成する。
(2)五線譜と同様の1オクターブ当たり7つの目盛りを持つ表示(音度に基づく表示)とする。
(3)音高位置を示す線の引き方は、三線譜、主音中心三線譜、大譜表、五線譜の4つの方法から学習者の好みに応じて選択できるようにする。
(4)三線譜は、各オクターブのドに太い線を引き、各オクターブのミとソ(絶対的音高)に細い線を引く方式である。
(5)主音中心三線譜は、各オクターブの主音に太い線を引き、各オクターブの中音(音階の第3音)と属音(音階の第5音)に細い線を引く方式である。
(6)大譜表は、ト音記号の5本とヘ音記号の5本の合わせて10本の線を引く方式である。
(7)五線譜は、声部に対応した音部記号の5本の線を引く方式である。
【0037】
また、この発明は、
コンピュータを用いた譜面情報の表示方法であって、
譜面における各音符を表示する方法として下記の(1)~(2)で示す方法を用いることを特徴とする譜面情報の表示方法である。
(1)音符の形状
・譜面の中で最小の音価(単位の音価)を持つ音符を菱形として表す。
・菱形の中心を時刻と音高に合わせて配置する。
・菱形の横幅は、実際の音価に相当する長さの2倍の長さである。
・菱形の縦幅は、譜面におけるオクターブの幅を7目盛り分の長さとした時の2目盛り分の長さである。また、菱形の縦幅は、譜面におけるオクターブの幅をいかなる目盛り分の長さとした時でも2目盛り分の長さである。
・より長い音価を持つ音符は、菱形を横に重ねて連ねた時の上下の起伏を埋めることで得られる、横長の6角形として表示する。
・同音連打の音は、同音連打がタイでつながって1つの音だった場合の六角形を基に、その六角形を分割した形の五角形や四角形で表される。
(2)音符の意匠
・各音符を表す各図形は、黒または濃い灰色で縁取りされる。
・図形における音価に対応する横方向の幅を濃い色で塗りつぶし、余った左右両側の三角形の部分を薄い色で塗りつぶす。
・変位(シャープまたはフラット)の情報を持つ音符は、シャープの場合、図形における音価に対応する横方向の幅に相当する領域の上半分の領域を黒または濃い灰色で塗りつぶし、フラットの場合、図形における音価に対応する横方向の幅に相当する領域の下半分の領域を黒または濃い灰色で塗りつぶす。
【0038】
また、この発明は、
カノンと呼ばれる様式の音楽を自動作曲するための自動作曲システムであって、
旋律の集合および音価を入力し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に同時発音される2音に不協和音程が含まれる旋律を集めた第1の集合を算出し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に連続5度または連続8度が含まれる旋律を集めた第2の集合を算出し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に伸ばしている音に対する不協和音程の扱いに関して違反する旋律を集めた第3の集合を算出し、
上記入力した旋律の集合から、上記音価の分だけずらして同時に再生する場合に伸ばしている音に対して増1度音程をなす部分が含まれる旋律を集めた第4の集合を算出し、
上記入力した旋律の集合から上記第1の集合、上記第2の集合、上記第3の集合および上記第4の集合に含まれる全ての旋律を取り除き、
上記入力した旋律の集合から上記第1の集合、上記第2の集合、上記第3の集合および上記第4の集合に含まれる全ての旋律を取り除いた後の旋律の集合について要素数を算出し、
上記入力した旋律の集合および音価と上記入力した旋律の集合から上記第1の集合、上記第2の集合、上記第3の集合および上記第4の集合に含まれる全ての旋律を取り除いた後の旋律の集合との組を保存するように構成されていることを特徴とする自動作曲システムである。
【発明の効果】
【0039】
この発明によれば、旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成し、この旋律全体図に含まれる全ての旋律を含む旋律の集合をゼロサプレス型二分決定グラフの形式で表し、この旋律の集合から学習規則に違反する全ての旋律を取り除き、この旋律の集合から学習規則に違反する全ての旋律を取り除いた後の旋律の集合の要素数を算出することにより旋律の全列挙を行うので、非特許文献8のように、2声全音符の種目における変位記号を伴わない範囲に限定されず、種目対位法の学習規則に則り、様々な音価や休符および臨時記号を含む一般的な旋律を全列挙および索引化することが可能である。また、この全列挙および索引化の手法を利用して、別解を検索することができることにより学習者が種目対位法を容易に学習することができる学習支援システムを実現することができる。また、種目対位法の学習支援システムなどにおいて対位法の学習意図に即した表示方法による音符入力界面を実現することができる。また、実用的な自動作曲が可能となる音高を含んだ旋律による、カノンと呼ばれる様式の音楽を対象とする自動作曲システムを実現することができる。
【図面の簡単な説明】
【0040】
【
図1】この発明の第1の実施の形態による旋律全列挙索引化システムの処理フローを示す略線図である。
【
図2】この発明の第1の実施の形態による旋律全列挙索引化システムにおける旋律全体図の構造を説明するための略線図である。
【
図3】
図2に示す旋律全体図をZDDで表現する方法を説明するための略線図である。
【
図4】
図2に示す旋律全体図における「∥→」から「→∥」までの全ての経路を表すZDDを示す略線図である。
【
図5】
図2に示す旋律全体図における変位を含む旋律に対応する全ての部分グラフの集合を表すZDDを示す略線図である。
【
図6】この発明の第1の実施の形態による旋律全列挙索引化システムの具体例において使用できる各声部の音域を示す略線図である。
【
図7】この発明の第1の実施の形態による旋律全列挙索引化システムの具体例における旋律全体図の一例を示す略線図である。
【
図8】旋律集合Pに対する規則17の適用を示す略線図である。
【
図9】旋律集合Pに対する規則18の適用を示す略線図である。
【
図10】
図3の右端に示すZDDに対して要素の全列挙計算の過程で各節点に記録される値を付記した略線図である。
【
図11】エオリア旋法、調号なし、アルト声部を条件とする華麗旋律の全列挙における各小節における各小節数に対する実行時間と実行結果を示す略線図である。
【
図12A】13小節の華麗旋律の集合から無作為に列挙した旋律を示す略線図である。
【
図12B】13小節の華麗旋律の集合から無作為に列挙した旋律を示す略線図である。
【
図12C】13小節の華麗旋律の集合から無作為に列挙した旋律を示す略線図である。
【
図12D】13小節の華麗旋律の集合から無作為に列挙した旋律を示す略線図である。
【
図12E】13小節の華麗旋律の集合から無作為に列挙した旋律を示す略線図である。
【
図13】非特許文献8の手法における旋律全体図の一例を示す略線図である。
【
図14】非特許文献8の手法における旋律集合の表現方法の一例を示す略線図である。
【
図15】この発明の第2の実施の形態による学習支援システムの処理フローを示す略線図である。
【
図16】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図17】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図18】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図19】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図20】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図21】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図22】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図23】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図24】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図25】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図26】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図27】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図28】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図29】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図30】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図31】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図32】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図33】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図34】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図35】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図36】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図37】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図38】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図39】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図40】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図41】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図42】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図43】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図44】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図45】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図46】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図47】4小節の同度カノン集合から無作為に列挙した同度カノンを示す略線図である。
【
図48】4小節の同度カノン集合から順次進行の占める時間の長い順に列挙した時の最初に列挙された同度カノンを示す略線図である。
【
図49】この発明の第2の実施の形態による学習支援システムにおける音符入力界面の譜面の表示方法を説明するための略線図である。
【
図50】この発明の第2の実施の形態による学習支援システムにおける音符入力界面の譜面の表示方法を説明するための略線図である。
【
図51】この発明の第3の実施の形態によるカノン自動作曲システムの処理フローを示す略線図である。
【
図52】
図51に示す処理フローのステップU2の計算法の詳細を示す略線図である。
【
図53】
図51に示す処理フローのステップU3の計算法の詳細を示す略線図である。
【
図54】
図51に示す処理フローのステップU4の計算法の詳細を示す略線図である。
【
図55】
図51に示す処理フローのステップU5の計算法の詳細を示す略線図である。
【
図56】種目対位法の学習段階を示す略線図である。
【発明を実施するための形態】
【0041】
以下、発明を実施するための形態(以下「実施の形態」とする)について説明する。
【0042】
〈第1の実施の形態〉
[対位法旋律の全列挙索引化システム]
図1は第1の実施の形態による対位法旋律の全列挙索引化システム(以下「旋律全列挙索引化システム」とする)の処理フローを示す。この旋律全列挙索引化システムは、種目対位法において学習規則上可能とされる全ての旋律を列挙および索引化するためのものである。
図1に示す処理フローに従ったプログラムを作成し、コンピュータに実行させる。
【0043】
図1に示すように、この旋律全列挙索引化システムにおいては、処理開始後、まず、ステップS1において、旋律種、旋法、声種、調号、小節数の各情報を入力する。入力する情報は、例えば、「華麗種、エオリア旋法、アルト声部、調号なし、13小節」のような情報となる。
【0044】
ステップS2において、ステップS1において入力した旋律種、旋法、声種、調号、小節数の各情報および対位法の規則に基づいて旋律全体図を作成する。ここでは、対位法の規則は、具体的には、対位法の規則において旋律中で使用可能とされる音域、発音時刻、休符、旋律進行および変位記号を限定する各規則である。
【0045】
図2に、旋律全体図の構造を説明するための概略図を示す。旋律全体図とは、列挙される旋律において使用される可能性のある全ての、音符、休符、旋律進行、音符に対する変位記号、の各情報が表された図である。旋律全体図には二次元の直行座標系が含まれ、その縦軸は音度を、その横軸は時刻を、それぞれ表す。
図2における四角い枠で囲まれた部分が座標系の部分である(「・」 の記号が記された点は縦座標の目盛りが無い特殊な位置にあるが、横軸の値が有効であるため座標内とみなしている)。旋律全体図において、座標系の内側に配置される各点は、発音時刻と音度の情報を有し、列挙される旋律に含まれる音符および休符において使用される可能性のある発音時刻と音度の組みを表している。音価の情報を欠くため譜面上の音符および休符とは厳密には異なるが、ここでは「音符点」と呼ぶ。「・」の記号が記された点は、休符において使用される可能性のある発音時刻を表すものであり、時刻0、音度無しの値を持つ特殊な音符点であり、縦座標の目盛りが無い特殊な位置に置かれる。
図2において、座標系の外側に配置される「♯」、「♭」、「∥→」、「→∥」の記号が記された点は、それぞれ嬰記号(♯、シャープ)、変記号(♭、フラット)、開始、終了を表す点である。
図2において、辺に付された数字は識別番号を示す。旋律全体図において、音符点から音符点に接続されている辺は、音符または休符から音符または休符への移り変わりを表すものであり、即ち、旋律進行に当たる情報を表している。ここで、辺の始点と終点との時刻の差は始点が表す音符または休符の音価を表している。旋律全体図において、音符点から嬰記号または変記号に接続されている辺は、列挙される旋律に含まれる音符および休符において使用される可能性のある嬰記号または変記号をそれぞれ表す辺である。
【0046】
ステップS3において、ステップS2において作成した旋律全体図に含まれる全ての旋律を含む旋律の集合をZDDの形式で表す。言い換えれば、旋律全体図を旋律集合形式に変換する。この時点で旋律の集合に含まれる旋律の索引化が行われる。
【0047】
図3は旋律集合をZDDで表現する概念図である。
図3では、一例として
図2に含まれる旋律から任意に選択された9節の旋律の集合をZDDで表現する場合を示す。
図3の左端は楽譜による表現、左から二番目の図は部分グラフの集合、左から三番目の図は組み合わせ集合を示す。
図3のZDDにおける「T」の記号は真の値を示す。旋律全体図との対応を示すため、旋律全体図の分岐と対応関係にある節点同士を水平方向に配置している。
【0048】
図4は、有向グラフとZDDとの対応関係に従って
図2から変換したZDDである。このZDDは
図2における「∥→」から「→∥」までの全ての経路、すなわち変位記号を含まない全ての旋律を表す集合に対応する。
図4において水平に並べられた破線で繋がる複数の節点は、元の有向グラフにおける分岐の辺に対応している。偽(⊥)の節点は、組み合わせ(部分グラフ)が存在しないことを明示的に表す節点である。この例では、7、11、15から伸びる実線の枝が偽の節点へと接続しているため、7、11、15のいずれを含む部分グラフも集合に含まれないと解釈できる。
【0049】
無閉路有向グラフからZDDへの変換では、元のグラフにおける辺とZDDの節点の対応関係を壊さないために、元のグラフにおける辺は、始点からの深さの浅い順かつ同一節点からの分岐が隣接する順序(一般的な幅優先探索でたどる辺の順序、トポロジー順)で番号付けする必要がある。
図4における辺の識別番号は、予めその順序で番号付けされている。
【0050】
図5は、
図2における変位を含む旋律に対応する全ての部分グラフの集合を表すZDDを示し、
図4における変位を表す節点8、12、14から伸びる実線の枝を、偽の節点ではなく後続の節点へと接続することで得られる。変位を表す全ての節点についてそれらの節点から伸びる破線の枝と実線の枝とが、いずれも同一の節点へと接続されることで、組み合わせの選択において変位の要素に関する選択が常に任意であり、すなわち、このZDDに含まれる旋律の中には変位の有無に関する全ての組み合わせが含まれると解釈できるようになる。ただし、この図を得るためには、元のグラフにおける辺の番号付けの順序に関して、同一節点からの分岐において音符同士を繋ぐ辺よりも変位を表す辺が先とする追加の条件が必要となる。
図2における辺の識別番号は、この条件についても満たすよう予め順序付けされている。
【0051】
ステップS4、S5、S6において、それぞれ、使用不可能とする変位記号の用法を含む旋律の集合をrestrict演算で算出し、使用不可能とする音形(旋律の断片)を含む旋律の集合をrestrict演算で算出し、旋律における最高音の用法(対位法の規則)を含む旋律の集合をrestrict演算およびフロンティア法を用いて算出する。ステップS4、S5、S6を実行する順序は任意であり、どのような順序であってもよい。
【0052】
ステップS7において、ステップS4、S5、S6において算出した使用不可能な旋律の集合をステップS3における全ての旋律の集合から差集合演算により取り除く。この時点で索引化が終了する。
【0053】
ステップS8において、ステップS7において旋律の集合から学習規則に違反する旋律を取り除いた後の旋律の集合について要素数を算出することにより旋律の全列挙を行う。旋律の索引化はすでに行われているため、旋律の全列挙および索引化が行われることになる。
【0054】
ステップS9において、ステップS1における入力情報と学習規則に違反する旋律を取り除いた後の旋律の集合とを組にして保存する。こうして処理が終了する。
【0055】
(旋律全列挙索引化システムの具体例)
この旋律全列挙索引化システムの具体例について説明する。種目対位法における最も複雑な種類の旋律を列挙できれば、より単純な種類の旋律の列挙も可能と考えられる。よって、ここでは、種目対位法において最も複雑な旋律種とされる華麗種の旋律を列挙の対象とする。華麗種の規則に則る旋律を華麗旋律と呼ぶ。また、種目対位法としては、パレストリーナ様式を対象とする。従って、ここでは、パレストリーナ様式における華麗旋律を列挙の対象として選択する。
【0056】
パレストリーナ様式における華麗旋律を定義する。厳密な定義に当たっては、教本によって学習規則(定義)が異なることや曖昧な基準による規則が存在することが問題となる。しかしながら、列挙のためには列挙の対象を明確にする必要がある。そこで、可否の判断が曖昧な旋律はなるべく可と定義するものとする。なお、この定義は華麗旋律を定義する方法の一例に過ぎない。ただし、学習規則の規定方法はいずれの様式であっても旋律における各音の関係性について規定する点で同様である。そのため、以下に説明する手法は種目対位法の様式・教本に関わらず有効と考えられる。
【0057】
旋律の定義は、パレストリーナ様式を扱う多くの教本において共通する規則に基づいて行う。また、パレストリーナ様式においては、イエッペセンが学習規則に加えた多くの改良が広く受け入れられたことで、イエッペセンより以前と以降とでは学習規則が大きく異なることから、イエッペセン以降の学習規則を改良後の規則体系として重視する。この具体例で列挙の対象とするパレストリーナ様式の華麗旋律を示す定義は次の通りである。ただし、考慮する対位法の規則は、この例の規則体系に限らず任意である。即ち、この発明の方法を実施する目的に応じて、列挙したい旋律の特徴に従って規則を任意に選択することで、規則体系(旋律の定義)を決定できる。
【0058】
規則1:声部は、ソプラノ、アルト、テノール、バスのいずれかとし、使用できる音域は
図6に示す通りとする。
規則2:拍子は2分の2拍子とする。
規則3:最小の音価は8分音符とし、連符の使用は不可とする。
規則4:休符の使用は、始まりの2分休符または4分休符のみ可とする。
規則5:旋法は、イオニア、ミクソリディア、ドリア、エオリア、フリギアのいずれかとする。
規則6:始まりの音符は、主和音の構成音のいずれかとする。主和音が短三和音である場合、主和音の第3音は休符の後に置くものとする。
規則7:終わりの音符は、主和音の構成音のいずれかとする。主和音が短三和音である場合、主和音の第3音は上方変位させるものとする。
規則8:終わりの音符は全音符または全音符以上の音価とする。
規則9:跛行リズム(ある音価からその音価より長い音価への結合)は不可とする。
規則10:4分音符を始まりとする音価の結合(タイで結んだり付点を付けること)は不可とする。
規則11:旋律進行は、完全4・5・8度、長・短2・3度の上行・下行、短6度上行、タイによる保留、同音連打のいずれかとする。
規則12:同音連打は、終わりの小節の一拍目、および、先取四分音符の音形の2例でのみ可とする。先取四分音符の音形とは、一音目は小節を跨いで4分音符へと結合され2度下行し、二音目は4分音符で同音連打し、三音目は音価が2分音符以上の音符である、三音の音形を指す。
規則13:2回連続して同方向に跳躍する3音の音形について、その3音の1音目と3音目が7度音程または9度以上の音程をなすものは不可とする。また、2回の跳躍進行のうちの低い方にある跳躍音程の度数が高い方にある跳躍音程の度数よりも小さいものは不可とする。
規則14:オクターブ進行の直後は反対方向へ進行するものとする。
規則15:臨時記号による下方変位は、ドリア旋法の下中音(旋法における第6音)、エオリア旋法の上主音(第2音)、ミクソリディア旋法の上中音(第3音)、イオニア旋法の下主音(第7音)に対してのみ可能とする。
規則16:ドリア旋法、ミクソリディア旋法、エオリア旋法の終止では、主音による最終音の直前の「小節」にある下主音は必ず上方変位させるものとする。上方変位された下主音は順次進行するものとし、下行する場合、次は必ず上行するものとする。エオリア旋法では、上方変位された下主音の直前にある下中音は必ず上方変位させるものとする。また、上方変位された下中音の直前にある下主音は上方変位させるものとする。上方変位は、この規則と規則7の用法でのみ可とする。
規則17:旋律の最高音と最低音の間の音程は12度までとする。
規則18:旋律に含まれる音符の中で最も音度の高い音符を頂点と呼び、頂点は旋律の中間に一箇所にのみ存在するものとする。
規則19:拍点にある4分音符からの上行跳躍は不可とする。
規則20:跳躍して4分音符に至った後に同方向に跳躍することは不可とする。
規則21:四分音符から跳躍下行した後に続けて更に下行することは不可とする。
規則22:4分音符または8分音符から4度以上の跳躍上行をした後に続けてさらに上行することは不可とする。
規則23:拍点から始まる4音の4分音符が、跳躍下行、上行、跳躍下行の音形をなすことは不可とする。
規則24:拍点から始まる4音の4分音符が、2度上行、2度下行、2度上行の音形をなすことは不可とする。
規則25:8分音符は拍を4分割したときの3つ目と4つ目の時間に2つ続けて順次進行で用いる。
規則26:8分音符に至る進行は順次進行とする。
規則27:8分音符から2度上行した先の8分音符は2度上行するものとする。
規則28:8分音符から2度下行した先の8分音符は跳躍下行しないものとする。
規則29:同じ音価の4音で1音目と3音目が同一音高かつ2音目と4音目が同一音高かつ跳躍のみによる音形は不可とする。(例:ド・ファ・ド・ファは不可)。
【0059】
ステップS1において入力する、旋律種、旋法、声種、調号、小節数の各情報について説明する。旋律種は、全音符種、2分音符種、4部音符種、移勢種、華麗種の5つのいずれかである。旋法は、規則5により、イオニア、ミクソリディア、ドリア、エオリア、フリギアのいずれかである。声種は、規則1によりソプラノ、アルト、テノール、バスのいずれかである。調号は、任意のものを指定できる。ただし、対位法学習における慣例上、調号無しまたは♭1つのいずれかが普通である。小節数は、対位法の課題における定旋律の長さが8から13小節であることから、8から13までの自然数を想定している。ステップS1において入力された情報は、ステップS2で旋律全体図を構築するために必要な旋律中で使用可能とされる各条件を決定するために用いられる。
【0060】
ステップS2について説明する。ステップS1 で入力された旋律種を華麗種とし上記の規則体系に基づいて旋律全体図を作成する場合、ステップS2において考慮される、旋律中で使用可能とされる音域、発音時刻、音符、休符、旋律進行および変位記号を限定する規則は、上記の規則1、2、3、4、5、6、7、8、9、10、11、12、15、16、19、25、26の各規則となる。
【0061】
図7に、入力を「華麗種、エオリア旋法、アルト声部、調号なし、3小節」とし、上記の規則体系を基に作成された旋律全体図の一例を示す。小節数は通常8から13小節であるが、図としては表示するには複雑になりすぎるため、図として例示するためにここでは3小節とした。
図7の縦軸における目盛りは、使用可能な各音度を表している。ここでは、一点ハ音から一点ロ音までの音域にある主音の音度を0として設定する。この図の例では、その音域にある主音は一点イ音であり、これを0として規則1に基づいて計算すると、使用可能な音域は-8から4となる。すなわち-8から4までの13個の整数が使用可能な音度となる。
【0062】
図7の縦軸における目盛りは、発音時刻として使用可能な各時刻を表している。時刻は実数として表現され、その整数部分は小節を、その小数部分は小節内における発音時刻を表す。使用可能な発音時刻は旋律種と小節数によって決定される。最も単純な旋律種である全音符種の場合は、全音符のみを用いることができる。よって小節数個の整数の集合となる。例えば小節数が8小節なら{0,1,2,3,4,5,6,7}となる。最も複雑な旋律種である華麗旋律の場合は、規則2、3、25から、小節内における発音時刻として使用可能な小数部分は0,1/4,3/8,1/2,3/4,7/8となる。また、規則8から、最終小節でのみ小数は用い得ない。よって、小節数nに対して、{m+a,n-1|m∈N∧0≦m<n-1∧a∈{0,1/4,3/8,1/2,3/4,7/8}}に含まれるa(m-2)+1個の実数が、発音時刻として使用可能な時刻となる。
図7の例では、{0,1/4,3/8,1/2,3/4,7/8,1+1/4,1+3/8,1+1/2,1+3/4,1+7/8,2}の13個が使用可能な各時刻である。ただし、
図7では整数以外の目盛りの数の表示は省略している。
【0063】
音符、休符、変位記号を表す各節点は、各規則に基づいて使用される可能性のあるものを全て置く。例えば、規則6、7により、0とn-1の時刻については、主和音以外の音度は使用できない。そのため、
図7では、0とn-1の時刻では、主和音以外の音度は置かれていないことが見て取れる。
【0064】
旋律進行や各情報を表す各辺もまた、各規則に基づいて使用される可能性のあるものを全て置く。まず、規則9、10に基づいて、旋律進行として可能な発音時刻と消音時刻の全ての組を算出する。次に、全ての組に対して、規則11、19、25、12に基づいて、使用可能な全ての旋律進行に対応する有向辺を引く。また次に、規則4に基づいて、時刻0に置かれた休符から、進行可能な各音符の節点へと辺を引く。最後に、規則5、15、16に基づいて、変位され得る音符の節点から変位を表す節点へと辺を引く。
【0065】
ステップS3において、ステップS2において作成された旋律全体図に存在する全ての旋律を含む旋律集合をZDDの形式で表す。
【0066】
この具体例では算譜言語PythonでZDDを扱うライブラリーであるGraphillion (非特許文献16参照)を用いる。そのため、無閉路有向グラフの形式で表された旋律全体図をGraphillion の仕様に合わせた形式のZDDへと変換する。
【0067】
具体的には次に示すPythonプログラム函数「ZDD 言」に各引数を与えることでGraphil
lionの仕様に合わせた形式のZDDへと変換でき、返り値としてZDDを表す文字列が得られる。ここではGraphillion の仕様に合わせるという目的のため、計算方法ではなくプログラムコードそのものを記載する。第一引数の「旋律全体図」の型は、Pythonでグラフを扱うためのライブラリであるNetworkX(非特許文献17参照)において有向グラフを表すnetworkx.DiGraph型である。第2、第3、第4引数の「おわり点」、「変点」、「嬰点」はそれぞれ、終わりの節点(
図2で言うところの「→∥」が記された節点)、フラットを表す節点、シャープを表す節点であり、第一引数の「旋律全体図」において節点として含まれる任意の型のオブジェクトである。
【0068】
def ZDD 言( 旋律全体図: networkx.DiGraph, おわり点, 変点, 嬰点):
def時刻順変位点優先全体辺列( 旋律全体図):
時刻順全点 = sorted(list( 旋律全体図.nodes))
時刻順変位点優先辺列 = [( 点,j) for 点 in 時刻順全点 for j in
sorted(list( 旋律全体図.neighbors( 点)))[::-1] ]
return 時刻順変位点優先辺列
時刻順変位点優先辺列辞書 ={番+1: 辺 for 番, 辺 in enumerate(時刻順変位点優先旋律全体図辺列( 旋律全体図))}
時刻順変位点優先辺列逆引き辞書 ={j:i for i,j in 時刻順変位点優先辺列辞書.items()}
ZDD 節点列=[]
for 鍵, 辺 in 時刻順変位点優先辺列辞書.items():
# 偽枝
if鍵 == len(時刻順変位点優先辺列辞書):# 最後の辺なら
偽枝 = "B" #偽枝を偽につなぐ
elif辺[0] ==時刻順変位点優先辺列辞書[ 鍵+1][0]:#次の辺が同じ音符点始まりの辺なら
偽枝 =鍵+1 #偽枝を次の辺につなぐ
else: # 次の辺が異なる音符点始まりの辺なら
偽枝 = "B" #偽枝を偽につなぐ
# 真枝
if辺[1] ==おわり点:
真枝 = "T"
elif辺[1] in{変点, 嬰点}: # 変位点( おわり点以外の末端) につながっているなら
真枝 =鍵+1 #真枝を次の辺につなぐ
else:
次点 =sorted(list(旋律全体図.neighbors( 辺[1])))[::-1][0]
真枝 =時刻順変位点優先辺列逆引き辞書[(辺[1],次点)]
ZDD 節点列.append(f"{鍵}{鍵}{偽枝}{真枝}")
return "\n".join(ZDD節点列[::-1])
【0069】
函数「ZDD 言」によって返り値として得られたZDDを表す文字列は、次に示すpythonコードでGraphillion に読み込ませることで、pythonプログラムの中でZDDを扱うことができるようになる。
【0070】
graphillion.GraphSet.set_universe( 旋律全体図の辺の列 ,traversal="as-is")
旋律集合ZDD=graphillion.GraphSet.loads( 文字列)
【0071】
ZDDの形式で表された旋律集合から、規則に違反する全ての旋律を取り除く。ここでは、旋律集合から特定の規則に違反する全ての旋律を取り除くことを、旋律集合に対するその規則の「適用」と表現する。
【0072】
ステップS4、S5、S6、S7におけるrestrict演算および差集合演算は次のようにして行う。
【0073】
旋律全体図(および旋律集合)の構築時点で既に適用済みの規則は、規則1、2、3、4、5、6、8、9、10、15、19、25の各規則である。これ以外の規則は、たとえ構築の手順で考慮済みであっても完全に適用できていない(規則に違反する旋律が旋律集合に含まれるため)ため、この手順において完全に適用する(違反する旋律を旋律集合から取り除く)必要がある。
【0074】
(特定の音形を不可とする規則の適用)
規則12、13、14、20、21、22、23、24、26、27、28は、特定の条件を満たす音形の使用を不可とするものである。各音形は、旋律全体図に含まれる各部分グラフに対応している。従って、これらの規則は、規則に違反する部分グラフを含む全ての旋律を旋律集合から取り除くことで適用する。特定の部分グラフを含む旋律の除去には、Graphillion に実装された差集合演算およびrestrict演算を用いる。これらの演算はいずれも、ZDDの形式による組み合わせ集合を項とする組み合わせ集合演算である。差集合演算は、従来の集合演算と同様に、
【数1】
と定義される。restrict演算は、2つの組み合わせ集合P、Qに関するrestrict(P,Q)について、Pに属する組み合わせのうち、Qに属する少なくとも一つの組み合わせを包含するものだけを集めたZDDと定義される。
【0075】
ある旋律集合Pに対して、各規則で不可とされる全ての部分を含んだZDDをQと置けば、いずれかの規則に違反する旋律の集合は、下記の式(1)で得ることができる。よって、下記の式(2)のように差集合演算によって違反する旋律を取り除くことで各規則を適用できる。
【0076】
restrict(P,Q) (1)
P\restrict(P,Q) (2)
【0077】
(変位に関する制約を伴う規則の適用)
規則7、11、16は、変位(♯や♭)に関する規則である。旋律全体図において各音符の変位は、変位を表す辺(音符を表す節点と変位記号を表す節点とを接続する辺)で表される。従って、これらの規則は、制約を受ける各音符に関して変位を表す辺の有無の条件を満たさない全ての旋律を旋律集合から取り除くことで適用する。規則7、11については、変位に関する制約と特定の音形に関する制約とを同時に含むため、ここで述べる計算と上述の音形に関する計算とを組み合わせて用いることで適用できる。
【0078】
ある音符に対して変位が不可とされる場合、その条件を満たさない旋律を表すグラフは、その音符のその変位を表す辺(その音符を表す節点とその変位を表す節点とを接続する辺)を含む全てのグラフとなるから、旋律集合をPとしその辺をaとすれば、式(1)と同様のrestrict演算restrict(P,{{a}})で得ることができる。従って条件を満たす旋律集合は、式(2)と同様の差集合演算P\restrict(P,{{a}})で得ることができる。全体図に含まれる全ての音符に対してこれを繰り返すことで規則を適用できる。
【0079】
ある音符に対し何れかの変位の使用が必要とされる場合、その条件を満たさない旋律を表すグラフは、その音符を表す節点を含み且つその音符のその変位を表す辺を含まない全てのグラフとなる。任意の旋律集合Pに対して、任意の節点を含むことを条件とする旋律集合は、その節点に接続する各辺を要素とした各組み合わせを要素とする組み合わせ集合をSとしたときのrestrict(P,S)で得ることができる。よって、必要とされる変位の辺をaとすれば、条件を満たさない旋律集合は、式(2)と同様の差集合演算restrict(P,S)\restrict(restrict(P,S),{{a}})で得ることができる。条件を満たす旋律集合は、同様の差集合演算P\restrict(P,S)\restrict(restrict(P,S),{{a}})で得ることができる。
【0080】
(旋律の最高音や最低音に関する規則の適用)
規則17、18は、旋律における最高音や最低音に関する規則である。
【0081】
規則17は、旋律の最高音と最低音との音程について一定以上(13度以上)の音程をなすことを不可とする規則である。
図8に任意の旋律集合から規則17に違反する旋律を取り除く(規則を適用する)計算法(計算法1)を示す。
図8のGraphSet({”exclude
”:s})は、辺の集合sに含まれるいずれの辺も含まない組み合わせ集合を表し、この計算にはフロンティア法が用いられる。フロンティア法とは、節点や辺に関する与えられた条件に合う全ての組み合わせを要素とするZDDを効率的に算出するアルゴリズムであり、動的計画法の一種である(非特許文献18参照)。
【0082】
規則18は、最高音の時間的位置と回数を制限する規則である。
図9に任意の旋律集合から規則18に違反する旋律を取り除く(規則を適用する)計算法(計算法2)を示す。
【0083】
(旋律の全列挙(数え上げ))
ステップS8において、全ての規則が適用された旋律集合に対して、その要素数を算出することで全列挙(数え上げ)を行う。ここではGraphillion の機能を用いて数え上げを行うが、数え上げに掛かる計算時間についての理解のためにZDDを用いた数え上げの仕組みについて説明する。
【0084】
全列挙(数え上げ)の計算は次の方法で行うことができる。すなわち、真の節点に接続する節点から順に、各節点に対して真の節点へと繋がる道の本数を記録する。
図3の右端に示したZDDに対して、要素の全列挙の過程で各節点へと記録される値を付記した図を
図10に示す。この時、各節点に記録される値はその節点から伸びた枝の先にある高々2つの節点に記録された値の和となる。最終的に1つ目の要素を表す節点に記録される値が、要素数となる。要素の全列挙(要素数の数え上げ)は、ZDDに含まれる節点の数と同じ回数の加算で、ZDDの節点数が十分に小さければ短時間での計算が可能となる。
【0085】
(実行結果と実行時間)
この具体例における定義に基づく華麗旋律について、エオリア旋法、調号なし、アルト声部を条件とし、小節数をnとした時の、n≦13までの全列挙・索引化に成功した。旋律の条件を入力してから全列挙・索引化までにかかる実行時間は14792秒で、列挙・索引化された旋律の総数は74澗(7.4×10
37)節であった。種目対位法の旋律の長さは最長で13小節であり、13小節までの全列挙・索引化に成功したことは、本発明は種目対位法のための全列挙・索引化手法として実用的であることを示しているといえる。索引化に掛かる実行時間と実行結果、および回帰分析の結果を
図11に示す。計算に用いた実行環境は下記の通りである。なお、
図11において、eは自然対数の底である
【0086】
実行環境
計算機 MacBook pro (M1,2020) Apple
処理装置 M1Max
記憶装置の容量 64ギガオクテット
算譜言語 Python 3.10.5
ライブラリー Graphillion 1.5
【0087】
索引から旋律を全列挙するのに掛かる時間は、小節数13の索引で、23.9±3.94ミリ秒である。
【0088】
(結果に対する考察)
図11の、規則に則る旋律の数を旋律全体図に含まれる旋律の数で割った値は、選択できる音と進行を無作為に選んで作られた旋律が規則に則る旋律となる確率と言える。比較的多くの旋律が可と判定されるようにした本論の定義においてでさえも、種目対位法における一般的な課題における最も少ない小節数であるn=8においてその確率は約1兆分の1であり、更に小節数が増えるごとに羃指数関数的に小さくなる。作為的に音を選んだ場合とは異なるため、このことは種目対位法の難易度とは直接関係しないが、無作為に音を選ぶ方法で規則に則る旋律を作ることの難しさを定量的に示していると考えられる。
【0089】
13小節の索引から無作為に列挙した5節の旋律を
図12A、
図12B、
図12C、
図12Dおよび
図12Eに示す。いずれの旋律も本論の定義した規則に則る旋律であった。ただし、8 分音符が多すぎる部分、跳躍が多すぎる部分など、実際の種目対位法の解として用いるには適さない部分も含んでいた。これは本論で用いた解の定義が、種目対位法においてあくまでも許容される解であり、良好な解ではないためである。より実用的に利用するには、より審美的視点から旋律を更に詳細に絞り込んだり、評価基準に基づいて良い要素を持つ旋律を優先的に、悪い要素を持つ旋律を劣後的に列挙するなどの工夫が必要である。
【0090】
以上のように、この第1の実施の形態による旋律全列挙索引化システムによれば、旋律中で使用可能とする発音時刻、音域、休符、旋律進行および変位記号の条件に基づいて旋律全体図を作成し、この旋律全体図に存在する全ての旋律を含む旋律集合をゼロサプレス型二分決定グラフの形式で表し、旋律集合から学習規則に違反する全ての旋律を取り除き、旋律集合から学習規則に違反する全ての旋律を取り除いた後の旋律集合の要素数を算出することにより旋律の全列挙を行うので、非特許文献4のように、2声全音符の種目における変位記号を伴わない範囲に限定されず、種目対位法の学習規則に則り、様々な音価や休符および臨時記号を含む一般的な旋律を全列挙および索引化することが可能である。この旋律全列挙索引化システムは、種目対位法に関する学習支援システム、あるいはさらに自動作曲システムの構築に用いて好適なものである。
【0091】
この第1の実施の形態による旋律全列挙索引化システムは、非特許文献8の手法に比べて適用範囲が広いことは上述の通りであるが、そのほかにも以下の点で優位性がある。
【0092】
非特許文献8の手法における旋律全体図の例を
図13に示す。非特許文献8の手法では、旋律全体図における辺は常に隣接する時刻に対してのみ接続するものとされていた。一方、この第1の実施の形態では、旋律全体図における辺は隣接しない時刻へも接続しており、旋律全体図の構造が本質的に異なっている。これにより、辺の接続先の時刻によって音符および休符における様々な音価が表現される。
【0093】
非特許文献8の手法における旋律の表現方法を示した図を
図14に示す。非特許文献8の手法では、旋律は、旋律全体図上の一本の路(みち、グラフの一種で分岐を含まないもの)として表現される。これに対して、この第1の実施の形態では、旋律が変位記号を含む場合、旋律は、変位記号を表す節点への分岐を含むグラフとして表される。これにより、実際の譜面の情報と近い形で旋律の情報をグラフとして表現することが実現できる。
【0094】
非特許文献15では無閉路有向グラフと、そのグラフに含まれるすべての路を表すZDDとの間の関係が示されている。非特許文献8の手法ではこの関係性に従って、無閉路有向グラフである旋律全体図をZDDに変換していた。しかし、この第1の実施の形態では、旋律は、変位記号を表す節点への分岐を含むグラフで表される場合があるため、非特許文献8の変換手法をそのまま適用することができない。そこで、この第1の実施の形態では、変位記号を表す節点への分岐を含むグラフを含めてZDDへと変換する手法を新たに考案している。
【0095】
非特許文献8の手法では、種目対位法の解を列挙する際、旋律全体図を構築する時点で定旋律を条件に含めている。そのため、定旋律(およびその他の条件)ごとに旋律全体図の構築から解の列挙までの計算を行う必要があった。これに対して、この一実施の形態では、定旋律を指定せず旋律全体図を作り、更に対位法旋律の索引化までを行い、その後で定旋律を条件とした旋律(解)の絞り込みを行う。これにより、異なる定旋律でも、対旋律に関するその他の5つの条件(旋律種、旋法、声種、調号、小節数)が同じであれば、既に計算された旋律の索引がある場合は索引を読み込むことで、旋律全体図の構築から旋律に対する対位法的規則の適用(規則に違反する旋律の除去)までの計算を省略することができる。読み込んだ後は定旋律との関係に関する規則を適用することで解の集合を得ることができる。
【0096】
非特許文献8の手法では、
図1のステップS4、S5、S6に当たる計算に、非特許文献19で提案されたフロンティア法を用いていた。フロンティア法はZDDを効率的に構築する計算手法である。しかし、全く同じ計算をrestrict演算でより高速に実行できることが分かったため、この一実施の形態では、restrict演算による手法を採用している。使用する演算を変えたことで、同じ計算の場合、非特許文献8の手法よりも速く計算できる。
【0097】
〈第2の実施の形態〉
[学習支援システム]
図15は第2の実施の形態による学習支援システムの処理フローを示す。この学習支援システムは、学習者の種目対位法の学習を支援するためのものである。ここでは、二声課題の解の全列挙および索引化を含む。
図15に示す処理フローに従ったプログラムを作成し、コンピュータに実行させる。
【0098】
(旋律の索引を用いた二声課題の解の全列挙および索引化)
定旋律の情報を入力とし、上記手法で得られた対位法旋律の索引に対して、定旋律との関係性に関する条件で旋律を絞り込むことで、定旋律と同時進行するのに適した旋律、すなわち二声課題の解となる対旋律の索引(集合)をZDDの形式で得ることができ、それらの解を全列挙できる。
【0099】
学習支援システムにおける解の検索といった、より実用的な用途のためには、表示の待ち時間を減らすことが、使用者の負担を軽減するために有効である。旋律の索引は、予め計算しストレージに保存しておくことができるため、保存された解を読み込んで利用することで、検索結果を速く得ることができる。
【0100】
異なる定旋律による課題でも、対旋律に関する条件が同一であれば、その条件の基で予め計算された対位法旋律の索引(集合)を読み込むことで、対位法旋律を索引化する過程を省略できる。対位法旋律の索引を読み込んだ後、定旋律との関係について対位法規則に違反する旋律を取り除けば、解の集合が得られる。
【0101】
図15に示すように、この学習支援システムにおいては、処理開始後、まず、ステップT1において、種目対位法の課題(二声)の情報(対旋律の旋律種、定旋律、定旋律の声種、対旋律の声種、調号)および検索条件、表示件数、答案としての対旋律(任意)の各情報を入力する。定旋律には旋法および小節数の情報も含まれる。検索条件については後述する。
【0102】
ステップT2において、ステップT1において入力した情報に基づいて、ストレージにおける計算済みの解集合の有無を確認する。
【0103】
ステップT2においてストレージに計算済みの解集合が無と判断されたときは、ステップT3において、ストレージにおける、対旋律の条件(対旋律の旋律種、旋法、対旋律の声種、調号、小節数)に合う計算済み旋律集合の有無を確認する。
【0104】
ステップT3において対旋律の条件に合う計算済み旋律集合が無と判断されたときは、ステップT4において、第1の実施の形態による旋律全列挙索引化システムの対位法的旋律の全列挙索引化プログラムに対旋律の条件(対旋律の旋律種、旋法、対旋律の声種、調号、小節数)を入力し計算終了を待つ。
【0105】
ステップT5において、ステップT4において算出した、対旋律の条件に合う旋律の集合をメモリに読み込む。ステップT3において対旋律の条件に合う計算済み旋律集合が有と判断されたときは、直接ステップT5に進んで対旋律の条件に合う旋律の集合をメモリに読み込む。このように、ステップT3では、対旋律に関する条件が同一であるような予め索引化された対位法的旋律の有無を確認し、有る場合はそれを読み込むことでステップT4の計算を省略している。
【0106】
ステップT6において、ステップT5で読み込んだ、対旋律の条件に合う旋律の集合に基づいて、定旋律との関係について対位法の規則に違反する旋律の集合を計算する。
【0107】
ステップT6において算出した、定旋律との関係について対位法の規則に違反する旋律の集合を、ステップT5で読み込んだ、対旋律の条件に合う旋律の集合から差集合演算により取り除く。この時点で解の索引化が終了する。
【0108】
ステップT8において、ステップT7において差集合演算により得られた解集合の要素数を算出する。この時点で解の全列挙が終了する。
【0109】
ステップT9において、ステップT1において入力した課題の情報と解の集合との組をストレージに保存する。
【0110】
ステップT10において、ステップT9において保存した課題の情報と解の集合との組から、検索条件、表示件数、答案としての対旋律の3つの情報に従って、解を表示する。ステップT2においてストレージに計算済みの解集合が有と判断されたときは、ステップT3bにおいて、計算済みの解集合を読み込み、直接ステップT10に進んで、解を表示する。こうすることで、ステップT3からステップT9までの計算を省略することができる。こうして処理が終了する。
【0111】
(旋律の索引を引いた検索)
旋律の列挙に際して、ZDDの各節点への重み付けによる解析手法(非特許文献18参照)を用いることで、重みの合計順で対応する旋律を列挙できる。各節点は旋律全体図上の辺に対応し、辺は旋律進行または変位を表しているから、この手法によって特定の旋律進行や変位を含んだ旋律を優先的に列挙できる。旋律進行の良好度に応じて重み付けすることで、解の検索機能への応用が可能である。
【0112】
ステップT1の入力における検索条件の内容について述べる。
【0113】
具体的な検索条件として次の6つの要素が指定でき、それぞれに重みの数を設定できる。
・順次進行(二度進行)
・反行(一方の声部が上行すると同時にもう一方の声部が下行する)
・入力された答案と共通の旋律進行
・保留
・変位
・同方向同時跳躍
【0114】
これらの要素は旋律全体図における各辺が持つ音楽的特徴である。それぞれの要素に設定された値の合計値が各辺の重みの値となる。例えば、順次進行を1、反行を2と設定する場合、順次進行で且つ反行となる旋律進行を表す辺の重みは、1+2=3と計算される。
【0115】
上記の要素の内、順次進行、反行、の2つは対位法において良いとされる要素であり、保留、変位、同方向同時跳躍の3つは対位法においてなるべく避ける方が良いとされる要素である。良いとされる要素には正の数を、避けるほうが良いとされる要素には負の数を設定することで、より良い旋律を優先して列挙するための重み付けが可能となる。また、「入力された答案と共通の旋律進行」の要素は、入力した答案との類似度に関するものであり、入力した答案と類似した解を検索するために役立つ。この値を高く設定することで類似した解を検索でき、0に設定することで入力した答案に関係なく全ての解を平等に検索でき、また、負の値に設定することで入力した答案と遠い解を検索できる。
【0116】
より良い旋律を優先して列挙するための重み付け設定の一例を下記に示す。
・順次進行:1
・反行:1
・入力された答案と共通の旋律進行:0または4
・保留:-3
・変位:-1
・同方向同時跳躍:-2
【0117】
この学習支援システムにおける音符入力界面について説明する。
【0118】
(譜面の表示方法)
五線譜や従来のシーケンサソフトの表示方法に代わる譜面の表示方法として、次の特徴を持つ表示方法を用いることができる。
【0119】
この第2の実施の形態による学習支援システムの音符入力画面における譜面情報の表示例と、五線譜で表された同じ旋律との対応関係を
図49および
図50(旋律表示例)に示す。各図の上部が三線譜による譜面の表示方法を用いた例、下部が五線譜で表された同じ旋律の譜面である。
【0120】
・横軸が時間、縦軸が音高を表し、縦線は小節線を表す。これは従来のシーケンサソフトウェア(譜面情報入力ソフトウェア)や楽譜の特徴と同じである。
・シーケンサに良くある1オクターブ当たり12の目盛りをもつ表示(音位に基づく表示)ではなく、五線譜と同様の1オクターブ当たり7つの目盛りを持つ表示(音度に基づく表示)とする。この特徴は非特許文献20(てきとーシーケンサ)などにも見られる既存のものである。
・音高位置を示す線の引き方は、三線譜、主音中心三線譜、大譜表、五線譜の4つの方法から学習者の好みに応じて選択できるようにする。
・三線譜は、各オクターブのドに太い線を引き、各オクターブのミとソ(絶対的音高)に細い線を引く方式である。
・主音中心三線譜は、各オクターブの主音に太い線を引き、各オクターブの中音(音階の第3音)属音(音階の第5音)に細い線を引く方式である。例えばレを主音とするドリア旋法では、レに太い線、ファとラに細い線が引かれる。
・大譜表は、ト音記号の5本とヘ音記号の5本の合わせて10本の線を引く方式である。
・五線譜は、声部に対応した音部記号の5本の線を引く方式である。例えば、入力対象声部としてソプラノを選択している状態ならソプラノ記号における5本の線が引かれる。
・三線譜は、非特許文献21で提案された相対譜表(三線譜)を参考としたものである。
【0121】
(図形による音符の表示方法)
この第2の実施の形態による学習支援システムの音符入力画面における譜面情報の表示例と、五線譜で表された同じ旋律との対応関係を
図49および
図50(旋律表示例)に示す。5線譜や従来のシーケンサソフトの表示方法に代わる音符の表示方法として、次の特徴を持つ表示方法を用いることができる。
(1)音符の形状
・譜面の中で最小の音価(単位の音価)を持つ音符を菱形として表す。
・菱形の中心を時刻と音高に合わせて配置する。
・菱形の横幅は、実際の音価に相当する長さの2倍の長さである。
・菱形の縦幅は、譜面におけるオクターブの幅を7目盛り分の長さとした時の2目盛り分の長さである。
・より長い音価を持つ音符は、菱形を横に重ねて連ねた時の上下の起伏を埋めることで得られる、横長の6 角形として表示する。
・同音連打の音は、同音連打がタイでつながって1つの音だった場合の六角形を基に、その六角形を分割した形の五角形や四角形で表される。
(2)音符の意匠
・各音符を表す各図形は、黒または濃い灰色で縁取りされる。
・図形における音価に対応する横方向の幅(
図50における斜線の部分)を濃い色で塗りつぶし、余った左右両側の三角形の部分を薄い色で塗りつぶす。
・変位(シャープまたはフラット)の情報を持つ音符は、シャープの場合、図形における音価に対応する横方向の幅に相当する領域の上半分の領域を黒または濃い灰色で塗りつぶし、フラットの場合、図形における音価に対応する横方向の幅に相当する領域の下半分の領域を黒または濃い灰色で塗りつぶす。
【0122】
(この表示方法の持つ特徴)
・順次進行(二度進行)は図形が隣接しているように表現される。
・音符の形状は最小の音価を持つ音符によって決定されるため、同一の音価でも場合によって異なる形状ではない。
図49における最初の音と、
図50における最初の音は、共に同じ音価(全音符)であるが、
図49では菱形、
図50では六角形として表示されている。音符を菱形や六角形のような図形により表現する方法は、これまでのシーケンサや記譜法や音楽再生ソフトのどこにも見つけられない独自の発明である。
【0123】
(音域の表示)
入力対象の声部として特定の声部を選択している時、その声部の音域に相当する領域を半透明の薄い色で塗りつぶす。
【0124】
(譜面の線引き方法の効果)
・三線譜については、オクターブの循環性がある表示方法を選択できることで、五線譜を用いる場合よりも、対位法において重要である音程により意識を向けながら学習できる。
・幾つかの線引き方法を用意することで、学習者が好みに応じて線引き方法を選択でき、学習者にとって使いやすくなる。
【0125】
(図形による音符の表示方法の効果)
・順次進行(2度進行)が音符の図形の隣接して表現されることで、跳躍進行(3度以上の進行)と順次進行(2度進行)の区別を視覚的に把握することができる。順次進行(2度進行)と跳躍進行の区別は、対位法の学習において特に重要である。
・五線譜における音符の表示とは異なる図形的な表示方法を採用することで、音と音との関係をより視覚的、感覚的に理解することができる。
・音符を表す図形の左右両側に三角形の薄い色の部分を設けることで、図形が表す横(時間)軸上の音価を表す領域が明確になり、音価を図形的に認識できる。
・視覚的な理解しやすさから、ゲームを遊ぶような感覚で、親しみをもって楽しみながら対位法を学ぶことができる。
【0126】
(音域を表示することの効果)
音域を薄い色で表示することで、音域外の音を誤って置くことの無いように注意しながら音符を入力できる。
【0127】
第2の実施の形態によれば、第1の実施の形態による対位法的旋律の全列挙索引化の手法を利用して、別解を検索することができることにより学習者が種目対位法を容易に学習することができる学習支援システムを実現することができる。また、対位法の学習意図に即した表示方法による音符入力界面を実現することができる。
【0128】
〈第3の実施の形態〉
[カノン自動作曲システム]
(旋律の索引を用いたカノンの全列挙索引化)
カノン(追走曲、輪唱曲)とは、最初の旋律が始まった後、同じ旋律が遅れて開始し、同時に演奏される音楽様式である。同度のカノンとは、追走される旋律が全く同じ音高から始まるものを指す。上記手法で得られた対位法旋律の索引に対して、更に、旋律において一定の時間の間隔をなす全ての2音について、同時発音に関する条件で絞りこむようにrestrict演算を用いて旋律を除外してゆくことで、例えば、同度カノンの索引(集合)が得られ、一定の条件を満たすカノンを全列挙することができる。
【0129】
ここでは例として、カノンにおける声部同士の関係は次の条件を満たすものとする。
・同時発音する音は不協和音程であってはならない(ここでは不協和音程を、2、4、7度およびそれらの複音程と定義する)。
・伸ばしている音符に対して増一音程( 複音程を含む) をなす音符を発音してはならない。
・連続五度(二つの声部が5度から平行進行して同時に完全5度に至ること)と連続八度(二つの声部が完全8または完全1度から平行進行して同時に完全8度または完全1度に至ること)は禁止。
・伸ばしている音符に対して順次進行以外で不協和音程に至ったり、順次進行で至った不協和音程から跳躍してはならない。
【0130】
旋律集合を計算した時と同様に、条件を満たさない旋律を集合演算で除外することで、条件を満たす旋律の集合を得る。カノンの遅れ時間を1小節分とする場合、すべての音について、1小節の間隔をなす音符同士がこの条件を満たすように絞り込む。すなわち、満たさない旋律を取り除く。
【0131】
図51は第3の実施の形態によるカノン自動作曲システムの処理フローを示す。
図51に示す処理フローに従ったプログラムを作成し、コンピュータに実行させる。
【0132】
図51に示すように、このカノン自動作曲システムにおいては、処理開始後、まず、ステップU1において、旋律の集合および音価を入力する。
【0133】
ステップU2において、ステップU1において入力した旋律の集合から、ステップU1において入力した音価の分だけずらして同時に再生する場合に同時発音される2音に不協和音程が含まれる旋律を集めた第1の集合を算出する。任意の旋律の集合Qに対して、音価tの分だけずらして同時に再生する場合に同時発音される2音に不協和音程(2、4、7度およびそれらの複音程)が含まれる旋律の集合Rを算出するための計算法の詳細を
図52に示す。ステップU1において入力した旋律の集合をQとし、この計算を実行することで第1の集合が得られる。
【0134】
ステップU3において、ステップU1において入力した旋律の集合から、ステップU1において入力した音価の分だけずらして同時に再生する場合に連続5度または連続8度が含まれる旋律を集めた第2の集合を算出する。任意の旋律の集合Qに対して、音価tの分だけずらして同時に再生する場合に連続5度または連続8度が含まれる旋律の集合Rを算出するための計算法の詳細を
図53に示す。ステップU1において入力した旋律の集合をQとし、この計算を実行することで第2の集合が得られる。
【0135】
ステップU4において、ステップU1において入力した旋律の集合から、ステップU1において入力した音価の分だけずらして同時に再生する場合に伸ばしている音に対する不協和音程の扱いに関して違反する旋律を集めた第3の集合を算出する。任意の旋律の集合Qに対して、音価tの分だけずらして同時に再生する場合に伸ばしている音に対する不協和音程の扱いに関して違反する旋律の集合Rを算出するための計算法の詳細を
図54に示す。ステップU1において入力した旋律の集合をQとし、この計算を実行することで第3の集合が得られる。
【0136】
ステップU5において、ステップU1において入力した旋律の集合から、ステップU1において入力した音価の分だけずらして同時に再生する場合に伸ばしている音に対して増1度音程をなす部分が含まれる旋律を集めた第4の集合を算出する。任意の旋律の集合Qに対して、音価tの分だけずらして同時に再生する場合に伸ばしている音に対する増1度音程をなす部分が含まれる旋律の集合Rを算出するための計算法の詳細を
図55に示す。ステップU1において入力した旋律の集合をQとし、この計算を実行することで第4の集合が得られる。ステップU2、U3、U4、U5を実行する順序は任意であり、どのような順序であってもよい。
【0137】
ステップU6において、ステップU1において入力した旋律の集合からステップU2、U3、U4、U5において算出した第1の集合、第2の集合、第3の集合および第4の集合に含まれる全ての旋律を取り除く。言い換えると、ステップU1において入力した旋律の集合に対してステップU2、U3、U4、U5において算出した第1の集合、第2の集合、第3の集合および第4の集合の和集合を差集合演算する。この時点で解の索引化が終了する。
【0138】
ステップU7において、ステップU1において入力した旋律の集合からステップU2、U3、U4、U5において算出した第1の集合、第2の集合、第3の集合および第4の集合に含まれる全ての旋律を取り除いた後の旋律の集合について要素数を算出する。この時点で解の列挙が終了する。
【0139】
ステップU8において、ステップU1において入力した旋律の集合および音価とステップU1において入力した旋律の集合からステップU2、U3、U4、U5において算出した第1の集合、第2の集合、第3の集合および第4の集合に含まれる全ての旋律を取り除いた後の旋律の集合との組を保存する。こうして処理が終了する。
【0140】
ここで、実施結果の一例を示す。実行環境は第1の実施の形態と同様である。
【0141】
第1の実施の形態における具体例で説明した旋律全列挙索引化方法により、「華麗種、エオリア旋法、アルト声部、調号なし、4小節」を入力とし、第1の実施の形態と同様な規則体系に基づいて作成した旋律集合を入力として用いる。この旋律集合から一小節遅れの同度カノン集合を計算(全てのカノンを列挙) するのにかかった実行時間は368秒であった。カノンの総数は3455458節であった。同度カノン集合から無作為に列挙した32曲のカノンを
図16~
図47に示す。
【0142】
これは応用例としての試作であり、これらのカノンは、対位法の教科書の要求する声部同士の関係性の要件の全て満たしているわけではないため、声部同士の関係の同時的関係については不自然な部分も有る。しかし、得られたカノンのほとんどは音楽としてある程度満足の行くもののように感じられる。それが3455458個もの大量に得られたことは画期的な技術的進歩である。
【0143】
また、対位法的な4小節の旋律を書いた時、その旋律が上の条件を満たすような同度カノンである可能性は3455458/3030441370=0.00114であると分かった。
【0144】
カノンの索引を引いた検索の方法とその結果を一例として示す。
【0145】
例えば、種目対位法では順次進行を主体とした旋律が良好とされる。そこで、順次進行を表す辺に対してその辺が表す時間に比例した値を重み付けすると、順次進行の占める時間の長い順に旋律を列挙できる。4小節の同度カノン集合から順次進行の占める時間の長い順に100曲のカノンを列挙するのにかかった実行時間は9秒であった。13小節の索引(集合)から無作為に列挙された最初の1曲を
図48に示す。
【0146】
第3の実施の形態によれば、実用的な自動作曲が可能となる音高を含んだ旋律によるカノン自動作曲システムを実現することができる。
【0147】
以上、この発明の実施の形態について具体的に説明したが、この発明は、上述の実施の形態に限定されるものではなく、この発明の技術的思想に基づく各種の変形が可能である。