Strudelify

Only in Dreams

Weezer

KeyE♭ minorTempo156 bpm
0:00/0:00
// Only in Dreams — Weezer
// 156 bpm, 4/4, key D# minor. 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 310 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(156/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 guitar jazz · "Bass Guitar"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C
  D A B C D E F G H E F G H I J K L E F M@2 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B
  C D E F G H E F G H I J K L E F N ~ A B C D A B C D A B C D A B C D A O C D A O C D A O C D A O C D A O C D A O C D A
  O C D A O C D ~@4 A B C D A B C D A B C D A B C D A B C D A B C D P Q@2 R@2 Q@2 R@2 Q@2 R@2 Q@2 R@2 Q@2 R@2 Q@2 R@2
  Q@2 S T Q@2 S T Q@2 S T Q@2 S T Q@2 S T Q@2 S T Q@2 U@2 O C D A O C D A O C D A O C D A O C D A O C D A O C D A B C D
  A B C D A B C D A B C V@3
>`.pickRestart({
  A: "bb1!3 eb2", B: "eb2!3 db2", C: "ab1@2 ab1@2 ab1@2 ab1!2", D: "db2!2 b1!2", E: "bb1!2 ab1 gb1", F: "gb1!4",
  G: "b1!2 bb1 ab1", H: "ab1!4", I: "e1!3 a1", J: "a1!4", K: "gb1!3 b1", L: "b1!4", M: "[b1!2 c2 db2@5]/2",
  N: "b1!2 c2 db2", O: "eb2!4", P: "bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 ~ eb2@3 eb2@2, ~@5 bb1@2 ~",
  Q: "[eb2!7 ~ ab1!8, ~@7 eb2@2 ~@7]/2",
  R: "[db2@2 db2@2 db2@2 ~@2 b1@2 b1@2 b1@2 ~@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 ~ eb2@3 eb2@2, ~@3 db2@2 ~@2 b1@2 ~@4 bb1@2 ~]/2",
  S: "db2!3 ~ b1!4, ~@3 db2@2 ~@3", T: "[bb1,b1]@2 bb1@2 bb1@2 bb1@2 bb1@2 ~ eb2@3 eb2@2, ~@5 bb1@2 ~",
  U: "[db2!3 ~ b1!3 ~ bb1@2 bb1@2 bb1@2 eb2@2, ~@3 db2@2 ~@2 b1@2 ~@7]/2", V: "[db2@4 db2@4 ~ b1@4 b1@5 gb1@21 ~@9]/3",
})).s("gm_electric_guitar_jazz").gain(0.41)

// chords · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note(`<
  ~@8 A B C D A B C D A B E D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D
  ~@246
>`.pickRestart({
  A: "[eb2,bb2,db3,gb3,db4,gb4]!4", B: "[eb2,b2,db3,gb3,db4,gb4]!4", C: "[eb2,ab2,eb3,gb3,db4,eb4]!4",
  D: "[eb2,b2,eb3,gb3,b3,eb4] [eb2,b2,eb3,gb3,bb3,eb4] [eb2,b2,eb3,gb3,b3,eb4] [eb2,b2,eb3,gb3,bb3,eb4]", // B Bmaj7 B Bmaj7
  E: "[eb2,ab2,eb3,gb3,db4,eb4]!4, [b2,db3,gb4] ~@15", // Ebm7 Bsus2
})).s("gm_acoustic_guitar_steel").gain(0.32)

// chords · acoustic guitar steel · "Steel Guitar" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@84 A B C D ~@16 A B E D A B C D A B C D A B C D ~@20 A B E D A B E D A B E D ~@140 A B E D A B E D A B E D ~@6
>`.pickRestart({
  A: "[eb2,bb2,db3,gb3,db4,gb4]!4", B: "[eb2,b2,db3,gb3,db4,gb4]!4",
  C: "[eb2,ab2,eb3,gb3,db4,eb4]!4, [b2,db3,gb4] ~@15", // Ebm7 Bsus2
  D: "[eb2,b2,eb3,gb3,b3,eb4] [eb2,b2,eb3,gb3,bb3,eb4] [eb2,b2,eb3,gb3,b3,eb4] [eb2,b2,eb3,gb3,bb3,eb4]", // B Bmaj7 B Bmaj7
  E: "[eb2,ab2,eb3,gb3,db4,eb4]!4", // Ebm7
})).s("gm_acoustic_guitar_steel").gain(0.24)

