Strudelify

Sweet Freedom

Michael McDonald

KeyC majorTempo230 bpm
0:00/0:00
// Sweet Freedom — Michael McDonald
// 230 bpm, 2/2, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(230/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.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@16 A@3 B@2 C@2 D@4 E@2 F@2 G H D@2 B@2 C@2 D@2 I@2 J@2 K@2 L@2 M N@2 O@3 P@2 M Q R S T@2 U V W@2 B@2 C@2 W@2 D@2 B@2
  C@2 D@4 E@2 F@2 G H D@2 B@2 C@2 D@2 I@2 J@2 K@2 L@2 ~@18 B@2 C@2 X Y ~@20 D@2 B@2 C@2 D@2 I@2 J@2 K@2 Z@2 AA AB@2 AC
  AD@2 AE@2 M Q R S T@2 U V W@2 AF@2 AG AH ~
>`.pickRestart({
  A: "[~@17 g4@31, ~@15 c3@32 ~, ~ [g3,c4,e4]@2]/3", B: "[d#3,a#3,d#4,g4]/2", C: "[f3,c4,f4,a4]/2",
  D: "[c3,g3,c4,e4,g4]/2", E: "[[d4,f4]@5 d4 c4 a#3, [a#2,f3], a#3@7 ~, ~@3 g3]/2", F: "[[d3,a3,d4,f4], c4@3 ~]/2",
  G: "[c3,g3,c4,e4,g4]@15 ~", H: "[f3,c4,f4] [a#2,f3,a#3,f4]", I: "[a#2,f3,a#3,d4,f4]/2", J: "[a2,e3,g3,a3,c4]/2",
  K: "[[d3,a3,c4,d4,f4]@31 ~]/2", L: "[g2,d3,g3,b3,d4]/2", M: "[g4,a#4,d5]@15 ~", N: "[[f4,c5] [d4,f4,c5], a4]/2",
  O: "[e4@16 [e4,a4,c5]@31 ~, b4, g4@3 ~@5]/3", P: "[[a4,c5] [g4,b4,d5], f4]/2", Q: "[f4,a4,c5]", R: "[d4,f4,c5]",
  S: "[e4,g4,b4]", T: "[d#4,g#4,c5]/2", U: "[f4,b4,d5]", V: "[g3,d4,g4] [a#3,f4,a#4]", W: "[c3,g3,c4,g4]/2",
  X: "[c3,g3,c4,g4]", Y: "[c3,g3,c4,e4] [b2,g3,d4,g4]", Z: "[g2,d3,b3,d4]/2", AA: "[a#4,d5]@15 ~",
  AB: "[[f4,c5]@15 ~ [d4,f4,c5]@16, a4]/2", AC: "[e4,g4,b4]@15 ~", AD: "[[e4,a4,c5]@31 ~]/2",
  AE: "[[a4,c5]@15 ~ [g4,b4,d5]@16, f4]/2", AF: "[[d#3,a#3,d#4,g4]@24 a#2@2 c3@2 d#3@2 f3 ~]/2",
  AG: "~@2 f3@2 ~@2 f3@2 d#3@2 ~@2 f3 ~@3", AH: "c3 ~@3 d#3@2 ~@2 g3@2 a#3@2 c4@2 ~@2",
})).s("gm_piano").gain(0.48).pan(0.3)

// bass · slap bass 1 · "SLAPBASS 1"
const bass = note(`<
  ~@17 A@2 B@2 C@2 D@2 A@2 E@2 F@2 G H I J K ~ L M N O P Q R@2 S T U V W X Y Z AA AB AC AD AE AF AG Z AH AI AJ AK AL AM
  AN AO AP AQ AL AR A@2 B@2 C@2 D@2 A@2 E@2 F@2 G H I J K ~ L M N O P Q R@2 S T U V W X Y Z AA AB AC AD AE AF AG Z AH AI
  AJ AS AL AM AN AO AP AQ AL AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN I J K ~ L M N O P Q R@2 S T
  U BO BP X Y Z AA AB AC AD AE AF AG Z AH AI BQ BR AL AM AN BS BT BU ~
