Strudelify
Mr Blue cover art

1993 · Mr. Blue

Mr Blue

Rene Klijn

KeyA majorTempo96 bpm
0:00/0:00
// Mr Blue — Rene Klijn
// 96 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D E F E G H I J K L M N O P Q R S P Q R S T I J K L M U V W X R Y W Q R S Z@3 AA AB AC AD AA AE AF AG AH AI AJ
  AK AL AM AN AO AP AM AQ AO AR AE AF AG AH AI AJ AK AL AM AS AT AU AM AN AV AW Z@3 AA AB AC AD AX@2
>`.pickRestart({
  A: "a4 e5 a5 ~@3 a4 e5, e3@15 ~, ~@3 a5@5, ~ a6",
  B: "~@2 a4@2 e5@2 ~@4 b4@2 e5@2 b4 ~, b2@15 ~, ~@6 b5@9 ~, ~@8 b6@7 ~",
  C: "~@3 a4 c#7@2 a4 b4, a2@15 ~, a4 a5 ~@2, ~@2 e5@5 ~@9", D: "~ d5 ~ a5 b6@2 ~@2, e3@15 ~, ~ e5 ~@2",
  E: "[e4,a4,b4]@3 ~ [e6,a6]@4, a2, ~@7 e7@8 ~", F: "e4@7 ~ [e6,b6]@8, [e2,b2], ~@7 e7@8 ~",
  G: "~@8 b6@7 ~, e2@15 ~, [b3,e4]@4 a5@11 ~, ~@2 e5@13 ~, ~@6 e6@9 ~", H: "[a3,e4]@5 c#4!2 e4, e3@7 ~",
  I: "b3@5 b3 a3 b3, [e3,g#3]@15 ~", J: "c#4@9 ~ c#4@2 d4@2 e4@2, [e3,a3]@7 ~", K: "[e3,g#3,b3]@15 ~",
  L: "[a3,c#4]@9 ~ c#4@2 f#4@2 a3@2, [c#3,f#3]@7 ~", M: "b3@9 ~ b3@2 a3@2 b3@2, [b2,e3,g#3]@7 ~",
  N: "[a3,c#4]@11 ~ d4@2 e4@2, [c#3,f#3]@15 ~", O: "[b2,e3,g#3,b3]@15 ~", P: "[a2,e3,a3,c#4]@7 ~ [c#2,c#3,e3,b3]@7 ~",
  Q: "[f#2,a3,c#4,f#4]@6 ~@2 [e2,e3,c#4,e4,a4]@7 ~", R: "[d2,d3,a3,d4,f#4]@6 ~@2 [b2,d#4,f#4,a4,c#5]@7 ~",
  S: "[e2,e3,b3,e4,b4]@15 ~", T: "[a3,e4]@9 ~ a3@2 b3@2 c#4@2, e3@7 ~", U: "[a3,c#4]@5 c#4 d4 e4, [c#3,f#3]@15 ~",
  V: "~@6 e4 b4, [b2,e3,g#3,b3]@15 ~", W: "[a2,e3,a3,c#4,a4]@7 ~ [c#2,c#3,e3,b3]@7 ~",
  X: "[f#2,a3,c#4,f#4]@6 ~@2 [e2,e3,c#4,e4,f#4,a4]@7 ~", Y: "[e2,e3,b3,e4]@7 b4, b4@13 ~@3",
  Z: "[[e3,a3,e4,a5]@7 e3 [e3,a3,d4,e4,d6]@7 e3 e6@5 a6 e6 [e3,c#6], ~@7 e5@8 e5@5 ~@4, ~@32 [e3,a3,c#4,e4]@13 ~@3]/3", // A5 Dsus2 C#m A
  AA: "[a3,d4,e4,a4]@7 ~, d6@3 ~", AB: "[e3,a3,e4,a5]@13 ~ [e3,e5]@2", AC: "[e3,a3,d4,e4,d6]@13 ~ [e3,e5]@2",
  AD: "e6@9 ~ a6@2 e6@2 [e3,c#6]@2, [e3,a3,c#4,e4]@7 ~", AE: "[a3,e4,c#5]@5 a4 b4 c#5, e3@7 ~",
  AF: "[b3,b4]@5 b4 a4 b4, [e3,g#3]@15 ~", AG: "[c#4,c#5]@9 ~ c#5@2 d5@2 e5@2, [e3,a3]@7 ~",
  AH: "[e3,g#3,b3]@15 ~, [g#4,b4]@3 ~", AI: "[a3,c#4,c#5]@9 ~ c#5@2 f#5@2 a4@2, [c#3,f#3]@7 ~",
  AJ: "[b3,b4]@9 ~ b4@2 a4@2 b4@2, [b2,e3,g#3]@7 ~", AK: "[a3,c#4,c#5]@5 c#5 d5 e5, [c#3,f#3]@15 ~",
  AL: "[b2,e3,g#3,b3,b4]@15 ~", AM: "[e3,a3,c#4,a5]@7 ~ [e3,b3,b5]@7 ~", AN: "[c#3,f#3,a3,c#6]@7 ~ [c#3,e3,a3,a5]@7 ~",
  AO: "[f#3,d6]@7 ~ [d#4,f#4,a4,c#5,c#6]@7 ~, [a3,d4]@5 ~@11", AP: "e4@5 a4 [e4,b4]@2, [e3,b3]@15 ~",
  AQ: "[c#3,f#3,a3,c#6]@7 ~@5 b5@3 ~, ~@8 [c#3,e3,a3,a5]@7 ~", AR: "[e3,b3,e4]@15 ~",
  AS: "[c#3,f#3,a3,c#6]@7 ~ [e2,c#3,e3,a3,a5]@7 ~", AT: "[d2,f#3,d6]@7 ~ [d#4,f#4,a4,c#5,c#6]@7 ~, [a3,d4]@5 ~@11",
  AU: "b5@3 e5 b4!2 e5!2, [e2,e3,b3]@15 ~, e4@5 ~@3", AV: "[f#3,d6]@7 ~ [d#4,f#4,a4,c#5]@7 ~, [a3,d4]@5 ~@11",
  AW: "[b3,f#4,b4]@15 ~, e4@13 ~@3", // B5
  AX: "[a4@8 ~@13 [e6,a6]@10 ~, [a3,d4,e4]@15 a6@6 ~@11, d6@12 ~ e6@7 ~@12, ~@8 a4@9 ~@2 [a4,e5]@12 ~, ~@10 e5@7 ~@3 a5@10 ~@2]/2", // A5 Asus4 A5
})).s("gm_piano").gain(0.25)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D A B C D E F E F G F H I J K L M N O P Q R S R S T S T U N V W X N Y Z Q AA AB AC AD AE AF AG AH AI F AI F H F
  H U AJ AK AL AM AN AO AP AQ AI AR AI AS H F H U AJ AK AL AM AN AO AP AQ AT AU AV AW AT AX AY AV ~
>`.pickRestart({
  A: "a2 ~@13 e2 ~", B: "b2@12 ~@2 e2 ~", C: "c#3@8 ~@2 c#3 ~ d3 ~ e3 ~", D: "b2@15 ~", E: "a2 ~ a2 ~@12 a2",
  F: "e2 ~ e2 ~@7 e2 ~@3 e2 ~", G: "f#2 ~ f#2 ~@11 f#2 ~", H: "f#2 ~ f#2 ~@7 f#2 ~@3 f#2 ~",
  I: "e2 ~ e2 ~@7 e2 ~@2 e2 ~ e2", J: "a2 ~ a2 ~@4 c#2 c#2@2 c#2 ~@5", K: "f#2 ~ f#2 ~@6 e2!2 ~ e2@2 e1 ~",
  L: "d2 ~ d2@2 ~@3 b1!2 ~ b1@2 ~@3 d2", M: "e2 e1@2 ~ e1@2 ~ e1 e2 e1 e1@2 e1 ~ e1@2",
  N: "a2 ~ a2 ~@4 c#2!2 ~ c#2 ~@5", O: "f#2 ~ f#2 ~@5 e1!2 ~ e1!4 ~", P: "d2 ~ d2 ~@4 b1!4 ~@4 b1",
  Q: "e2 ~ e1 ~@4 e2!2 ~ e2 ~@3 e2 ~", R: "a2 ~ a2 ~@7 a2 ~@3 a2@2", S: "e2 ~ e2 ~@7 e2 ~@3 e2@2",
  T: "f#2 ~ f#2 ~@7 f#2 ~@3 f#2@2", U: "e2 ~ e2 ~@4 e2!3 ~ e2!4 ~", V: "f#2 ~ f#2 ~@4 e2!2 ~ e2 ~@3 e2 ~",
  W: "d2 ~ d2 ~@3 d2 b1!2 ~ b1 ~@4 b1", X: "e2 ~ e1 ~@2 e1!2 ~ e2 e1 ~ e1!4 ~", Y: "f#2 ~ f#2 ~@5 e2 ~ e2 ~@2 e2 ~@2",
  Z: "d2 ~ d2 ~@4 b1!2 ~@3 b1 ~@2 b1", AA: "a2 ~ a2 ~@4 a2 ~@2 a2 ~@4 a2", AB: "a2 ~ a2 ~@4 b2 c#3 ~ e3 ~ e3 ~ b2 ~",
  AC: "a2 ~ a2 ~@4 e3 ~ e2!2 ~ e2!2 ~ e2", AD: "a2 ~ a2 ~@4 e3 ~@2 e3 ~ e3!2 ~@2",
  AE: "a2 ~ a2 ~@4 a2 ~ a2!2 ~ b2 c#3 e3@2", AF: "a2 ~ a2 ~@4 a2 ~@2 e2 ~ e2!4",
  AG: "a2 ~ a2 ~@4 b2 c#3 ~ b2 ~ a2 ~ e2 ~", AH: "a2 ~ a2 ~@4 a2!2 ~ a2 ~@2 e2 ~ e2", AI: "a2 ~ a2 ~@7 a2 ~@3 a2 ~",
  AJ: "a2 ~ a2 ~@3 c#2!3 ~ c#2 ~@4 c#2", AK: "f#2 ~ f#2 ~@2 f#2!2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  AL: "d2 ~ d2 ~@4 b1!2 ~ b1 ~ b1!4", AM: "e2 ~ e1 ~@2 e1!3 e2 e1 ~ e1!4 ~", AN: "a2 ~ a2@2 a2 ~@2 c#2!2 ~ c#2 ~@4 c#2",
  AO: "f#2 ~ f#1 ~@2 f#2 ~ f#2 e2 ~ e2 ~@3 e2 ~", AP: "d2 ~ d2 ~@4 b1!2 ~ b1 ~@4 e1", AQ: "e2 ~ e1 ~@7 e1 ~@3 e1 ~",
  AR: "e1 ~ e1 ~@7 e1 ~@3 e1 ~", AS: "e1 ~ e1 ~@7 e1 ~@3 e2 ~", AT: "a2 ~ a2 ~@4 e3 ~ e3!2 ~ e3!2 ~@2",
  AU: "a2 ~ a2 ~@6 e2!2 ~ e2 ~@3", AV: "a2 ~ a2 ~@13", AW: "a2 ~ a2 ~@4 b2 c#3 e3 a2 ~ e2 ~@3",
  AX: "a2 ~ a2 ~@6 e2!2 ~ a2 ~ e2 ~", AY: "a2 ~ a2 ~@6 e3!2 ~@2 e3 ~@2",
})).s("gm_fretless_bass").gain(0.4)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B A B A B A B A B A B C B C B D E F B D E F B A B A B C B C G D H I J K H I J A L A L A L A L A B A B C B C G D E F
  B D E F B A B A B C B C G D E F B D E F B A L A L A L A L ~
