Strudelify
One Day I'll Fly Away cover art

Now We May Begin

One Day I'll Fly Away

Randy Crawford

KeyD majorTempo77 bpm
0:00/0:00
// One Day I'll Fly Away — Randy Crawford
// 77 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(77/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D C B C D C B C D C B C D C E C F G H I J K B C D C B C D C E C F L H I M N ~ O I P Q R S T U V W X Y Z@2 E C F
  L H I M AA ~ O I P Q AB B C D C B C D C B C D C B C D C B C D C B C D C
>`.pickRestart({
  A: "~@15 [a3,d4,e4]", B: "[a3,d4,f#4] [a#3,d4,g4]", C: "[a3,d4,f#4]@15 ~", D: "[a#3,d4,g4]@7 ~ [a#3,d4,e4]@8",
  E: "[a3,d4,f#4]@3 [a3,d4,f#4] [a#3,d4,g4]@4", F: "[a3,c#4,e4]@4 [f#3,b3,d4]@4 [a3,c#4,e4]@3 ~ [b3,d4,f#4]@4",
  G: "[g4,b4]@6 a4@2 [c#4,e4,a4]@7 [a3,c#4,e4], e4 ~", H: "[a3,d4,f4]@8 [a3,c4,f4]@7 ~",
  I: "a4@6 a#4 ~ g4@7 ~, [a#3,d4]@15 ~", J: "[c4,f4]@4 [c4,e4]@4 d#4@4 e4@3 ~, a#4@15 ~",
  K: "[c#4,f4,a#4]@7 ~ [c4,f4,a4]@7 ~", L: "[g4,b4]@6 a4@2 [c#4,e4,a4]@7 ~, e4 ~",
  M: "f4@4 e4@4 d#4@4 e4@3 ~, [c4,a#4]", N: "[f4,a#4,c#5]", O: "[a3,d4,f4]@6 [g3,c4,e4]@2 [a3,c4,f4]@7 ~",
  P: "[e4,a#4]@4 [e4,a4]@3 ~ [c4,e4,g4]@2 [a3,d4,f4]@4 [a3,d4,e4]@2, c#4@7 ~@9", // Edim A5 C Dm Asus4
  Q: "a#3@4 a3@3 f4 [a3,c#4,e4]@8, [d4,f4] ~", R: "[f3,a3,d4]@12 a4@2 a#4 c5",
  S: "[f3,d5]@8 d#5@4 a#4@2 ~ c5, c5 ~@7 f#3@8", T: "g3@8 f#3@7 ~, d5@3 ~, c5 ~@15",
  U: "[g3,d#4,g4,c5]@7 f#2 a#4@4 c5@4, a#4 ~@7 [f#3,d#4]@8, ~@4 f#4@3 ~", V: "[g3,g4,a#4]@10 g3 a3 a#3 a3 g3@2, d5 ~",
  W: "[a3,c4,f#4,a4]@8 [f4,a#4]@3 ~ f4@3 g4, ~ [a#3,c#4]", X: "[a3,f4]@6 g4 f4, c4@15 ~, a4@11 ~@5",
  Y: "[a#3,c#4,f4]@2 [a#3,c#4,f4] [a#3,c#4,g4]", Z: "[[c#4,f4,a#4]@13 ~ a4 g4 a4@13 ~@3, ~@14 [c4,f4]@15 ~@3]/2",
  AA: "[c#4,f4,a#4]", AB: "[f3,a3,d4]@3 ~",
})).s("gm_epiano2").gain(0.46)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@5 A B C D A B C D A B C D A B E F A G H I A B C D A B C D A B E F A G H J K A L M N O P Q R S T U V J K A B E F A G
  H J K A L M N W ~@4 A X C D A X C D A X C D A X C D A X C D
>`.pickRestart({
  A: "d2 ~ a2 d3 ~ a2 ~@2 d2 ~@3 d3 ~@2 d3", B: "d2 ~ a2 d3 ~ a2 ~@2 d2 ~ a2 ~ d3 ~@3",
  C: "d2 ~ a2 d3 ~ a2 ~ d3 d2 ~ a2@2 d3 ~@2 d3", D: "d2 ~ a2 d3 ~ a2 ~ d3 d2 ~ a2 ~ d3 ~@3",
  E: "b1 ~ f#2 b2 ~ f#2 ~ b2 b1 ~ f#2@2 b2 ~@2 b2", F: "e2 ~ b2 e3 ~ b2 ~ e3 a1 ~ e2 ~ a2 ~@3",
  G: "g1 ~ d2 g2 ~ d2 ~@2 g1 ~ d2 ~ g2 ~@3", H: "c2 ~ g2 c3 ~ g2 ~ c3 c2 ~ g2@2 c3 ~@2 c3",
  I: "f1 ~ c2 f2 ~ c2 ~ f2 f1 ~ c2@2 f2 ~@2 f2", J: "a#1@3 c2@3 c#2@4 d#2@4 f2 d#2", K: "f2@7 ~ f1@6 a1@2",
  L: "g1 ~ d2 g2 ~ d2 ~@2 c2 ~ g2 ~ c3@2 ~@2", M: "c#2@4 a2@3 c#2 d2@4 d3@4", N: "a#1@5 a#2 f2 a#1 a1@4 a2@4",
  O: "d2@2 a2 d3 ~ a2 ~ d3 d2@3 ~ c2@3 ~", P: "a#1@3 a#2 ~@4 a#1@4 a#2@4", Q: "a#1@3 a#2 ~ a#2 ~ a#2 a#1@4 a#2@4",
  R: "a#1@3 a#2 ~ a#2 ~ a#2 f#1@4 f#2@4", S: "g1@3 g2 ~ g2 ~ g2 g1@4 g2@3 ~",
  T: "f#2@2 ~ f#2 ~ f#2 d2 ~ d#2 ~ d#2@2 d#3@3 ~", U: "f2@3 f3 ~ f3 ~ f3 f2 ~ f2@2 f3@3 ~",
  V: "f2@2 ~ f3 ~ f3 ~ f3 f2 ~ f2@2 f3@3 ~", W: "d2@2 a2 d3 ~ a2 ~ d3 d2@3 ~@5",
  X: "d2 ~ a2 d3 ~ a2 ~@2 d2 ~ a2 ~ [f3,f#3,g3] [b2,c3,e3] ~@2", // Cmaj7
})).s("gm_fretless_bass").gain(0.4)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note(`<
  ~@5 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A C ~@2 A B ~@2 A B ~@2 A B ~@2 A C ~@3 A C ~@3 D ~@8 A B ~@2 A C ~@3 A C ~@7 A E
  ~@2 A E ~@2 A E ~@2 A E ~@2 A E ~@2
>`.pickRestart({
  A: "~@7 d3 ~@2 a2 ~@5", B: "~@7 d3 ~@8", C: "~@7 g2 ~@8", D: "~@5 a#2 ~ a#2 ~@8",
  E: "~@7 d3 ~@5 [c#3,d3,d#3] [f2,f#2,g2,g#2,a2,a#2] [c2,c#2,d2,d#2,e2]",
})).s("gm_fretless_bass").gain(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E B C D F B C D F B C D F ~@53 B C G ~ B C D F B C D F B C D F B C D F B C D F
>`.pickRestart({
  A: "~@15 e3", B: "f#3!3 e3 ~@3 e3 g3 ~ g3 ~ e3 ~@2 e3", C: "f#3!3 e3 ~@3 e3 f#3 ~ f#3 ~ e3 ~@3",
  D: "e3!3 d3 ~@3 d3 e3 ~ e3 ~ d3@2 ~ e3", E: "f#3!3 e3 ~@12", F: "f#3!3 e3 ~@3 e3 f#3 ~ f#3 ~ e3 ~@2 e3",
  G: "e3!3 d3 ~@3 d3 e3 ~ e3 ~ d3@2 ~@2",
})).s("gm_electric_guitar_muted").gain(0.29).pan(0.3)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@10 A ~ A ~ A ~ A ~@4 B ~ C D ~ E ~ E ~ E ~ E ~@5 F C G H I J K L M ~@4 N O P G Q ~@5 F C G H I J R L M ~@9 A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@5 a4!2 d5!2 a5!2 d6!2 a6!2 ~", B: "[d5,f5]@6 [c5,e5]@2 [a4,d5]@7 ~", C: "f5 e5 d#5 e5", D: "[a#5,c#6] [a5,c6]",
  E: "~@4 [g6,g#6] [d6,a6] ~@2 [c6,c#6] [a5,d6] ~@2 [g5,g#5] [d5,a5] ~@2", // G#maj7 D5 C#maj7 D5 G#maj7 D5
  F: "a5 a#4 c5 d5 a5 a#4 c5 d5 g5 a#4 c5 d5 g5 a#4 c5 d5", G: "a#5@3 c6@3 c#6@4 d#6@4 f6 g6",
  H: "[c6,f6,a6]@2 ~ [a5,c#6,e6]", I: "[f5,a5,d6] [f5,a5,c6]", J: "[a5,d6,f6] [g5,c6,e6]",
  K: "[c#6,e6,g6,a#6]@2 [c#6,e6,g6,a6]@2 ~ f6 ~ e6, ~ a5, ~@2 [f5,d6,g6] [f5,d6]", L: "[g#5,d6,f6] [a5,c#6,e6]",
  M: "[f5,a5,d6]@7 ~", N: "a5@8 a#5@4 f5@3 g5", O: "a5@15 ~", P: "g5@8 f5@4 g5@3 ~", Q: "[c6,f6,a6] ~",
  R: "[c#6,e6,g6,a#6]@2 [c#6,e6,g6,a6]@2 g6 f6 d6 e6, ~ a5, ~@2 [f5,d6] f5", // C#dim A7 Dm
})).s("gm_string_ensemble_2").gain(0.37).pan(0.7)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note(`<
  ~@9 A B C D A B C D ~@8 A B C D A B C D E F ~@12 G H I J ~@5 E F ~@16 A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "a3@7 ~ a4@6 g4@2", B: "f#4", C: "a#3@4 a4@3 g4", D: "f#4@15 ~", E: "a3 d3 ~ a3!2 d3 ~ a3 a#3 d3 ~ a#3!2 d3 ~ a#3",
  F: "a3 d3 ~ a3!2 d3 ~ a3!2 d3 ~ a3!2 d3 ~@2", G: "f3 f#3", H: "g3 f#3", I: "[d#3,g3] [d#3,f#3]",
  J: "[d3,g3,a#3]@15 ~", // Gm
})).s("gm_string_ensemble_2").gain(0.24).pan(0.3)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_3 = note("<~@17 A B C D@8 ~@5 A B E F@8 ~@7 G H I@3 A B C J K L M ~@31>".pickRestart({
  A: "[a3,d4,f#4] [a#3,d4,g4]", B: "[a3,d4,f#4]", C: "[a3,c#4,e4] [f#3,b3,d4] [a3,c#4,e4] [b3,d4,f#4]",
  D: "[e3 [c#3,e3,a3] [a3,d4,f4] [a3,c4,f4] a4 g4 [c4,e4]@2 [c#4,f4,a#4] [c4,f4,a4] ~@6, b3, g3@3 g3@3 ~@2, ~@2 [a#3,d4,f4] ~@5]/8", // A Dm F C A#m F A#
  E: "[a3,c#4,e4] [f#3,d4] [a3,c#4,e4] [b3,d4,f#4], ~ b3@2 ~", // A D A Bm
  F: "[[e3,g3] [c#3,e3,a3] [a3,d4,f4] [a3,c4,f4] a4 g4 [g3,c4,e4]@2 ~@8, b3, ~@2 [a#3,d4,f4] ~@5]/8", // Em A Dm F C A#
  G: "[a3,d4,f#4] [a#3,d#4,g4]", H: "[a3,c4,f4]", I: "[[a#3,c#4]@15 ~ [a3,c4]@5 ~@3, f4@7 ~]/3",
  J: "[g3,b3] ~ [c#3,e3,a3]@2, e3 ~", K: "[a3,d4,f4] [a3,c4,f4]", L: "a4 g4, [a#3,d4,f4]", M: "[c4,e4], g3 ~@3",
})).s("gm_string_ensemble_2").gain(0.36)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<~@4 [~ a4, ~@3 e4@5] ~@68 [~@3 d5@4 ~, e4@7 ~, ~@3 a4@10 ~@3] ~@20>")
  .s("gm_acoustic_guitar_nylon").gain(0.5)

