Strudelify

Polonaise

De Nachroave

KeyB♭ majorTempo119 bpm
0:00/0:00
// Polonaise — De Nachroave
// 119 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 71 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · accordion
const accordion = note(`<
  A B C D E F G D E H I D E J K D E H L M N O P M Q R S M N O P M Q R T U V D E F G D E H I D E J K D E H L M N O P M Q
  R S M N O P M Q R T U W
>`.pickRestart({
  A: "~@5 d5 [a4,c5] [g4,bb4], ~@10 bb4 ~@5", B: "[f4,a4] ~ [a4,f5] [a4,f5]@5 ~@2 [g4,eb5]@2 [f4,d5] ~ [eb4,c5] ~",
  C: "[d4,bb4] ~@3 [a3,eb4,f4]@3 ~ [bb3,d4,f4] ~@5 f4!2", D: "f4@2 d4@2 f4 d4 f4 bb4 [bb4,d5] ~@5 [d5,f5]!2",
  E: "[d5,f5] ~ [c5,eb5]!3 ~ [bb4,d5] ~ [bb4,d5] ~@3 [a4,c5] ~ f4!2", // Dm Cm Bb Am
  F: "f4@2 eb4@2 f4 eb4 f4 a4 [a4,c5] ~@5 [a4,f5]!2", G: "[a4,f5] ~ [g4,eb5]!3 ~ [a4,f5] ~ [f4,d5]@4 ~@2 f4!2",
  H: "f4@2 eb4@2 f4 eb4 f4 a4 [a4,c5] ~@3 [a3,eb4,f4]@4", // Am F7
  I: "[a3,eb4,f4] ~@2 [a3,f4] [g3,eb4] ~ [g3,eb4] ~ [bb3,d4,f4,bb4]@4 [bb3,d4,f4,bb4] ~ f4!2", // F7 Dm Cm Bb
  J: "f4@2 eb4@2 f4 eb4 f4 a4 [a4,c5] ~@5 [f4,d5]!2", // Am Dm
  K: "[f4,d5] ~ [g4,eb5]@2 [g4,eb5] ~ [g4,eb5] ~ [f4,bb4,d5]@4 ~@2 f4!2", // Dm Cm Bb
  L: "[a3,eb4,f4] ~@2 [a3,f4] [g3,eb4] ~ [g3,eb4] ~ [bb3,d4,f4,bb4]@2 [d4,bb4]!6", // F7 Dm Cm Bb Gm
  M: "[eb4,g4]@4 [g4,bb4]@3 ~ [g4,eb5]@4 [g4,bb4]@4", // Eb Gm Cm Gm
  N: "[f4,d5] ~@2 [f4,d5] [f4,c5] ~ [f4,bb4] ~ [f4,ab4]@2 [bb3,d4,bb4]!6", // Dm F5 Bb5 Fm Bb
  O: "[d4,f4]@4 [f4,ab4]@3 ~ [ab4,c5]@4 [bb4,d5]@4", // Dm Fm Ab Bb
  P: "[ab4,c5] ~@2 [ab4,c5] [g4,bb4] ~ [f4,ab4] ~ [eb4,g4]@2 [bb3,eb4,bb4]!6", // Ab Gm Fm Eb Eb5
  Q: "[d5,bb5] ~@2 [d5,bb5] [c5,ab5] ~ [bb4,g5] ~ [ab4,f5]@2 [bb3,d4,bb4]!6", // Gm Fm Eb Db Bb
  R: "[ab4,c5]@4 [bb4,d5]@3 ~ [bb4,d5]@2 [g4,bb4]@2 [ab4,c5]@2 [bb4,d5]@2", // Ab Bb Gm Ab Bb
  S: "[eb4,g4] ~ [g4,bb4]@4 [g4,bb4]@2 [g4,bb4] ~ [bb3,eb4,bb4]!6", // Eb Gm Eb5
  T: "[eb4,g4,eb5]@6 [eb4,g4,eb5]@2 [eb4,g4,eb5] ~@5 [a3,f4]!2", // Eb Dm
  U: "[a3,f4]@2 [f5,a5]!3 ~ [a3,f4]!2 [a3,f4]@2 [eb5,g5]!3 ~ [a4,f5]!2", // Dm F Dm Eb Dm
  V: "[a4,f5] ~ [g4,eb5] ~ [f4,d5] ~ [eb4,c5] ~ [d4,bb4]@4 ~@2 f4!2", // Dm Cm Dm Cm Gm
  W: "[a4,f5] ~ [g4,eb5] ~ d5@2 [eb4,c5]@2 [bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4]!3 ~@3, ~@4 f4 ~@11", // Dm Cm Bb
})).s("gm_accordion").gain(0.56)

