Strudelify

Duke of Earl

Darts

KeyE♭ majorTempo115 bpm
0:00/0:00
// Duke of Earl — Darts
// 115 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · synth brass 1 · "1st Track"
const synth_brass_1 = note(`<
  A B C D E F G H I J K L M@2 N@2 O@2 P ~ E F G H I J K L M@2 N@2 O@2 P ~ Q@2 R S Q@2 R S E F G H I J K L M@2 N@2 O@2 P
  ~ Q@2 R S T@2
>`.pickRestart({
  A: "g4@3 ~ g4@7 ~ g4@3 ~", B: "eb4@3 ~ eb4@7 ~ eb4@3 ~", C: "c4@3 ~ c4@7 ~ c4@3 ~", D: "d4@3 ~ d4@7 ~ g4 ~ f4 ~",
  E: "eb4@9 ~ f4 ~ g4 ~ f4 ~", F: "eb4@11 ~@5", G: "g4@2 ~ f4@2 eb4@2 ~ f4@4 ~@2 c4 ~",
  H: "eb4@4 ~@2 f4 ~ d4 ~ bb3@3 ~ bb3 ~", I: "eb4@10 ~ g4@2 bb4@2 ~", J: "d5@3 ~ c5@7 ~ c4@3 ~",
  K: "g4@3 ~ f4@7 ~ c4@3 ~", L: "g4@3 ~ f4@7 ~ g4@3 ~", M: "[bb4@24 ~@4 eb5 ~ f5 ~]/2",
  N: "[g5@4 ~@2 eb5@18 ~@4 c5 ~ eb5 ~]/2", O: "[g5@4 ~@2 eb5@14 ~@2 c5 ~ eb5 ~ eb5 ~ f5 ~ g5 ~]/2", P: "g5@2 ~ f5@5",
  Q: "[eb5@13 ~@3]/2", R: "c5@2 ~@2 c5@7 ~ c5@2 ~@2", S: "bb4@3 ~ bb4@7 ~ f4@3 ~", T: "[g4@19 ~@13]/2",
})).s("gm_synth_brass_1").gain(0.24)

// chords · synth brass 1 · "2nd Track"
const synth_brass_1_2 = note(`<
  A B C D E F G H I J K L M N O P Q@2 R ~ E F G H I J K L M N O P Q@2 R ~ S T U V S T U V E F G H I J K L M N O P Q@2 R
  ~ S T U V W@2
>`.pickRestart({
  A: "eb4@3 ~ eb4@7 ~ eb4@3 ~", B: "c4@3 ~ c4@7 ~ c4@3 ~", C: "ab3@3 ~ ab3@7 ~ ab3@3 ~", D: "bb3@3 ~ bb3@7 ~ d4@3 ~",
  E: "~@4 bb3@7 ~ bb3@3 ~", F: "~@4 c4@7 ~ c4@3 ~", G: "~@4 [ab3,c4]@7 ~ ab3@3 ~", H: "~@4 c4@3 ~@5 ab3@3 ~",
  I: "~@4 bb3@7 ~ eb4@3 ~", J: "~@4 g4@7 ~ g3@3 ~", K: "~@4 [ab3,c4]@7 ~ [ab3,c4]@3 ~", L: "~@4 d4@7 ~ d4@3 ~",
  M: "[eb4,g4]@4 ~@2 [eb4,g4]@7 ~@3", N: "[eb4,g4]@2 ~ [eb4,g4]@2 ~@3", O: "[c5,eb5]@4 ~@2 c5@7 ~@3",
  P: "[g4,c5]@2 ~ [g4,c5]@2 ~@3", Q: "[[c5,eb5]@2 ~ [ab4,c5]@7 ~ ab4@2 ~@3]/2", R: "[c5,d5]@2 ~ [bb4,d5]@5",
  S: "[g4,bb4]@3 ~ [g4,bb4]@7 ~ [g4,bb4]@3 ~", T: "[g4,c5]@3 ~ [g4,c5]@7 ~ [g4,c5]@3 ~",
  U: "[eb4,ab4]@3 ~ [eb4,ab4]@7 ~ [eb4,ab4]@3 ~", V: "[d4,f4]@3 ~ [d4,f4]@7 ~ [bb3,d4]@3 ~", W: "[[bb3,eb4]@19 ~@13]/2",
})).s("gm_synth_brass_1").gain(0.24)

