Strudelify
From This Moment On cover art

Come On Over

From This Moment On

Shania Twain

KeyA majorTempo70 bpm
0:00/0:00
// From This Moment On — Shania Twain
// 70.4 bpm, 4/4, key A 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 77 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70.4/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("<~@12 A@2 B@2 ~@8 C@6 D@3 ~@44>".pickRestart({
  A: "[~@47 d2@25 [g1,g2]@22 ~@2]/2", B: "[[a1,a2]@38 ~@2 g1@17 ~@39, ~@39 g2@17 ~@40]/2",
  C: "[~@29 [d2,a2]@73 g2@48 a2@47 g2@48 d2@25 e2@18]/6", D: "[~@6 a2@24 g2@47 ~@2 d2@36 ~@29]/3",
})).s("gm_string_ensemble_1").gain(0.36)

// chords · piano
const piano = note("<~@31 A@5 B@8 C D@2 E@8 F@8 G@6 H@4 I@2 ~@2>".pickRestart({
  A: "[~@28 a4 ~@2 a4@6 d5 ~@2 d5@7 ~ e5 ~@2 e5@7 ~@2 f#5 ~@10 a4@5 ~@2 b4@13 a4@3 g4@8 ~@17 d5@2 ~@11 c#5 ~@2 c#5@7 ~ b4 ~@2 b4@8 ~ a4 ~@2 a4@9 g4@4 ~@8 f#4@3 ~ a4@7 ~@7 [b2,b4,b5]@6 [e3,e5,e6]@12 [d5,d6]@6 ~@2 a4@5 d5 ~@2 d5@7 ~@2, ~@31 d3@34 e3@12 g3@49 c#3@48 d3@23 ~@18 d3@25, ~@62 f#5@8 ~@55 d5@5 ~@43 g4@6 ~@11 a4@25 ~@25]/5", // B E D
  B: "[e5 ~@10 f#5 ~@13 a4@4 ~@2 b4@14 a4@3 g4@14 ~@4 a4@5 ~@18 [d5,b5]@7 ~@6 [e5,c#6]@9 ~@3 [f#5,d6]@5 ~@19 [d5,b5]@5 ~@6 e5@4 e5@2 d5@5 ~ [d5,f#5]@6 ~@18 [f#5,d6]@7 ~@4 [g5,e6]@9 ~@4 d5@4 ~@25 e5@14 ~@5 g#4@4 ~ a4@6 b4@6 e4@12 ~@4 e4@2 ~ b4@5 ~ a4@5 g#4@5 ~@20 g#4@5 ~ f#4@6 e4@6 c#5@20 ~ b4@2 ~ a4@9 ~@2 b4@2, ~@2 e5@7 ~@5 f#5@10 ~@48 f#5@39 ~@2 d5@5 ~ f#5@34 ~@14 f#5@18 ~@24 [a5,f#6]@10 ~@165, ~@5 e3@12 f#3@14 g3@47 b2@43 ~@5 g2@48 ~@40 f#5@24 ~@73 f#4@16 ~@14 a2@43, ~@149 c#6@9 ~@3 d6@10 ~@2 d3@47 ~ a2@47 e3@49 b2@25 ~@42]/8", // G C#m D G D C D
  C: "~@4 b4@5 ~ c#5@6 b4@5 ~ d#5@10 c#5@2 b4@4 ~@2 c#5@5 ~ d#5 ~, ~ b2@11",
  D: "[~@10 a4@16 ~@2 e5@6 ~ d#5@5 c#5@5 ~@14 a4@3 g#4@12 ~@2 b4@5 ~ a4@14, ~ e5@9 ~@36 b4@12 ~@38, ~@4 a2@48 e3@23 f#3@21]/2",
  E: "[~@5 g#4@6 f#4@11 ~@7 a2@36 ~ b2@11 ~@24 e6@5 ~ b6@4 ~@2 b6@4 ~ c#7@6 ~@24 [g#5,b5]@10 ~@2 f#6@5 ~ e6@3 ~@3 d#6@24 ~ c#6@15 ~@12 b6@3 d#7@3 e7@3 d#7@2 b6@3 d#7@3 e7@2 ~ f#7@16 ~@9 b4@5 e5 ~@2 e5@7 ~@2 f#5 ~@2 f#5@7 ~@2 g#5 ~@2 g#5@9 ~ b4@5 ~@15 b4@3 a4@21 ~@3 e5@3 ~@3 e5@5 ~ d#5 ~@2 d#5@7 ~ c#5 ~@2, ~@5 b2@24 ~@36 [a5,c#6,e6]@7 ~@5 [g#5,b5,e6]@18 ~@30 [e6,g#6]@19 ~@28 a2@48 b2@49 d#3@9 ~@38 c#5@15 ~@33 b2@20, ~@22 e4@53 ~@3 e3@48 c#3@46 [a5,b5]@38 ~@67 e3@40 a2@48 ~@19]/8", // G#m A E Asus2
  F: "[~ c#5@8 ~ b4 ~@2 b4@9 a4@3 ~@3 a4@5 ~ g#4@2 ~ b4@14 ~ [c#5,c#6]@6 [f#3,f#5,f#6]@12 [e5,e6]@7 b4@6 e5 ~@2 e5@7 ~@2 f#5 ~@11 g#5 ~@10 b4@4 ~@3 b2 ~@13 b4@3 a4@12 ~@7 b4@4 ~@20 [e5,c#6]@8 ~@4 [f#5,d#6]@10 ~@25 [e5,c#6]@8 ~@4 f#5@3 f#5@2 ~ e5@3 ~@3 [g#5,e6]@5 ~@18 [g#5,e6]@7 ~@5 [a5,f#6]@8 ~@5 e5@4 ~@25 f#5@23 ~@8 f#5@19 ~, ~@28 e3@23 c#3@7 ~@12 e3@27 f#5@8 ~@5 g#5@9 ~@5 c#5@14 ~@28 g#5@38 ~@4 e5@5 ~ g#5@33 ~@8 e5@5 ~ g#5@18 ~@24 [b5,g#6]@13 ~@68, ~@101 f#3@11 g#3@11 ~@2 a2@47 c#3@48 a2@47 e3@49 b2@45 ~@23, ~@209 [g5,e6]@8 ~@27 d#6@7 ~@58 g#5@24 ~@51]/8", // C# F# E C#m D#m C#m D E …
  G: "[~@4 f#5@17 ~@25 f#3@2 ~@4 f#3@19 c#5@3 ~@3 c#5@5 ~@3 a#2 ~@3 b2@4 ~ g#4@10 ~ c#3@17 g#4@3 f#4@10 d#5@27 ~@3 c#5@2 ~@4 c#5@6 d#5@5 c#5@5 ~ f5@6 ~@4 d#5@2 ~ c#5@5 ~ d#5@5 ~ f5@2 ~@11 b4@13 ~@4 f#5@5 ~ f5@5 ~ d#5@5 ~@13 b4@2 ~ a#4@12, ~@28 f#5@5 ~ c#5@34 ~@14 b4@5 ~ a#4@4 ~@13 c#5@16 ~@49 c#3@25 ~@21 f#5@9 ~@36 c#5@12 ~@15, ~@29 f#3@14 ~@34 f#3@8 ~@3 a#2@2 ~@3 c#3@11 ~@21 b2@46 ~@6 c#5 ~@16 f3@25 b2@47 f#3@22]/6",
  H: "[~@3 c#5@6 b4@18 a#4@6 ~ g#4@7 ~@2 d#5@6 ~ f5@2 ~@10 b4@4 ~@3 b4@8 ~ a#4 ~@3 a#4@3 g#4@3 f#4 ~@2 f#4@11 ~@2 f#4@2 ~@2 f#5@5 ~@2 f5@5 ~ d#5@6 ~@14 b4@2 ~@2 a#4@13 ~@4 c#5@6 b4@17 ~ a#4@6, ~@2 g#3@25 c#3@26 f#5@9 ~@66 c#5@12 ~@52, ~@56 b2@47 ~@5 b2@26 f#3@29 ~@29]/4",
  I: "[~ g#4@12 f#4@54 ~@29]/2",
})).s("gm_piano").gain(0.41)

