Strudelify

This Way to Happiness

Glenn Frey

KeyE majorTempo122 bpm
0:00/0:00
// This Way to Happiness — Glenn Frey
// 122 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · "FINGERDBAS"
const bass = note(`<
  ~ A B C B D E F G H I J K L M N O P Q R S T Q U V W X W X Y Z AA AB W X W X Y Z AA AB H I J K L M N O P Q R S T Q U V
  W X W X Y AC AA AB AD AE AF AG AH AI T AJ AK W X W X Y Z AA AB W X W X Y Z AA AB AL AM W X Y Z AA AB AL AM W X AN
>`.pickRestart({
  A: "g#1 ~ g#1@2 ~@2 a1@4 ~@2 a1@2 e1@2", B: "b1 ~ b1@2 ~@2 e1@2 ~@2 e1@2 f#1@2 g1@2",
  C: "g#1 ~ g#1@2 ~@2 a1@6 ~@2 e1@2", D: "g#1 ~ g#1@2 ~@2 a1@5 ~ a1 ~ a#1 ~", E: "b1 ~ c2@2 ~@2 c#2@7 ~@3",
  F: "b1 ~ b1@2 ~@2 a1@2 ~@4 a1@2 e1@2", G: "b1 ~ b1@4 e1@3 ~ f#2@2 f#2@2 e2@2", H: "c#2 b1 g#1 f#1 e1!4",
  I: "e1!3 b1!5", J: "b1!4 c#2!4", K: "c#2!2 g#1 a1!5", L: "a1!2 b1 f#1 e2!4", M: "e2 b1 e2 d#2!5",
  N: "d#2 b1 d#2!2 a1!4", O: "a1!3 b1!5", P: "b1 f#1!2 g#1 a1!4", Q: "a1!4 g#1!4", R: "g#1!4 f#1!4", S: "f#1!4 g#1!4",
  T: "g#1!4 a1!4", U: "g#1!4 f#1!2 g#1 f#1", V: "b1 ~ b1@4 e1@9 ~", W: "g#1 ~ g#1@2 ~@2 a1@4 a1@2 a1@2 e1@2",
  X: "b1 ~ b1@2 ~@2 e1@2 e1@2 e1@2 f#1@2 g1@2", Y: "g#1 ~ g#1@2 ~@2 a1@4 a1@2 a1@2 a#1@2",
  Z: "c2 ~ c2@4 c#2@4 c#2@2 c#2@2 c#2@2", AA: "b1 ~ b1@2 ~@2 a1@4 a1@2 a1@2 e1@2", AB: "b1 ~ b1@4 e1@4 e1 ~ e1@2 f#1@2",
  AC: "b1 ~ b1@4 c#2@4 c#2@2 c#2@2 c#2@2", AD: "e1 f#1 g#1 b1 c#2!4", AE: "c#2!8", AF: "c#2!2 g#1 b1 c#2!4",
  AG: "c#2!3 b1 c#2!4", AH: "c#2!2 g#1 b1 c#1!4", AI: "c#1!2 d#1 e1 g#1!4", AJ: "a1!4 b1!4", AK: "b1!5 ~ b1 ~",
  AL: "b1 g#1 f#1 b1 c#2 b1 g#1 f#1", AM: "b1 c#1 d1 d#1 e1!4", AN: "g#1 ~ g#1@2 ~@2 a1@4 a1@2 ~@4",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~ A B A B A C D E F@8 G@7 H@2 B A B A C D E I B A B A C D E F@8 G@7 H@2 B A B A C D E J@8 K A B A B A C D E I B A B A
  C D L@3 A B A C D L@3 A B M
>`.pickRestart({
  A: "[b3,e4] ~ [b3,e4,g#4] ~@3 [c#4,e4,a4]@7 ~@3", B: "[c#4,e4] ~ [c#4,e4,a4]@2 ~@2 [b3,e4,g#4]@7 ~@3",
  C: "[c4,d#4,g#4] ~ [c4,d#4,g#4] ~@3 [c#4,e4,g#4]@8 ~@2", // G# C#m
  D: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 [a3,c#4,e4]@5 ~ [a3,c#4]@2 e3 ~", // B A
  E: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 [g#3,b3,e4]@10", // B E
  F: "[c#4@2 b3@2 [c#4,f#4] ~ b3 ~ [e3,g#3,b3]@14 [f#3,b3,d#4]@16 ~@2 [e3,g#3,c#4]@12 ~@2 [e3,a3,c#4]@13 ~ [f#3,b3]@3 ~ [e3,g#3,b3]@14 [f#3,b3,d#4]@16 ~@2 [e3,a3,c#4]@12 ~@2 [f#3,b3,d#4]@10]/8", // F#5 E B C#m A B5 E B …
  G: "[b2@2 c#3@2 e3@2 c#3 ~ [c#4,e4]@10 [c#4,e4] ~@3 [b3,e4,g#4]@16 ~@2 [a3,c#4,f#4]@13 ~ [b3,e4,g#4]@17 ~ [c#4,e4]@10 [c#4,e4] ~@3 [b3,e4,g#4]@16 ~@2 [a3,c#4,f#4]@7 ~, ~@4 a4@7 ~@25 a4@7 ~@13]/7", // C#m E F#m E C#m E F#m
  H: "[[f#3,b3,d#4] ~ [f#3,b3,d#4]@2 ~@2 [b3,e4]@10 [b3,e4] ~ [b3,e4,g#4] ~@3 [c#4,a4]@7 ~@3, ~@3 g#3@6 ~@2 e4@2 ~@3]/2", // B E5 E F#m
  I: "[b3,e4] ~ [b3,e4,g#4] ~@3 [c#4,a4]@7 ~@3, ~@3 e4@2 ~@3", // E5 E F#m
  J: "[e4@2 f#4@2 g#4@2 b4@2 [g#3,c#4]@5 ~ [g#3,c#4]@8 ~@2 f#3@3 ~@3 f#3@8 ~@2 [e3,a3]@5 ~ [e3,a3]@8 ~@2 [f#3,b3]@5 ~ [f#3,b3]@8 ~@2 [g#3,c#4]@5 ~ [g#3,c#4]@8 ~@2 f#3@3 ~@3 f#3@8 ~@2 [e3,a3]@5 ~ [e3,a3]@8 ~@2 [f#3,b3]@5 ~ [f#3,b3]@2, ~@4 e4@7 ~ [b3,d#4]@7 ~ c#4@7 ~ d#4@7 ~ e4@7 ~ [b3,d#4]@7 ~ c#4@7 ~ d#4@4]/8", // C#5 A5 B5 C#5 A5 B5 B
  K: "~@4 [f#3,b3,e4] ~ [f#3,b3] ~, ~@12 e4 ~@3", // Esus2 B5
  L: "[[b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 [b3,e4]@10 [b3,e4] ~ [b3,e4,g#4] ~ [c#4,f#4] ~ b3 ~@9 [c#4,e4] ~ [c#4,e4,a4]@2 ~@2 [b3,e4,g#4]@7 ~@3, ~@3 g#3@9 [e3,g#3,b3]@7 ~@5, ~@16 c#4@2 ~@4 [c#4,a4]@7 ~@19, ~@11 e4@2 ~@11]/3", // B E5 E F#5 C#m A E F#m
  M: "[b3,e4] ~ [b3,e4,g#4] ~@3 [c#4,e4,a4]@6 ~@4", // E5 E A
})).s("gm_piano").gain(0.2).pan(0.3)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@5 A B C D@2 ~@15 E F E F G B H I@2 F E F G B H D@2 ~@9 J@2 K@3 L@2 F E F G B H D@2 ~@3 M@5 E F E F G B H I@2 F E F G
  B H I@2 F E F G B H I@2 F E F N
>`.pickRestart({
  A: "[g#2,b3] ~ [g#2,b3]@4 [a2,c#4]@7 ~@3", B: "[c3,d#4,g#4] ~ [c3,d#4,g#4]@4 [c#3,e4]@7 ~@3",
  C: "[b2,b3,f#4] ~ [b2,b3,f#4]@4 [a2,c#4,e4]@8 b3 ~", D: "[[b2,c#4,e4] ~ [b2,c#4,e4]@4 [e2,b3,e4]@17 ~@9]/2",
  E: "~@12 c#4@2 e4 ~", F: "~@12 c#4@2 b3 ~", G: "[g#2,g#4] f#4 c#4 e4!2 f#4 [a2,e4]@7 ~@3, ~ g#2@2 ~@5",
  H: "[b2,d#4,f#4] ~ [b2,d#4,f#4]@4 [a2,c#4,e4]@8 b3 ~", // B A
  I: "[[b2,c#4,e4] ~ [b2,c#4,e4]@4 [e2,b3,e4]@17 ~@5 c#4@2 e4 ~]/2", J: "[~@3 [b3,e4]@13]/2",
  K: "[~@2 b3 ~ c#4 ~ [b3,e4,e5]@32 ~@2 [f#3,c#4,c#5]@6 ~@2]/3", // E5 F#5
  L: "[[b3,e4,e5] ~ [b3,e4,e5]@2 ~@2 [e3,e4,e5]@13 ~@9 c#4@2 e4 ~]/2", // E5 E
  M: "[~@8 [c#3,g#4]@16 [f#3,f#4]@16 [e3,e4]@16 g#4@12 a4@3 ~ [f#3,e4] ~@3 [f#3,e4] ~@3, ~@56 f#3@15 ~@9]/5", // C#5 F# E F#7
  N: "[g#2,g#4] f#4 c#4 e4!2 f#4 [a2,e4]@6 ~@4, ~ g#2@2 ~@5", // G# A5
})).s("gm_brass_section").gain(0.24)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~ A@7 B@2 ~@7 C@7 D@8 E@8 F@6 G@3 C@7 D@8 B@2 ~@8 A@7 E@8 H@8 I@4 ~@2>".pickRestart({
  A: "[~@6 e5@73 d#5@6 c#5@10 b4@8 a4@8 b4]/7", B: "[~@5 e4@19 ~@8]/2",
  C: "[~@7 [a4,c#5]@16 [g#4,b4]@16 [f#4,a4]@16 [g#4,b4]@16 [a4,c#5]@15 ~ g#4@16 [f#4,a4]@9, ~@86 b4@17 ~@9]/7", // A G#m F#m G#m A F#m
  D: "[~@5 [b4,e5]@17 e5@73 d#5@6 c#5@10 b4@8 a4@8 b4]/8", E: "[~@5 e4@17 e5@73 d#5@6 c#5@10 b4@8 a4@8 b4]/8",
  F: "[~@5 e4@17 ~ e4@16 d#4@16 c#4@32 e4@9]/6", G: "[~@7 d#4@17 c#4@15 b3@9]/3",
  H: "[~@5 e4@17 ~ e4@16 ~@56 d#5@6 c#5@10 b4@8 a4@8 b4, ~@22 e5@73 ~@33]/8",
  I: "[~@5 e4@17 ~ e4@16 ~@25, ~@22 e5@41 ~]/4",
})).s("gm_string_ensemble_2").gain(0.28).pan(0.8)

