Strudelify

Hungry Eyes

Eric Carmen

KeyF majorTempo120 bpm
0:00/0:00
// Hungry Eyes — Carmen Eric
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): OVERDRIVE.
setcpm(120/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 · "FINGERDBAS"
const bass = note(`<
  ~ A@2 B C D C E C E C A@3 E F@5 G H I J K H I L M A M E N A M E O A P Q F@5 H@2 J R H@2 J O A M A M A O A M A O A N A
  N A O H@6 I M E M E M A S A M E M E M E M A M A M A M E M E M A M E M E M E M T ~
>`.pickRestart({
  A: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", B: "f1 ~ f1 ~@3 f1 ~ f1 ~ f1 ~ f1 ~ f1@2",
  C: "bb1 ~ bb1 ~ bb1 ~ bb1@2 c2 ~ c2 ~ c2 ~ c2@2", D: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 f1 ~ f1@2",
  E: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2", F: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  G: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2", H: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  I: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2", J: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  K: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ c2 ~ c2@2", L: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
  M: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2 ~", N: "bb1 ~ bb1 ~ bb1 ~ bb1@2 c2 ~ c2 ~ c2 ~ c2 ~",
  O: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2@2", P: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 c2@2 c2@2",
  Q: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1 ~", R: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 c2 ~ c2 ~",
  S: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~@3 c2 ~", T: "f1",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A@8 B@6 C@4 D@2 E@4 F G@2 H I@3 J K@2 L@2 M@2 N@6 O@4 P@3 H K@2 Q@2 R@2 K@2 S@2 T@2 U@2 V W X Y Z Y Z AA AB J AC@4
  AD@2 AC@2 AE@2 AD@2 AC@2 AD@4 K@2 AE@2 AF@2 AG@2 AH@2 V AI AJ@2 AK@2
>`.pickRestart({
  A: "[[a3,c4]@48 d4@8 ~@8 a3@15 ~ d4@8 ~@8 a3@15 ~ d4@8 c4@7 ~, f4@127 ~, ~@48 bb3@15 ~@17 bb3@15 ~@17 bb3@15 ~, ~@7 c4@3 ~ c4@3 ~@2]/8", // Am
  B: "[[a3,c4]@16 d4@8 ~@8 a3@63 ~, f4@95 ~, ~@16 bb3@15 ~@65, ~@24 c4@71 ~]/6", // Am
  C: "[[a3,c4]@15 ~ [g3,b3,d4]@17 [a3,c4]@27 [g3,b3,d4]@4, e4@15 ~]/4", D: "[[a3,c4]@23 ~ [g3,b3,d4]@7 ~, e4]/2",
  E: "[[d4,f4]@16 [c4,e4]@16 [b3,d4]@23 ~ [b3,d4,g4]@3 ~ [c4,e4,g4]@3 ~, a3@31 ~@33, ~@16 g4@39 ~@9]/4", // Dm C Bm G C
  F: "[a3,d4,f4], g3 ~@15", G: "[~ a3@14 ~ [b3,d4]@15 ~, g4@31 ~, e4 ~, c4@7 ~@9]/2", H: "[bb3,d4,f4]@8 [c4,e4,g4]@7 ~",
  I: "[c4@16 [bb3,d4]@8 ~ a3 ~@2 g3@3 ~ [a3,f4]@15 ~, f4@25 e4@7 ~@16, a3@14 ~@11 c4@23]/3", // Bb Dm
  J: "[bb3,d4,f4]@7 ~ [c4,e4,g4]@7 ~", K: "[c4@16 [bb3,d4]@7 ~ [c4,e4,g4]@7 ~, f4@23 ~@9, a3@7 ~@9]/2",
  L: "[c4@8 [bb3,d4]@3 ~ [c4,e4,g4]@4, f4@23 ~@9, a3@7 ~@9]/2", // Bb C
  M: "[[a3,c4,f4]@22 ~@2 [c4,f4,a4]@3 ~ [b3,e4,g4]@2 ~@2]/2", // F Em
  N: "[[a3,c4]@15 ~ [g3,b3,d4]@16 [a3,c4]@16 [g3,b3,d4]@16 [a3,c4]@16 [g3,b3,d4]@15 ~, e4@95 ~]/6", // Am G Am G Am G
  O: "[[d4,f4]@16 [c4,e4]@16 [b3,d4]@23 ~ [g3,b3,d4]@3 ~ [g3,c4,e4]@3 ~, a3@31 ~@33, ~@16 g4@39 ~@9]/4", // Dm C Bm G C
  P: "[[d4,f4]@16 [c4,e4]@16 [b3,d4]@15 ~, a3@31 ~@17, ~@16 g4@31 ~]/3", // Dm C Bm
  Q: "[[a3,c4]@16 [bb3,d4]@7 ~ [c4,e4,g4]@8, f4@23 ~@9]/2", // Am Bb C
  R: "[c4@16 [bb3,d4]@6 ~@2 [c4,e4,g4]@7 ~, f4@3 ~, a3@7 ~@9]/2", // Bb C
  S: "[[a3,c4]@16 bb3@4 bb3 ~@3 [c4,e4,g4]@7 ~, f4@23 ~@9, ~@8 d4@3 ~@5]/2", // Am C
  T: "[[a3,c4]@15 ~ [bb3,d4]@7 ~ [c4,e4,g4]@7 ~, f4@23 ~@9]/2", // Am Bb C
  U: "[c4@15 ~ [bb3,d4]@7 ~ [c4,e4,g4]@6 ~@2, f4@23 ~@9, a3@13 ~@19]/2", V: "[a3,c4,f4]@15 ~",
  W: "[bb3,d4,f4]@7 ~ [e4,g4]@8, ~@4 c4@3 ~", X: "[d4,f4], a3@7 ~", Y: "[g3,c4,e4]", Z: "[a3,d4,f4]@15 ~",
  AA: "[g3,c4,e4]@15 ~", AB: "[a3,d4,f4]@7 ~", AC: "[[a3,c4]@16 [bb3,d4]@7 ~ [c4,e4,g4]@7 ~, f4@23 ~@9]/2",
  AD: "[c4@16 [bb3,d4]@6 ~@2 [c4,e4,g4]@7 ~, f4@23 ~@9, a3@7 ~@9]/2", // Bb C
  AE: "[[a3,c4]@16 [bb3,d4]@6 ~@2 [c4,e4,g4]@7 ~, f4@23 ~@9]/2", // Am Bb C
  AF: "[c4@16 [bb3,d4]@6 ~@2 [c4,e4,g4]@7 ~, f4@11 ~@5, a3@7 ~@9]/2", AG: "[c4@2 d4 c4, f4, a3@14 ~@2 bb3@15 ~]/2",
  AH: "[c4@16 d4@8 c4@7 ~, f4@31 ~, a3@14 ~@2 bb3@15 ~]/2", AI: "d4@8 c4@7 ~, [bb3,f4]@15 ~",
  AJ: "[[a3,c4]@16 d4@8 c4@7 ~, f4@31 ~, ~@16 bb3@15 ~]/2", AK: "[[a3,c4,f4]@9 ~@7]/2",
})).s("gm_synth_strings_1").gain(0.25)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A@3 B A B A B C B A D E@2 F@6 G@2 H I G@2 H J A K A L A M A M A N F@6 G@2 H I G@2 H O A M A M A M A M A M A P A M Q
  R S T U V@2 W V X A M A M A M A M A M A Y Z M A M A M A M A M A AA Z AB A AC A B A AD AE ~
>`.pickRestart({
  A: "[c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // F5
  B: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // Bb5 F5
  C: "[c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ f3 ~", // F5
  D: "[c3,f3] ~ f3 ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // F5
  E: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~", F: "a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~ a3 ~",
  G: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", H: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~",
  I: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ c3 ~ c3 ~",
  J: "f3 ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C5
  K: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,e3] ~ [c3,e3] ~ [c3,e3] ~ [c3,e3] ~", // Bb5 C
  L: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,gb3,g3] ~", // Bb5 C5 C
  M: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C5
  N: "f3 ~ f3 ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ e3 ~ e3 ~", // F5
  O: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C7 C5
  P: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,g3] ~ f4 ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C5
  Q: "f3 ~ f3 ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // F5
  R: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,f3] ~ [c3,f3] ~ c3 ~ [c3,g3] ~", // Bb5 F5 C5
  S: "c3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ [d3,a3] ~", // D5
  T: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~", // D5
  U: "d3 ~ d3 ~ d3 ~ [d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  V: "d3 ~ d3 ~ [d3,a3] ~ d3 ~ d3 ~ [d3,a3] ~ d3 ~ [d3,a3] ~", // D5
  W: "[d3,ab3,a3,d4] ~ d3 ~ d3 ~ [d3,a3] ~ d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D D5
  X: "~@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C5
  Y: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ g3 ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C5
  Z: "f3 ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // F5
  AA: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // Bb5 C5
  AB: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,f3] ~ c3 ~ [c3,f3] ~ [c3,f3] ~", // Bb5 F5
  AC: "f3 ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // Bb5 F5
  AD: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ c3 ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", AE: "[c3,f3] ~@15",
})).s("gm_electric_guitar_muted").gain(0.25)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@2 B@2 C@2 D@2 E@2 F@3 ~@15 G H I@2 J@2 K@2 L@4 ~@12 M N O@2 P@2 Q@2 R@2 S@4 T@2 U V ~@6 W@2 X@2 Y@2 Z@2 AA@2 AB@2
  Z@2 AC@4 AD@2 AE@2 AF AG AH AI AJ AK AL@2 AM@4 ~
