Strudelify
0:00/0:00
// Viva Colonia — P.Werner-Jates/J.P:Fröhlich/H.Krautmacher/H.Schöner/P.Rudnik
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 1 "Flöte" flute (copy of ch 2 "Vibraphon" vibraphone)
// note: Transcription provider: pdmx. https://musescore.com/score/5853976; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// drums · kick
const kick = s("bd").struct("<A B A C B@5 D B D@2 C E@8 A B A C B@5 D B D@2 C E@23 C E@16 F>".pickRestart({
  A: "x!2", B: "x ~ x!2", C: "x!3 ~", D: "x ~@2 x!2 ~ x ~", E: "x!4", F: "x",
})).gain(0.13)

// drums · snare
const snare = s("sd").struct(`<
  A B A C D E D E D F D F@2 G H@2 I@2 H@2 D J A B A C D E D E D F D F@2 G H@2 I@2 H@2 D K L@4 H@2 D K D@3 M N@2 M G L@4
  H@2 D J L@4 H@2 D K O
>`.pickRestart({
  A: "x!2", B: "x ~@7 x!2 ~ x!2 ~@3", C: "x!2 ~ x!3 ~ x!2 ~@3 x ~@3", D: "~@3 x!2 ~@2 x ~@3 x!2 ~@2 x",
  E: "~@3 x!2 ~@2 x ~@3 x!3 ~ x", F: "x ~@2 x!3 ~ x!2 ~@2 x!3 ~ x", G: "x!2 ~ x!3 ~ x!2 ~@7", H: "~ x ~ x ~ x ~ x",
  I: "~@2 x ~@3 x ~ x ~ x ~ x!4", J: "~@3 x!2 ~@2 x!2 ~@3 x ~@3", K: "~@3 x!2 ~@2 x!2 ~ x ~ x!2 ~ x",
  L: "~@2 x!3 ~ x ~@3 x!3 ~ x ~", M: "x!8", N: "x ~ x!3 ~ x!3 ~ x!6", O: "x",
})).gain(0.13)

// drums · crash
const crash = s("cr").struct("<A B A C B@5 D B D@2 C E@8 A B A C B@5 D B D@2 C E@23 C E@16 F>".pickRestart({
  A: "x!2", B: "x ~ x!2", C: "x!3 ~", D: "x ~@2 x!2 ~ x ~", E: "x!4", F: "x",
})).gain(0.13)

stack(kick, snare, crash)