Strudelify

Spanish Flea

Julius Wechter

KeyA majorTempo130 bpm
0:00/0:00
// Spanish Flea — Julius Wechter
// 130 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5603289; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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.

// other · trumpet · "Trompette en Si♭"
const trumpet = note(`<
  ~@3 A B@2 C@2 D E F@2 G@2 H@2 I J K L M ~@2 N O P Q@2 R S T U@2 V@2 H@2 I J K L M ~@2 W X Y Z@2 R S T U@2 V@2 H@2 I J
  K L M ~
>`.pickRestart({
  A: "~@10 d4@2 d#4 ~ e4 ~", B: "[f4 ~@3 d5 ~ f4 ~ d5 ~ c5 ~@3 b4@8 ~@4 g4@2 f#4 ~ f4 ~]/2",
  C: "[e4 ~@3 c5 ~ e4 ~ c5 ~ a#4 ~@3 a4@8 ~@4 f4@2 e4 ~ d#4 ~]/2", D: "d4@2 f4 ~ a#4 ~ g4@2 ~@2 a#4 ~ c5@2 ~@2",
  E: "f4@2 g#4 ~ c#5 ~ a#4@2 ~@2 c#5 ~ d#5@2 ~@2", F: "[f5@18 ~@2 f5 ~ f5 ~ g5 ~ f5 ~ c#5 c5@2 ~]/2",
  G: "[a#4 ~@3 f4 ~ d4 ~ f#4 ~ f#4 ~@3 g4@8 ~@4 g3@2 a3 ~ b3 ~]/2",
  H: "[c4 ~@3 e4 ~ c4 ~ e4 ~ d4@2 ~@2 c4@8 ~@4 d4@2 c#4 ~ c4 ~]/2", I: "a#3@2 d4 ~ f4 ~ d#4@2 ~@2 g4 ~ g#4@2 ~@2",
  J: "c#4@2 f4 ~ g#4 ~ f#4@2 ~@2 a#4 ~ b4@2 ~@2", K: "a4", L: "~@4 a4 ~ a4 ~ a#4 ~ a4 ~ f4 d#4@2 ~", M: "d4 ~@7",
  N: "~@2 a#4 ~ c5 ~ d5 ~", O: "d#5@2 ~@8 d#5@2 f5 ~ d#5 ~", P: "g5 ~ f5@2 ~@2 d#5@2 ~@2 c#5@2 c5 ~ a#4 ~",
  Q: "[g#4@2 ~@2 g#4@2 ~@2 a#4 ~ b4 ~@3 c5@6 ~@6 f4@2 d#4 ~ d4 f#4]/2", R: "c#4@4 f4 ~ f4@2 ~@2 f4@2 f#4 ~ f4 ~",
  S: "g#4 ~ f#4@3 ~ f4@2 ~@2 c#4@2 c4 ~ b3 ~", T: "a#3@2 ~@2 a#3@2 ~@2 b3 ~ c#4@4 ~@2",
  U: "[c4!2 d4@2 a#4 ~ d#4@16 ~@4 d4@2 d#4 ~ e4 ~]/2", V: "[f4 ~@3 f4 ~ d4 ~ f#4 ~ f#4 ~@3 g4@8 ~@4 g3@2 a3 ~ b3 ~]/2",
  W: "~@2 d4 ~ d#4 ~ f4 ~", X: "g4@2 ~@8 g4@2 g#4 ~ g4 ~", Y: "a#4 ~ g#4@2 ~@2 g4@2 ~@2 f4@2 d#4 ~ c#4 ~",
  Z: "[c4@2 ~@2 c4@2 ~@2 c#4 ~ d4@2 ~@2 d#4@5 ~@7 f4@2 d#4 ~ d4 ~]/2",
})).s("gm_trumpet").gain(0.35)

// other · trombone
const trombone = note(`<
  A@3 B C D E F G H I F C D E F G H I F A@3 J K L M N O P Q R S C D E F G H I F A@3 J K L M N O P Q R T C D E F G H I F
  A ~
>`.pickRestart({
  A: "a#2 f2", B: "a#2 ~@7", C: "a#2@3 a#2 d3@3 ~", D: "g3@3 g3 d3@3 ~", E: "c3@3 c3 c3@4", F: "f3!2 d#3 ~ d3 ~ c3 ~",
  G: "a#2@3 d#3@3 g#2@2", H: "c#3@3 f#2@3 b2@2", I: "f2@3 f2 c3@3 c3", J: "a#2 ~@6 d3", K: "d#3@3 d#3 a#2@3 a#2",
  L: "d#3@3 d#3 f3@2 g3@2", M: "g#3@3 g#3 d#3@3 d#3", N: "g#3@3 g#2 a#2@2 c3@2", O: "c#3@3 c#3 g#2@3 g#2",
  P: "c#3@3 c#3 g#3@2 c#3 ~", Q: "f#3 ~@3 f#3 ~@3", R: "f3 ~@3 f3 ~ c3@2", S: "f3 d#3 d3 c3", T: "f4 d#4 d4 c4",
})).s("gm_trombone").gain(0.5)