>`.pickRestart({
  A: "c2/2", B: "[d#2@31 ~]/2", C: "f2/2", D: "[c2@7 a#1]/2", E: "a#1/2", F: "[d2@31 ~]/2", G: "c2@15 ~",
  H: "f2@4 a#1@3 ~", I: "c2@5 ~ c2@2 ~@4 c2@2 ~@2", J: "c2 ~@5 c2 d2", K: "d#2@4 ~@2 d#2 ~@5 d#2 ~@3",
  L: "f1@6 f2@2 ~@4 f1 ~ f1 ~", M: "f2 ~ f2@2 a1@4 a#1@4 b1@2 ~@2", N: "c2@4 ~@2 c2 ~@5 c2@2 ~@2", O: "~@6 c2 b1",
  P: "a#1@4 ~@2 a#1 ~@5 a#1@2 ~@2", Q: "~@6 g1 g#1", R: "[a1@4 ~@2 a1@2 ~@4 a1@15 ~ a1@2 c2@2]/2",
  S: "d2@5 ~ d2@2 ~@4 d2 ~@3", T: "~ e2 f2 f#2", U: "g2@5 ~ g1@2 ~@2 g1@2 ~@2 g1 ~", V: "g1@8 g2@3 ~@5",
  W: "d#2@9 ~@5 d#2@2", X: "d2@8 f2@5 ~@3", Y: "g1@9 ~@5 g1@2", Z: "c2@3 ~ c2@4 ~@2 c2@4 g1@2", AA: "a1@9 ~@5 a1@2",
  AB: "a1@4 b1@4 c2@3 ~ c#2@3 ~", AC: "d2@7 ~@7 f2@2", AD: "g2@3 ~ g1@2 ~@4 g1@4 g1@2", AE: "d#2@7 ~@7 d#2@2",
  AF: "d2@4 f2@3 ~", AG: "g1@4 ~@3 g1", AH: "g#1@4 ~@3 g#1", AI: "g#1@3 ~ g#1@4 ~@2 g#1@4 g#1@2", AJ: "g1@5 ~@2 g1",
  AK: "g1 a#1", AL: "c2@2 ~ c2 ~@2 c2@2", AM: "~@6 c2 d2", AN: "d#2@2 ~ d#2 ~@2 d#2@2", AO: "d#2 ~@5 f2 d#2",
  AP: "f2@4 ~@2 f2@3 ~@3 f2@2 ~@2", AQ: "~@4 f2 g2 f2 d#2", AR: "c3@3 g2 c3 g2 c2@2", AS: "g1@8 a#1@7 ~",
  AT: "c2@4 c3@2 ~@2 b1@2 b1@3 ~ b1@2", AU: "a1@11 ~@3 g1 ~", AV: "g1 ~@6 g1", AW: "g1@3 ~ g1@4 ~@2 g1@4 e1 ~",
  AX: "a1@2 ~@4 a1@2 c2@4 a1@3 ~", AY: "d2@11 ~@3 d2 ~", AZ: "d2@2 ~@12 d2 ~", BA: "d2@2 ~@2 d2@5 ~ d2@2 ~@2 e2@2",
  BB: "f2@7 ~ f1@8", BC: "a1@5 ~@2 g1", BD: "g1@2 ~@12 g1 ~", BE: "g1@2 ~@2 g1@4 ~@2 g1@3 ~ g1@2", BF: "d2 ~@5 a1 c2",
  BG: "d2@2 ~@5 d2", BH: "d2 ~@6 a1", BI: "c2@3 ~ c2@4 ~@2 c2@2 ~@2 c2@2", BJ: "c2@2 ~@10 g1@2 f#1 ~", BK: "f1@6 ~ f1",
  BL: "f1 ~@5 f1 f#1", BM: "g1@2 g1 ~@2 g1@2 g1", BN: "g1@3 ~@5 g1@3 ~@5", BO: "g1@4 d2@4 g2@3 ~ g1@2 ~@2",
  BP: "d#2@11 ~@3 d#2@2", BQ: "g1@10 ~@4 g1 ~", BR: "g1@7 ~ a#1@6 ~@2", BS: "d#2@2 ~@6 a#1@2 c2@2 d#2@2 f2 ~",
  BT: "~@2 f2@2 ~@2 f2@2 d#2@2 ~@2 f2 ~@3", BU: "c2 ~@3 d#2@2 ~@2 g1@2 a#1@2 c2@2 ~@2",
})).s("gm_slap_bass_1").gain(0.54)

// other · harmonica
const harmonica = note("<~@150 A@7 B@7 ~@24>".pickRestart({
  A: "[~@7 c6@7 ~ a#5@21 ~@3 g5@4 f5@3 ~ g5@4 a#5@2 ~@6 f5@4 g5@4 a#5@2 ~@6 c6@11 ~ a#5@8 g5@4 f5@4 d#5@3 ~ c5@3 ~@2, ~@7 a#5 ~@67 b5 ~@36]/7",
  B: "[~@11 a4@4 c5@4 d5@4 e5@4 d5@4 g5@8 e5@8 c5@8 a4@4 c5@7 ~ a4@4 c5@4 a4@3 ~ c5@8 a4@3 ~ g4@12 ~@9]/7",
})).s("gm_harmonica").gain(0.5)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~ A ~@64 B C D E F@2 G ~@35 H I ~@6 J K ~ L M N B O D E F@2 ~@7 P Q R ~@7 S@2 T U V ~@13 W X ~@3 Y Z AA AB ~ AC AD AE
  J K ~ L M AF@2 C D E AG ~
>`.pickRestart({
  A: "[c4,c5,c6]@4 ~@2 [f5,g5] ~@9, ~@2 b5 ~@5, ~@5 a5@2 ~@9", // C Fsus2
  B: "~@4 [c5,c6] ~@3 [c5,c6]@2 [a#4,a#5]@2 [g4,g5]@2 [a#4,a#5]@2", C: "~@2 [c5,c6]@3 ~@11",
  D: "~@8 [a#4,a#5]@2 [c5,c6]@2 [d#5,d#6]@2 [f5,f6] ~", E: "~@2 [f5,f6]@2 ~@2 [f5,f6]@2 [d#5,d#6]@2 ~@2 [f5,f6] ~@3",
  F: "[[c5,c6] ~@3 [d#5,d#6]@2 ~@2 [a#4,a#5]@2 ~@2 [c5,c6]@2 [g4,g5]@10 ~@8]/2", // C D# A# C G
  G: "~@2 [c5,c6] ~ [c5,c6] [a#4,a#5] [g4,g5] ~", H: "~@2 [g5,b5] ~@2 [e5,g5] ~@2", I: "[c5,e5]@3 ~@5",
  J: "~@4 [b4,d5,b5,d6] ~ [b4,d5,b5,d6]@2 ~@2 [b4,d5,b5,d6]@2 ~@2 [b4,d5,b5,d6]@2", K: "[c5,d#5,g5,c6,d#6,g6]@3 ~@5",
  L: "[d5,f5,d6,f6]@15 ~", M: "[d5,f5,d6,f6] [a#4,d#5,a#5,d#6]", N: "[g4,c5,g5,c6] ~", O: "~ [c5,c6] ~@6",
  P: "[g5,g6] [e5,e6]", Q: "[c5,c6] [a4,a5]", R: "[g4,g5]@3 ~", S: "[d#5@2 d5 c5@3 g#4@2]/2", T: "g5 e5",
  U: "c5 ~ g4 ~ f4 ~ e4 ~", V: "~ [c5,c6]@10 [b4,b5] [f4,g4,a4,g5,a5] [c4,d4,e4,c5,d5,e5,f5] [b3,b4] ~",
  W: "~@4 [g4,g5] [a4,a5] [c5,c6] ~", X: "[d5,d6] ~ [f5,f6] ~ [g5,g6] ~ [a#5,a#6]@2",
  Y: "~@2 [g5,b5,g6,b6] ~@2 [e5,g5,e6,g6] ~@2", Z: "[c5,e5,c6,e6]@3 ~@5", AA: "~@12 [e4,a4,e5,a5] ~ [e4,a4,e5,a5]@2",
  AB: "~@8 [a4,d5,a5,d6]@3 ~@5", AC: "~@4 [g4,a#4,g5,a#5] ~@3",
  AD: "~@4 [a4,d5,a5,d6] ~@5 [a4,d5,d6]@2 ~@4, ~@10 a5 ~@5", AE: "~@4 [d5,g5,d6,g6] ~@3",
  AF: "[[g4,c5,g5,c6]@19 ~ [c5,c6] ~@3 [c5,c6]@2 [a#4,a#5]@2 [g4,g5]@2 [a#4,a#5]@2]/2", // C5 C A# G A#
  AG: "[c5,c6] ~@3 [d#5,d#6]@2 ~@2 [g4,g5]@2 [a#4,a#5]@2 [c5,c6]@2 ~@2", // C D# G A# C
})).s("gm_brass_section").gain(0.45).pan(0.2)

