Strudelify
Diana (feat. Ricky Martin) cover art

Sings His Favorites

Diana (feat. Ricky Martin)

Paul Anka

KeyG majorTempo136 bpm
0:00/0:00
// Diana (feat. Ricky Martin) — ANKA PAUL
// 136 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 13 "MUTED GTR" electric guitar muted (copy of ch 2 "ACOU BASS" acoustic bass)
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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.

// bass · acoustic bass · "ACOU BASS"
const bass = 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 J K L 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 M
>`.pickRestart({
  A: "g2@2 ~@4 d2@2 ~@2 d2 ~ g2 ~ f#2 ~", B: "e2 ~@5 b1 ~@3 b1 ~ e2 ~ d2 ~", C: "c2@2 ~@4 g2 ~@3 g2 ~ e2 ~ c2 ~",
  D: "d2@2 ~@4 d2 ~@3 d2 ~ e2 ~ f#2 ~", E: "d2@2 ~@4 d2 ~ g2 ~ f2 ~ e2 ~ d2 ~", F: "c2 ~ e2 ~ a2 ~ g2 ~",
  G: "c2 ~ d#2 ~ a2 ~ g2 ~", H: "g1 ~ b1 ~ e2 ~ d2 ~", I: "g1@3 ~ b1@2 ~@2 g2 ~ f2 ~ e2 ~ d2 ~",
  J: "c2@2 ~@2 d#2@2 ~@2 a2@3 ~ g2@2 ~@2", K: "~@2 d2 ~ d2@2 ~@4 d2 ~ d2 ~@3", L: "~@2 d2 ~@3 d2 ~@3 d2 ~@3 d2 ~",
  M: "c2@2 ~@4 g2 ~@9",
})).s("gm_acoustic_bass").gain(0.46)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E B C F G B H I G B J K G B H I G B J K A B C D L M N O P M N Q P M N O P M N Q P M N O ~@6 R S P T N O P T N
  O U T V O U T V O U W V O P W N O P W X
>`.pickRestart({
  A: "~@3 [g4,b4] d5 ~ b4 ~ g4 ~ b4 ~ d5 ~ g4 ~", B: "e4 ~@2 [e4,g4] b4 ~ g4 ~ e4 ~ g4 ~ b4 ~ e4 ~",
  C: "c4 ~@2 [c4,e4] g4 ~ e4 ~ c4 ~ e4 ~ g4 ~ c4 ~", D: "d4 ~@2 [d4,f#4] a4 ~ f#4 ~@3 f#4 ~ a4 ~ f#4 ~",
  E: "g4 ~ g4 [b4,d5] g5 ~ b4 ~ g4 ~ b4 ~ d5 ~ g4 ~", F: "d4 ~ d4 [f#4,a4] ~@2 f#4 ~ d4 ~ f#4 ~ a4 ~ d4 ~",
  G: "g4 ~@2 [g4,b4] d5 ~ b4 ~ g4 ~ b4 ~ d5 ~ g4 ~", H: "c4 ~ c4 [e4,g4] ~@2 e4 ~ c4 ~ e4 ~ g4 ~ c4 ~",
  I: "d4 ~@2 [d4,f#4] a4 ~ f#4 ~ d4 ~ f#4 ~ a4 ~ f#4 ~", J: "~@2 c4 e4 g4 ~ e4 ~ c4 ~ e4 ~ g4 ~ c4 ~",
  K: "d4 ~ d4 [f#4,a4] ~@2 f#4 ~ d4 ~ f#4 ~ a4 ~ f#4 ~", L: "g4 ~@2 [g4,b4] d5 ~ b4 ~ g5 ~ b4 ~ d5 ~ g4 ~",
  M: "~@2 e4 g4 b4 ~ g4 ~ e5 ~ g4 ~ b4 ~ e4 ~", N: "~@3 [c4,e4] g4 ~ e4 ~ c5 ~ e4 ~ g4 ~ c4 ~",
  O: "~@3 [d4,f#4] a4 ~ f#4 ~ d5 ~ f#4 ~ a4 ~ d4 ~", P: "~@3 [g4,b4] d5 ~ b4 ~ g5 ~ b4 ~ d5 ~ g4 ~",
  Q: "~@2 d4 f#4 a4 ~ f#4 ~ d5 ~ f#4 ~ a4 ~ d4 ~", R: "~@2 [a3,d4] ~ [a3,d4]@2 ~@4 [a3,d4] ~ [a3,d4]@2 ~@2",
  S: "~@2 [a3,d4] ~@3 [a3,d4]@2 ~@2 [a3,d4] ~@3 [a3,d4] ~", T: "~@3 [e4,g4] b4 ~ g4 ~ e5 ~ g4 ~ b4 ~ e4 ~",
  U: "~@3 [g4,b4] d5 ~ b4 ~@3 b4 ~ d5 ~ g4 ~", V: "~@3 [c4,e4] g4 ~ e4 ~@3 e4 ~ g4 ~ c4 ~",
  W: "~@3 [e4,g4] b4 ~ g4 ~@3 g4 ~ b4 ~ e4 ~", X: "~@3 [c4,e4] g4 ~ e4 ~@9",
})).s("gm_electric_guitar_muted").gain(0.41).pan(0.6)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<A B C D E F C G ~@16 A B C D ~@16 A B C D ~@24 A B C D A B C D A B H>".pickRestart({
  A: "~ b4", B: "~@2 b4@3 b4@2 ~ b4@6 g4 ~", C: "a4 g4@7", D: "b4@2 ~ a4@13", E: "~ b4@3",
  F: "~@2 b4@3 b4@2 ~ b4@6 g4@2", G: "b4 a4@6 ~", H: "a4 g4@5 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.28).pan(0.6)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D A B C D E F C G A H I J K L C D M N O D P Q ~@2 A R I S A F C D T F C U M N O V P N O W X Y ~@2 Z AA ~@2 AB AC
  C D AD F C D AE AF C AG AH AI AJ AK M AL O AM M N O AM M N AN
