Strudelify

Just Out Of Reach (Of My Two Open Arms)

Patsy Cline

KeyB♭ majorTempo90 bpm
0:00/0:00
// Just Out Of Reach (Of My Two Open Arms) — Patsy Cline
// 90 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 55 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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 · acoustic bass
const bass = note(`<
  ~ A B A B C@2 D E@3 F G C D H I J F K L C@2 D E@3 F G C D H I J F K M C@2 D J@3 F G C N O I J P@2 ~ Q@2
>`.pickRestart({
  A: "bb2 g2", B: "c3@12 f2@5 ~ f2@2 g2@2 a2@2", C: "bb2 f2", D: "bb2@11 ~ bb2@12", E: "f2 c2", F: "f2@11 ~ f2@12",
  G: "bb2@12 f2@5 ~ f2@2 g2@2 a2@2", H: "eb2 bb2", I: "eb2@11 ~ eb2@6 e2@6", J: "f2 c3", K: "bb2@10 f2@2 g2@9 ~ g2@2",
  L: "c3@5 g2 f2@6", M: "c3@10 g2@2 f2@5 ~ f2@2 g2@2 a2@2", N: "bb2@5 ~ bb2@6 c3@6 d3@6", O: "eb3 bb2",
  P: "[f2@14 ~ f2@15 ~@18]/2", Q: "[~@2 bb1@5 ~]/2",
})).s("gm_acoustic_bass").gain(0.3)

