Strudelify

Changes

David Bowie

KeyC majorTempo100 bpm
0:00/0:00
// Changes — BOWIE DAVID
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · fretless bass · "Bass"
const bass = note(`<
  A B C D E F E F E G H I J G K L M N O P Q N O R S T U V W X Y Z AA AB@2 AC AD F E F E G K AE AF AG K AH AI N O P AJ N
  O AK AL T U V W X Y Z AA AB@2 AC AM AN AO AP AQ L AR AS T U V AT X Y Z AA AB@2 AC AU@2 AV@3 AW AX AY AZ@4
>`.pickRestart({
  A: "c1", B: "c#1@3 c#2@2 c#2 c#1@2", C: "d1@3 d2@2 d1 d2@2", D: "d#1@3 d#2@2 d#2 d#1@2", E: "f1!8",
  F: "d1!2 f#1!2 a1!2 b1 a1", G: "c1@5 g1 c2 g1", H: "e1@5 e1 f#1 g1", I: "f1@3 c2@3 f1 f#1", J: "g1@2 d1@2 f1@2 d1 c1",
  K: "e1@5 e1 c2 g1", L: "f1@3 f1@2 c1 f1 f#1", M: "g1@3 g1@2 d1 g0@2", N: "c1@2 g1 c2 d1@2 a1 d2",
  O: "e1@2 b1 e2 d#1@2 a#1 d#2", P: "d1@3 d2@2 d2 a1 g#1", Q: "g1@3 g1@2 d1@2 c#1", R: "d1@3 d2@2 d1@2 d#2",
  S: "g1!4 f1@3 f1", T: "c2@3 c2 b1@3 b1", U: "a1@3 a1 g1@3 g1", V: "f1@3 f1 e1@3 e1", W: "d1 d1@2 d1 g1@3 g1",
  X: "f1@3 f1 c2@3 c2", Y: "b1@3 b1 a1@3 a1", Z: "g1@3 g1 f1@3 f1", AA: "e1@3 e1 d2@3 d2",
  AB: "[a1 g1 a#1 f1@3 e1 d1]/2", AC: "a0 c1@3", AD: "c0@2 c0@2 c0@2 c0!2 c0@2 c0@2 c0@2 c0@2", AE: "f1@4 f1@2 f1 f#1",
  AF: "g1@2 b0@2 f1@2 f1 d1", AG: "c1@4 c2 g1 c2 g1", AH: "f1@6 f1 f#1", AI: "g1@4 g1 d1 g1 d1",
  AJ: "g1@3 d2@2 g1 f1 d1", AK: "d1@3 d1@2 a0 c1 f1", AL: "g1@2 g1!2 f1@3 f1", AM: "f1@3 f1@2 c1@2 d1",
  AN: "f1@3 f1@2 f1!2 a0", AO: "c1@10 g1@2 c2 c2@2 c2", AP: "c2@3 c2@2 c2 g1!2", AQ: "f1@3 c2@2 f1 f#1 g1",
  AR: "g1@3 g1@2 d1 f1 f#1", AS: "g1@2 g1!2 f1@2 f1@2", AT: "d1@3 d1 g1@3 g1", AU: "[a1 g1 a#1 f1@3 e2 d2]/2",
  AV: "[a1@2 c2@8 d2@5 a2@3 e2@5 b2]/3", AW: "e2 d#2@3", AX: "~ e2@4 ~ d2@10", AY: "~ a2@4 f2@2 ~ c#2@8",
  AZ: "[c#2@2 ~ d#2@2 c#2@4 ~ c2@45 ~@9]/4",
})).s("gm_fretless_bass").gain(0.35)

