Strudelify

Candy

Mandy Moore

KeyD minorTempo100 bpm
0:00/0:00
// Candy — Mandy Moore
// 100 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: Full arrangement: all 97 bars on a 32-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.

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B C D E F C G H@8 I@2 ~@16 J@8 ~@16 K L K L M N O@2 P Q R S@8 T@8 U@8 V ~@3
>`.pickRestart({
  A: "gb4", B: "f4 g4", C: "~ a4@31", D: "~ bb4@16 c5@15", E: "~ gb4@31", F: "~ f4@16 g4@15", G: "bb4 c5",
  H: "[~@15 g4@26 g4@32 gb4@31 f4@16 g4@16 gb4@32 f4@16 g4@16 gb4@32 f4@16 g4@8]/8", I: "[~@8 gb4@31 f4@16 ~@9]/2",
  J: "[~@5 d3@32 bb2@16 c3@16 d3@31 bb2@16 c3@16 bb2@32 e3@32 d3@60]/8", K: "~ d3@31", L: "~ bb2@16 c3@15",
  M: "~ bb2@31", N: "e3", O: "d3/2", P: "d3", Q: "bb2 c3", R: "d3@31 bb2",
  S: "[~@15 c3@16 bb2@32 e3@32 d3@64 d4@31 e4@32 d4@32 e4@2]/8",
  T: "[~@30 d4@32 e4@32 d4@31 e4@32 d3@32 bb2@16 c3@16 d3@32 bb2@3]/8",
  U: "[~@13 c3@16 bb2@31 e3@32 d3@64 d3@32 bb2@16 c3@16 d3@31 bb2@5]/8", V: "~@11 c3@16 ~@5",
})).s("gm_string_ensemble_1").gain(0.8).pan(0)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  A B C D E F G H@3 I@8 ~@16 J@8 ~@16 K L K L M N O@2 P Q R S@8 T@8 U@8 V ~@3
>`.pickRestart({
  A: "a3", B: "bb3 c4", C: "~ d4@31", D: "~ bb3@16 c4@15", E: "~ [a3,a4]@31", F: "~ [bb3,bb4]@16 [c4,c5]@15",
  G: "~ [d4,a4]@31", H: "[[bb3,bb4]@16 c5@31 c5@26 ~@23, ~@16 c4@23 ~@57]/3",
  I: "[~@9 a3@31 bb3@16 c4@16 a3@32 bb3@16 c4@16 a3@32 bb3@16 c4@16 a3@31 bb3@16 ~@9]/8",
  J: "[~@5 d3@32 d3@16 e3@16 d3@31 d3@16 e3@16 f3@32 g3@32 d3@60]/8", K: "~ d3@31", L: "~ d3@16 e3@15", M: "~ f3@31",
  N: "g3", O: "d3/2", P: "d3", Q: "d3 e3", R: "d3@31 d3", S: "[~@15 e3@16 f3@32 g3@32 d3@64 d5@31 c5@32 bb4@32 c5@2]/8",
  T: "[~@30 d5@32 c5@32 bb4@31 c5@32 d3@32 d3@16 e3@16 d3@32 d3@3]/8",
  U: "[~@13 e3@16 f3@31 g3@32 d3@64 d3@32 d3@16 e3@16 d3@31 d3@5]/8", V: "~@11 e3@16 ~@5",
})).s("gm_string_ensemble_2").gain(0.8).pan(1)

// other · pad sweep
const pad_sweep = note("<~@2 [~ d5@31] ~@3 [~ d5@31] ~@90>").s("gm_pad_sweep").gain(0.2).pan(0.6)