// bass · electric bass finger
const bass = note(`<
  ~@2 A B C D E B C D E B C D E B C D F G H I J K H I L G H I J K H I M N O B C D E B C D E B C D E B C D F G H I J K H
  I L G H I J K H I M N P
>`.pickRestart({
  A: "~@4 f1@3 ~ bb1 ~@7", B: "bb1 ~ f1 ~ bb1 ~ f1 ~", C: "bb1@2 ~ bb1 a1 ~ g1 ~ f1@2 ~@2 c2@2 ~@2",
  D: "f1 ~ c2 ~ f1 ~ c2 ~", E: "f1@2 ~ f1 g1 ~ a1 ~ bb1@2 ~@2 f1@2 ~@2", F: "f1@2 ~ f1 g1 ~ a1 ~ bb1 ~ bb1 ~ c2 ~ d2@2",
  G: "eb2 ~ bb1 ~ eb2 ~ bb1 ~", H: "f2 ~ bb1 ~ f2 ~ bb1 ~", I: "f2@2 ~@2 bb1@2 ~@2 f2@2 bb1@2 c2 ~ d2@2",
  J: "eb2 ~ d2 ~ c2 ~ bb1 ~", K: "eb2 ~ bb1 ~ eb2 ~ g2 gb2", L: "eb2@2 ~@2 bb1@2 ~@2 eb2 ~ bb2@2 g2 ~ f2@2",
  M: "eb2 ~ bb1 ~ eb2 ~@3", N: "f1@7 ~ f1@7 ~", O: "f1 ~ f1 ~ g1@2 a1@2 bb1@2 ~@2 f1@3 ~",
  P: "f1 ~ f1 ~ g1@2 a1@2 bb1@2 ~@2 bb1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@2 A B C D E B C D F B C D E B C D F G H I J G K I J G H I J G K I L@2 M B C D E B C D F B C D E B C D F G H I J G K
  I J G H I J G K I L@2 N
>`.pickRestart({
  A: "~@4 [c3,f3,a3,eb4,f4]@3 ~ [f2,bb2,f3,bb3,d4,f4] ~@7", // F7 Bb
  B: "[bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2", // Bb5 Bb Bb5 Bb Bb5 Bb Bb5 Bb
  C: "[bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2 [f2,c3,f3,a3,eb4,f4] ~ [c3,f3,a3,eb4,f4]@2 [f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2", // Bb5 Bb Bb5 Bb F7 F5 F7
  D: "[f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2", // F5 F7 F5 F7 F5 F7 F5 F7
  E: "[f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [bb2,f3,bb3,d4,f4] ~ [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3] ~ [bb2,f3,bb3,d4,f4]@2", // F5 F7 F5 F7 Bb Bb5 Bb
  F: "[f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [f2,c3,f3] ~ [c3,f3,a3,eb4,f4]@2 [bb2,f3,bb3,d4,f4] ~ [bb2,f3,bb3,d4,f4] ~ [bb2,f3,bb3,d4,f4]@4", // F5 F7 F5 F7 Bb
  G: "[eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4]@2", // Eb
  H: "[bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3,d4,f4] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2", // Bb7
  I: "[bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2", // Bb7
  J: "[eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,eb4,g4] ~ [eb3,g3,bb3,eb4,g4] ~ [eb3,g3,bb3,eb4,g4] ~ [eb3,g3,bb3,eb4,g4]@2", // Eb
  K: "[bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3] ~ [bb2,f3,ab3,d4,f4]@2 [bb2,f3,ab3,d4,f4] ~ [bb2,f3,ab3,d4,f4] ~ [bb2,f3,ab3,d4,f4] ~ [bb2,f3,ab3,d4,f4]@2", // Bb7
  L: "[[eb3,g3,bb3] ~ [eb3,g3,bb3,eb4,g4] ~ [eb3,g3,bb3,eb4,g4] ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,eb4,g4] ~@7 [c3,f3,a3,eb4]@7 ~ [c3,f3,a3,eb4,f4]@7 ~, ~@15 f2@8 f2@8 ~, ~@8 f4@3 ~@5]/2", // Eb F7
  M: "[c3,f3,a3,eb4,f4] ~ [c3,f3,a3,eb4,f4]@2 [c3,f3,a3,eb4,f4] ~ [c3,f3,a3,eb4,f4]@2 [f2,bb2,f3,bb3,d4,f4] ~@3 [c3,f3,a3,eb4,f4]@3 ~", // F7 Bb F7
  N: "[c3,f3,a3,eb4,f4] ~ [c3,f3,a3,eb4,f4]@2 [c3,f3,a3,eb4,f4] ~ [c3,f3,a3,eb4,f4]@2 [f2,bb2,f3,bb3,d4,f4] ~@3 [bb2,f3,bb3,d4,f4]@2 ~@2", // F7 Bb
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.3)

// bass · tuba
const bass_2 = note(`<
  ~@2 A B C D E B C D F B C D E B C D G H I J K L I J M N I J K O I J P Q R B C D E B C D F B C D E B C D G H I J K L I
  J M N I J K O I J P Q S
>`.pickRestart({
  A: "~@4 f2@3 ~ bb2 ~@7", B: "bb2 ~@3 f2 ~@3 bb2 ~@3 f2 ~@3", C: "bb2 ~@2 bb2 a2 ~ g2 ~ f2 ~@3 c3 ~@3",
  D: "f2 ~@3 c3 ~@3 f2 ~@3 c3 ~@3", E: "f2 ~@2 f2 g2 ~ a2 ~ bb2 ~@3 f2 ~@3", F: "f2 ~@2 f2 g2 ~ a2 ~ bb2 ~@3 f2@2 ~@2",
  G: "f2 ~@2 f2 g2 ~ a2 ~ bb2 ~ bb2 ~ c3 ~ d3 ~", H: "eb3 ~@3 bb2 ~@3 c3 ~@3 bb2 ~@3",
  I: "f2 ~@3 bb2 ~@3 f2 ~@3 bb2 ~@3", J: "f2 ~@3 bb2 ~@3 f2 ~ bb2 ~ c3 ~ d3 ~", K: "eb3 ~@3 d3 ~@3 c3 ~@3 bb2 ~@3",
  L: "eb3 ~@3 bb2 ~@3 eb2 ~@3 g2@2 gb2@2", M: "eb3 ~@3 bb2 ~@3 eb3 ~ bb2 ~ g2 ~ f2 ~",
  N: "eb2 ~@3 bb2 ~@3 eb2 ~@3 bb2 ~@3", O: "eb2 ~@3 bb2 ~@3 eb2 ~@3 g2@2 gb2@2", P: "eb3 ~@3 bb2 ~@3 eb3 ~@7",
  Q: "f2@3 ~ f2@3 ~", R: "f2 ~ f2@2 g2 ~ a2 ~ bb2 ~@3 f2@4", S: "f2 ~ f2@2 g2 ~ a2 ~ bb2 ~@3 bb2 ~@3",
})).s("gm_tuba").gain(0.42)

// chords · accordion
const accordion_2 = note(`<
  ~@19 A B C D A E F G A B C D A E F H I ~@17 A B C D A E F G A B C D A E F H I ~
>`.pickRestart({
  A: "~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [eb4,g4] ~ [bb3,eb4,g4]", B: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4]@8",
  C: "~ [d4,f4,ab4] ~ [d4,f4,ab4] ~ [f4,ab4] ~ [d4,f4,ab4]", D: "[eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~@3 [eb4,g4,bb4]@8",
  E: "[d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,ab4,f5]@8", // Bb Ddim
  F: "~ [d5,f5,ab5,bb5] ~ [d5,f5,ab5,bb5] ~ [f5,ab5,bb5] ~ [d5,f5,ab5,bb5]", // Bb7
  G: "[g4,eb5]@2 ~@2 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~ [eb4,g4,bb4]@6, bb4 ~@15", // Cm Eb
  H: "[g4,eb5]@2 ~@2 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~@7, bb4 ~@15", I: "[eb4,f4]@4 ~@4 [c4,eb4,f4,a4]@5 ~@3",
})).s("gm_accordion").gain(0.32)

// chords · accordion · soft notes
const accordion_soft = note(`<
  ~@19 A ~ B ~ A ~ C ~ A ~ B ~ A ~ C ~ D ~@17 A ~ B ~ A ~ C ~ A ~ B ~ A ~ C ~ D ~
>`.pickRestart({
  A: "~@5 bb3 ~@2", B: "~@5 d4 ~@2", C: "~@5 d5 ~@2", D: "[c4,a4]@5 ~@11",
})).s("gm_accordion").gain(0.24)

// drums · kick
const kick = s("bd").struct("<~@2 A B@31 C ~ D B@31 C ~ D>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~", D: "~@3 x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B@3 C B@3 C B@3 C B@3 D B@3 E B@3 F B@3 E B@3 G ~@2 B@3 C B@3 C B@3 C B@3 D B@3 E B@3 F B@3 E B@3 G ~ H
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@2 x ~@3 x!2", E: "~@4 x ~@5 x ~ x ~ x!2",
  F: "~@4 x ~@5 x ~ x!3 ~", G: "~@4 x ~ x!3 ~@7", H: "~@10 x!2 ~@4",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B A@3 C A@3 B A@3 C A@17 D ~@2 A B A@3 C A D A B A@3 C A E A@15 D ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!5 ~@3", E: "x!5 ~ x!2",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A ~@7 A ~@25 A ~@7 A ~@24>".pickRestart({
  A: "~@7 x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@7 A ~@7 B C@2 ~ C@3 ~ C@3 ~ C@3 ~@3 A ~@7 A ~@7 B C@2 ~ C@3 ~ C@3 ~ C@3 ~@3 A
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "x",
})).gain(0.48)

stack(accordion, bass, acoustic_guitar_steel, bass_2, accordion_2, accordion_soft, kick, snare, hihat, open_hat, crash)

More by De Nachroave