// other · string ensemble 2
const string_ensemble_2 = note("<~@17 A@4 ~@56>".pickRestart({
  A: "[~@8 a4@71 e4@25 ~ g4@23 b4@24 ~@40]/4",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · ocarina
const ocarina = note("<~@21 A@3 B@8 C@3 D@8 E@7 F G@7 H@5 I@6 J@4 ~@4>".pickRestart({
  A: "[~@7 g4@46 d4@25 e4@48 ~@18]/3",
  B: "[~@30 a4@71 g4@48 a4@47 ~@49 d4@25 e4@27 a4@21 g4@46 ~@20, ~@196 g4@55 ~@133]/8",
  C: "[~@29 d3@48 e3@48 [d3,g3]@19]/3", // G5
  D: "[~@30 [f#3,a3]@24 e4@22 ~@2 [d3,a3]@41 ~@18 [d3,b3]@36 ~ g3@45 ~@50 a2@39 ~@8 [e3,b3]@48 f#3@20, ~@54 g3@67 ~@52 d3@134 ~@77, ~@219 f#3@89 ~@76]/8", // F#m D5 G E5
  E: "[~@9 e3@43 ~@14 d#3@32 ~ e3@73 [a3,b3]@25 b2@25 ~@28 g#3@21 ~@2 e3@43 ~@20, ~@8 a2@44 f#3@46 a2@49 ~@25 f#3@49 ~@3 a2@45 ~@67, ~@226 e3@43 ~@67]/7", // Asus2
  F: "~@37 a3@11, ~@5 [a2,c#3]@3, ~@31 f#3@17", // A
  G: "[~@28 [b2,d#3,f#3]@47 ~ b3@47 ~ a2@46 ~@9 d#4@38 ~ e3@96 ~ a3@21, ~@27 a3@13 ~@35 g#3@48 a3@50 f#3@42 ~@3 e4@118, ~@76 e3@95 ~@2 [b2,d#3]@46 ~@117, ~@179 b3@137 ~@20]/7", // B
  H: "[~@37 e3@32 ~@7 [a2,a3]@45 ~@76 f#3@19 ~@24, ~@37 e4@164 ~@39, ~@76 e3@120 d#3@21 ~@23, ~@171 b2@46 ~@23]/5", // A
  I: "[~@31 a#3@69 [b2,d#3]@68 ~ [f3,g#3]@49 [b2,b3]@48 ~@22, ~@30 f#3@139 ~@49 f#3@70, ~@30 c#4@71 ~@67 c#3@49 ~@71]/6", // B Fm B
  J: "[~@2 [g#2,d#3]@25 g#3@29 ~@80 f#3@24 ~@9 g#2@17 ~@6, ~@56 [b2,f#3]@79 ~@57, ~@111 a#3@52 ~@29]/4", // G#5 B5
})).s("gm_ocarina").gain(0.15)

// chords · ocarina · soft notes
const ocarina_soft = note("<~@23 A@2 ~@6 B@4 ~@3 C@6 D E@2 F@5 ~ G@2 H@8 ~@4 I@2 J@7 ~>".pickRestart({
  A: "[~@29 d4@40 ~@27, ~@2 a4@21 ~@9]/2", B: "[~@31 a3@142 ~@19, ~@31 f#3@46 ~@115]/4",
  C: "[~@30 b2@45 a3@89 ~@8 g#3@48 [b2,d#3]@28 c#3@40]/6", D: "~ b2@11, ~ d#3@3 ~@8",
  E: "[~@3 c#3@47 ~ b3@25 ~@20, ~@25 g#3@13 ~@10]/2",
  F: "[~@5 d#3@25 ~@9 a3@11 ~@39 b3@35 [c#3,e3]@46 ~@25 g#3@26 ~@19, ~@34 c#3@43 ~@12 g#3@86 e3@42 ~@23]/5", // C#m
  G: "[~@28 c#3@47 ~@21, ~@27 c#4@53 ~@16]/2",
  H: "[~@27 g#3@93 ~@3 e3@48 ~@10 c#3@34 ~@5 c#3@45 ~@11 g#3@64 ~@44, ~@61 [a2,c#3]@25 ~@4 g#4@20 ~@82, ~@123 c#4@42 ~@15 c#4@84 ~ [b3,g#4]@75 ~@44]/8", // A E
  I: "[~@26 d#3@47 ~ c#4@22, ~@73 a#3@23]/2",
  J: "[~@27 [c#3,f3]@27 ~@2 d#3@2 ~@25 a#3@27 ~@26 c#4@26 ~@97 a#2@55 ~@22, ~@60 d#3@75 ~@27 d#3@23 ~@2 d#3@127 ~@22, ~@170 g#3@40 ~ f#3@103 ~@22, ~@187 b2@72 ~@77]/7", // C#
})).s("gm_ocarina").gain(0.05)

// bass · fretless bass
const bass = note("<~@31 A B@2 C D E F@2 G@4 H@4 I@3 J K L M N O P Q@2 R S T U V@3 W@2 X Y Z@7>".pickRestart({
  A: "~@31 d2@17", B: "[~@5 d2@9 ~@4 e2@8 ~@4 g2@34 ~@8 g2@5 ~ c2@4 c#2@13 ~]/2",
  C: "~@2 c#2 ~@2 c#2@15 ~@3 c#2@5 ~ d2@19", D: "~@5 b1@6 ~ e2@10 ~@2 d2@4 ~@2 d2@18",
  E: "~@3 d2 ~@2 e2@9 ~@4 f#2@11 ~ g2@16 ~", F: "[~@3 g2 ~@2 g2@21 ~@3 b1@13 ~@4 b1@2 ~@5 b1@22 ~ g1@14 ~@5]/2",
  G: "[g1@2 ~@4 g1@23 d2@13 ~@5 d2@2 ~@4 d2@13 ~@5 d2@2 ~@4 a1@16 ~ e2@5 ~@2 a1@9 ~@14 e2@13 ~@6 e2@2 ~@4 e2@13 ~@5 e2@5 ~ b1@19]/4",
  H: "[~@5 a1@14 ~@4 a1@2 ~@4 a1@23 b1@14 ~@4 b1@2 ~@4 b1@9 ~@9 b1@4 ~@2 a1@15 ~@4 a1@2 ~@4 a1@23 e2@13 ~@5 e2@2 ~@4 e2@12 ~ f#2@7]/4",
  I: "[~@5 c#2@4 ~ b1@12 ~ a1@47 ~ b1@5 ~ e2@13 ~@5 e2@2 ~@4 e2@12 ~@5 e2@2 ~@6 c#2@13 ~@3 c#2 ~]/3",
  J: "~@4 c#2@15 ~@4 c#2@2 ~@4 a1@13 ~@4 a1@2", K: "~@4 a1@24 ~ b1@15 ~@2 b1@2",
  L: "~@4 b1@9 f#2@2 ~ b2@5 ~ f#2@5 ~@2 e2@14 ~@5", M: "~ e2 ~@2 e2@15 ~@3 e2@2 ~@4 a1@14 ~@4 a1@2",
  N: "~@4 a1@14 ~@5 a1 ~@5 b1@15 ~@2 b1@2", O: "~@4 b1@14 ~@4 b1@5 ~ e2@14 ~@3 e2 ~@2",
  P: "~ e2@2 ~ c#2@6 ~ f#2@12 e2@2 ~@4 e2@14 ~@3 e2 ~",
  Q: "[~ e2 ~@2 f#2@10 ~@2 g#2@10 ~@3 a1@15 ~@3 a1@2 ~@3 a1@24 c#2@14 ~@4 c#2@2]/2", R: "~@4 c#2@23 ~ a1@15 ~@3 a1@2",
  S: "~@4 a1@23 e2@14 ~@4 e2@2 ~", T: "~@4 e2@15 ~@3 e2@6 b1@12 ~@5 b1@2 ~", U: "~@3 b1@5 ~@40",
  V: "[~@28 f#2@13 ~@6 f#2@2 ~@4 f#2@18 ~@5 f#2@5 ~ a#1@4 ~@2 b1@5 c#2@16 ~ c#2@9 ~@2 b1@14 ~@6 b1 ~@2]/3",
  W: "[~@3 b1@14 ~@3 b1@7 c#2@12 ~@6 c#2@7 f2@9 ~@3 d#2@4 ~ c#2@5 ~ b1@13 ~@5 b1@2 ~, ~@69 d#2 ~@26]/2",
  X: "~@3 b1@23 ~ f#2@16 ~@5", Y: "~@3 g#2@16 ~@2 d#2@5 ~@2 c#2@17 ~@3",
  Z: "[~ c#2@2 ~ c#2@2 ~@2 b1@50 ~@3 b1@25 f#2@25 ~ g#2@23 ~@2 c#2@19 ~ b1@53 ~@3 a#1@26 c#2@32 ~@7 f#2@43 ~@15]/7",
})).s("gm_fretless_bass").gain(0.46)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@48 A@2 B@2 C ~@20 D E F@2>".pickRestart({
  A: "[~@30 a5@2 e6@3 ~ d#6@3 e6@3 a5@2 e6@3 d#6@3 e6@2 ~ b5@2 ~ e6@2 ~ d#6@3 e6@2 ~ f#6@2 ~ e6@2 d#6@3 e6@2 ~ a5@2 ~ e6@3 d#6@3 e6@3 ~ b5@2 ~ e6@2 d#6@2]/2",
  B: "[~@2 e6@2 b5@3 e6@3 d#6@3 e6@2 ~ f#6 ~@2 e6@3 d#6@2 e6@3 b5@3 e6@3 ~ d#6@3 e6@3 b5@3 e6@3 d#6@3 e6@2 ~ b5@2 ~ e6@3 d#6@3 e6@2 ~ f#6 ~@2 e6@2 ~ d#6@2 e6@3 ~@4 b5@2 ~ d#6@3 e6@3 d#6@3 b5@3 d#6@2]/2",
  C: "~ e6@2 ~ f#6@21 ~@23", D: "~@43 b5@2 f#6@3",
  E: "~ f6@3 f#6@3 b5@3 f#6@3 f6@3 f#6@3 ~ a#5@3 f#6@3 f6@4 f#6@3 a#5@3 ~ f#6@3 f6@3 f#6@2 ~@3",
  F: "[~@3 f#6@4 ~ f6@4 f#6@3 g#6@4 f#6@5 f6@5 ~@7 [a#5,c#6]@49 ~@11, [b5,g#6]@5 ~@24 f#6@57 ~@10]/2", // A#m E
})).s("gm_string_ensemble_1").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  ~@24 A@2 B ~ C D E F D G H I G I J K L I L@2 M N M I@2 O M L M@2 N L M@2 I M P Q R S L T U T@2 Q ~@7
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x ~@33 x ~@6", C: "~@5 x ~@42", D: "~ x ~@6", E: "~@6 x ~@24 x ~@16", F: "~@31 x ~@16",
  G: "~ x ~@3 x ~@2", H: "~@6 x ~@22 x ~@18", I: "~@5 x ~@23 x ~@18", J: "x ~@5 x ~@22 x ~@18",
  K: "~@3 x ~ x ~@23 x ~@18", L: "~@5 x ~@22 x ~@19", M: "~ x ~@5 x ~@4", N: "~@4 x ~@24 x ~@18",
  O: "~@5 x ~@23 x ~@16 x ~", P: "~@4 x ~@22 x ~@20", Q: "~@3 x ~@24 x ~@19", R: "~ x ~@14", S: "~@30 x ~@16 x",
  T: "~ x ~@7 x ~@6", U: "~@3 x ~@22 x ~@21",
})).gain(0.46)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@32 [~@5 x ~@2] ~@37 [~@9 x ~@25 x ~@12] [~@13 x ~@21 x ~@3 x ~@8] ~@5>").gain(0.26)