// chords · piano · "PIANO 1 TREBLE(MC)"
const piano = note(`<
  A B C D E F E F E G H I J K L M N O P Q R S T U V W X Y Z AA X AB AC AD@2 AE ~ F AF F AF AG AH AI AJ AK AL AM AN AO AP
  AQ AR AS AT AU V W X Y Z AA X AB AC AD@2 AE AV AW AX AY AW@2 AZ V W X Y Z AA X AB AC AD@2 AE AD@2 BA BB@2 BC BD BE
  BF@4
>`.pickRestart({
  A: "[g3,b3,e4]", B: "[g#3,c#4,f4]", C: "[a3,c4,f4]", D: "[a#3,d#4,g4]", E: "[a3,c4,d#4,f4]",
  F: "d4!2 f4 f#4 a4!2 b4 a4", G: "[g3,c4,e4]@10 g4@2 e5 d5 c5 g4", H: "[g4,b4,e5]@5 e4@3",
  I: "[c4,a4,c5]@6 [c4,a4,c5]@4 c4@2 f4 a4 c5 a4", J: "[d4,g4,b4]@4 [c4,f4,a4] c4 f4 a4",
  K: "[c4,e4,g4]@6 [e4,e5]@8 c5 d5", L: "e5 b4 g4 e4 b4 e4 [g4,b4] g4",
  M: "[c4,f4,a4]@4 c4@2 [c4,f4,a4]@4 c4@2 f4 g4 a4 f4", N: "[b3,d4,g4]@2 g4 a4 b4 g4 a4 g4",
  O: "[c4,e4,g4,b4] [d4,f4,a4,c5]", P: "[e4,g4,b4,d5]@3 [e4,g4,b4,d5] [d#4,f#4,a#4,c#5]@4",
  Q: "[d4,f4,a4,c5]@4 a4 e5 c5 a4", R: "[d4,b4,d5]@3 [b3,d4,g4]@2 d4 f4 g4",
  S: "[c4,e4,g4,b4]@6 g4@2 [d4,f4,a4,c5]@6 f4 g4", T: "[e4,g4,b4,d5]@2 d4 g4 [a#3,c#4,f#4]@3 [a#3,c#4,f#4]",
  U: "c5 f4 d4 f4 a4 f4 d4!2", V: "g3 a3 b3 c4 d4 e4 f4 g4 f4 g4 a4 b4 a4 b4 c5 d5", W: "e5 [g3,c4,e4]!7",
  X: "[g3,c4,e4]!8", Y: "[a3,c4,f4]!8", Z: "[a3,d4,f#4]!4 [b3,d4,g4]!4", AA: "[a3,c4,f4]!4 [g3,c4,e4]!4",
  AB: "[g3,c4,e4]!4 [a3,c4,f4]!4", AC: "[a3,c4,f4]!4 [a3,d4,f#4]!4",
  AD: "[[c4,e4,a4] [b3,d4,g4] [d4,f4,a#4] [a3,c4,f4]@3 [g#4,c5,e5] [f#4,b4,d5]]/2", AE: "[f4,a4,d5] [e4,g4,c5]@3",
  AF: "[a3,c4,e4,f4]!8", AG: "[g3,c4,e4]@4 c4 e4 g4 c5", AH: "[g4,b4,e5] [e4,g4,b4]",
  AI: "a4@2 c5@2 c4@2 f4@2 c4@2 f4@2 c5 a4 f4 c4", AJ: "[d4,g4,b4]@6 [d4,g4,b4]@2 [c4,f4,a4]@4 c4 f4 a4 f4",
  AK: "[c4,e4,g4]@4 c4@2 g3@2 c4@4 g4 a4 c5 d5", AL: "e5@4 b4@2 [e4,g4]@6 e5 b4 g4@2",
  AM: "a4@2 c4@2 a3@2 c4@2 a3@2 c4@2 a4 g4 f4 c4", AN: "[b3,d4,g4]@3 [d4,b4]@2 g4 d4 b3",
  AO: "[c4,e4,g4,b4]@2 g4 b4 [d4,f4,a4,c5]@3 [d4,f4,a4,c5]", AP: "[e4,g4,b4,d5]@8 [d#4,f#4,a#4,c#5]@3 f#4 d#4@2 f#4@2",
  AQ: "[d4,f4,a4,c5]@3 [c4,a4]@2 f4 c4@2", AR: "[b3,d4,g4]@3 g3@5", AS: "[e4,g4,c5]@3 b4 [c4,f4,a4]@3 c5",
  AT: "[d4,g4,b4]@2 g4 e4 [c#4,f#4,a#4]@4", AU: "[d4,f4,a4,c5]@2 a3 c4 a3 c4 f4 a4",
  AV: "[f4,a4,c5]@3 [a3,c4,f4]@2 [a3,c4,f4]!3", AW: "[a3,c4,f4]@3 [a3,c4,f4]@2 [a3,c4,f4]!3",
  AX: "[g3,c4,e4]@6 [g3,c4,e4]@6 [f4,a4,c5] [f4,a4,c5]@2 [f4,a4,c5]", AY: "[e4,g4,c5]@3 e4@2 g4 e4@2",
  AZ: "[b3,d4,g4]!8", BA: "[f4,a4,d5] [e4,g4]@2 ~", BB: "[~@2 [f3,a3]@8 ~ [b3,e4]@2 ~@3]/2",
  BC: "~@2 [g3,a#3,c#4]@3 ~@3", BD: "~@3 [f3,a3,c4]@4 ~", BE: "~@3 [f3,a3,c4]@4 ~ [f3,g#3]@5 [g#3,c4]@3",
  BF: "[~@5 [g#3,c4]@4 ~ [g3,b3]@45 ~@9]/4", // G# G
})).s("gm_piano").gain(0.26).pan(0.4)

