Strudelify
Roll With It cover art

1995 · (What's The Story) Morning Glory?

Roll With It

Oasis

KeyA♭ majorTempo123 bpm
0:00/0:00
// Roll With It — Oasis
// 122.8 bpm, 4/4, key G# 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 125 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122.8/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, A@4 for four bars: edit a riff to change every repeat.

// other · guitar harmonics
const guitar_harmonics = note(`<
  ~@50 A@2 B@2 C@4 ~@12 D@2 E@2 D@2 E@2 D@2 E@2 D@2 F E@2 G@2 H@2 I@3 J G@2 H@2 K@24 ~@2
>`.pickRestart({
  A: "~ b2@31", B: "~ b2@16 b2@15", C: "[~ ab2@60 c3@36 ab2@31]/4", D: "ab3/2", E: "eb3/2", F: "ab3", G: "b2",
  H: "b2!2", I: "[ab2@5 c3@3]/3", J: "ab2", K: "ab2/2",
})).s("gm_guitar_harmonics").gain(0.3)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B C@2 A B D@2 E@2 F G H@3 E@3 F G I@4 J@3 E K L C M K L C M K L C M K@2 N O P E@2 F G Q@3 E@3 F G R@4 J@3 E K L
  C M K L C M K L C M K@2 S T U V@2 W X Y@3 V@3 W X R@22 Z@2 ~@2
>`.pickRestart({
  A: "~ eb2@8 eb2@4 eb2@4 eb2@4 eb2@4 eb2@4 eb2@3", B: "~ db2@8 db2@4 db2@4 db2@4 db2@4 db2@4 b1@3",
  C: "~ ab1@8 ab1@4 ab1@4 ab1@4 ab1@4 ab1@4 ab1@3", D: "~ bb1@4 bb1@4 bb1@4 bb1@4 bb1@4 bb1@4 bb1@4 bb1@3",
  E: "~ ab1@8 ab1@8 ab1@4 ab1@4 ab1@4 ab1@3", F: "~ ab1@12 ab1@4 ab1@4 ab1@8 ab1@3",
  G: "~ ab1@4 ab1@8 ab1@4 ab1@4 ab1@8 c2@3",
  H: "[~ db2@8 db2@4 db2@4 c2@8 c2@4 bb1@12 bb1@4 bb1@4 bb1@8 bb1@4 ab1@12 ab1@8 ab1@4 ab1@4 ab1@4 ab1@3]/3",
  I: "[~ db2@8 db2@4 db2@4 c2@8 c2@4 bb1@12 bb1@4 bb1@4 bb1@8 bb1@4 c2@3]/2",
  J: "[~ db2@8 db2@4 db2@4 c2@8 c2@4 eb2@12 eb2@4 eb2@4 eb2@8 eb2@4 eb2@2 bb1@2 ab1@8 ab1@8 ab1@4 ab1@4 ab1@4 ab1@3]/3",
  K: "~ gb1@8 gb1@4 gb1@4 gb1@4 gb1@4 gb1@4 gb1@3", L: "~ gb1@8 gb1@4 gb1@4 gb1@4 gb1@4 gb1@4 f1@3",
  M: "~ ab1@8 ab1@4 ab1@4 ab1@4 ab1@4 ab1@4 f1@3", N: "~ f1@8 f1@4 f1@4 f1@4 f1@4 f1@4 f1@3",
  O: "~ eb2@8 eb2@4 eb2@4 db2@8 db2@4 db2@3", P: "~ c2@4 bb1@4 c2@4 eb2@8 eb2@4 eb2@4 eb2@3",
  Q: "[db2@8 db2@4 db2@4 c2@8 c2@4 bb1@12 ~ bb1@4 bb1@4 bb1@8 bb1@4 ab1@12 ab1@8 ab1@4 ab1@4 ab1@4 ab1@3]/3",
  R: "[db2@2 db2!2 c2@2 c2 bb1@3 bb1!2 bb1@2 bb1 c2]/2", S: "f1@2 f1!6", T: "eb2@2 eb2!2 db2@2 db2!2",
  U: "c2 bb1 c2 eb2@2 eb2!3", V: "ab1@2 ab1@2 ab1!4", W: "ab1@3 ab1!2 ab1@2 ab1", X: "ab1 ab1@2 ab1!2 ab1@2 c2",
  Y: "[db2@2 db2!2 c2@2 c2 bb1@3 bb1!2 bb1@2 bb1 ab1@3 ab1@2 ab1!4]/3", Z: "[ab1@15 ab1]/2",
})).s("gm_electric_bass_finger").gain(0.32)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@11 A@2 B@4 C@2 B@6 C@4 D@2 B@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 G H I B@4 J@2 B@6 J@4 D@2 B@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2
  K L M N@4 J@2 N@6 J@22 O@2 ~@2
>`.pickRestart({
  A: "~ [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4,f4]@3", // Bb
  B: "~@9 [ab3,c4,eb4]@11 ~ [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@5", // Ab
  C: "[~ [db4,f4,ab4]@7 ~ [db4,f4,ab4]@2 ~@2 [db4,f4,ab4]@2 ~@2 [c4,eb4,g4]@7 ~ [c4,eb4,g4]@2 ~@2 [bb3,db4,f4]@11 ~ [bb3,db4,f4]@11 ~ [bb3,db4,f4]@2 ~@2 [bb3,db4,f4]@2 ~@5]/2", // Db Cm Bbm
  D: "[~ [db4,f4,ab4]@7 ~ [db4,f4,ab4]@2 ~@2 [db4,f4,ab4]@2 ~@2 [c4,eb4,g4]@7 ~ [c4,eb4,g4]@2 ~@2 [bb3,eb4,g4]@11 ~ [bb3,eb4,g4]@11 ~ [bb3,eb4,g4]@2 ~@2 [bb3,eb4,g4]@2 ~@5]/2", // Db Cm Eb
  E: "~ [gb3,bb3,db4]@8 [gb3,bb3,db4]@8 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@3", // Gb
  F: "~ [ab3,c4,eb4]@8 [ab3,c4,eb4]@8 [ab3,c4,eb4]@4 [ab3,c4,eb4]@4 [ab3,c4,eb4]@4 [ab3,c4,eb4]@3", // Ab
  G: "~ [f3,bb3,db4]@8 [f3,bb3,db4]@8 [f3,bb3,db4]@4 [f3,bb3,db4]@4 [f3,bb3,db4]@4 [f3,bb3,db4]@3", // Bbm
  H: "~ [g3,bb3,eb4]@8 [g3,bb3,eb4]@4 [g3,bb3,eb4]@4 [f3,ab3,db4]@8 [f3,ab3,db4]@4 [f3,ab3,db4]@3", // Eb Db
  I: "~ [eb3,g3,c4]@8 [eb3,g3,c4]@4 [g3,bb3,eb4]@12 [g3,bb3,eb4]@7", // Cm Eb
  J: "[[db4,f4,ab4]@7 ~ [db4,f4,ab4]@2 ~@2 [db4,f4,ab4]@2 ~@2 [c4,eb4,g4]@7 ~ [c4,eb4,g4]@2 ~@2 [bb3,db4,f4]@11 ~ [bb3,db4,f4]@11 ~ [bb3,db4,f4]@2 ~@2 [bb3,db4,f4]@2 ~@6]/2", // Db Cm Bbm
  K: "[f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]!4", L: "[g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [f3,ab3,db4]@2 [f3,ab3,db4]!2",
  M: "[eb3,g3,c4]@2 [eb3,g3,c4] [g3,bb3,eb4]@3 [g3,bb3,eb4]@2", // Cm Eb
  N: "~@8 [ab3,c4,eb4]@11 ~ [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@6", O: "[ab3,c4,eb4]/2",
})).s("gm_electric_guitar_clean").gain(0.2)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@5 A B C@2 A B D@2 ~@3 E@3 ~@5 F@7 ~@2 G@8 H@7 I J ~@3 K@3 ~ L ~@4 M@4 N O ~@2 G@8 H@7 P Q ~@3 R@3 ~ S ~@3 T@7 U@8
  V@8 W@4