// other · electric guitar muted · "Muted Guitar"
const electric_guitar_muted = note("<~@15 A B ~@30 A B ~@38 A B ~@14 A B ~@205>".pickRestart({
  A: "~@2 bb3 ab3@2 db4@3", B: "gb4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.31)

// other · electric guitar clean · "Clean Electric"
const electric_guitar_clean = note(`<
  ~@16 A@3 B C@3 D C@3 B C@3 D ~@16 A@3 B C@3 D C@3 B C@3 D ~@40 A@3 B C@3 D C@3 B C@3 D ~@71 E F@3 G H ~@113
>`.pickRestart({
  A: "[~@2 db3 gb3@2 gb3 db3 gb3@2 gb3 ab3 gb3]/3", B: "b3 bb3 b3 bb3",
  C: "[gb3@2 db3 gb3@2 gb3 db3 gb3@2 gb3 ab3 gb3]/3", D: "a3 bb3 a3 bb3", E: "~@7 db4",
  F: "[bb4 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 eb4 b4]/3",
  G: "gb4 eb4 b4 gb4 eb4 b4 gb4 eb4", H: "bb4 ~@7",
})).s("gm_electric_guitar_clean").gain(0.56)

// other · electric guitar clean · "Clean Electric" · soft notes
const electric_guitar_clean_2 = note("<~@196 A@3 B C@3 D E@2 F G H ~@101>".pickRestart({
  A: "[~ gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 eb4 b4]/3",
  B: "gb4 eb4 b4 gb4 eb4 b4 gb4 eb4",
  C: "[bb4 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4@2]/3",
  D: "eb4@2 ~ gb4 eb4 ~ gb4 eb4, ~@2 b4@2 ~ b4@2 ~", E: "[bb4 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 bb4@2 gb4 db4 ~]/2",
  F: "~ gb4@2 ~@2 gb4@2 ~@2 bb4@3 gb4@2 db4@2, bb4@2 ~ db4@2 ~@2 db4@4 ~@5, ~ bb4 ~@2",
  G: "b4 gb4 eb4 b4 gb4 eb4 b4 gb4", H: "f4 ~@3",
})).s("gm_electric_guitar_clean").gain(0.16)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@64 A B C D A B C D E F G H A B I@2 ~@40 A B C D A B C D E F G H A B I@2 ~@16 J K D L J K D L J K D L J K D L J K D L
  J K D L J K D L J K D L M@2 ~@38 N O@2 P Q@2 R S T@3 U@3 V@4 W@2 T X@4 Y@4 Z AA@2 AB@7 AC AD AE AF@2 AG AH@3 AI AJ@3
  AK AL@3 AK AM@3 AK AM@3 AN AO AP@2 AQ@2 ~@16
>`.pickRestart({
  A: "[bb1,f2,bb2]!2 [ab1,eb2,ab2] [gb1,db2,gb2]", B: "[gb1,db2,gb2]!4", C: "[b1,gb2,b2]!2 [bb1,f2,bb2] [ab1,eb2,ab2]",
  D: "[ab1,eb2,ab2]!4", E: "[e1,b1,e2]!3 [a1,e2,a2]", F: "[a1,e2,a2]!4", G: "[gb1,db2,gb2]!3 [b1,gb2,b2]",
  H: "[b1,gb2,b2]!4", I: "[[b1,gb2,b2]!2 [c2,g2,c3] [db2,ab2,db3]@5]/2", J: "[bb1,f2,bb2]!3 [eb2,bb2,eb3]",
  K: "[eb2,bb2,eb3]!4", L: "[db2,ab2,db3]!2 [b1,gb2,b2]!2", M: "[bb1,f2,bb2]/2", N: "~@8 bb3 ~ bb3 ~ bb3 ~ bb3 ~",
  O: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~", P: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  Q: "db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~", R: "db4 ~ db4 ~ db4 ~ db4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~",
  S: "eb4 ~ eb4 ~ eb4 ~ eb4 ~ f4 ~ f4 ~ f4 ~ f4 ~", T: "f4!8",
  U: "[f4!3 ~ eb4!3 ~ db4!7 ~ gb4!8, ~@3 f4@2 ~@2 eb4@2 ~@6 db4@2 ~@7]/3",
  V: "[gb4!7 ~ f4!7 ~ eb4!3 ~ db4!3 ~ eb4!3 ~ f4!4, ~@7 gb4@2 ~@6 f4@2 ~@2 eb4@2 ~@2 db4@2 ~@2 eb4@2 ~@3]/4",
  W: "[eb4!3 ~ db4!3 ~ eb4!3 ~ f4!4, ~@3 eb4@2 ~@2 db4@2 ~@2 eb4@2 ~@3]/2",
  X: "[f4!7 ~ gb4!7 ~ ab4!7 ~ gb4!8, ~@7 f4@2 ~@6 gb4@2 ~@6 ab4@2 ~@7]/4",
  Y: "[gb4!7 ~ ab4!7 ~ b4!7 ~ bb4!8, ~@7 gb4@2 ~@6 ab4@2 ~@6 b4@2 ~@7]/4", Z: "bb4!8",
  AA: "[bb4!3 ~ b4!3 ~ db5!8, ~@3 bb4@2 ~@2 b4@2 ~@7]/2",
  AB: "[db5!7 ~ gb4!3 ~ ab4 ~ bb4 ~ b4!7 ~ f4!7 ~ gb4!7 ~ b4!3 ~ bb4 ~ ab4 ~ b4!3 ~ bb4 ~ ab4!2, ~@7 db5@2 ~@2 gb4@2 ab4@2 bb4@2 ~@6 b4@2 ~@6 f4@2 ~@6 gb4@2 ~@2 b4@2 bb4@2 ab4@2 ~@2 b4@2 bb4@2 ~]/7",
  AC: "b4!3 ~ bb4 ~ ab4!2, ~@3 b4@2 bb4@2 ~", AD: "db5!7 bb4, [bb1,f2,bb2]!3 [eb2,eb3]", AE: "gb4!8, [eb2,bb2,eb3]!4",
  AF: "[~ b3!7 f4!8, [ab1,eb2,ab2]!4 [db2,ab2,db3]!2 [b1,gb2,b2]!2, b3 ~@15, ~ bb2@31]/2", // Ab5 Db5 B5
  AG: "db4!8, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", // Bb5 Eb5
  AH: "[gb4!8 b3!8 f4!8, [eb2,bb2,eb3]!3 bb2@9, ~@3 [eb2,eb3] [ab1,eb2,ab2]!4 [db2,ab2,db3]!2 [b1,gb2,b2]!2]/3", // Eb5 Eb Ab5 Db5 B5
  AI: "db4!6 gb4!2, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", // Bb5 Eb5
  AJ: "[gb4!8 gb4!4 ab4!4 bb4!4 ab4!4, [eb2,bb2,eb3]!3 bb2@9, ~@3 [eb2,eb3] [ab1,eb2,ab2]!4 [db2,ab2,db3]!2 [b1,gb2,b2]!2]/3", // Eb5 Eb Ab5 Db5 B5
  AK: "gb4!8, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", // Bb5 Eb5
  AL: "[gb4!7 bb4 a4!8 bb4!8, [eb2,bb2,eb3]!3 bb2@9, ~@3 [eb2,eb3] [ab1,eb2,ab2]!4 [db2,ab2,db3]!2 [b1,gb2,b2]!2]/3", // Eb5 Eb Ab5 Db5 B5
  AM: "[gb4!8 gb4!8 bb4!2 ab4!2 gb4!2 eb4!2, [eb2,bb2,eb3]!3 bb2@9, ~@3 [eb2,eb3] [ab1,eb2,ab2]!4 [db2,ab2,db3]!2 [b1,gb2,b2]!2]/3", // Eb5 Eb Ab5 Db5 B5
  AN: "gb4!6 eb4 gb4, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", AO: "gb4!6 eb4 gb4, [eb2,bb2,eb3]!4",
  AP: "[gb4!6 [ab1,eb2,ab2]@2 [db2,ab2,db3]@2 [db2,ab2,db3,bb4]@2 [b1,gb2,b2,ab4]@2 [b1,gb2,b2,gb4]@2, [ab1,eb2,ab2]!3 b4@2 ~@3]/2", // Ab5 Db5 Bbm7 Abm7 B5 Ab5
  AQ: "[bb1,gb2,bb2,bb4]/2", // Ebm
})).s("gm_overdriven_guitar").gain(0.56)

// chords · distortion guitar · "Distorted Guitar"
const distortion_guitar = note(`<
  ~@64 A B C D A B C D E F G H A B I@2 ~@40 A B C D A B C D E F G H A B I@2 ~@16 J K D L J K D L J K D L J K D L J M N O
  J M N O J M N O J M N O P@2 ~@56 Q R@2 S T@2 U@2 V U V W X@2 Y@2 Z AA@5 AB AC AD AE AF AG AD AE AH AI AJ AK AL AM AN
  AO AP@2 AQ@2 AR@2 AS@2 AT AU AV@4 ~@16
>`.pickRestart({
  A: "[bb1,f2,bb2]!2 [ab1,eb2,ab2] [gb1,db2,gb2]", B: "[gb1,db2,gb2]!4", C: "[b1,gb2,b2]!2 [bb1,f2,bb2] [ab1,eb2,ab2]",
  D: "[ab1,eb2,ab2]!4", E: "[e1,b1,e2]!3 [a1,e2,a2]", F: "[a1,e2,a2]!4", G: "[gb1,db2,gb2]!3 [b1,gb2,b2]",
  H: "[b1,gb2,b2]!4", I: "[[b1,gb2,b2]!2 [c2,g2,c3] [db2,ab2,db3]@5]/2", J: "[bb1,f2,bb2]!3 [eb2,bb2,eb3]",
  K: "[eb2,bb2,eb3]!4", L: "[db2,ab2,db3]!2 [b1,gb2,b2]!2", M: "[eb2,bb2,eb3] [eb2,bb2,eb3,gb3]!3",
  N: "[ab1,eb2,ab2,b2]@2 [ab1,eb2,ab2,b2]@2 [ab1,eb2,ab2,b2]@2 b2!2, ~@3 [ab1,eb2,ab2]", // Abm Ab5
  O: "[db2,ab2,db3,f3]!2 [b1,gb2,b2,eb3]!2", P: "[bb1,f2,bb2,db3]/2", Q: "~@2 gb4!6", R: "db4!8", S: "db4!4 eb4!4",
  T: "f4!8", U: "f4!4 gb4!4", V: "ab4!4 gb4!4", W: "gb4!8", X: "ab4!8", Y: "bb4!8", Z: "b4!8", AA: "db5!8",
  AB: "db5!8, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", AC: "db5!7 bb4, [eb2,bb2,eb3]!4", AD: "bb4!4 ab4!4, [ab1,eb2,ab2]!4",
  AE: "gb4!4 f4!4, [db2,ab2,db3]!2 [b1,gb2,b2]!2", AF: "gb4!7 db5, [bb1,f2,bb2]!3 [eb2,bb2,eb3]",
  AG: "db5!8, [eb2,bb2,eb3]!4", AH: "gb4!4 f4!4, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", AI: "db4!6 f4!2, [eb2,bb2,eb3]!4",
  AJ: "gb4!4 ab4!4, [ab1,eb2,ab2]!4", AK: "bb4!4 ab4!4, [db2,ab2,db3]!2 [b1,gb2,b2]!2",
  AL: "gb4!6 a4!2, [bb1,f2,bb2]!3 [eb2,bb2,eb3]", AM: "a4!8, [eb2,bb2,eb3]!4", AN: "bb4!8, [ab1,eb2,ab2]!4",
  AO: "bb4!8, [db2,ab2,db3]!2 [b1,gb2,b2]!2", // Db5 B5
  AP: "[[bb1,f2,bb2]@2 ~@2 [bb1,f2,bb2]@2 [eb2,bb2,eb3]@2 ~@5 bb4 a4 ab4, ~ [bb1,f2,bb2] ~@2 [eb2,bb2,eb3] [eb2,bb2,eb3,gb3]!3, ~@3 gb5@3 f5@3 eb5@2 db5@2 ~@3]/2", // Bb5 Eb5 Bb5 Eb5 Ebm
  AQ: "[[ab1,eb2,ab2,b2]@2 ~@2 [ab1,eb2,ab2,b2]@2 b2!2 ~@5 bb4 a4 ab4, gb4@3 gb5@3 f5@3 eb5@2 db5@2 ~@3, ~ [ab1,eb2,ab2,b2] ~ [ab1,eb2,ab2] [db2,ab2,db3,f3]!2 [b1,gb2,b2,eb3]!2]/2", // Abm Ab5 Db B
  AR: "[[bb1,f2,bb2]@2 ~@2 [bb1,f2,bb2]@2 ~@7 eb5 db5 b4, gb4@3 bb5@5 ~@8, ~ [bb1,f2,bb2] ~ [eb2,bb2,eb3] [eb2,bb2,eb3] [eb2,bb2,eb3,gb3]!3, ~@7 ab5@2 gb5@2 f5@2 ~@3]/2", // Bb5 Eb5 Ebm
  AS: "[[ab1,eb2,ab2,b2]@2 ~@4 b2!2 ~@7 db5, bb4@3 bb5@3 ~@10, ~ [ab1,eb2,ab2,b2]!2 [ab1,eb2,ab2] [db2,ab2,db3,f3]!2 [b1,gb2,b2,eb3]!2, ~@5 ab5@4 gb5@2 f5@2 eb5@2 ~]/2", // Abm Ab5 Db B
  AT: "[bb1,f2,bb2] ~ [bb1,f2,bb2] [eb2,bb2,eb3], db5@3 db6@5, ~ [bb1,f2,bb2] ~@2", // Bb5 Eb5 Bb5
  AU: "~@2 b5@2 ~@2 bb5@2 [eb2,bb2,eb3,gb3,b5]@3 ~@3 gb5@2, [eb2,bb2,eb3]@4 [eb2,bb2,eb3,gb3]@4 ~@3 bb5@3 ~@2, ~@3 [eb2,bb2,eb3,gb3]", // Bmaj7 Eb5 Ebm
  AV: "[[ab1,eb2,ab2,b2]@2 ~@2 [ab1,eb2,ab2,b2]@2 b2!2 ~@2 [db2,ab2,db3,f3]@2 [b1,gb2,b2,eb3,bb5]@2 [b1,gb2,b2,eb3]@2 [bb1,gb2,bb2]@16, gb5@3 f5@3 eb5@3 b5@3 ~@2 db5@16 ~@2, ~ [ab1,eb2,ab2,b2] ~ [ab1,eb2,ab2] [db2,ab2,db3,f3] ~@11]/4", // Abm Db Bmaj7 B Ebm Abm Ab5 Db
})).s("gm_distortion_guitar").gain(0.64)

// chords · distortion guitar · "Distorted Guitar" · soft notes
const distortion_guitar_soft = note("<~@220 A B C D E@2 F@2 G@2 H I J@2 K L M N M G O@2 P ~@67>".pickRestart({
  A: "db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~", B: "db3 ~ db3 ~ db3 ~ db3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~",
  C: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~", D: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~",
  E: "gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~", F: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~",
  G: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~", H: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  I: "b3 ~ b3 ~ b3 ~ b3 ~ db4 ~ db4 ~ db4 ~ db4 ~", J: "db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~",
  K: "eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~", L: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~",
  M: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ bb3 ~", N: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ f4 ~", O: "gb4!8",
  P: "gb4!2 ~@6",
})).s("gm_distortion_guitar").gain(0.24)

// other · guitar harmonics · "Harmonic Guitar"
const guitar_harmonics = note(`<
  ~@150 A@2 ~@39 B@6 C@2 ~@3 D E F@2 ~@2 G@2 H I J K L I J G M N O P Q R S T ~@5 U@3 ~@16 V@3 ~@5 W X@3 Y@2 ~@31 Z AA@4
  ~@10
>`.pickRestart({
  A: "ab4/2", B: "[~ b2@4 ~]/3", C: "b2/2", D: "eb3", E: "f3", F: "[~@3 gb3@16 ~@13]/2",
  G: "f3 ~ f3 ~ f3 ~ f3 ~ f3@4 f3 ~ f3 ~", H: "gb3 ~@11 gb3 ~ gb3 ~", I: "gb3 ~ gb3 ~ gb3 ~ gb3 ~@5 gb3 ~ gb3 ~, ~ b2",
  J: "f3 ~ f3 ~ f3 ~ f3 ~ f3@4 f3 ~ f3 ~, bb2", K: "f3 ~ f3 ~ f3 ~ f3 ~ f3@4 f3 ~ f3 ~, ~@3 b2",
  L: "gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3@4 gb3 ~ gb3 ~, bb2", M: "bb2@8 ~@4 gb3 ~ gb3 ~, f3 ~@15",
  N: "gb3 ~ ab3 ~ ab3 ~ ab3 ~@5 ab3 ~ ab3 ~", O: "db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~ db3 ~",
  P: "db3 ~ eb3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~", Q: "gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~ gb3 ~",
  R: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~", S: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~",
  T: "bb3 ~ bb3 ~ bb3 ~ bb3 ~@9", U: "[~ db3@5]/3", V: "[~ db4@5]/3", W: "~@3 ab4@2 gb4@2 ~", X: "[~ ab4@10 ~]/3",
  Y: "[~@2 f4 ab4@2 ab4@3]/2", Z: "ab4 bb3", AA: "[~ bb4, ~ bb3@8 ~@7]/4",
})).s("gm_guitar_harmonics").gain(0.07)

// other · guitar harmonics · "Harmonic Guitar" · soft notes
const guitar_harmonics_soft = note("<~@210 A B ~@3 B ~@2 A C ~@5 D ~@84>".pickRestart({
  A: "~@2 gb3 ~ gb3 ~ gb3 ~ gb3@4 ~@4", B: "~@2 gb3 ~", C: "~@2 ab3 ~", D: "~@8 bb3 ~ bb3 ~ bb3 ~ bb3 ~",
})).s("gm_guitar_harmonics").gain(0.04)

// drums · kick
const kick = s("bd").struct(`<
  ~@16 A@48 B@14 A ~@5 A@32 B A B A B@14 A ~@5 A@12 B@12 C D E D F G@2 C B C@2 D B C@3 H I F J A@4 ~@75 K B L@5 M I N O
  B I N P Q R H S@5 T U S V W@2 A ~@17
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "x!4 ~@4", D: "x ~ x!2 ~@4", E: "x!4 ~@3 x", F: "x!2 ~ x", G: "x!4 ~@2 x ~",
  H: "x ~ x!2 ~@3 x", I: "x ~ x!2 ~ x!3", J: "x ~@6 x", K: "~ x ~@2 x ~@2 x", L: "x!3 ~@5", M: "x!3 ~@4 x",
  N: "x ~ x ~@3 x!2", O: "x ~ x ~@2 x!3", P: "x ~ x!2 ~ x!2 ~", Q: "x ~ x ~@2 x!2 ~", R: "x ~ x!2 ~@2 x!2",
  S: "x ~@3 x ~ x ~@3 x!2 ~@2 x!2", T: "x ~ x!3 ~ x ~", U: "x ~@3 x!4 ~@2 x!2 ~@2 x!2", V: "x ~@13 x!2",
  W: "x ~ x!3 ~ x!2",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A@66 ~@6 A@50 ~@6 A@26 B C A@3 D A@3 E A@4 B E A F A@11 ~@61 F@7 G A@6 B E A@5 H I J K L M@4 N M@2 O ~@20
>`.pickRestart({
  A: "~ x", B: "~@2 x!2", C: "~ x ~@2 x ~ x!2", D: "~@4 x ~ x!2", E: "~ x ~@2 x ~@3", F: "x!8",
  G: "x!2 ~@2 x!4 ~@2 x!4 ~@2", H: "~@4 x ~@2 x", I: "~ x ~@2 x ~@2 x", J: "~ x ~@2 x!2 ~@2", K: "~@8 x ~@3 x!2 ~@2",
  L: "~@6 x!4 ~@2 x!2 ~@2", M: "~@6 x!4 ~@6", N: "~@2 x!2 ~@2 x!10", O: "~@4 x!5 ~ x!2 ~@4",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@235 [x!8]!21 ~@54>").gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@235 [x!8]!28 ~@19 [~@12 x!2 ~@2]!4 ~ [x!4 ~@8 x!2 ~@2] [~@12 x!2 ~@2]!2 ~@20>")
  .gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
// … 17 more lines

More by Weezer