Strudelify

I'll Be Alright Without You

Journey

KeyD majorTempo95 bpm
0:00/0:00
// I'll Be Alright Without You — Journey
// 95 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 101 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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 · electric bass finger · "Track 2"
const bass = note(`<
  A B@8 C@8 D@8 E@4 F@8 G H I J K L M N K O I P Q R O S T U V W X@3 Y Z AA AB AC AD AE U V AF AE U V W AG AH@2 AI AJ AK
  AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AV AZ BA BB BC@3
>`.pickRestart({
  A: "~@27 f#1@4 ~",
  B: "[~@3 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 f#1@4 a1@4 b1@4 ~@4 b1@4 a1@4 f#1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 e1@4 f#1@3 ~ g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 g1@4 g#1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 ~@4 f#1@5]/8",
  C: "[~@3 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 g1@4 g#1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 e1@4 f#1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 g1@4 g#1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1]/8",
  D: "[~@3 e1@4 e1@4 e1@4 e1@4 e1@4 f#1@4 g1@4 a1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 a1@4 g1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 d1@3 e1@4 e1@4 e1@4 e1@4 e1@4 f#1@4 g1@4 a1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 f#1@4 e1@2]/8",
  E: "[~ d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 d1@2 b1@2 d2@2 f#2@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 ~@2 a1 ~ a1@3]/4",
  F: "[~@2 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 b1@4 d2@4 f#2@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 a1@4 a1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 g1@4 g#1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 ~@4 f#1@5 ~]/8",
  G: "~ g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 g1@3", H: "~ g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 g1@4 g#1@3",
  I: "~ a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 a1@3", J: "~ a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 e1@4 f#1@3",
  K: "~ e1@4 e1@4 e1@4 e1@4 e1@4 f#1@4 g1@4 a1@3", L: "~ b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 a1@4 g1@3",
  M: "~ f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@4 f#1@3", N: "~ g1@4 g1@4 g1@4 g1@4 g1@4 g1@4 f#1@4 d1@3",
  O: "~ b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@4 b1@3", P: "~ a1@4 a1@4 a1@4 a1@4 a1@4 a1@4 f#1@4 e1@3",
  Q: "~ d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@3", R: "~ d1@4 d1@4 d1@4 d1@4 d1@4 b1@4 d2@4 f#2@3",
  S: "~ b1@4 b1@4 b1@4 b1@4 ~@4 a1@2 ~@2 a1@7", T: "~ d1@3 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4 d1@4", U: "d1!5 b1 d2 f#2",
  V: "b1!8", W: "b1!6 a1!2",
  X: "[f#1@2 ~@2 f#1@2 ~@2 f#1@2 ~@2 f#1 ~@3 f#1@2 ~@2 f#1 ~@3 f#1@2 ~@2 g1@7 ~ g1 ~@3 g1@2 ~@2 g1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 b1@7 ~ b1 ~@3 b1@2 ~@2 b1 ~@3 b1@2 ~@2 b1 ~@3 b1@2 ~@2 a1@4]/3",
  Y: "~@2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ g1 ~", Z: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ g1@2",
  AA: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ b1@2", AB: "~@4 b1@2 ~@2 b1@2 ~@2 b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 a1@4",
  AC: "~@4 a1@2 ~@2 a1@2 ~@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1 ~@3",
  AD: "a1@2 ~@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1 ~@3 a1 ~ g1@2 f#1@2 e1@2", AE: "d1!8",
  AF: "b1@4 b1@4 b1@4 b1@4 ~@4 a1@2 ~@2 a1@7 ~",
  AG: "g1@3 ~ g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 ~@2",
  AH: "[g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@4 d2@4 g1@4 a1@4 e1@7 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2]/2",
  AI: "e1@2 ~@2 e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 f#1@3 ~ g1@4", AJ: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 e1@2 g1@2",
  AK: "f#1@4 g1@4 a1@2 ~@2 b1@6 ~@2 b1@4 ~ g1@3 b1@3 ~",
  AL: "e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  AM: "e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@3 ~ f#1@3 ~",
  AN: "g1@3 ~ g1@2 ~@2 g1@3 ~ g1@2 ~@2 g1@3 ~ g1@2 ~@2 g1@3 ~ f#1@3 ~", AO: "e1@2 d2@2 c#2@2 b1@3 a1 g1@2 f#1@2 d1@2",
  AP: "e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2",
  AQ: "e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1 ~@3 e1@3 ~ f#1@3 ~",
  AR: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ e1@4",
  AS: "f#1@5 ~ g1@2 a1@4 b1@6 a1@2 g1@4 f#1@4 d1@4",
  AT: "e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  AU: "g2!2 f#2!2 e2!2 d2 a1 b1@2 a1@2 g1@2 f#1@2", AV: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ e1 ~",
  AW: "f#1@6 g1@2 a1@4 b1@5 ~@3 d2@2 b1@2 a1@2 b1@2 a1@2 g1@2",
  AX: "e1@3 ~ e1 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e2@3 ~ e1@3 ~ e2@2 ~@2",
  AY: "e2@2 d2@2 b1@2 d2@2 b1@2 a1@2 b1@2 a1@2 g1@2 a1@2 g1@2 f#1@2 g1@2 f#1@2 e1@3 ~",
  AZ: "f#1@3 g1 a1@2 b1@4 a1@2 g1@2 f#1@2", BA: "e1@2 ~@2 e1 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1 ~@3 e1@2 ~@2 e1 ~@3",
  BB: "c3 b2 a2 g2 f#2 e2 d2 b1 g2 f#2 e2 d2 c2 b1 a1 f#1",
  BC: "[~@41 [f2,g#2]@8 ~ a2@45 ~, d1@45 ~@4 f#2@46 ~, ~@23 d2@72 ~]/3", // Fm
})).s("gm_electric_bass_finger").gain(0.44)