// bass · piano · "PIANO 1 BASS (MC)"
const bass_2 = note(`<
  A B C D E F E F E G H I J G K L M N O P Q N O R S T U V W X Y Z AA AB@2 AC AD F E F E G K AE AF AG K AH AI N O P AJ N
  O AK AL T U V W X Y Z AA AB@2 AC AM AN AO AP AQ L AR AS T U V AT X Y Z AA AB@2 AC AU@2 AV@3 AW AX AY AZ@4
>`.pickRestart({
  A: "c2", B: "c#2@3 c#3@2 c#3 c#2@2", C: "d2@3 d3@2 d2 d3@2", D: "d#2@3 d#3@2 d#3 d#2@2", E: "f2!8",
  F: "d2!2 f#2!2 a2!2 b2 a2", G: "c2@5 g2 c3 g2", H: "e2@5 e2 f#2 g2", I: "f2@3 c3@3 f2 f#2", J: "g2@2 d2@2 f2@2 d2 c2",
  K: "e2@5 e2 c3 g2", L: "f2@3 f2@2 c2 f2 f#2", M: "g2@3 g2@2 d2 g1@2", N: "c2@2 g2 c3 d2@2 a2 d3",
  O: "e2@2 b2 e3 d#2@2 a#2 d#3", P: "d2@3 d3@2 d3 a2 g#2", Q: "g2@3 g2@2 d2@2 c#2", R: "d2@3 d3@2 d2@2 d#3",
  S: "g2!4 f2@3 f2", T: "c3@3 c3 b2@3 b2", U: "a2@3 a2 g2@3 g2", V: "f2@3 f2 e2@3 e2", W: "d2 d2@2 d2 g2@3 g2",
  X: "f2@3 f2 c3@3 c3", Y: "b2@3 b2 a2@3 a2", Z: "g2@3 g2 f2@3 f2", AA: "e2@3 e2 d3@3 d3",
  AB: "[a2 g2 a#2 f2@3 e2 d2]/2", AC: "a1 c2@3", AD: "c1@2 c1@2 c1@2 c1!2 c1@2 c1@2 c1@2 c1@2", AE: "f2@4 f2@2 f2 f#2",
  AF: "g2@2 b1@2 f2@2 f2 d2", AG: "c2@4 c3 g2 c3 g2", AH: "f2@6 f2 f#2", AI: "g2@4 g2 d2 g2 d2",
  AJ: "g2@3 d3@2 g2 f2 d2", AK: "d2@3 d2@2 a1 c2 f2", AL: "g2@2 g2!2 f2@3 f2", AM: "f2@3 f2@2 c2@2 d2",
  AN: "f2@3 f2@2 f2!2 a1", AO: "c2@10 g2@2 c3 c3@2 c3", AP: "c3@3 c3@2 c3 g2!2", AQ: "f2@3 c3@2 f2 f#2 g2",
  AR: "g2@3 g2@2 d2 f2 f#2", AS: "g2@2 g2!2 f2@2 f2@2", AT: "d2@3 d2 g2@3 g2", AU: "[a2 g2 a#2 f2@3 e3 d3]/2",
  AV: "[a2@2 c3@8 d3@5 a3@3 e3@5 b3]/3", AW: "e3 d#3@3", AX: "~ e3@4 ~ d3@10", AY: "~ a3@4 f3@2 ~ c#3@8",
  AZ: "[c#3@2 ~ d#3@2 c#3@4 ~ c3@45 ~@9]/4",
})).s("gm_piano").gain(0.3).pan(0.6)

