@onjmin/dtm
    Preparing search index...

    Function buildSectionPlan

    • 選ばれたセクションを並べて、曲の設計図にする。

      テンプレート名が指定された場合はテンプレートの plan をそのまま使う。 kinds 配列が指定された場合は SECTION_ORDER に従って並べる (従来の互換モード。各種別は1回ずつ)。 どちらも空のときは DEFAULT_SECTIONS を使う。

      同じ種別が2回以上現れた場合、2回目以降は restatement: true が付く。 compose側はこのフラグを見て、1回目のメロディ・リズムを再現する。

      rnd を渡すと、セクション長を SectionSpec.barChoices から引く (渡さなければ SectionSpec.bars の代表値。UI の長さ表示など、 引くたびに答えが変わっては困る場所のため)。

      長さは種別ごとに1回だけ引く。 1番のAメロが8小節で2番が16小節、という 曲は書けなくはないが、restatement は1番の対応小節をそのまま歌い直す仕組み なので、長さが違うと後半だけ別のフレーズになる。同じ名前のセクションは同じ 長さで揃えるほうが「同じフレーズが返ってきた」という手応えを壊さない。

      Parameters

      • kinds: SectionKind[]
      • OptionaltemplateName: string
      • Optionalrnd: () => number
      • Optionalbpm: number

      Returns PlacedSection[]