Strudelify

My Lady of Spain

Classics

KeyD majorTempo102 bpm
0:00/0:00
// My Lady of Spain — Classics
// 102 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Jazz Gtr., #Clean Gt, #Mtd.Dist.
setcpm(102/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.

// chords · rock organ · "#Rtr.Orga"
const rock_organ = note("<~@2 A@4 B@6 C@3 D@8 B@6 C@3 E@8 F@7 G@5 F@7 H@16 I@5>".pickRestart({
  A: "[[d5,f#5]@2 [c#5,e5]@2 f#5 [g5,b5] [f#5,a5]@2, a5@5 ~@3, ~ d5]/4", // D C#m G F#m
  B: "[[b4,g#5] [c#5,a5] [b4,g#5] a5 a#5 [d5,b5], e5@2 f#5, ~@3 c#5@2 ~]/6", C: "[[b4,g#5] [c#5,a5]@2, e5]/3",
  D: "[[g5,b5] f#5 [c#5,e5] f#5 [g5,b5] f#5 [c#5,e5] [d5,f#5], d5@2 ~ d5@3 ~@2, ~ a5@3 ~ a5@3]/8", // G C#m G C#m D
  E: "[[g5,b5] f#5 [c#5,e5] f#5 [g5,b5] f#5 [c#5,e5] [d5,f#5], d5@33 ~@15 d5@48 ~@32, ~ a5@3 ~ a5@3]/8", // G C#m G C#m D
  F: "[[b4,g#5] a5 a#5 ~ g5 f#5 [c#5,e5], e5@2 f#5@2 ~@3, ~ c#5@2 d5@3 ~, ~@3 b5@2 a5@2]/7", // E C#m
  G: "[f#5 [g5,b5] f#5 [c#5,e5] [d5,f#5], d5@3 ~@2, ~@2 a5@3]/5", // G C#m D
  H: "[f#5 [g5,b5] f#5 [c#5,e5] f#5 [g5,b5] f#5 [c#5,e5], d5@3 ~ d5@3 ~, ~@2 a5@3 ~ a5@2]/8", // G C#m G C#m
  I: "[f#5@16 [g5,b5]@16 f#5@16 [c#5,e5]@16 [d5,f#5]@15 ~, d5@3 ~@2, ~@16 a5@23 ~]/5", // G C#m D
})).s("gm_rock_organ").gain(0.08)

// bass · electric bass pick · "Pickd.Bas"
const bass = note(`<
  ~@2 A B C D E F E G H I J K@2 L M K M L M K M E F E G N I J K@2 L M K M O M K M E P H I L M K M O M K M Q R S T L M K
  M O M K M L M K M O M K M L M K M O M K M
>`.pickRestart({
  A: "d2@3 ~ d2@2 ~ d2 d2@2 d2@2 d2@2 d2@2", B: "a1@3 ~ a1@2 ~ a1 a1@2 a1@2 a1@2 a1@2",
  C: "d2@3 ~ d2@2 d2@2 g1@3 ~ g1@3 ~", D: "d2@3 ~ d2@2 d2@2 d2@2 d2@2 d2@2 d2@2", E: "e2@2 ~ e2 b2@2 ~ b2",
  F: "a2@4 ~@2 a2@3 ~ c#2@2 d2@2 d#2@2", G: "a2@4 ~@2 a2@3 ~ a2@2 a2@2 a2@2", H: "f#1@4 ~@2 f#1@2 c#2@3 ~ c#2@3 ~",
  I: "b1@4 ~@2 b1@2 f#2@3 ~ f#2@3 ~", J: "e2@4 ~@2 e2@2 b2@3 ~ b2@3 ~", K: "a2@4 ~@2 a2@2 e2@3 ~ e2@3 ~",
  L: "g1@4 ~@2 g1@2 d2@3 ~ d2@3 ~", M: "d2@4 ~@2 d2@2 a2@3 ~ a2@3 ~", N: "f#2@4 ~@2 f#2@2 c#2@3 ~ c#2@3 ~",
  O: "g2@4 ~@2 g2@2 d2@3 ~ d2@3 ~", P: "a2@4 ~@2 a2@3 ~ a2@3 ~ a2@2", Q: "e2@2 ~ e2 e2@3 ~", R: "a2@2 ~ a2 a2@3 ~",
  S: "f#1@2 ~ f#1 f#1@3 ~", T: "b1@2 ~ b1 b1@3 ~",
})).s("gm_electric_bass_pick").gain(0.35)

// other · string ensemble 1 · "#Vlo.Strn"
const string_ensemble_1 = note(`<
  ~@5 A B C B D E F G@2 H I J@2 K I J@2 L B C B D E F G@2 H I J@2 K I J@2 M N ~@3 I J@2 K I J@2 O B P E Q R S T U V S T
  U W@3 X W@3 X W@3 X W@3 X
>`.pickRestart({
  A: "~@15 f#5", B: "[e3,e4,e5] [g#3,g#4,g#5]", C: "[a3,a4,a5]@9 ~ [c#3,c#4,c#5]@2 [d3,d4,d5]@2 [d#3,d#4,d#5]@2",
  D: "[a3,a4,a5]@6 [b3,b4,b5]@2 [c#4,c#5,c#6]@3 ~ [c#4,c#5,c#6] [b3,b4,b5] [a3,a4,a5] [g#3,g#4,g#5]", // A B C# B A G#
  E: "[f#3,f#4,f#5] [a#3,a#4,a#5]", F: "[b3,b4,b5]@11 ~ [b3,b4,b5] [a3,a4,a5] [g#3,g#4,g#5] [f#3,f#4,f#5]",
  G: "[[e3,e4,e5]@8 [g#3,g#4,g#5]@7 [a3,a4,a5]@6 ~ [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [e4,e5,e6] ~ [d4,d5,d6]@2 [c#4,c#5,c#6]@2]/2", // E G# A B C# E D C#
  H: "[a3,a4,a5]@6 [c#4,c#5,c#6] [c4,c5,c6] [c#4,c#5,c#6] [e4,e5,e6] [d4,d5,d6] [c#4,c#5,c#6] [b3,b4,b5] [a3,a4,a5] [g3,g4,g5] [f#3,f#4,f#5]", // A C# C C# E D C# B …
  I: "[g3,g4,g5]", // G
  J: "[[f#3,f#4,f#5]@8 [d4,d5,f#5] ~ [c#4,c#5,e5,e6] ~ [b3,b4,d5]@2 [a3,a4,e5,a5,c#6]@8 ~@10, ~@8 [d6,f#6]@2 c#6@2 [b5,d6] ~@19]/2", // F# D C#m Bm A D Bm
  K: "~@8 [d3,d4,d5]@2 [e3,e4,e5]@2 [f#3,f#4,f#5] [e3,e4,e5] [d3,d4,d5]@2", // D E F# E D
  L: "~@6 [f#3,f#4,f#5] ~ [d3,d4,d5] ~ [e3,e4,e5] ~ [f#3,f#4,f#5] ~@2 f#5, ~@7 [d3,d4,d5]", // F# D E F# D
  M: "~@6 [f#3,f#4,f#5] [g3,g4,g5] [a3,a4,a5] ~ [f#3,f#4,f#5] ~ [d3,d4,d5] ~ [f#3,f#4,f#5] ~", N: "[e3,e4,e5] ~@3",
  O: "~@10 [f#3,f#4,f#5] ~ [f#3,f#4,f#5]@2 [g3,g4,g5]@2", // F# G
  P: "[a3,a4,a5]@6 [b3,b4,b5]@2 [c#4,c#5,c#6]@2 [b3,b4,b5] ~ [a3,a4,a5] ~ [g#3,g#4,g#5]@2", // A B C# B A G#
  Q: "[b3,b4,b5]@8 [b3,b4,b5] ~ [a3,a4,a5] ~ [g3,g4,g5] ~ [f#3,f#4,f#5] ~", // B A G F#
  R: "[g3,g4,g5] ~ [d3,d4,d5] ~ [g3,g4,g5] ~ [b3,b4,b5] ~ [d4,d5,d6]@6 ~ g5", // G D G B D
  S: "[d3,d4,d5]@5 ~ [f#3,f#4,f#5] ~ [a3,a4,a5]@7 ~", T: "[a2,a3,a4]@5 ~ [c#3,c#4,c#5] ~ [e3,e4,e5]@8",
  U: "[d3,d4,d5]@7 ~ [d3,d4,d5]@2 [e3,e4,e5] ~ [f#3,f#4,f#5] [e3,e4,e5] [d3,d4,d5]@2", // D E F# E D
  V: "[g3,g4,g5]@5 ~ [b3,b4,b5] ~ [d4,d5,d6]@7 ~", // G B D
  W: "[[g3,g4,g5]@7 ~ [d4,b4,d6] ~ [c#4,a4,c#6] ~ [b3,g4,b5] ~ [d4,d5,d6]@9 ~ [d4,d5,d6] ~ [c#4,c#5,c#6] ~ [b3,b4,b5] ~ [c#4,c#5,c#6]@9 ~@9]/3", // G F#m Em D C# B C#
  X: "~@8 [d3,d4,d5]@2 [e3,e4,e5] ~ [f#3,f#4,f#5] [e3,e4,e5] [d3,d4,d5]@2", // D E F# E D
})).s("gm_string_ensemble_1").gain(0.14)

// chords · acoustic guitar steel · "#12Str.Gt"
const acoustic_guitar_steel = note(`<
  A@2 B C D B E F G F H I E J@2 K L F L K L F L E F G F H I E J@2 K L F L K L F L G F H I K L F L K L F L G F H I K L F
  L K L F L K L F L K L F L K L F L K L F M
>`.pickRestart({
  A: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [d3,a3,d4]!2 [d3,a3,d4,f#4] [a3,d4,f#4], a2!4, ~@6 f#4 ~", // D D5 D
  B: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!2 [d3,a3,d4]!2 [d3,a3,d4,f#4] [a3,d4,f#4], a2!2 [a2,d3] a2, ~@6 f#4 ~", // D D5 D D5
  C: "[e3,a3,c#4,g4]@2 [e3,a3,c#4,g4] [a3,c#4,g4] [e3,a3,c#4,g4]@2 [e3,a3,c#4,g4] [a3,c#4,g4] [a3,c#4,g4]@2 [a3,c#4,g4]!2 [e3,a3,c#4]!2 [e3,a3,c#4,g4] [a3,c#4,g4], a2!2 [a2,e3] a2, ~@6 g4 ~", // A7 A A7 A5
  D: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [b3,d4,g4]@2 [b3,d4,g4]!2 [g3,b3,d4]!2 [g3,b3,d4,g4] [b3,d4,g4], a2!2 [d3,g3] d3, ~@6 g4 ~", // D G G5
  E: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [g#3,b3,e4] [e3,g#3,b3]!2 [e3,g#3,b3,e4] [a3,b3,e4], b2 [b2,e3] b2!2, ~@6 e4 ~", // E Asus2 E5
  F: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]!2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [a3,c#4,e4] [e3,a3,c#4]!2 [e3,a3,c#4,e4] [a3,b3,e4], a2 [a2,e3] a2!2, ~@6 e4 ~", // A Asus2 A5
  G: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [g#3,b3,e4] [e3,g#3,b3]!2 [e3,g#3,b3,e4] [g#3,c#4,e4], b2 [b2,e3] b2!2, ~@6 e4 ~", // E C#m E5
  H: "[f#3,a#3,c#4,f#4]@2 [f#3,a#3,c#4,f#4] [a#3,c#4,f#4] [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2 [f#3,a#3,c#4,f#4]@2 [f#3,a#3,c#4,f#4] [a#3,c#4,f#4] [f#3,a#3,c#4]!2 [f#3,a#3,c#4,f#4] [a#3,d4,f#4], c#3 [c#3,f#3] c#3!2, ~@6 f#4 ~", // F# A#aug F#5
  I: "[f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4] [b3,d4,f#4] [b3,d4,f#4]@2 [b3,d4,f#4]!2 [f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4] [b3,d4,f#4] [f#3,b3,d4]!2 [f#3,b3,d4,f#4] [b3,d4,e4], b2 [b2,f#3] b2!2, ~@6 f#4 ~", // Bm E7 B5
  J: "[e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]!2 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [a3,c#4,e4] [e3,a3,c#4]!2 [e3,a3,c#4,e4] [a3,c#4,e4], a2 [a2,e3] a2!2, ~@6 e4 ~", // A A5
  K: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4] [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]!2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] [b3,d4,g4] [g3,b3,d4]!2 [g3,b3,d4,g4] [b3,d4,f#4], d3 [d3,g3] d3!2, ~@6 g4 ~", // G Bm G5
  L: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [d3,a3,d4]!2 [d3,a3,d4,f#4] [a3,d4,e4], a2 [a2,d3] a2!2, ~@6 f#4 ~", // D D5 D Asus4 D5
  M: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4] [a2,d3,a3,d4,f#4] [d3,a3,d4] [d3,a3,d4,f#4] ~, a2 [a2,d3] a2 ~", // D D5 D D5
})).s("gm_acoustic_guitar_steel").gain(0.12)

// chords · electric guitar clean · "#Clean Gt"
const electric_guitar_clean = note(`<
  ~ A B C ~ D ~ E ~ E ~@3 E ~@4 A ~@5 E ~ E ~@3 E ~@4 A ~@4 F G H I ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "~@10 e3@2 ~ e3 ~@2", B: "~@5 b3 ~ b3", C: "~@8 d3@2 e3@2 f#3 ~ d3@2", D: "~@7 g4 ~@8", E: "~@7 d4 ~@8",
  F: "~@4 f#4 ~@3 f#4 ~ f#4@2 ~@4", G: "b3 ~@3 b3 ~@2 b3 ~@2 b3@2 ~@4", H: "~@2 g#4 ~@5 g#4 ~ g#4@2 ~@4",
  I: "c#4 ~@6 c#4 ~@2 c#4@2 ~@4",
})).s("gm_electric_guitar_clean").gain(0.39).pan(0.6)

// other · electric guitar muted · "#Mtd.Dist"
const electric_guitar_muted = note("<~@7 [~@6 d3 d#3] ~@16 [~@6 d3 d#3] ~@55>").s("gm_electric_guitar_muted").gain(0.4)

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

// drums · snare
const snare = s("sd").struct("<~@2 A@12 B A@16 B A@11 B A@11 C A@24>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@6 x ~ x!2 ~", C: "~@4 x ~@3 x!3 ~ x!3 ~",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@14 A ~@16 A ~@11 A ~@11 B ~@24>".pickRestart({
  A: "~@9 x!2 ~ x ~@3", B: "~@15 x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2
  [x ~ x!3 ~ x!3 ~ x ~ x!3 ~]
  [x!5 ~ x!5 ~ x!3 ~]!49
  [x!8]!3
  [x!4 ~@4]
  [x!5 ~ x!5 ~ x!3 ~]!24
>`).gain(0.24)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 [~@15 x] [~@5 x ~@5 x ~@3 x]!49 ~@4 [~@5 x ~@5 x ~@3 x]!23 [~@5 x ~@5 x ~@4]>")
  .gain(0.16)

stack(
  rock_organ, bass, string_ensemble_1, acoustic_guitar_steel, electric_guitar_clean, electric_guitar_muted, kick, snare,
  snare_soft, hihat, hihat_soft
)

More by Classics