楽器
エンジンは楽器を General MIDI プログラム、出力音域、装飾密度傾向として扱います。ボウイング方向、手の幅、フレット位置、疲労といった演奏者の身体的条件はシミュレートしません。
楽器が選択するもの
instrument の選択は次の5つに影響します。
- General MIDI プログラム — MIDI ファイルに書き込まれる音色。
- 出力音域 — 作曲後に使う音域の目安です。指定した調を適用した後、まず全音符が収まる楽譜全体のオクターヴ移動を試みます。個別の音を丸め込まず、一つの移動で全体を収められないときは音域からの超過が最小になる移動を選びます。
- 装飾密度 — 装飾処理が線をどれだけ濃密に装飾するか(
characterと組み合わせて)。 - ベロシティカーブ — オルガンとチェンバロは固定された既定値を保ち、ピアノ、ヴァイオリン、チェロ、ギターにはフレーズを考慮したカーブを適用します。
- コントローラープロファイル — オルガンとチェンバロは CC 7 のレベルイベント、ピアノ、ヴァイオリン、チェロは CC 11 の表現イベントを使い、ギターには連続表現プロファイルを適用しません。
声部数・拍子・構造は instrument ではなく form から決まります。各形式には互換楽器が明示的に定義されています。形式ごとの既定楽器を参照してください。
楽器と声部
楽器は再生音色と音域傾向です。声部は生成される音楽上の線です。オルガンのように、一つの楽器が複数の声部を担うこともあります。
General MIDI プログラム
| 楽器 | 文字列 | GMプログラム | 音色 |
|---|---|---|---|
| オルガン | "organ" | 19 | チャーチオルガン |
| チェンバロ | "harpsichord" | 6 | チェンバロ |
| ピアノ | "piano" | 0 | アコースティックグランドピアノ |
| ヴァイオリン | "violin" | 40 | ヴァイオリン |
| チェロ | "cello" | 42 | チェロ |
| ギター | "guitar" | 24 | アコースティックギター(ナイロン) |
不明な楽器文字列は既定へ暗黙的に代替せず却下されます(例外を投げます)。
出力音域
以下は製品の楽器プロファイルが使う MIDI 音域です。ヴァイオリンとチェロは、生成されたテクスチュアやグラウンドバスの楽章を一つの出力楽器に保てるよう、意図的に広い範囲を持ちます。独奏で無伴奏の最低音を快適に弾ける範囲を示すものではありません。
| 楽器 | MIDI 音域 |
|---|---|
| オルガン | C1〜C7(24〜96) |
| チェンバロ | C2〜C7(36〜96) |
| ピアノ | A0〜C8(21〜108) |
| ヴァイオリン | C2〜C7(36〜96) |
| チェロ | C1〜C7(24〜96) |
| ギター | E2〜B5(40〜83) |
形式ごとの既定楽器
| 形式 | 既定楽器 | 他に選べる楽器 |
|---|---|---|
fugue、prelude_and_fugue、trio_sonata、chorale_prelude、toccata_and_fugue、passacaglia、fantasia_and_fugue | オルガン | -- |
cello_prelude | チェロ | -- |
chaconne | ヴァイオリン | -- |
goldberg_variations | チェンバロ | ピアノ |
ギターは General MIDI プログラムと音域傾向を持ちますが、現在どの形式からも受け付けられていません。表の行にない楽器を指定すると楽器非互換エラーになります。
装飾密度
決定論的な装飾処理がトリル(終止での開始音と最後のナッハシュラークを含む)、アポジャトゥーラ、ターン、スライド、モルデントを追加します。どれだけ濃密に装飾するかは character と instrument の両方に依存し、一部の線や音は保護されます。
装飾語彙と保護
これらは構造上の音の周囲に置かれる短い装飾音型です。主な作曲結果を検証した後に追加されるため、"material" や "compose" ではなく source: "ornament" として記録されます。主唱・応唱・ストレッタ、および拡大・縮小・反行した主唱提示は素のままです。中間提示は装飾対象に残ります。グラウンドキャリアは免除され、定旋律は小節頭を素のままにします。対象となる小節内の音は装飾できますが、Severe では定旋律全体を素のままにします。
- グラウンドバスの線(パッサカリア、シャコンヌ、ゴルトベルクのバス)は決して装飾されません。
ここで追加されたノートは source: "ornament" 由来タグを持ちます。
アーティキュレーション
最終スコアの検証とベロシティ処理の後、エンジンは性格に応じたリリースを対象ノートへ適用します。分離量は 480 tick を四分音符 1 拍とするグリッドで定義されています。
| 性格 | 宣言された分離量 |
|---|---|
| Noble | 24 tick |
| Severe | 40 tick |
| Playful | 56 tick |
| Restless | 72 tick |
各声部で、次の発音が現在の音価の終わりまでに始まるノートだけが対象です(直後に続くか、重なっている場合です)。同音の反復は長さに関係なくリリースの対象になります。2半音を超える跳躍は、現在の音価が8分音符以上(240 ティック)の場合だけ対象になります。1〜2半音の順次進行、8分音符未満の広い跳躍、後続音の前に休符があるノート、各声部の最後の発音は、記譜上の音価全体を保ちます。
チェロ前奏曲とシャコンヌは既定楽器が弓奏楽器なので、これらの値を半分にします。定旋律の声部は分離量 0 です。240 ティック未満(このグリッドでの8分音符未満)の音では、宣言された分離量が音の長さに応じて縮小されます。短縮量は元の音価の半分を超えません。検証と解析には記譜上の長さを使い、MIDI と公開イベントデータには短くなった再生時の長さを使います。
ベロシティ
オルガンとチェンバロの音は固定された既定ベロシティを保ちます。ピアノ、ヴァイオリン、チェロ、ギターには、基準値70、拍とフレーズのアクセント、小さな終止前の減衰、50〜110への最終クランプからなる決定論的カーブを適用します。これは MIDI 上の整形であり、タッチ、弓圧、レジストレーションの変化をモデル化するものではありません。
表現の出力
装飾に加え、エンジンは選択した楽器と形式のプロファイルから決定論的な MIDI コントロールとテンポイベントを書き込みます。これらは MIDI ファイルだけでなくイベントデータからも読み取れます。
- MIDI レベルと表現 — オルガンとチェンバロには CC 7 のアーク点と段階的なレベルを、ピアノ、ヴァイオリン、チェロには CC 11 のフレーズイベントを加えます。これは再生時の自動化イベントであり、オルガンのストップ選択(レジストレーション)ではありません。チェンバロのプロファイルは鍵盤のタッチによる連続的な強弱を使いません。ギターにはベロシティカーブだけを適用し、連続表現プロファイルは適用しません。すべてのイベントは重複を統合した
control_changesとしてトラックごとに報告されます。 - テンポマップ —
trio_sonata以外の全形式に終結のリタルダンドを加え、さらにprelude_and_fugue、toccata_and_fugue、fantasia_and_fugueではフーガ入りでセクションテンポを変化させます。temposとして報告します。 - 拍子記号 — パッサカリアとシャコンヌは3/4、それ以外は4/4。
time_signaturesとして報告。
性格はコントローラー曲線の形を変えず、全体のレベルだけをずらします。値は Severe を基準にしたオフセットです。
| 性格 | レベルオフセット |
|---|---|
| Noble | +5 |
| Severe | 0 |
| Playful | -7 |
| Restless | +2 |
オルガンとチェンバロではこのオフセットが CC 7 のチャンネルボリュームを、ピアノ、ヴァイオリン、チェロでは CC 11 の表現レベルをずらします。CC 7 は MIDI の再生レベルを変えるもので、オルガンのストップ選択ではありません。ストップ構成はシンセサイザー側の音色設定に依存します。
曲の途中でテンポが変わるため、イベントを実時間に対応づけるときは bpm ではなくテンポマップを使ってください。ティックを秒に変換するを参照。