Strudelify

Daughter

Pearl Jam

KeyF♯ majorTempo97 bpm
0:00/0:00
// Daughter — Pearl Jam
// 97 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/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 · fretless bass
const bass = note(`<
  ~@14 A B A B A B A B C D E F A B A B A B A B A C D E F A C D E F A G A G A G A@2 ~@8 A B A B A B A B H I E J K I E J
  L@5
>`.pickRestart({
  A: "f#1@3 b1@5", B: "f#1@3 b1@3 b1@2", C: "d#1@3 d#1@4 d#1", D: "f#1@2 ~ f#1@2 g#1 a#1 c#2", E: "d#2@3 d#2@3 d#2@2",
  F: "f#1@2 ~ f#1@2 g#1 a#1@2", G: "f#1@3 b1@3 c#2@2", H: "d#1@5 d#1 d#1@2", I: "f1@3 f#1@2 g#1 a#1 c#2",
  J: "f#1@3 g#1@2 a#1 c#2 d#2", K: "d#1@3 d#1@3 d#1@2", L: "d#1",
})).s("gm_fretless_bass").gain(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 ~@3 B C D E B C D E D@7 F D G H I J D@6 F D H@2 I J K L H I J M@8 N@8 M@8 O P Q R S@3 T@2 U@3 V
>`.pickRestart({
  A: "[~@8 g#3@2 ~@2 a#3 ~@5 f#3@12 ~@2, ~@6 b2@21 ~@5, ~@7 c#3@19 ~@6, ~@10 f#3@6 a#3@13 ~@3, ~@7 c#4@4 ~@5]/2",
  B: "[a#2,f#3]@3 [a#2,c#3,f#3] [c#3,f#3]@2 [b2,g#3]@3 ~ [c#3,f#3]@2 ~ a#3@2 ~, c#4@5 ~@7 [b2,c#3]@4, ~@6 g#3 ~", // D#m F# F#5 E F#5 Bsus2
  C: "[c#3,f#3,c#4]@3 [c#3,f#3] [c#3,f#3,c#4]@2 [b2,c#3,g#3]@3 ~ [c#3,f#3]@2 [a#2,c#3,f#3,c#4]@4", // F#5 C#7 F#5 F#
  D: "[a#2,c#3,f#3,c#4]@3 [a#2,c#3,f#3,c#4] [c#3,f#3]@2 [b2,c#3,g#3]@3 ~ [a#2,c#3,f#3]@2 [a#2,c#3,f#3,c#4]@4", // F# F#5 C#7 F#
  E: "[b2,g#3]@3 [b2,c#3,g#3]@2 ~ [b2,c#3,g#3]@3 ~ [b2,c#3]@2 [b2,c#3,g#3]@4, d#3 ~@8 g#3@3 ~@4", // E C#7 Bsus2 C#7
  F: "[a#2,c#3,f#3,c#4]@3 ~ a#2 ~ [b2,c#3,g#3]@4 [b2,c#3,g#3]@2 [c#3,g#3] a#3@2 ~, ~@3 [c#3,f#3,c#4]@3 ~@6 b2@3 ~", // F# C#7 C#5 F#5
  G: "[a#2,c#4]@2 c4 [a#2,c4]@2 ~ a#3@6 [f#3,a#3]@4, f#3@6 a#2@9 ~, ~@6 f#3@3 ~@7", // A#m A#sus2 F#
  H: "~ a#2@2 [a#2,c#4] ~@2 [f#3,c4]@6 [f#3,c4]@4, [f#3,c#4]@3 f#3@3 a#2@8 ~@2", // A#m F#dim F#5
  I: "[a#2,f#3,c#4]@3 f#3@3 [a#2,f#3,c4]@5 ~ [f#3,c4]@4, ~@3 c#4 ~@8 a#2@2 ~@2", // F# Cm7b5 F#dim
  J: "[a#2,f#3,c#4]@2 ~ [f#3,c4]@3 [a#2,f#3,a#3]@6 ~@4, ~@3 a#2 ~@12", // F# F#dim D#m
  K: "[f#2,c#3,f#3,c#4]@3 [c#3,f#3]@3 [f#2,c#3,g#3]@2 ~ f#2 a#2 ~ d#3 ~ a#2 g#2, ~@3 c#4 ~@12", // F#5 F#sus2
  L: "f#2 a#2@2 [a#2,c#4] ~@2 [f#3,c4]@6 [f#3,c4]@4, [f#3,c#4]@3 f#3@3 a#2@8 ~@2", // A#m F#dim F#5
  M: "[c#3,f#3]@3 [a#2,c#3,f#3] ~@2 [b2,c#3]@6 [b2,c#3,g#3]@3 ~, ~@3 g#3@2 ~@3", // F#5 F# Bsus2 C#7
  N: "[[f#2,a#2,c#4]@4 ~@2 [b2,g#3]@2 f#3 ~ [c#3,f#3]@18 ~ f#3 [c#3,f#3,c#4]@2 [c#3,f#3]@6 [b2,g#3]@2 ~@2 [a#2,c#3,f#3]@21 ~ [c#3,f#3]@6 [b2,g#3]@2 ~@2 [a#2,c#3]@22 [a#2,f#3]@4 ~@2 [b2,g#3]@2 ~@2 [c#3,f#3]@4 g#3 g#3@3 [c#3,g#3]@2 [b2,c#3,g#3]@4 [b2,c#3,g#3]@4 [b2,c#3,g#3]@3 ~, [c#3,f#3]@6 c#3@4 f#2@26 ~@27 [f#2,a#2]@4 ~@7 f#2@26 ~@6 a2 ~@3 c#3@4 ~@14, ~@10 a#2@12 ~@6 a#2@7 ~@35 c#3@4 f#3@20 ~@2 c#3@6 c#3@4 a#2@2 ~@2 b2@6 ~@12, ~@28 c#3@2 ~@2 c#4@4 ~@6 c#4@13 ~@9 c#4@4 ~@60]/8", // F# E F#5 E F# F#5 E A#m …
  O: "~ a#2@2 [a#2,c#4] ~@2 c#4@3 c4 ~ c4!2 a#3!3, [f#3,c#4]@3 f#3@3 a#2@8 ~@2, ~@3 f#3@3 f#3@2", // A#m F#5
  P: "~ a#2@2 [a#2,c#4] ~ a#3 c#4@2 ~ c4 ~@3 a#3 ~ a#3, [f#3,c#4]@3 f#3@2 ~ a#2@8 ~@2, ~@6 f#3@5 c4@2 ~@3, ~@3 f#3", // A#m F#5
  Q: "[a#2,f#3,c#4]@2 c#4 f#3@3 c#4@2 ~ c4 ~ c4!2 a#3!3, ~@3 c#4 ~@2 [a#2,f#3]@6 f#3@4, ~@6 a#2 ~", // F# D#m
  R: "[a#2,f#3,c#4]@2 ~ [a#2,c#4] ~ a#3 c#4@2 ~ c4 ~ c4!2 a#3 a#3@2, ~@3 f#3@2 ~ [a#2,f#3,a#3]@6 ~@4", // F# A#m D#m
  S: "[d#3,f#4]@2 ~ [d#3,f4] ~@2 [d#3,f#3,c#4]@3 ~ c4@2 [d#3,a#3] a#3!3, a#3@5 ~@5 f#3@5 ~", // D#m D#sus2 D#m7 D#5
  T: "[[d#3,f#4]@2 ~ [d#3,f4] ~@2 [d#3,f#3,c#4]@3 ~ c4@2 [d#3,a#3] a#3!2 ~ d#3 e3 ~ d#3 e3 ~ d#3 e3 d#3!2 e3 d#3 ~ [e3,d#4] d#3@2, a#3@5 ~@5 f#3@5 a#3@2 ~@11 d#3@2 ~@2]/2", // D#m D#sus2 D#m7 D#5 Emaj7
  U: "d#3 e3 ~ d#3 e3 ~ d#3 e3 d#3!2 e3 d#3 ~ [e3,d#4] d#3@2, ~@6 d#3 ~", V: "~@2 d#4@11 ~@3, ~ f#3@14 ~",
})).s("gm_acoustic_guitar_steel").gain(0.33)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@6 A B@2 ~ A B@2 ~@8 C ~ D ~ E ~@7 C ~@3 E ~ F ~@2 E ~@2 G@8 ~ H ~@3 I ~@2 G@8 ~ E J K@4 L@4 M
>`.pickRestart({
  A: "c#3@3 ~@13", B: "[f#2@5 ~@5 f#2@10 ~@12, ~@5 c#4 ~@10]/2", C: "f#2@5 d#2 ~@4 a#3@2 ~@4", D: "d#3@7 ~@9",
  E: "d#3@3 a#2 ~@12", F: "~@4 [f2,a#2] ~@6 c#3 ~ c#3 ~@2", G: "d#3 ~@15", H: "~ f#4 ~@14", I: "c#4@3 ~@7 f#2@2 ~@4",
  J: "~@12 a#3 ~@3", K: "~@5 d#3 ~@2", L: "~@2 d#3 ~@8 a3 ~@4", M: "~ a#3@11 ~@4, d#3@3 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.15)

// chords · distortion guitar
const distortion_guitar = note("<~@22 A@4 ~@9 B C D E F B C D G F@8 ~@8 F@8 B C D E B C D E ~@5>".pickRestart({
  A: "[[f#3,c#4]@3 c#4@2 ~ c4@4 a#3 ~ [f#3,a#3]@2 ~@2 [f#3,c#4]@2 ~ [f#3,c#4]@2 ~ c4@4 a#3 ~ [f#3,a#3]@2 ~@2 [f#3,c#4]@2 ~ [f#3,c#4]@3 [f#3,c4]@4 a#3@2 a#3@2 f#3 ~ [f#3,c#4]@2 ~ [f#3,c4]@2 ~ [f#3,a#3]@10, [d#2,a#2]@13 ~ [d#2,a#2]@15 ~ [d#2,a#2]@16 [d#2,a#2]@18, ~@3 f#3@8 ~@11 f#3@6 ~@16 f#3 ~@19]/4", // F#5 F# F#5 F# F#5 F#dim F#5 F#dim …
  B: "[f#3,c#4]@2 ~ [f#3,c#4]@2 ~ c#4@3 ~ c4 ~@2 [d#3,a#3] [d#3,f#3,a#3]!2, [d#2,a#2]@15 ~, ~@3 f#3@3 [f#3,c4] ~", // F#5 D#5 D#m D#5 F#dim
  C: "[f#3,c#4]@3 [f#3,c#4]@2 ~ c#4@3 ~ d#3!2 [d#3,c4] [d#3,a#3] [d#3,f#3,a#3]!2, [d#2,a#2], ~@6 f#3@7 ~@3, ~@9 [d#3,c4]@2 ~@5", // F#5 Cm D#5 D#m D#5 Cm
  D: "[f#3,c#4]@2 ~ [f#3,c#4]@2 ~ c#4@3 d#3 [d#3,c4] d#3 [d#3,f#3,c4] [d#3,a#3] [d#3,f#3,a#3]!2, [d#2,a#2]@15 ~, ~@3 f#3@3 ~@2", // F#5 Cm Cdim D#5 D#m D#5
  E: "[d#3,c#4]@3 [f3,c4]@2 ~@5 d#3!2 [d#3,f#3] d#3!3, [d#2,a#2]@12 [d#2,a#2]@3 ~, f#3@5 ~ [f#3,a#3]@7 [f#3,a#3]@3, ~@9 [d#3,f3]@2 ~@5", // D#7 F5 D#m D#5 F# D#sus2
  F: "[c#3,f#3]@2 ~ [c#3,f#3]@2 ~ [b2,f#3]@10", // F#5 B5
  G: "~ d#4 ~ [f#3,c4]@2 ~ [f#3,c#4]@3 ~ [f#3,c4]@2 [f#3,a#3]@2 c4 ~, [a#2,d#3], d#2@3 ~, [f#3,c#4]@3 ~@13", // F#dim F#5 F#dim F# D#5 F#5
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar
const distortion_guitar_2 = note("<~@44 A B C D E F G H@2 ~@28>".pickRestart({
  A: "c#4 d#4 f#4 c#4 ~ f#4 c#4 d#4 f#4 c#4 [b3,d#4] f#4 c#4 d#4 ~ d#4, ~@2 d#4 ~@4 f#4", // B
  B: "c#4 a#3 g#3 f#3 d#3 c#3 [d#3,f#3] g#3 [d#3,f#3] c#3 g#3 f#3@2 ~@3", // D#m
  C: "[a#3,c#4]@5 ~ [a#3,c#4]@5 ~ [a#3,c#4]@4, ~@6 a3 ~@9", D: "a#3@2 g#3 f#3 d#3 c#3 f#3 g#3 [c#3,f#3]@8",
  E: "~@2 f#4 [c#4,d#4,f#4,g#4] d#4 c#4 a#3@2 d#4 c#4 a#3@2 c#4 a#3 f#3@2, ~@14 a#3 ~", // C#sus4
  F: "f#4@2 f#4 [c#4,d#4,g#4] [d#4,f#4] [c#4,f#4] a#3@2 d#4 c#4 a#3@2 c#4 ~@2 c#5, ~@13 a#3@3, ~@7 f#3", // C#sus2 D#m F#5
  G: "[e4,a#4]@2 ~ a#4@2 c#5 a#4@3 c#5 a#4@2 g#4 f#4 g#4 f#4, ~@2 c#5@3 ~@11", H: "[~@12 f#5@17 ~@3, f#4@7 ~@9]/2",
})).s("gm_distortion_guitar").gain(0.72)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@14 A B C B C B C B D E F G A B A B A B A B@2 D E F G H I E F G A@8 ~@8 A@8 D E F G D E F G J K L@2 J
>`.pickRestart({
  A: "~@4 a#3 b3 a#3@4 c#3@2 [f#3,b3]@3 ~, [c#3,f#3]@5 ~@3", // B5 F#5
  B: "~@4 a#3 b3 ~@4 [c#3,f#3]@5 ~, [c#3,f#3]@5 ~@3, ~@6 a#3@7 ~@3", // F#5
  C: "~@4 a#3 b3 a#3@4 c#3@2 [f#3,g#3,b3]@3 ~, [c#3,f#3]@5 ~@3", // G#m7 F#5
  D: "[d#3,a#3,d#4,f#4,a#4]@2 ~ [d#3,a#3,d#4,f#4,a#4] ~@2 [a#3,d#4,f#4]@4 [a#3,d#4,f#4,a#4]@2 [d#3,a#3,d#4,f#4,a#4]@2 ~@2, ~@3 d#3@3 ~@2, ~@3 a#4 ~@4", // D#m
  E: "[d#3,a#3,d#4,f#4,a#4]@2 ~ [d#3,a#3,d#4,f#4,a#4] ~@2 [a#3,d#4,f#4]@4 [a#3,d#4,f#4,a#4]@2 [d#3,d#4,a#4]@2 ~@2, ~@3 d#3@3 ~@2, ~@3 a#4 ~@4", // D#m D#5
  F: "[a#3,d#4,f#4,a#4] ~@2 [d#3,a#3,d#4,f#4,a#4] ~@2 [d#3,a#3,d#4,f#4]@4 [a#3,d#4,f#4,a#4]@2 [a#3,d#4,f#4,a#4]@2 ~@2, ~@3 a#4 ~ d#3@2 ~", // D#m
  G: "[d#3,a#3,d#4,f#4,a#4]@2 ~ [d#3,a#3,d#4,f#4,a#4] ~@2 [d#3,a#3,d#4,f#4,a#4]@4 [d#3,a#3,d#4,f#4,a#4]@2 [a#3,d#4,f#4,a#4]@2 ~@2", // D#m
  H: "[f#2,c#3,f#3,c#4]@3 c#4 [f2,a#2] ~ [f#2,c#3,g#3]@2 ~ f#2 a#2 c#3 d#3 c#3 a#2 g#2, ~@3 [c#3,f#3]@3 ~@10", // F#5 A#5 F#sus2 F#5
  I: "[f#2,d#3,a#3,d#4,f#4,a#4]@2 ~ [d#3,a#3,d#4,f#4,a#4] ~@2 [a#3,d#4,f#4]@4 [a#3,d#4,f#4,a#4]@2 [d#3,a#3,d#4,f#4,a#4]@2 ~@2, ~@3 d#3@3 ~@2, ~@3 a#4 ~@4", // D#m
  J: "[a#3,d#4,f#4,a#4]", K: "~ [f#4,a#4]@13 ~@2, [a#3,d#4]@7 ~",
  L: "[~ a#4@14 ~ [d#4,f#4,a#4]@14 ~@2, [a#3,d#4,f#4]@15 a#3@15 ~@2]/2", // D#m
})).s("gm_electric_guitar_clean").gain(0.72)

// drums · kick
const kick = s("bd").struct("<~@13 A B@8 C@3 D B@8 E C@3 D@2 B@11 F B@7 G B@16 C@4 H>".pickRestart({
  A: "~@10 x ~@2 x!2 ~", B: "x ~@2 x ~@2 x ~@3 x!2 ~@4", C: "x ~@2 x ~@2 x ~@3 x ~@5", D: "x ~@2 x ~@2 x ~@3 x ~@3 x ~",
  E: "~@3 x ~@2 x ~@3 x!2 ~@4", F: "x ~@2 x ~@2 x ~ x ~ x!2 ~@4", G: "x ~@2 x ~@2 x ~@3 x!2 ~ x ~@2", H: "x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A B@3 C B@2 D B@17 E B@4 F B@7 G B@7 H B@3 I B@3 D B@2 J K L@2 B M B@3 N O
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@5 x!3 ~@3", E: "~@4 x ~@4 x ~ x!2 ~ x!2",
  F: "~ x ~@2 x ~@7 x ~@3", G: "~@4 x ~ x ~@2 x ~@2 x ~ x ~", H: "~@4 x ~@2 x ~ x ~ x!3 ~@2", I: "~@4 x ~@5 x!4 ~@2",
  J: "~@4 x ~@4 x ~@2 x ~@3", K: "~@4 x ~@3 x ~@2 x!3 ~ x", L: "~@4 x ~@7 x!2 ~@2", M: "~@4 x ~@3 x!2 ~@2 x ~@2 x",
  N: "~@4 x ~@7 x ~@2 x", O: "x",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@20 A B ~@7 C ~@4 C ~@8 D ~@15 A ~@3 A ~@3 E ~@7 F ~@5>".pickRestart({
  A: "~@14 x!2", B: "~@13 x!2 ~", C: "~@11 x ~@2 x!2", D: "~@15 x", E: "~@13 x ~ x", F: "~@12 x!2 ~@2",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<A B@12 C ~@25 D ~@12 E F G E@2 H E I ~@16 B@4 ~>".pickRestart({
  A: "x!4", B: "x!3 ~ x!2 ~ x!4 ~ x!4", C: "x!3 ~ x!2 ~ x!2 ~@7", D: "~@8 x!6 ~@2", E: "x!16", F: "x!7 ~ x!3 ~ x!4",
  G: "x!5 ~ x!10", H: "x!9 ~ x!6", I: "x!8 ~@8",
})).gain(0.25)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ A@13 ~@39 B C D ~ E ~@18 A@4 ~>".pickRestart({
  A: "~@3 x ~@2 x ~@9", B: "~@7 x ~@3 x ~@4", C: "~@5 x ~@10", D: "~@13 x ~@2", E: "~@9 x ~@6",
})).gain(0.1)

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 A ~@4 A ~@8 B ~@15 B ~@3 B ~@3 C ~@7 B ~@5>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@13 x ~ x",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@12 B ~@3 C ~@4 D@3 E ~@9 D@4 F D@4 G ~@6 H ~@7 I ~@6 C ~ D@4 ~@4 A@4 ~
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@5 x ~@2", C: "~@7 x", D: "x!4", E: "x ~@3 x ~@3 x ~@3 x ~ x!2", F: "x ~@3 x ~@9 x!2", G: "x",
  H: "~@15 x", I: "~@2 x!2",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A@2 ~@2 A ~@2 A@2 ~@3 A@2 ~@2 A ~@4 A@2 ~ A@3 ~ A ~ A ~ A ~ A ~ A ~@8 B A@11 C D E F G A ~@3 A
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~", C: "x ~@8 x ~@2 x ~ x ~", D: "x ~@6 x", E: "~ x ~@11 x ~@2", F: "~@3 x", G: "x!2 ~@2",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct("<~@14 A@8 ~@4 A@9 ~@9 A@8 ~@8 A@8 ~@4 A@8 B>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@12 ~@39 B@2 C B@5 ~@16 A@4 ~>".pickRestart({
  A: "~@3 x", B: "x", C: "x ~@2 x",
})).gain(0.45)

stack(
  bass, acoustic_guitar_steel, acoustic_guitar_steel_2, distortion_guitar, distortion_guitar_2, electric_guitar_clean,
  kick, snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, crash, ride, tambourine
)

More by Pearl Jam