Strudelify

The One You Love

Glenn Frey

KeyG majorTempo75 bpm
0:00/0:00
// The One You Love — Glenn Frey
// 75 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 6 "chord" acoustic guitar nylon (copy of ch 4 "Piano" epiano2)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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"
const bass = note(`<
  ~ A B C D E F G@2 H I J K L M F N@2 B E O K D E F P@2 Q R S T U V A W C D E F X@3 Y@2 Z@5 AA@4 AB@4 AC@7 AD@2 AE@6 Y@2
  AE@6 AF@2 AG@2 ~
>`.pickRestart({
  A: "a1@4 ~@2 a1 ~ a1@5 ~ a1 ~", B: "g1@5 ~ g1 ~ g1@5 ~ g1 ~", C: "a1@5 ~ a1 ~ a1@5 ~ a1 ~",
  D: "g1@5 ~ g1 ~ g1@4 a1@2 b1@2", E: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", F: "b1@5 ~ b1 ~ b1@6 b1 ~",
  G: "[a1@5 ~ a1 ~ d2 ~ d2@4 g1@7 ~ g1 ~ g1@5 ~ g1 ~]/2", H: "g1@5 ~ g1 ~ g1@6 g1 ~", I: "c2@6 c2@8 c2 ~",
  J: "g2@5 ~ g2 ~ g2@6 g2 ~", K: "c2@6 c2 ~ c2@6 c2 ~", L: "g1@5 ~ g1 ~ g1@4 a1@2 b1 ~", M: "c2@5 ~ c2 ~ c2@6 c2 ~",
  N: "[a1@5 ~ a1@2 d2 ~ d2@4 g1@7 ~ g1 ~ g1@5 ~ g1 ~]/2", O: "g1@5 ~ g1 ~ g1@4 ~@2 g1 ~",
  P: "[a1@5 ~ a1@2 d2 ~ d2@4 g1@7 ~ d1@2 g1@3 ~ d1@2 g1@2]/2", Q: "g2@5 ~ d2 ~ g2@3 ~ e2@2 d2@2",
  R: "b1@6 b1 ~ b1@6 b1 ~", S: "a1@6 a1 ~ a1@6 a1 ~", T: "b1@6 b1 ~ b1@4 b1@4", U: "d1@6 a2@2 d3@4 a2@2 d3 a2", V: "d2",
  W: "g1@5 ~ g1 ~ g1@4 g1@2 d1 g1",
  X: "[a1@5 ~ a1 ~ d2 ~ d2@4 g1@7 ~ g1 ~ g1@4 ~@4 a1@4 ~@2 a1 ~ a1@5 ~ a1 ~, ~@7 g1@5]/3",
  Y: "[~@6 g1@2 g1@6 ~@2 a1@5 ~ a1 ~ a1@5 ~ a1 ~, ~@7 g1@9]/2",
  Z: "[~@6 g1@2 ~@4 a1@2 b1@2 c2@5 ~ c2 ~ c2@5 ~ c2 ~ b1@5 ~ b1 ~ b1@6 b1 ~ a1@5 ~ a1 ~ d2 ~ d2@4 g1@8 g1@2 g1@6 g1@2, ~@4 g1@27 ~@9]/5",
  AA: "[~@6 d1 ~@5 d1 ~@2 d1 c2@6 c2@8 c2 ~ g2@5 ~ g2 ~ g2@6 g2 ~ c2@6 c2 ~ c2@6 c2 ~, g1@4 g1@3 g1@25]/4",
  AB: "[g1@6 g1@2 ~@4 a1@2 b1@2 c2@5 ~ c2 ~ c2@6 c2 ~ b1@5 ~ b1 ~ b1@6 b1 ~ a1@5 ~ a1@2 d2 ~ d2@4 g1@2, ~@4 g1@27 ~]/4",
  AC: "[~@6 g1@2 ~@4 e1@2 d1@2 b1@6 b1 ~ b1@6 b1 ~ a1@6 a1 ~ a1@6 a1 ~ b1@6 b1 ~ b1@4 b1@4 d1@6 a2@2 d3@4 a2@2 d3 a2 d2@16 a1@4 ~@2 a1 ~ a1@5 ~ a1 ~, ~ g1@13]/7",
  AD: "[~@6 g1@2 g1@4 g1@2 d1 ~ a1@5 ~ a1 ~ a1@5 ~ a1 ~, ~@15 g1@17]/2",
  AE: "[~@6 g1@2 ~@4 a1@2 b1@2 c2@5 ~ c2 ~ c2@5 ~ c2 ~ b1@5 ~ b1 ~ b1@6 b1 ~ a1@5 ~ a1 ~ d2 ~ d2@4 g1@8 g1@2 g1@4 ~@4 a1@4 ~@2 a1 ~ a1@5 ~ a1 ~, ~@4 g1@27 ~@7 g1@10]/6",
  AF: "[~@6 g1@2 ~@2 e2@2 b1@2 e2@2 a1@5 ~ a1 ~ a1@5 ~ a1 ~, ~ g1@3]/2",
  AG: "[~@6 g1@2 ~@4 a1@2 b1@2 c2@5 ~ c2 ~ c2@5 ~ c2 ~, ~@4 g1@11 ~]/2",
})).s("gm_electric_bass_finger").gain(0.24)

