Strudelify

Halo Orchestral Medley (WIP)

Martin O'Donnell

KeyG majorTempo189 bpm
0:00/0:00
// Halo Orchestral Medley (WIP) — Martin O'Donnell
// 189 bpm, 12/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/4 at bar 1, 4/4 at bar 69, 12/8 at bar 90) are rendered on a constant 12/8 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/3997781; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 165 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(189/6)

// 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 · viola
const viola = note(`<
  ~@45 A@4 B@6 C@7 D@6 ~@27 E F G H E F G H E F G I J K J L E F G H M N M N O P ~@4 J K J Q ~@8 R S R S ~@7 T U V W@3
  ~@11
>`.pickRestart({
  A: "[~@13 d#3@57 f3@26]/4", B: "[~@2 c#3@28 ~ d#3@28 g#3@28 c#3@28 ~ d#3@28]/6", C: "[a#3@57 g3@28 g#3@28 ~ d4@54]/7",
  D: "[~@2 g3@28 ~ g#3@28 d4@85]/6", E: "~ e3@3", F: "~ f#3@3", G: "~ g3@3", H: "~@3 a3@3 e3 a3 e3 a3 g3 f#3",
  I: "e3!3 a3@3 a3 e3 a3!2 g3 f#3", J: "e3!3 e3@2 e3!2 f#3 e3 f#3@2 f#3", K: "e3 g3 e3 g3@2 g3 e3 g3 f#3 e3 d3!2",
  L: "e3 g3 e3 g3@2 g3 d4@3 e4@3", M: "~ e3 ~ f#3", N: "~ g3 ~ a3", O: "~ b3 ~ c#4", P: "~ d4 ~ e4",
  Q: "e3 g3 e3 g3@2 g3!2 f#3 a3 g3 f#3 e3", R: "e4!2 b3 e4@2 e4!2 g4 e4 g4@2 e4", S: "f#4!3 f#4@2 f#4 a4!4 g4 f#4",
  T: "~ g4@3", U: "~@3 a4@6 g4 f#4 e4", V: "c4@3 c4", W: "[a3@2 c4 e3@9]/3",
})).s("gm_viola").gain(0.4)

// other · viola · soft notes
const viola_soft = note("<A@3 B@7 C@6 D E@7 F@6 ~@8 G@8 ~@24 H@7 ~@44 I@2 J@2 ~@40>".pickRestart({
  A: "[~@4 e3@7 g3@7]/3", B: "[~ d3@56 e3@28 ~ g3@19 d4@9 d3@54]/7", C: "[~@3 e3@28 c3@28 ~ d3@28 g3@28 c3@28]/6",
  D: "~ d3@23", E: "[~@5 a3@57 f#3@28 g3@28 c#4@50]/7", F: "[~@7 f#3@28 g3@28 ~ c#4@57 ~@23]/6",
  G: "[~@11 g#3@28 ~ g#3@28 a#3@57 f3@28 g#3@19 d#4@9 ~@11]/8", H: "[~@2 g3@151 ~@15]/7", I: "[c4 ~@2 c4@21]/2",
  J: "[d4 ~@2 d4@21]/2",
})).s("gm_viola").gain(0.2)