// other · music box
const music_box = note("<~@4 A B C D@2 ~@29 E F G ~@21 H I J ~@4 K@4 ~@4 L@4 ~@4 M N O P ~@4 Q@4>".pickRestart({
  A: "~ gb5@4 a5@4 d5@4 e5@4 gb5@4 a5@4 d5@4 e5@3", B: "~ f5@4 a5@4 d5@4 f5@4 e5@4 a5@4 g5@4 gb5@3",
  C: "~ gb5@4 a5@4 d5@4 e5@4 gb5@3 a5@4 d5@4 e5@4", D: "[f5@4 a5@4 d5@4 f5@4 e5@6 a5@5 g5@24 ~@13]/2", E: "~ a5 ~@5 a5",
  F: "~ g5 ~@5 g5", G: "~ gb5 ~ a5 ~@4", H: "~ a5@4 ~@19 a5@4 ~@4", I: "g5 ~@5 g5 ~", J: "gb5 ~ a5 ~@5",
  K: "[~@31 a5@4 ~@20 a5@4 ~@4 g5@4 ~@20 g5@4 ~@4 gb5@4 ~@4 a5@4 ~@21]/4",
  L: "[~@15 a4@4 f4@4 d4@4 a4@4 g4@4 e4@4 c4@4 g4@4 gb4@4 a4@4 ~@9]/4", M: "~@29 a5@3", N: "~@5 a5 ~ g5",
  O: "~@5 g5 ~ gb5", P: "~ a5 ~@6", Q: "[~@27 a4@8 ~ f4@8 d4@8 a4@8 g4@8 e4@8 c4@8 g4@8 gb4@8 a4@8 ~@20]/4",
})).s("gm_music_box").gain(0.8)

// other · synth strings 1 · "Eddie Wong"
const synth_strings_1 = note("<~@7 A@2 ~@88>".pickRestart({
  A: "[~@7 c3@21 ~@4]/2",
})).s("gm_synth_strings_1").gain(0.08).pan(0.4)