>`.pickRestart({
  A: "c#4 ~ a3 ~ c#4 ~ a3 ~ c#4 ~ a3 ~ c#4!2 a3 ~", B: "e4 ~ b3 ~ e4 ~ b3 ~ e4!2 b3 ~ e4!2 b3 ~",
  C: "f#4 ~ c#4 ~ f#4 ~ c#4 ~ f#4 ~ c#4 ~ f#4!2 c#4 ~", D: "c#4 ~ a3 ~ c#4!2 a3 ~ e4 ~ b3 ~ e4!2 b3 ~",
  E: "f#4 ~ c#4 ~ f#4!2 c#4 ~ c#4!2 a3 ~ c#4!2 a3 ~", F: "d4 ~ a3 ~ d4 ~ a3 ~ d#4!2 b3 ~ d#4!2 b3 ~",
  G: "e4 ~ b3 ~ e4 ~ b3 c#4 e4!2 b3 ~ e4!2 b3 ~", H: "f#4 ~ c#4 ~ f#4!2 c#4 ~ c#4 ~ a3 ~ c#4!2 a3 ~",
  I: "d4 ~ a3 ~ d4 ~ a3 ~ d#4!2 b3 ~ d#4 ~ b3 ~", J: "e4 ~ b3 ~ e4 ~ b3 ~ e4 ~ b3 ~ e4!2 b3 ~",
  K: "c#4 ~ a3 ~ c#4!2 a3 ~ e4 ~ b3 ~ e4 ~ b3 ~", L: "d4 ~ a3 ~ d4 ~ a3 ~ d4!2 a3 ~ d4!2 a3 ~",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.3)

// other · alto sax
const alto_sax = note(`<
  A@2 B C D E@2 F ~@19 G ~@3 H ~@7 I J K L@2 M N O P Q ~@2 R ~@3 S@2 ~@2 T U@2 V W ~@7 X ~@7 Y Z AA AB AC AD AE@3 AF