>`.pickRestart({
  A: "[~@8 [a4,c5]@7 ~, ~@15 f5@15 ~@2]/2", B: "[~@8 [a4,c5]@7 ~, ~@15 f5@14 ~@3]/2",
  C: "[~@6 f4 ~@5 f5@2 ~@2 [a4,c5]@13 ~@3, f4@4 f5@6 c5@5 f5@14 ~@3, ~@2 bb4@5 ~ g4@7 ~@17]/2", // Am
  D: "[~@12 f5@2 ~@2 [a4,c5]@13 ~@3, f4@7 ~ g4@7 ~@17, ~@2 bb4@6 ~@2 c5@5 ~@17, ~@4 f5@6 ~@5 f5@14 ~@3]/2", // Am
  E: "[~@6 f4 ~@5 f5@2 ~@2 [a4,c5]@13 ~@3, f4@4 f5@6 c5@5 f5@14 ~@3, ~@2 bb4@6 g4@7 ~@17]/2", // Am
  F: "[~@12 f5@2 ~@2 a4@23 ~@9, f4@7 ~ g4@7 ~@33, ~@2 bb4@6 ~@2 c5@5 [c5,f5]@24 ~@9, ~@2 f5@3 ~@19]/3", // F5
  G: "~@2 d5@2 bb5@2 f5@2 ~@4 c6@2 g5 ~, bb4@6 ~@2 c5@5 ~@3, ~@10 e5@5 ~", H: "~ c5@13 ~@2, [a4,f5]@7 ~",
  I: "[~@4 f5@4 ~@4 g5@3 ~ [a4,c5]@12 ~@4, f4@7 ~ g4@7 ~@17, ~@2 bb4@6 ~@2 c5@5 f5@13 ~@4]/2", // Am
  J: "[~@4 f5@4 ~@4 g5@3 ~ a4@14 ~@2, f4@7 ~ g4@6 ~@18, ~@2 bb4@5 ~@3 c5@4 ~ [c5,f5]@15 ~@2]/2", // F5
  K: "[~@2 bb4@2 ~@2 bb4@2 ~@4 g5@3 ~ a4@13 ~@3, f4@3 ~ g4@3 ~@9, ~@4 f5@6 c5@4 ~ [c5,f5]@14 ~@3]/2", // F5
  L: "[~@2 bb4@2 ~@2 bb4@2 ~@4 f5@2 ~@2 [a4,c5]@22 ~@3 a4@2 ~ [g4,b4]@3 ~ [a4,c5]@10 ~@6, f4@3 ~ g4@3 ~@13 [c5,f5]@2 ~@10, ~@4 f5@6 c5@5 f5@22 ~@7 e5@14 ~@6]/4", // Am G Am F5
  M: "~ bb4 ~ bb4 ~ c5 g5 c5, f4@6 ~@2 g4@5 ~@3, ~@4 f5@5 ~@7", N: "~ a4@14 ~, [c5,f5]@15 ~",
  O: "[~@4 f5@4 ~@4 g5@3 ~ a4@12 ~@4, f4@8 g4@7 ~@17, ~@2 bb4@6 ~@2 c5@4 ~ [c5,f5]@13 ~@4]/2", // F5
  P: "[~@4 f5@4 ~@2 c5@2 g5@3 ~ a4@14 ~@2, f4@8 g4@7 ~@17, ~@2 bb4@6 ~@7 [c5,f5]@16 ~]/2", // F5
  Q: "[~@4 f5@4 ~@4 g5@3 ~ a4@15 ~, f4@8 g4@7 ~@17, ~@2 bb4@6 ~@2 c5@4 ~ [c5,f5]@16 ~]/2", // F5
  R: "[~@4 f5@4 ~@2 c5@2 g5@3 ~ a4@13 ~@3, f4@8 g4@7 ~@17, ~@2 bb4@6 ~@7 [c5,f5]@15 ~@2]/2", // F5
  S: "[~@6 f4@2 ~@2 c5@2 g5@3 ~ a4@16 ~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 gb5 ~ c5 ~ [a4,c5]@16, f4@4 f5@4 ~@7 [c5,f5]@18 ~@3 f5@5 ~@3 g5@4 ~@16, ~@2 bb4@6 g4@7 ~@17 f4@7 ~ g4@7 f5@17]/4", // Am F5
  T: "[~@6 bb4@2 ~@4 g5@3 ~ [a4,c5]@16, f4@8 g4@7 ~@17, ~ bb4@2 ~@2 c5@2 ~@9, ~@4 f5@5 ~@6 f5@17]/2", // Am
  U: "~ bb4 ~ bb4 ~@2 g5@2, f4@2 g4 ~, ~@4 f5@4 ~@2 c5@5 ~", V: "~@3 c5@5, ~ f5@7, ~ a4@3",
  W: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 ~@2 c5 ~ [a4,c5]@15 ~, f4@8 g4@7 f5@16 ~, ~@4 f5@5 ~@3 g5@4 ~@16]/2", // Am
  X: "[[bb4,d5,f5]@7 ~@11 a4@14, ~@3 g4 f5@4, ~@7 c5@9]/2", // Bb
  Y: "[~@4 f5@4 ~@2 c5@2 g5@2 c5 ~ [a4,c5]@16, f4@8 g4@5 ~@19, ~@2 bb4@6 ~@7 f5@17]/2", // Am
  Z: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 g5@3 ~ a4@16, f4@8 g4@7 [c5,f5]@17, ~@4 f5@5 ~@23]/2", // F5
  AA: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 g5@2 c5 ~ [a4,c5]@16, f4@8 g4@7 ~@17, ~@4 f5@5 ~@6 f5@17]/2", // Am
  AB: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 g5@2 g5 ~ a4@16, f4@8 g4@7 [c5,f5]@17, ~@4 f5@5 ~@23]/2", // F5
  AC: "[~@4 f5@4 ~@4 g5@3 ~ [a4,c5]@16 ~@6 bb4@2 ~@2 c5@2 g5@2 ~@2 a4@16, f4@8 g4@7 ~@17 f4@8 g4@7 ~@17, ~@2 bb4@6 ~@2 c5@4 ~ f5@18 ~ bb4@4 ~@9 c5@17, ~@36 f5@5 ~@5 f5@18]/4", // Am
  AD: "[~@2 bb4@2 ~@2 bb4@2 ~@4 g5@3 ~ [a4,c5]@16, f4@8 g4@7 ~@17, ~@4 f5@5 ~ c5@4 ~ f5@15 ~@2]/2", // Am
  AE: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 g5@2 c5 ~ [a4,c5]@16, f4@8 g4@7 ~@17, ~@4 f5@4 ~@7 f5@17]/2", // Am
  AF: "~ bb4 ~ bb4 ~@2 c5 g4, f4@8 g4@5 ~@3, ~@4 f5@4 ~@2 g5@5 ~", AG: "~ a4@6 ~, [c5,f5]@15 ~",
  AH: "~@2 bb4@2 f5@2 bb4@2 ~@2 c5@3 ~ c5@2, f4 g4", AI: "~ [a4,c5]@12 ~@3, f5@13 ~@3",
  AJ: "~ bb4 f5 bb4 ~ c5 f5 c5, f4@7 ~ g4@8", AK: "~ a4@15, [c5,f5]",
  AL: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 f5@2 c5 ~ [a4,c5]@14 ~@2, f4@7 ~ g4@7 ~@17, ~@4 f5@5 ~@6 f5@14 ~@3]/2", // Am
  AM: "[~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 f5@2 c5 ~ [a4,c5]@16 ~@2 bb4@2 ~@2 bb4@2 ~@2 c5@2 f5@2 c5 ~ [a4,c5]@16, f4@8 g4@7 ~@17 f4@8 g4@7 ~@17, ~@4 f5@5 ~@6 f5@18 ~@3 f5@6 ~@5 f5@17]/4", // Am
})).s("gm_electric_guitar_clean").gain(0.3)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@3 A B C D A B C D ~@10 E F ~ G H I J ~ C D K ~ C D L ~@2 M N ~@5 E O ~ P Q R J ~ C D L ~ C D ~@2 C D L ~ C D ~ K ~@8
  A B C D A B C D C D ~@2 C D S@2 C D L ~ C D L ~ A B C D A B C T ~@2
>`.pickRestart({
  A: "~@2 f5@2 ~ g5@2 ~", B: "c5 ~@3", C: "~@2 f5@2 ~ c5@2 ~", D: "d5 ~@3", E: "~@2 g5@2 ~ f5@2 ~", F: "e5 f5 d5 ~",
  G: "~@2 [b4,d5] [c5,e5]", H: "[d5,f5]@2 ~@3 e5@2 ~", I: "g5@2 ~ f5@2 ~ e5@2", J: "[b4,d5] ~@3", K: "~ g5@2 ~@5",
  L: "~@5 g5@2 ~", M: "~@2 f5 e5", N: "a4 ~@3", O: "e5 ~ f5 ~", P: "~@2 [b4,d5] [c5,d5,e5]", Q: "[d5,f5]@2 ~@3 f5@2 ~",
  R: "g5 ~ f5 e5", S: "[~@7 g5@2 ~@7]/2", T: "f4 ~@3",
})).s("gm_pad_new_age").gain(0.25)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@28 A ~ B ~@21 C ~@14 D B E@2 F@2 E@2 G H ~@11 I D J ~@9 K ~ L ~ M ~ N ~ N ~@2
>`.pickRestart({
  A: "bb3@7 ~@9", B: "~@8 g3@7 ~", C: "~@8 eb4 ~@7", D: "c4@9 ~@7", E: "[~@2 a4 ~ f5 ~ a4 ~@3 c5 ~ a4 ~ g4@18]/2",
  F: "[~@2 a4 ~ f5 ~@5 c5 ~@3 g4@18]/2", G: "g4 ~ g4 ~ f4 ~@3 f4 ~ e4 ~ c4 ~@3", H: "bb2 ~", I: "~@8 c4@7 ~",
  J: "~@8 f3 g3@6 ~", K: "~@8 g3 ~@3 f3@3 ~, ~ c4", L: "~@4 [gb3,g3] ~@3", M: "bb3 ~@15", N: "~@2 c4 ~@13",
})).s("gm_overdriven_guitar").gain(0.3)

// other · tenor sax
const tenor_sax = note("<~@77 A@2 B@2 C D E@3 ~@25>".pickRestart({
  A: "[f5@10 d5@2 c5 a4 ab4 g4]/2", B: "[f4@20 ~ eb4 c4 ~ d4@2 f4 ~ f4@2 d4 ~, ~@23 c4@2 ~@3 e4 ~@3]/2", C: "f4",
  D: "~ c4 d4 f4 ab4 g4 f4 d4", E: "[~@14 f5@23 ~@11, f4@37 ~@11]/3",
})).s("gm_tenor_sax").gain(0.45)

// other · alto sax
const alto_sax = note("<~@101 A@2 B@4 C D@2 ~>".pickRestart({
  A: "[f5@18 d5@2 f5@2 d5 ~ a5@2 g5@2 f5@2 d5@2, ~@24 ab5 ~@7]/2",
  B: "[f5@10 d5@2 c5 ~ ab4 a4@2 g4 f4@8 d4@2 a4@2 c5@12 a4@2 g4@2 f4@6 d4@2 f4@2 a4@2 c5@2 a4@2 ~@2, ~@10 db5 ~@17 ab4 ~ d5@2 ~@10 ab4 ~@13 ab4 ~@3 ab4 ~@3]/4",
  C: "a4@2 ~@2 a4@3 ~ g4@2 f4@4 d4@2", D: "[~@3 f5@9 ~@4, f4 ~]/2",
})).s("gm_alto_sax").gain(0.35)

// other · alto sax · soft notes
const alto_sax_soft = note("<~@102 [~@11 bb5 ~@4] ~@2 [~@13 bb4 ~@2] [~@7 bb4 ~@2 a4 ~@3 g4 ~] ~@4>")
  .s("gm_alto_sax").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B A B A C A C A C A C A C A C A C A C A B A B A B A B A B A C A C A C A C A C A C A C A B A B A B
  A B A B A B A B A B A C A C A C A C A B A C A B A B A B A B A B A B A B A B A B A B A B A C A B A B D ~
>`.pickRestart({
  A: "x ~@2 x ~ x ~@2", B: "x ~@3 x ~@2 x", C: "x!2", D: "x",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  ~
  [~ x ~ x]!11
  [~@2 x ~@2 x!3]
  [~ x ~ x]!39
  [~@2 x ~@3 x!2]
  [~ x ~ x]!55
  [~@2 x ~@2 x!2 ~]
  ~@2
>`).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<A ~@27 A ~@23 B ~@23 C ~@7 A ~@7 B ~@7 B ~@7 A ~@2>".pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "~@5 x!3",
})).gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!3 [~ x!7] [x!8]!104 x ~>").gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@27 B ~@23 C ~@23 D ~@7 B ~@7 C ~@7 E ~@7 B ~@2>".pickRestart({
// … 19 more lines

More by Eric Carmen