Strudelify

Somebody's Baby

Jackson Browne

KeyD majorTempo125 bpm
0:00/0:00
// Somebody's Baby — Jackson Browne
// 125 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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
const acoustic_guitar_steel = note(`<
  A@3 B C D E F G H I J K L@6 M N O@4 P@2 Q@2 B R@3 B S H I J K L@6 M N O@4 P@2 Q@2 B R@3 B S T U V@2 T U W@2 X U D E F
  G D E F Y Z@2 AA@2 AB@4 Q@2 B C Q@2 B C D E AC Y D E AC Y D E AC Y
>`.pickRestart({
  A: "[~@7 [c#4,e4]@3 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~ [c#4,e4]@3 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~ [c#4,e4]]/3", // C#m D C#m D C#m D C#m D …
  B: "[c#4,e4]@2 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~@2", C: "[d4,f#4]@2 [d4,f#4] [c#4,e4]@4 [c#4,e4]",
  D: "[f#4,a4]!2 [e4,g4] ~ [d4,f#4] ~ [c#4,e4] ~", E: "[b3,d4] [c#4,e4] [d4,f#4] [d4,f#4]@3 [c#4,e4]!2",
  F: "[c#4,e4] [b3,d4]!2 [b3,d4]@3 [d4,f#4]!2", G: "[d4,f#4] [c#4,e4]!2 [c#4,e4]@2 [c#4,e4]!2 [b3,d4]", H: "[g3,d4]!8",
  I: "[a3,e4]!8", J: "[b3,f#4]!8", K: "[f#3,a3,c#4,e4]!2 ~ [f#3,a3,c#4,e4]@5",
  L: "[[b2,d3,g3,b3,d4,g4]@7 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3,d4] ~ [a2,e3,a3,d4] [e3,a3,c#4,e4] ~ [b2,d3,g3,b3,d4,g4]@8 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3,d4] ~ [a2,e3,a3,d4] [e3,a3,c#4,e4] ~ [b2,d3,g3,b3,d4,g4]@8 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3,d4] ~ [a2,e3,a3,d4] [e3,a3,c#4,e4] ~ [b2,d3,g3,b3,d4,g4]]/6", // G A Asus4 A G A Asus4 A …
  M: "[d3,f#3,b3,d4,f#4,a4]@3 [d3,f#3,b3,d4,f#4,a4]", N: "c#4 e4 a4 [a3,d4,f#4]@3 [a3,d4,f#4] [g3,b3,d4,g4]",
  O: "[[g3,b3,d4,g4]@4 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~@7 [a2,e3,a3,c#4]@6 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@2 ~@2 [g3,b3,d4,g4]@6 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~@7 [a2,e3,a3,c#4]@6 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4]@2 ~@2 [a2,e3,a3,c#4]@2]/4", // G A G A
  P: "[[a2,e3,a3,c#4]@4 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] ~@7 [a2,e3,a3,c#4,e4]@6 [a2,f#3,a3,d4]@2 [a2,e3,a3,c#4]@2 [a2,e3,a3,d4]@2 [a2,e3,a3,c#4]@4 ~@2]/2", // A D A Asus4 A
  Q: "[[c#4,e4]@2 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~ [c#4,e4]@3 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~ [c#4,e4]]/2", // C#m D C#m D C#m D C#m D …
  R: "[[d4,f#4]@3 [c#4,e4]@4 [c#4,e4]@3 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~ [c#4,e4]@3 [d4,f#4] ~ [c#4,e4] [d4,f#4] ~ [c#4,e4]]/3", // D C#m D C#m D C#m D C#m …
  S: "[d4,f#4]@3 [c#4,e4]@4 [c#4,e4]", T: "[g3,b3,d4,g4]", U: "[a2,f#3,a3,c#4]",
  V: "[[f#3,f#4]!2 [e3,e4] ~ [d3,d4] ~ [e3,e4] [d3,d4]@9]/2", // F# E D E D
  W: "[[f#3,f#4]!2 [e3,e4] ~ [d3,d4] ~ [c#3,c#4] [b2,b3]@5 [a2,f#3,a3,c#4]@2 [a2,f#3,a3,c#4]@2]/2", // F# E D C# B F#m
  X: "[g3,b3,d4,g4] [g3,b3,d4,g4]@3", Y: "[d4,f#4] [c#4,e4]@2 [c#4,e4] [e4,g4]!2 [d4,f#4] [c#4,e4]",
  Z: "[[e3,a3] [f#3,a3] [d3,g3] ~ [d3,g3]@2 [d3,g3] e3@3 e3@6, ~@7 a3@9]/2", // A5 F#m G5
  AA: "[[f#3,a3]!2 [d3,g3] ~ [d3,f#3] ~ [d3,g3] [e3,a3]@9]/2", // F#m G5 D G5 A5
  AB: "[[e3,a3]!2 [d3,g3] ~ [d3,f#3] ~ [d3,g3] [e3,a3]@5 [e3,a3]!4]/2", AC: "[c#4,e4] [b3,d4]!2 [b3,d4]@3 [c#4,e4]!2",
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.9)

// chords · epiano1
const epiano1 = note(`<
  ~ A@3 B A@3 B C D E F G@4 C D E F G@6 H@3 B I@3 B C D E F G@4 C D E F G@6 I@3 B H@3 B J K L@2 C D M@2 C D A@3 B A@3 B
  N@8 A@3 B A@3 B ~@12
>`.pickRestart({
  A: "[[d4,e4,a4]@2 [d4,f#4,a4] ~ [c#4,e4,a4] [d4,f#4,a4] ~ [d4,e4,a4]@3 [d4,f#4,a4] ~ [c#4,e4,a4] [d4,f#4,a4] ~ [d4,e4,a4]@3 [d4,f#4,a4] ~ [c#4,e4,a4] [d4,f#4,a4] ~@2]/3", // Dsus2 D A D Dsus2 D A D …
  B: "[d4,f#4,a4]@3 [c#4,e4,a4]@5", C: "[b3,d4,g4]", D: "[a3,c#4,e4]", E: "[b3,d4,f#4]@6 d4 f#4",
  F: "[a3,e4]@3 [a3,d4,f#4]@5", // A5 D
  G: "[[c#4,e4,a4]@2 [b3,d4,g4]@2 ~ [a3,d4,f#4] ~ [a3,c#4,e4]@5 [a3,d4,f#4] [a3,c#4,e4] ~@2]/2", // A G D A D A
  H: "[[d4,e4,a4]@2 [d4,f#4,a4]@2 [c#4,e4,a4] [d4,f#4,a4] ~ [d4,e4,a4]@3 [d4,f#4,a4]@2 [c#4,e4,a4] [d4,f#4,a4] ~ [d4,e4,a4]@3 [d4,f#4,a4]@2 [c#4,e4,a4] [d4,f#4,a4] ~@2]/3", // Dsus2 D A D Dsus2 D A D …
  I: "[[d4,e4,a4]@2 [d4,f#4,a4]@2 [c#4,e4,a4] [d4,f#4,a4] ~ [d4,e4,a4]@3 [d4,f#4,a4]@2 [c#4,e4,a4] [d4,f#4,a4] ~ [d4,e4,a4]@3 [d4,f#4,a4]@2 [c#4,e4,a4]!2 ~@2]/3", // Dsus2 D A D Dsus2 D A D …
  J: "[b3,d4,g4]@7 ~", K: "[a3,c#4,e4]@7 ~",
  L: "[[a3,d4,f#4]@2 [a3,c#4,e4]@2 [a3,b3,d4]@2 [a3,c#4,e4] [a3,d4,f#4]@8 ~]/2", // D A Bm7 A D
  M: "[[a3,d4,f#4]@2 [a3,c#4,e4]@2 [a3,b3,d4]@2 [a3,c#4,e4] [a3,d4,f#4]@9]/2", // D A Bm7 A D
  N: "[[b3,d4,a4]!2 [b3,d4,g4]@2 [b3,d4,f#4]@2 [b3,d4,g4] [a3,c#4,a4]@9]/2", // Bm7 G Bm G A
})).s("gm_epiano1").gain(0.41).pan(0.4)

// bass · fretless bass
const bass = note(`<
  ~ A B C D A B C E F G H I J@4 F G H I J@4 K L A B C D A B C D F G H I J@4 F G H I M@2 K N K L A B C D A B C D F O H P
  F O H P F O A B C D A B C D Q@8 A B C D A B C D ~@12
>`.pickRestart({
  A: "d3!7 a2", B: "b2!7 a2", C: "g2!8", D: "a2@2 a2@2 a2@2 a2@2 a2 b2 d3@2 d3@2 b2@2", E: "a2!7 g2",
  F: "g2!2 g2@2 g2!4", G: "a2!2 a2@2 a2!3 a#2", H: "b2!2 b2@2 b2!4", I: "c#3!2 a2 d3@2 d3 b2 a2",
  J: "[g2!2 g2@2 g2!3 a2@2 a2 a2@2 a2!3 g2@2 g2 g2@2 g2!3 a2@2 a2 a2@2 a2!3 f#2]/4", K: "g2!2 g2@2 g2!3 a2",
  L: "a2!6 d3 b2", M: "[g2!2 g2@2 g2!3 a2@2 a2 a2@2 a2!3 g2]/2", N: "a2!2 a2@2 a2!3 f#2", O: "a2!2 a2@2 a2!4",
  P: "b2!2 c#3!2 d3 c#3 b2 a2", Q: "[g2!7 a2@2 a2!7]/2",
})).s("gm_fretless_bass").gain(0.42).pan(0.2)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@106>").gain(0.28)

// drums · kick
const kick = s("bd").struct("<~ [~ x ~ x]!91 [x!2] [~ x]!2 [x!2] [~ x]!5 [x!2]!2 [~ x ~ x]!4>").gain(0.28)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!106>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!106>").gain(0.16)

stack(acoustic_guitar_steel, epiano1, bass, rim, kick, snare, hihat)

More by Jackson Browne