Strudelify
I Cant Tell You Why cover art

1979 · The Long Run

I Cant Tell You Why

Eagles

KeyG♯ minorTempo89 bpm
0:00/0:00
// I Cant Tell You Why — Eagles
// 89 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(89/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@2 ~@2 B C D@2 E F G H E F I J K@2 L M N O P@2 E F G H E F I J K@2 L M K Q L R L S T@2 U@2 E V W X E Y Z AA K AB L AC
  K AB L AD L AE L R AF AG AF AH AI AG AF AH AI AG AF AG AJ@2 AK@3
>`.pickRestart({
  A: "[g#1@7 ~]/2", B: "g#1@7 ~@9", C: "~@12 g#2 ~@3", D: "[~@5 g#1 ~ d#1@6 ~ d#1 f#1]/2", E: "b1@4 ~@2 b1 ~ b1@6 ~@2",
  F: "b1@4 ~@2 b1 ~ b1@3 ~ f#2@2 f2 ~", G: "e2@4 ~@2 e2 ~ e2@7 ~", H: "e1@4 ~@2 e1 ~ e1@3 ~ c#2@3 ~",
  I: "e2@4 ~@2 e2 ~ e2@6 ~@2", J: "d#2@4 ~@2 d#2@2 d#1@5 ~ f1 f#1", K: "g#1@4 ~@2 g#1 ~ g#1@7 ~",
  L: "e1@4 ~@2 e1 ~ e1@7 ~", M: "d#1@5 ~ d#1@2 d#2@6 ~@2", N: "g#1@4 ~@2 g#1 ~ g#1@6 ~@2", O: "g#1@15 ~",
  P: "[e1@11 ~ e1 ~ d#1@13 ~ f#1@2 a#1@2]/2", Q: "g#1@4 ~@2 g#1 ~ g#1@4 c#1@2 d#1 ~", R: "d#1@4 ~@2 d#1 ~ d#1@7 ~",
  S: "d#1@15 ~", T: "[g#1@7 ~ g#1 ~ g#1@2 ~@2 g#1@15 ~ d#1 ~]/2", U: "[g#1@7 ~ g#1 ~ g#1@3 ~ d#1@12 ~@2 d#1@2 a#1@2]/2",
  V: "b1@5 ~ f#2 g#2 ~@2 g#2 ~ f#2 ~ f2@2", W: "e2@2 ~ e2 e1@3 ~", X: "e1@5 ~ e1 ~ e1@4 c#2@3 ~",
  Y: "b1@4 ~@2 b1 ~ b1@3 ~ f#2@2 f2@2", Z: "e2@4 ~@2 e2@2 e1@7 ~", AA: "d#2@4 ~@2 d#2@2 d#1@4 f1@2 f#1 ~",
  AB: "g#1@5 ~ g#1 ~ g#1@4 c#1@2 d#1@2", AC: "d#1@6 d#2@9 ~", AD: "d#1@5 ~ d#1@4 d#2@2 d#1@3 ~",
  AE: "d#1@6 d#1 ~ d#1@7 ~", AF: "e1@4 ~@2 e1@2 g#1@2 b1@2 c#2 ~ e2 ~", AG: "d#2@4 ~@2 d#2 ~ d#2@4 c#1@2 d#1@2",
  AH: "d#2@4 ~@2 d#2 ~ d#2@3 ~ f#2 ~ f2@2", AI: "e2@2 b1@2 e1@4 g#1 ~@3 c#2 ~@3",
  AJ: "[g#1@6 ~@2 g#1 ~ g#1@2 ~@2 g#1@11 ~ d#2@2 d#2@2 d#1@2]/2", AK: "[g#1@7 ~ g#1 ~ g#1@3 ~ d#1@31 ~@3]/3",
})).s("gm_acoustic_bass").gain(0.41)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note("<~ A B@2 C@2 D ~@40 E ~@22 F ~@3 F ~@8>".pickRestart({
  A: "~@7 d#1", B: "[g#1@25 ~ d#2 ~ d#2@2 d#1@2]/2", C: "[~@8 g#1 ~ g#1@2 ~@2 g#1@12 g#2 ~@3 d#2@2]/2",
  D: "g#1@6 ~@2 g#1 ~@7", E: "~@4 b2 ~@3", F: "~@5 b1 ~@2",
})).s("gm_acoustic_bass").gain(0.26)

// chords · piano · "A.PIANO 3"
const piano = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H I J K L M N O P@2 E@2 F@2 G@2 H Q J K L R J K L S T U V@2 W@2 X@2 Y@2 Z@2 AA AB J AC AD
  AE N AF AD AG AH AI AJ AK ~ AL AM AL AM AL AM AL AM AL AM AL AN@2 AO@3
>`.pickRestart({
  A: "[~@8 [g#3,b3,d#4] ~ [g#3,b3,d#4]@2 ~@2 [g#2,f#3,a#3,c#4]@15 ~ d#2 ~, g#2@13 ~@19]/2", // G#m F#
  B: "[~@8 [g#3,b3,d#4] ~ [g#3,b3,d#4]@3 ~ [f#3,a#3,c#4]@11 ~@5 d#2 ~, g#2@7 ~]/2", // G#m F#
  C: "[~@8 [g#3,b3,d#4] ~ [g#3,b3,d#4]@2 ~@2 [f#3,a#3,c#4]@15 ~ d#2 ~, g#2@7 ~]/2", // G#m F#
  D: "[~@8 [g#3,b3,d#4] ~ [b3,d#4] ~@3 [a#3,c#4]@12 ~@2 a#3@2 c#4 ~, g#2@13 ~ d#2@17 ~, ~@10 g#3@2 ~@2 f#3@10 ~@2 f#3@5 ~]/2", // G#m B A#m
  E: "[[b2,d#3,a#3,d#4,f#4]@29 ~@3]/2", F: "[[e3,g#3,b3,d#4]@23 ~ c#4@2 b3@2 c#4@3 ~]/2",
  G: "[[b2,f#3,a#3,d#4,f#4]@7 ~]/2", H: "[b3,d#4,f#4]@13 ~@3", I: "[a#3,d#4]@3 ~, d#3@7 ~", J: "[g#2,g#3,b3,d#4]@15 ~",
  K: "[g#2,f#3,a#3,c#4]@15 ~", L: "[e3,g#3,b3]@13 ~@3",
  M: "[a#2,d#3,f#3,a#3,d#4]@5 ~ [a#3,d#4,g4]@9 ~, ~@6 g3@7 ~@3, ~@6 [a#2,d#3] ~@9", N: "[g#3,b3,d#4]@15 ~",
  O: "[f#3,a#3,c#4]@15 ~", P: "[[e3,g#3,b3]@11 ~ [e3,g#3,b3] ~ [f#3,a#3]@14 f#3@2 a#3@2, ~@7 d#3@8 ~]/2",
  Q: "[a#3,d#4,g4]@3 ~, d#3@7 ~", R: "[a#2,d#3,f#3,a#3,d#4]@4 ~@2 [a#3,d#4,g4]@9 ~, ~@6 g3@7 ~@3, ~@6 [a#2,d#3] ~@9",
  S: "[a#2,d#3,f#3]@4 ~@2 [a#3,d#4,g4]@7 ~@3, ~@6 [a#2,d#3]@9 ~", T: "[g#3,b3]@5 ~@11, d#4@3 ~",
  U: "[a#3,d#4,f#4], [a#2,d#3,f#3]@3 ~", V: "[~@8 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [f#3,a#3,c#4]@16 ~@2, g#2@15 ~]/2",
  W: "[~@8 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [f#3,a#3]@10 ~@4 a#3@2 c#4 ~, g#2@12 ~@2 d#2@17 ~, ~@14 c#4@12 f#3@5 ~]/2", // G#m F#
  X: "[[a#3,d#4,f#4]@23 ~ [a#3,c#4,f#4]@3 ~ [a#3,d#4,f#4]@4, [b2,d#3,f#3]@7 ~]/2", // D#m F# D#m B
  Y: "[d#4@24 c#4@2 d#4@2 c#4@3 ~, [e3,g#3]@29 ~@3, b3@11 ~@5]/2", // E
  Z: "[[a#3,d#4,f#4]@19 ~ c#4@3 ~ d#4@4 c#4@3 ~, b2@29 ~@3, ~@20 [a#3,f#4]@11 ~]/2", AA: "[e3,g#3,b3]@13 ~@3, d#4@15 ~",
  AB: "g4@6 d#4 g4, [d#3,a#3], d#4@5 ~@3", AC: "[f#3,a#3,c#4]@7 ~, g#2@3 ~", AD: "[e3,g#3,b3,d#4]@15 ~",
  AE: "[a#2,d#3,a#3,d#4,f#4]@5 ~ [a#3,d#4,g4]@7 ~@3, ~@3 [a#2,d#3]@5", AF: "[g#2,f#3,a#3,c#4]@7 ~",
  AG: "[d#3,a#3,d#4,f#4]@5 ~ [a#2,d#3,g3,a#3]@8 ~@2, ~@3 [d#4,g4]@5", AH: "[d#4,f#4]@15 ~, b3@13 ~@3",
  AI: "[a#2,d#3,d#4,f#4]@7 ~", AJ: "[d#4,f#4,b4]@15 ~, [e3,g#3,b3]@13 ~@3",
  AK: "d#4@2 ~@4 a#3@9 ~, [a#2,d#3,f#4]@15 ~, f#3@9 ~@7, a#3 ~@3 d#4@11 ~", AL: "[d#3,a#3,d#4,f#4]@15 ~",
  AM: "[e3,b3,d#4,g#4]@15 ~", AN: "[~@8 [g#2,g#3,b3,d#4] ~ [g#2,g#3,b3,d#4]@2 ~@2 [g#2,f#3,a#3,c#4]@17 ~]/2",
  AO: "[~@8 [g#2,g#3,b3,d#4] ~ [g#2,g#3,b3,d#4]@3 ~ [d#2,f#3,a#3,c#4]@31 ~@3]/3", // G#m D#m7
})).s("gm_piano").gain(0.31)