// other · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@18 A B ~ C D E F G@2 H@2 I@2 ~@3 A B ~ C D E F J@2 K@2 I@2 ~@27 A B ~ C D E F L@2 M@2 N@2 O ~@2 A P@2 Q@2 E F R@2
  S@2 I@2 ~@47 A B ~ C D E T U@2 V W I@2 ~@25
>`.pickRestart({
  A: "~@5 g4@3", B: "a#4@15 ~", C: "a4", D: "~ c4 f4 e4", E: "g4", F: "~ d5 c5 g4", G: "[e4@18 ~@2 g5@11 ~]/2",
  H: "[f5@18 ~@2 c5@4 a#4@3 ~ d4@4]/2", I: "[[f4,a4,c5]@5 ~@3]/2", J: "[f4@19 ~ g5@12]/2",
  K: "[e5@20 d5@4 c5@4 a#4@3 ~]/2", L: "[e4@19 ~ a5@4 g5@4 a5@4]/2", M: "[f5@5 ~@3]/2", N: "[[a4,c5]@5 ~@3]/2",
  O: "[g4,c5]", P: "[a#4@3 ~]/2", Q: "[~@5 c4 f4 e4, a4@3 ~]/2", R: "[a#4@19 ~ g5@8 ~@4]/2",
  S: "[e5@20 a4@4 e4@4 g4@3 ~]/2", T: "~ f5 d#5 c5", U: "[a#4@19 ~ g5@12]/2", V: "e5 c5", W: "a4 ~ e4 ~",
})).s("gm_epiano1").gain(0.28).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@49 A B C D E@2 B F A B C D G@2 H@2 I ~@39 A B H D E@2 B F A J K L M@2 K@2 I ~@43 A B H D E@2 B F A B H D N@2 C@2 O@7
>`.pickRestart({
  A: "~@4 [a#4,d5] ~ [a#4,d5] ~@5 [a#4,d5] ~ [a#4,d5]@2", B: "~@4 [a4,c5] ~ [a4,c5] ~@5 [a4,c5] ~ [a4,c5] ~",
  C: "~@4 [d4,f4] ~ [d4,f4] ~@5 [d4,f4] ~ [d4,f4] ~", D: "~@4 [e4,g4] ~ [e4,g4]@2 ~@4 [e4,g4] ~ [e4,g4] ~",
  E: "~@4 [e4,a4] ~ [e4,a4] ~@5 [e4,a4] ~ [e4,a4] ~", F: "~@4 [g4,b4] ~ [g4,b4] ~@5 [g4,b4] ~ [g4,b4] ~",
  G: "~@4 [c4,g#4] ~ [c4,g#4] ~@5 [c4,g#4] ~ [c4,g#4] ~", H: "~@4 [d4,g4] ~ [d4,g4] ~@5 [d4,g4] ~ [d4,g4] ~",
  I: "[g4,c5]", J: "~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~",
  K: "~@4 [d4,f4,g4] ~ [d4,f4,g4] ~@5 [d4,f4,g4] ~ [d4,f4,g4] ~", // G7
  L: "~@4 [c4,e4,g4] ~ [c4,e4,g4]@2 ~@4 [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  M: "~@4 [c4,d#4,g#4] ~ [c4,d#4,g#4] ~@5 [c4,d#4,g#4] ~ [c4,d#4,g#4] ~", // G#
  N: "~@4 [d#4,g#4] ~ [d#4,g#4] ~@5 [d#4,g#4] ~ [d#4,g#4] ~", O: "[c5@13 ~, g4 ~@6]/7",
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.9)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note(`<
  ~@5 A@6 ~@2 B@4 ~@32 C D@2 E@3 F@2 C G H I J@2 K L M@8 ~@32 C D@2 E@3 F@2 C G H I J@2 K L N@7 O P Q@2 R S T U V P Q W
  X Y@4 Z@2 AA AB ~@16 AC AD@2 I AE@2 F@2 C G H I J@2 K L AF@6 ~
>`.pickRestart({
  A: "[c4@95 ~]/6", B: "[~ c4@63]/4", C: "[g4,a#4,d5]@15 ~", D: "[[f4,c5] [d4,f4,c5], a4]/2",
  E: "[e4@16 [e4,a4,c5]@31 ~, b4, g4@3 ~@5]/3", F: "[[a4,c5] [g4,b4,d5], f4]/2", G: "[f4,a4,c5]", H: "[d4,f4,c5]",
  I: "[e4,g4,b4]", J: "[d#4,g#4,c5]/2", K: "[f4,b4,d5]", L: "[g3,d4,g4] [a#3,f4,a#4]",
  M: "[[c4,g4]@17 ~@47, c5@127 ~]/8", N: "[[c4,g4]@17 ~@35 [e4,g4,a4]@4, c5]/7", O: "[e4,g4,c5] [d4,g4,d5]",
  P: "[c5,e5,g5]", Q: "[b4,d5,g5]", R: "[a4,c5,g5]", S: "c5 d5, [a4,f5]", T: "e5 f5, [a4,c5]", U: "e5 c5, [f4,a4]",
  V: "c5 d5, [f4,a4]", W: "b4 e5, [g4,d5]", X: "[d5,f5] e5, a4", Y: "[c5 d5@3 c5@3 c5, a4, f4 e4, ~@32 g4 ~@31]/4",
  Z: "[d#5@2 d5 c5@3 g#4@2, f4, g#4@23 ~@9]/2", AA: "~ e5, [b4,d5]", AB: "[g4,c5] [d4,g4]@3", AC: "[a#4,d5]@15 ~",
  AD: "[[f4,c5]@15 ~ [d4,f4,c5]@16, a4]/2", AE: "[[e4,a4,c5]@31 ~]/2", AF: "[[c4,g4]@17 ~@31, c5@85 ~@11]/6",
})).s("gm_pad_sweep").gain(0.2).pan(0.2)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@129 A B C D E ~@3 F G H I J ~ K L M N O P@3 ~@37>".pickRestart({
  A: "~@4 c4!2 ~ c4 ~ b3 ~ b3 ~ e3 ~ e3, ~@4 [b3,c4] ~ [e3,b3] ~", B: "e3 ~@3 b3!2 g3 [g3,b3] b3 g3!3 a3 [g3,a3] g3 a3",
  C: "a3@2 ~@2 g3!2 ~ g3 ~ a3 ~ a3 g3!2 ~ g3, ~@8 [g3,a3]@2 ~@2 a3@3 ~", // Gsus2
  D: "g3@2 ~@2 c4!2 g3 [g3,c4] ~ g3!3 c4 [g3,c4] g3 c4, ~@4 c4 ~@3", E: "~ a3 ~ a3 a3@2 ~@10, [a3,c4] ~@7",
  F: "~@4 e3!2 ~ e3 c4!2 ~ c4 b3!2 ~ b3, ~@8 e3@3 ~ c4@3 ~", G: "b3@2 ~@2 b3!2 g3 [g3,b3] b3 g3!3 a3 [g3,a3] g3 a3",
  H: "a3@2 ~@2 g3!2 ~ g3 ~ a3 ~ a3 ~ g3 ~ g3, ~@4 [g3,a3] ~ [g3,a3] ~", // Gsus2
  I: "g3@2 ~@2 a3!2 f3 [f3,a3] ~ f3 ~ a3 c4 [a3,c4] ~ c4, ~@4 a3 [f3,a3] ~ a3", J: "[c4,d4] d4 ~ d4 d4@2 ~@10",
  K: "~@4 g3!8 ~ g3!3", L: "a3 [g3,a3] g3 a3 g3!2 ~ g3 ~ a3 ~ a3 [a3,c4] c4 ~ c4, ~@4 a3@3 ~ [g3,a3]@2 ~@6",
  M: "c4@2 ~@2 g#3!2 ~ g#3!2 ~ g#3!2 ~ g#3!2 ~", N: "g#3!2 ~ g#3 [f3,g#3] f3 ~ f3 [f3,g#3] g#3 ~ g#3 g#3@2 ~@2",
  O: "~@4 g3!2 ~ g3!2 ~ g3!2 ~ g3 g3@2", P: "[~@4 [d4,g4]!2 ~ [d4,g4] [d4,g4]@2 [d4,g4]!2 ~ [d4,g4] [d4,g4]@19 ~@15]/3",
})).s("gm_electric_guitar_muted").gain(0.23).pan(0.2)

