Strudelify

Diana (feat. Ricky Martin)

Paul Anka

KeyG majorTempo142 bpm
0:00/0:00
// Diana (feat. Ricky Martin) — Paul Anka
// 142 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 overdriven guitar (copy of ch 1 electric guitar clean); ch 12 baritone sax (copy of ch 2 acoustic bass)
// note: Full arrangement: all 83 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(142/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.

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@2 B C D@2 E F G H I J G H I J G H I J G H I J A@2 B C G H I J G H I J G H I J G H I J A@2 B K L M N O P Q R S G H I
  J G H I J G H I J G H I J T@2 B C T@2 B C T@2 B
>`.pickRestart({
  A: "[~@13 b4@15 b4@4 ~ b4@4 b4@8 ~ g4@2]/2", B: "~ a4@3 g4@19 ~", C: "~ b4@3 a4@20",
  D: "[~@12 b4@15 ~ b4@3 ~@2 b4@4 b4@9 g4@2]/2", E: "~ a4@4 g4@19", F: "~ b4@3 a4@19 ~",
  G: "~@6 [b3,d4,g4] ~@8 [b3,d4,g4] ~@8", H: "~@6 [b3,e4,g4] ~@8 [b3,e4,g4] ~@8",
  I: "~@6 [g3,c4,e4] ~@8 [g3,c4,e4] ~@8", J: "~@6 [a3,d4,f#4] ~@8 [a3,d4,f#4] ~@8",
  K: "~ b4@3 a4@6 ~@3 g4 ~ f4 ~@2 e4 ~@2 d4 ~@2", L: "e4 ~@14 g4@6 e4@2 ~", M: "g4@2 ~@13 g4@6 d#4 ~@2", N: "d4 ~@23",
  O: "~@12 b4 ~@2 a4 ~@2 g4 ~@2 f4 ~@2", P: "e4 ~@14 g4@6 e4 ~@2", Q: "g4 ~@23", R: "~@3 d5@3 d5 ~@8 d5@3 d5 ~@5",
  S: "~@3 d5 ~@5 d5 ~@5 d5 ~@5 d5 ~@2", T: "[~@13 b4@15 b4@4 ~ b4@4 b4@8 g4@3]/2",
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.1)

// bass · acoustic bass
const bass = note(`<
  A B C D E F G H I B C D E F G H I B C D E F G J I B C D E F G H I B C D E F G J I B C D E F G K L M N O L M P Q I B C
  D E F G H I B C D E F G J I B C D E F G J I B R
>`.pickRestart({
  A: "g2@4 ~@6 d2@4 ~ d2@2 ~ g2@3 f#2@3", B: "e2@4 ~@5 b1@5 ~ b1@3 e2@3 d2@3", C: "c2@5 ~@4 g2@5 ~ g2@2 ~ e2@3 c2@3",
  D: "d2@5 ~@5 d2@3 ~@2 d2@3 e2@3 f#2@3", E: "g2@5 ~@5 d2@4 ~ d2@3 g2@3 f#2@3", F: "e2@5 ~@4 b1@4 ~@2 b1@3 e2@3 d2@3",
  G: "c2@5 ~@4 g2@4 ~@2 g2@3 e2@3 c2@3", H: "d2@4 ~@5 d2@3 ~@3 d2@3 e2@3 f#2@3", I: "g2@5 ~@5 d2@4 ~ d2@2 ~ g2@3 f#2@3",
  J: "d2@5 ~@4 d2@3 ~@3 d2@3 e2@3 f#2@3", K: "d2@4 ~@5 d2@3 g2@3 f2@3 e2@3 d2@3", L: "c2 ~ e2 ~ g2 ~ e2 ~",
  M: "c2 ~ d#2 ~ g2 ~ d#2 ~", N: "g1@4 ~@2 b1@3 ~@3 d2@3 ~@3 b1@3 ~@3",
  O: "g1@3 ~@3 b1@3 ~@3 g2@2 ~ f2@2 ~ e2 ~@2 d2@2 ~", P: "~ d2!2 ~@2 d2!2 ~", Q: "~@3 d2@2 ~@4 d2@3 ~@3 d2@3 ~@3 d2@3",
  R: "c2@5 ~@4 g2@5 ~@10",
})).s("gm_acoustic_bass").gain(0.43).pan(0.2)

// other · tenor sax
const tenor_sax = note(`<
  A@2 B C A@2 B D ~@16 A@2 B D ~@16 A@2 B E F G H I J K ~@14 L M N O A@2 P Q A@2 P Q A@2 P
