Strudelify

On the Radio

Donna Summer

KeyE minorTempo132 bpm
0:00/0:00
// On the Radio — Donna Summer
// 132 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "Bass Guitar" electric guitar jazz (copy of ch 6 "Slap Bass 1" slap bass 1)
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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 · piano · "Bright Piano"
const piano = note("<~@63 A B C D E F G H ~@67 A B C I ~>".pickRestart({
  A: "e2 ~ e2 ~ f#2 ~ g2 ~ a2@2 ~ b2@2 ~ e2@2", B: "~@2 e2 ~ f#2 ~ g2 ~ a2@2 ~ b2 ~@2 d2@2", C: "~@2 e2 ~@13",
  D: "~@10 [c7,d7,e7,f7,g7] [b5,c6,d6,e6,f6,g6,a6,b6] [b4,c5,d5,e5,f5,g5,a5,d6] [c5,d5,e5,f5,g5,a5,b5,c6] [g4,a4,b4,g5,a5,b5,c6,d6] [g4,a4,b4,c5,d5,e5,f5]", // C Bm7b5 Cmaj7 G G7
  E: "g3 ~ g3 ~ e3@2 d3@2 g3@2 ~@4 d3 e3", F: "g3 ~ g3 ~ e3@2 d3 ~ b3 ~ a3@2 g3@3 ~",
  G: "c4 ~ c4 ~ a3 ~ g3 ~ c4 ~@6 g3", H: "[a3,c4] ~ c4 ~ a3@2 g3 ~ e4@2 d4 ~ c4@2 b3 ~",
  I: "~@10 [c7,d7,e7,f7,g7] [b5,c6,d6,e6,f6,g6,a6,b6] [b4,c5,d5,e5,f5,g5,a5,d6] [c5,d5,e5,f5,g5,a5,b5,c6] [g4,a4,b4] ~", // C Bm7b5 Cmaj7 G
})).s("gm_piano").gain(0.48)

// chords · synth brass 1
const synth_brass_1 = note("<A@8 ~@44 B C ~@7 B C ~@64 B C ~@7 B C ~@5>".pickRestart({
  A: "[~@7 [d4,f#4,a4]@8 ~]/2", B: "~ g4, e3@9 ~@7, ~@2 g3@9 ~@5, ~@4 b3@9 ~@3, ~@6 e4@9 ~",
  C: "~@4 c#4@2 c#4@9 ~, a2@9 ~@7, ~@2 a3@9 ~@5",
})).s("gm_synth_brass_1").gain(0.32)

// chords · brass section
const brass_section = note("<A@2 B@2 A@2 B@2 ~@43 C D E ~@7 F G ~@3 H ~@59 C D E ~@7 F G ~@3 H ~>".pickRestart({
  A: "[~@6 [e4,g4,b4,e5]!3 ~@5 [d4,d5,f#5,a5]@14 ~@4]/2", // Em D
  B: "[~@6 [e4,g4,b4,e5]!3 ~@5 [d4,d5,f#5]@16 ~@2, ~@7 a5@7 ~@2]/2", C: "~@10 [e3,b3,e4]@3 ~ [e3,b3,d4,f#4]@2",
  D: "[e2,e3,b3,d4,e4,g4]@15 ~", E: "[e2,e3,b3,c#4,e4,a4]", F: "e4 e4@15, [e2,e3,b3,d4,g4,b4,d5,e5]@15 ~",
  G: "e4@8 e4@7 ~, [e2,e3,b3,c#4,a4,c#5,e5], g4@7 ~, d4 ~@15", H: "g5!3 ~@3 g5!2 ~ g5!2 ~@5",
})).s("gm_brass_section").gain(0.32)

