Strudelify
Comfortably Numb cover art

1979 · The Wall

Comfortably Numb

Pink Floyd

KeyD majorTempo128 bpm
0:00/0:00
// Comfortably Numb — Pink Floyd
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 186 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 · "Fingered Bass"
const bass = note(`<
  A B A C D B E F G H D A D B I F G J D@2 A B E F K H A B L M E N L O P Q R S T U R V W X L O Y Z L O P AA R V AB AC S V
  AB AD AE AF V AG@2 AH L AH E AI AJ AH E AF R V AK@2 R AL T AM AN AO V AP AQ AH D AR E F G J A AS D B E I AT J A AU L O
  I Z L O E AV R V T AP S V W AW L O I AX AQ O P AY AZ@2 AP BA BB@2 BC BD E BE V AP O BF BG@2 BH A I BI BJ J AS BK A AR
  BL F G BM BN BO A AR BP AI G J D BQ A AR BP AI G J D BQ A AR BP AI G J D BQ ~@2
>`.pickRestart({
  A: "b1@23 ~", B: "b1", C: "b1@7 ~", D: "b1@11 ~", E: "a1@11 ~", F: "a1", G: "g2@3 f#1", H: "e1@23 ~", I: "a1@23 ~",
  J: "e1", K: "g2@3 f#1, a1 ~@23", L: "d2@11 ~", M: "~ d2@23", N: "a1 ~@5 a1@17 ~", O: "d2", P: "a1@7 ~",
  Q: "a1 ~@5 a1@9 b1@8 ~", R: "c2@11 ~", S: "c2@23 ~", T: "g2@11 ~", U: "g2@2 ~@4 g2@9 b1@8 ~", V: "c2", W: "g2@23 ~",
  X: "g2@2 ~@5 g2@17", Y: "~ a1@22 ~", Z: "a1 ~@2 a1@9", AA: "a1@2 ~@4 a1@9 ~ b1@8", AB: "g1@11 ~", AC: "g1",
  AD: "g1 g1@5 ~@2", AE: "a1@11 ~ a1@11 ~", AF: "a1@15 b1@8 ~", AG: "[g1@23 d2@22 ~@3]/2", AH: "d2 ~ d2@6",
  AI: "a1 ~@5 a1@18", AJ: "d2@5 ~", AK: "[g2@29 ~ g2@18]/2", AL: "c2@2 ~@5 c2@17", AM: "g2 ~@2 g2@9",
  AN: "~@9 [d2,e2] ~@14, a1@7 ~", AO: "a1@2 ~ a1@5 b1@4", AP: "g2", AQ: "d2@7 ~", AR: "b1 ~@2 b1@9", AS: "~ b1@22 ~",
  AT: "g2@9 ~ g2@2, ~@3 f#1", AU: "b1 ~ b1@6", AV: "a1 ~ a1@3 b1@3", AW: "g2 ~ g2@6", AX: "~ a1@2 ~@4 a1@17",
  AY: "~ g#1 ~@5 a1@8 b1@9, a1 ~@7", AZ: "c2/2", BA: "~ g2@23", BB: "[c2@11 ~ c2@30 ~ c2@5]/2", BC: "~ g2@22 ~",
  BD: "g2 ~@5 g2@17 ~", BE: "a1 ~@5 a1@9 ~ b1@8", BF: "d2@3 ~@3 d2@16 ~@2", BG: "[d2@35 ~ d2@12]/2",
  BH: "~ b1@23, ~ d2 ~@22", BI: "a1 ~ a1@6", BJ: "~ g2@17 f#1@6", BK: "b1 ~@5 b1@16 ~@2", BL: "~ a1@23",
  BM: "e1@17 ~ e1@6", BN: "b1@2 b1 ~@3 b1@17 ~", BO: "b1@2 ~@4 b1@15 ~@3", BP: "a1@20 ~@2 a1 ~", BQ: "b1@2 ~@4 b1@17 ~",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · string ensemble 1 · "Strings 1"
const string_ensemble_1 = note(`<
  A@6 B@3 C D@8 E@6 F@4 G@4 H@4 I@2 J@6 K@8 I@2 L@6 M@2 N O P@7 Q@3 R@2 S@2 T@2 U@4 V W X@2 Y@2 Z@3 C AA@7 AB Y@2 AC@2
  AD@2 AE@4 I@2 AF@2 AG@4 AH@8 AI@8 AJ@2 AK@2 AL@4 AM@2 AN@2 AO@2 AP@2 Y@2 AD@2 AQ AR AS@2 AT@4 AU C AV@4 AW@2 AX AY@7
  AZ@5 ~
>`.pickRestart({
  A: "[[b3,d4,f#4]@143 ~]/6", B: "[[c#4,e4]@23 ~@10 f#3@3, ~@23 g3@10 ~@3, ~@47 [b3,d4]@24 ~]/3", C: "[e3,g3,b3]@11 ~",
  D: "[[b3,d4,f#4]@47 [b3,d4,f#4]@46 ~@2 [c#4,e4]@47 ~ [g3,b3,d4]@19 f#3@5 [e3,g3,b3]@23 ~@2, ~@143 c#4 ~@48]/8", // Bm C#m G Em
  E: "[[b3,d4,f#4]@47 [b3,d4,f#4]@47 ~ [a3,c#4,e4]@47 ~@2]/6", // Bm A
  F: "[g3@17 f#3@6 ~ e3@24 [d4,f#4]@48, b3@95 ~, d4@23 ~@25]/4", G: "[[d4,f#4]@47 ~ [c#4,e4]@47 ~, a3]/4",
  H: "[[d4,f#4]@46 ~@41 b3@7 ~@2, a3@85 ~@11, ~@48 [c#4,e4]@47 ~]/4", I: "[[c4,e4,g4]@47 ~]/2",
  J: "[[b3,d4]@47 ~ [c4,e4]@47 ~ [b3,d4]@48, g3]/6", // Bm C Bm
  K: "[~@49 [c#4,e4]@47 [d4,f#4]@47 ~@40 b3@7 ~@2, f#4@24 ~@48 [c#4,e4]@23 ~, ~@12 a3@169 ~@11]/8", // C#m D C#m
  L: "[[b3,d4]@47 ~ [c4,e4]@47 ~ [b3,d4]@46 ~@2, g3]/6", M: "[a3@39 ~ b3@7 ~, [c#4,e4]@47 ~, f4 ~@23]/2",
  N: "[c4,e4,g4]@23 ~", O: "[g3,b3,d4]@23 ~",
  P: "[[a3,f#4]@47 [f#4,a4]@46 ~@3 f4@2 ~@46 [d4,f#4]@24, d4@94 ~@2 [c#4,e4]@47 ~@25, c#4 ~@46 a3@93 ~ a3@25 ~@2]/7", // D F#m D C#m
  Q: "[d4@23 ~@40 b3@7 ~@2, a3@31 ~@5, ~@12 [c#4,e4]@23 ~]/3", R: "[[c4,e4,g4]@23 ~]/2", S: "[[g3,b3,d4]@47 ~]/2",
  T: "[[g3,c4,e4]@47 ~]/2", U: "[[g3,b3]@47 ~ a3@38 ~ b3@8 ~, d4@42 ~@5 e4@48 ~, ~ c#4]/4", V: "[c4,e4,g4]@11 ~",
  W: "[g3,b3,d4]@11 ~", X: "[[a3,d4,f#4]@47 ~]/2", Y: "[[b3,d4,f#4]@47 ~]/2",
  Z: "[[c#4,e4]@46 ~ g3@16 ~@3 f#3@5 ~, ~@47 [b3,d4]@23 ~@2]/3", // C#m Bm
  AA: "[[b3,d4,f#4]@47 [b3,d4,f#4]@47 ~@2 c#4@47 ~ g3@15 ~@3 f#3@5 ~, ~@95 e4@47 ~@2 f3 ~@23, ~@96 a3@6 ~@41 [b3,d4]@23 ~@2]/7", // Bm
  AB: "[e3,g3,b3]@23 ~, d3 ~@23", AC: "[a3,d4,f#4]/2", AD: "[[a3,c#4,e4]@23 ~]/2",
  AE: "[[d4,f#4]@47 ~@40 b3@7 ~@2, a3@43 ~@5, ~@24 [c#4,e4]@23 ~]/4", AF: "[[g3,b3,d4]@23 ~]/2",
  AG: "[~@6 e4@41 ~ [b3,d4]@46 ~@2, g3@47 ~, c4@47 ~@49]/4", // Bm
  AH: "[[d4,f#4]@48 ~ [c#4,e4]@47 [d4,f#4,d5]@48 [c#4,e4,e5]@48, a3@191 ~, b3 ~@191]/8", // D C#m D C#m
  AI: "[[e4,c5]@24 [b3,d4,d5]@24 [c4,e4]@23 ~ [g3,b3,d4]@24, g3@143 ~@49, c4@23 ~@25 g5@48, a3@2 ~@94 f4 ~@95]/8", // C Bm C G
  AJ: "[a3@38 ~@2 b3@7 ~, [c#4,e4,a5], g3 ~@23]/2", AK: "[[c4,e4,g4]@23 ~ [g3,b3,d4]@23 ~, g5]/2",
  AL: "[[a3,d4]@72 [a3,d4]@5 ~ [a3,d4]@5 [a3,d4,f#4]@5 ~@2 [a3,d4]@5 ~, f#4@83 ~@6 f#4@6 ~, c#4 ~@31]/4", // D5 D D5
  AM: "[b3,d4,f#4]/2", AN: "[~ d#4 d4@3 ~@43, c#4@23 ~, ~ [a3,e4]@46 ~, ~@2 d#4 ~@45]/2",
  AO: "[g3@18 f#3@5 ~ e3 [e3,g3]@23, b3, d4@13 ~@11, c4@2 ~@23 a2 ~@22]/2", AP: "[[b3,d4,f#4]@23 ~]/2",
  AQ: "g3@17 f#3@7, [b3,d4]@11 ~", AR: "[e3,g3,b3]@23 ~", AS: "[[b3,d4,f#4]@47 ~, a3 ~@15]/2",
  AT: "[[b3,d4]@46 ~ [a3,c#4,e4]@47 ~@2]/4", AU: "g3@15 ~@3 f#3@5 ~, [b3,d4]@23 ~",
  AV: "[[b3,d4,f#4]@95 ~, c#4 ~@95]/4", AW: "[[a3,c#4,e4]@47 ~]/2", AX: "g3@17 ~ f#3@6, [b3,d4]@11 ~",
  AY: "[[e3,g3]@24 [d4,f#4]@94 ~@2 a3@47 ~, b3@119 [c#4,e4]@47 ~@2]/7", // Em D C#m
  AZ: "[g3@18 f#3@5 ~ [e3,g3]@24 [d4,f#4]@49 ~@23, [b3,d4]@23 b3@74 ~@23]/5", // Em D Bm
})).s("gm_string_ensemble_1").gain(0.36)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~@27 A@2 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL ~@37 A@2 B C D E F G H
  I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL ~@44
>`.pickRestart({
  A: "[~@24 [d4,f#4]@6 ~@3 [d3,a3,d4] ~@2 [d3,a3,d4,f#4] ~@6 [a3,d4] ~@2 [d3,a3,d4,f#4] ~, ~@11 d3@4 ~@9, ~@23 a3@6 ~@19]/2", // D D5 D D5 D
  B: "[d3,a3,d4,f#4] ~@2 a3 ~@2 a3 ~@2 [d3,a3] [d4,f#4] ~ [d3,a3] [d4,f#4] ~@2 a3 ~ [d4,f#4] [d3,a3]@2 a3@3", // D D5 D D5 D D5
  C: "[e3,c#4,e4] ~@2 a3 ~@5 [e3,a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@2 a3 ~@2 [a3,c#4] ~@2 c#4 ~@2", // C#m A
  D: "[e3,a3,c#4,e4] ~@2 [a3,c#4] ~@2 [a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@2 [a3,c#4,e4] e3 ~ a3 ~@2 [e3,c#4] e4 ~ a3@2 ~", // A C#m
  E: "[d3,a3,d4,f#4] ~@2 a3 ~@5 [d3,a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~@2 a3 ~@2 [a3,d4,f#4] ~@2 a3 ~@2", // D
  F: "[d3,a3,d4,f#4] ~@2 a3 ~@2 a3 ~@2 [d3,a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~@2 a3 ~@2 [d3,d4,f#4] ~@2 a3@2 ~", // D
  G: "[e3,a3,c#4,e4] ~@2 a3 ~@2 [a3,c#4] ~@2 [e3,a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@2 a3 ~@3 a3 ~ [a3,c#4] ~@2", // A
  H: "[e3,a3,c#4,e4] ~@2 a3 ~@2 [a3,c#4] ~@2 [e3,a3,c#4,e4] ~@2 [a3,c#4,e4] e3 ~@2 a3 ~@2 [a3,c#4,e4] ~ [c#4,e4] [e3,a3] ~", // A C#m A5
  I: "[g3,c4,e4] e3 ~@2 g3 ~@2 g3 ~@2 [e3,g3,c4,e4] ~ [c4,e4] [e3,g3] ~@7 [g3,c4,e4] ~@2", // C Em C
  J: "[e3,g3,c4,e4] ~@2 g3 ~@2 c4 [g3,e4] ~ [e3,g3,c4,e4] ~@2 [e3,g3,c4,e4] ~@2 g3 ~@2 [e3,c4,e4] ~@2 g3@2 ~", // C
  K: "[d3,g3,b3,d4] ~@2 g3 ~@2 g3 ~@2 [d3,g3,d4] b3 ~ [d3,g3,b3,d4] ~@2 g3 ~@3 [b3,d4] ~ b3 [g3,d4] ~", // G G5 G Bm G5
  L: "[d3,g3,b3,d4] ~@2 g3 ~@2 b3 [g3,d4] ~ [d3,b3] [g3,d4] ~ b3 [d3,g3,d4] ~@2 g3 ~ [d3,b3,d4] g3 ~ g3@2 ~", // G G5 G G5 G
  M: "[e3,g3,c4,e4] ~@2 g3 ~@2 g3 ~@2 [e3,g3,c4,e4] ~@2 [e3,g3,c4,e4] ~@2 g3 ~@3 [g3,c4,e4] ~ e3 [g3,c4,e4] ~", // C
  N: "[e3,g3,c4] e4 ~ [g3,c4] e4 ~ [g3,c4,e4] ~@2 [e3,g3,c4,e4] ~@2 [g3,c4,e4] ~@2 g3 ~@2 [e3,c4] [g3,e4] ~ g3@2 ~", // C C5 C
  O: "[d3,g3,b3,d4] ~@2 g3 ~@3 g3 ~ [d3,g3,b3,d4] ~@2 [d3,g3,b3,d4] ~@2 g3 ~@2 [b3,d4] g3 ~ [g3,b3,d4] ~@2", // G Bm G
  P: "[d3,g3,b3,d4] ~@5 [g3,d4] ~@2 [d3,b3,d4] g3 ~ [d3,g3,b3,d4] ~@2 [g3,b3] ~@2 [g3,b3] d4 ~ [g3,b3,d4] ~@2", // G G5 G
  Q: "[d3,a3,d4,f#4] ~@2 a3 [d4,f#4] ~@2 a3 ~ d3 [a3,d4,f#4] ~ [d3,a3,f#4] d4 ~@2 a3 ~@2 a3 ~ [d3,a3,d4,f#4] ~@2", // D
  R: "[d3,a3,d4,f#4] ~@2 [a3,f#4] ~@2 [d3,a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~@2 [a3,f#4] ~@2 [d3,a3,d4,f#4] ~@2 a3@2 ~", // D
  S: "[e3,a3,c#4,e4] ~@2 a3 ~@3 [a3,c#4,e4] ~ a3 [e3,c#4,e4] ~ [e3,a3,c#4] e4 ~ a3 ~@3 [a3,c#4,e4] ~ [e3,a3,c#4,e4] ~@2", // A C#m A
  T: "[e3,a3,c#4,e4] ~@2 [a3,c#4] ~@2 [a3,c#4] ~@2 [e3,a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [e3,a3,c#4] e4 ~ a3@2 ~", // A
  U: "[d3,a3,d4,f#4] ~@2 a3 ~@2 a3 ~@2 [d3,a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~@2 [a3,f#4] ~@2 [a3,d4] ~@2 a3 d4 ~", // D D5
  V: "[d3,a3,d4,f#4] ~@2 a3 ~@2 a3 ~@2 [d3,a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~@2 a3 ~@2 [d3,a3,d4,f#4] ~@2 a3@2 ~", // D
  W: "[e3,a3,c#4,e4] ~@2 c#4 a3 ~ [a3,c#4] e4 ~ [e3,a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@5 [a3,c#4] ~@2 [e3,a3,c#4] ~@2", // A
  X: "[e3,a3,c#4,e4] ~@5 a3 ~@2 [e3,a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@2 a3 ~@3 [a3,c#4,e4] ~ [e3,a3,c#4] ~@2", // A
  Y: "[e3,g3,c4,e4] ~@3 g3 ~@4 [e3,e4] ~@2 [e3,g3,c4,e4] ~@8 [e3,g3,c4,e4] ~@2", // C E C
  Z: "[e3,g3,c4,e4] ~@2 g3 ~@5 [e3,g3,c4,e4] ~@2 [e3,g3,c4,e4] ~@2 g3 ~@2 [e3,c4,e4] ~@2 g3@2 ~", // C
  AA: "[d3,g3,b3,d4] ~@2 g3 ~@6 [d3,g3,b3,d4] ~@2 [d3,g3,b3,d4] ~ g3 ~@6 [g3,d4] ~", // G G5
  AB: "[d3,g3,b3,d4] ~@2 g3 ~@5 [d3,b3,d4] g3 ~ [d3,g3,b3,d4] ~@2 g3 ~@2 [d3,b3,d4] ~@2 g3@2 ~", // G
  AC: "[g3,c4,e4] e3 ~ g3 ~@3 g3 ~@2 [e3,g3,c4,e4] ~ e3 [g3,c4,e4] ~@2 g3 ~@2 [g3,c4] ~ e3 [g3,c4,e4] ~", // C C5 C
  AD: "~ [e3,g3,c4,e4] ~@2 g3 ~@2 g3 ~@2 [g3,c4,e4] ~ [e3,g3,c4] e4 ~@2 g3 ~ e3 [c4,e4] ~ g3@2 ~", // C
  AE: "[d3,g3,b3,d4] ~@2 g3 ~@6 [d3,g3,b3,d4] ~ [d3,g3,b3] d4 ~ g3 ~@2 [g3,b3,d4] ~@2 [d3,g3,b3,d4] ~@2", // G
  AF: "[d3,g3,b3,d4] ~@2 g3 ~@5 g3 [d3,b3,d4] ~ [d3,g3,b3,d4] ~@2 g3 ~@2 [d3,g3,b3,d4] ~@2 g3 ~@2", // G
  AG: "[e3,a3,c#4,e4] ~@2 a3 ~@2 a3 ~@2 [a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@2 a3 ~@2 [a3,c#4,e4] ~@2 [a3,c#4] e4 ~", // A
  AH: "[e3,a3,c#4,e4] ~@2 [a3,c#4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [e3,a3,c#4,e4] ~@2 a3 ~@3 [e3,a3,c#4,e4] ~ a3@2 ~", // A
  AI: "g4 [c4,e4] ~@7 [c4,e4,g4] ~@2 [c4,e4,g4] ~@5 [c4,e4,g4] ~@2 c4 ~@2", // C
  AJ: "[g3,b3,d4] ~@8 [g3,b3,d4] ~@2 [g3,b3,d4] ~@5 [g3,b3,d4] ~@5", // G
  AK: "[a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@5 [a3,f#4] ~@2 [a3,f#4] ~@2", // D
  AL: "[a3,d4,f#4] ~@2 [a3,f#4] ~@5 [a3,d4,f#4] ~@2 [a3,f#4] d4 ~@2 a3 ~ [d4,f#4] a3 ~ a3 ~@2", // D
})).s("gm_acoustic_guitar_steel").gain(0.31)

// chords · music box · Bm G
const music_box = note("<~@92 [[b4,d5]@18 ~ a4@5, ~@3 c#5] [[g4,b4]@22 ~ g4] ~@92>").s("gm_music_box").gain(0.41)

// chords · music box · Bm G
const music_box_2 = note("<~@92 [[b3,d4]@18 ~ a3@5, ~@3 c#4] [[g3,b3]@22 ~ g3] ~@92>").s("gm_music_box").gain(0.36)

// other · piano · "Piano / Bass"
const piano = note("<~@65 A B@2 C D E@2 F G H@2 I@2 J@2 K L ~@104>".pickRestart({
  A: "~@11 a4", B: "[d5 a4 ~@34 f#5@4 g5@4 ~ f#5@3, f#5@29 ~@19]/2", C: "e5@15 d5@5 c#5@4", D: "a4@4 e4@17 ~@3",
  E: "[d4@28 ~@6 a4@2 f#5@4 g5@5 f#5@3, ~@36 d5 ~@11]/2", F: "e5@15 d5@5 c#5@3 ~", G: "a4@2 e4@5 ~ e4@2 f#4@2",
  H: "[g4@30 ~@3 e4@2 ~ g4@3 ~ f#4@4 e4@4, ~@35 f#4@2 ~@11]/2", I: "[d4@33 ~@7 e4@4 f#4@4]/2",
  J: "[g4@22 ~@2 g5@4 f#5@4 e5@5 d5@3 b4@4 ~ g4@3, ~@11 a4 ~@12, ~@23 d5@2 ~@23]/2", K: "~ g4 ~@19 c4@3, d4@5 ~",
  L: "b3@3 ~",
})).s("gm_piano").gain(0.51)

// bass · electric bass pick · "Piano / Bass"
const bass_2 = note(`<
  ~@144 A@2 B@2 C D E@2 A@2 F@2 G D A@2 H@2 F@2 G D I J K@2 L@2 G D K@2 M@2 N@2 O@2 P@4
>`.pickRestart({
  A: "[b2@11 ~]/2", B: "[a2@43 ~@5]/2", C: "g2@8 ~ f#2@3", D: "e2", E: "[b2@43 ~@5]/2", F: "[a2@11 ~]/2", G: "g2@3 f#2",
  H: "[~ b2@43 ~@4]/2", I: "b2 ~", J: "b2@2 ~@4 b2@15 ~@3", K: "[b2@15 ~]/2", L: "[a2@15 ~]/2", M: "b2/2",
  N: "[a2@47 ~]/2", O: "[g2@18 f#2@5 e2@25]/2", P: "[b2@73 ~@23]/4",
})).s("gm_electric_bass_pick").gain(0.51)

// chords · vibraphone
const vibraphone = note("<~@90 A@2 ~@94>".pickRestart({
  A: "[~@19 e5@13 ~@16, ~@16 a4@15 ~@17, ~@17 c#5@15 ~@16]/2",
})).s("gm_vibraphone").gain(0.2)

// drums · clap
const clap = s("cp").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A@2
  D C A C A C A C A@2 E C A C A C A C A C A@2 E C A C A C A@2 B A B A B A B A B A B A B A B C A C A C A@2 E C A C A C A
  F G C A C A C A C A C A C A C A@2 E C A C A C A F G C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C
  A C A C A C A ~@2
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "x ~@6 x", D: "x ~@2 x ~ x!2 ~", E: "~@2 x ~@2 x!2 ~", F: "x ~@2 x ~@4",
  G: "~ x ~ x!2 ~@2 x",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~@59 A ~@9 B ~@11 B ~@29 B ~@7 C ~@15 B ~@7 C ~@42>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~ x!3", C: "~@4 x!2 ~ x",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@58 A ~@10 B ~@11 B ~@29 B ~@7 C ~@15 B ~@7 C ~@42>".pickRestart({
  A: "~@5 x!2 ~", B: "x!2 ~@6", C: "x!2 ~@2",
})).gain(0.25)

// drums · congas
const congas = s("conga:18").struct("<[x!4]!28 ~@60 [x!4]!16 ~@82>").gain(0.63)

// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<A@59 B A@9 ~ A@11 ~ A@29 ~ A@7 C A@15 ~ A@7 C A@40 ~@2>".pickRestart({
  A: "~ x", B: "~@5 x ~@2", C: "x!2 ~@2",
})).gain(1.27)

// drums · shaker
const shaker = s("sh").struct(`<
  A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A@3 ~@5 A ~@3 A ~@3 A ~ A ~ A ~@3 A ~@3 A ~ A ~@7 A ~@7 A ~@7 A ~@7 A
  ~@7 A ~@7 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.2)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@28 A B@7 A B@7 A B@7 A B@5 C ~ A B@5 A B@2 ~ A B@3 A B A B A B@2 ~ A B@3 A B ~@16 A B@6 ~ A B@5 D ~ A B@7 A B@6 ~ A
  B@3 A B D ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x!2 ~", D: "x!3 ~",
})).gain(0.97)

stack(
  bass, string_ensemble_1, acoustic_guitar_steel, music_box, music_box_2, piano, bass_2, vibraphone, clap, hihat, crash,
  congas, agogo_bells, shaker, claves
)

More by Pink Floyd