// other · cello · "Violoncello"
const cello = note(`<
  ~@95 A B C D A B C D A B C D E F E G A B C H I J I J K L ~@4 E F E G M@2 N O P Q R@2 S T S T ~@7 U V W X@4 Y Z AA AB
  AC@6
>`.pickRestart({
  A: "e2!3 e2@9", B: "e2!3 f#2@9", C: "e2!3 g2@9", D: "e2!3 a2@3 a2 e2 a2!2 g2 f#2",
  E: "e2!3 e2@2 e2!2 f#2 e2 f#2@2 f#2", F: "e2 g2 e2 g2@2 g2 e3 g3 f#3 e3 d3 a2",
  G: "e2 g2 e2 g2@2 g2!2 f#2 a2 g2 f#2 e2", H: "e2!3 a2@3 e2 a2 e2 a2 g2 f#2", I: "e2!3 e2@3 e2!3 f#2@3",
  J: "e2!3 g2@3 e2!3 a2@3", K: "e2!3 b2@3 e2!3 c#3@3", L: "e2!3 d3@3 e2!3 e3@3",
  M: "[~@6 g2 b2 c#3 d3@4 c#3 d3 e3@4 d3 c#3 b2 c#3 d3]/2", N: "c#3@6 g2 a2 b2 c#3 b2 a2", O: "a2@6 a2 b2 c#3 d3@3",
  P: "d3 c#3 d3 e3@4 f#3 g3 a3 g3 f#3", Q: "e3@4 d3 e3!2 d3 c#3 b2 a2 g2", R: "[f#2 d2 e2@6]/2",
  S: "e3!2 b2 e3@2 e3!2 g3 e3 g3@2 e3", T: "f#3!3 f#3@2 f#3 a3!4 g3 f#3", U: "e2!3 c#3@9", V: "e2!3 c3@9", W: "c3@3 c3",
  X: "[a2@2 c3 e2@13]/4", Y: "d3 b2", Z: "c#3 a2", AA: "b2 g2", AB: "f#2 d2", AC: "[e2@125 ~@19]/6",
})).s("gm_cello").gain(0.4)

// other · cello · "Violoncello" · soft notes
const cello_soft = note(`<
  A@3 B@7 C@6 D E@7 F@6 ~@8 G@5 H@6 I@6 J@7 K@6 L@8 ~@3 M@7 N@3 O@6 ~@26 P@2 Q@2 ~@40
>`.pickRestart({
  A: "[~@4 e2@7 c2@7]/3", B: "[~ d2@56 e2@28 ~ c2@28 d2@54]/7", C: "[~@3 e2@28 c2@28 ~ d2@28 g2@28 c2@28]/6",
  D: "~ d2@23", E: "[~@5 a2@57 e2@28 e2@28 a2@50]/7", F: "[~@7 e2@28 e2@28 ~ a2@57 ~@23]/6",
  G: "[~@11 f2@28 ~ c#2@28 d#2@52]/5", H: "[~@5 f2@28 c#2@28 d#2@57 f2@26]/6",
  I: "[~@2 c#2@28 ~ d#2@28 g#2@28 c#2@28 ~ d#2@28]/6", J: "[a#2@57 f2@28 f2@28 ~ a#2@54]/7",
  K: "[~@2 f2@28 ~ f2@28 a#2@85]/6", L: "e2/8", M: "[~@5 b2@163]/7", N: "[~@5 e2@67]/3", O: "e2", P: "[c2 ~@2 c2@21]/2",
  Q: "[d2 ~@2 d2@21]/2",
})).s("gm_cello").gain(0.2)