// bass · slap bass 1
const bass = note(`<
  A@8 B C D E F G H E I J K L M N O P B C D E F G H E Q R S@2 L T U V B C D E F G H E I W M X ~ Y Z AA Z AA Z AA Z AB AC
  AD AE AF ~ AG AH AI AJ AK@2 AL AM AN AO AP AQ AR@2 AS AT B C D E F G H E I J K L M N O P B C D E F G H E Q R S@2 L T U
  V B C D E F G H E I W M X ~ Y Z AA Z AA Z AA Z AB AC AD AE AF ~@2
>`.pickRestart({
  A: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", B: "e2 ~ e2 ~ b1 ~ d2 ~ e2 ~@3 e2@2 ~@2",
  C: "a1 ~ a1 ~ g1 ~ e1 ~ a1 ~@3 a1@3 ~", D: "d2 ~ d2 ~ a1 ~ c2 ~ d2 ~@3 d2@3 ~",
  E: "d2 ~ d2 ~ a1 ~ c2 ~ d2 ~ d2 ~ d#2 ~ d#2 ~", F: "e2 ~ e2 ~ b1 ~ d2 ~ e2 ~@3 e2@3 ~",
  G: "a1 ~ a1 ~ g1 ~ e1 ~ a1 ~@3 a1@2 ~@2", H: "d2 ~ d2 ~ a1 ~ b1 ~ d2 ~@3 d2@2 ~@2",
  I: "[e2,f#2] ~ f#2 ~ d2 ~ e2 ~ f#2@2 ~@2 f#2@2 ~@2", J: "f#2 ~ f#2 ~ d2 ~ e2@2 f#2@3 ~ f#2@3 ~",
  K: "e2 ~ e2 ~ b1 ~ d2 ~ e2@2 ~@2 e2@2 ~@2", L: "e2 ~ e2 ~ b1 ~ d2 ~ e2@2 ~@2 e2@3 ~",
  M: "e2 ~ e2 ~ b1 ~ d2@2 e2@2 ~@2 e2@3 ~", N: "e2 ~ e2 ~ b1 ~ d2 ~ e2@4 e2@3 ~",
  O: "a1 ~ a1@2 g1@2 e1 ~ a1 ~@3 a1@2 ~@2", P: "a1 ~ a1 ~ e1 ~ g1@2 a1@2 ~@2 a1@2 ~@2",
  Q: "[e2,f#2] ~ f#2 ~ d2 ~ e2 ~ f#2@2 ~@2 f#2@3 ~", R: "f#2 ~ f#2 ~ d2 ~ e2 ~ f#2@3 ~ f#2@2 ~@2",
  S: "e2 ~ e2 ~ b1 ~ d2@2 e2@2 ~@2 e2@2 ~@2", T: "e2 ~ e2 ~ b1 ~ d2@2 e2@3 ~ e2@2 ~@2",
  U: "a1 ~ a1 ~ e1 ~ g1@2 a1@2 ~@2 a1@3 ~", V: "a1 ~ a1@2 e1 ~ g1@2 a1@2 ~@2 a1@3 ~",
  W: "f#2 ~ f#2 ~ d2 ~ e2 ~ f#2@2 ~@2 f#2@2 ~@2", X: "e2 ~ e2 ~ c2 ~ d2 ~ e2@2 ~@2 e2@3 ~",
  Y: "~@8 e1 ~ e1 ~ e1 ~ e1 ~", Z: "e2@3 ~ f#2@3 ~ g2@3 ~ a2@3 ~", AA: "a1@3 ~ b1@3 ~ c#2@3 ~ d2@3 ~", AB: "a1@7 ~",
  AC: "e2", AD: "e1 ~ e1 ~ f#1 ~ g1 ~ a1@2 ~ b1@2 ~ e1@2", AE: "~@2 e1 ~ f#1 ~ g1 ~ a1@2 ~ b1 ~@2 d1@2",
  AF: "~@2 e1 ~@13", AG: "g2 ~ g2 ~ e2@2 d2@2 g2@2 ~@4 d2 e2", AH: "g2 ~ g2 ~ e2@2 d2 ~ b2 ~ a2@2 g2@3 ~",
  AI: "c3 ~ c3 ~ a2 ~ g2 ~ c3 ~@6 g2", AJ: "[a2,c3] ~ c3 ~ a2@2 g2 ~ e3@2 d3 ~ c3@2 b2 ~",
  AK: "[a2 ~ a2@2 g2 ~ e2@2 a2@2 ~@6 a2 ~ a2 ~ g2 ~ a2@2 a2@2 ~@2 g2@2 a2@2, ~@15 g2@2 ~@15]/2",
  AL: "b2@3 ~ b2@2 b2 b2@3 ~@5 [a2,c3]", AM: "~ e3!2 ~ b2 ~ g2 ~ e3@3 ~ d3@2 ~@2",
  AN: "a2 ~ a2 ~ g2 ~ e2@2 a2@2 ~@5 g2, ~@7 e2", AO: "a2@2 a2 ~ g2 ~ e2@2 a2@2 ~@2 b2@3 ~",
  AP: "c3@2 c3@2 g2 ~ e2 ~ c3@2 ~@4 g2@2, ~@14 e2 ~", AQ: "c3@2 c3 ~ g2 ~ f2 ~ c3@3 ~ b2@3 ~", AR: "d2/2",
  AS: "~ c#2@7 b1@8", AT: "~ g#1 f#1@2",
})).s("gm_slap_bass_1").gain(0.48)