>`.pickRestart({
  A: "[~@11 d4 g4 b4@15 b4@5 b4@4 b4@8 g4@3]/2", B: "a4@3 ~ g4@20", C: "b4@3 ~ a4@14 ~@6", D: "b4@3 ~ a4@20",
  E: "b4@3 ~ a4@8 g4 ~@2 f4 ~@2 e4 ~@2 d4 ~@2", F: "c4 ~@14 e4@6 c4 ~@2", G: "d#4 ~@14 d#4@5 c4@2 ~@2", H: "b3 ~@23",
  I: "~@12 g4 ~@2 f4 ~@2 e4 ~@2 d4 ~@2", J: "c4 ~@14 e4@5 ~ c4 ~@2", K: "d#4 ~@23", L: "[d3,g3]", M: "[g3,b3]@23 ~",
  N: "[g3,c4]@23 ~", O: "[f#3,d4]@3 ~", P: "~ a4@3 g4@19 ~", Q: "~ b4@3 ~ a4@15 ~@4",
})).s("gm_tenor_sax").gain(0.33).pan(0.9)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C E F ~@7 A B C D A B C D
  A B C D A B C D A B C D A B C D A B G
>`.pickRestart({
  A: "~@4 g3 b3 d4@3 b3 ~@2 g4@3 d4@2 ~ g4@3 f#4@3", B: "~@4 g3 b3 e4@3 b3 ~@2 g4@3 e4@2 ~ e4@3 b3@3",
  C: "~@4 g3 c4 e4@3 c4 ~@2 g4@3 e4@2 ~ e4@3 c4@3", D: "~@4 a3 d4 f#4@3 d4 ~@2 a4@3 f#4@2 ~ f#4@3 d4@3",
  E: "~@4 a3 d4 f#4@3 d4 ~@2 b4@2 ~ a4@2 ~ g4@2 ~ f4@2 ~", F: "e4 ~@11", G: "~@4 g3 c4 e4@3 c4 ~@14",
})).s("gm_electric_guitar_muted").gain(0.15).pan(0.1)

// other · baritone sax
const baritone_sax = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C E F G H I F G J K L M C
  D A B C D A B C D A N C D A N O D A B O D A B P
>`.pickRestart({
  A: "[g2,g3] ~@8 [d2,d3] ~@5 [d2,d3] ~@2 [g2,g3] ~@2 [f#2,f#3] ~@2", // G D G F#
  B: "[e2,e3] ~@8 [b1,b2] ~@5 [b1,b2] ~@2 [e2,e3] ~@2 [d2,d3] ~@2", // E B E D
  C: "[c2,c3] ~@8 [g2,g3] ~@5 [g2,g3] ~@2 [e2,e3] ~@2 [c2,c3] ~@2", // C G E C
  D: "[d2,d3] ~@8 [d2,d3] ~@5 [d2,d3] ~@2 [e2,e3] ~@2 [f#2,f#3] ~@2", // D E F#
  E: "[d2,d3] ~@8 [d2,d3] ~@2 [g2,g3] ~@2 [f2,f3] ~@2 [e2,e3] ~@2 [d2,d3] ~@2", // D G F E D
  F: "[c2,c3] ~@5 [e2,e3] ~@5 [g2,g3] ~@5 [e2,e3] ~@5", G: "[c2,c3] ~@5 [d#2,d#3] ~@5 [g2,g3] ~@5 [d#2,d#3] ~@5",
  H: "[g1,g2] ~@5 [b1,b2] ~@5 [d2,d3] ~@5 [b1,b2] ~@5", // G B D B
  I: "[g1,g2] ~@5 [b1,b2] ~@5 [g2,g3] ~@2 [f2,f3] ~@2 [e2,e3] ~@2 [d2,d3] ~@2", // G B G F E D
  J: "~@3 [d2,d3] ~@2 [d2,d3] ~@8 [d2,d3] ~@2 [d2,d3] ~@5", // D
  K: "~@3 [d2,d3]@2 ~@4 [d2,d3]@2 ~@4 [d2,d3]@2 ~@4 [d2,d3] ~@2", L: "[g2,g3] ~@8 [d2,d3] ~@2 [g2,g3] ~@11",
  M: "[e2,e3] ~@8 [b1,b2] ~@2 [e2,e3] ~@5 [d2,d3] ~@5", // E B E D
  N: "[e2,e3] ~@9 [b1,b2] ~@4 [b1,b2] ~@2 [e2,e3] ~@2 [d2,d3] ~@2", // E B E D
  O: "[c2,c3] ~@9 [g2,g3] ~@4 [g2,g3] ~@2 [e2,e3] ~@2 [c2,c3] ~@2", P: "[c2,c3] ~@8 [g2,g3] ~@14",
})).s("gm_baritone_sax").gain(0.39).pan(0.9)

// other · glockenspiel
const glockenspiel = note(`<
  A@2 B C A D B C ~@8 E F G H I J K L A D M C ~@8 E F G H I J K L A@2 B N O P Q R S T U V ~@8 E F G H I J K L A@2 B C
  A@2 B C A@2 B