>`.pickRestart({
  A: "~@9 eb4@12 eb4@4 [eb3,g3,bb3,eb4]@4 ~@3, ~@9 [eb3,g3,bb3]@16 ~@7", // Eb
  B: "~@21 f4@4 [db3,f3,ab3,db4]@4 ~@3, ~@9 [db3,f3,ab3,db4]@16 ~@7", // Db
  C: "~@21 eb4@4 [ab2,eb3,ab3,c4]@4 ~@3, ~@9 [ab2,eb3,ab3,c4]@16 ~@7", // Ab
  D: "[~@9 d4@4 c4@8 d4@8 eb4@8 d4@8 c4@8 d4@8 ~@3]/2",
  E: "[~@5 c4@4 db4@4 eb4@4 db4@4 c4@4 db4@4 eb4@20 c4@12 bb3@32 ~@3]/3",
  F: "[~@5 c4@4 db4@4 eb4@4 db4@4 c4@4 db4@4 eb4@20 c4@12 bb3@32 eb4@20 c4@12 bb3@32 eb4@20 c4@12 eb4@32 ~@3]/7",
  G: "[~ [gb2,db3,gb3]@64 [ab2,eb3,ab3]@64 [gb2,db3,gb3]@64 [ab2,eb3,ab3]@63]/8", // Gb5 Ab5 Gb5 Ab5
  H: "[~ [gb2,db3,gb3]@64 [ab2,eb3,ab3]@64 [gb2,db3,gb3]@64 [f2,db3,f3]@31]/7", // Gb5 Ab5 Gb5 Db
  I: "~ [eb3,bb3,eb4]@8 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@4 [db3,ab3,db4]@8 [db3,ab3,db4]@4 [db3,ab3,db4]@3", // Eb5 Db5
  J: "~ [c3,g3,c4]@4 [bb2,f3,bb3]@4 [c3,g3,c4]@4 [eb3,bb3,eb4]@8 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@3", // C5 Bb5 C5 Eb5
  K: "[~@5 c4@4 db4@4 eb4@4 db4@4 c4@4 db4@4 eb4@19 c4@12 bb3@32 ~@4]/3", L: "~@5 c4@4 db4@7 ~ db4@4 eb4@4 db4@4 c4@3",
  M: "[~ eb4@16 c4@12 bb3@32 ~@3]/2", N: "~ eb4@16 c4@12 ~@3", O: "~ eb4@16 ~@15",
  P: "[eb3,bb3,eb4]@2 [eb3,bb3,eb4]!2 [db3,ab3,db4]@2 [db3,ab3,db4]!2", // Eb5 Db5
  Q: "[c3,g3,c4] [bb2,f3,bb3] [c3,g3,c4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4]!3", // C5 Bb5 C5 Eb5
  R: "[~ c4 db4 eb4 db4 c4 db4 eb4@5 c4@3 bb3@8 ~]/3", S: "~@4 c4@4 db4@7 ~ db4@4 eb4@4 db4@4 c4@4",
  T: "[~ c4 db4 eb4 db4 c4 db4 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4]/7",
  U: "[~@4 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4]/8",
  V: "[~@4 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@9]/8", W: "[[ab2,eb3,ab3]@15 gb1@13 ab1@4]/4",
})).s("gm_overdriven_guitar").gain(0.29)

// other · distortion guitar
const distortion_guitar = note("<~@58 A@4 B@2 C@2 D@3 ~ E@12 F@2 G@3 ~@12 H@20 I@2 J@4>".pickRestart({
  A: "[~ c4@48 c4@4 bb3@4 ab3@4 bb3@8 ab3@58 ~]/4", B: "[~ c4@8 db4@4 eb4@4 db4@4 c4@4 bb3@4 ab3@34 ~]/2",
  C: "[~ c4@8 db4@4 eb4@4 db4@4 c4@4 bb3@4 ab3@26 ~@2 f3@4 ab3@3]/2",
  D: "[~ c4@8 db4@4 eb4@4 db4@4 c4@4 db4@4 eb4@36 ~@31]/3",
  E: "[bb4@2 ab4 bb4@2 ab4@2 bb4@2 ab4@2 bb4@2 ab4@2 ab4@17]/4",
  F: "[bb4@2 ab4 bb4@2 ab4@2 bb4@2 ab4@2 bb4@2 ab4@2 ab4]/2", G: "[bb4@2 ab4 bb4@2 ab4@2 bb4@12 bb4@5]/3",
  H: "[db5 c5 db5 c5 db5 c5 db5 eb5@2 c5@2 ab4@4 c5]/2", I: "[db5 c5 db5 c5 db5 c5 db5 eb5@2 c5@2 ab4@5]/2",
  J: "[~@104 g4 f4 e4 [c4,d4] ~@20, ~@28 c5@74 b4@3 ~@23, ~@17 ab4@36 ~@11, ~@42 eb4@65 ~@21, ~@103 a4@2 ~@23]/4", // Csus2
})).s("gm_distortion_guitar").gain(0.4)

// other · distortion guitar · soft notes · Asus2 Em Csus2 G Dm Cmaj7
const distortion_guitar_soft = note("<~@124 [~@12 [a3,b3] [e3,f3,g3] [c3,d3] [g2,a2,b2] [d2,e2,f2] [b1,c2] ~@14]>")
  .s("gm_distortion_guitar").gain(0.2)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~ A B C@2 D E C@2 D E F@2 C@4 G@4 C@4 H@8 I@2 J@2 I@2 J@2 I@2 J@2 I@2 K L M C@4 G@4 C@4 N@4 O@4 I@2 J@2 I@2 J@2 I@2
  J@2 I@2 P Q R S@4 T@4 S@4 N@22 U@2 ~@2
>`.pickRestart({
  A: "~ [eb3,ab3,bb3,eb4,g4]@20 [eb3,ab3,bb3,eb4,g4]@4 [eb3,ab3,bb3,eb4,g4]@4 [eb3,ab3,bb3,eb4]@3", // Eb Ebsus4
  B: "~ [db3,gb3,ab3,db4,f4]@20 [db3,gb3,ab3,db4,f4]@4 [db3,gb3,ab3,db4,f4]@4 [g2,db3,gb3,ab3,db4]@3", // Db Dbsus4
  C: "[~ ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3]@4 ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3,eb4,ab4]@3, ~ eb3@32 eb3@31, ~ ab2@28 [eb4,ab4]@12 ~@23, ~@33 ab2@28 ~@3]/2", // Ab5 Ab Ab5
  D: "~ [eb3,g3,bb3,eb4,g4]@20 [eb3,g3,bb3,eb4,g4]@4 [eb3,g3,bb3,eb4,g4]@4 [eb3,g3,bb3,eb4]@3", // Eb
  E: "~ [db3,f3,ab3,db4,f4]@20 [db3,f3,ab3,db4,f4]@4 [db3,f3,ab3,db4,f4]@4 [db3,f3,ab3,db4,f4]@3", // Db
  F: "~ [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@4 [bb2,d3,f3,bb3,d4]@3", // Bb
  G: "[~ [ab2,db3,ab3,db4,ab4]@8 [ab2,db3,ab3,db4,ab4]@4 [ab2,db3,ab3,db4,ab4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [f3,bb3,f4]@12 [f3,bb3,f4]@8 [f3,bb3,f4]@4 [f3,bb3,f4]@4 [f3,bb3,f4]@4 ab3@12 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3]@4 ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3,eb4,ab4]@3, ~@29 [f2,bb2]@32 eb3@36 eb3@31, ~@61 ab2@32 [eb4,ab4]@12 ~@23, ~@97 ab2@28 ~@3]/4", // Db5 C5 Bb5 Ab5 Ab Ab5 Bb5 Ab5
  H: "[~ [ab2,db3,ab3,db4,ab4]@8 [ab2,db3,ab3,db4,ab4]@4 [ab2,db3,ab3,db4,ab4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [f3,bb3,f4]@12 [f3,bb3,f4]@8 [f3,bb3,f4]@4 [f3,bb3,f4]@4 [f3,bb3,f4]@8 [ab2,db3,ab3,db4,ab4]@8 [ab2,db3,ab3,db4,ab4]@4 [ab2,db3,ab3,db4,ab4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [f3,bb3,f4]@12 [f3,bb3,f4]@8 [f3,bb3,f4]@4 [f3,bb3,f4]@4 [f3,bb3,f4]@8 [ab2,db3,ab3,db4,ab4]@8 [ab2,db3,ab3,db4,ab4]@4 [ab2,db3,ab3,db4,ab4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [bb3,eb4,bb4]@12 [bb3,eb4,bb4]@8 [bb3,eb4,bb4]@4 [bb3,eb4,bb4]@4 [bb3,eb4,bb4]@8 ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3]@4 ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3,eb4,ab4]@3, ~@29 [f2,bb2]@36 ~@28 [f2,bb2]@36 ~@28 [bb2,eb3]@36 eb3@32 eb3@31, ~@193 ab2@28 [eb4,ab4]@12 ~@23, ~@225 ab2@28 ~@3]/8", // Db5 C5 Bb5 Db5 C5 Bb5 Db5 C5 …
  I: "[~@9 [bb3,db4,gb4]@16 [bb3,db4,gb4]@16 [bb3,db4,gb4]@16 [bb3,db4,gb4]@4 ~@3]/2", // Gb
  J: "[~@9 [c4,eb4,ab4]@16 [c4,eb4,ab4]@16 [c4,eb4,ab4]@16 [c4,eb4,ab4]@4 ~@3]/2", // Ab
  K: "~@9 [bb3,db4,f4]@16 [bb3,db4,f4]@4 ~@3", L: "~ [bb3,eb4,g4]@16 [ab3,db4,f4]@15",
  M: "~ [g3,c4,eb4]@12 [eb3,g3,bb3]@19", // Cm Eb
  N: "[[ab2,db3,ab3,db4,ab4]@2 [ab2,db3,ab3,db4,ab4]!2 [g2,c3,g3,c4,g4]!3 [f3,bb3,f4]@3 [f3,bb3,f4]@2 [f3,bb3,f4]!2 [f3,bb3,f4]@2, ~@7 [f2,bb2]@9]/2", // Db5 C5 Bb5
  O: "[~ [ab2,db3,ab3,db4,ab4]@8 [ab2,db3,ab3,db4,ab4]@4 [ab2,db3,ab3,db4,ab4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [g2,c3,g3,c4,g4]@4 [bb3,eb4,bb4]@12 [bb3,eb4,bb4]@8 [bb3,eb4,bb4]@4 [bb3,eb4,bb4]@4 [bb3,eb4,bb4]@8 ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3]@4 ab3@8 [ab3,eb4,ab4]@8 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab3,eb4,ab4]@4 [ab2,ab3,eb4,ab4]@3, ~@29 [bb2,eb3]@36 eb3@32 eb3@31, ~@65 ab2@28 [eb4,ab4]@12 ~@23, ~@97 ab2@28 ~@3]/4", // Db5 C5 Eb5 Ab5 Ab Ab5 Eb5 Ab5
  P: "~@2 [bb3,db4,f4]@4 [bb3,db4,f4] ~", Q: "[bb3,eb4,g4] [ab3,db4,f4]", R: "[g3,c4,eb4]@3 [eb3,g3,bb3]@5",
  S: "[ab3@2 [ab3,eb4,ab4]@2 [ab3,eb4,ab4]!3 [ab2,ab3] ab3@2 [ab3,eb4,ab4]@2 [ab3,eb4,ab4]!3 [ab2,ab3,eb4,ab4], eb3 eb3, ab2@7 [eb4,ab4]@3 ~@6, ~@8 ab2@7 ~]/2", // Ab5 Ab Ab5
  T: "[[ab2,db3,ab3,db4,ab4]@2 [ab2,db3,ab3,db4,ab4]!2 [g2,c3,g3,c4,g4]!3 [f3,bb3,f4]@3 [f3,bb3,f4]@2 [f3,bb3,f4]!3 ab3@3 [ab3,eb4,ab4]@2 [ab3,eb4,ab4]!3 [ab2,ab3] ab3@2 [ab3,eb4,ab4]@2 [ab3,eb4,ab4]!3 [ab2,ab3,eb4,ab4], ~@7 [f2,bb2]@8 eb3@9 eb3@8, ~@15 ab2@8 [eb4,ab4]@3 ~@6, ~@24 ab2@7 ~]/4", // Db5 C5 Bb5 Ab5 Ab Ab5 Bb5 Ab5
  U: "[ab2,eb3,ab3,eb4,ab4]/2", // Ab5
})).s("gm_distortion_guitar").gain(0.16)