// chords · epiano2 · "Chorused Piano"
const epiano2 = note(`<
  ~@7 A B C D A B C D ~ E F@3 G H I@2 B C D A B C D ~ E F@3 G H I@2 B C D A B C D ~ E J@3 ~ A B K B K B K B ~ A ~@20 B C
  D A B C D ~ E F@3 G H I@2 B C D A B C D ~ E F@3 G H I@2 B C D A B C D ~ E J@3 ~ A B K B K B K B ~ A ~@5
>`.pickRestart({
  A: "~@8 [d3,f#3,a3,d4]@3 ~ [d#3,g3,a#3,d#4]@3 ~", B: "[e3,g3,b3,d4,e4]@15 ~", C: "[e3,g3,a3,c#4,e4]@15 ~",
  D: "[f#3,a3,c#4,d4,f#4]@15 ~", // Dmaj7
  E: "[b3,d4,f#4] ~ [b3,d4,f#4] ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4]@6 [g3,b3,d4,f#4]@2 [g3,b3,d4,f#4]@2, g3 ~@7", // Bm Gmaj7
  F: "[~@2 [g3,b3,d4,f#4]@2 ~@2 [g3,b3,d4,f#4]@3 ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4]@4 g4 ~ [e3,b3,d4,e4]@24 d4@2 [e3,g3,b3,d4,e4]@2]/3", // Gmaj7 E7 Em7
  G: "~@2 [e3,g3,b3,d4,e4] ~ [e3,g3,b3,d4,e4] ~ [e3,g3,b3,d4,e4] ~ [e3,g3,b3,d4,e4] ~ [g3,b3,d4,e4] ~@3 [e3,b3,d4,e4,g4]@2, ~@5 e3 ~@2", // Em7
  H: "~@2 [g3,b3,d4,e4,g4]@3 ~ [g3,b3,d4,e4,g4]@3 ~ [g3,b3,d4,e4,g4]@3 ~ [g3,b3,d4,e4]@2, ~@14 g4 ~", // Em7
  I: "[~@4 g4@2 a3@6 ~@6 b3@2 ~@2 [a3,b3,e4]@4 [a3,b3,c#4,e4,a4]@4 [c#4,e4] ~, [a3,b3,c#4,e4,a4]@3 [g4,a4]@8 ~@5, ~@3 e4@7 ~@6, ~@3 c#4@6 ~ c#4@3 ~@3, ~@6 b3@8 a3@7 ~@11]/2", // Asus2 A C#m A Gsus2
  J: "[~@2 [g3,b3,d4,f#4]@2 ~@2 [g3,b3,d4,f#4]@3 ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4]@4 g4 ~ e3@22 a3 ~ [b3,d4]@2 [e3,g3,b3,d4,e4]@2, ~@5 [b3,d4,e4]@6 ~, ~@21 [e3,g3]@2 ~]/3", // Gmaj7 Bm Em7 E7 Em
  K: "a3@8 [d3,f#3,d4]@3 ~ [d#3,g3,a#3,d#4]@3 ~, [e3,c#4,e4]@15 ~, g3@3 ~, ~@8 a3@7 ~", // D D# C#m
})).s("gm_epiano2").gain(0.33)