// chords · piano
const piano = note(`<
  A@2 B ~ C D E F G H I ~ C D E F G H I ~ A@2 B ~ J@2 K L M N O P ~ C D E F G H I ~ A@2 B ~ J@2 K L M@2 O P Q C D E F G
  H I ~ R ~
>`.pickRestart({
  A: "[[d4,f4,a#4]@15 ~]/2", B: "[d4,f4,a#4]@15 ~", C: "[d4,f4,a#4] [d4,f#4,a4]", D: "[d4,g4,b4]@15 ~",
  E: "[c4,e4,g4]!2", F: "[c4,f4,a4]@15 ~", G: "[d4,f4,a#4]@2 ~ [d#4,g4,a#4]@2 ~ [c4,d#4,g#4]@2",
  H: "[c#4,f4,g#4]@2 ~ [a#3,c#4,f#4]@2 ~ [b3,d#4,f#4]@2", I: "[a3,c4,f4]@15 ~", J: "[a#3,d#4,g4]@15 ~",
  K: "[c4,d#4,g#4]@15 ~", // G#
  L: "~@2 [g#2,g#3]@2 [a#2,a#3] ~ c3 ~ [a#2,a#3] ~ [g#2,g#3] ~ [g2,g3] [f#2,f#3]@3, [d#4,g#4]@15 ~, c4@6 c4@9 ~", // G# A# G# G F# G#5
  M: "[c#4,f4,g#4]@15 ~, [f2,f3] ~@7", N: "[c#4,f4,g#4]@15 ~", O: "[a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~@3",
  P: "[a3,c4,f4] ~@3 [a3,c4,f4] ~ [g3,c4,e4] ~", // F C
  Q: "[f3,f4] [d#3,d#4] [d3,d4] [c3,c4], [a3,c4] ~ [g3,a#3] ~ [f3,a3] ~ [d#3,g3] ~", R: "[d4,f4,a#4]",
})).s("gm_piano").gain(0.5)

// chords · acoustic guitar nylon · "Guitare classique"
const acoustic_guitar_nylon = note(`<
  A B A C D E F G H I J K D E F G H I J K A B A C L M N O P Q R S T D E F G H I J K A B A C L M N O P Q R S ~ D E F G H
  I J K A C
>`.pickRestart({
  A: "a#3@2 f4!2 f3@2 f4!2", B: "a#3@2 f4 f3@2 f3 f4 ~", C: "a#3 ~@7",
  D: "~@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#2,a#3,d4,f4] ~@3 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~, a#2@3 ~ d3@3 ~", // A# D
  E: "~@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [g3,b3,d4,g4] ~@3 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4] ~, g3@3 ~ d3@3 ~", // G
  F: "~@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [c3,g3,c4,e4] ~@3 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~, c3@3 ~ c3@4", // C
  G: "f3@2 [f3,a3,c4,f4]@2 [d#3,a3,c4,f4]@2 [a3,c4,f4] ~ d3@2 [a3,c4,f4]@2 [c3,a3,c4,f4]@2 [a3,c4,f4] ~", // F F7 F
  H: "[a#3,d4,f4]@2 ~ [a#3,d#4,g4]@2 ~ [g#2,g#3,d#4]@2, a#2@3 d#3@3 c4 ~", // A# D# G#5
  I: "[g#3,c#4,f4]@2 ~ [f#3,a#3,c#4]@2 ~ [f#3,b3,d#4] ~, c#3@3 f#2@3 b2@2", J: "f2@3 f2 c3@3 c3, [a3,c4,f4]",
  K: "f3!2 d#3 ~ d3 ~ c3 ~",
  L: "~@2 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [d#3,a#3,d#4,g4] ~@3 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [a#2,a#3,d#4,g4] ~, d#3@3 ~ a#2@3 ~", // D#
  M: "~@2 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [d#3,a#3,d#4,g4] ~@3 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [a#3,d#4,g4] ~, d#3@3 ~ f3@2 g3@2", // D#
  N: "~@2 [c4,d#4,g#4]@2 [c4,d#4,g#4]@2 [g#3,c4,d#4,g#4] ~@3 [c4,d#4,g#4]@2 [c4,d#4,g#4]@2 [d#3,c4,d#4,g#4] ~, g#3@3 ~ d#3@3 ~", // G#
  O: "~@2 [c4,d#4,g#4]@2 [c4,d#4,g#4]@2 [g#2,c4,d#4,g#4] ~@3 [c4,d#4,g#4]@2 [c4,d#4,g#4]@2 [c4,d#4,g#4] ~, g#3@3 ~ a#2@2 c3@2", // G#
  P: "~@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#3,c#4,f4,g#4] ~@3 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [g#2,c#4,f4,g#4] ~, c#3@3 ~ g#2@3 ~", // C#
  Q: "~@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#3,c#4,f4,g#4] ~@3 [c#4,f4,g#4]@2 [c#3,c#4,f4,g#4]@2 [c#4,f4,g#4] ~, c#3@3 ~ g#3@2 ~@2", // C#
  R: "[f#3,a#3,c#4,f#4] ~@3 [f#3,a#3,c#4,f#4] ~@3", S: "[f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~ c3@2",
  T: "[f3,f4] [d#3,d#4] [d3,d4] [c3,c4], [a3,c4] ~ [g3,a#3] ~ [f3,a3] ~ [d#3,g3] ~", // F D# D C Am Gm F D#
})).s("gm_acoustic_guitar_nylon").gain(0.35)

stack(trumpet, trombone, piano, acoustic_guitar_nylon)