// other · flute
const flute = note("<~@99 A@2 B C D E F G ~@4 H I J K L M N O P Q ~@20 R S T ~@4 U V W X@2 ~@12>".pickRestart({
  A: "[e4@17 ~ f#4@3 g4@3]/2", B: "a4@23 ~", C: "b4@23 ~", D: "c#5@23 ~", E: "d5@11 ~ e5@6 f#5@6", F: "g5@11 ~ a5@11 ~",
  G: "b5@23 ~", H: "b4@3 e4 b4 c#5 d5@3 e4 b4 d5", I: "c#5 b4 a4 e4@2 a4 e4 a4 c#5 b4 a4 e4",
  J: "b4@6 ~@2 c#5@2 d5@2 e5@11 ~", K: "e5 d5 c#5 d5 c#5 b4 e5 d5 c#5 b4 d5 e5", L: "f#5 d5 b4 a5@3 ~ a5@2 a5@2 a5",
  M: "f#5 d5 b4 a5@3 ~ d5 e5 f#5 g5 a5", N: "e5@3 ~ d5 e5 f#5@3 ~ e5 f#5", O: "g5 f#5 e5 f#5 e5 d5 c#5@2 d5@2 e5@2",
  P: "e5@3 ~ e5 f#5 g5@3 ~ e5 g5", Q: "f#5 e5 d5 b4@2 a4 d5 b4 d5 e5 d5 c#5", R: "b4@11 ~ c#5@6 d5@6",
  S: "e5 f#5 g5 a5", T: "b5@2 f#5@2 d5@2 b4@2 f#4@2 d4@2 b3@11 ~", U: "~@6 c#5@17 ~", V: "~@6 c5@17 ~",
  W: "~@3 b5!3 b5@3 b5!3", X: "[b5@6 b5@2 b5@2 b5@2 b5@2 b5@2 b5@2 e6@11 ~@19]/2",
})).s("gm_flute").gain(0.45).pan(0.6)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@73 A@2 B C@3 D@3 E F@6 G ~@9 H@2 G I J@4 ~@4 K L M N O P Q R S T ~@8 U@3 V@3 W@2 ~@7 X Y X Y Z AA AB AC@2 ~@12
>`.pickRestart({
  A: "[~@7 e4@17]/2", B: "f#4@8 g4@8 ~ f#4@7", C: "[~ a4@8 ~ g4@8 f#4@25 e4@25 ~@4]/3",
  D: "[~@5 b4@8 c#5@8 ~ d5@25 c#5@8 a4@8 ~ c#5@8]/3", E: "b4",
  F: "[~@10 b3@8 d4@8 e4@8 ~ g4@8 a4@8 ~ f#4@25 e4@8 g4@8 ~ f#4@8 e4@8 f#4@8 ~ d4@25]/6", G: "e4", H: "e4/2",
  I: "e4@2 f#4 g4", J: "a4", K: "g4@6 b4@3 c#4 g4 b4", L: "a4 g4 f#4 e4@9", M: "b4 e5", N: "c#5 b4 c#5 g4",
  O: "d5 f#5@3", P: "d5@3 f#5@3 ~ d5 e5 f#5 g5 a5", Q: "c#5@3 ~ b4 c#5 d5@3 ~ c#5 d5", R: "e5@3 d5@3 a4@2 b4@2 c#5@2",
  S: "c#5 e5", T: "d5 c#5 b4 g4@2 f#4 b4 g4 b4 c#5 b4 a4", U: "[~ g4@10 ~]/3", V: "[~ a4@10 b4]/3",
  W: "[f#4 d4 e4@6]/2", X: "b4@2 e5 b4 f#5 b4 g5 f#5 e5 d5@2 b4", Y: "e5 b4 f#5 b4 g5 b4 a5@2 g5 f#5 e5 d5",
  Z: "~ g4@3", AA: "~ a4@3", AB: "~@3 b4!3 b4@3 b4!3", AC: "[b4@3 b4!6 e5@6 ~@9]/2",
})).s("gm_clarinet").gain(0.3)

// bass · tuba · "Euphonium"
const bass = note(`<
  ~@73 A@2 B C@3 D@3 E F@6 G ~@5 H I J K H I J K H I J K ~@4 L M N O P Q P Q R S ~@11 T@3 U@2 V W V W ~@7 N X Y Z@3 ~@11
