Strudelify
Open Arms cover art

1981 · Escape

Open Arms

Journey

KeyD majorTempo100 bpm
0:00/0:00
// Open Arms — Journey
// 100 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 24-step grid, each part at one level. 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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A@8 B@2 C@4 D@2 B@2 E@6 F@5 G@4 H@7 I@2 J@4 K@8 L@4 B@2 M@2 N@2 O@4 P@2 Q@4 R S@8 T@4 U@5 V@2 W@6 X@8 ~
>`.pickRestart({
  A: "[~@23 b3, d3@24 d5@4 d4@4 a4@16 e4@8 [a3,e5]@8 e4@4 c#5@4 [b2,g4,b4]@4 d3@4 g4@32 f#3@4 [f#4,d5]@4 [a2,e4,c#5]@4 c#3@4 [e3,c#4,a4]@4 a3@20 g3@20 g4@4 d4@15 ~, a4@2 a3 d4 a3 f#5@4 a3 d4@5 c#4@5 g3@2 b3@3 d3@9 f#4@5 b3 d4 g4 a4@6, ~@4 f#3@41 ~@3 [c#3,a4]@45 ~@3 b2@46 ~@2 [g2,b4]@47 ~, ~@8 e5@37 ~@7 e3@41 ~@3 [f#4,d5]@8 [f#3,e4,c#5]@4 b3@34 ~@2 d4@4 d3@43 ~]/8", // A5 Em D A F#m G D F#7
  B: "[~@2 a3, [d3,f#3], a3@2 a3 d4@3, ~ e4@5, ~@3 d4@2 f#4@7]/2", // D
  C: "[~@3 [b2,d4]@3 ~@5 f#3, c#3@24 g3@40 f#3@8 [a2,c#4]@4 e3@4 a3@15 ~, a3@8 [a3,e4]@38 ~@6 f#3@4 c#4@12 d4@27 ~, ~@4 e3@42 ~@2 [b2,f#4]@47 ~, ~@20 c#4@26 ~@2 d4@12 b3@35 ~]/4", // Bm A A5 B5
  D: "[~@5 b3, g2@32 d4@4 g3@11 ~, b3@12 b3@16 g4@19 ~, ~@4 d3@43 ~, ~@8 g3@8 d4@4 g4@4 a4@23 ~]/2",
  E: "[~@6 [b2,d4]@6 ~@23 e4, c#3@6 g3@10 f#3@2 [a2,c#4] e3 a3@2 f#3@5 b3 d4 g4 a4 g4 d4@2 b3@2, a3@8 [a3,e4]@38 ~@6 f#3@4 c#4@12 d4@27 ~@5 d3@42 ~@2, ~@4 e3@42 ~@2 [b2,f#4]@47 ~ g2@46 ~@2, ~@20 c#4@26 ~@2 d4@12 b3@35 ~ b3@8 g3@38 ~@2]/6", // Bm A A5 B5
  F: "[[e3,g3,b3,e4] [e3,g3,b3] ~@2 [e3,g3] ~ [b2,f#3]!3 [b2,f#3]!2 a3 [d3,f#3,a3]!2 [d3,f#3,a3,d4], ~@2 e4@4 e4@5 e4@3 e4@4 b3@4 ~@8, ~@16 [e3,g3,b3]@8 [e3,g3]@8 ~@8 [e3,g3]@47 ~ [c#3,c#4]@31 ~, ~@20 d4@26 ~@2 f#4@39 ~@33, ~@26 b3@20 ~@2 d4@16 d4@23 ~@9 d4@16 ~@8]/5", // Em B5 D Em C#
  G: "[[a2,e3]@2 [a2,e3]@2 c#4@2 b3 ~ g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2, c#4@16 [a2,e3]@31 ~@49, ~@8 d4@39 ~@49, ~@24 c#4@23 ~ [a3,c#4,e4]@46 ~@2, ~@6 g2 b3@11 [b3,d4,g4]@6]/4", // A5 A G
  H: "[[g2,b3,d4]@4 [g2,b3,d4]@4 ~@8 [a2,d3,d4,f#4]@4 f#4@2 ~@6 [a2,d3,d4,f#4]@4 [d4,f#4]@2 d4 ~@5 [c#3,f#3,c#4,f#4]@4 b4@4 ~@4 [c#3,f#3,c#4,f#4]@4 ~@8 [d3,g3,b3,d4]@4 ~@8 [d3,g3,b3]@4 ~@2 g4@2, ~@4 f#4@12 ~@6 f#4@2 a4@11 ~ a4@12 b4@8 f#4@4 g2@4 g4@16 [d3,g3,b3,f#4]@4, ~@8 [g2,b3,g4]@24 ~@4 f#2@8 [c#3,f#3,c#4,f#4]@6 a4@10 a4@23 ~, ~@2 d4@2 ~ [a2,d3,d4]@2 ~ [a2,d3]@6 [c#3,f#3,c#4]@3 [d3,g3,b3,d4] [g2,e4]@3, ~@24 [d2,a4]@24 d2@48 f#2@40 f#4@16 d4@15 ~]/7", // G D F#5 G Gmaj7 G F#5 D5 …
  I: "[~@2 [e3,g3,c4]@2 f#4@2 ~@2 [e3,g3]@2 ~ d4, a4@13 e4 d4@6 [e3,g3]@4, c3@16 c4@31 ~, ~@8 g4@39 ~, ~ e4 [e3,g3] [c3,f#4]@3]/2", // C Em Cdim
  J: "[~@8 [a2,d3,d4,f#4]@8 f#4@4 ~@12 [a2,d3,d4,f#4]@8 [d4,f#4]@4 d4 ~@11 [c#3,f#3,c#4,f#4]@8 b4@8 ~@8 [c#3,f#3,c#4,f#4]@8 [c#3,f#3,c#4,f#4]@8, [d2,a4]@3 d2@5 [c#3,f#3,c#4,f#4]@2 ~@2, ~@2 [a2,d3,d4]@2 ~ [a2,d3]@6 ~, ~@5 f#4@3 ~@4 f#2@6 [f#2,b4]@6, ~@24 a4@21 ~@3 a4@28 a4@20]/4", // D F#5 D5 F#5 D5 B5
  K: "[~ [d3,g3,b3,d4] ~@2 [d3,g3,b3] ~ a4 ~@16 b3, a4@20 [d3,b3]@14 f#4@4 d4@14 e5@8 d5@2 d4@2 a4@8 e4@4 [a3,e5]@4 e4@2 c#5@2 [b2,b4]@11 ~, g2@8 [d3,g3,b3,d4]@4 g2@16 a4@19 ~ a4@4 a3@2 d4@2 a3@2 f#5@8 a3@2 d4@10 c#4@6 g4@2 d3@9 ~, ~@8 g4@24 d4@8 [g3,f#4]@8 [c3,e3,g3]@48 d3@45 ~@3 [c#3,a4]@32 [g3,g4]@16, ~@16 f#4@8 e4@20 g4@28 e4@22 ~@6 f#3@41 ~@7 e3@41 ~@3]/8", // G A5 B G Gmaj7 C F#m G
  L: "[~@11 b3, b2@20 [f#4,d5]@4 [a2,e4,c#5]@4 c#3@4 [e3,c#4,a4]@4 a3@20 g3@20 g4@4 d4@15 ~, [f#4,d5]@2 f#3 b3@7 f#4@5 b3 d4 g4 a4@6, ~@4 d3@42 ~@2 [g2,b4]@47 ~, ~@8 [e4,c#5]@8 f#3@30 ~@2 d4@4 d3@43 ~]/4", // D A D G C#m
  M: "[~ [b2,g3,d4], c#3@23 ~, a3@4 [a3,e4]@19 ~, ~@2 e3@21 ~, ~@10 c#4@13 ~]/2", // G A5
  N: "[~@5 f#3, [b2,f#4]@28 e3@4 a3@15 ~, d4@16 f#3@8 [a2,c#4]@23 ~, ~@4 f#3@8 b3@35 ~, ~@8 c#4@12 d4@27 ~]/2", // B5 A
  O: "[~@5 a3, g2@47 ~@9 e4@40, b3@3 b3@4 g4 d4 g3 b3@8 d4@6, ~@4 d3@43 ~ [d3,f#3]@48, ~@4 g3@4 d4@2 g4@2 a4@11 ~ a3@6 d4@2 a3@2 f#4@14]/4", // D
  P: "[~ [b2,g3,d4], c#3, a3 [a3,e4]@5, ~ e3@11, ~@5 c#4@7]/2", // G A5
  Q: "[~@23 e4, [b2,f#4]@7 e3@5 b3 d3@6 g4 d4@2 b3@2, d4@8 f#3@4 [a2,c#4]@12 g2@23 ~, ~@2 f#3@4 b3@10 a3@12 g3@19 ~, ~@4 c#4@6 d4@10 f#3@10 b3@2 d4@2 g4@2 a4@11 ~]/4", // B5 A
  R: "[e3,g3,b3,e4]@2 [e3,g3,b3]@2 ~ d4, ~ e4@2, ~@2 [e3,g3,b3]", // Em
  S: "[~@2 [e3,g3]@2 ~@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 a3@2 [d3,f#3,a3]@2 [d3,f#3,a3]@2 ~@2 [a2,e3]@2 [a2,e3]@2 c#4@2 b3 ~ g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2, e4@10 e4@6 e4@8 b3@8 ~@4 d4@8 [d3,f#3,a3]@15 ~ g2@4 ~@32, [e3,g3]@8 ~@8 [e3,g3]@47 ~ c#3@48 [a2,e3]@48 ~@32, ~@2 b3@20 ~@2 f#4@39 ~@25 d4@16 d4@14 ~@6 b3@42 ~@2 [b3,d4,g4]@24, ~@24 d4@16 d4@23 ~ c#4@32 c#4@16 ~@8 c#4@24 [a3,c#4,e4]@48]/8", // Em B5 D A5 D Em A5 G …
  T: "[[g2,b3,d4]@4 [g2,b3,d4]@4 ~@8 [a2,d3,d4,f#4]@4 f#4@2 ~@6 [a2,d3,d4,f#4]@4 [d4,f#4]@2 d4 ~@5 [c#3,f#3,c#4,f#4]@4 [c#3,f#3,c#4,f#4,b4]@4, ~@4 f#4@7 ~ [d2,a4]@12 d2@24, ~ [g2,b3,g4]@3 [a2,d3]@2, ~@8 d4@8 ~@4 [a2,d3,d4]@4 a4@11 ~@13, ~@11 f#4@3 ~@4 [f#2,a4]@6]/4", // G D F#5 F#sus4 D5 G D5 F#m
  U: "[~@2 [c#3,f#3,c#4,f#4]@2 ~@4 [d3,g3,b3,d4]@2 ~@4 [d3,g3,b3]@2 f#4 ~@3 [e3,g3,c4]@2 f#4@2 ~@2 [e3,g3]@2 ~ d4, f#2@4 g4@3 d4 [d3,b3]@3 [e3,g3] [c3,f#4]@3, b4@8 f#4@4 g2@8 [d3,g3,b3,d4,f#4]@4 g2@16 g4@9 e4 d4@6 [e3,g3]@4, ~@4 a4@20 a4@40 g3@8 a4@47 ~, ~@16 [c#3,f#3,c#4]@32 e4@20 g4@4 c3@8 e4@8 c4@31 ~]/5", // F#5 G C Em G Em Cdim Gmaj7 …
  V: "[~@8 [a2,d3,d4,f#4]@8 f#4@4 ~@12 [a2,d3,d4,f#4]@8 d4@4 d4@3 ~, [d2,a4] [d2,a4], ~@2 [a2,d3,d4]@2 ~ [a2,d3,f#4], ~@5 f#4@3 ~@4]/2", // D D5 D
  W: "[~@2 [c#3,f#3,c#4,f#4]@2 b4@2 ~@2 [c#3,f#3,c#4,f#4]@2 ~@4 [d3,g3,b3,d4]@2 ~@4 [d3,g3,b3]@2 ~@2 a4@2 ~@5 d4@5, a4@14 a4@10 a4@20 [d3,b3]@14 f#4@13 ~, f#2@3 f#2@4 g4@3 d4 [g3,f#4] [c3,e3,g3]@6, ~@8 [c#3,f#3,c#4,f#4]@8 ~@4 [c#3,f#3,c#4]@12 [d3,g3,b3,d4]@4 g2@16 a4@19 ~, ~@12 b4@8 f#4@4 g2@8 f#4@4 e4@10 g4@14 e4@11 ~]/6", // F#5 G Gmaj7 C F#5 G
  X: "[~@11 d2, [d3,a4]@6 [d4,d5] a3 a4@4 c3@5 c4 d5 a3 a4@4 ~ g3@3 d3 f#5 [c3,d5] f#3 [a3,c5] d4 [e4,a#4]@5 a4@9, ~@2 f#3@14 d3@4 d4@12 a3@2 f#5@10 c4@8 a3@2 b3@17 ~ [f#4,a4]@4 d4@2 f#4@2 d5@16, ~@8 e5@37 ~@3 a4@8 c4@4 f#3@34 ~@2 [b2,a4]@46 ~@2 d3@20 e5@28, ~@8 a3@4 d4@4 a3@4 f#5@25 ~@7 f#3@4 e5@38 ~@10 e5@38 ~@6 a3@18 ~@2 [f#4,f#5]@24]/8", // D5 D Csus2 Am Edim F#m B7 F#
})).s("gm_piano").gain(0.4)

// bass · fretless bass · "Bass"
const bass = note("<~@34 A B@2 C D E F G H I J K L M N@2 ~@34 A O P K Q M R S O T@2 U Q V W@7 Q X@2 ~>".pickRestart({
  A: "d2@7 a1", B: "[d2@19 a1@2 g1@2 f#1@23 ~@2]/2", C: "~ f#1@22 ~", D: "~ g1@17 ~@2 g1@2 ~@2", E: "g1@16 a1@3 b1@5",
  F: "c2@11 ~", G: "c2@4 a1 g1", H: "~ d2@20 ~ d2 ~", I: "d2@10 g#1 g1", J: "f#1@20 ~@2 f#1 ~", K: "f#1@7 ~ f#1@4",
  L: "g1@7 ~", M: "~ g1@15 a1@4 b1@4", N: "[c2@13 ~@3]/2", O: "d2", P: "f#1@7 d2", Q: "g1@23 ~", R: "~ c2@23", S: "c1",
  T: "[~ d2@19 e2@3 f#2@17 c#2@8]/2", U: "f#1", V: "~ d2@16 g1@7", W: "[c2@49 d2@47 c2@48 b1@24]/7", X: "[d2@5 ~]/2",
})).s("gm_fretless_bass").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@34 A ~ A ~ A B A ~ A ~ A ~ A ~ A ~@35 A ~ A ~ A B A ~ A ~ A ~ A ~ A ~@10>".pickRestart({
  A: "x", B: "~@5 x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@35 A ~ A ~ A ~ A ~ A ~ A ~ A ~@37 A ~ A ~ A ~ A ~ A ~ A ~ A ~@11>".pickRestart({
  A: "x",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@33 [~@4 x!2] ~@49 [~@2 x ~ x!2] ~@25>").gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct("<~@33 [~ x!2 ~@3] ~@49 [~ x ~@4] ~@7 [~@4 x!2] ~@17>").gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<~@33 x ~@7 [~@4 x!2] ~@41 x ~@25>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@34 A ~@7 A ~@5 A ~@35 A ~@7 A ~@5 A ~@10>".pickRestart({
  A: "x",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@34 A@7 B A@6 C ~@35 A@7 B A@6 C ~@10>".pickRestart({
  A: "x!3", B: "x!2 ~", C: "x",
})).gain(0.4)

stack(piano, bass, kick, snare, low_tom, mid_tom, high_tom, crash, ride)

More by Journey