// chords · clavinet
const clavinet = note(`<
  ~@8 A B C D E F G H I J K L M N O P A B C D E F G H I J K L M N O P A B C D E F G H I J K L ~@2 A Q R Q A S T ~@6 U V
  W X Y@2 Z AA AB AC AD AE AF@2 AG AH AI B C D E F G H I J K L M N O P A B C D E F G H I J K L M N O P A B C D E F G H I
  J K L ~@2 A Q R Q A S T ~@7
>`.pickRestart({
  A: "e2@2 [g3,b3,d4,e4] ~ e3 [g3,b3,d4,e4] ~ b3 e2@2 [g3,b3,d4,e4] ~ e3@2 [g3,b3,e4]@2, ~@14 d4 ~", // Em7 Em
  B: "a2@2 [g3,e4]@2 e3 [g3,a3,c#4,d#4,e4] b3 [g3,a3,c#4,e4] e2 ~ [g3,a3,c#4,e4] ~ e3@2 [g3,a3,c#4,e4] ~, ~@2 [b3,c#4] ~@13", // C A7 Bsus2
  C: "d2@2 [a3,d4,f#4]@2 d3 [a3,c#4,d4,f#4] d2 [c#4,d4,f#4] d3 ~ [a3,c#4,d4,f#4] ~@3 [a3,c#4,d4,f#4]@2, ~@2 c#4 ~@10 d2@2 ~", // D Dmaj7
  D: "d3 c#4 [d2,a3,d4,f#4] [a3,c#4,d4,f#4] d3 ~ [a3,c#4,d4,f#4]@2 d2@2 [a3,c#4,d4]@2 d3 [c#4,d4] ~ d3, ~@13 a3@2 ~", // D Dmaj7
  E: "e2@2 [g3,b3,d4,e4]@2 e3 [g3,b3,d4,e4] e3 [g3,b3,d4,e4] e2@2 [g3,b3,d4,e4] ~ e3@2 [g3,b3,d4]@2, ~@14 e4 ~", // Em7 G
  F: "~ e2 [g3,a3,c#4,e4]@2 ~ [e3,a3,c#4] [e3,g3] [g3,a3,c#4] a2@2 [g3,a3,c#4,e4]@2 e3@2 ~ e4, ~@7 [g3,a3,c#4]", // A7 A Em A7
  G: "~ d2@2 d4 d3 [a3,c#4,d4,f#4] d3 [a3,c#4,d4,f#4] d2@2 [a3,c#4,d4,f#4] ~ d3@2 [a3,c#4,d4,f#4] ~, ~@3 [a3,c#4,f#4]@2 ~@11", // Dmaj7 F#m
  H: "~@4 d3 [a3,c#4,d4,f#4] d3 [a3,c#4,d4,f#4] d2@2 [a3,c#4,d4,f#4] ~ d3@2 [a3,c#4,d4,f#4] ~, ~ d2@2 [a3,d4,f#4]@2 ~@11, ~ c#4 ~@6", // Dmaj7 D
  I: "g2@2 [b3,d4,f#4]@2 g2 [b3,d4,f#4] g2 [b3,d4,f#4] d2 ~ [b3,d4,f#4] ~ g2 ~ d2@2", // Bm
  J: "g2@2 [b3,d4,f#4]@2 d2 [b3,d4,f#4] d2 [b3,d4,f#4] g2 ~ [b3,d4,f#4] ~ d2 ~ g2@2", // Bm
  K: "e2@2 [g3,b3,d4,f#4]@2 d2 [b3,d4,e4] d2 [b3,d4,e4,g4] e2 ~ [b3,d4,e4,g4] ~ d2@2 d#2 ~", // Gmaj7 E7 Em7
  L: "e2@2 [b3,d4,e4,g4]@2 e2 [b3,d4,e4,g4] e2 [b3,d4,e4,g4] d2 ~ [b3,d4,e4,g4] ~ d2@2 d#2@2", // Em7
  M: "e2@2 [b3,d4,e4,g4]@2 e2 [b3,d4,e4,g4] e2 [d4,e4,g4] e2 ~ [b3,d4,e4,g4]@2 e2@2 [b3,d4,e4,g4]@2", // Em7
  N: "d2@2 d#2@2 [b3,d4,e4,g4]!2 e2 [b3,d4,e4,g4] e2 ~ [b3,d4,e4,g4]@2 g2@2 g#2@2, ~@10 e2 ~@5", // Em7
  O: "a2@2 [b3,d4,e4,a4]@2 a2 [b3,d4,e4,a4,b4] a2 [b3,d4,e4,a4,b4] a2 ~ [b3,d4,e4,a4,b4] ~ f#2@2 g2@2", // Bm7
  P: "a2@2 [b3,c#4,e4,a4]@2 a2 [b3,c#4,e4,a4] a2 [b3,c#4,e4] a2 ~ [a3,c#4,e4,a4] ~ a2 [b3,c#4,e4] ~@2, ~@2 [a3,d4] ~@10 a4@2 ~", // A C#m7 A C#m7 D5
  Q: "a2@2 [g3,c#4,e4]@2 e3 [g3,a3,c#4,d#4,e4] b3 [g3,a3,c#4,e4] ~@8, ~@2 b3 ~@13", // C#dim A7
  R: "e2@2 [g3,b3,d4,e4] ~ e3 [g3,b3,d4,e4] ~ b3 e2@2 [g3,b3,d4,e4] ~ e3@2 [g3,b3]@2, ~@14 [d4,e4] ~", // Em7 G Dsus2
  S: "a2@2 [g3,e4]@2 e3 [g3,a3,c#4,d#4,e4] b3 [g3,a3,c#4,e4] ~@8, ~@2 [b3,c#4] ~@13", // C A7 Bsus2
  T: "e2@2 ~ [g3,b3,d4,e4] e3 [g3,b3,d4,e4] ~ b3 e2@2 [g3,b3,d4,e4] ~ e3@2 [g3,b3,e4]@2, ~@14 d4 ~", // Em7 Em
  U: "g2 ~ g2 ~ e2@2 d2@2 g2@2 ~@4 d2 e2", V: "g2 ~ g2 ~ e2@2 d2 ~ b2 ~ a2@2 g2@3 ~",
  W: "c3 ~ c3 ~ a2 ~ g2 ~ c3 ~@6 g2", X: "[a2,c3] ~ c3 ~ a2@2 g2 ~ e3@2 d3 ~ c3@2 b2 ~",
  Y: "[a2 ~ a2@2 g2 ~ e2@2 a2@2 ~@6 a2 ~ a2 ~ g2 ~ a2@2 a2@2 ~@2 g2@2 a2@2, ~@15 g2@2 ~@15]/2",
  Z: "b2@3 ~ b2@2 b2 b2@3 ~@5 [a2,c3]", AA: "~ e3!2 ~ b2 ~ g2 ~ e3@3 ~ d3@2 ~@2",
  AB: "a2 ~ a2 ~ g2 ~ e2@2 a2@2 ~@5 g2, ~@7 e2", AC: "a2@2 a2 ~ g2 ~ e2@2 a2@2 ~@2 b2@3 ~",
  AD: "c3@2 c3@2 g2 ~ e2 ~ c3@2 ~@4 g2@2, ~@14 e2 ~", AE: "c3@2 c3 ~ g2 ~ f2 ~ c3@3 ~ b2@3 ~", AF: "d2/2", AG: "c#3 b2",
  AH: "~ a2 f#2@2",
  AI: "e2@2 [g3,b3,d4,e4] ~ e3 [g3,b3,d4,e4] ~ b3 e2@2 [g3,b3,d4,e4] ~ e3@2 [g3,b3,e4]@2, ~@6 c3@3 ~@5 d4 ~", // Em7 Em
})).s("gm_clavinet").gain(0.48)