// chords · piano · "A.PIANO 3" · soft notes
const piano_soft = note(`<
  ~@8 A@2 ~@4 B C ~@3 D ~@4 A@2 ~@3 E@2 F ~@3 D ~@3 G ~@10 H@2 ~ I ~@3 J ~@3 K@2 L ~@19
>`.pickRestart({
  A: "[f#3@7 ~]/2", B: "[e3,g#3]@7 ~", C: "[a#2,g#3]@7 ~", D: "f#4 ~@3", E: "[~@15 [e3,g#3]@14 ~@3]/2",
  F: "[a#2,g3]@7 ~", G: "a#3@3 ~@3 g3@8 ~@2", H: "[f#3@15 ~]/2", I: "[a#2,g3]@15 ~", J: "f#3@4 ~@2 g3@9 ~",
  K: "[[a#2,f#3]@4 ~@12 g#3@13 ~@3, ~@15 e3@14 ~@3]/2", L: "f#3@7 ~",
})).s("gm_piano").gain(0.15)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@3 A B@4 C D E F C D E G H@4 I J K@2 L D E F C D E G H@4 M@4 E N O@2 P@2 Q@3 R C S T U V@4 I W E X E Y Z AA AB AC AD
  AE AF AG AD AE AF AG AD AH AI@2 AJ@3