// chords · piano
const piano = note(`<
  ~@10 A B C D E B C F@4 ~ G H@2 ~ I J@2 ~ K L M N O P Q R S T U V W@3 ~ X@3 ~ Y@3 ~ Z@3 AA AB AC AD AC AE AF AG@2 AH AI
  AJ@4 AK ~@4 AL@2 AM@2 AN AO AP AQ AR AS AT AU AV AW AX AY@2 AZ AT BA
>`.pickRestart({
  A: "~ g3@2 gb3@2 d3@2 c3@2 ~@4 gb4@4 ~@4 d4@4 ~@7", B: "~@2 d4!4 e4@2", C: "~@3 gb4 ~ d4 ~@2",
  D: "~@4 d4@2 d4@2 ~@2 d4@2 g3 gb3 d3 c3, ~@3 e4", E: "g3 gb3 d3 c3 ~@2 gb4@2 ~@2 d4@2 ~@4",
  F: "[~@7 d4@4 d4@4 ~@4 d4@4 [g3,e4]@2 gb3@2 d3@2 c3@2 g3@2 gb3@2 d3@2 c3@2 gb4@8 gb4@8 e4@4 d4@4 d4@4 d4@4 c4@4 d4@4 d4@4 c4@4 e4@4 d4@4 d4@4 gb4@12 ~@17]/4", // C
  G: "~@7 gb4@8 gb4@6 gb4@2 e4@4 gb4@4 ~", H: "[~@3 gb4@4 g4@4 g4@4 f4@4 e4@4 d4@4 e4@4 d4@4 a4@4 gb4@8 ~@17]/2",
  I: "~@3 [d4,gb4]@2 [d4,gb4]@2 [d4,gb4]@2 [d4,gb4]@2 [bb3,e4]@2 [a3,gb4]@2 ~", // D Bbdim D
  J: "[~ [bb3,g4]@4 [bb3,g4]@2 [bb3,g4]@2 [bb3,gb4]@2 d4@2 e4@2 d4@2 [gb4,a4]@6 ~@9]/2", // Eb Ebm Gbm
  K: "~@6 [d4,b4]@4 [d4,a4]@4 [d4,a4]@3 [d4,a4]@4 [bb3,gb4]@4 [a3,f4]@4 ~@3", // G D5 Ebm Dm
  L: "~ [bb3,g4]@8 [bb3,g4]@4 [bb3,f4]@4 [bb3,e4]@4 d4@4 e4@4 gb4@3", M: "~ [gb4,a4]@12 ~@19",
  N: "~@25 [d4,gb4]@4 [d4,gb4]@3", O: "~ [e4,g4]@4 [gb4,a4]@4 ~@4 [d4,gb4]@4 [d4,gb4]@4 ~@4 [d4,gb4]@4 [e4,g4]@3",
  P: "~ [f4,a4]@4 [e4,g4]@4 [d4,gb4]@4 [e4,g4]@4 [f4,a4]@4 [e4,g4]@4 [d4,gb4]@4 [e4,g4]@3", // F Em D Em F Em D Em
  Q: "~ gb4@4 [gb4,a4]@4 ~@4 [d4,gb4]@4 [d4,gb4]@4 ~@3 [e4,g4]@4 ~@4", // Gbm D Em
  R: "[f4,a4] [e4,g4] [d4,gb4] [e4,g4] [f4,a4] [e4,g4] [d4,gb4] [e4,g4]", // F Em D Em F Em D Em
  S: "[d4,gb4] [d4,f4] ~ [d4,f4] [bb3,f4] [d4,f4] [e4,g4,a4] g4", T: "g4!2 ~ g4 gb4 g4 gb4 [d4,g4]",
  U: "[e4,g4] ~ [gb4,a4]@2 [gb4,a4] [e4,g4] [d4,gb4] ~", V: "b4@4 a4@2 f4@2 e4@2 e4@2 a4 c5 d4@2, ~@14 d5 ~",
  W: "[~@4 gb4@4 ~@4 gb4@4 ~@4 e4@3 d4@4 ~@4 g4@8 g4@4 f4@4 e4@4 d4@4 e4@4 gb4@4 gb4@12 ~@21]/3",
  X: "[~@3 gb4@8 gb4@6 gb4@2 e4@4 gb4@4 gb4@4 g4@8 g4@4 f4@4 e4@4 d4@4 e4@4 d4@4 a4@4 gb4@8 ~@21]/3",
  Y: "[~ [d4,gb4]@2 [d4,gb4]@2 [d4,gb4]@2 [d4,gb4]@2 [bb3,e4]@2 [a3,gb4]@2 ~@2 [bb3,g4]@4 [bb3,g4]@2 [bb3,g4]@2 [bb3,gb4]@2 d4@2 e4@2 d4@2 [gb4,a4]@6 ~@11]/3", // D Bbdim D Eb Ebm Gbm
  Z: "[~@6 [d4,b4]@4 [d4,a4]@4 ~@2 a4@2 [bb3,gb4]@4 [a3,f4]@4 d4@4 [bb3,g4]@7 [bb3,g4]@4 [bb3,f4]@4 [bb3,e4]@4 d4@4 e4@4 [d4,gb4]@4 a4@6 a4@2 gb4@8 ~@19, ~@7 d4@2 ~@39]/3", // G D5 Ebm Dm Eb Bb5 Bbdim D
  AA: "~@21 [d4,gb4]@4 [d4,gb4]@4 [e4,g4]@3", AB: "~ [gb4,a4]@4 ~@4 [d4,gb4]@4 [d4,gb4]@4 ~@4 d4@4 e4@4 [f4,a4]@3",
  AC: "~ [e4,g4]@4 [d4,f4]@4 [e4,g4]@4 [f4,a4]@4 [e4,g4]@4 [d4,f4]@4 [e4,g4]@4 [d4,f4]@3", // Em Dm Em F Em Dm Em Dm
  AD: "~ [gb4,a4]@4 ~@4 [d4,gb4]@4 [d4,gb4]@4 ~@4 [d4,e4]@4 ~@4 [f4,a4]@3", // Gbm D Dsus2 F
  AE: "~ [d4,f4]@4 ~@3 [d4,f4]@4 [bb3,f4]@4 [d4,f4]@4 [e4,g4,a4]@4 g4@4 g4@4", AF: "g4 ~ g4 gb4 g4 gb4 [d4,g4] [e4,g4]",
  AG: "[~ [gb4,a4]@2 [gb4,a4] [e4,g4] [d4,gb4] ~ b4@2 a4 f4 e4!2 [d4,gb4]!2 [e4,g4]]/2", // Gbm Em D Em
  AH: "[gb4,a4] ~ [d4,gb4]!2 ~ d4 [e4,d5] [f4,bb4]", AI: "[e4,c5] d4 [e4,a4] [f4,g4] [e4,gb4] [d4,f4] [e4,gb4] f4",
  AJ: "[[gb4,a4]@4 ~@3 [d4,gb4]@4 [d4,gb4]@4 ~@4 [e4,g4]@4 ~@4 [f4,a4]@4 [e4,g4]@4 d4@4 e4@4 f4@4 e4@4 [d4,gb4]@4 [e4,g4]@4 [d4,gb4]@4 f4@4 ~@4 f4@4 f4@4 f4@4 [g4,a4]@4 g4@4 g4@4 g4@4 ~@4 g4@4 gb4@4 g4@4 gb4@4 [d4,g4]@4 [e4,g4]@4 ~]/4", // Gbm D Em F Em D Em D …
  AK: "~@3 [gb4,a4]@8 [gb4,a4]@4 [e4,g4]@4 [d4,gb4]@4 ~@9", AL: "[~@15 a4@2 a4@2 f4@2 ~@2 d4@2 ~@2 a4@2 g4@2 ~]/2",
  AM: "[~@6 g4@4 e4@4 c4@4 g4@4 ~@4 [e4,g4]@4 [d4,gb4]@4 [gb4,a4]@4 ~@4 [gb4,a4]@4 [e4,g4]@3 [d4,gb4]@4 gb4@4 ~@7]/2", // Em D Gbm Em D
  AN: "~@17 d4@4 [d4,gb4]@4 [e4,g4]@4 [gb4,a4]@3", AO: "~@5 [d4,gb4]@4 [d4,gb4]@4 ~@4 d4@4 e4@4 [d4,f4,a4]@4 [e4,g4]@3",
  AP: "~ [d4,f4]@4 [e4,g4]@4 [f4,g4,a4]@4 [e4,g4]@4 [d4,f4]@4 [e4,g4,a4]@4 [d4,f4,a4]@4 [gb4,a4]@3", // Dm Em F Em Dm A7 Dm Gbm
  AQ: "~@5 [d4,gb4]@4 [d4,gb4]@4 ~@4 [d4,e4]@4 ~@4 [f4,a4]@4 [e4,g4,a4]@3", // D Dsus2 F A7
  AR: "~ [d4,f4,bb4]@4 [e4,g4]@4 [f4,a4]@4 [e4,g4]@4 [d4,f4]@4 [e4,g4]@4 [d4,f4]@4 [d4,f4]@3, ~@5 bb4@8 a4@8 ~@11", // Bb Em F Em Dm Em Dm
  AS: "~@5 [d4,f4]@4 [bb3,f4]@4 [d4,f4,g4]@4 [e4,g4,a4]@3 [g4,a4]@4 g4@4 g4@4", AT: "~ g4 gb4 g4 gb4 [d4,g4] [e4,g4] ~",
  AU: "[gb4,a4]@2 [gb4,a4] [e4,g4] [d4,gb4] ~ b4@2", AV: "[e4,a4] f4 e4!2 [d4,gb4]!2 [e4,g4] a4",
  AW: "~ gb4!2 ~@3 a4 g4", AX: "f4 g4 a4 g4 f4 g4 f4 [gb4,a4]",
  AY: "[~@4 gb4@4 gb4@4 ~@4 g4@4 ~@3 a4@4 g4@4 f4@4 g4@4 a4@4 g4@4 [f4,gb4]@4 g4@4 [f4,gb4]@4 [bb3,f4]@4 ~]/2", // Gbmaj7 Bb5
  AZ: "~ [bb3,f4]!2 [c4,f4] [d4,g4,a4] g4!3", BA: "[gb4,a4]@2 [gb4,a4] [e4,g4] [d4,gb4] ~@3",
})).s("gm_piano").gain(0.8).pan(0.4)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@10 A B C B C B C D ~@3 E@2 ~@2 F@2 ~@2 F@2 ~@3 G H I J K L M N ~@3 O@2 ~@2 P ~@3 P ~@4 Q R Q R S T U V U W X@6 ~@7 Y
  Z AA Z AB AC AD AE AF AG AH AI@2 ~@3