// chords · overdriven guitar · "OVERDRIVE" · A D#m F5 G5 D# D#m
const overdriven_guitar = note(`<
  ~@45
  [d4@7 ~ [a3,c#4]@7 ~]
  [~@2 e4@2 f4@3 ~, d4@15 ~]
  [f4@2 ~ f4@5 [d#4,f#4]@3 [d#4,f#4] [d#4,f#4]@2 ~ g4, d4 ~]
  [~ f4 c4 [c4,f4]@3 ~@10, [d4,g4] ~@7]
  [[a#3,d#4,g4]@3 [a#3,d#4,g4]!2 ~@3 [a#3,d#4,f#4]@3 [a#3,d#4,f#4]!2 ~@3]
  [~ c4 a#3 a#3@3 a#3 ~@9, g4 ~@7]
  ~@43
>`).s("gm_overdriven_guitar").gain(0.26)

// chords · overdriven guitar · "OVERDRIVE" · soft notes · A#5 F Gm
const overdriven_guitar_soft = note(`<
  ~@45
  [[f3,a#3]@7 ~ e3@7 ~]
  [[f3,a3]@15 ~]
  [~@2 g4 ~@13]
  ~@2
  [~@14 [a#3,d4,g4] ~]
  ~@43
>`).s("gm_overdriven_guitar").gain(0.15)