>`.pickRestart({
  A: "b6 ~@3", B: "c7 ~@3", C: "d7 ~@3", D: "~ b6@6 ~@17", E: "~@3 d7@3 ~@3 d7 ~@2 d7@2 ~ d7@2 ~ d7@2 ~@4",
  F: "~@3 e7@3 ~@3 e7 ~@2 e7@2 ~ e7@2 ~ e7@2 ~@4", G: "~@3 e7@2 ~@4 e7 ~@2 e7@2 ~ e7@2 ~ e7@2 ~@4",
  H: "~@3 f#7@3 ~@3 f#7@2 ~ f#7@2 ~ f#7@2 ~ f#7@3 ~@3", I: "g7 ~@2", J: "e7 ~@2", K: "c7 ~@2", L: "d7 ~@2",
  M: "~ c7@6 ~@17", N: "d7 ~ b6 ~", O: "c7@2 ~@13 e7@2 ~@4 d7 ~@2", P: "c7 ~@14 d#7@2 ~@4 c7 ~@2", Q: "d7 ~@23",
  R: "~@12 g7 ~@2 f7 ~@2 e7 ~@2 d7 ~@2", S: "c7 ~@14 e7 ~@5 d7 ~@2", T: "c7 ~@23",
  U: "~@3 d7 ~@2 d7@2 ~@7 d7 ~@3 d7 ~@4", V: "~@3 d7 ~@5 d7@2 ~@4 d7@2 ~@4 d7 ~@2",
})).s("gm_glockenspiel").gain(0.34).pan(0.2)

// drums · snare
const snare = s("sd").struct(`<
  A B A C A D@2 C A@3 C A C A D A C A D A@3 D@5 A@3 C A@3 D A E A D A@2 E D F D F@2 G H G H G I J K A@3 C A D A C A@2 E
  D E D E D F L A D F L A D F L M
>`.pickRestart({
  A: "x ~@4 x!2 ~@2 x ~@5 x ~@2 x ~@2 x ~@2", B: "x ~@4 x!2 ~@2 x ~@4 x ~ x ~ x ~@2 x ~@2",
  C: "x ~@4 x!2 ~@2 x ~@2 x ~ x ~ x ~ x ~@2 x ~@2", D: "x ~@4 x!2 ~@2 x ~@2 x ~ x!3 ~ x ~@2 x ~@2",
  E: "x ~@3 x!3 ~@2 x ~@5 x ~@2 x ~@2 x ~@2", F: "x ~@4 x!2 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
  G: "~@3 x!2 ~@4 x!2 ~@4 x!2 ~ x ~@2 x!2 ~", H: "x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~",
  I: "x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@5", J: "~ x!2 ~@2 x!2 ~", K: "~ x ~ x ~ x ~ x",
  L: "x ~@3 x!3 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", M: "x ~@4 x!2 ~@2 x ~@14",
})).gain(0.14).pan(0.2)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A B A C A D@2 C A@3 C A C A D A C A D A@3 D@5 A@3 C A@3 D A E A D A@2 E D@5 F G F G F H ~@2 A@3 C A D A C A@2 E D E D
  E D@2 I A D@2 I A D@2 I D
>`.pickRestart({
  A: "~@3 x!2 ~@7 x ~@11", B: "~@3 x!2 ~@7 x ~@2 x ~@8", C: "~@3 x!2 ~@10 x ~@8", D: "~@3 x!2 ~@19", E: "~ x ~@2 x ~@3",
  F: "x ~ x ~@3 x ~ x ~@3 x!2 ~@5 x ~@4", G: "~@2 x ~@5 x ~@4 x ~@5 x ~@4", H: "~@2 x ~@5 x ~@4 x ~@10", I: "~ x ~@6",
})).gain(0.05).pan(0.2)

// drums · cowbell
const cowbell = s("cb").struct(`<
  [~ x ~ x]!47
  [~@2 x ~ x!4]
  [~ x ~ x ~ x ~ x]!5
  [~ x ~ x ~ x!2 ~]
  [~ x!2 ~@2 x!2 ~]
  [~ x ~ x ~ x ~ x]
  [~ x ~ x]!26
  ~
>`).gain(0.19).pan(0.2)

stack(
  electric_guitar_clean, bass, tenor_sax, electric_guitar_muted, baritone_sax, glockenspiel, snare, snare_soft, cowbell
)

More by Paul Anka