>`.pickRestart({
  A: "~@4 [g6,b6,d7] ~ [g6,b6,d7] ~@5 [g6,b6,d7] ~@3", B: "~@4 [g6,b6,e7] ~ [b6,e7] ~@5 [g6,b6,e7] ~@3",
  C: "~@4 [g6,c7,e7] ~ [g6,c7,e7] ~@5 [g6,c7,e7] ~@3", D: "~@4 [a6,d7,f#7] ~ [a6,d7,f#7] ~@5 [a6,d7,f#7] ~@3",
  E: "~@11 [g6,b6,d7] ~@4", F: "~@4 [g6,b6,e7] ~ [g6,b6,e7] ~@5 [g6,b6,e7] ~@3",
  G: "~@4 [f#6,a6] ~ [f#6,a6,d7] ~@5 [f#6,a6] ~@3, ~@6 d7 ~", H: "~@4 [e6,g6,b6] ~ [e6,g6,b6] ~@5 [e6,g6,b6] ~@3",
  I: "~@4 [e6,g6,c7] ~ [e6,g6,c7] ~@5 [e6,g6,c7] ~@3", J: "~@4 [f#6,a6,d7] ~ [f#6,a6,d7] ~@5 [f#6,a6] ~@3, ~@6 d7 ~",
  K: "~@4 [b6,d7,g7] ~ [b6,d7,g7] ~@5 [g6,b6,d7] ~@3", L: "~@4 [b6,e7] ~ [g6,b6,e7] ~@5 [g6,b6,e7] ~@3",
  M: "~@4 [b6,d7,g7] ~ [b6,d7,g7] ~@5 [b6,d7,g7] ~@3", N: "~@4 [b6,e7,g7] ~ [b6,e7,g7] ~@5 [b6,e7,g7] ~@3",
  O: "~@4 [c7,e7,g7] ~ [c7,e7,g7] ~@5 [c7,e7,g7] ~@3", P: "~@4 [b6,d7,g7] ~ [d7,g7] ~@5 [b6,d7,g7] ~@3",
  Q: "~@4 [b6,e7,g7] ~ [b6,e7,g7] ~@5 [b6,e7] ~@3", R: "~@6 [g6,b6,e7] ~@5 [g6,e7]@2 ~@2, ~@12 b6 ~@3",
  S: "~@4 [f#6,a6,d7] ~ [f#6,a6] ~@5 [a6,d7]@2 ~@2, ~@12 f#6 ~@3", // D F#m D5
  T: "~@4 [g6,b6,d7] ~ [b6,d7] ~@5 [b6,d7] ~@3, ~@6 g6 ~", // G Bm
  U: "~@4 [a6,d7,f#7] ~ [a6,d7,f#7] ~@5 [a6,f#7] ~@3, ~@6 d7 ~", // D
  V: "~@4 [a6,d7,f#7] ~ [a6,d7,f#7] ~@5 f#7@2 ~@2, ~@12 a6 ~@3", W: "~@4 [d7,f#7,a7] ~ [d7,f#7,a7] ~@9",
  X: "~@2 g7@2 c7 d#7 e7 c7 [d#7,g7] e7 ~ [d#7,g7] ~@4, ~@2 d#7 ~@2 g7@2 ~@9", // D#
  Y: "~@2 d7 d#7 ~ d7 d#7 ~@2 d#7 ~ d7 d#7 ~@3, ~@2 g7@2 ~ g7@2 ~ [d7,g7]@2 ~@6", // G5
  Z: "~@2 d#7 e7 c7 d#7 e7 c7 g7 e7 c7 [d#7,g7] e7 ~@3, ~ g7 ~@2 d#7 ~@3", // D#
  AA: "~@2 d7 d#7 ~ d7 d#7 c7 d7 d#7 ~ [d7,g7] d#7 ~@3, ~@2 g7@2 ~ g7@2 ~ g7@2 ~@6", AB: "~@12 d7 ~@3",
  AC: "~@6 [b6,e7] ~@5 [g6,b6,e7] ~@3", AD: "~@4 [g6,d7] ~ [g6,b6,d7] ~@5 [g6,b6,d7] ~@3",
  AE: "~@4 [g6,b6,d7,g7] ~ [g6,b6,d7,g7] ~@5 [g6,b6,d7,g7] ~@3", // G
  AF: "~@3 e7 [g6,b6] ~ [g6,b6,e7] ~@5 [g6,b6] ~@3, ~@6 e7 ~", // G Em G
  AG: "~@4 [a6,d7,f#7] ~ [a6,d7,f#7] ~@5 [a6,d7,f#7]@2 ~@2", AH: "~@4 [g6,b6,d7] ~ [b6,d7] ~@5 [g6,b6,d7] ~@3",
  AI: "~@4 [g6,b6,e7] ~ [g6,b6,e7] ~@5 [g6,b6,e7]@2 ~@2", AJ: "~@4 [g6,c7,e7] ~ [g6,c7,e7] ~@5 [g6,c7] ~@3, ~@6 e7 ~",
  AK: "~@4 [a6,d7,f#7] ~ [a6,d7,f#7] ~@5 [d7,f#7]@2 ~@2, ~@12 a6 ~@3", // D
  AL: "~@4 [b6,e7,g7] ~ [b6,e7,g7] ~@5 [e7,g7] ~@3, ~@6 b6 ~", AM: "~@4 [d7,f#7,a7] ~ [d7,f#7,a7] ~@5 [d7,f#7,a7] ~@3",
  AN: "~@4 [c7,e7] ~@11", // C
})).s("gm_piano").gain(0.11).pan(0.8)

// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note(`<
  ~ A ~@3 A ~@2 B ~@2 C ~@5 D ~@6 E F ~@3 G ~ H ~@4 A ~@6 I E ~@3 J K L ~ M N ~@2 O P ~@2 Q ~@7 A ~@14