// other · oboe
const oboe = note("<~@5 A B C D ~@61 E F G B ~@4 E F G B ~@4 E F G B ~@4>".pickRestart({
  A: "f#5@8 g5@4 d5@3 e5", B: "f#5@15 ~", C: "e5@2 d5 e5", D: "d5@7 ~", E: "a4@7 ~ a5@6 g5@2", F: "f#5",
  G: "a#4@4 a5@3 g5",
})).s("gm_oboe").gain(0.5)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note("<~@16 A ~@7 A ~@16 A ~@13 A ~@8 B@2 ~@28>".pickRestart({
  A: "c4", B: "[~@7 c4@8 ~]/2",
})).s("gm_glockenspiel").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~ A@23 B A@15 C ~ A@3 D C A@7 C ~ A@7 C ~ A@3 D C A@24>".pickRestart({
  A: "x ~@4 x ~@2 x ~@7", B: "x ~@4 x ~@10", C: "x", D: "x!2",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~ A@23 B A@15 ~ C A@3 D@2 A@7 ~ C A@7 ~ C A@3 D@2 A@24>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@4 x", C: "~ x ~@2", D: "~@3 x",
})).gain(0.5)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@17 A B C D C@3 E F@7 G A B C D C@3 H I J K L M N O@6 C P Q A B C D C@3 H I J K L M R S J S J S J S J S J S J S J S J
  S J S J S J S J
