Strudelify
Take It to the Limit cover art

One of These Nights

Take It to the Limit

Eagles

KeyB majorTempo100 bpm
0:00/0:00
// Take It to the Limit — Eagles
// 100 bpm, 3/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 127 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/3)

// 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 nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D E F@2 G ~@8 H I J@2 K@2 H K ~ L ~ M ~ L ~ N ~ O C P K@4 Q C Q C R ~ A B C S E T U V ~@8 H I J@2 K@2 H K ~ L ~
  M ~ L ~ N ~ O C P K@4 Q C Q C R ~@3 W X W X ~ Y ~@2 Z AA Z AA Z AA ~@2 Z AA Z AA Z AA ~@2 Z AA Z AA Z AA ~@3
>`.pickRestart({
  A: "d#4", B: "d#4 e4 f#4", C: "b3",
  D: "[b2,e3,b3,e4]@3 [c#3,f#3,c#4,f#4]@2 [c#3,f#3,c#4,f#4]@3 [b2,e3,b3,e4]@4 ~@4 [g#2,b2,g#3,b3,g#4]@8", E: "[f#4,b4]",
  F: "[e4 f#4 e4 ~ c#4 d#4@7]/2", G: "f#3@4 g#3@4 [b3,e4]@4 ~@4 [b3,e4]@3 d#4@2 c#4@3", H: "~@4 [d#4,f#4,b4] ~",
  I: "~@4 [g4,a#4,d#5] ~", J: "~@4 [g#4,b4,d#5] ~", K: "~@4 [f#4,a#4,c#5] ~", L: "[d#4,f#4,b4] ~@5",
  M: "[e4,g#4,b4] ~@5", N: "[f#4,b4]@3 [g#4,c#5]@2 [g#4,c#5]@3 [g#4,c#5]@4 ~@4 [d#4,f#4]@5 [c#4,e4]@3",
  O: "[e4,g#4,c#5]@4 ~@12 f#3@3 g#3@2 b3@3", P: "[e4,g#4,b4]@4 ~@12 f#3@3 g#3@2 b3@3", Q: "[b3,e4]@16 f#3@3 g#3@2 b3@3",
  R: "[b3,e4] ~@5", S: "[b3,e4]@3 [c#4,f#4]@2 [c#4,f#4]@3 [c#4,f#4]@4 ~@4 [g#4,b4]@8", T: "e4 f#4 e4 ~ c#4 d#4",
  U: "c#4", V: "f#3@4 g#3@4 [b3,e4]@4 ~@4 [b3,e4]@3 c#4@2 b3@3", W: "~@4 [b2,g#3,b3,e4,g#4] ~",
  X: "~@4 [c#3,f#3,a#3,c#4,f#4] ~", Y: "~@2 [c#3,f#3,a#3,c#4,f#4] ~@3", Z: "~@2 [b3,e4,g#4] ~@3",
  AA: "~@2 [c#4,f#4,a#4] ~@3", // F#
})).s("gm_acoustic_guitar_nylon").gain(0.45).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C D A E F G ~@8 H I J@2 K@2 L M N O P@2 N O P@2 Q R S@3 T C U V W V W ~@2 A X C D Y Z U G ~@8 H I J@2 K@2 L M N O
  P@2 N O P@2 Q R S@3 T C U V W V W ~@2 AA AB AC AD AC AD AE AF H AG AH AI AJ AI AJ AI H AK AH AI AJ AI AJ AI H AK AH AI
  AJ AI AJ AI H AL@2
>`.pickRestart({
  A: "[d#4,f#4,b4,d#5]", B: "[f#4,b4,d#5] [e4,b4,e5] [b3,b4,d#5,f#5]", C: "[e4,g#4,b4]",
  D: "[e4,g#4,b4] [d#4,f#4,b4] [c#4,e4,g#4,b4]", E: "[d#4,f#4,b4,f#5] [b3,e4,b4,e5] [b3,b4,d#5]", F: "[f#4,c#5]",
  G: "[b3,e4,g#4,b4]", H: "[b3,b4]", I: "[c#4,d#4,a#4]", J: "[g#3,b3,d#4,g#4]/2", K: "[a#3,c#4,f#4]@2 [a#3,c#4,f#4]",
  L: "[b3,d#4,f#4]", M: "[a#3,c#4,f#4]", N: "[b3,d#4]", O: "[b3,d#4,d#5] c#5 b4, ~ [b3,d#4,f#4]@2", P: "[b3,e4,g#4]/2",
  Q: "[c#4,e4,g#4]", R: "[c#4,e4,g#4]@2 [b3,d#4,f#4]", S: "[b3,e4,g#4]", T: "[c#4,f#4,a#4]", U: "[f#4,a#4,c#5]",
  V: "[e4,g#4,b4,e5]", W: "[f#4,b4,d#5] [e4,b4,e5] [f#4,b4,d#5,f#5]", X: "[f#4,b4,d#5] e5 [b4,d#5,f#5]",
  Y: "[f#4,b4,d#5]", Z: "[d#4,f#4,b4,f#5] [b3,e4,b4,e5] [b4,d#5]", AA: "[g#3,b3,d#4,g#4,b4,g#5]",
  AB: "[g#4,b4,d#5]@5 [g#4,b4,e5]@3 [g#4,b4,d#5]@8 [f#4,a#4,c#5]@8", AC: "[e4,b4,e5]", AD: "[f#4,c#5,f#5]",
  AE: "[e4,b4,e5] ~@5", AF: "f#5 ~@5", AG: "[d#4,f#4,b4] [e4,f#4,b4] [f#4,b4]", AH: "[g#4,b4,e5,g#5]",
  AI: "[f#4,c#5,f#5,a#5] [f#4,c#5,g#5,b5] [f#4,c#5,a#5,c#6]", AJ: "[g#4,e5,g#5,b5]",
  AK: "[b3,d#4] [b3,e4] [b3,d#4,f#4]", AL: "[[b3,d#4] [b3,e4] [b3,d#4,f#4]@4]/2",
})).s("gm_string_ensemble_1").gain(0.35).pan(0.1)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~ A ~@3 B C ~@9 D E ~@23 F ~ F ~@3 G ~@2 H I J ~@9 D E ~@23 F ~ F ~@4 K C K C L M ~@27
>`.pickRestart({
  A: "~ g#4 f#4", B: "~@2 d#4", C: "[c#4,a#4]", D: "[d#4,f#4]", E: "g4", F: "~ g#4 ~", G: "~ [e4,g#4,b4] [b3,f#4]",
  H: "d#4", I: "~@2 [b3,d#4]", J: "c#4", K: "g#4", L: "g#4 ~@5", M: "[c#4,f#4,c#5] ~@5",
})).s("gm_string_ensemble_1").gain(0.2).pan(0.1)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D A B E C F@2 G H I@2 J H A K L@2 M@2 N O F@2 G H F@2 G H P Q C R@2 S T U C N C N V E A B J W X N Y G F@2 G H
  I@2 J H A K L@2 M@2 N O F@2 G H F@2 G H P Q C R@2 S T U C N C N V E B Z AA AB AA S AC AD AE AF AG AH AG AH AG AH AE AI
  AG AH AG AH AG AH AE AI AG AH AG AH AG AH AE AI ~
>`.pickRestart({
  A: "[d#4,f#4,b4]", B: "[d#4,f#4,b4]!3", C: "[b3,e4,g#4]", D: "[b3,e4,g#4] [b3,d#4,f#4] [g#3,b3,e4]",
  E: "[c#4,f#4,a#4]", F: "[f#3,b3,d#4]/2", G: "[g#3,b3,e4]", H: "[g#4,b4] [f#4,b4] [e4,b4]", I: "[d#4,f#4,b4]/2",
  J: "[e4,g#4,b4]", K: "[c#4,d#4,g4,a#4]", L: "[b3,d#4,g#4]/2", M: "[a#3,d#4,f#4]@2 [a#3,d#4,f#4]", N: "[b3,d#4,f#4]!3",
  O: "[a#3,c#4,f#4]!3", P: "[c#4,e4,g#4]", Q: "[c#4,e4,g#4]!2 [b3,d#4,f#4]", R: "[b3,e4,g#4]!3", S: "[c#4,f#4,a#4]!3",
  T: "[e4,g#4,b4]!3", U: "[f#4,a#4,c#5] [f#4,f#5]!2", V: "[b3,e4,g#4] ~@5",
  W: "[e4,g#4,b4] [d#4,f#4,b4] [c#4,e4,g#4,b4]", X: "[b3,d#4,f#4]", Y: "[a#3,c#4,f#4]",
  Z: "[d#4,f#4,b4]@5 g#4@3 [d#4,f#4,b4]@8 [c#4,f#4,a#4]@8", AA: "[e4,g#4,b4]@2 [e4,g#4,b4]",
  AB: "[c#4,f#4,a#4]@2 [c#4,f#4,a#4]", AC: "[e4,g#4,b4] ~@5", AD: "[c#4,f#4,a#4] ~@5",
  AE: "b3@3 b3@2 b3@3 b3@3 b3@2 b3@3 b3@3 b3@2 b3@3", AF: "[b3,d#4,f#4] [c#4,e4,g#4] [d#4,f#4,b4]", AG: "[g#4,b4,e5]!3",
  AH: "[a#4,c#5,f#5]!3", AI: "[b3,d#4] [b3,e4] [b3,d#4,f#4]",
})).s("gm_piano").gain(0.4).pan(0.9)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D A E F C A B C G A B C G A H I J F K H L A B C G A B C M L N C O F P F Q C R C R S Q A B C G A T F U A B C G A
  B C G A H I J F K H L A B C G A B C M L N C O F P F Q C R C R S Q V W K X K X S Y Z@2 AA AB AA AB AA AB Z@2 AA AB AA
  AB AA AB Z@2 AA AB AA AB AA AB Z@2 ~
