Strudelify

Any Way You Want It

Journey

KeyG majorTempo137 bpm
0:00/0:00
// Any Way You Want It — Journey
// 137 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(137/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 · "Track1 E.Piano2"
const epiano2 = note("<A B C D@3 ~@15 E@8 A ~@15 E@8 F@56 G@5 ~>".pickRestart({
  A: "~@7 [g4,b4,d5]", B: "~@6 [f#4,a4,d5]!2", C: "~@7 [g4,b4,e5]",
  D: "[~@14 [g4,c5,e5]@15 ~ [g4,c5,e5]@15 ~ [g4,b4,d5]@2]/3", // C G
  E: "[~@10 a4 b4 ~@2 [g4,b4,d5]@15 ~ [f#4,a4,d5]@15 ~ [g4,b4,e5]@15 ~ [g4,c5,e5]@15 ~ [g4,b4,d5]@15 ~ [f#4,a4,d5]@15 ~ [g4,b4,e5]@15 ~ [g4,c5,e5]@2, ~@5 g4@2 ~@57]/8", // G D Em C G D Em C
  F: "[~@14 [g4,b4,d5]@15 ~ [f#4,a4,d5]@15 ~ [g4,b4,e5]@15 ~ [g4,c5,e5]@15 ~ [g4,b4,d5]@15 ~ [f#4,a4,d5]@15 ~ [g4,b4,e5]@15 ~ [g4,c5,e5]@2]/8", // G D Em C G D Em C
  G: "[~@14 [g4,b4,d5]@15 ~ [f#4,a4,d5]@15 ~ [g4,b4,e5]@15 ~ [g4,c5,e5]@15 ~ [g4,b4,d5]@2]/5", // G D Em C G
})).s("gm_epiano2").gain(0.2)

// other · tremolo strings · "Track2 Tremolo Str."
const tremolo_strings = note("<~@100 A@5 B@6 ~@4>".pickRestart({
  A: "[~@14 b5@4 a5@4 b5@4 a5@49 ~@3 b5@2]/5", B: "[~@2 c6@4 b5@4 a5@4 b5@45 ~@3 b5@4 a5@4 a5@4 g5@22]/6",
})).s("gm_tremolo_strings").gain(0.55)

// bass · electric bass finger · "Track3 Fingered Bs"
const bass = note(`<
  A B C D@3 E F G@2 E F G@2 E F G@2 E F H@8 I@2 E F G@2 E F G@2 E F G@2 E F H@8 J@2 K L@3 K M@3 E F N@2 E F O@2 K P Q@2
  K R@3 K P S@2 K R@3 K P Q@2 K T@8 U@8 V@7 ~
>`.pickRestart({
  A: "~@7 g1", B: "~@6 f#1!2", C: "~@7 e1", D: "[~@7 c2@2 b1 c2 b1 c2 b1 g1 c2@2 d2 e2 d2 c2 b1 a1 g1]/3",
  E: "~ g1!4 f#1!3", F: "~ f#1!4 e1!3", G: "[~ e1!6 c2@2 b1 c2 b1 c2 b1 g1!2]/2",
  H: "[~ e1!2 f#1 g1 a1 b1 c2@2 d2 e2 f#2 g2 a2 b2 g2@2 g1!5 f#1 f#1@2 f#1!5 e1 e1@2 e1!5 g1 c2@2 b1 c2 b1 c2 b1 g1 g1@2 g1!5 f#1 f#1@2 f#1!5 e1!2]/8",
  I: "[~ e1 f#1 g1!2 a1 b1 c2@2 d2 e2 d2 c2 b1 a1 g1]/2", J: "[~ e1 f#1 g1!2 a1 b1 c2@2 c2!4 b1 g1!2]/2",
  K: "~ g1 ~ g1!4 f#1", L: "[~ f#1 ~ f#1!4 e1@2 e1 ~ e1!4 c2@2 b1 c2 b1 c2 b1 a1 g1]/3",
  M: "[~ f#1 ~ f#1!4 e1@2 f#1!2 g1!2 a1 b1 c2@2 d2 e2 f#2 g2 a2 b2 g2]/3", N: "[~ e1!6 c2@2 c2@2 c2@2 g1@2 g1]/2",
  O: "[~ e1!2 f#1 g1 a1 b1 c2@2 c2@2 c2@2 g1@2 g1]/2", P: "~ f#1 ~ f#1!4 e1",
  Q: "[~ e1 ~ e1!4 c2@2 b1 c2 b1 c2 b1 g1!2]/2",
  R: "[~@2 f#1@2 ~@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@4 f#1@2 f#1@2 g1@4 a1@2 b1@2 c2@7 ~ c2@4 b1@2 g1@2 g1@2]/3",
  S: "[~ e1 ~ e1!2 f#1 g1 c2@2 b1 c2 b1 c2 b1 g1!2]/2",
  T: "[~ f#1 ~ f#1!4 e1@2 f#1@2 g1@2 a1 b1 c2@6 b1 g1 g1@2 g1!4 ~ g1 f#1@2 f#1!6 e1@2 f#1!2 g1!2 a1 b1 c2@2 b1 c2 b1 c2 b1 g1 g1@2 g1!5 f#1!2]/8",
  U: "[~@2 f#1@2 ~@2 f#1@2 f#1@2 f#1@2 e1@2 e1@4 f#1@4 g1@4 a1@2 b1@2 c2@12 b1@2 g1@2 g1@4 g1@2 g1@2 g1@2 g1@2 g1@2 f#1@2 f#1@4 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@2 e1@4 f#1@2 f#1@2 g1@2 g1@2 a1@2 b1@2 c2@7 ~ c2@4 b1@2 g1@2 g1@4 g1@2 g1@2 g1@2 g1@2 g1@2 f#1@2 f#1@2]/8",
  V: "[~@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@2 e1@4 f#1@2 f#1@2 g1@2 g1@2 a1@2 b1@2 c2@7 ~ c2@4 b1@2 g1@2 g1@4 g1@2 g1@2 g1@2 g1@2 g1@2 f#1@2 f#1@4 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 e1@2 e1@4 f#1@2 f#1@2 g1@2 g1@2 a1@2 b1@2 c2@7 ~ c2@4 b1@2 g1@2 g1@2]/7",
})).s("gm_electric_bass_finger").gain(0.27)