// drums · rim
const rim = s("rim").struct("<~@70 [~@20 x ~@26 x] [~@13 x ~@10] [~ x ~@10] ~@4>").gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  ~@31 A B C D C E B D B D F G@2 H I H D F G H@2 J H I H@2 I D H K L ~ F M N@2 K O P ~@7
>`.pickRestart({
  A: "~@43 x ~@4", B: "~@18 x ~@22 x ~@6", C: "~@17 x ~@24 x ~@5", D: "~@17 x ~@23 x ~@6", E: "~@3 x ~@3 x",
  F: "~@41 x ~@6", G: "~@17 x ~@22 x ~@7", H: "~@2 x ~@2 x", I: "~@16 x ~@24 x ~@6", J: "~@5 x", K: "~@5 x ~@7 x ~@2",
  L: "~@16 x ~@22 x ~@8", M: "~@17 x ~@21 x ~@8", N: "~@14 x ~@24 x ~@8", O: "~@15 x ~@22 x ~@9",
  P: "~@15 x ~@27 x ~@4",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@31 A 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 AM AN ~@6
>`.pickRestart({
  A: "~@31 x ~@4 x ~@2 x ~@3 x ~@4", B: "~ x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~@5 x",
  C: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5",
  D: "x ~ x ~@3 x ~@4 x ~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@5 x",
  E: "~@2 x ~@2 x ~@5 x ~@5 x ~@11 x ~@6 x ~@2 x ~@2 x ~@5",
  F: "x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5",
  G: "x ~@2 x ~@2 x ~@5 x ~ x ~@2 x ~@6 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@6",
  H: "x ~@5 x ~@5 x ~ x ~@2 x ~@6 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x",
  I: "~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~@5 x",
  J: "~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~ x ~@2 x ~@6 x ~ x ~@3 x ~@5 x", K: "~ x ~@2 x ~@24 x ~@5 x ~@2 x ~@2 x ~@5 x",
  L: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~ x ~@2 x ~@6 x ~ x ~@2 x ~@6 x",
  M: "~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~",
  N: "x ~@3 x ~@6 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~",
  O: "~ x ~@2 x ~@6 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@4 x ~",
  P: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@5 x ~",
  Q: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@11 x ~@6 x ~@2 x ~@2 x ~@5 x", R: "~@2 x ~@2 x ~@23 x ~@5 x ~@2 x ~@2 x ~@5 x",
  S: "~@2 x ~@2 x ~@5 x ~ x ~@2 x ~@6 x ~@5 x ~@5 x ~ x ~@2 x ~@5 x ~",
  T: "~@4 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x",
  U: "~@4 x ~@5 x ~@2 x ~@2 x ~@5 x ~@5 x ~@6 x ~ x ~@2 x ~@5 x ~",
  V: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@15 x ~@6 x ~ x ~@2 x ~@5 x ~",
  W: "~ x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@5 x ~",
  X: "x ~@3 x ~@5 x ~@2 x ~@2 x ~@6 x ~ x ~@2 x ~@5 x ~@2 x ~@3 x ~@5 x",
  Y: "~ x ~@3 x ~@4 x ~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5 x ~",
  Z: "~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@5 x!2 ~@5 x ~ x ~@2 x ~@5 x ~",
  AA: "~ x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@5 x",
  AB: "~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5 x",
  AC: "~ x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~@5 x ~@5 x ~ x ~@3 x ~@5 x ~", AD: "x!2 ~ x!3 ~ x ~ x ~ x!3 ~ x",
  AE: "x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@5 x ~@5 x ~ x ~@2 x ~@5 x ~@2", AF: "x!2 ~@14",
  AG: "~@30 x ~@5 x ~ x ~@2 x ~@5 x", AH: "~@5 x ~@5 x ~@2 x ~@2 x ~@5 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@4 x ~@2",
  AI: "x ~@2 x ~@5 x ~ x ~@3 x ~@11 x ~@5 x ~@2 x ~@2 x ~@5 x ~ x",
  AJ: "~@3 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@5 x ~ x",
  AK: "~@3 x ~@4 x ~@2 x ~@3 x ~@5 x ~@5 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2",
  AL: "x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@5 x ~ x ~@3 x ~@4 x ~@2 x",
  AM: "~@3 x ~@5 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3 x ~@5 x ~ x ~@7 x ~@3", AN: "~ x ~@22",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@35 A ~@5 B ~@6 C ~@3 B ~@10 D ~@13>".pickRestart({
  A: "~@13 x ~@10", B: "~@11 x ~@12", C: "~@23 x ~@24", D: "~@9 x ~@6",
})).gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@39 A ~@7 B ~@6 C ~@10 D ~ E ~@9>".pickRestart({
  A: "~@13 x ~@10", B: "~@11 x ~@12", C: "~@7 x ~@4", D: "~@5 x ~@6", E: "~@23 x ~@24",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@35 A ~@5 B ~@6 C ~@3 B ~@10 D ~@13>".pickRestart({
  A: "~@25 x ~@22", B: "~@19 x ~@28", C: "~@5 x ~@6", D: "~@13 x ~@10",
})).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@35 A ~@5 B ~@6 C ~@3 B ~@10 D ~@13>".pickRestart({
  A: "~@23 x ~@24", B: "~ x ~", C: "~@17 x ~@30", D: "~@22 x!2 ~@8 x ~@15",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct("<~@35 A ~@5 A@2 ~ B@2 ~ A@2 C D E@2 ~@3 E@2 A E F G H I ~ F J ~ F E ~@7>".pickRestart({
  A: "~@29 x ~@18", B: "~ x ~@10", C: "~@23 x ~@5 x ~@18", D: "~@5 x", E: "~@7 x ~@4", F: "~@9 x ~@6", G: "~ x ~",
  H: "~ x ~@14", I: "~@5 x ~@2", J: "~@13 x ~@10",
})).gain(0.36)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@16 A B C D E F G H I J K L M N O P ~@45>".pickRestart({
  A: "~@8 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@3",
  B: "~@2 x ~ x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4",
  C: "~ x ~@2 x ~@3 x ~@4 x ~@2 x ~@2 x ~@4 x ~@2 x ~@3 x ~@5 x ~ x ~@3 x ~@4",
  D: "~ x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5",
  E: "x ~@2 x ~@2 x ~@5 x ~@2 x ~@3 x ~@4 x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@4",
  F: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@4",
  G: "x ~@2 x ~@2 x ~@5 x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5",
  H: "x ~@2 x ~@2 x ~@6 x ~ x ~@2 x ~@6 x ~ x ~@3 x ~@4 x ~@2 x ~@2 x ~@5", I: "x!3 ~ x!3 ~ x!3 ~ x!3 ~",
  J: "x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@4 x ~@2 x ~@2 x ~@6 x ~ x ~@3 x ~@4",
  K: "~ x ~ x ~@2 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6",
  L: "x ~ x ~@3 x ~@5 x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x",
  M: "~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@5",
  N: "x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@5",
  O: "x ~@2 x ~@3 x ~@5 x ~@2 x ~ x ~@6 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4", P: "x!3 ~ x!3 ~ x ~@7",
})).gain(1.56)

stack(
// … 3 more lines

More by Shania Twain