// other · alto sax · "SAX 9-3 (MC)"
const alto_sax = note("<~@90 A B C D E@4 ~>".pickRestart({
  A: "e4@3 d4@2 e4@2 ~ e4@4 d4@2 c4@2", B: "d4@2 ~@3 a4@2 g4", C: "e4@2 d4 c4@5 d#4@7 d4",
  D: "e4 c4@2 ~ d4@2 ~@7 d#4@2 ~, ~ d4 ~@14",
  E: "[d4@2 ~ c4@4 ~ d4@4 c4@6 ~ f4@4 e4@2 ~ f4@4 ~ f4@2 ~@2 e4@2 ~@2 f4@2 ~ e4@17 ~@5]/4",
})).s("gm_alto_sax").gain(0.25).pan(0.3)

// chords · rock organ · "ORGAN (MC)"
const rock_organ = note(`<
  A B C D E ~ E ~ E F G H I J ~ K L M N O P Q R ~@2 S T U V W T X Y Z@2 AA ~@2 AB ~ AB AC AD ~ AE AF AG ~ AH AI AJ AK AL
  AM AN AO ~ S T U V W T X Y Z@2 AA AP AQ AR AS AQ@2 AT ~ S T U V W T X Y Z@2 AA Z@2 AU AV@2 AW AX AY AZ@4
>`.pickRestart({
  A: "[g4,b4,e5]", B: "[g#4,c#5,f5]", C: "[a4,c5,f5]", D: "[a#4,d#5,g5]", E: "[a4,c5,d#5,f5]", F: "[g4,c5,e5]@5 ~@3",
  G: "[g5,b5,e6]@5 e5@3", H: "[c5,a5,c6]@3 [c5,a5,c6]@2 ~@3", I: "[d5,g5,b5] ~", J: "[c5,e5,g5]@3 [e5,e6]@4 ~",
  K: "[c5,f5,a5]@2 ~ [c5,f5,a5]@2 ~@3", L: "[b4,d5,g5] ~@3", M: "[c5,e5,g5,b5] [d5,f5,a5,c6]",
  N: "[e5,g5,b5,d6]@3 [e5,g5,b5,d6] [d#5,f#5,a#5,c#6]@4", O: "[d5,f5,a5,c6] ~", P: "[d5,b5,d6]@3 [b4,d5,g5]@2 ~@3",
  Q: "[c5,e5,g5,b5]@3 ~ [d5,f5,a5,c6]@3 ~", R: "[e5,g5,b5,d6]@2 ~@2 [a#4,c#5,f#5]@3 [a#4,c#5,f#5]", S: "~ [g4,c5,e5]!7",
  T: "[g4,c5,e5]!8", U: "[a4,c5,f5]!8", V: "[a4,d5,f#5]!4 [b4,d5,g5]!4", W: "[a4,c5,f5]!4 [g4,c5,e5]!4",
  X: "[g4,c5,e5]!4 [a4,c5,f5]!4", Y: "[a4,c5,f5]!4 [a4,d5,f#5]!4",
  Z: "[[c5,e5,a5] [b4,d5,g5] [d5,f5,a#5] [a4,c5,f5]@3 [g#5,c6,e6] [f#5,b5,d6]]/2", AA: "[f5,a5,d6] [e5,g5,c6]@3",
  AB: "[a4,c5,e5,f5]!8", AC: "[g4,c5,e5] ~", AD: "[g5,b5,e6] [e5,g5,b5]",
  AE: "[d5,g5,b5]@3 [d5,g5,b5] [c5,f5,a5]@2 ~@2", AF: "[c5,e5,g5] ~@3", AG: "~@3 [e5,g5]@3 ~@2",
  AH: "[b4,d5,g5]@3 [d5,b5]@2 ~@3", AI: "[c5,e5,g5,b5]@2 ~@2 [d5,f5,a5,c6]@3 [d5,f5,a5,c6]",
  AJ: "[e5,g5,b5,d6]@8 [d#5,f#5,a#5,c#6]@3 ~@5", AK: "[d5,f5,a5,c6]@3 [c5,a5]@2 ~@3", AL: "[b4,d5,g5]@3 g4@5",
  AM: "[e5,g5,c6]@3 ~ [c5,f5,a5]@3 ~", AN: "[d5,g5,b5] ~ [c#5,f#5,a#5]@2", AO: "[d5,f5,a5,c6] ~@3",
  AP: "[f5,a5,c6]@3 [a4,c5,f5]@2 [a4,c5,f5]!3", AQ: "[a4,c5,f5]@3 [a4,c5,f5]@2 [a4,c5,f5]!3",
  AR: "[g4,c5,e5]@6 [g4,c5,e5]@6 [f5,a5,c6] [f5,a5,c6]@2 [f5,a5,c6]", AS: "[e5,g5,c6]@3 ~@5", AT: "[b4,d5,g5]!8",
  AU: "[f5,a5,d6] [e5,g5]@2 ~", AV: "[~@2 [f4,a4]@8 ~ [b4,e5]@2 ~@3]/2", AW: "~@2 [g4,a#4,c#5]@3 ~@3",
  AX: "~@3 [f4,a4,c5]@4 ~", AY: "~@3 [f4,a4,c5]@4 ~ [f4,g#4]@5 [g#4,c5]@3", AZ: "[~@5 [g#4,c5]@4 ~ [g4,b4]@45 ~@9]/4",
})).s("gm_rock_organ").gain(0.07).pan(0.7)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A B C D E F E F G H ~@14 I J@2 K@2 L@4 M@2 N@2 F E F G H ~@14 O P@2 K@2 L@4 M@2 Q@3 R@2 S@2 T I J@2 K@2 L@4 M@2 U V@2
  N@2 ~@8