// chords · string ensemble 2 · "String"
const string_ensemble_2 = note(`<
  ~ A B A B C B D E@3 ~@8 F G F G F G H I J K L K M@2 F G F G F G H I N O N O P O Q E@3 ~@6 J K L K M@2 F G F G F G H I
  F R S R T R U V W X ~@4
>`.pickRestart({
  A: "[g3,b3,c4,e4]", B: "[g3,b3,d4,f#4]", C: "[g3,a3,c4,e4]", D: "[g3,b3,c4,e4] [a3,c4,d4,g4]",
  E: "[[g3,b3,d4,g4]@17 ~@7]/3", F: "[b3,c4,e4,g4]", G: "[a3,b3,d4,f#4]", H: "[b3,c4,e4,g4] [a3,c4,d4,g4]",
  I: "[g3,b3,d4,g4]", J: "g4 a4 b4 d5, [g3,b3,d4] [b3,d4,g4]", K: "[b3,f#4,a4,d5]", L: "[a3,e4,g4,c5]",
  M: "[a3,d4,g4,c5]/2", N: "[g3,b3,c4,e4]@15 ~", O: "[g3,b3,d4,f#4]@15 ~", P: "[g3,a3,c4,e4]@15 ~",
  Q: "[g3,b3,c4,e4]@7 ~ [a3,c4,d4,g4]@7 ~", R: "[a3,b3,d4,f#4]@15 ~", S: "[b3,c4,e4,g4]@15 ~", T: "[a3,c4,e4,g4]@15 ~",
  U: "[b3,c4,e4,g4]@7 ~ [a3,c4,d4,g4]@7 ~", V: "~@2 b5 a5, [g3,b3,d4,g4]", W: "[b3,c4,e4,g4,c5,g5]",
  X: "[a3,b3,d4,f#4,b4,f#5]", // Bm7
})).s("gm_string_ensemble_2").gain(0.32).pan(0.3)

// chords · string ensemble 2 · "String" · soft notes · Cmaj7 Bm7 Am7 Bm7
const string_ensemble_2_soft = note(`<
  ~@81
  [[b3,c4,e4,g4,c5,g5]@15 ~]
  [f#5@2 b5 a5, [a3,b3,d4,f#4,b4]@15 ~]
  [[a3,c4,e4,g4,c5,g5]]
  [[a3,b3,d4,f#4,b4]]
>`).s("gm_string_ensemble_2").gain(0.09).pan(0.3)