>`.pickRestart({
  A: "[~@2 e4@26 c#4 d4 e4@2]/2", B: "e4@12 ~ c#4@2 a3", C: "b3@12 ~ a3@2 g#3", D: "~ e3@11 f#3 a3 b3 f#3, f#3 ~@7",
  E: "[b3@11 ~@2 a3 b3 c#4@2 b3 a3 [f#3,a3] b3 a3@7 c#4@2 e4 [f#4,a4], a3 ~@31]/2", // F#m
  F: "f#4@6 c#4 b3 c#4 b3 [f#3,a3] a3@5", G: "~@3 c#4 [a3,b3] b3 c#4@2 ~ e4@3 f#4 ~@3", H: "~@5 e4 f#4 c#4 e4@4 ~@4",
  I: "~@12 e4 f#4 b3@2", J: "a3@13 b3 c#4@2", K: "e4@4 e4@2 [f4,f#4] ~ e4@7 ~",
  L: "[c#5@2 b4 b4@2 a4 a4@2 g#4 g#4@2 f#4 [e4,f#4] ~ e4 e4@3 f#4 c#4@2 b3 a3 b3@5 a3 b3 c#4 e4]/2", // Esus2
  M: "b3@4 b3@2 c#4@2 ~@4 a3 b3 c#4 e4", N: "b3@3 a3 b3@2 c#4 a3@3 f#3 ~@5",
  O: "~ e3!2 f#3!2 a3!2 b3!2 c#4!2 e4!2 f#4!2 e4",
  P: "a4@4 [b4,c5] [a4,b4] f#4 a4@2 [e4,f#4] c#4 e4 b3@2 [a3,b3] f#3, ~@12 f#4 ~@3", Q: "a3@3 ~@5",
  R: "~@4 c#4@2 e4 ~ e4@2 b3 b3@4 ~", S: "[~@11 a4 b3@2 [f#3,a3] a3@4 ~@13]/2", T: "~@9 a3@2 ~ c#4 e4 f#4 ~",
  U: "[a4@22 f#4@6 b3 [b3,c4] f#3@2, ~@22 e4 ~@7 a3 ~]/2", V: "a3 ~@3", W: "~@10 a3 b3 c#4 e4 f#4 ~",
  X: "~@4 c#4 e4!2 c#4 e4@2 f#4 b3@2 a3 ~@2", Y: "~@10 c#5@4 b4 [f#4,a4]", Z: "a4@12 ~ e4 ~ e4, ~@6 f#4 ~",
  AA: "e4 d4 ~ d4@5 ~@8", AB: "c#4@2 e4 b3@2 e4 a3@2 e4 g#3@2 e4 f#3@2 f#3@2", AC: "f#3@2 a3@9 ~ a3 b3 c#4 d4",
  AD: "e4@2 e4@2 e4@2 e4@2 e4@2 e4@2 e4 f#4 g#4 a4",
  AE: "[b4@2 b4@2 b4@2 ~@2 a4@3 [e4,f#4] c#4@2 [e4,f#4] c#4@2 b3 [g#3,c#4] b3@7 ~ c#4@2 e4 f#4 e4@9 ~ c#4 ~ c#4 ~@2 b3 a3, ~@31 c#4 ~@13 c#4@2 ~]/3", // Esus2 C#5
  AF: "b3@15 ~",
})).s("gm_alto_sax").gain(0.3)

// chords · acoustic guitar steel · "+12STR GTR"
const acoustic_guitar_steel = note(`<
  A B C B C D C B ~@12 E F G B H B C B I D I B J F G B E F G B K L M L M N M L ~@8 J F G B E F G B H B C B I D I B J F G
  B E F G B K L M L M N M L ~