// chords · epiano1 · "Track 3"
const epiano1 = note(`<
  A B@4 ~@2 C D E@4 F@2 C ~ G@3 H I@2 J K L@2 M N O@2 P Q ~@2 R S T@4 U V W V U V X Y Z@2 AA AB AC@2 AD AE AF@4 AG@4 ~
  AH@2 AI AJ AK@2 AL AM ~@27
>`.pickRestart({
  A: "~@27 [c#4,e4,a4]@4 ~", // A
  B: "[~@3 [b3,d4,f#4]@32 [a3,c#4,e4]@12 [b3,d4,f#4]@16 ~@16 f#5@44 ~@5, ~@63 g4@60 ~@5, ~@63 [b3,d4,e4]@52 ~@13, ~@71 d5@52 ~@5]/4", // Bm A Bm E7
  C: "~@3 [a3,c#4]@29", D: "~@19 [c#4,e4,a4]@4 ~@4 [a3,d4,f#4]@4 ~",
  E: "[~@3 [a3,b3,d4]@41 ~@19 d5@4 [a3,c#4]@40 ~@21, ~@51 f#5@49 ~@28, ~@67 c#5@33 ~@28]/4", // Bm7 A
  F: "[~@3 [a3,d4,a4]@48 ~@13]/2", G: "[~@3 [b3,e4,g4]@32 [b3,d4,f#4]@32 [a3,c#4,f#4]@29]/3", H: "~@3 [b3,d4,f#4]@29",
  I: "[~@3 g4@31 ~ b3@29, ~ [b3,e4]@16 [d4,f#4]@15]/2", J: "~ [a3,c#4,e4]@15", K: "~ d4@7 ~ c#4@4 d4@3, ~ [a3,e4]@15",
  L: "[~@2 [a3,d4,e4]@7 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@10 ~@2 [a3,d4,e4] ~@3 [a3,d4,e4]@11 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4]@6]/2", // Asus4 D Asus4 D Asus4
  M: "~ [b3,d4,f#4]@15", N: "~@2 [b3,d4,f#4]@17 ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~",
  O: "[~@2 [a3,d4,e4]@6 ~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4] ~@3 [a3,d4,e4]@11 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4]@6]/2", // Asus4 D Asus4 D Asus4
  P: "~@2 [b3,d4,f#4]@29 ~", Q: "~ [b3,d4,f#4]@12 ~@3", R: "~ [a3,c#4]@15",
  S: "~@18 [c#4,e4,a4]@4 ~@3 [a3,d4,f#4]@4 ~@3", // A D
  T: "[~ [a3,b3,d4]@41 ~@19 d5@4 [a3,c#4]@40 ~@23, ~@49 f#5@49 ~@30, ~@65 c#5@33 ~@30]/4", U: "~ [b3,e4,g4]@31",
  V: "~ [b3,d4,f#4]@31", W: "~ a3@15, ~ [c#4,f#4]@31", X: "~ [a3,c#4,e4]@30 ~",
  Y: "~ d4@14 ~ c#4@8 ~ d4@7, ~ [a3,e4]@31", // A5
  Z: "[~ [a3,d4,e4]@7 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@10 ~@2 [a3,d4,e4] ~@3 [a3,d4,e4]@11 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4]@6 ~]/2", // Asus4 D Asus4 D Asus4
  AA: "~ [b3,d4,f#4]@30 ~", AB: "~ [b3,d4,f#4]@17 ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~@2",
  AC: "[~ [a3,d4,e4]@6 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4] ~@4 [a3,d4,e4]@11 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [d4,e4]@6 ~, ~@28 a3@3 ~]/2", // Asus4 D Asus4 D Dsus2
  AD: "~ [b3,d4,f#4]@29 ~@2", AE: "~ d4@24 ~@7, [b3,f#4]@3 ~",
  AF: "[[f#3,a3,c#4]@6 ~ [g3,b3,d4]@7 ~ [f#3,b3,d4]@7 ~ [e3,a3,c#4]@7 ~@2]/4", // F#m G Bm A
  AG: "[[f#3,a3,c#4]@25 ~@3 [g3,b3,d4]@30 ~@2 [f#3,b3,d4]@28 ~@4 [e3,a3,c#4]@32 ~@4]/4", // F#m G Bm A
  AH: "[[a3,d4,e4]@7 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@10 ~@2 [a3,d4,e4] ~@3 [a3,d4,e4]@11 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4]@6 ~@2]/2", // Asus4 D Asus4 D Asus4
  AI: "[b3,d4,f#4]@15 ~", AJ: "[b3,d4,f#4]@17 ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]@5 ~@3",
  AK: "[[a3,d4,e4]@6 ~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4] ~@3 [a3,d4,e4]@11 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@11 ~ [a3,d4,e4]@6 ~@2]/2", // Asus4 D Asus4 D Asus4
  AL: "[b3,d4,f#4]@29 ~@3", AM: "[b3,d4,f#4]@3 ~",
})).s("gm_epiano1").gain(0.29)