// other · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~ A@5 ~@11 B@4 C@4 A@5 ~@2 D@6 ~@11 B@4 C@4 A@5 ~@3 E@8 F A@5 ~@2 G@5 A@5 ~@2 G@5 H@4 ~
>`.pickRestart({
  A: "[~@5 [e5,f5,g5] [a5,b5,c6,d6] ~@73, ~@6 e6@71 ~@3]/5", B: "[~ e5@7]/4",
  C: "[g#5@2 f#5@2 c#5@8 b4@8 a4@7 b4@5, ~ e5@7]/4", D: "[~@11 [e5,f5,g5,a5,b5] [c6,d6] ~@83, ~@12 e6@71 ~@13]/6",
  E: "[~ g#4@2 f#4@2 e4@2 f#4@2 c#4@2 f#4@2 ~@2 b4, ~@8 c#5@63 ~ c#5@47 ~@9, ~@13 e4@3]/8",
  F: "~@4 [e4,b4] ~ [e4,b4] ~", G: "[~@11 [e5,f5,g5,a5,b5] [c6,d6] ~@67, ~@3 e6@17]/5",
  H: "[~@5 [e5,f5,g5] [a5,b5,c6,d6] ~@57, ~@6 e6@55 ~@3]/4", // Em D7
})).s("gm_rock_organ").gain(0.21)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@3 A B ~@22 A B ~@6 A B ~@12 C@8 ~@2 A B ~@15 A B ~@6 A B ~@6 A B ~@6 A B ~
>`.pickRestart({
  A: "~@11 [e4,a4]!2 ~@3", B: "~@11 [e4,g#4]!2 ~@3",
  C: "[~@8 [e4,a4]@12 ~@2 [g#3,b3,e4,g#4]@15 ~@3 [c#4,f#4]@13 ~ [g#3,b3,e4,g#4]@15 ~@3 [e4,a4]@12 ~@2 [g#3,b3,e4,g#4]@15 ~@3 [c#4,f#4]@13 ~@11, ~@7 [a3,c#4]@13 ~@19 [f#3,a3]@14 ~@18 [a3,c#4]@13 ~@19 [f#3,a3]@14 ~@11]/8", // A5 E F#5 E A5 E F#5 A …
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.9)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@9 A B C D E F G H I J K L M J K N O ~@15 A P Q D E F G H R S T U V S T W X ~@7 Y ~@37
>`.pickRestart({
  A: "~ [e3,g#3,b3,e4]", B: "~ [e3,g#3,b3] ~ [f#3,b3,d#4,f#4]@4 ~",
  C: "~ d#3 f#3 d#3 [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4]!2", // C#m
  D: "[g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4]@2 [e3,a3,c#4,e4]@9 ~", // C#m A
  E: "b3 c#4 e4 c#4 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", F: "[e3,g#3,b3,e4]!3 [f#3,b3,d#4,f#4]@3 [f#3,b3,d#4,f#4]!2",
  G: "[f#3,b3,d#4,f#4]!4 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2", // B A
  H: "[e3,a3,c#4,e4]!3 [f#3,b3,d#4,f#4]@2 [f#3,b3,d#4,f#4]!3", I: "b3 c#4 e4 c#4 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2",
  J: "[e3,a3,c#4,e4]!3 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]!2", K: "[e3,g#3,b3,e4]!4 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]!2",
  L: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4]@2 [e3,g#3,b3,e4]@6 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2", // F#m E
  M: "[e3,g#3,b3,e4]!4 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2", // E A
  N: "[f#3,b3,d#4,f#4] ~ [f#3,b3,d#4,f#4]@2 ~@2 [e3,g#3,b3,e4]@6 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2", // B E
  O: "[e3,g#3,b3,e4]!4 ~@4", P: "~ [e3,g#3,b3] ~ [f#3,b3,d#4,f#4]@2 [f#3,b3,d#4,f#4]!3",
  Q: "[f#3,b3,d#4,f#4] d#3 f#3 d#3 [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4]!2", // B C#m
  R: "b3 c#4 e4 c#4 [a3,c#4,e4]@2 [a3,c#4,e4]!2", S: "[a3,c#4,e4]!3 [g#3,b3,e4]@3 [g#3,b3,e4]!2",
  T: "[g#3,b3,e4]!4 [a3,c#4,f#4]@2 [a3,c#4,f#4]!2", // E F#m
  U: "[a3,c#4,f#4]@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 [g#3,b3,e4]@6 [g#3,b3,e4]@2 [g#3,b3,e4]@2", // F#m E
  V: "[g#3,b3,e4]!4 [a3,c#4,e4]@2 [a3,c#4,e4]!2", // E A
  W: "[b3,d#4,f#4] ~ [b3,d#4,f#4]@2 ~@2 [g#3,b3,e4]@6 [g#3,b3,e4]@2 [g#3,b3,e4]@2", X: "[g#3,b3,e4]!4 ~@4",
  Y: "e3 f#3 g#3 b3 ~@4",
})).s("gm_acoustic_guitar_steel").gain(0.21).pan(0.6)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@65 A@8 ~@30>".pickRestart({
  A: "[~ [g#5,c#6]@2 [d#6,f#6]@2 [c#6,e6]@2 [d#6,f#6]@2 [g#5,c#6]@2 [d#6,f#6]@2 [c#6,e6]@2 [d#6,f#6]]/8", // C#5 D#m C#m D#m C#5 D#m C#m D#m
})).s("gm_drawbar_organ").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@3 C B@2 A D E@14 F G B@3 C B@2 H I B@3 J B@2 J D E@14 F G B@3 C B@2 J K E@7 ~ C B@3 C B@2 H I B@3 J B@2 J L B@3
  J B@2 J L B@3 J
>`.pickRestart({
  A: "x!2 ~ x ~@4", B: "x!2 ~@2 x ~@3", C: "~ x ~ x ~@4", D: "~@4 x ~@2 x", E: "x ~@3 x ~@2 x", F: "x ~@2 x ~@4",
  G: "~ x ~ x!2 ~@3", H: "x!2 ~ x ~@3 x", I: "~ x!3 ~ x ~@2", J: "x!2 ~ x ~ x ~@2", K: "x ~@2 x!2 ~@2 x",
  L: "~@3 x ~ x ~@2",
})).gain(0.52)