>`.pickRestart({
  A: "~@6 g6 ~@9", B: "~@4 [g6,b6,d7] ~ [g6,b6,d7] ~@9", C: "~@4 d7 ~@11", D: "~@4 g6 ~@11", E: "~@6 b6 ~@9",
  F: "~@12 g7 ~@3", G: "~@4 [g6,b6,e7] ~@11", H: "~@3 d7 ~@4", I: "~@12 d7 ~@3", J: "~@3 e7 ~@6 c7 ~ e7 ~@3",
  K: "~@4 c7 ~@2 c7 ~@2 c7 g7 ~@4", L: "~@2 [g6,b6] ~@13", M: "~@5 g7 ~@10", N: "~@4 c7 ~@5 c7 ~@5",
  O: "~@6 d7 ~@5 b6 ~@3", P: "~@4 [g6,b6,e7] ~ g6 ~@9", Q: "~@4 b6 ~@11",
})).s("gm_piano").gain(0.05).pan(0.8)

// other · tenor sax
const tenor_sax = note("<A@2 B C D E F G ~@16 A@2 B C ~@16 A@2 B C ~@24 A@2 B C A@2 B C A@2 H>".pickRestart({
  A: "[~@8 b4@10 b4@3 b4@2 ~ b4@6 g4@2]/2", B: "a4 g4@7", C: "b4@3 a4@12 ~", D: "~ b4@3",
  E: "~@2 b4@3 b4@2 ~ b4@6 g4@2", F: "a4@2 g4@13 ~", G: "b4 a4@6 ~", H: "a4 g4@5 ~@2",
})).s("gm_tenor_sax").gain(0.49).pan(0.4)

// other · tenor sax
const tenor_sax_2 = 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 ~@7 F 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: "[g2,g3] ~@5 [d2,d3] ~@3 [d2,d3] ~ [g2,g3] ~ [f#2,f#3] ~", // G D G F#
  B: "[e2,e3] ~@5 [b1,b2] ~@3 [b1,b2] ~ [e2,e3] ~ [d2,d3] ~", // E B E D
  C: "[c2,c3] ~@5 [g2,g3] ~@3 [g2,g3] ~ [e2,e3] ~ [c2,c3] ~", // C G E C
  D: "[d2,d3] ~@5 [d2,d3] ~@3 [d2,d3] ~ [e2,e3] ~ [f#2,f#3] ~", // D E F#
  E: "[d2,d3] ~@5 [d2,d3] ~ [g2,g3] ~ [f2,f3] ~ [e2,e3] ~ [d2,d3] ~", F: "~@2 d2 ~@3 d2 ~@3 d2 ~@3 d2 ~",
  G: "[c2,c3] ~@5 [g2,g3] ~@9", // C G
})).s("gm_tenor_sax").gain(0.38)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@47 A B C D E F G D ~@28>".pickRestart({
  A: "~@8 [a4,b4]@2 a4@2 g4@2 f4 ~", B: "e4@3 ~@7 g5@3 ~ e5@2, ~@10 f#5 ~@5", C: "g5 ~@9 g5@4 d5@2, ~@10 f#5 ~@5",
  D: "g5 ~@15", E: "~@4 b4 a4 g4 f4", F: "e4 ~@9 g5@4 e5@2", G: "g5 ~@9 g5@3 ~ d5@2, ~@10 f#5 ~@5",
})).s("gm_overdriven_guitar").gain(0.53).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  [x ~@3 x ~@2 x]!48
  [x!4]!3
  [x ~@3 x ~@3 x ~@2 x!2 ~@3]
  [x!4]!2
  [~ x!2 ~@2 x!2 ~]
  [~ x ~ x ~ x ~ x]
  [x ~@3 x ~@2 x]!26
  [x!2]
>`).gain(0.33)

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

// drums · clap
const clap = s("cp").struct(`<
  [~ x ~ x]!32
  [~@2 x ~@2 x!2 ~]
  [~ x ~ x]!15
  [~@2 x ~@3 x ~@3 x ~@2 x!2 ~]!6
  [~ x!2 ~@2 x!2 ~]
  [~ x ~ x ~ x ~ x]
  [~ x ~ x]!26
  [~ x ~@2]
>`).gain(0.43)

// drums · hihat
const hihat = s("hh").struct(`<
  [x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~]!48
  [~ x ~ x ~ x ~ x]!6
  [~ x!2 ~@2 x!2 ~]
  [~ x ~ x ~ x ~ x]
  [x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~]!26
  [x ~ x!3 ~ x ~ x ~ x ~@5]
>`).gain(0.33)

stack(
  bass, electric_guitar_muted, electric_guitar_jazz, piano, piano_soft, tenor_sax, tenor_sax_2, overdriven_guitar, kick,
  snare, clap, hihat
)

More by Paul Anka