// other · electric guitar clean · "Track 4"
const electric_guitar_clean = note("<~@2 A@3 ~@4 B@2 ~@26 C@2 ~@62>".pickRestart({
  A: "[~@3 a4@12 d5@12 g4@20 b4@28 e4@3 ~@5 d4@13]/3", B: "[~@3 a4@48 ~@13, ~ d5@24 ~@7]/2", C: "[~ [a4,d5]@48 ~@15]/2",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · pad metallic · "Track 6"
const pad_metallic = note("<~@4 A@3 ~@94>".pickRestart({
  A: "[~@30 [g3,a3,d4]@47 ~@19]/3", // Gsus2
})).s("gm_pad_metallic").gain(0.1)

// chords · pad sweep · "Track 7"
const pad_sweep = note("<~@11 A@3 ~@87>".pickRestart({
  A: "[~@5 [b3,d4,f#4]@6 ~@5]/3", // Bm
})).s("gm_pad_sweep").gain(0.31)

// other · harpsichord · "Track 9"
const harpsichord = note("<~@57 A B C D A B C D@2 ~@35>".pickRestart({
  A: "~@2 d5 ~ c#5 d5 f#4 ~", B: "~@2 d5 ~ b4 c#5 a4 ~", C: "~@2 d5 ~ c#5 d5 b4 ~", D: "~@2 d5 ~ c#5 d5 a4 ~",
})).s("gm_harpsichord").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B C D@16 E@4 F@2 G H F@2 G H E@4 I@12 J@2 K L M N O P O Q@2 R O Q@3 R N@2 O P N@2 O P S@23 T U ~@2
>`.pickRestart({
  A: "~@3 x ~@15 x ~@3 x ~@8", B: "~@3 x ~@15 x ~@3 x ~@7 x", C: "~@3 x ~@15 x ~@7 x ~@4", D: "~@3 x ~@15 x ~@12",
  E: "~ x ~@7 x ~@6", F: "~ x ~@7 x ~ x ~@4", G: "~ x ~@7 x ~ x ~@3 x", H: "~ x ~@7 x ~@3 x ~@2", I: "~ x ~@15 x ~@14",
  J: "~ x ~@15 x ~@3 x ~@10", K: "~ x ~@15 x ~@3 x ~@7 x ~@2", L: "~ x ~@15 x ~@7 x ~@6", M: "~ x ~@14 x ~@3 x ~@11",
  N: "x ~@3 x!2 ~@2", O: "x ~@3 x!2 ~ x", P: "x ~ x!2", Q: "~ x ~@2 x!2 ~ x", R: "~ x ~@2 x ~@3", S: "x!2",
  T: "x!3 ~@5", U: "x",
})).gain(0.49)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ A@2 ~@22 B@2 ~@2 B@2 ~@18 C@2 ~@2 D@2 ~@11 D@2 ~@2 D@2 ~@25 E ~@3>".pickRestart({
  A: "~@31 x", B: "~@15 x", C: "~@29 x ~@2", D: "~@7 x", E: "~@3 x ~@4",
})).gain(0.29)

// drums · snare
const snare = s("sd").struct(`<
  A B@3 C B@16 D@3 E D@3 F D@3 F D@4 G@11 H G@3 I J@3 K L@3 M L@4 M J@3 N J@3 N J@23 O ~@3
>`.pickRestart({
  A: "~@27 x ~@4", B: "~@11 x ~@15 x ~@4", C: "~@11 x ~@7 x ~@7 x ~ x ~@2", D: "~@5 x ~@7 x ~@2", E: "~@5 x ~@5 x!4 ~",
  F: "~@5 x ~@3 x ~@3 x!2 ~", G: "~@9 x ~@15 x ~@6", H: "~@9 x ~@11 x ~ x ~ x ~ x ~@4", I: "~@9 x ~@7 x ~@7 x ~ x ~@4",
  J: "~ x ~ x", K: "~@8 x ~@7 x ~@7 x ~@2 x ~@4", L: "~@2 x ~@3 x!2", M: "~@4 x ~@5 x!2 ~@4",
  N: "~@4 x ~@3 x ~@3 x!2 ~@2", O: "x ~@3 x ~@3 x!4 ~@4",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~@19 B C ~@2 D ~@3 D ~@15 E ~@3 F ~@3 G ~@3 H ~@4 I ~@3 G ~@3 G ~@23 I ~@3
>`.pickRestart({
  A: "~@23 x ~@7 x", B: "~@15 x", C: "x", D: "~@11 x ~@3 x", E: "~@29 x ~ x", F: "~@21 x ~@7 x ~@2", G: "~@5 x ~ x",
  H: "~@12 x!3 ~", I: "~@12 x!4",
})).gain(0.49)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A ~@2 B A ~@2 B A ~@2 B A ~@2 C ~@12 D ~@2 E F ~@2 G F ~@2 H ~@29 I ~@2 J I ~@2 J I ~@2 J I ~@2 J I ~@2 J I ~@6
>`.pickRestart({
  A: "~@15 x ~@7 x ~@8", B: "~@7 x ~@7 x ~@7 x ~@8", C: "~@7 x ~@7 x ~@16", D: "~@7 x ~@3 x ~@4",
  E: "~@3 x ~@3 x ~@3 x ~@4", F: "~@13 x ~@7 x ~@10", G: "~@6 x ~@6 x ~@7 x ~@10", H: "~@5 x ~@7 x ~@18",
  I: "~@3 x ~ x ~@2", J: "~ x ~ x ~ x ~@2",
})).gain(0.19)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C B C ~@3 D ~@3 D ~@3 D ~@3 D E F@2 G H I H I H I H I ~@3 J ~@3 K ~@3 K L M@2 N O P O P Q R S R T U V@3 U V U W S
  R S R S R S R ~@3 X ~@3 X ~@3 X ~@3 X ~@3 X ~@3 Y ~@3
>`.pickRestart({
  A: "~@27 x ~@4", B: "~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@4", C: "~@3 x ~@3 x ~@3 x ~@7 x ~@7 x ~@3 x", D: "~@31 x",
  E: "~ x ~ x ~ x ~@3 x ~@3 x ~@2", F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", G: "~ x ~@3 x ~@5 x ~ x ~ x",
  H: "~ x ~@3 x ~ x ~ x ~@3 x ~@2", I: "~ x ~ x ~ x ~@3 x ~@3 x ~ x", J: "~@15 x", K: "~@29 x ~@2",
  L: "~ x ~@3 x ~@3 x ~@7 x ~@7 x ~@6", M: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  N: "~ x ~@7 x ~@11 x ~@3 x ~@3 x ~@2", O: "~ x ~@7 x ~@3 x ~@3 x ~@7 x ~@6",
  P: "~ x ~@3 x ~@3 x ~@7 x ~@7 x ~@3 x ~@2", Q: "~ x ~@6 x ~@3 x ~@3 x ~@7 x ~@7", R: "x!3 ~ x ~ x!2",
  S: "x ~ x!3 ~ x ~", T: "x ~ x ~ x!4", U: "x ~ x!6", V: "x!8", W: "x!5 ~@3", X: "~@7 x", Y: "x!2 ~@2",
})).gain(0.39)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct(`<
  ~ A B A B ~@15 C D ~@2 E F G F G F G F G ~@11 H I ~@2 J K L K L M N M N O P ~@3 P ~ P ~ M N M N M N M N ~@23 O ~@3
>`.pickRestart({
  A: "~@7 x ~@15 x ~@7 x", B: "~@15 x ~@7 x ~@8", C: "~@23 x ~ x ~ x ~@4", D: "~@7 x ~@3 x ~@3 x",
  E: "~@3 x ~@3 x ~ x ~@6", F: "~@3 x ~@7 x ~@3 x", G: "~@7 x ~@3 x ~@4", H: "~@21 x ~ x ~ x ~@6",
  I: "~@13 x ~@7 x ~@7 x ~@2", J: "~@5 x ~@7 x ~@3 x ~@14", K: "~@5 x ~@15 x ~@7 x ~@2", L: "~@13 x ~@7 x ~@10",
  M: "~ x ~@3 x ~ x", N: "~@3 x ~ x ~@2", O: "~ x ~ x ~@4", P: "~ x ~@6",
})).gain(0.19)

// drums · crash
const crash = s("cr").struct(`<
  A B ~@6 C D ~@3 B ~@3 B ~@3 D ~@2 D@2 ~@2 E D ~@3 F ~@2 G F ~@3 F ~@3 F ~@2 F ~@4 F ~@3 H ~@3 H ~@4 H ~@2 I H ~@3 H
  ~@2 J H K ~ J H ~@3 H L ~ J H ~@3 H ~@3 H ~@2
>`.pickRestart({
  A: "~@27 x ~@4", B: "~@3 x ~@28", C: "~@19 x ~@12", D: "~ x ~@14", E: "~@11 x ~ x ~@2", F: "~ x ~@30", G: "~@9 x ~@6",
  H: "x", I: "~@5 x!2 ~", J: "~ x", K: "~ x ~@6", L: "~@7 x",
})).gain(0.49)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@8 A ~@27 B ~@40 C ~@11 C ~@11>".pickRestart({
  A: "~@27 x ~@4", B: "~@13 x ~@2", C: "~@3 x",
})).gain(0.15)
// … 9 more lines

More by Journey