// drums · clap
const clap = s("cp").struct(`<
  ~ A B@3 A B@3 ~@16 A B@3 A B@2 C A B@3 A B@3 ~@16 A B@3 A B@2 C ~@9 A B@3 A B@2 C A B@3 A B@3 A B@3 A B@3 A B@3 A
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.45)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@8 B ~@31 B ~@23 B ~@7 C ~@16 B ~@7 B ~@4>".pickRestart({
  A: "~@9 x!2 ~@5", B: "~ x ~@6", C: "~@14 x!2",
})).gain(0.19)

// drums · low tom
const low_tom = s("lt").struct("<A ~@8 B ~@14 A ~@16 B ~@14 A ~@16 C ~@16 B ~@7 B ~@4>".pickRestart({
  A: "~@7 x", B: "x", C: "~@3 x!2 ~ x ~",
})).gain(0.52)

// drums · hihat
const hihat = s("hh").struct("<~@9 A B@7 A B@6 C ~@16 A B@7 A B@6 C ~@8 A B@3 D B@2 C ~@30>".pickRestart({
  A: "~@4 x!4", B: "x!8", C: "x!4 ~@4", D: "x!3 ~@2 x!3",
})).gain(0.39)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@17 B@7 C ~@7 D ~@16 B@7 C ~@7 D ~@7 E ~@8 D ~@20>".pickRestart({
  A: "~ x", B: "~ x ~@2", C: "x!2 ~@2", D: "x", E: "~ x!2 ~ x ~ x ~",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~@7 B ~@23 A ~@7 B ~@15 C ~@3 D ~@2 E B ~@16 A ~@7 A ~@4>".pickRestart({
  A: "x ~@2 x ~@4", B: "x", C: "~ x ~@2", D: "~@3 x ~@4", E: "~@4 x!4",
})).gain(0.39)

// drums · tambourine
const tambourine = s("tb").struct("<~@33 A B@7 ~@49 A B@7 A B@3 C>".pickRestart({
  A: "~@10 x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "x ~ x!3 ~ x!3 ~ x!3 ~@3",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 B ~@2 B ~@8 C ~@3 C ~@2 B C ~@3 B ~@2 B@2 ~@3 B ~@2 B ~@8 C ~@3 C ~@2 B C ~@3 B ~@2 B C ~@3 C ~@4 D ~@3 B ~@2
  B@2 ~@3 B ~@2 B@2 ~@3 B ~@2 B@2 ~@3 B
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "~@3 x ~@4", C: "~ x", D: "~ x ~ x ~@4",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct("<~ A@8 B ~@15 C A@7 D A@7 B ~@15 C A@7 B ~@8 E A@7 D A@7 D A@7 D A@3 F>".pickRestart({
  A: "x!8", B: "x!2 ~@6", C: "~@4 x!4", D: "x!2 ~@2 x!4", E: "~@3 x!5", F: "x!7 ~",
})).gain(0.52)

stack(
  bass, piano, brass_section, string_ensemble_2, rock_organ, electric_guitar_clean, acoustic_guitar_steel,
  drawbar_organ, kick, clap, snare, snare_soft, low_tom, hihat, mid_tom, open_hat, tambourine, crash, ride
)

More by Glenn Frey