// other · whistle
const whistle = note("<[~@12 bb6 f6 ~@2, ~@24 a6 ~@7] ~@124>").s("gm_whistle").gain(0.07)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B C D C B E ~ F B@5 D B G B@5 H B H B D B E B@10 I E J K@2 B@7 D B G B@5 H B H B D B E B@10 I E J K L M@7 N M O
  M@5 P M P M Q R S T U V W X Y Z AA AB AC AD AE Z AA AF ~@3
>`.pickRestart({
  A: "~@5 x ~@3 x ~@5 x ~@5 x ~@3 x ~@6", B: "~@9 x ~@15 x ~@6", C: "~@9 x ~@5 x ~@9 x ~@6",
  D: "~@9 x ~@3 x ~ x ~@9 x ~@6", E: "~@9 x ~@5 x ~@3 x ~@5 x ~@6", F: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@6",
  G: "~@9 x ~@5 x ~@3 x ~@5 x ~@3 x ~ x", H: "~@9 x ~@3 x ~ x ~@3 x ~@5 x ~@3 x ~ x", I: "~@9 x ~@4 x!3 ~@8 x ~@6",
  J: "~@9 x ~@7 x ~@7 x ~@6", K: "~ x ~@7 x ~@7 x ~@7 x ~@6", L: "x!4", M: "~ x ~ x", N: "~@4 x ~ x!2 ~@4 x ~@3",
  O: "~@4 x ~@2 x ~ x ~@2 x ~ x!2", P: "~@4 x ~ x!2 ~ x ~@2 x ~ x!2", Q: "~@4 x ~ x!2 ~ x ~@2 x!4",
  R: "~@4 x ~@5 x!3 ~ x ~", S: "~@4 x ~ x!2 ~ x ~ x!2 ~@3", T: "~ x!2 ~@2 x!2 ~", U: "~@2 x!3 ~ x!2 ~ x ~@2 x ~ x!2",
  V: "~@4 x!3 ~@3 x!5 ~", W: "~@4 x ~@4 x!4 ~@3", X: "~@4 x ~@5 x!3 ~@3", Y: "~@2 x ~ x ~ x!2 ~ x ~@2 x!4",
  Z: "~@2 x ~ x!3 ~@5 x ~ x!2", AA: "~@4 x ~ x ~@2 x!7", AB: "~@2 x ~ x ~@2 x!6 ~@3", AC: "~@2 x!3 ~ x!2 ~ x ~@2 x ~@3",
  AD: "~@4 x!11 ~", AE: "~@2 x ~ x ~@4 x!4 ~ x!2", AF: "x",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@7 A ~@93 B ~@3 C ~@3 D ~ E F D ~ D ~@4>".pickRestart({
  A: "~@29 x ~@2", B: "~@15 x", C: "~@8 x ~@6 x", D: "~ x", E: "~ x ~@13 x", F: "~ x ~@6",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@5 A@6 ~@34 B C@3 D ~@32 B C E@2 F ~@38>".pickRestart({
  A: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", B: "~@9 x ~@7 x ~@7 x ~@6", C: "~ x ~@7 x ~@7 x ~@7 x ~@6", D: "~ x ~@7 x ~@22",
  E: "x!4", F: "x!2 ~@2",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@3 B ~@3 C ~@93 D ~ E ~ F ~ G H I J K L M H I ~@4>".pickRestart({
  A: "~@11 x ~@5 x ~@9 x ~@4", B: "~@19 x ~@12", C: "~@27 x ~@4", D: "~@13 x!2 ~", E: "~@10 x!2 ~@4",
  F: "~@6 x!2 ~@6 x ~", G: "~@8 x ~ x!2 ~@4", H: "~@4 x!2 ~@2", I: "~@7 x ~@8", J: "~@13 x ~@2", K: "x ~@9 x!2 ~@2 x ~",
  L: "~ x ~@6", M: "~@6 x!2 ~@8",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@13 A B@3 A@3 B A B@3 A@7 B ~@16 C A B@3 A@3 B A B@3 A@7 B ~@16 D E F@3 E@3 F E F@3 E@7 G E@3 G E@3 G E@3 G E G ~ H
  ~@2
>`.pickRestart({
  A: "~@9 x ~@7 x ~@7 x ~@6", B: "~ x ~@7 x ~@7 x ~@7 x ~@6", C: "~@17 x ~@7 x ~@6", D: "~@2 x!2", E: "~ x!3", F: "x!4",
  G: "~ x!2 ~", H: "~@8 x ~@5 x ~@6 x ~@10",
})).gain(0.54)

// drums · high tom
const high_tom = s("ht").struct("<~@115 [~@3 x] ~@9>").gain(0.48)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@33 A B@7 A B@3 ~@25 A B@7 A B@3 ~@43>".pickRestart({
  A: "~@9 x ~@7 x ~@7 x ~@6", B: "~ x ~@7 x ~@7 x ~@7 x ~@6",
})).gain(0.48)

// drums · tambourine
// … 20 more lines

More by Oasis