// other · synth brass 1 · "3rd Track"
const synth_brass_1_3 = note(`<
  A B C D E@2 F G H I F J K L M N O@2 P ~ E@2 F G H I F J K L M N O@2 P ~ Q@2 R S Q@2 R S E@2 F G H I F J K L M N O@2 P
  ~ Q@2 R S T@2
>`.pickRestart({
  A: "bb3@3 ~ bb3@7 ~ bb3@3 ~", B: "g3@3 ~ g3@7 ~ g3@3 ~", C: "eb3@3 ~ eb3@7 ~ eb3@3 ~", D: "f3@3 ~ f3@7 ~ ab3@3 ~",
  E: "~@4 g3@7 ~ g3@3 ~", F: "~@4 f3@7 ~ f3@3 ~", G: "~@4 ab3@3 ~@5 d3@3 ~", H: "~@4 g3@7 ~ bb3@3 ~",
  I: "~@4 eb4@7 ~@5", J: "~@4 ab3@7 ~ ab3@3 ~", K: "bb3@4 ~@2 bb3@7 ~@3", L: "bb3@2 ~ bb3@2 ~@3",
  M: "g4@4 ~@2 g4@7 ~@3", N: "eb4@2 ~ eb4@2 ~@3", O: "[g4@2 ~ eb4@7 ~ eb4@2 ~@3]/2", P: "g4@2 ~ f4@5",
  Q: "eb4@3 ~ eb4@7 ~ eb4@3 ~", R: "c4@3 ~ c4@7 ~ c4@3 ~", S: "bb3@3 ~ bb3@7 ~ f3@3 ~", T: "[g3@19 ~@13]/2",
})).s("gm_synth_brass_1").gain(0.24)

// bass · electric guitar muted · "Bass"
const bass = note(`<
  A B C D A B C D E B C D F G H@2 I J K L A B C D E B C D F G H@2 I J K L A B C D A B C D A B C D E B C D F G H@2 I J K
  L A B C D M ~
>`.pickRestart({
  A: "eb3@3 ~ eb3@3 ~ eb3@3 ~ eb3 ~ d3 ~", B: "c3@3 ~ c3@3 ~ c3@3 ~ eb3 ~ eb3 ~",
  C: "ab2@3 ~ ab2@3 ~ ab2@3 ~ ab2 ~ c3 ~", D: "bb2@3 ~ bb2@3 ~ bb2@3 ~ bb2 ~ bb2 ~",
  E: "eb3@3 ~ eb3@3 ~ eb3@3 ~ f3 ~ d3 ~", F: "eb3@4 ~@2 eb3@5 ~ bb2@3 ~", G: "eb3@4 ~@2 eb3@4 ~@2 eb3@3 ~",
  H: "c3@4 ~@2 c3@4 ~@2 g2@3 ~", I: "ab2@4 ~@2 ab2@5 ~ eb3@3 ~", J: "ab2@4 ~@2 ab2@5 ~ ab2@3 ~",
  K: "bb2@4 ~@2 bb2@5 ~ f3@3 ~", L: "bb3 ~ bb3 ~ ab3 ~ ab3 ~ g3 ~ g3 ~ f3 ~ f3 ~", M: "eb2",
})).s("gm_electric_guitar_muted").gain(0.27)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@3]!3 [x ~@2 x!2 ~ x!2] [x ~@2 x!2 ~@3]!60 ~@2>").gain(0.27)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!3 [~@2 x ~@3 x!2] [~ x ~ x]!60 ~@2>").gain(0.34)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!64 ~@2>").gain(0.27)

stack(synth_brass_1, synth_brass_1_2, synth_brass_1_3, bass, kick, snare, hihat)