// chords · epiano2 · "Piano"
const epiano2 = note("<~ A B C D E F G@2 H@8 I J@8 K L@7 M@2 N@8 O@7 P@6 Q@7 R@2 S@2 T@6 U@3 V@8>".pickRestart({
  A: "~@3 a4@5, c4, a2@7 ~, e4@4 a3@9 ~@3, ~ e3@6 ~", B: "~@14 d4 ~, g2@7 ~, ~ d3@6 ~, ~ [g3,b3]@3, ~@3 g4@5",
  C: "~@8 g4@2 a4@5 ~, a2@7 ~, ~ e3@6 ~, ~@4 c4@11 ~, ~@4 a3@2 e4@9 ~",
  D: "~@6 c4 ~@5 d4@4, g2@13 ~@3, ~ d3@6 ~, ~ g3@3, ~@6 [b3,g4]@9 ~", // Em
  E: "~@6 [e4,g4]@6 [e4,b4]@3 ~, [c3,c4]@7 ~, e4@5 ~@7 a4 ~@3, ~ g3@6 ~", // Em E5 C
  F: "~@6 e4 f#4, b2@7 ~, [d4,f#4]@3 ~, ~@2 f#3@5 ~, ~@3 b3@4 ~", // D
  G: "[~@4 a4@2 c4 e4 [d3,d4,f#4] ~ [d3,d4,f#4]@2 ~@2 [g3,d4,g4]@4 ~@4 d4@4 ~@2 [e4,e5,e6] [b3,b4,b5] [d4,d5,d6] [a3,a4,a5], a2@7 ~@7 g2@18, ~ [e3,c4]@2 ~@6 d3@7, ~@3 e4@3 ~@26, ~ a3 ~@3 g3@3]/2", // D G5 E B D A C
  H: "[b3@2 ~@2 g4@2 ~@50 g4@3 ~ [e4,g4,b4]@4 a4@2 ~@6 g4@7 ~@7 e4 ~ e4@8 ~@6 b4@9 ~@5 a3@4 [d4,f#4] ~ [d4,f#4]@2 ~@2 [g2,g3,d4]@2, [b4,b5]@4 d3@13 d3@16 d3@24 e3@2 ~ d3 d3@3, ~ b3@47 [b2,d4] f#3 b3@14, ~@4 d4@12 ~@2 c3@10 g3@8 g3@12 c3@4 c4@2 e4@5 ~@5 g2@6 d4@9 ~ c3@4 c4@4 g4@6 ~@2 f#4@6 d4@7 ~@3 [a2,e4,a4]@8 ~@8, ~@6 g4@4 g3@10 g3 c4@5 [e4,g4]@6 g2@6 d4@2 g4@10 g3@16 g4@2 g3@14 g3@44 ~@2]/8", // Em D G5 B Bm A5 Em
  I: "~@8 g4@4 ~ b4 d5 a4, ~ d3@7, ~ g3@3, ~@3 b3@5, ~@12 e5@3 ~",
  J: "[~@6 b3@2 [d4,g4]@8 ~@6 [e4,g4]@4 [e4,b4]@6 ~@28 [e4,g4]@4 ~@8 b4@6 ~@10 c5@6 ~@8 b4@5 ~@13 [f#4,a4,a#4] ~ [d4,a4]@4 [g2,g3,d4,g4]@2, [g2,b4,d5]@15 ~ c3@15 ~ g2@6 d4@2 g4@8 e4@2 g3@18 g3@12 e4@2 g3@44 ~@2, g4@4 b3@44 [d4,f#4] f#3 b3@14, ~ d3@16 d3@16 d3@26 d4@2 f#4 ~@2, ~@4 g3@12 [c4,e4]@2 g3@16 e4@2 g3@12 c3@4 c4@2 e4@2 b4@8 [g2,d4,g4]@15 ~ [c3,g4]@4 c4@2 e4@10 b2@6 d4@6 e4@2 d4@2 [a2,g4]@2 e3@2 [a3,a4]@4 d3@2 d3@6]/8", // G5 Em E5 Em F# D5 G5 G …
  K: "~@8 g4@2 ~@4 [a4,b4] d5, ~ d3@4 g4@3, ~ g3@3, ~@3 d4@5, ~ b3", // Asus2
  L: "[a4 ~@15 [a2,f#4] ~@11 b4@2 ~@10 c4@4 e4@4 ~@12 a4@4 ~@6 f#4@2 a4@4 d5@3 ~ [a3,f#4,a4,d5]@14 ~@8 c4@2 [c4,e4,a4]@7 ~, [b4,d5]@17 b2@3 f#3@2 b3@26 [b2,a4]@4 f#3@2 b3@58, g2@8 g4@4 f#4@2 d4@16 d4@2 [a2,e4,g4]@2 e3@2 a3@12 d4@18 a3@2 d4@12 ~@16 a2@2 e3@2 a3@9 ~@3, g4@2 g3 d4@3 g3@50, d4 d3@27 f#4@4 d3@8 [d3,d4]@16]/7", // D Am Bm B7 A7 D
  M: "[~@4 g4 f4@2 ~@5 [e4,a4]@4, g2@15 ~ a2@2 e3@2 a3@2 c4@10, ~ d3@15, ~@2 g3@5 g3@9, ~@3 d4@13]/2", // A5
  N: "[~@8 b4@2 a4@4 ~@10 b4@4 g4@3 ~@11 f#4@4 ~@8 c4 ~ [d3,d4]@2 f#4@3 ~ a4@2 ~@12 g4@3 ~@7 c4@2 a4@2 g4@6 ~@6 d4@2 b4 ~ a4@2 g4@2 ~@8 c4@2 a4@2 g4@6, g2@14 g3@2 c3@4 c4@8 e4 ~@3 b2@4 b3@34 g3@28 d3@14 a2@2 e3@2 a3@2 e3@2 c4@8, ~@2 d3@38 a4@7 ~ [a2,e4,a4]@2 e3@2 a3@4 ~@2 d3@4 g3@2 g4@4 d3@12 a2@2 e3@2 a3@4 c4@2 a4 ~@5 g2@14 g3@18, ~@2 g3@5 g4 e4 g3@22 g2@6 d4@13 g3@2 d4@12, ~@6 d4@26 [f#4,b4]@2 f#3@4 d4@18 f#4 ~ d4@14 b3@56]/8", // D A5 B5
  O: "[~@6 b3@2 ~@8 c4@5 ~@3 b4@8 ~@8 [f#4,b4]@7 ~ a3@2 e3@4 a3@2 [d3,d4]@2 d4@4 ~@8 b3@2 ~@5 b4 d5 a4 ~@24 a4@8, g2@4 g4@2 d4@2 [c3,e4]@3 [c4,g4]@5 b2@3 d4@5 [a2,e4,a4]@4 ~ d3@2 [g3,g4]@2 d3@7 [g4,b4]@5 g3@7 e4@3 ~, ~@2 d3@54 f#4 ~ f#4@2 ~@2 d4@10 d4@8 b3@6 d3@26, ~@4 g3@58 g2@10 b3@4 e5@3 ~ g2@14 ~@2 a2@2 e3@2 a3@2 c4@10, ~@4 b3@13 f#3@2 b3@15 g3@10 [b3,d4]@12]/7", // B5 D C C5 A5 G Bm
  P: "[~@6 b3@2 ~@10 e3@6 ~@2 c4@6 ~@12 g4@2 ~@14 e4@3 ~ b2@2 ~@6 f#4@2 e4@2 ~@4 [a2,e4,a4]@8 [d3,d4]@2 f#4@2 ~@2 [g2,g3,g4]@2, g2@4 g4 d4@16 b3 d4@12 f#3 b3@13, ~@2 d3@14 a2@5 ~@3 [c3,e4]@8 g2@14 b3@10 c4@2 g4@6 f#4@2 b2@10 d4@12 f#4 ~@7, ~@2 g3@17 d3@25 ~ [d3,d4]@3, ~@8 b3@32 g3@8 [c3,c4,e4]@7 g3@39 ~@2]/6", // A5 D G C D C
  Q: "[~@10 g4@2 a4@2 ~ d5 ~@10 a4@5 ~@7 a4@6 ~@2 e4@2 ~@8 a4@4 ~@16 d5@2 ~@2 [a3,a4,d5]@13 ~@11 [e4,a4]@8, ~@2 d3@58 f#4@4 a4@2 a3@2 d4@4 a4@7 d3@17 a2@2 e3@2 a3@2 c4@10, ~ g3@27, ~@3 d4@4 b4 b2@3 [d4,f#4]@5 [a2,c4,e4] e3 a3@4 d4@3 f#3@2 d4@5 d3@3 f#4@5 [d4,f#4]@16, ~@4 b3@4 [d4,f#4,b4] f#3 b3@14 [b2,f#4]@2 b3@30]/7", // D5 A5 D Am D Bm B5
  R: "[~@11 g4 a4@2 [e4,g4]@2, g2@4 b3@4 [a2,c4,e4] e3 a3@5 ~, g4@3 d4@13, ~ d3@15, ~ g3@7]/2", // Em Am
  S: "[~@8 b4@7 ~@9 c5@2 g4@3 ~@3, d4, g2@7 ~ c3@2 c4 e4@5, ~ d3@15, ~@2 g3@6 e4 g3@7]/2",
  T: "[~@6 e4@2 ~@4 e4@2 ~@8 c4 e4 [d3,d4,f#4]@2 d4@4 ~@10 [g4,d5]@8 ~@42 g4@4 [c4,a4]@2, b2@8 [a2,c4,e4,a4] e3 a3@2 ~ d3@2 [g2,g3,g4]@2 d3 g3 b4@5 a2 e3 a3 c4 a4 e4@3 g2@3 b3 g4 d4@2 b3 a2 e3 a3 c4 e4@4, f#4@4 d4@8 ~@3 d4@19 g3@14, b4@2 b3@31 d3@15, ~ f#3@6 f#4@5 ~ f#4@35]/6", // D G5 F Am G
  U: "[~@6 b3@2 ~@8 c4@5 ~@3 [c4,c5]@6 ~@10 e4@4 d4@4, g2@4 g4@2 d4@10 b4 f#3 b3@6, ~ d3@23, ~@2 g3@6 [c3,e4]@3 g3@13, ~@4 b3@7 g4@5 b2@3 f#4@5]/3", // C
  V: "[f4 ~@5 c4 e4 [d3,d4,f#4]@2 d4@4 ~@26 a4@8 ~@10 g4@2 ~@2 [f4,g4]@2 ~@2 c4 ~ c4@2 e4@2 a4@4 g4@2 e4@2 ~@6 a4@2 ~@10 b2 ~ c4@2 ~@4 d#4 ~ c5@4 a#4 ~@5 d4@9 ~, [a2,a4]@8 ~@6 g2@12 g4@2 d3@2 g3@2 [a2,c4]@2 e3@2 a3@2 e4@10 g2@6 b3@44 c3@2 e4@2 g3@10 b4@2 f#3@2 b3@11 ~, e4@6 ~@4 f#4@78 b4@4 g4@35 ~, ~@2 e3@4 ~@4 d3@8 d3@4 b3@26 g4@2 d3@6 d4@4 b4@2 d4@2 a2@2 e3@2 a3@4 c4@7 ~ g2@4 g3@4 d4@16 c4@2 e4@4 ~@2 [b2,f#4]@15 ~, ~@4 a3@4 ~@6 [d4,g4]@6 g3@4 d4@28 g3@28 [d4,g4]@2 d3@45 ~]/8", // D Fsus2 A Am B5 G5
})).s("gm_epiano2").gain(0.36).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ [x ~@2 x!2 ~@3]!84>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!31 ~ [~ x ~ x]!29 ~ [~ x ~ x]!22>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<[~ x ~@2] [x!8]!31 x [x!8]!29 x [x!8]!21 [x!7 ~]>").gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct("<~ [~ x ~ x]!31 ~ [~ x ~ x]!29 ~ [~ x ~ x]!22>").gain(0.25)

stack(bass, string_ensemble_2, string_ensemble_2_soft, epiano2, kick, snare, hihat, mid_tom)

More by Glenn Frey