>`.pickRestart({
  A: "[~@7 e2@17]/2", B: "f#2@8 g2@8 ~ f#2@7", C: "[~ a2@8 ~ g2@8 f#2@25 e2@25 ~@4]/3",
  D: "[~@5 b2@8 c#3@8 ~ d3@25 c#3@8 a2@8 ~ c#3@8]/3", E: "b2",
  F: "[~@10 b2@8 d3@8 e3@8 ~ g3@8 a3@8 ~ f#3@25 e3@8 g3@8 ~ f#3@8 e3@8 f#3@8 ~ d3@25]/6", G: "e3", H: "e3!3 e3@9",
  I: "e3!3 f#3@9", J: "e3!3 g3@9", K: "e3!3 a3@9", L: "e2!3 e2@9", M: "e2!3 f#2@9", N: "e2!3 g2@9",
  O: "e2!3 a2@3 e2 a2 e2 a2 g2 f#2", P: "e2!3 e2@3 e2!3 f#2@3", Q: "e2!3 g2@3 e2!3 a2@3", R: "e2!3 b2@3 e2!3 c#3@3",
  S: "e2!3 d3@3 e2!3 e3@3", T: "[~ a2@10 b3]/3", U: "[f#3 d3 e3@6]/2", V: "e2!2 b2 e2@2 e2!2 c#3 e2 g2@2 e2",
  W: "e2 c#3!2 f#2@2 c#3 c3!3 a2 g2 e2", X: "e2!3 a2@6 g2 f#2 e2", Y: "c3@3 c3", Z: "[a2@2 c3 e2@9]/3",
})).s("gm_tuba").gain(0.33)

// bass · tuba · "Euphonium" · soft notes
const bass_soft = note("<~@19 A@5 B@6 ~@91 C@2 D@2 ~@4 E@3 ~@33>".pickRestart({
  A: "[~@7 e2@14 e2@14 a2@25]/5", B: "[~@7 e2@28 e2@28 ~ a2@57 ~@23]/6", C: "[c3 ~@2 c3@21]/2", D: "[d3 ~@2 d3@21]/2",
  E: "[~ g2@10 ~]/3",
})).s("gm_tuba").gain(0.16)

// chords · piano
const piano = note(`<
  ~@29 A@3 B@6 C@4 D E F G H I@8 J@8 K@5 ~@24 L@2 M N@3 O P@2 Q R S T U V W X W Y Z AA AB AC AD AE AD AE AF AG AH@2 AI@2
  W X W Y AJ@3 AK@3 AL AM AN AO AN AO AP AQ AR AS AT AS AT AU AV AW AX@2 AY@2 M AZ@2 BA ~ BB BC@4
