Strudelify

Polyushka Polye - Meadowlands - Moscow 1941

Lev Knipper

KeyF majorTempo130 bpm
0:00/0:00
// Polyushka Polye - Meadowlands - Moscow 1941 — Lev Knipper
// 130 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5870329; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · trumpet · "Trompette en Si♭"
const trumpet = note("<~@10 A B A B C B C B D E F G H I J K D E F G H I J K ~@10>".pickRestart({
  A: "eb5", B: "d5", C: "c5", D: "eb5@2 c5 eb5", E: "d5@2 bb4 g4", F: "eb5 d5 c5 bb4 c5@2 g4@2", G: "d5 g4",
  H: "c5@2 bb4 ab4 g4 f4 g4 ab4", I: "g4 d5 b4 g4", J: "c5!2 bb4 ab4 g4 f4 g4 ab4", K: "g4@2 d5@3 c5 d5 ~",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "Trompette en Si♭"
const trumpet_2 = note("<~@10 A B A B C B C B A B A B C B C B A B A B C B C B ~@10>".pickRestart({
  A: "eb4", B: "d4", C: "c4",
})).s("gm_trumpet").gain(0.25)

// other · french horn · "Mellophone"
const french_horn = note("<~@10 A B C D E F G H A B C D E F G H I J I J E K G L ~@7 M@3>".pickRestart({
  A: "eb4@2 c4 eb4", B: "d4@2 bb3 g3", C: "eb4 d4 c4 bb3 c4@2 g4@2", D: "d4 g3", E: "c4@2 bb3 ab3 g3 f3 g3 ab3",
  F: "g3 d4 b3 g3", G: "c4!2 bb3 ab3 g3 f3 g3 ab3", H: "g3 d4@2 g4", I: "g4@6 f4 ~ g4@6 f4 ~", J: "g4@2 d4@4 bb3 ~",
  K: "g3@2 d4@3 c4 d4 ~", L: "g3@2 d4@4 g4 ~", M: "[~@6 c4@19 d4@9 ~@14]/3",
})).s("gm_french_horn").gain(0.3)

// bass · tuba · "Tuba en Si♭ (clé de Sol)"
const bass = note("<~@2 A B A B C B C B D E D E F E F E D E D E F E F E D E D E F E F E A B A B C G@5>".pickRestart({
  A: "eb2", B: "d2", C: "c2", D: "c2!4", E: "g1!4", F: "ab1!4", G: "[~ d2@18 c2@19 d2@19 d2@9 ~@14]/5",
})).s("gm_tuba").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@18 x!9 [x ~@2 x] x [x ~@2 x] x!4 ~@10>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@26 x!4 [x!4] ~@13>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@18 [~ x ~@2] ~@7 [~ x ~@2]!8 ~@10>").gain(0.4)

// drums · bongos
const bongos = s("bongo:4").struct("<~@26 [~@3 x ~@3 x] [~ x!2 ~] [~@3 x ~@3 x] [~ x!2 ~] ~@14>").gain(1.17)

// drums · whistle
const whistle = s("ballwhistle:0").struct("<~@26 [~ x] ~ [~ x] ~@2 [x!4] ~@12>").gain(0.58)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<A B A@7 B A@7 B A@20 C D E ~@3>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!6", C: "x ~ x!3 ~ x ~ x!2 ~ x!3 ~ x",
  D: "x!2 ~ x ~ x!2 ~ x!3 ~ x!3 ~", E: "~ x!2 ~@13",
})).gain(0.43)

stack(trumpet, trumpet_2, french_horn, bass, kick, high_tom, crash, bongos, whistle, woodblocks)