// other · tenor sax
const tenor_sax = note("<~@66 A B C D E F G H I J K L M N O P@2 ~@58 A ~>".pickRestart({
  A: "g4!3 ~@3 g4!2 ~ g4!2 ~@5", B: "[g4,g5]@3 f#5@3 d5@2 d5@6 ~@2", C: "~ [b4,b5] [d5,d6] [e5,e6] [e5,e6]@2 [d5,d6]@2",
  D: "[c5,c6]@3 [b4,b5]@3 [g4,g5]@2 [g4,g5]@6 ~@2", // C B G
  E: "~@3 [g4,g5,g6]@2 ~ [g4,g5,g6] ~ [e5,e6]@4 [d5,d6]@3 ~, ~@3 [f5,f6] ~@12", // G E D F
  F: "~@2 [a4,a5]@4 [a4,a5]@2 [b4,b5]@4 ~@2 [b4,b5] [d5,d6]", // A B D
  G: "[e5,e6]@3 [d5,d6]@2 ~ [d5,d6]@2 [b4,b5]@3 [d5,d6]@3 ~ [d5,d6], ~@7 [e5,e6]", // E D B D E
  H: "[b4,b5]@2 ~ [b4,b5]@3 [b4,b5]@3 ~@5 [a4,a5] [b4,b5]", I: "[c5,c6]@3 [b4,b5]@2 ~ [g4,g5]@2 [g4,g5]@4 d5@3 ~",
  J: "~@3 [a4,a5]@3 [c#5,c#6]@2 [c#5,c#6]@3 [e5,e6]@2 [c#5,c#6] [e5,e6] [g4,f#5,g5,f#6,g6]", // A C# E C# E Gmaj7
  K: "[e5,e6]@8 ~@2 [f#5,f#6]@3 ~ [e5,e6] [f5,f6]", // E F# E F
  L: "[g4,g5,g6]@3 [e5,e6]@2 ~ [d5,d6]@2 [d5,d6]@3 [b4,b5]@3 [d5,d6]@2", // G E D B D
  M: "[e5,e6]@3 [d5,d6]@2 ~ b4@2 [b4,b5]@5 ~ b5 [g4,a4,f5,g5,a5], ~@5 b5@2 ~@9", // E D B Dm
  N: "[d5,d6]@3 [e5,e6]@3 [f#5,f#6]@2 [g4,g5,g6]@3 [a4,a5,a6]@2 ~ [b4,b5,b6]@2", // D E F# G A B
  O: "[c#5,c#6]@3 [d5,d6]@2 ~ [e5,e6]@2 [f#5,f#6]@3 [e5,e6]@2 ~ [d5,d6]@2", // C# D E F# E D
  P: "[[c#5,c#6]@6 ~ [d5,e5,d6,e6] [b4,b5]@10 ~@6 f#5@8, ~@8 [c#5,c#6] ~@11 [a4,a5]@7 ~@5]/2", // C# Dsus2 B C# A
})).s("gm_tenor_sax").gain(0.32)