>`.pickRestart({
  A: "[~@67 d#3@5, f2@17 g#2@14 a#2@5, ~@5 c3@33 f3@34, ~@10 g#3@47 d#2@15, ~@29 c#2@43]/3",
  B: "[~@127 [d#1,d#2]@17, ~@14 d#2@18 g5@10 f2@28 [c#2,g5]@29 d#5@45, ~@18 a#2@19 a#5@24 f3@4 g#5@29 f5@48 ~@2, ~@23 d#3@19 g#5@5 c3@28 g#2@5 [f3,g#4]@19 d#2@4 a#2@41, ~@28 f5@23 [g#3,c5]@38 g#2@19 d#3@36]/6", // D# C#dim Fm G#
  C: "[~@21 g#3@19 ~@37 d#3@19, ~@11 f2@38 f3@47, ~@11 g#3@9 ~@20 [c#2,g#3,d#4]@33 a#2@23, ~@4 c3@12 ~ [d#2,a#3]@7, ~@11 g#2@12 ~]/4", // C#sus2 D#5
  D: "~@19 g5@5, d#2, ~@5 a#2@19, ~@5 d#3@7, ~@7 f5@5", E: "~@7 [g#3,c5]@5, a#5, ~@5 [f2,g#5]@19, ~@3 c3@5",
  F: "~@3 [f3,g#4], f3@3 ~, ~ g#5@5, ~@3 [c#2,g5]@5, ~@7 g#2@5", // Fm C#dim
  G: "~@18 a#2@5 d#3, ~ g#2@5, ~@3 f5@5, ~@13 [d#2,d#5]@11", H: "~@11 [a#2,g#3], ~@13 f3@11, ~@3 [d#2,g3]",
  I: "[~@187 d#4@5, ~@3 [d#3,a#3]@38 g4@19 f3@5 d#3@4 c#3@29 g3@4 a#3@24 d#4@14 g#2@19 g3@5 [d#2,a#3,d#4]@5 a#2@4 g3@5 g#3@5 a#3@9, ~@8 [d#4,d#5]@28 g3@14 d#4@5 g#2@5 c#4@28 d#3@5 f3@24 d#3@4 g#3@5 [c4,g4]@19 c#3@47, ~@13 f4@9 [f2,f4]@19 [f3,c4]@5 c3@23 [c4,d#4]@10 [d#2,a#4]@28 g#4@19 g3@5 d#3@4 [c#2,c#4,f4]@19 f3@38, ~@17 g4@5 g#3@5 c3@5 g#3@18 [c#2,g#4,d#5]@24 g#2@5 a#3@4 a#2@24 [g#2,c4,d#4]@5 c3@23 g#3@15 d#3@42]/8", // D#5 D# C5 F F5 Cm D#5 C# …
  J: "[~@66 c4@19 ~@95 [g3,c4]@12, [a#3,f4]@38 a#2@47 [g#3,c4]@9 ~ [g#3,c4]@47 a#1@48 ~@2, a#1@10 a#2@23 f2@24 f2@28 f2@29 a#1@9 [a#2,d3]@28 [a#2,d3]@41, ~@5 c4@49 ~@3 [g3,c4]@5 c3@28 c3@28 f2@28 ~ f2@23 f2@22, ~@5 f2@24 a#1@37 g3@48 [a#3,f4]@54 ~@2 [g3,c4]@5 c3@17]/8", // C5 A#5 G# A# C5 A#5 C5
  K: "[~@21 [a#0,a#1]@18 ~, ~@7 f2@28 a#1@9 [a#2,d3]@48 ~@28, ~@7 [g#3,c4]@9 [g#3,c4]@48 ~@56, ~@11 c3@29 f2@48 ~@32, ~@35 [a#3,f4]@81 ~@4]/5", // A# G# A#5
  L: "[[e4,b4,e5,b5,e6]@9 ~ [a4,e5,d6,e6]@2 [a4,e5,c#6,e6]@17 ~ [e4,d5,e5,a5,e6]@6 [e4,c#5,e5,b5,e6]@11 ~]/2", // E5 Asus4 A Dsus2 C#m7
  M: "[e1,e2]@23 ~", // E
  N: "[[e3,b3,e4,b4]@9 ~ [g3,e4,d5]@2 ~@24 [e3,d4,e4,a4]@17 ~ [e3,d4,e4,c#5]@6 [e3,c#4,e4,b4]@11 ~, ~@12 [a3,e4,c#5]@23 ~@37, ~@24 [e1,e2]@23 ~@25]/3", // E5 Em7 Dsus2 C#m C#m7 A E
  O: "[e5,b5,e6]@23 ~", P: "[[e5,e6]@34 ~@2 [d5,d6]@11 ~]/2", Q: "[c#5,c#6]@11 ~ [a4,a5]@11 ~",
  R: "e4@11 ~ f#4@6 g4@6, [b4,b5]@23 ~", S: "[b4,b5]@11 ~ [a4,a5]@11 ~", T: "[f#4,f#5]@11 ~ d4@11 ~",
  U: "~ e4 b4 e5@3 ~ e4 b4 e5@3", V: "e5 b4 e4 b4 e4 b4 e5 b4 e4 b3 e3 b3",
  W: "[e2,e3] [b2,e3] [e2,e3] [b2,e3]@2 [b2,e3] [d2,d3] [a2,d3] [d2,d3] [a2,d3]@2 [a2,d3]", // E E5 E E5 D D5 D D5
  X: "[e2,e3] [b2,e3] [e2,e3] [b2,e3]@2 [b2,e3] [d2,d3] g3 [d2,f#3] e3 d3 a2", // E E5 E E5 D
  Y: "[e2,e3] [b2,e3] [e2,e3] [b2,e3]@2 [b2,e3] [d2,g3] f#3 [d2,a3] g3 f#3 e3", Z: "e2@2 e2@2 e2@2 e2@17 ~",
  AA: "e2@2 e2@2 e2@2 f#2@17 ~", AB: "e2@2 e2@2 e2@2 g2@17 ~", AC: "e2!3 a2@3 e2 a2 e2 a2 g2 f#2",
  AD: "e2!3 e2@3 e2!3 f#2@3", AE: "e2!3 g2@3 e2!3 a2@3", AF: "e2!3 b2@3 e2!3 c#3@3", AG: "e2!3 d3@3 e2!3 e3@3",
  AH: "[[c2,c3] ~@2 [c2,g2,c3]@20 ~]/2", AI: "[[d2,d3] ~@2 [d2,a2,d3]@20 ~]/2", AJ: "[[g2,g3]@2 ~@4 [g2,g3]@63 ~@3]/3",
  AK: "[[a2,a3]@19 ~@3 [b1,b2,b4]@2]/3", AL: "[f#1,f#2,f#3,c#4,g4]@6 [d1,d2,d3,a3,d4]@6 [e1,e2,e3,b3,e4]@11 ~",
  AM: "~ e3@2 ~ e4@2 ~ e5@2 ~ e6@2, e2@6 ~ b3@5 e4@6 ~ b5@5, ~ b2@5 e3@6 ~ b4@5 e5@6",
  AN: "[e2,b2,e3] e3 b2 [e2,b2,e3]@2 e3 [e2,e3] [c#3,g3] [e2,e3] [g2,c#3,g3]@2 [e2,e3]", // E5 E C#dim E Gdim E
  AO: "[e2,c#3,e3,f#3] [c#3,f#3]!2 [f#2,c#3,f#3]@2 [c#3,f#3] [c3,e3,a3] [c3,a3] [c3,e3,a3] [a2,c3,a3] g3 [e2,e3,f#3]", // F#7 F#5 Am F Am Esus2
  AP: "[d2,d3]@2 [d2,d3]@2 [d2,d3]@2 [d2,d3]@17 ~", AQ: "[e2,e3]@2 [e2,e3]@2 [e2,e3]@2 [e2,e3]@17 ~",
  AR: "[b2,b3]@2 [b2,b3]@2 [b2,b3]@2 [b2,b3]@17 ~", // B
  AS: "[e4,b4]@2 [b4,e5] [e4,b4] [c#5,f#5] [e4,b4] [d5,g5] [c#5,f#5] [b4,e5] [a4,d5]@2 [e4,b4]", // E5 F#5 E5 G5 F#5 E5 D5 E5
  AT: "[b4,e5] [e4,b4] [c#5,f#5] [e4,b4] [d5,g5] [e4,b4] [e5,a5]@2 [d5,g5] [c#5,f#5] [b4,e5] [a4,d5]", // E5 F#5 E5 G5 E5 A5 G5 F#5 …
  AU: "[e2,e3]@6 [c#3,c#4,g4,c#5,g5]@11 ~ [c#3,c#4,g4,c#5,g5]@6", // E C#dim
  AV: "[e2,e3]@6 [a2,a3,a4,c5,a5]@11 ~ [g4,g5]@2 [f#4,f#5]@2 [e4,e5]@2, ~@3 [a2,a3]", // E Am G F# E A
  AW: "~@3 [b4,b5]!3 [b4,b5]@3 [b4,b5]!3, [c3,c4]@17 ~ [c3,c4]@6", // B C
  AX: "[[b4,b5]@3 [b4,b5]!6 [e2,e3]@14 ~, [a2,a3]@11 ~ [c3,c4]@6 [e5,e6]@6 ~@24]/2", // B E A C E
  AY: "[[e3,b3,e4,b4,e5]@9 ~ [a3,e4,d5,e5]@2 [a3,e4,c#5,e5]@17 ~ [e3,d4,e4,a4,e5]@6 [e3,c#4,e4,b4,e5]@11 ~]/2", // E5 Asus4 A Dsus2 C#m7
  AZ: "[[e4,b4,e5,b5,e6]@9 ~ [a4,e5,d6,e6]@2 [a4,e5,c#6,e6]@28 ~@2 [e4,d5,e5,a5,e6]@6]/2", // E5 Asus4 A Dsus2
  BA: "[e4,c#5,e5,b5,e6]@11 ~@13", BB: "e3@8 b3@8 ~ e4@7",
  BC: "[~ f#4@8 ~ b4@8 d#5@8 e5@8 ~ f#5@8 b5@8 ~ d#6@8 e6@8 [e6,f#6,b6,d#7]@8 ~@20]/4", // B
})).s("gm_piano").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@89 A B A B A B A@3 B A@3 B A@3 B A B A B A B A B A B A B A B ~@4 A B A B ~@8 A@7 C D C D E@2 D F ~@13
>`.pickRestart({
  A: "x!4 ~ x!5 ~ x", B: "x!4 ~ x!7", C: "x ~ x!8 ~ x", D: "x!7 ~ x!4", E: "x!4 ~@8", F: "x ~@2 x!7 ~@2",
})).gain(0.3)

stack(viola, viola_soft, cello, cello_soft, flute, clarinet, bass, bass_soft, piano, kick)