Strudelify
Mama Said cover art

Load

Mama Said

Metallica

KeyF majorTempo67 bpm
0:00/0:00
// Mama Said — Metallica
// 67 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 14, 3/4 at bar 14, 4/4 at bar 15, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 4 "Gtr 4" named as a guitar, played on electric guitar clean (its harpsichord patch is not one); ch 5 "Gtr 5" named as a guitar, played on electric guitar clean (its pad sweep patch is not one)
// note: duplicate parts dropped: ch 5 "Gtr 5" electric guitar clean (copy of ch 4 "Gtr 4" electric guitar clean)
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Gtr 2.
setcpm(67/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 · acoustic guitar steel · "Gtr 1"
const acoustic_guitar_steel = note(`<
  A B C D@2 B C E F B C G@2 H I J@2 K L M@2 N O P Q N O R Q N O S@2 T@2 K U V W X Y Z Y Z Y Z Y Z AA AB AC AD AE AF AC
  AD AE AG@2 AH AI V H AJ AK AL AM@2 AN AO AP AA AQ Y Z Y Z Y Z Y Z Y Z Y Z AR AS@3
>`.pickRestart({
  A: "~@9 f4@2 f4 [a3,d4,e4] [d4,f4] d3 a3, ~@2 [d3,a3,d4] ~", // Asus4 Dm D5
  B: "[a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4]!3 a2 [d4,f4] [c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [a2,e3,a3,c4]@2", // Dsus4 Dm C Am
  C: "[e3,a3,c4]!2 [e3,a3,c4]@2 [e3,a3,bb3,e4] [e3,a3,c4,e4] [a3,c4,e4]!2 f4@2 f4!2 [a3,d4,e4] [d4,f4] d3 a3, ~@2 [d3,a3,d4] ~", // Am A Am Asus4 Dm D5
  D: "[[a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4]!3 a2@2 [c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [e3,a3,c4,e4]@3 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4] [a3,d4,e4]@2 g3 ~ f4@2 f4 [a3,d4,e4] [d4,f4] d3 a3, ~@7 a2@3 ~@2 [d3,a3,d4]@2 ~@2]/2", // Dsus4 Dm C Am Asus4 Dm D5
  E: "[a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4]!3 a2@2 [c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [a2,e3,a3,c4,e4]@2", // Dsus4 Dm C Am
  F: "~ [e3,a3,d4,e4] [e3,a3,d4,e4]@2 ~ [e3,a3,d4,e4] [e3,a3,d4,e4]@2 ~ f4@2 f4 [a3,d4,e4] [d4,f4] d3 a3, ~@2 [d3,a3,d4] ~", // Dsus2 Asus4 Dm D5
  G: "[[a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4]!3 a2@2 ~ [c4,e4]@5 ~ [a3,c4,e4]@14 ~@3, ~@4 [c3,e3,g3]@3 [a2,e3]@7 ~@2]/2", // Dsus4 Dm C Am C A5
  H: "~ f4@3 ~ [d4,g4]@3 ~ [c4,e4]@3 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2, [d3,f3,d4] [c3,e3,g3] [a2,e3,a3] ~", // G5 C G Dm C A5
  I: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 ~ f4@3, ~@3 [d3,f3,d4]", // G Dm
  J: "[~ [d4,g4]@3 ~ [c4,e4]@3 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 ~ f4@3 ~ g4@3, [c3,e3,g3] [a2,e3,a3] ~@4 [d3,f3,d4] [c3,e3,g3,d4]]/2", // G5 C G C A5 Dm C
  K: "~ e4@3 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2, [a2,e3,a3,c4] ~@3", // G Am
  L: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 ~ f4@3 ~ g4@3 ~ d4@3, ~ [d3,f3,d4] [c3,e3,g3,d4] [bb2,f3,bb3]", // G Dm C Bb5
  M: "[~ g4@3 ~ [c4,e4]@15 ~ f4@2 f4 [a3,d4,e4] [d4,f4] d3 a3 [a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4], [g2,b2,d3,g3,d4] [a2,e3,a3]@4 [d3,a3,d4] ~@2]/2", // C Asus4 Dm Dsus4 Dm G A5 D5
  N: "[a3,d4,f4]!2 a2 [d4,f4] [c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [a2,e3,a3,c4]@2 [e3,a3,c4]!2 [e3,a3,c4]@2", // Dm C Am
  O: "[e3,a3,bb3,e4] [e3,a3,c4,e4] [a3,c4,e4]!2 f4@2 f4!2 [a3,d4,e4] [d4,f4] d3 a3 [a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4], ~ [d3,a3,d4] ~@2", // A Am Asus4 Dm Dsus4 Dm D5
  P: "[a3,d4,f4]!2 a2@2 [c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a3,c4,e4]@2", // Dm C Am
  Q: "[a3,c4,e4] [a3,d4,e4]@2 g3 ~ f4@2 f4 [a3,d4,e4] [d4,f4] d3 a3 [a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4], ~ [d3,a3,d4] ~@2", // Am Asus4 Dm Dsus4 Dm D5
  R: "[a3,d4,f4]!2 a2@2 [c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [e3,a3,c4,e4]@3 [a3,c4,e4] [a3,c4,e4]@2, ~@5 a2@3", // Dm C Am
  S: "[[a3,d4,f4]!2 a2@2 [c3,e3,g3,c4,e4]@6 [a2,e3,a3,c4,e4]@14 ~@5 f4@3, ~@7 [d3,f3,d4]]/2", // Dm C Am Dm
  T: "[~ [d4,g4]@3 ~ [c4,e4]@3 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [d3,f3,d4,f4]@4 ~ g4@3, [c3,e3,g3] [a2,e3,a3] ~@5 [c3,e3,g3,d4]]/2", // G5 C G Dm C A5 C
  U: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 ~ f4@3 ~ g4@3 ~ e4@3, ~ [d3,f3,d4] [c3,e3,g3,d4] [a2,e3,a3,c4]", // G Dm C Am
  V: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2", // G
  W: "~ f4@3 ~ g4@3 ~ d4@3 ~ g4@3, [d3,f3,d4] [c3,e3,g3,d4] [bb2,f3,bb3] [g2,b2,d3,g3,d4]", // Dm C Bb5 G
  X: "[a2,e3,a3,c4,e4]@3 [a2,e3,a3,c4,e4] [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4] [a2,e3,a3,b3,e4]@2 [a2,e3,a3,b3,e4]@2 [a2,e3,a3,d4,e4]!2 [a2,e3,a3,d4,e4]@2 [a2,e3,a3,d4,e4]", // Am Asus2 Asus4
  Y: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4]!2 [d3,a3,d4,f4]@2 [g2,b2,d3,g3,d4,g4]@3 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2", // Dm G
  Z: "[c3,e3,g3,d4,g4]@2 [c3,e3,g3,d4,g4]!2 [c3,e3,g3,d4,g4]@2 [f2,c3,f3,a3,c4,f4]@3 [c3,f3,a3,c4,f4] [c3,f3,a3,c4,f4]@2 [c3,f3,a3,c4,f4]!2 [c3,f3,a3,c4,f4]@2", // C F
  AA: "[d3,f3,d4,f4] [c3,e3,g3,d4,g4] [bb2,f3,bb3,d4] [g2,b2,d3,g3,d4,g4]", // Dm C Bb G
  AB: "[a2,e3,a3,c4,e4]@6 [a2,e3,a3,d4,e4]@2 ~ [a2,e3,a3,d4,e4] ~ [a2,e3,a3,d4,e4] ~ [a2,e3,a3,d4,e4]@2 [a2,e3,a3,d4,e4]", // Am Asus4
  AC: "~ f4@2 f4 [a3,d4,e4] [d4,f4] d3 a3 [a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4]!3 a2 [d4,f4], [d3,a3,d4] ~@3", // Asus4 Dm Dsus4 Dm D5
  AD: "[c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [a2,e3,a3,c4]@2 [e3,a3,c4]!2 [e3,a3,c4]@2 [e3,a3,bb3,e4] [e3,a3,c4,e4] [a3,c4,e4]!2", // C Am A Am
  AE: "f4@2 f4!2 [a3,d4,e4] [d4,f4] d3 a3 [a3,d4,g4]@2 [a3,d4,g4] [a3,d4,f4]!3 a2@2, [d3,a3,d4] ~@3", // Asus4 Dm Dsus4 Dm D5
  AF: "[c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 d4 [e3,g3,c4] [e3,a3,c4,e4]@3 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4] [a3,d4,e4]@2 g3, ~@3 a2@3 ~@2", // C Am Asus4
  AG: "[~ e4@5 [a2,e3,a3,c4,e4]@14 ~@12, [c3,e3,g3,c4]@3 ~@13]/2", // Am C
  AH: "~@4 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2", // G
  AI: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 ~ f4@3 ~ [d4,g4]@3 ~ [c4,e4]@3, ~ [d3,f3,d4] [c3,e3,g3] [a2,e3,a3]", // G G5 C Dm C A5
  AJ: "[g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4] [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]@2 [g2,b2,d3,g3,d4,g4]!2 [d3,f3,d4,f4]@4", // G Dm
  AK: "[c3,e3,g3,d4,g4]@4 [bb2,f3,bb3,d4]@4 [g2,b2,d3,g3,d4,g4]@4 [a2,e3,a3,c4,e4]@3 [a2,e3,a3,c4,e4]", // C Bb G Am
  AL: "[a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4] [a2,e3,a3,b3,e4]@2 [a2,e3,a3,b3,e4]@2 [a2,e3,a3,d4,e4]!2 [a2,e3,a3,d4,e4]@2 [a2,e3,a3,d4,e4] [d3,f3,d4,f4]@4", // Am Asus2 Asus4 Dm
  AM: "[[c3,e3,g3,d4,g4]@4 [a2,e3,a3,c4,e4]@4 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4] [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]!5 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@4 [c3,e3,g3,d4,g4]@4]/2", // C Am Dm C
  AN: "[a2,e3,a3,c4,e4]@4 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4] [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]!3", // Am Dm
  AO: "[d3,f3,d4,f4]!2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@4 [c3,e3,g3,d4,g4]@4 [a2,e3,a3,c4,e4]@4", // Dm C Am
  AP: "[d3,f3,d4,f4]@2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4] [d3,f3,d4,f4]@2 [d3,f3,d4,f4]@2 [d3,f3,d4,f4]!5 [d3,f3,d4,f4]@2", // Dm
  AQ: "[a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4] [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]!5 [a2,e3,a3,c4,e4]@2", // Am
  AR: "~ f4@3 [c3,e3,g3,d4,g4]@4 [bb2,f3,bb3,d4]@4 [g2,b2,d3,g3,d4,g4]@4, [d3,f3,d4] ~@3", // C Bb G Dm
  AS: "[~ e4@24 ~@23, a2@5 ~, [e3,a3,c4] ~]/3", // Am
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.6)

// chords · overdriven guitar · "Gtr 2"
const overdriven_guitar = note("<~@65 A B@2 C@2 D E ~@17>".pickRestart({
  A: "~@3 a3", B: "[~@2 a3@4 a3 ~]/2", C: "[~ a3@4 a3 ~@2]/2", D: "a3", E: "a3 ~@3",
})).s("gm_overdriven_guitar").gain(0.3)

// bass · electric bass pick · "Bass"
const bass = note("<~@13 A@2 B@2 C@2 D@3 ~@11 E@2 F@2 G H I J K L M J K L M ~@41>".pickRestart({
  A: "[~@3 g1@4 d2]/2", B: "[c2 a1 g1@4 d2 c2]/2", C: "[a1 g1@4 d2 c2 bb1]/2", D: "[g1 a1@4 d2@4 ~@3]/3",
  E: "[~@2 g1@4 d2 c2]/2", F: "[a1@4 g1@14 a1 c2 d2@4 c2@4 a1@4]/2", G: "g1!8", H: "d2 c2 bb1 g1",
  I: "a1@3 a1@3 a1@3 a1@3 a1@2 a1@2", J: "d2!3 g1@3 g1!2", K: "c2@2 c2 f1@3 f1!2", L: "d2@2 d2 g1@2 g1@2 g1",
  M: "c2!3 f1@3 f1!2",
})).s("gm_electric_bass_pick").gain(0.37)

stack(acoustic_guitar_steel, overdriven_guitar, bass)

More by Metallica