// other · baritone sax
const baritone_sax = note("<~@66 A B C D E F G H I J K L M N O P@2 ~@58 A ~>".pickRestart({
  A: "g5!3 ~@3 g5!2 ~ g5!2 ~@5", B: "[g4,g5]@3 [f#4,f#5]@3 [d4,d5]@2 [d4,d5]@6 ~@2",
  C: "~ [b3,b4] [d4,d5] [e4,e5] [e4,e5]@2 [d4,d5]@2", D: "[c4,c5]@3 [b3,b4]@3 [g3,g4]@2 [g3,g4]@6 ~@2",
  E: "~@3 [g4,g5,g6]@2 ~ [g4,g5,g6] ~ [e4,e5,e6]@4 [d4,d5,d6]@3 ~, ~@3 [f4,f5,f6] ~@12", // G E D F
  F: "~@2 [a3,a4,a5]@4 [a3,a4,a5]@2 [b3,b4,b5]@4 ~@2 [b3,b4,b5] [d4,d5,d6]", // A B D
  G: "[e4,e5,e6]@3 [d4,d5,d6]@2 ~ [d4,d5,d6]@2 [b3,b4,b5]@3 [d4,d5,d6]@3 ~ [d4,d5,d6], ~@7 [e4,e5,e6]", // E D B D E
  H: "[b3,b4,b5]@2 ~ [b3,b4,b5]@3 [b3,b4,b5]@3 ~@5 [a3,a4,a5] [b3,b4,b5]", // B A B
  I: "[c4,c5,c6]@3 [b3,b4,b5]@2 ~ [g3,g4,g5]@2 [g3,g4,g5]@4 [d3,d4,d5]@3 ~", // C B G D
  J: "~@3 [a3,a4,a5]@3 [c#4,c#5,c#6]@2 [c#4,c#5,c#6]@3 [e4,e5,e6]@2 [c#4,c#5,c#6] [e4,e5,e6] [f#4,g4,f#5,g5,f#6,g6]", // A C# E C# E Gmaj7
  K: "[e4,e5,e6]@8 ~@2 [f#4,f#5,f#6]@3 ~ [e4,e5,e6] [f5,f6]", // E F# E F
  L: "[g4,g5,g6]@3 [e4,e5,e6]@2 ~ [d4,d5,d6]@2 [d4,d5,d6]@3 ~ b3@2 [d4,d5,d6]@2, ~@11 [b4,b5]@3 ~@2", // G E D B
  M: "[e4,e5,e6]@3 [d4,d5,d6]@2 ~ [b3,b4]@2 [b3,b4,b5]@5 ~ b5 [f3,g3,a3,f4,g4,a4,f5,g5,a5], ~@5 b5@2 ~@9", // E D B F
  N: "[d4,d5,d6]@3 [e4,e5,e6]@3 [f#4,f#5,f#6]@2 [g4,g5,g6]@3 [a4,a5,a6]@2 ~ [b4,b5,b6]@2", // D E F# G A B
  O: "[c#4,c#5,c#6]@3 [d4,d5,d6]@2 ~ [e4,e5,e6]@2 [f#4,f#5,f#6]@3 [e4,e5,e6]@2 ~ [d4,d5,d6]@2", // C# D E F# E D
  P: "[[c#4,c#5,c#6]@6 ~ [d5,e5,d6,e6] [b3,b4,b5]@10 ~@6 [f#3,f#4,f#5]@8, ~@8 [c#5,c#6] ~@11 [a3,a4,a5]@7 ~@5]/2", // C# Dsus2 B F# C# A
})).s("gm_baritone_sax").gain(0.21)