// chords · piano
const piano = note(`<
  ~ A B A C D@3 E@4 D@3 F@2 G H A I D@3 E@4 D@2 J F@2 G H A I D@3 E@3 K D@2 L F@2 G M@2 ~@3
>`.pickRestart({
  A: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~", // Bb Gm
  B: "[g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // Cm C5 Cm F
  C: "[g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // Cm F
  D: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // Bb
  E: "[f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~", // F
  F: "[g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Eb
  G: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  H: "[a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~ [a3,c4,eb4] ~", // Adim
  I: "[g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~", // Cm F
  J: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [ab3,bb3,d4] ~ [ab3,bb3,d4] ~ [ab3,bb3,d4] ~ [ab3,bb3,d4] ~ [ab3,bb3,d4] ~ [ab3,bb3,d4] ~", // Bb Bb7
  K: "[f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4] ~", // F F7
  L: "[f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4] ~", // Bb7
  M: "[[a3,c4,eb4] ~@2 [a3,c4,eb4] ~ [a3,c4,eb4] ~@2 [a3,c4,eb4]@23 ~@17]/2", // Adim
})).s("gm_piano").gain(0.22).pan(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@35 A B ~@16 C@2>".pickRestart({
  A: "~@3 [f4,c5]@2 d5 [g4,bb4]@6", B: "~@3 [f4,d5]@2 [g4,eb5] [eb4,c5]@6",
  C: "[~@2 f5@5 ~, ~@5 [f4,a4]@16 ~@3, ~@11 d5@31 ~@6]/2", // F
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C B D@3 E@3 F D@2 G H I E J K B D@3 E@3 F D@2 L H M E J K B D@3 N E@2 F D O G H M P Q@2 ~@3
>`.pickRestart({
  A: "[bb3,d4]@5 ~ [bb3,d4]@4 f3@2 [bb3,d4]@5 ~ [g3,bb3,d4]@4 g3@2", // Bb Gm
  B: "[c4,eb4]@5 ~ [g3,c4,eb4]@4 g3@2 [c4,f4]@5 ~ [a3,c4,f4]@4 a3@2", // Cm F5 F
  C: "[bb3,d4]@5 ~ [f3,bb3,d4]@4 f3@2 [bb3,d4]@5 ~ [g3,bb3,d4]@4 g3 ~", // Bb Gm
  D: "[bb3,d4]@5 ~ [f3,bb3,d4]@4 f3@2 [bb3,d4]@5 ~ [f3,bb3,d4]@4 f3@2", // Bb
  E: "[c4,f4]@5 ~ [a3,c4,f4]@4 a3@2 [c4,f4]@5 ~ [a3,c4,f4]@4 a3@2", // F5 F F5 F
  F: "[c4,f4]@5 ~ [a3,c4,f4]@4 a3@2 [c4,eb4]@5 ~ [a3,c4,eb4]@4 a3@2", // F5 F Cm Adim
  G: "[ab3,bb3,d4]@5 ~ [f3,ab3,bb3,d4]@4 f3@2 [ab3,bb3,d4]@5 ~ [f3,ab3,bb3,d4]@4 f3@2", // Bb7
  H: "[bb3,eb4]@5 ~ [g3,bb3,eb4]@4 g3@2 [bb3,eb4]@5 ~ [g3,bb3,eb4]@4 g3@2", // Eb5 Eb Eb5 Eb
  I: "[bb3,eb4]@5 ~ [g3,bb3,eb4]@4 g3@2 [bb3,eb4]@4 ~@2 [ab3,b3,e4]@4 ab3@2", // Eb5 Eb Eb5 E
  J: "[c4,eb4]@5 ~ [a3,c4,eb4]@4 a3@2 [c4,eb4]@5 ~ [a3,c4,eb4]@4 a3@2", // Cm Adim Cm Adim
  K: "[bb3,d4]@5 ~ [f3,bb3,d4]@4 f3@2 [bb3,d4]@5 ~ [g3,bb3,d4]@4 g3@2", // Bb Gm
  L: "[bb3,d4]@5 ~ [f3,ab3,bb3,d4]@4 f3@2 [ab3,bb3,d4]@5 ~ [f3,ab3,bb3,d4]@4 f3@2", // Bb Bb7
  M: "[bb3,eb4]@5 ~ [g3,bb3,eb4]@4 g3@2 [bb3,eb4]@5 ~ [ab3,b3,e4]@4 ab3@2", // Eb5 Eb Eb5 E
  N: "[c4,f4]@5 ~ [c4,f4]@4 a3@2 [c4,f4]@5 ~ [a3,c4,f4]@4 a3@2, ~@2 a3 ~@5", // F5 F
  O: "[bb3,d4]@5 ~ [f3,bb3,d4]@4 f3@2 [bb3,d4]@5 ~ [f3,bb3,d4]@3 ~ f3@2", // Bb
  P: "[c4,f4]@5 ~ [a3,c4,f4]@4 a3@2 [c4,f4]@5 ~ [a3,c4,f4]@4 a3 ~", Q: "[[a3,c4,f4]@13 ~@2 [a3,c4,f4]@15 ~@18]/2",
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.7)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A B C B C D A D E F G F A D ~@4 A B C D A D E F G F H D ~@4 A B C D A D E F G F H D ~@9
>`.pickRestart({
  A: "~@9 f2 g2 a2", B: "bb2@6 ~@3 g2 a2 bb2", C: "c3@6 ~@3 f2 g2 a2", D: "bb2 ~", E: "~@9 a2!2 bb2", F: "c3 ~",
  G: "~@8 f2 a2!2 bb2", H: "~@8 f2!2 g2 a2",
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A B A B C@3 D@4 E@2 F G H I@2 J@2 C@3 D@4 K@3 G L M@2 N@2 C@3 O@4 P@3 Q H R@2 ~@4
>`.pickRestart({
  A: "[f3,bb3,d4]@11 ~ [g3,bb3,d4]@11 ~", B: "[g3,c4,eb4]@11 ~ [f3,a3,c4]@11 ~", C: "[[f3,bb3,d4]@71 ~]/3",
  D: "[~@72 eb4@23 ~, [f3,a3,c4]@95 ~]/4", E: "[f3,bb3,d4]@23 ~", F: "[f3,ab3,bb3,d4]@23 ~", G: "[g3,bb3,eb4]@23 ~",
  H: "[g3,bb3,eb4]@17 ~ [ab3,b3,e4]@5 ~", I: "[f4@23 ~ eb4@23 ~, [a3,c4]@47 ~]/2",
  J: "[~@24 eb4@12 [f3,a3]@11 ~, [bb3,d4]@24 c4@23 ~, ~ g3@2 ~]/2", K: "[f3@48 ab3@23 ~, [bb3,d4]@71 ~]/3",
  L: "[g3,bb3,eb4]@18 [ab3,b3,e4]@5 ~", M: "[~@24 eb4@23 ~, [f3,a3,c4]@47 ~]/2",
  N: "[~@24 [c4,eb4]@11 ~ [f3,a3,c4,f4]@11 ~, [bb3,d4] ~, ~@12 g3@23 ~@13]/2", O: "[f4@72 eb4@23 ~, [a3,c4]@95 ~]/4",
  P: "[f3@48 [f4,ab4]@23 ~, [bb3,d4]@71 ~]/3", Q: "[g3,bb3,eb4,g4]@23 ~", R: "[[f3,a3,c4,f4]@13 ~@3]/2",
})).s("gm_string_ensemble_2").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!49 x ~@4>").gain(0.36)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!49 ~@5>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~@2 x ~ x!2 ~@2 x ~ x]!49 x ~@4>").gain(0.24)

stack(
  bass, piano, acoustic_guitar_nylon, acoustic_guitar_steel, acoustic_guitar_steel_2, string_ensemble_2, kick, snare,
  hihat
)

More by Patsy Cline