>`.pickRestart({
  A: "[g3,b3,e4]", B: "[g#3,c#4,f4]", C: "[a3,c4,f4]", D: "[a#3,d#4,g4]", E: "f3!8, f4", F: "d3!2 f#3!2 a3!2 b3 a3",
  G: "f4", H: "c4@15 ~", I: "g4 a4 b4 c5 a4 b4 c5 d5 b4 c5 d5 e5 [b4,c5] e5@2 f5, b3 a3, ~@13 d5 ~@2",
  J: "[g5@15 ~@2 g5@15, c6, g3 ~@3]/2", K: "[[f5,a5]@3 [g5,b5]]/2", L: "[[f5,a5] [g5,c6]@4 [f5,a5]@3]/4",
  M: "[g5!2 f5 ~@3 c6 b5, ~@3 a5@5]/2", N: "[a5@2 g5@11 ~@3]/2",
  O: "g4 a4 b4 c5 ~ b4 c5 d5 b4 c5 d5 e5 c5 d5 e5 f5, b3 a3, ~@2 a4 ~@5", P: "[[g5,c6], g3 ~@3]/2",
  Q: "[a5 ~@3 [f4,a4]@8, ~@2 g5@11 ~@11]/3", R: "[~ e4, [g4,c5]@31 ~]/2", S: "[f4,a4]/2", T: "[g4,b4], d5@3 ~",
  U: "a5 g5@3", V: "[g5 ~ f5 ~@3 c6 b5, ~@2 g5@3 ~ a5@10]/2",
})).s("gm_string_ensemble_1").gain(0.11).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B C B C ~@15 D E C E C E C E C F G H I J C J C I ~@14 D E C E C E C E C@2 G H I K C K I K C K C E C E C@5 L H M
  G H ~@9
>`.pickRestart({
  A: "x!3 ~ x ~ x ~", B: "x ~ x ~ x!3 ~", C: "x!2", D: "~ x!2 ~ x ~ x ~", E: "x ~@2 x!2 ~@3", F: "x!3 ~", G: "~@2 x!2",
  H: "x!2 ~@2", I: "x", J: "x ~@3 x!2 ~@2", K: "x ~@2 x ~ x ~@2", L: "~ x", M: "x!4",
})).gain(0.25)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@4 A B C B D ~@15 C ~ E ~ F ~ F ~ F ~@4 G D H D ~@15 C ~ I H I H I H I ~@3 E H I H E H ~ H F ~ I H@5 ~@15
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@6", C: "~@3 x ~ x ~@2", D: "~@5 x ~ x", E: "~@3 x ~ x ~ x", F: "~@3 x ~@4", G: "~ x ~@5 x",
  H: "~@7 x", I: "~@3 x ~@3 x",
})).gain(0.14)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@5 ~@15 B A@8 C D ~@2 A@4 ~@15 B A@4 E A@4 F ~ A@7 G A@9 F ~@2 D ~@10
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "~@3 x", D: "x!5 ~ x ~@9", E: "~ x!2 ~@3 x ~",
  F: "x!5 ~ x ~@5 x ~@3", G: "~@2 x ~ x ~@3 x ~@3 x!2 ~@2",
})).gain(0.25)