// other · music box · "Track4 Music Box"
const music_box = note("<A@4 ~@17 A@8 ~@16 A@8 ~@24 A@36 B ~>".pickRestart({
  A: "[~@7 d5@2 d5!3 d5@2 d5 d5@2 d5!4 e5 d5 d5@2 d5!3 e5 d5!2 ~]/4", B: "~@7 d5",
})).s("gm_music_box").gain(0.2).pan(0.2)

// chords · distortion guitar · "Track6 Distortion Gt"
const distortion_guitar = note(`<
  A B C D@3 B E F@2 B E F@2 B E F@2 B E G@5 H@5 B E F@2 B E F@2 B E F@2 B E G@5 I@4 J@3 K L M N@3 B E O P B E Q R@2 S@2
  T@2 U@4 V@4 W@3 X@2 Y Z@3 AA AB@3 AC@2 AD@3 AE@4 AF@8 AG ~
>`.pickRestart({
  A: "~@7 [g2,b2,d3,g3,d4,f#4]", B: "~@6 [f#2,d3]!2", C: "~@7 [e2,b2]",
  D: "[~@7 c3@2 b2 c3 b2 c3 b2 g2 c3@2 d3 e3 d3 c3 b2 a2 [g2,b2,d3,g3,d4,f#4]]/3", E: "~@6 [e2,b2]!2",
  F: "[~@7 c3@2 b2 c3 b2 c3 b2 g2 [g2,b2,d3,g3,d4,g4]]/2", // G
  G: "[~@10 [e2,b2]@2 a2@2 c3@4 b2@2 c3@2 b2@2 c3@2 b2@2 g2@2 [g2,b2,d3,g3,d4,g4]@15 ~ [f#2,d3,a3,d4,f#4]@15 ~ [e2,b2,d3,g3,d4,e4]@15 ~ c3@2]/5", // E5 G D Em7
  H: "[~@2 b2@2 c3@2 b2@2 c3@2 b2@2 g2@2 [g2,b2,d3,g3,d4,g4]@15 ~ [f#2,d3,a3,d4,f#4]@15 ~ [e2,b2,d3,g3,d4,e4]@15 ~ c3@4 d3@2 e3@2 d3@2 c3@2 b2@2 a2@2 [g2,b2,d3,g3,d4,g4]@2]/5", // G D Em7 G
  I: "[~@2 b2@2 c3@2 b2@2 c3@2 b2@2 g2@2 [g2,b2,d3,g3,d4,g4]@15 ~ [f#2,d3,a3,d4,f#4]@15 ~ [e2,b2,d3,g3,d4,e4]@14 d5!2 [d5,g5]!2]/4", // G D Em7 G5
  J: "[d5 [d5,g5]!11 b5@2 b5@6 a5@2 b5@2 b5@4 b5@2 a5@6 g5@2 a5@2 b5@6 a5 g5]/3", // G5
  K: "a5 g5!2 e5 d5 e5 [b4,d5] e5 d5 b4 [g4,a4] a4 g4 e4!2 g4", L: "b4@2 b4 [b4,d5] a4 b4 e5@6 d5@2 c5@2",
  M: "b4@2 c5@2 d5@2 c5 b4 c5@2 b4@2 a4@2 c5@2",
  N: "[b4@3 a4 c5 [a4,b4] b4 [g4,a4] a4 [e4,g4] g4 e4 d4 b3 a3 g3@5 b3@2 d4@2 e4@2 d4@2 b3 a3 g3@14 g2@2 [g2,b2,d3,g3,d4,g4]@2]/3", // Asus2 Gsus2 Em G
  O: "~@7 c3", P: "~ [d4,g4] ~ [c3,g3,d4] ~ [g2,g3,d4]!3", Q: "~@7 [c3,g3,d4,g4]",
  R: "[~ [c3,g3,d4,g4] ~ [c3,g3,d4,g4] ~ g3 d4 d4@3 c4 b3 a3@2 g3 a3]/2", // Csus2
  S: "[b3@2 c4@2 b3@2 a3@4 g3@2 a3@2 b3@4 a3@4 a3 b3@3 a3@2 a3 [a3,b3] g3@2]/2", // Asus2
  T: "[g3@11 ~ g3@2 d4@6 c4@2 b3@2 a3@4 g3@2 a3@2]/2",
  U: "[b3@2 c4@2 b3@2 a3@4 g3@2 a3@2 b3@4 a3@4 a3 b3@3 a3@2 a3 [a3,b3] g3@13 ~ g3@2 d4@6 c4@2 b3@2 a3@4 g3@2 a3@2]/4", // Asus2
  V: "[b3@2 c4@2 b3@2 a3@4 g3@2 a3@2 b3@4 a3@4 a3 b3@3 a3@2 a3 [a3,b3] g3@13 ~@3 d4@6 c4@2 b3@2 a3@4 g3@2 a3@2]/4", // Asus2
  W: "[b3@2 c4@2 b3@2 a3@4 g3@2 a3@2 b3@4 a3@4 a3 b3@3 a3@2 a3 [a3,b3] g3@9 ~ a3 [a3,b3] g3 a3 g3!2 a3 [a3,b3]]/3", // Asus2
  X: "[g3 a3 [a3,b3] g3 a3 b3 [g3,a3] a3 b3 a3 [g3,a3] b3 d4@8 e4@2 g4@2 g4@4 b4@3 c5]/2", // Asus2 Gsus2
  Y: "b4@2 d5 b4 d5 a4 b4 d5 b4@2 d5 b4@2 d5 b4@2",
  Z: "[~ b4@2 d5 b4 a4 g4@2 e5@4 d5@2 d5@6 b4@2 d5@2 b4@2 d5 [d5,e5] b4 [d5,e5] g5@6 e5@2 g5@2 g5@4 e5 g5 ~ e5]/3", // Dsus2
  AA: "g5@4 e5 f#5@2 e5 g5@4 e5 g5 e5@2",
  AB: "[a5@4 ~@2 b5@6 ~@2 c6@6 ~@2 d6@7 ~ e6@4 e6@2 e6@2 e6@2 e6@2 e6@2 e6@2 e6@2]/3", AC: "e6!8",
  AD: "[e6@4 d6@2 c6@2 b5@2 c6@2 d6@2 d6@6 c6@2 b5@2 a5@2 b5@2 c6@2 c6@4 a5 [a5,b5] g5 a5!3 b5 [g5,a5] a5 [e5,g5] g5 e5 g5 [e5,g5]]/3", // Asus2 Gsus2 Em
  AE: "[e5!2 g5 [d5,e5] e5 g5 b5@8 [g2,b2,d3,g3,d4,g4]@15 ~ [f#2,d3,a3,d4,f#4]@15 ~ [e2,b2,d3,g3,d4,e4]@15 ~ [c3,g3,d4,f#4]@2]/4", // Dsus2 G D Em7 Csus2
  AF: "[~@2 [c3,g3,d4,f#4]@2 ~@2 [c3,g3,d4,f#4]@2 ~@2 g2@4 [g2,b2,d3,g3,d4,g4]@15 ~ [f#2,d3,a3,d4,f#4]@15 ~ [e2,b2,d3,g3,d4,e4]@15 ~ [c3,g3,d4,f#4]@2]/4", // Csus2 G D Em7 Csus2
  AG: "~ [c3,g3,d4,f#4] ~ [c3,g3,d4,f#4] ~ g2@2 [g2,b2,d3,g3,d4,g4]", // Csus2 G
})).s("gm_distortion_guitar").gain(0.18)