>`.pickRestart({
  A: "~@2 x ~ x ~ x!3 ~ x ~ x!3 ~", B: "~ x!2 ~ x ~ x!2 ~ x!2 ~ x!2 ~@2", C: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2",
  D: "x ~ x ~ x ~ x ~ x ~ x ~@4 x", E: "x!4 ~@4", F: "x!5 ~@2 x", G: "x!5 ~@3", H: "~@2 x!2", I: "~@2 x!3 ~@7 x ~ x ~",
  J: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", K: "x ~ x!3 ~@3 x ~@3 x ~@3", L: "~@2 x!3 ~@7 x ~@3", M: "~@2 x!3 ~@5 x!3 ~@3",
  N: "~@2 x!3 ~@5 x!3 ~ x ~", O: "x ~ x!5 ~ x ~ x!3 ~ x ~", P: "~ x!3", Q: "~@2 x!3 ~@6 x ~@4",
  R: "~@2 x!3 ~@3 x!2 ~@2 x!2 ~@2", S: "x ~@3 x ~@2 x!2 ~ x!3 ~ x!2",
})).gain(0.15)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@19 A ~@5 B@7 C ~@2 A ~@22 A ~@11 D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~
>`.pickRestart({
  A: "~@15 x", B: "~@5 x!2 ~", C: "~@5 x ~@2", D: "~@2 x!2 ~@2 x ~@9",
})).gain(0.1)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@10 B@2 ~ A ~@8 A ~@30>".pickRestart({
  A: "~@3 x ~ x ~@2", B: "~@7 x",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@18 A@2 B A@3 C ~@7 D ~ A@2 B A@3 ~ E ~ F@2 G H ~@6 A ~ B ~ A@2 B A@3 ~ E ~ F@2 G F ~@24
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@2 x!2", D: "~@6 x!2", E: "~@3 x!2 ~@3", F: "~@3 x ~ x ~ x", G: "~@3 x ~@3 x",
  H: "~@3 x ~@4",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@40 [x ~@2 x ~@12] ~@13 [x ~@2 x ~@12] ~@8 [x ~@2 x ~@12] ~@30>").gain(0.5)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A@39 ~@2 A@3 ~@11 A@7 ~@2 A@3 ~@26>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(1.01)

// drums · triangle
const triangle = s("triangles:30").struct("<~@2 A ~@6 B ~@63 B ~@3 B ~@3 B ~@5 A ~@6>".pickRestart({
  A: "~ x", B: "x",
})).gain(4.32)

stack(
  epiano2, bass, bass_soft, electric_guitar_muted, string_ensemble_2, string_ensemble_2_2, string_ensemble_2_3,
  acoustic_guitar_nylon, overdriven_guitar, overdriven_guitar_soft, oboe, glockenspiel, kick, rim, low_tom, hihat,
// … 2 more lines

More by Randy Crawford