>`.pickRestart({
  A: "b1@7 b1", B: "b1 c#2 d#2", C: "e2@7 b1", D: "e2 d#2 c#2", E: "b1@2 b1 ~ d#2 ~", F: "f#2@7 f#2",
  G: "e2@2 d#2 ~ c#2 ~", H: "d#2@7 d#2", I: "g#2@7 d#2", J: "g#2@5 d#2@3 g#2@4 ~@4 d#2@4 ~@4", K: "e2@7 e2",
  L: "c#2@7 c#2", M: "e2@13 b1@3 b1@8", N: "c#2@2 d#2", O: "e2@4 b1 ~", P: "f#2@7 d#2", Q: "f#2", R: "b1@2 c#2 ~ d#2 ~",
  S: "e2 ~@5", T: "b1@2 d#2 ~ e2 ~", U: "e2@16 ~@5 b1@3", V: "g#2@8 g#2@5 d#2@3 g#2@5 d#2@3", W: "g#2 d#2 f#2",
  X: "f#2@19 g#2@2 f#2@3", Y: "f#2 ~@5", Z: "b1@3 b1@2 b1@3 b1@3 b1@2 b1@3 b1@3 b1@2 b1@3", AA: "e2 c#3 b2",
  AB: "f#2 d#3 c#3",
})).s("gm_acoustic_bass").gain(0.53)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A@3 C A B A B A B A B A B A B A@3 C A@4 ~@2 A B A B A B A C A B A B A B A B A
  B A B A@3 C A B A B A B A B A B A B A@3 C A@4 ~@2 D ~ A@5 C E F A C@2 A@2 C G F A C@2 A@2 C G F A C@2 A@2 C G C@2
>`.pickRestart({
  A: "x ~@6 x", B: "~@7 x", C: "x", D: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@7",
  E: "~@3 x ~@4 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", F: "~@3 x ~@4 x ~@4 x ~@5 x ~@4",
  G: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~ A ~ B ~ A ~ C ~ A ~ A ~ A ~ A ~ A ~ A D@2 E F D A ~ C ~ A ~ A ~ A ~ A D@2 G H I@4 A@2 ~ J ~ B ~ K ~ L ~ A ~ A ~ A ~
  A ~ A ~ A D@2 E F D A ~ C ~ A ~ A ~ A ~ A D@2 G H I@4 A@2 M ~ I@6 N O I ~ I@4 P Q I ~ I@4 P Q I ~ I@4 P I A
>`.pickRestart({
  A: "x", B: "x ~@10 x ~ x ~@2 x ~@7", C: "x ~@12 x ~@2 x ~@7", D: "~@2 x", E: "~@16 x ~@2 x ~ x ~@2",
  F: "~@3 x ~ x ~@2 x ~@12 x ~@2", G: "~@16 x ~@4 x ~@2", H: "~@3 x ~ x ~@2 x ~@15", I: "~ x!2", J: "~@13 x ~@2 x ~@7",
  K: "x ~ x", L: "~@13 x ~ x!3 ~@6", M: "~@19 x ~ x ~@2", N: "~@8 x ~@7 x ~@2 x ~ x ~@2", O: "x ~@2 x ~@7 x ~ x ~@10",
  P: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", Q: "x ~@2 x ~ x ~ x!2 ~@2 x ~ x ~@10",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@93 A ~@7 B ~ A ~@7 A ~@7 A ~@7>".pickRestart({
  A: "~@16 x ~@2 x ~ x ~@2", B: "~@21 x ~ x",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 A ~@45 A ~@7 B ~@7 C ~ D ~@5 E ~ D ~@5 E ~ D ~@7>".pickRestart({
  A: "~@16 x ~@2 x ~ x ~@2", B: "~@8 x ~@2 x ~ x ~@10", C: "~@16 x ~@2 x ~@4", D: "~@11 x ~ x ~@10",
  E: "~@16 x ~@2 x ~ x ~ x",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct(`<
  [~@8 x ~@4 x ~@2 x ~@7]
  [x ~@7 x ~@4 x ~@2 x ~@7]!2
  [x!3]
  [x ~@7 x ~@4 x ~@2 x ~@7]!2
  ~@121
>`).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@23 A ~@15 B ~@29 A ~@15 B ~@7 C ~@7 D ~ E F ~@6 E F ~@6 E F ~@6>".pickRestart({
  A: "~@11 x ~ x ~@2 x ~@7", B: "~@11 x ~ x ~@10", C: "x ~@2 x ~ x ~@18", D: "~@5 x ~ x!2 ~@15",
  E: "~@3 x ~ x ~@2 x ~@15", F: "~@19 x ~ x ~@2",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  A ~@23 A ~@15 A B ~@4 A ~@23 A ~@15 A B ~@6 A ~@9 A ~@7 A ~@5 A ~ A ~@4 B A
>`.pickRestart({
  A: "x", B: "~@2 x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A@2 B@12 A@3 C D B@11 A@3 C E F G H C@2 I J A B A B A K B@12 A@3 C D B@11 A@3 C E F G H C@2 L ~ H@6 L ~ M C E H@3
  L ~ M C E H@3 L ~ M C E H@3 L ~ N
>`.pickRestart({
  A: "x ~@7 x ~@4 x ~@2 x ~@7", B: "x!3", C: "x", D: "~ x!2", E: "~@5 x ~@2 x ~@4 x ~@2 x ~@7",
  F: "x ~@4 x ~@2 x ~@4 x ~@10", G: "x ~@4 x ~@2 x ~@4 x ~@2 x ~@7", H: "x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2",
  I: "~@8 x ~@4 x ~@2 x ~@7", J: "x ~@7 x ~@4 x ~@10", K: "x!2 ~", L: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
  M: "x ~@7 x ~@4 x ~@2 x ~@4 x ~@2", N: "x!17 ~@7",
})).gain(0.72)

stack(
  acoustic_guitar_nylon, string_ensemble_1, string_ensemble_1_soft, piano, bass, kick, snare, low_tom, mid_tom,
  open_hat, high_tom, crash, ride
)

More by Eagles