>`.pickRestart({
  A: "~@10 d#3 ~ d#3 ~ d#2@2",
  B: "[g#2@7 ~ g#2 ~ g#2@2 ~@2 g#2@11 ~ g#3 ~ g#3 ~ d#3 ~ g#2@6 ~@2 g#2 ~ g#2@2 ~@2 d#2@12 ~@2 d#2@2 f#2 ~, g#5@63 ~]/4",
  C: "b2@4 ~@2 b2 ~ b2@6 ~@2", D: "b2@4 ~@2 b2 ~ b2@3 ~ f#2@2 f2@2", E: "e2@4 ~@2 e2 ~ e2@7 ~",
  F: "e2@4 ~@2 e2 ~ e2@4 c#3@3 ~", G: "d#3@5 ~ d#3@2 d#2@5 ~ f2 f#2",
  H: "[g#2@4 ~@2 g#2 ~ g#2@7 ~ g#2@4 ~@2 g#2 ~ g#2@6 ~@2 e2@4 ~@2 e2 ~ e2@7 ~ d#2@4 ~@2 d#2@2 d#3@6 ~@2, g#5@27 ~@5]/4",
  I: "g#2@4 ~@2 g#2 ~ g#2@6 ~@2", J: "g#2@7 ~", K: "[e2@11 ~ e2 ~ d#2@13 ~ f#2@2 a#2@2]/2",
  L: "~ b2@3 ~@2 b2 ~ b2@6 ~@2",
  M: "[g#2@4 ~@2 g#2 ~ g#2@7 ~ g#2@4 ~@2 g#2 ~ g#2@4 c#2@2 d#2 ~ e2@4 ~@2 e2 ~ e2@7 ~ d#2@4 ~@2 d#2 ~ d#2@4 d#3@2 d#2@2, g#5@27 g5@5, ~ f#5 ~@2]/4",
  N: "d#2", O: "[g#2@6 ~@2 [g#2,g#4,b4,d#5] ~ [g#2,g#4,b4,d#5]@2 ~@2 g#2@11 ~ d#3 ~ d#3 ~ d#2@2, ~@7 a#4@9]/2",
  P: "[g#2@7 ~ [g#2,g#4,b4,d#5] ~ [g#2,g#4,b4,d#5]@3 ~ d#2@12 ~@2 d#2@2 a#2@2, ~@14 [d#4,f#4,a#4,c#5]@17 ~]/2", // G#m D#m7
  Q: "[b2@4 ~@2 b2 ~ b2@7 ~ b2@5 ~ f#3 g#3 ~@2 g#3@2 [f#3,d#5]@2 f3@2 e3@4 ~@2 e3@2 e2@7 ~, d#4@29 ~@19, [a#4,d#5] b3]/3", // D#m D#5
  R: "[e2,e5,g#5]@4 ~@2 e2 ~ e2@3 ~ c#3@4", S: "b2@4 ~@2 b2 ~ c#5@2 d#5@2 [f#3,c#5]@2 [f3,d#5]@2, ~@2 b2 ~",
  T: "e3@2 ~ e3 ~@2 d#5@2, ~ d#5 e2@2", U: "d#3@5 ~ d#3@2 d#2@4 f2@2 f#2@2, d#5@15 ~, e4 ~@15",
  V: "[g#2@4 ~@2 g#2 ~ g#2@7 ~ g#2@4 ~@2 g#2 ~ g#2@4 c#2@2 d#2@2 e2@4 ~@2 e2 ~ e2@7 ~ d#2@6 d#3@8 ~@2, g#5@27 ~@5, ~ f#5 ~@2]/4",
  W: "g#2@5 ~ g#2 ~ g#2@4 c#2@2 d#2 ~", X: "d#2@5 ~ d#2@6 d#3@2 d#2@2", Y: "d#2@4 ~@2 d#2 ~ d#2@4 ~ d#2@3",
  Z: "e2@4 ~@2 e2 ~ e2@7 ~, [g#4,g#5]", AA: "d#2@5 ~ d#2 ~ d#2@7 ~, [f#4,f#5]",
  AB: "e2@4 ~@2 e2@2 g#2@2 b2@2 c#3 ~ e3 ~, [g#4,d#5]@15 ~", AC: "d#3@4 ~@2 d#3 ~ d#3@4 c#2@2 d#2@2, [d#4,f#4,a#4]",
  AD: "e2@4 ~@2 e2@2 g#2@2 b2@2 c#3 ~ e3 ~, e4", AE: "d#3@4 ~@2 d#3 ~ d#3@3 ~ f#3 ~ f3 ~",
  AF: "e3@6 e2@2 g#2@2 b2@2 c#3 ~ e3 ~, e4", AG: "d#3@4 ~@2 d#3 ~ d#3@4 c#2@2 d#2@2, d#4",
  AH: "d#3@4 ~@2 d#3 ~ d#3@4 c#2@2 d#2@2", AI: "[g#2@7 ~ g#2 ~ g#2@2 ~@2 g#2@12 d#3 ~ d#3@2 d#2@2]/2",
  AJ: "[g#2@7 ~ g#2 ~ g#2@3 ~ d#2@31 ~@3]/3",
})).s("gm_drawbar_organ").gain(0.41)

// chords · drawbar organ · "ORGAN 1" · soft notes
const drawbar_organ_soft = note(`<
  ~@17 A B C D E ~@11 A B F ~@2 B G H A I@2 ~@2 J@2 K@2 L@2 M N ~@2 B O P@4 Q A ~@2 R S D T D U D T D U D T ~@5
