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: 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 H@3 E@3 F G I@4 Q@3 R S T
  U V S T U V S T U V S@2 W X Y R@2 Z AA AB@3 R@3 Z AA AC@22 AD@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 eb2@12 eb2@4 eb2@4 eb2@8 eb2@4 eb2@2 bb1@2 ab1@8 ab1@8 ab1@4 ab1@3 ab1@4 ab1@4]/3",
  R: "ab1@2 ab1@2 ab1!4", S: "gb1@2 gb1!6", T: "gb1@2 gb1!5 f1", U: "ab1@2 ab1!6", V: "ab1@2 ab1!5 f1", W: "f1@2 f1!6",
  X: "eb2@2 eb2!2 db2@2 db2!2", Y: "c2 bb1 c2 eb2@2 eb2!3", Z: "ab1@3 ab1!2 ab1@2 ab1", AA: "ab1 ab1@2 ab1!2 ab1@2 c2",
  AB: "[db2@2 db2!2 c2@2 c2 bb1@3 bb1!2 bb1@2 bb1 ab1@3 ab1@2 ab1!4]/3",
  AC: "[db2@2 db2!2 c2@2 c2 bb1@3 bb1!2 bb1@2 bb1 c2]/2", AD: "[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 C@2 B@6 C@4 D@2 J K L@2 M@2 L@2 M@2 L@2 M@2 L@2
  N O P K@4 Q@2 K@6 Q@22 R@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: "~@9 [ab3,c4,eb4]@11 ~ [ab3,c4,eb4]@2 ~ [ab3,c4,eb4]@2 ~@6", // Ab
  K: "~@8 [ab3,c4,eb4]@11 ~ [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@6", // Ab
  L: "[gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]!4", M: "[ab3,c4,eb4]@2 [ab3,c4,eb4]@2 [ab3,c4,eb4]!4",
  N: "[f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]!4", O: "[g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [f3,ab3,db4]@2 [f3,ab3,db4]!2",
  P: "[eb3,g3,c4]@2 [eb3,g3,c4] [g3,bb3,eb4]@3 [g3,bb3,eb4]@2", // Cm Eb
  Q: "[[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
  R: "[ab3,c4,eb4]/2", // Ab
})).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 E@3 ~ K ~@4 L@4 M N ~@2 O@2 P@2 O@2 P@2 O@2 P@2 O@2 Q R S ~@3
  T@3 ~ U ~@3 V@7 W@8 X@8 Y@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@7 ~ db4@4 eb4@4 db4@4 c4@3", L: "[~ eb4@16 c4@12 bb3@32 ~@3]/2", M: "~ eb4@16 c4@12 ~@3",
  N: "~ eb4@16 ~@15", O: "[gb2,db3,gb3]/2", P: "[ab2,eb3,ab3]/2", Q: "[f2,db3,f3]",
  R: "[eb3,bb3,eb4]@2 [eb3,bb3,eb4]!2 [db3,ab3,db4]@2 [db3,ab3,db4]!2", // Eb5 Db5
  S: "[c3,g3,c4] [bb2,f3,bb3] [c3,g3,c4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4]!3", // C5 Bb5 C5 Eb5
  T: "[~ c4 db4 eb4 db4 c4 db4 eb4@5 c4@3 bb3@8 ~]/3", U: "~@4 c4@4 db4@7 ~ db4@4 eb4@4 db4@4 c4@4",
  V: "[~ 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",
  W: "[~@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",
  X: "[~@4 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@8 eb4@5 c4@3 bb3@9]/8", Y: "[[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@8 O@2 P@2 O@2 P@2 O@2 P@2
  O@2 Q R S T@4 U@4 T@4 V@22 W@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]@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]@3 [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]@4, ~@29 [f2,bb2]@36 ~@28 [f2,bb2]@36 ~@28 [bb2,eb3]@36 eb3@31 eb3@32, ~@193 ab2@27 [eb4,ab4]@12 ~@24, ~@56 ab2@7 ~]/8", // Db5 C5 Bb5 Db5 C5 Bb5 Db5 C5 …
  O: "[~@2 [bb3,db4,gb4]@4 [bb3,db4,gb4]@4 [bb3,db4,gb4]@4 [bb3,db4,gb4] ~]/2", // Gb
  P: "[~@2 [c4,eb4,ab4]@4 [c4,eb4,ab4]@4 [c4,eb4,ab4]@4 [c4,eb4,ab4] ~]/2", Q: "~@2 [bb3,db4,f4]@4 [bb3,db4,f4] ~",
  R: "[bb3,eb4,g4] [ab3,db4,f4]", S: "[g3,c4,eb4]@3 [eb3,g3,bb3]@5",
  T: "[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
  U: "[[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
  V: "[[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
  W: "[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 C A@7 C A C A C F G@16 H I G@5 J G@7 J G J G J G J G J G J G J G J G K G
  J G J L M ~@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 ~@11 x ~@3 x ~@3 x ~@6 x ~@3", G: "x ~@2 x!3 ~ x", H: "x ~@2 x!2 ~@2 x", I: "x ~@2 x ~ x ~ x",
  J: "~ x ~ x!3 ~ x", K: "x!2 ~ x!3 ~ x", L: "x ~@21 x ~@3 x ~@2 x ~@2",
  M: "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 L M N@10 O M P Q@2 N@7 R N S
  N@5 T N T N U V W X Y Z AA AB AC AD AE AF AG AH AI AD AE AJ ~@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: "~@9 x ~@14 x ~@7", M: "~@4 x ~@2 x ~ x ~@2 x ~@3",
  N: "~ x ~ x", O: "~@8 x ~@4 x!3 ~@8 x ~@7", P: "~ x!3", Q: "x!4", R: "~@4 x ~ x!2 ~@4 x ~@3",
  S: "~@4 x ~@2 x ~ x ~@2 x ~ x!2", T: "~@4 x ~ x!2 ~ x ~@2 x ~ x!2", U: "~@4 x ~ x!2 ~ x ~@2 x!4",
  V: "~@4 x ~@5 x!3 ~ x ~", W: "~@4 x ~ x!2 ~ x ~ x!2 ~@3", X: "~ x!2 ~@2 x!2 ~", Y: "~@2 x!3 ~ x!2 ~ x ~@2 x ~ x!2",
  Z: "~@4 x!3 ~@3 x!5 ~", AA: "~@4 x ~@4 x!4 ~@3", AB: "~@4 x ~@5 x!3 ~@3", AC: "~@2 x ~ x ~ x!2 ~ x ~@2 x!4",
  AD: "~@2 x ~ x!3 ~@5 x ~ x!2", AE: "~@4 x ~ x ~@2 x!7", AF: "~@2 x ~ x ~@2 x!6 ~@3",
  AG: "~@2 x!3 ~ x!2 ~ x ~@2 x ~@3", AH: "~@4 x!11 ~", AI: "~@2 x ~ x ~@4 x!4 ~ x!2", AJ: "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 E F@3 G ~@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!3", F: "x!4", G: "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@6 D E ~@16 F G E@3 G@3 E G E@3 G@7 H G@3 H G@3 H G@3 H G H ~ I
  ~@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: "~@9 x ~@7 x ~@6 x ~@7",
  E: "x!4", F: "~@2 x!2", G: "~ x!3", H: "~ x!2 ~", I: "~@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 B ~ A ~ A ~@3 B ~ B ~ B ~ A ~ E ~@7 E
  ~@3 E ~@2 F G E ~@3 H ~ E ~ E ~@3 H ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~ E I ~@2
>`.pickRestart({
  A: "~ x ~@30", B: "~ x ~@27 x ~@2", C: "~ x ~@15 x ~@14", D: "~ x ~@11 x ~@18", E: "x", F: "x!2", G: "x ~@2 x ~@4",
  H: "x ~@6 x", I: "~@7 x",
// … 24 more lines

More by Oasis