Skip to content

声部アーキテクチャ

MIDI Sketch Bach の楽曲における各声部は独立した旋律線です。声部数は形式が決定し、各声部が何をするかも形式が決めます。声部数オプションは存在しません。

声部とは?

バロック音楽では「声部」は独立した旋律線です — 歌われるか演奏されるかを問いません。3声のフーガには3つの同時進行する線があり、それぞれが独自のリズム、輪郭、個性を持ちます。MIDI Sketch Bachでは、各声部が個別のMIDI トラックになります。

トラックは出力コンテナ、声部は音楽上の役割

MIDI ファイルでは DAWが扱えるようにトラックを使います。一方、作曲エンジンは対位法の検査に必要な独立した音楽線として声部を扱います。通常は一つの声部が一つのトラックに対応します。

声部数は形式が決定

声部数は形式ごとに固定されます。形式を選ぶことがテクスチュアを選ぶことです。

形式声部数
fugueprelude_and_fuguetrio_sonatatoccata_and_fuguefantasia_and_fuguegoldberg_variations3
chorale_preludepassacagliachaconne2
cello_prelude1

numVoices/num_voices の指定は後方互換のため受理されますが無視されます。拍子と基準長を含む完全な表は楽曲形式を参照してください。

ボイスインテント

形式ディレクターは、楽曲の小節スパンにわたって各声部にボイスインテントを割り当てます — 各時点でその声部が果たす役割です。エンジンには30種類の名前付きインテントが定義されており(voice_intent.h)、いくつかの系統にまとまります。

系統代表的なインテント役割
フーガの提示SubjectCarrier, AnswerCarrier, CountersubjectCarrier主唱(主調)、応唱(属調)、そして繰り返し寄り添う対主題
展開MiddleEntryCarrier, StrettoCarrier, PedalCarrier, CodaCarrier近親調の中間入り、重なり合うエントリ、保続音、終結素材
嬉遊部Episode, FortspinnungSpan主題の動機から導かれる、調から調へ移動するゼクエンツ素材
固定線GroundCarrier, PassacagliaGround, CantusFirmusCarrier不変の反復バスとコラール旋律
音型FigurationCarrier, ArpeggioFlow, ToccataCarrier, FantasiaCarrier連続する固有の音型と、セクション構成の独奏書法
変奏VariationCarrier と役割別の変種固定バス上で再創造される上声部素材
テクスチュアRhythmCarrier, NctCarrier, 自由対位法弱起・ヘミオラのリズム型、宣言された非和声音の音型、候補探索が選ぶ伴奏線

素材を担うインテント(主題、グラウンド、定旋律)は固定され、残りの線は候補探索によって埋められます。

主題、応答、グラウンド、定旋律

主題はフーガの中心になる旋律です。応答は、別の声部に入る主題で、多くの場合は属調側へ移されます。グラウンドバスは反復する低音パターンです。定旋律は長い音符で置かれる固定旋律です。

声部の独立性

声部間の独立性の維持はバロック対位法の中核原則です。エンジンは次の方法でこれを支えます。

リズムの差別化

声部は補完的なリズムパターンを使い、足並みを揃えて動かないようにします — ある声部が持続するとき、別の声部が活発になる傾向があります。この補完性はバッハの書法の特徴です。

旋律の差別化

各声部は独自の音程傾向と方向性の傾向を持ち、主題素材を独立して展開します。

音域の差別化

声部は明確に異なる音域を保ちます。声部交差は最小化され、声部が互いに接近すると離れる傾向があります。候補探索は各拍を和声音に固定し、声部が独立を保ちながら和声を明瞭にします。

音域と声部交差

音域は音の高さの範囲です。バスは低く、ソプラノ的な線は高い、という区別です。声部交差は、本来低い声部が高い声部を追い越したり、高い声部が低い声部の下に入ったりすることです。線の追跡が難しくなるため制限されます。

声部とトラックの割り当て

各声部は独自のチャンネルとプログラムを持つ個別のMIDI トラックに割り当てられます。

js
const events = generator.getEvents()

for (const track of events.tracks) {
  console.log(`Voice: ${track.name}`)      // トラック名
  console.log(`Channel: ${track.channel}`)  // MIDI チャンネル(0-15)
  console.log(`Program: ${track.program}`)  // GMプログラム番号
  console.log(`Notes: ${track.note_count}`) // ノート数
}

すべてのノートは source 由来タグ("material""compose""ornament")も持ちます — JavaScript APIを参照してください。

General MIDI プログラムの割り当て

楽器GMプログラム音色
オルガン19チャーチオルガン
チェンバロ6チェンバロ
ピアノ0アコースティックグランドピアノ
ヴァイオリン40ヴァイオリン
チェロ42チェロ
ギター24アコースティックギター(ナイロン)

出力は声部ごとに1トラックを持つType 1 の標準 MIDI ファイルであり、DAW で声部ごとに楽器を再割り当てできます。

Dual-licensed: AGPL-3.0 · commercial licensing available. Generated MIDI is yours to use freely.