>`.pickRestart({
  A: "~@9 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~", B: "~@2 d5 ~ bb4 ~ bb4 ~@3 bb4 ~ c5 ~ c5 ~",
  C: "~@2 c5 ~ d5 ~ d5 ~@3 d5 ~ d5 ~ d5 ~", D: "~@4 d5@2 ~ bb4@2 ~@2 bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@7",
  E: "[~@31 e3@8 ~@25]/2", F: "[~@15 e3@4 ~@13]/2", G: "~@5 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@5",
  H: "~ d5@2 ~@2 bb4@2 ~@2 bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@2 c5@2 ~@5",
  I: "~ c5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~ d5@2 ~@2 d5@2 ~@6", J: "d5 ~ bb4 ~ bb4 ~@3 bb4 ~ c5 ~ c5 ~@3",
  K: "c5 ~ f5 ~ f5 ~@3 f5 ~ f5 ~ f5 ~@3", L: "f5 ~ e5 ~ e5 ~@3 e5 ~ e5 ~ e5 ~@3",
  M: "e5 ~ d5 ~ d5 ~@3 d5 ~ d5 ~ d5 ~@3", N: "d5 ~ d5 ~ d5 ~@3 d5 ~ d5 ~ d5 ~@3", O: "[~@27 e3@8 ~@29]/2",
  P: "~@13 e3@3", Q: "~ d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~",
  R: "~ bb4@2 ~@2 bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@2 c5@2 ~@6 c5@2 ~",
  S: "~ f5@2 ~ f5@2 ~@6 f5@2 ~@2 f5@2 ~@2 f5@2 ~@6 f5@2 ~@2", T: "e5 ~ e5 ~@3 e5 ~ e5 ~ e5 ~@3 e5 ~",
  U: "d5 ~ d5 ~@3 d5 ~ d5 ~ d5 ~@3 d5 ~", V: "d5 ~ d5 ~@3 d5 ~ d5 ~ d5 ~@5", W: "bb4 ~ bb4 ~@3 bb4 ~ c5 ~ c5 ~@3 c5 ~",
  X: "[d5@2 ~@2 d5@2 ~@5 d5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 bb4@2 ~@2 bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@2 c5@2 ~@6 c5@2 ~@2 f5@2 ~@2 f5@2 ~@6 f5@2 ~@2 f5@2 ~@2 f5@2 ~@6 f5@2 ~@2 e5@2 ~@2 e5@2 ~@6 e5@2 ~@2 e5@2 ~@2 e5@2 ~@6 e5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@11]/6",
  Y: "~@29 d5@2 ~", Z: "~ d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@6 d5@2 ~@2 bb4@2 ~",
  AA: "~ bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@2 c5@2 ~@6 c5@2 ~@2 d5@2 ~",
  AB: "~ bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@2 c5@2 ~@6 c5@2 ~@2 f5@2 ~",
  AC: "~ f5@2 ~@6 f5@2 ~@2 f5@2 ~@2 f5@2 ~@5 f5@2 ~@2 e5@2 ~@2", AD: "e5 ~@3 e5 ~ e5 ~ e5 ~@3 e5 ~ d5 ~",
  AE: "d5 ~@3 d5 ~ d5 ~ d5 ~@3 d5 ~ d5 ~", AF: "d5 ~@3 d5 ~ d5 ~ d5 ~@5 d5 ~", AG: "d5 ~@3 d5 ~ d5 ~ d5 ~@3 d5 ~ bb4 ~",
  AH: "bb4 ~@3 bb4 ~ c5 ~ c5 ~@3 c5 ~ d5 ~",
  AI: "[d5@2 ~@6 d5@2 ~@2 d5@2 ~@2 d5@2 ~@5 d5@2 ~@2 bb4@2 ~@2 bb4@2 ~@6 bb4@2 ~@2 c5@2 ~@2 c5@2 ~@6 c5@2 ~@7]/2",
})).s("gm_distortion_guitar").gain(0.4).pan(0.1)

// other · overdriven guitar
const overdriven_guitar = note("<~@10 A B C B C B C D ~@79>".pickRestart({
  A: "~@13 a4@4 ~@15", B: "~ c4 d4 ~@5", C: "a4 ~@2 a4 ~@4", D: "~@4 c4@3 d4@4 ~@21",
})).s("gm_overdriven_guitar").gain(0.8).pan(0.6)

// bass · electric bass pick
const bass = note(`<
  ~@10 A B C B C B C D E ~ E ~ E ~ F ~ G ~ G ~ H ~ I ~ I J I K L M N ~ N ~ O ~ O ~ O ~ P ~ P ~ P ~ Q ~ Q R Q R S T U ~ U
  V W@5 X@8 Y Z AA Z AB AC AD AE AF AG AH AI@2 ~@3