>`.pickRestart({
  A: "[e3,a3]@3 [a3,e4] [a3,e4]@4 [a3,e4] a3 a3@2 [a3,e4] a3 a3@2, ~@9 e4@3 ~ e4@3", // A5
  B: "[b3,e4] ~@2 e4 [b3,e4] b3 b3@2 [b3,e4] ~@2 e4 [b3,e4] b3 b3@2, ~ [b3,e4]@2 ~@2 e4@3 ~@2 b3@2 ~ e4@3, ~@2 b3@2 ~@5 [b3,e4]@2 ~@5", // E5
  C: "[a3,e4] ~@2 e4 [a3,e4] a3 a3@2 [a3,e4] ~@2 e4 [a3,e4] a3 a3@2, ~ [a3,e4]@2 ~@2 e4@3 ~@2 a3@2 ~ e4@3, ~@2 a3@2 ~@5 [a3,e4]@2 ~@5", // A5
  D: "[b3,e4] ~@2 e4 [b3,e4] b3 b3@2 [b3,e4] ~@2 e4 [b3,e4] ~@2 e4, ~ [b3,e4]@2 ~@2 e4@3 ~@2 b3@2 ~ [b3,e4]@2 ~, ~@2 b3@2 ~@5 [b3,e4]@2 ~@3 b3@2", // E5
  E: "[a3,e4] ~@2 e4 [a3,e4] a3 a3@2 [b3,e4] ~@2 e4 [b3,e4] b3 b3@2, ~ [a3,e4]@2 ~@2 e4@3 ~@2 b3@2 ~ e4@3, ~@2 a3@2 ~@5 [b3,e4]@2 ~@5", // A5 E5 A5 E5
  F: "[f#3,c#4] ~@2 c#4 [f#3,c#4] f#3 f#3@2 [e3,c#4] ~@2 c#4 [e3,c#4] ~@2 c#4, ~ [f#3,c#4]@2 ~@2 c#4@3 ~@2 e3@2 ~ [e3,c#4]@2 ~, ~@2 f#3@2 ~@5 [e3,c#4]@2 ~@3 e3@2", // F#5 C#m F#5 C#m
  G: "[a3,d4] ~@2 d4 [a3,d4] a3 a3@2 [a3,d#4] ~@2 d#4 [a3,d#4] a3 a3@2, ~ [a3,d4]@2 ~@2 d4@3 ~@2 a3@2 ~ d#4@3, ~@2 a3@2 ~@5 [a3,d#4]@2 ~@5", // D5 Adim D5 Adim
  H: "[a3,e4] ~@2 e4 [a3,e4] a3 a3@2 [a3,e4] a3 a3@2 [a3,e4] a3 a3@2, ~ [a3,e4]@2 ~@2 e4@3 ~ e4@3 ~ e4@3, ~ a3 ~@6", // A5
  I: "[f#3,c#4,f#4] ~@2 c#4 [f#3,c#4] f#3 f#3@2 [f#3,c#4] ~@2 c#4 [f#3,c#4,f#4] f#3 f#3@2, ~ [f#3,c#4]@2 ~@2 c#4@3 ~@2 f#3@2 ~ c#4@3, ~@2 f#3@2 ~@5 [f#3,c#4]@2 ~@5", // F#5
  J: "[a3,c#4] ~@2 c#4 [a3,c#4] a3 a3@2 [b3,e4] ~@2 e4 [b3,e4] b3 b3@2, ~ [a3,c#4]@2 ~@2 c#4@3 ~ [b3,e4]@2 ~@2 e4@3, ~ a3 ~@3 b3 ~@2", // A E5 A E5
  K: "[a3,c#4,e4] ~@2 [c#4,e4] [a3,c#4,e4] a3 a3@2 [a3,c#4,e4] a3 a3@2 [a3,c#4,e4] a3 a3@2, ~ [a3,c#4,e4]@2 ~@2 [c#4,e4]@3 ~ [c#4,e4]@3 ~ [c#4,e4]@3, ~ a3 ~@6", // A C#m A C#m
  L: "[a3,d4,e4] ~@2 [d4,e4] [a3,d4,e4] a3 a3@2 [a3,d4,e4] a3 ~ e4 [a3,d4,e4] a3 a3@2, ~ [a3,d4,e4]@2 ~@2 [d4,e4]@3 ~ [d4,e4]@3 ~ [d4,e4]@3, ~ a3 ~@3 a3 ~@2", // Asus4 Dsus2 Asus4 Dsus2
  M: "[a3,c#4,e4] ~@2 [c#4,e4] [a3,c#4,e4] a3 a3@2 [a3,c#4,e4] a3 ~ e4 [a3,c#4,e4] a3 a3@2, ~ [a3,c#4,e4]@2 ~@2 [c#4,e4]@3 ~ [c#4,e4]@3 ~ [c#4,e4]@3, ~ a3 ~@3 a3 ~@2", // A C#m A C#m
  N: "[a3,d4,e4] ~@2 [d4,e4] [a3,d4,e4] a3 a3@2 [a3,d4,e4] a3 ~ e4 [a3,d4,e4] a3 ~ e4, ~ [a3,d4,e4]@2 ~@2 [d4,e4]@3 ~ [d4,e4]@3 ~ [d4,e4]@3, ~ a3 ~@3 a3 ~ a3", // Asus4 Dsus2 Asus4 Dsus2
})).s("gm_acoustic_guitar_steel").gain(0.07).pan(0.8)

// drums · ride
const ride = s("rd").struct("<~@40 [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!8 ~@32 [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!8 ~>")
  .gain(0.3)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!4 ~ x ~ x ~ x ~ x ~ x ~ x]!88 ~>").gain(0.5)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<[~@2 x!6]!88 ~>").gain(0.25)

// drums · shaker
const shaker = s("sh").struct("<[x ~ x!3 ~ x!10]!87 [x ~ x!3 ~ x!9 ~] ~>").gain(0.1)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<[~ x ~@3 x ~@10]!88 ~>").gain(0.05)

stack(
  piano, bass, electric_guitar_muted, alto_sax, acoustic_guitar_steel, ride, cabasa, cabasa_soft, shaker, shaker_soft
)