>`.pickRestart({
  A: "f#5", B: "e5", C: "~@3 g5@4 ~", D: "[g#4,b4,d#5]@15 ~", E: "[f#4,a#4,c#5]", F: "d2 ~@2 g5@4 ~", G: "f#5@3 ~@5",
  H: "g#5", I: "[~@7 [f#4,c#5]@9]/2", J: "[b3@24 ~@2 c#5@3 ~ c#5@2, f#4@15 ~]/2",
  K: "[d#5@3 ~@2 [d#5,f#5] [e5,g#5] [f#5,a#5], [e4,g#4,b4]@31 ~]/2", L: "[[b3,d#4,f#4]@31 ~, d#5@3 ~]/2",
  M: "e5 ~ c#5 ~, [e4,g#4,b4]@7 ~", N: "~@6 [g4,g5]@9 ~, ~@2 d#4@13 ~", O: "~@3 g5@5",
  P: "[~@8 f#5@8 e5@8 ~@3 g5@5, g#5@27 ~@5]/4", Q: "[e5,g#5]", R: "b4@15 ~", S: "c#5", T: "[d#4,f#4,a#4,c#5]",
  U: "[f#4,a#4,c#5]@15 ~", // F#
})).s("gm_drawbar_organ").gain(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@6 A@2 B ~@7 C@4 D E F ~@9 C@4 G B H I J B A@2 K@2 L@2 M@2 N@2 O@2 P@4 Q@4 D E R S D T U V W@4 X@4 Y@3 ~@2
>`.pickRestart({
  A: "[g#4@31 ~]/2", B: "f#4", C: "[~@8 f#4@8 e4@8 ~@3 [d#4,g4]@5, g#4@27 ~@5]/4", D: "[g#3,g#4]@15 ~", E: "[f#3,f#4]",
  F: "g#4@15 ~", G: "g#4 ~@15", H: "e4", I: "f#4@3 g4@5", J: "g#4", K: "[g#4,g#5]/2", L: "[[a#2,d#3,f#3,f#4]@31 ~]/2",
  M: "[[b3,d#4]@4 c#4@4 b3@4 a#3@4 b3@13 ~@3, [e3,g#3]@29 ~@3]/2", N: "[[a#2,d#3,f#3]@29 ~@3, [d#4,f#4]]/2",
  O: "[e4@2 d#4@2 c#4@2 ~@2 c#4@4 d#4@3 ~, [e3,g#3]@14 ~@2 [a#2,d#3,g3]@15 ~, b3@3 b3@3 ~@2]/2", // E D#
  P: "[~@2 f#4@2 e4@2 ~ g4, g#4@55 ~@9]/4", Q: "[~@8 f#4@8 e4@8 ~@3 g4@5, g#4@27 ~@5]/4", R: "[g#3,g#4]",
  S: "[f#3,f#4]@7 ~", T: "[d#4,f#4,a#4]@15 ~", U: "[e4,g#4,b4]", V: "[d#4,f#4,a#4]", W: "[g#4@63 ~, b4@13 ~@51]/4",
  X: "[g#4, g#5@53 ~@11]/4", Y: "[~@8 g#4 ~ g#4@3 ~ g#4@32 ~@2]/3",
})).s("gm_string_ensemble_1").gain(0.31)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@21 A B ~@18 C D@2 E@2 ~@31 C D@2 F@3>".pickRestart({
  A: "~@4 b3 c#4 d4 e4", B: "b3@11 ~@5", C: "~@4 b3 c#4 d#4 e4", D: "[b3@21 ~@3 b3@2 c#4@2 d#4@2 e4@2]/2",
  E: "[b3@5 ~@3]/2", F: "[b3@7 ~ b3 ~ b3@2 ~@2 f#3@32 ~@2]/3",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~ A B A B A B A C@13 B D E C@17 B D@3 E C@17 F C@14 G A H ~@2>".pickRestart({
  A: "~@7 x", B: "x", C: "x ~@2 x!2 ~@3", D: "~@3 x!2 ~@3", E: "~@3 x!2 ~@2 x", F: "x ~@2 x!2 ~@2 x",
  G: "x ~@3 x!2 ~ x", H: "x ~@3 x!2 ~@2",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@8 A@13 ~@3 A@17 ~@5 A@17 B A@5 C A@7 D ~@5>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x ~@2 x!2 ~@3", C: "~@2 x ~@3 x!2", D: "~@4 x ~@5 x ~ x ~ x!2",
})).gain(0.51)

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

// drums · hihat
const hihat = s("hh").struct("<~@8 A@13 ~ B@2 A@17 ~ B@4 A@17 C A@14 B@3 ~@2>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "x!2 ~@2",
})).gain(0.51)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@8 A@13 ~@3 A@17 ~@5 A@17 B A C A C A D A@8 ~@5>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~ x ~ x ~@3 x", D: "~ x ~ x ~ x ~@2",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@65 A ~ A ~ B ~@10 B ~@2>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x",
})).gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@4 x ~@16 x ~@19 x ~@41>").gain(0.51)

stack(
  bass, bass_soft, piano, piano_soft, drawbar_organ, drawbar_organ_soft, string_ensemble_1, acoustic_guitar_steel, kick,
  snare, low_tom, hihat, hihat_soft, open_hat, ride
)

More by Eagles