>`.pickRestart({
  A: "~@9 d2@4 d2@4 c2@4 d2@4 ~@7", B: "~@2 d2!2 ~@2 c2!2", C: "~@2 d2!2 c2 d2 ~@2", D: "~@7 d2@4 d2@4 ~@17",
  E: "~@7 d2@4 d2@4 c2@4 d2@4 ~@9", F: "~@7 d2@4 d2@3 c2@4 d2@4 ~@10", G: "~@3 d2@2 d2@2 c2@2 d2@2 ~@5",
  H: "~@6 d2@4 d2@4 c2@3 d2@4 ~@11", I: "~@5 d2@4 d2@4 c2@4 d2@4 ~@11", J: "~@5 bb1@4 bb1@4 ~@8 c2@4 c2@4 ~@3",
  K: "~ bb1!2 ~@2 c2!2 ~", L: "~ bb1!2 ~ bb1!3 ~", M: "~ c2!2 ~ c2!3 ~", N: "~ d2!2 c2 d2 ~@3",
  O: "~@3 d2@4 d2@4 c2@4 d2@4 ~@13", P: "~ d2@2 d2@2 c2@2 d2@2 ~@7", Q: "~ d2@4 d2@4 c2@4 d2@4 ~@15",
  R: "~ bb1@4 bb1@4 ~@8 c2@4 c2@4 ~@7", S: "~ bb1@3 bb1@4 ~@4 bb1@4 bb1@4 bb1@4 ~@8", T: "c2!2 ~ c2!3 ~@2",
  U: "d2!2 c2 d2 ~@4", V: "bb1!2 ~@2 c2!2 ~@2",
  W: "[d2@4 d2@3 c2@4 d2@4 ~@16 bb1@4 bb1@4 ~@8 c2@4 c2@4 ~@8 bb1@4 bb1@4 ~@4 bb1@4 bb1@4 bb1@4 ~@8 c2@4 c2@4 ~@4 c2@4 c2@4 c2@4 ~@8 d2@4 d2@4 c2@4 d2@4 ~@17]/5",
  X: "[~@31 bb1@4 c2@4 d2@4 ~@19 bb1@4 c2@4 c2@4 ~@20 bb1@4 c2@4 d2@4 ~@20 bb1@4 c2@4 c2@4 ~@20 bb1@4 c2@4 d2@4 ~@20 bb1@4 c2@4 c2@4 ~@20 bb1@4 c2@4 d2@4 ~@19 bb1@3]/8",
  Y: "~ c2@4 c2@4 ~@20 d2@3", Z: "~ d2@4 c2@4 d2@4 ~@16 bb1@3", AA: "~ bb1@4 ~@8 c2@4 c2@4 ~@8 d2@3",
  AB: "~ bb1@4 ~@8 c2@4 c2@4 ~@8 bb1@3", AC: "~ bb1@4 ~@4 bb1@4 bb1@4 bb1@4 ~@7 c2@4", AD: "c2 ~ c2!3 ~@2 d2",
  AE: "d2 c2 d2 ~@5", AF: "~@7 d2", AG: "d2 c2 d2 ~@4 bb1", AH: "bb1 ~@2 c2!2 ~@2 d2",
  AI: "[d2@4 c2@4 d2@4 ~@15 bb1@4 bb1@4 ~@8 c2@4 c2@4 ~@13]/2",
})).s("gm_electric_bass_pick").gain(0.8).pan(0.3)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@18 A@3 B@4 C@8 ~ D@8 E@8 F G F G F H I ~ J K J K L M N O P Q R@5 S@5 ~@3 T@8 U@5 ~@3
>`.pickRestart({
  A: "[~@7 d3@32 d3@32 d3@4 d3@4 c3@4 e3@13]/3", B: "[~@3 g3@36 d3@32 d3@32 d3@4 d3@3 c3@4 e3@12 a4@2]/4",
  C: "[~@2 g4@4 ~@8 e4@4 d4@4 e4@16 d3@32 bb2@16 c3@16 d3@32 bb2@16 c3@16 d3@31 bb2@16 c3@16 d3@27]/8",
  D: "[~@5 d4@32 d4@16 e4@16 d4@31 d4@16 e4@16 bb2@32 c3@32 d3@32 c3@4 d3@24]/8",
  E: "[~@4 d3@31 d3@32 d3@4 d3@4 c3@4 e3@16 g3@36 d3@32 d3@32 d3@4 d3@4 c3@4 ~@12 a4@3 g4@4 ~@8 e4@4 d4@4 e4@14, ~@207 e3@16 ~@33]/8",
  F: "~ d3@15", G: "~ bb2@8 c3@7", H: "~ bb2@16 c3@15", I: "~ d3@31", J: "~ d4@31", K: "~ d4@16 e4@15", L: "~ bb2@31",
  M: "c3", N: "d3", O: "c3 d3@7", P: "d4", Q: "d4 e4", R: "[d4@31 d4@16 e4@16 bb2@32 c3@32 d3@32 c3]/5",
  S: "[~@3 d3@28 a3@31 g3@32 a3@32 g3@32 ~@2]/5",
  T: "[~@29 d4@32 d4@16 e4@16 d4@32 d4@16 e4@16 bb2@31 c3@32 d3@32 c3@4]/8",
  U: "[d3@28 d4@32 d4@16 e4@16 d4@31 d4@16 e4@16 ~@5]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.8).pan(0.7)

// other · electric guitar muted
const electric_guitar_muted = note("<~@21 A ~@3 B ~@3 B ~@2 C ~@12 D ~@3 E ~@3 E ~@2 F ~@40>".pickRestart({
  A: "~@11 bb3@4 ~@12 c4@4 ~", B: "~@5 bb3@2 ~@6 c4@2 ~", C: "~@9 gb4@4 gb4@4 ~@4 gb4@4 ~@7",
  D: "~@7 bb3@4 ~@12 c4@4 ~@5", E: "~@3 bb3@2 ~@6 c4@2 ~@3", F: "~@5 gb4@4 gb4@4 ~@4 gb4@4 ~@11",
})).s("gm_electric_guitar_muted").gain(0.8)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note("<~@29 A@2 ~@22 B ~@43>".pickRestart({
  A: "[~@3 d4@2 ~@2 d4@2 ~@2 e4@2 ~@2 e4@2 ~@15]/2", B: "~ d4@2 ~@2 d4@2 ~@2 e4@2 ~@2 e4@2 ~",
})).s("gm_electric_guitar_muted").gain(0.4)

// other · tremolo strings
const tremolo_strings = note("<~@33 A B ~@22 C D ~@22 E ~@15>".pickRestart({
  A: "~@21 c5 b4 a4 g4 f4 e4 d4 db4 c4 b3 a3", B: "g3 f3 e3 d3 db3 c3 ~@26",
  C: "~@17 c5 b4 a4 g4 f4 e4 d4 db4 c4 b3 a3 g3 f3 e3 d3", D: "db3 c3 ~@30",
  E: "~@13 c5 b4 a4 g4 f4 e4 d4 db4 c4 b3 a3 g3 f3 e3 d3 db3 c3 ~@2",
})).s("gm_tremolo_strings").gain(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A B C@6 D@7 E F@5 G H@2 I J H K L@5 M N@6 O@6 P@2 Q P@4 R S@5 T U@5 V W@5 X Y Z@4 AA AB@5 AC AD ~@3
>`.pickRestart({
  A: "~@9 x ~@15 x ~@6", B: "~@9 x ~@15 x ~@3 x ~@2", C: "~@2 x ~@3 x!2", D: "~@7 x ~@15 x ~@3 x ~@4",
  E: "~@7 x ~@14 x ~@3 x ~@5", F: "~@3 x ~@7 x ~ x ~@2", G: "~@6 x ~@14 x ~@3 x ~@6", H: "~@5 x ~@15 x ~@3 x ~@6",
  I: "~@5 x ~@15 x ~@5 x ~@4", J: "~ x ~@3 x ~@15 x ~@3 x ~@6", K: "~@5 x ~@14 x ~@3 x ~@7", L: "~ x ~@3 x!2 ~",
  M: "~@4 x ~@15 x ~@2 x ~@8", N: "~@3 x ~@15 x ~@3 x ~@8", O: "~ x ~@7 x ~ x ~@4", P: "~ x ~@15 x ~@3 x ~@10",
  Q: "~ x ~@30", R: "~ x ~@14 x ~@3 x ~@11", S: "x ~@3 x!2 ~@2", T: "x ~@14 x ~@3 x ~@11 x", U: "~@15 x ~@3 x ~@11 x",
  V: "~@3 x ~@10 x ~@3 x ~@9 x ~ x ~", W: "~ x ~@5 x ~ x ~@4 x!2", X: "~@2 x ~@11 x ~@2 x ~@9 x ~ x ~@2",
  Y: "~ x ~@11 x ~@15 x ~@2", Z: "~@13 x ~@3 x ~@11 x ~@2", AA: "~@13 x ~@3 x ~@10 x ~@3", AB: "~@3 x!2 ~@2 x",
  AC: "~@12 x ~@3 x ~@10 x ~@4", AD: "~@11 x ~@3 x ~@16",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@9 A B C D@5 E ~@56 F G@5 H I ~@15>".pickRestart({
  A: "~@17 x ~@14", B: "~ x ~@15 x ~@14", C: "~ x ~@14 x ~@15", D: "x!2", E: "x ~@14 x ~@15 x", F: "~@7 x ~@14 x ~@9",
  G: "~@3 x ~@7 x ~@4", H: "~@6 x ~@14 x ~@10", I: "~@5 x ~@26",
// … 62 more lines

More by Mandy Moore