// drums · clap
const clap = s("cp").struct("<~@34 [~ x ~@2] ~@64>").gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@15 B ~@4 C ~@2 B ~@53 D ~@2 E ~@9>".pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~@6 x!2 ~@8", D: "~@13 x ~ x", E: "~@2 x!2 ~@12",
})).gain(0.18)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A B A ~@16 B A B A C A B A D E F ~ B A B A ~@16 B A B A C A B A D G H A B A B A B A I A B A B A B A B ~@15
>`.pickRestart({
  A: "x!3 ~ x ~ x ~", B: "x ~ x!5 ~", C: "x ~ x ~ x!3 ~", D: "~@3 x ~ x ~@2", E: "x", F: "~ x ~@2", G: "x!3 ~",
  H: "x ~ x!2", I: "x ~ x!2 ~ x ~@2",
})).gain(0.25)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A B A B A ~@16 C A C A C A C A B D ~@2 B E B A ~@16 C A C A C A C A B ~@2 E B E B E B A F A C A C A C A C ~@15
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~@6", C: "~ x ~@5 x", D: "~@5 x ~ x", E: "~@3 x ~ x ~@2", F: "~@7 x",
})).gain(0.14)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~@5 x ~@2] ~@77 [~@2 x!2] ~@12>").gain(0.18)

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

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@3 A ~ A ~ A ~@16 A ~@11 A@4 ~@16 A ~@11 A@6 ~ B ~@4 C ~@18>".pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "~@3 x ~@4",
})).gain(0.14)

// drums · crash
const crash = s("cr").struct("<~@25 A ~@3 B ~@3 C D E ~@29 C D E ~@8 A ~@3 B ~@3 C D E C D E ~@9>".pickRestart({
  A: "x", B: "~ x", C: "x!4", D: "~@2 x!2", E: "x!2 ~@2",
})).gain(0.25)

stack(
  bass, piano, bass_2, alto_sax, rock_organ, string_ensemble_1, kick, kick_soft, snare, clap, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, open_hat_soft, crash
)

More by David Bowie