// chords · synth brass 1 · "SYNBRASS 1" · C Fsus2
const synth_brass_1 = note("<~ [[c4,c5,c6]@4 ~@2 [f5,g5] ~@9, ~@2 b5 ~@5, ~@5 a5@2 ~@9] ~@186>")
  .s("gm_synth_brass_1").gain(0.16).pan(0.8)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@7 A B@5 ~@62 C D E@3 ~@3 F G H@2 ~@4 I A J@3 ~ K@2 L M N O@2 P Q ~@35 R S@4 T U V W@2 ~@8 X Y Z ~ AA@2 AB ~@20 AC ~
>`.pickRestart({
  A: "[d5,d6] [a#4,a#5]", B: "[[c5,c6]@8 [g4,g5]@69 ~@3]/5", C: "~@8 d#5@7 ~", D: "d5 a#4", E: "[c5@7 ~]/3", F: "~ a#4",
  G: "a4@8 f4@7 ~", H: "[g4@31 ~]/2", I: "~@8 [d#5,d#6]@7 ~", J: "[[c5,c6]@7 ~]/3", K: "[a#4,a#5]/2",
  L: "[a4,a5] [c5,c6]", M: "[a4,a5]@8 [e4,e5]@7 ~", N: "[f4,f5]", O: "[~@4 [a4,a5]@2 [g4,g5] [a4,a5], [g4,g5]@9 ~@7]/2",
  P: "[c5,c6] [g5,g6] [a5,a6] [c6,c7]", Q: "[d5,d6]@7 ~", R: "[g4,g5]@7 ~ [a4,a5]@8",
  S: "[[c5,c6]@2 [a4,a5] ~@9 [d#4,d#5]@2 [d4,d5]@2, ~@6 [g4,g5]@19 ~@7]/4", T: "[c4,c5]@8 [g#3,g#4]@7 ~",
  U: "[g4,g5] [e4,e5]", V: "[c4,c5] ~ [g3,g4] ~ [f3,f4] ~ [e3,e4] ~", W: "[[c4,c5]@23 ~@9]/2", X: "~@8 [c5,c6]@7 ~",
  Y: "[a4,a5] [e4,e5]", Z: "[c4,c5]",
  AA: "[~@8 [d4,d5]@2 [f4,f5]@2 [g4,g5] ~ [a#4,a#5] ~, ~@4 [g3,g4]@2 [c4,c5]@3 ~@7, ~@10 [a3,a4]@5 ~@17]/2", // D F G A# G C A
  AB: "d6@7 ~", AC: "~@4 [g4,g5] [a#4,a#5] [c5,c6] ~",
})).s("gm_pad_new_age").gain(0.12).pan(0.7)

// other · marimba
const marimba = note(`<
  ~ A B C D A B E D E B C D E B E D F G H I A G J K F L H M A G J K F G H I A G J K N O P Q R S T U ~@16 F G H I A G J K
  F G H I A G J K F L H M A G J K F G H I A G J K N O P Q R S T U ~@16 F G H I A G J V ~@20 F G H I A G J K N O P Q R S
  T U ~@16 F G H W X Y ~
