Strudelify
Maria cover art

Maria

Maria

Blondie

KeyA majorTempo160 bpm
0:00/0:00
// Maria — Blondie
// 160 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 177 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · electric bass finger · "bass guitar"
const bass = note(`<
  ~@12 A B C D E B F G H I J D K B C L H M N O P Q R O S B C D E B F G H I J D K B C L H B C D E B F G H I J D K B C L H
  M N O P Q R O S B C D E B F G H I J D K B C L H M N O P Q R O S B C D E B F G H ~@2 B C D E B F G H I J D K B C L H M
  N O P T U V W T X Y Z B C D E B F G H I J D K B C L H B C D E B F G H I J D K B C L H AA AB@5
>`.pickRestart({
  A: "~@4 d2@2 e2@2 f#2@2 e2@2 d2@2 e2 ~", B: "a1@3 ~ a1 ~ a1 ~ a1@3 ~ a1 ~ a1@2",
  C: "e2@3 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2@2", D: "f#2@3 ~ f#2 ~ f#2 ~ f#2@3 ~ f#2 ~ f#2@2",
  E: "d2@3 ~ d2 ~ d2@2 f#2@2 e2@2 d2@2 e2@2", F: "e2@3 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2 ~",
  G: "d2@2 c#2@2 d2 ~ e2@2 d2@2 c#2@2 d2@2 e2@2", H: "d2 c#2 d2 e2 d2 c#2 d2 e2",
  I: "a1@3 ~ a1 ~ a1 ~ a1@3 ~ a1 ~ a1 ~", J: "e2@3 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ [d2,e2] ~",
  K: "d2@3 ~ d2 ~ d2@2 f#2@2 e2 ~ d2@2 e2@2", L: "d2@2 c#2 ~ d2 ~ e2@2 d2@2 c#2@2 d2@2 e2@2",
  M: "d2@4 ~@2 c#2 ~ d2@4 ~@2 d2@2", N: "e2@4 ~@2 d2 ~ e2@4 ~@2 e2 ~", O: "f#2@5 ~ e2 ~ f#2@5 ~ e2 ~",
  P: "f#2@5 ~ f#2 ~ a2 ~ g#2@2 f#2@2 e2@2", Q: "d2@5 ~ c#2 ~ d2@4 ~@2 d2 ~", R: "e2@5 ~ d2 ~ e2@4 ~@2 e2 ~",
  S: "f#2@4 ~@2 f#2 ~ a2 ~ g#2@2 f#2@2 e2@2", T: "b1@3 ~ b1 ~ b1 ~ b1@3 ~ b1 ~ b1 ~",
  U: "b1@3 ~ b1 ~ b1 ~ b1@2 c#2@2 b1@2 ~@2", V: "f#1@3 ~ f#1 ~ f#1 ~ f#1@3 ~ f#1 ~ f#1 ~",
  W: "f#1@3 ~ f#1 ~ f#1 ~ f#1@2 e1@2 f#1@2 ~@2", X: "b1@3 ~ b1 ~ b1 ~ b1@2 a#1 ~ b1@3 ~",
  Y: "d2@3 ~ d2 ~ d2 ~ d2@3 ~ d2 ~ d2 ~", Z: "e2@3 ~ e2 ~ e2 ~ e2@2 f#2@2 e2@3 ~", AA: "d2@3 ~ c#2@3 ~ b1@4 a1@4",
  AB: "[~ d2@4 ~ c#2@5 ~@2 b1@8 a1@5 ~@3 a1@41 ~@10]/5",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · rock organ · "organ"
const rock_organ = note(`<
  ~@13 A@2 B@4 C@4 D@4 E@2 F G@4 H I@2 J K B@4 C@4 D@4 L@3 M N@4 C@4 D@4 E@2 F G@4 H I@2 J K B@4 C@4 D@4 E@2 F G@4 H I@2
  J K B@4 O@3 ~ P K B@4 C@4 D@4 E@2 Q ~@3 R@4 S@3 T P K B@4 C@4 D@4 E@2 P K B@4 C@4 D@4 U@2 V W@5
>`.pickRestart({
  A: "[[a4,c#5] [g#4,b4], e5]/2", B: "[c#5 d5 c#5 [g#4,b4], a4@3 ~, f#4@32 e5@31 ~]/4",
  C: "[[f#4,d5]@2 c#5 [g#4,b4], a4@3 ~, ~ e5]/4", D: "[c#5@16 d5@15 ~ c#5@16 [g#4,b4]@16, a4@3 ~, f#4@32 e5@31 ~]/4",
  E: "[f#4,a4,d5]/2", F: "[f#4,a4,d5]@15 ~",
  G: "[[g#4,b4,e5]@15 ~ c#5@30 ~@2 [a4,d5]@15 ~, ~@15 f#4@48 ~, ~@15 a4@31 ~@18]/4", H: "[g#4,b4,e5]",
  I: "[f#4,a4,c#5]/2", J: "[a4,c#5,e5]", K: "[g#4,b4]", L: "[[f#4,a4,d5]@31 ~ [a4,e5]@16, ~@31 c#5@16 ~]/3",
  M: "[g#4,b4,e5]@15 ~", N: "[c#5@15 d5 d5@16 c#5@16 [g#4,b4]@16, a4@3 ~, f#4@32 e5@31 ~]/4", O: "[[f#4,d5]@2 ~, a4]/3",
  P: "[a4,c#5,e5]@15 ~", Q: "[a4,c#5,e5]@7 ~", R: "[[b4,d#5,f#5]@31 ~ [f#4,a4]@32, ~@31 c#5@31 ~@2]/4",
  S: "[[b4,d#5]@31 ~ [a4,d5]@16, f#5@47 ~]/3", T: "[b4,e5,g#5]", U: "[d5@4 ~ c#5 b4 a4, f#4, a4@7 ~, ~ d5]/2",
  V: "d5 c#5 b4 a4", W: "[d5@5 ~ c#5@7 b4@8 a4@6 ~@3 a4@40 ~@10]/5",
})).s("gm_rock_organ").gain(0.35)

// chords · electric guitar clean · "rythme guit clean"
const electric_guitar_clean = note(`<
  ~@12 A@8 B@8 C D@8 E@7 B@8 F@8 B@8 C D@8 E@7 B@8 C D@8 G@8 ~ H@8 B@8 I@8 J@5 K@7 B@8 L@8 B@8 M@2 ~@5
>`.pickRestart({
  A: "[~@16 c#5@12 ~@3 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@2 f#4, ~@15 a4@12 ~@20 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@111 a4@14 ~@3]/8", // G#m A D5 A G#m
  B: "[[a4,d5]@9 ~ f#4 [a4,d5] ~@4 e5@13 ~@2 [g#4,b4]@13 ~@3 [a4,c#5]@14 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@13 ~@4 e5@12 ~@4 d5@13 ~@2 f#4, ~@15 [a4,c#5]@14 ~@17 f#4@15 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@111 a4@13 ~@4]/8", // D5 G#m A D5 A G#m
  C: "d5@9 ~@2 [f#4,a4] d5 ~@2 f#4", // F#m
  D: "[~ d5@12 ~@3 e5@12 ~@4 c#5@25 ~@7 d5@12 ~@3 [g#4,b4]@13 ~@4 [a4,c#5]@24 ~@3 [a4,c#5]@2 ~@3, a4@12 ~@3 [g#4,b4]@12 ~@3 f#4@26 ~@6 f#4@14 ~@19 f#4@24 ~@3 f#4@2 ~@4, ~@31 a4@26 ~@6 a4@13 ~@52]/8", // G#m A G#m
  E: "[~@15 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@2 f#4, ~@31 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@95 a4@14 ~@3]/7", // G#m A D5 A G#m
  F: "[~@17 e5@14 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@2 f#4, ~@15 a4@15 ~@17 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@16 c#5@15 ~@80 a4@14 ~@3]/8", // G#m A D5 A G#m
  G: "[~@15 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@3 a4@9 ~@7, ~@31 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@3 f#4@10 ~@7, ~@95 a4@14 ~@19]/8", // G#m A D5 A G#m
  H: "[~@16 e5 ~@14 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@2 f#4, ~@15 [a4,c#5]@13 ~@19 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@111 a4@14 ~@3]/8", // G#m A D5 A G#m
  I: "[d5@9 ~@2 [f#4,a4] d5 ~@4 d5@12 ~@3 e5@12 ~@4 c#5@25 ~@6 [f#4,b4]@27 ~@6 c#5@14 ~@2, ~@15 f#4@13 ~@18 f#4@26 ~@6 d#4@26 ~@7 [f#4,a4]@14 ~@3, ~@16 a4@12 ~@3 [g#4,b4]@12 ~@4 a4@26 ~@55]/8", // F#m B5 F#m G#m
  J: "[~@16 b4@23 ~@9 f#5@12 ~@4 g#5@13 ~@3, ~@7 d#4@11 ~@22, ~@15 f#4@22 ~@10 [a4,d5]@14 ~@2 [b4,e5]@14 ~@3]/5", // D5 E5
  K: "[e5 ~@14 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@2 f#4, ~@31 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@95 a4@14 ~@3]/7", // G#m A D5 A G#m
  L: "[d5@9 ~@2 [f#4,a4] d5 ~@3 e5 ~@14 [g#4,b4]@15 ~@2 [a4,c#5]@13 ~@3 [a4,d5]@13 ~@2 [a4,c#5]@12 ~@5 e5@12 ~@4 d5@13 ~@2 f#4, ~@15 f#4@13 ~@19 f#4@14 ~@2 f#4@14 ~@18 [g#4,b4]@13 ~@2 f#4@14 ~@4, ~@111 a4@14 ~@3]/8", // F#m G#m A D5 A G#m
  M: "[d5@9 ~@2 [f#4,a4] d5 ~@2 f#4@14 ~@3]/2", // F#m
})).s("gm_electric_guitar_clean").gain(0.48)

// chords · electric guitar clean · "rythme guit clean" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@13 A B ~@2 C ~@4 D ~@2 B ~@2 E ~@5 D ~@2 A B ~@2 C ~@4 D ~@2 B ~@2 E ~ B ~@2 C ~@4 D ~@2 B ~@2 E ~@5 D ~@2 A B ~@2 C
  ~@4 D ~@2 B ~@2 E ~@5 D ~@2 A B ~@2 C ~@5 A B ~@2 C ~@4 D ~@2 B ~@2 E ~@12 A B ~@2 C ~@4 D ~@2 B ~@2 E A B ~@2 C ~@4 D
  ~@2 B ~@2 E ~@6
>`.pickRestart({
  A: "~ e5@12 ~@3", B: "e5@13 ~@3", C: "e5@11 ~@5", D: "e5@3 ~", E: "a4@9 ~@7",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · harmonica
const harmonica = note("<~@31 A@2 ~@2 A@2 ~@34 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@28 A@2 ~@40 B C@5>".pickRestart({
  A: "[[f#4,c#5]@29 ~@3]/2", B: "~@15 c#5", C: "[d5@6 c#5@7 b4@8 a4@6 ~@2 a4@40 ~@11]/5",
})).s("gm_harmonica").gain(0.56)

// other · electric guitar muted · "muted guitar"
const electric_guitar_muted = note(`<
  ~@13 A B C D E F G H I J K L M N O P ~@8 A B C D E F G H I J K L M N O P A B C D E F G H I J K L M N O P ~@8 A B C D E
  F G H I J K L M N O P ~@8 A B C D E F G H ~@2 A B C D E F G H I J K L M N O P ~@4 Q R S T U V W X A B C D E F G H I J
  K L M N O P A B C D E F G H I J K L M N O P ~@6
>`.pickRestart({
  A: "[a2,a3] ~@5 [a2,a3] ~@3 [a2,a3] ~ [a2,a3] ~ [a2,a3] ~", B: "[b2,b3] ~@3 [b2,b3] ~@5 [b2,b3] ~@3 [b2,b3] ~",
  C: "[c#3,c#4] ~ [c#3,c#4] ~ [c#3,c#4] ~@3 [c#3,c#4] ~ [c#3,c#4] ~@3 [c#3,c#4] ~", // C#
  D: "[d3,d4] ~ d4 ~ [d3,d4] ~@3 [d3,d4] ~ [d3,d4] ~@3 [d3,d4]@2", // D
  E: "[e3,e4] ~ [e3,e4] ~ [e3,e4] ~@3 [e3,e4] ~ [e3,e4] ~@3 [e3,e4] ~", // E
  F: "[e3,e4] ~ e4 ~ [e3,e4] ~@3 e3 ~ [e3,e4] ~@3 [e3,e4] ~", // E
  G: "[d3,d4] ~ [d3,d4] ~ [d3,d4] ~@3 [d3,d4] ~ [d3,d4] ~@3 [d3,d4] ~", // D
  H: "[d3,d4] ~ d4 ~ [d3,d4] ~ [d3,d4] ~ d4 ~ [d3,d4] ~ [d3,d4] ~@3", // D
  I: "[a2,a3] ~ a3 ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~ [a2,a3] ~@3 [a2,a3]@2", // A
  J: "[b2,b3] ~ b3 ~ [b2,b3] ~ b3 ~ b3 ~ [b2,b3] ~@3 [b2,b3] ~", // B
  K: "[c#3,c#4] ~ [c#3,c#4] ~ [c#3,c#4] ~ c#3 ~ [c#3,c#4] ~ [c#3,c#4] ~@3 [c#3,c#4] ~", // C#
  L: "[d3,d4] ~ [d3,d4] ~ [d3,d4] ~ d4 ~ d4 ~ [d3,d4] ~@3 [d3,d4] ~", // D
  M: "[e3,e4] ~ e4 ~ [e3,e4] ~@3 [e3,e4] ~ [e3,e4] ~@3 [e3,e4] ~", // E
  N: "[e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~@3 [e3,e4] ~", // E
  O: "[d3,d4] ~ [d3,d4] ~ [d3,d4] ~ d4 ~ [d3,d4] ~ [d3,d4] ~ [d3,d4] ~ d4 ~", // D
  P: "[d3,d4] ~@3 [d3,d4] ~ [d3,d4] ~@3 [d3,d4] ~ [d3,d4] ~@3", // D
  Q: "[f#3,b3] ~@3 [f#3,b3] ~ [f#3,b3] ~ f#3 ~ [f#3,b3] ~ [f#3,b3] ~@3", // B5
  R: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@3 [f#3,b3] ~ [f#3,b3] ~", // B5
  S: "[f#3,a3] ~ [f#3,a3] ~ [f#3,a3] ~ [f#3,a3] ~ a3 ~ [f#3,a3] ~ [f#3,a3] ~ a3 ~", // F#m
  T: "[f#3,a3] ~ [f#3,a3] ~ a3 ~ f#3 ~ [f#3,a3]@2 ~@2 [f#3,a3] ~ f#3 ~", // F#m
  U: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~", // B5
  V: "[f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@3 [f#3,b3]@2 ~@2", // B5
  W: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // D5
  X: "[a3,e4] ~ [a3,e4] ~ e4 ~ [a3,e4] ~ [a3,e4] ~ e4 ~ [a3,e4] ~@3", // A5
})).s("gm_electric_guitar_muted").gain(0.56)

// drums · kick
const kick = s("bd").struct("<~ A@35 B A@39 B A@61 B A@15 B A@15 C D E F ~@3>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2 ~ x!3 ~ x", C: "x ~@4 x ~@3 x ~@2 x ~@3", D: "x!4", E: "x ~@6 x ~@5 x ~@2",
  F: "~@6 x ~@6 x ~@2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@11 B A@15 B A@7 C A@15 B A@15 B A@7 C A@15 B A@7 B A@9 D A@15 B A@3 B A@7 C A@15 C A@14 E F@2 G H ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@2 x!6", D: "~@4 x ~ x!5 ~ x ~@3", E: "~ x!2 ~@2 x!2 ~", F: "x!4",
  G: "~ x ~@4 x ~@6 x ~@2", H: "~@3 x ~@3 x",
})).gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ [x!8]!169 ~@7>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~@16 B ~@3 B ~@3 B ~@6 C B ~@7 B ~@7 B ~@7 B ~@6 D B ~@6 D B ~@7 B ~@2 E ~@4 B ~@8 E B ~@6 A ~@8 B ~@3 B ~@3 B
  ~@2 D B ~@6 D B ~@7 B ~@6 D B ~@13
>`.pickRestart({
  A: "~@14 x!2", B: "x", C: "~@3 x", D: "~@7 x", E: "~@15 x",
})).gain(0.72)

stack(
  bass, rock_organ, electric_guitar_clean, electric_guitar_clean_2, harmonica, electric_guitar_muted, kick, snare,
  pedal_hat, crash
)

More by Blondie