// other · orchestra hit · G
const orchestra_hit = note(`<
  ~@66
  [g5!3 ~@3 g5!2 ~ g5!2 ~@5]
  ~@74
  [g5!3 ~@3 g5!2 ~ g5!2 ~@3 [g3,g4,g5] ~]
  [[g3,g4,g5] ~@15]
>`).s("gm_orchestra_hit").gain(0.46)

// drums · kick
const kick = s("bd").struct("<A@51 B@2 C A@7 B C A@63 B@2 C A@6 B@2 C A@4 ~>".pickRestart({
  A: "x!2", B: "x!4", C: "x!3 ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<A@51 ~@2 B A@7 ~ B A@63 ~@2 B A@6 ~@2 B A@4 ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<A@51 B C D A@7 ~ D A@63 B C D A@6 B C D A@4 ~>".pickRestart({
  A: "x!16", B: "x!8 ~@4 x ~@3", C: "x", D: "~@8 x!8",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@51 [~@5 x ~ x] ~@74 [~@5 x ~ x] ~@8 [~@5 x ~ x] ~@7>").gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<A@51 B ~ C A@7 ~ C A@63 B ~ C A@6 B ~ C A@4 ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "~@4 x!4",
})).gain(0.4)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A@52 ~ B A@7 ~ B A@64 ~ B A@7 ~ B A@4 ~>".pickRestart({
  A: "x!8", B: "~@4 x!4",
})).gain(3.24)

// drums · claves
const claves = s("clave:2").struct("<~@65 [~@4 x!2 ~@6 x!2 ~@2] ~@74 [~@4 x!2 ~@6 x!2 ~@2] ~@2>").gain(3.14)

// drums · triangle
const triangle = s("triangles:35").struct("<~@63 A B C D ~@71 A B C D ~>".pickRestart({
  A: "~@6 x!3 ~@6 x", B: "x ~@5 x!3 ~@5 x!2", C: "x ~@5 x!3 ~@5 x ~", D: "x",
})).gain(4.18)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@61 [~@5 x ~@2]!2 ~@80>").gain(4.29)

stack(
  piano, synth_brass_1, brass_section, bass, epiano2, clavinet, tenor_sax, baritone_sax, orchestra_hit, kick, snare,
// … 2 more lines

More by Donna Summer