>`.pickRestart({
  A: "c3@2 ~@2 c4 ~ c4 ~@3 c4 ~@3 c3 ~", B: "c4 ~ c4 ~ c4 ~ c4 ~ c3 ~@7", C: "c3 ~@3 c4 ~ c4 ~@3 c4@2 ~@2 c3 ~",
  D: "c4 ~ c4 ~ c4 ~ c4 ~ f3 ~ f3 ~ d#3 ~ d#3 ~", E: "c3 ~@3 c4 ~ c4 ~@3 c4 ~@3 c3 ~",
  F: "c3@2 ~@2 c4 ~ c4 ~@3 c4@2 ~@2 c3 ~", G: "c4 ~ c4 ~ c4 ~ c4 ~ c3 ~@3 g3@2 ~@2",
  H: "c3@2 ~@2 c4 ~ c4 ~@3 c3 ~@3 c4@2", I: "~@2 c4 ~ c4 ~ c4 ~ g3 ~ g3 ~ g3 ~@3",
  J: "c3@2 ~@2 c4 ~ c4 ~@3 c4 ~@3 c3@2", K: "~@2 c4@2 ~@2 c4 ~ g3 ~ g3 ~ c4 ~ c4 ~",
  L: "c4 ~ c4 ~ c4 ~ c4 ~ c3 ~@3 a#2@2 ~@2", M: "~@2 c4 ~ c4 ~ c4 ~ g3 ~ g3 ~ c4 ~@3",
  N: "a#2@2 ~@2 a#3 ~ a#3 ~@3 a#3@2 ~@2 a#2 ~", O: "a#3 ~ a#3 ~ a#3 ~ a#3 ~ a#2 ~@3 g#2@2 ~@2",
  P: "a2@2 ~@2 a3 ~ a3 ~@3 a2 ~@3 a3@2", Q: "~@2 a3 ~ a3 ~ a3 ~ e3 ~ e3 ~ a3 ~@3",
  R: "d3@2 ~@2 d4 ~ d4 ~@3 d4 ~@3 d3 ~", S: "d4 ~ d4 ~ d4 ~ d4 ~ d3 ~@3 a3@2 ~@2",
  T: "g2@2 ~@2 g3 ~ g3 ~@3 g3 ~@3 g2@2", U: "~@2 g3@2 ~@2 g3 ~ d3 ~ d3 ~ g3 ~ g3 ~",
  V: "~@2 c4@2 ~@2 c4 ~ g3 ~ g3 ~ d4 ~ d4 ~", W: "~@2 c4 ~ c4 ~ c4 ~ a#3@2 c4@2 d#4@2 f4 ~",
  X: "~@2 f4@2 ~@2 f4@2 d#4@2 ~@2 f4 ~@3", Y: "c4 ~@3 d#4@2 ~@2 g4@2 a#4@2 c5@2 ~@2",
})).s("gm_marimba").gain(0.14).pan(0.7)

// chords · orchestra hit · "ORCH.HIT"
const orchestra_hit = note("<~@186 A@2>".pickRestart({
  A: "[~@13 [d#4,c5]@11 ~@8]/2", // Cm
})).s("gm_orchestra_hit").gain(0.8)

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

// drums · snare
const snare = s("sd").struct(`<
  A ~@32 B@19 C B@7 C B@2 D B@8 E ~@15 B@20 C B@7 C B@2 D B@8 E B@7 F B@3 F B@3 G B@3 E B@19 C B@7 C B@2 D B@4 H I J ~
>`.pickRestart({
  A: "~@3 x!2 ~@3", B: "~ x", C: "~@2 x ~@2 x ~@2", D: "~@4 x ~@2 x", E: "~@2 x ~ x!3 ~", F: "~ x!2 ~",
  G: "~@2 x ~ x!2 ~@2", H: "~@7 x", I: "~ x ~@4 x ~", J: "~@2 x ~@4 x",
})).gain(0.5)

// drums · clap
// … 83 more lines

More by Michael McDonald