7. 形式固有の制約
これまでの章は、生成されるすべての曲に適用される規則でした。この章で扱うのは、どんな種類の曲を作っているかによって生まれる契約です。歴史的には、パッサカリアとシャコンヌという呼び名は、異なる声部配置で実現されるオスティナートの構想を指すことがあります。エンジンはそこから、より厳しいキャリア契約を選んでいます。コラール前奏曲は定旋律の骨格を保ち、チェロ前奏曲は一本の楽器の線から筋の通った多声対位法を暗示します。エンジンはそれぞれの約束を、素材キャリアと検証ルールの組として実装しています。
不変の素材——固執低音
パッサカリアとシャコンヌは歴史的に近いオスティナート形式です。実際のレパートリーでは低音の構想が移され、異なる声部配置で書かれ、変奏や装飾を受けることがあります。エンジンはこの考え方を、意図的に厳しいキャリア契約へ絞っています。ground_bass_immutable(BWV 1004 のシャコンヌに着想を得た独奏弦形式)と passacaglia_ground_immutable(BWV 582 に着想を得たオルガン形式)は、再生されたグラウンドの小節頭の音高骨格を、同じ周回相対位置の正準素材と照合します。小節頭以外の音高はこの骨格に含まれず、リズム上の細分化も許されます。すべての発音イベントをバイト単位で再生する検査ではありません。照合には、各音に添えて運ばれる出自タグであるプロビナンスビットを使います。provenance.v1 サイドカーはこれを source: "Material" | "Compose" | "Ornament" として出力します。generated.v1 の音符レコードには provenance/source がなく、観測値などの検証メタデータは別に出力されます。これらの違反は、エンジンが宣言したキャリアの同一性を壊すため StructuralFail です。
BWV 番号とは
BWV(バッハ作品目録 / Bach-Werke-Verzeichnis)はバッハ作品の標準的なカタログ番号です。BWV 582 はオルガンのためのパッサカリア ハ短調、BWV 1004 は終楽章にシャコンヌを持つヴァイオリン・パルティータを指します。ルールが「〜に着想を得た」と言うとき、エンジンの形式テンプレートは選んだプロポーションや表面素材を借りています。歴史上の楽器編成や、すべての発音イベントを再現するという意味ではありません。
関連ルールが変奏の層の誠実さも保ちます。variation_role_ornament_constraint は、グラウンドの役割を担う変奏スパンが4分音符より細かく分割されることを防ぎます。別の声部に置き直されても、グラウンドはゆっくりした線として聴き取れなければなりません。
ゴルトベルク変奏曲は、アリアの基礎となるバスと和声の構想を保ちながら、書かれたバスの音高配置や音価を変化させます。エンジンはこの違いを、終結部を除く各4小節変奏ブロックに専用の goldberg_aria_bass_immutable 宣言を置くことで表します。譜例の上の切り替えで、二つの変奏が同じ構想を歩くのを聴き比べられます。
goldberg_aria_bass_immutable 規則は、終結部を除く各変奏ブロックで、宣言されたキャリアの各オンセット・音価・音高を完全に照合します。第8小節のモルデントは装飾記号を省いて示しています。上の切り替えで変奏を選ぶと、同じ構想の上に異なる表面が現れます。デモの Goldberg プリセットもこの区別を使います。下のバッハ実例は、変奏の周回後にパッサカリアの低音へ戻る箇所を示します。構想レベルの連続性と、エンジンが採用するより厳しい小節頭キャリア検査を並べて読めます。
不変の素材——定旋律
コラール前奏曲は賛美歌の旋律(定旋律)を長い音価で運び、別の声部がその周りを装飾します。cantus_firmus_immutable は各小節の小節頭を宣言された骨格音と照合します。小節頭の音高は固定されますが、小節内の対象音は装飾できます。装飾処理は定旋律の小節頭を素のまま保ち、Severe 性格では定旋律全体を素のままにします。それ以外の性格では、対象となる小節内の音を装飾できます。
これこそオルゲルビュッヒラインの設計図です。「われ汝に呼ばわる」では、16分音符の内声とつぶやくペダルの上を、旋律が手つかずのまま漂います。
cantus_firmus_immutable 契約が固定するのはコラールの小節頭です。小節内の対象音は他の性格で装飾できますが、Severe では定旋律全体をそのまま保ちます。その下で内声が16分音符の刺繍を続け、ペダルは表示された F–F–F–F–F–E–F–F の実際の線をたどります。(ペダルの最初の2音は、出典の録音では1オクターヴ低く鳴っています。録音のまま記しています。)フィグレーションの和声
自由な前奏曲のスタイル(BWV 543 の冒頭を思い浮かべてください)は、ゆっくりした和声リズム——その下で和音が入れ替わる速さのことで、ここではおおむね1小節に1和音——の上で絶え間ないフィグレーションを走らせます。figuration_harmonic_consistency がその錨です。各小節を開く音は、その小節の和音の構成音でなければならず、和音が第7音を宣言していればそれも含みます。小節頭以外の音は無制約です——その自由こそが、コラール書法ではなくフィグレーションである理由です。ペダルの音は免除され、全制約を満たす演奏可能な和声音が一つもなかったことをビルダーが証明した FigurationAnchorRelaxed の音も免除されます。
レパートリーの中で最も純粋な実例が、平均律 I 巻の幕開けにあります。ハ長調プレリュードの最初の2小節——二つの保持音の上を走る一本の16分音符の線が、1小節に一つの和音を描き出します。
figuration_harmonic_consistency が検査する錨——であり、耳は一本の書かれた線から5つの声部を組み立てます。独奏弦——一本の線の中の対位法
独奏のチェロやヴァイオリンは4音の和音を鳴らせますが、4本の独立した線を同時に持続させることはできません。それでもバッハの独奏曲は耳にいくつもの声部を聴かせます。チェロ前奏曲はエンジン唯一の単声形式であり、一つの声部に対位法の検証を成立させているのが、ここで扱うルールです。
復元は三つの具体的な手順です。エンジンはアルペジオの線の音を発音順に集め、宣言された group_size 個ずつの連続したセルに区切り、各セルの最低音を暗示低音線、最高音を暗示上声線として取り出します。決め手はセル内の位置ではなく音域です——BWV 1007 の音型では、知覚される旋律音が書かれたセルの真ん中にありますが、最小値・最大値による抽出はそれを正しく見つけます。
そして、この音型の本家がこちらです——チェロ組曲第1番の冒頭に、エンジンが計算する抽出をそのまま書き出して添えました。
取り出された線は、本物の声部と同じ基準で検査されます。下の二つの簡約譜は線だけを取り出したもので、先に失敗例、次に合格例です。
| ルール | 契約 |
|---|---|
implicit_voice_counterpoint | 連続するセル間で、暗示低音線・上声線が第4章の旋律跳躍ルールに従う——採点探索の Compose 音にも使われる禁止跳躍の述語を再利用する。 |
arpeggio_no_parallel_perfect | 連続するセルが同じ完全音程(5度またはオクターヴ)の枠を作り、かつ両方の線が同方向に動いてはならない。斜行・反行・静止は許される——第2章で本物の声部に与えられるのと、まったく同じ逃げ道。 |
独奏弦書法の物理的な側面——各楽器の演奏可能な音域——は楽器で扱っています。
フレーズの構造
二つのルールが、生成された音楽をバロックの小節グリッドに乗せ続けます。アウフタクト(弱起)とは、小節頭より前に鳴り始める短い助走——1小節目の前の「ン・タ」という導入音——のことです。
バッハの舞曲はこの身振りの上に生きています——チェロ組曲第1番のクーラントは、8分音符ひとつぶんの助走で飛び立ちます。
anacrusis_consistent が検査するのは弱起の有無ではなく、その一貫性です。| ルール | 契約 |
|---|---|
phrase_periodicity_4_or_8_bar | 宣言されたフレーズ開始の間隔は、3〜8小節の整数小節。ルール ID は従来の狭い名前のまま固定されているが、この範囲の整数小節差はすべて合格する。 |
anacrusis_consistent | アウフタクト(弱起)を宣言したなら、すべての弱起断片はフレーズ開始のちょうどその距離だけ前に始まる。宣言していないなら、弱起の断片が紛れ込んでいない。 |
テクスチュアと楽器の契約
トリオ・ソナタの独立性の契約は、テクスチュア系ルールの中で唯一、目標の形を五線譜に描けるものです。違反そのものはセクション全体の性質ですが、エンジンが目指して採点しているのは、この「三つの声部が三つのリズムグリッドに乗る」テクスチュアです。
オルガン・トリオソナタは、このルールを6曲まるごと追求した作品群です。その第1番は、開始3小節目にしてすでに完全なテクスチュアを見せています。
voice_independence_threshold が目指して採点するテクスチュアです。すべての声部ペアがリズムのずれと反行・斜行で測られ、どこかのペアがしきい値を割れば曲は失敗します。(主題最後の G は次の小節へタイでつながれており、譜例は小節線で切り上げています。)| ルール | 形式 | 契約 |
|---|---|---|
pedal_range_soft_penalty | オルガン系 | ペダルの音が物理的に演奏可能な音域に収まる(ハード境界は MIDI 12〜62。快適な C1〜D3 はスコアリング段階で優遇)。 |
voice_independence_threshold | トリオ・ソナタ | 2つの手鍵盤声部とペダルがペアごとに独立を保つ(スコア 0.6 以上)。リズムのずれと反行・斜行で測定。互いの影になったトリオ・ソナタは、その唯一の仕事に失敗している。 |
section_contrast_required | ファンタジア | 隣接セクションが密度(小節あたり2音以上の差)または音域(平均で5半音以上の差)で聴き取れるほど異なる。対比の劇こそファンタジアの本領。 |
toccata_archetype_compatible | トッカータ | 選ばれたセクション原型が宣言された性格と両立する(noble 性格は設定段階でトッカータ形式から拒否され、相容れない原型の組み合わせはここで失敗する)。 |
残りの構造ルールには、指し示せる「その瞬間」の譜面がありません。違反はセクション全体の性質だからです。そのため譜例ではなく表で記載しています。発火した場合は、個々の音ではなくイベント JSON のセクション構成を調べてください。
宣言された重複は、免除を適用する前に検査します。異なる2声部と、少なくとも主声部の音符を1つ含む有効で空でない半開区間 [start_tick, end_tick) を指定しなければなりません。その区間内で、重複声部は主声部と音符数・開始位置・長さが同じで、各音高が宣言された semitones だけずれていなければなりません。一致しない宣言は declared_doubling_integrity の StructuralFail になります。宣言と一致する 2 声部は、この区間内の垂直規則の検査で 1 本の旋律として扱います。旋律検査と窓の外の垂直検査はそのまま適用されます。
検証器はこの章をどう見るか
| ルール | FailKind |
|---|---|
declared_doubling_integrity | StructuralFail |
ground_bass_immutable, passacaglia_ground_immutable, goldberg_aria_bass_immutable, cantus_firmus_immutable | StructuralFail |
variation_role_ornament_constraint, figuration_harmonic_consistency, toccata_archetype_compatible | MusicalFail |
implicit_voice_counterpoint, arpeggio_no_parallel_perfect | MusicalFail |
phrase_periodicity_4_or_8_bar, anacrusis_consistent | MusicalFail |
pedal_range_soft_penalty, voice_independence_threshold, section_contrast_required | MusicalFail |
これでコースは終わりです。フラットなルール索引は 検証器ルール一覧を、これらのルールと生成パイプラインの関係は生成パイプラインを参照してください。