// other · marimba · "Track9 Marimba"
const marimba = note("<A@4 ~@17 A@8 ~@16 A@8 ~@24 A@36 B ~>".pickRestart({
  A: "[~@7 b4@2 b4!3 b4@2 b4 a4@2 a4!3 a4@2 a4 b4@2 b4!3 c5 b4!2 ~]/4", B: "~@7 b4",
})).s("gm_marimba").gain(0.29).pan(0.8)

// other · electric guitar muted · "Track11 Muted Gt."
const electric_guitar_muted = note(`<
  ~@6 A B C ~ A B C ~ A B C ~ A B D ~@9 A B C ~ A B C ~ A B C ~ A B D ~@17 A B C ~ A B C ~@46
>`.pickRestart({
  A: "~ g2!4 f#2 ~@2", B: "~ f#2!4 e2 ~@2", C: "~ e2!6 ~", D: "~ e2!4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.23)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@114>").gain(0.3)

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

// drums · snare
const snare = s("sd").struct("<A B A@2 ~ C D@7 E D@15 E D@23 F D@19 G D@10 H D@12 I D@16 ~>".pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "~ x!2 ~@5", D: "~ x ~ x", E: "~@2 x ~@2 x!2 ~", F: "~@4 x ~@4 x!5 ~@2", G: "~ x ~@2",
  H: "~@4 x ~@5 x!4 ~@2", I: "~@4 x ~@3 x!4 ~@4",
})).gain(0.37)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 ~@2 B@3 C B@3 D C B@2 C B@3 C ~@8 B@3 C B@3 C@2 B@2 C@2 B@2 C ~@19 E ~@35 E ~@13
>`.pickRestart({
  A: "x", B: "x!7 ~", C: "~ x!6 ~", D: "~ x!3 ~@4", E: "x!4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A ~@2 A@3 ~ A@3 ~@2 A@2 ~ A@3 ~@9 A@3 ~ A@3 ~@2 A@2 ~@2 A@2 ~@20 A C ~@35 C ~@13
>`.pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "~ x ~ x ~ x ~@2",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 [~@5 x ~ x] ~@110>").gain(0.33)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A@2 ~@3 A ~@3 A B ~@2 A ~@3 A@2 ~@2 A@2 ~@2 A ~@3 A ~@3 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@6 ~@2 A@6 ~@3 A ~@2 A C ~@2 A D
  ~@2 A C A ~ A E ~@2 A C ~@2 A@2 ~@2 A C ~@2 A F G@2 H A I@3 J I@3 J I@3 J ~
>`.pickRestart({
  A: "~@7 x", B: "~@4 x ~@2 x", C: "~ x ~ x ~ x ~ x", D: "~@5 x!3", E: "~@5 x ~ x", F: "~@6 x!2", G: "~ x ~@2",
  H: "~@2 x ~@4 x", I: "~ x ~ x", J: "~@2 x ~@3 x!2",
})).gain(0.33)

// drums · high tom
const high_tom = s("ht").struct("<~@4 [~ x] [~@11 x!2 ~@3] ~@109>").gain(0.33)

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

stack(
  epiano2, tremolo_strings, bass, music_box, distortion_guitar, marimba, electric_guitar_muted, rim, kick, snare, hihat,
  open_hat, mid_tom, crash, high_tom, ride
)

More by Journey