Strudelify

Anima

Daniele

Tempo67 bpm
0:00/0:00
// Anima — Daniele
// 67 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(67/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.

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

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@13 A B ~@2 C ~@16 D E F@2 G H I J ~@14 K L M@2 N O P Q R S T U V W V W ~
>`.pickRestart({
  A: "~@3 f3!2 g#3!2 b3!2 d4!2 f4 f4@2 e4@2", B: "d4@3 d4@8 ~@5", C: "~@5 f4@11, ~ g3@7, ~@3 c4@13",
  D: "~@3 f4 e4@2 ~ f4 e4@5 f4 e4 f4", E: "e4@4 ~ e3!2 g#3!2 b3!2 e4 e4@3 [c4,d4]",
  F: "[d4@4 ~@2 e4@2 ~ e4@2 d4@2 e4@2 e4@2 d4@6 f#3 a3 d4 d4@3 ~ c4 b3, ~@5 d4@2 ~ d4@2 ~@22]/2",
  G: "~@15 c3, c3@6 ~ c3@7 ~@2, c4@3 d#4@7 ~ d#4@5, ~ g3@4 ~ g3@3 g3@4 ~ g3@2, ~@2 a#3@3 a#3@4 ~ a#3@2 ~ a#3@3",
  H: "~@3 f4@3 ~ c4@2 ~@5 g#3@2, g#2@8 ~ g#2@7, ~ g#3@4 ~ g#3@2 ~@2 g#3@4 ~@2, ~@2 c4@5 ~@4 c4@2 c4@3, ~@3 f4",
  I: "~@10 a#3 ~@4 g2, g2@6 ~ g2@7 ~@2, ~ f3@4 ~ f3@3 f3@4 ~ f3@2, ~@2 a#3@2 ~ a#3@4 ~@4 a#3@3, ~@3 d#4@6 ~@2 d#4@5",
  J: "~@3 c4@4 ~@4 d#4@4 ~, f2@7 ~ g2@7 ~, ~ f3@6 ~@2 f3@6 ~, ~@2 g#3@5 ~@3 a#3@5 ~",
  K: "~@2 e4 [e4,f4] e4 [e4,f4] e4 [e4,f4] e4@4 ~ [d4,e4] f4 g4", L: "f4 e4 d4 e4@3 ~@10",
  M: "[~@2 e4 [e4,f4] e4 [e4,f4] e4 [e4,f4] e4@3 [c4,d4] d4 e4 f4 e4@4 ~@10 b3 e4 [g#4,a4]]/2", // Fmaj7 Csus2 Amaj7
  N: "b4 c5!3 b4 [g#4,a4] a4 b4 c5 d5 d5@2 ~@2 c5 d5", O: "c5 b4@3 ~@5 g#4 a4 b4 a4 g#4@2 ~",
  P: "~ [b4,c5] d5 c5 b4@2 ~ [c5,d5] e5 d5 [b4,c5]@2 ~@2 [a4,b4] a4", // Cmaj7 Csus2 Cmaj7 Asus2
  Q: "g#4@2 [e4,f4] [f4,g4] [g#4,a4] [a4,b4] f4 e4@3 ~@6", R: "e4 [e4,f4] e4 [e4,f4] e4 [e4,f4] e4@4 ~@6",
  S: "d4 [d4,e4] d4 [d4,e4] d4 [b3,c4] c4 d4 b3 c4@2 b3 [d4,f4] [g#4,a4] b4@2", // Dsus2 Cmaj7 Dm Amaj7
  T: "~@2 c5 b4 a4@3 [b4,c5] b4 [e4,f4] e4 [b3,c4] b3 [e3,f3] e3 [b2,c3]", // Cmaj7 Fmaj7 Cmaj7 Fmaj7 Cmaj7
  U: "d3 e3 f3 g#3 [a3,b3] [c4,d4] c4 [b3,c4] d4 [e4,f4] g4 [a4,b4] c5 d5 c5 [a4,b4]", // Asus2 Csus2 Cmaj7 Fmaj7 Asus2
  V: "~@4 [e4,f4] e4 [e4,f4] e4 [e4,f4] e4 [e4,f4] e4 [e4,f4] e4!2 f4", W: "d4 c4!2 b3 b3@4 ~@8",
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@2 A B ~@13 C D E F@4 G H I J@4 K L M ~@5 C D E J@4 K L M J@4 K L M ~@17
>`.pickRestart({
  A: "[f3,c4]", B: "[e3,b3]", C: "[g3,c4,d#4]", D: "[f3,a#3,d#4]", E: "[g#3,c4] [g3,a#3], d#4",
  F: "[[d#3,g3]@2 ~ b3 c#3@2 ~ a3, c4@3 ~ a#3@3 ~, ~ f3@2 ~, ~ d3 ~ [c3,d#3,f4,g#4]]/4", G: "[g#3,b3,c#4,e4]",
  H: "[c#4,f#4] [b3,e4], [f#3,a3]", I: "[f#3,a#3,b3,d#4,f#4]",
  J: "[[g#3,d#4]@2 g3 b3 [f#3,c#4]@2 ~ a3, g4 ~, c4@3 ~ a#3@3 ~, ~ f4@2 ~, ~ d4 ~ [d#3,c4,f4,g#4]]/4", // G#5 F#5 Fm7
  K: "~@3 b4, [e3,b3,c#4,g#4]", L: "[c#4,f#4] [b3,e4], [f#3,a3,e5]", M: "[f#3,b3,f#4,a#4,d#5]",
})).s("gm_string_ensemble_2").gain(0.32)

// chords · piano
const piano = note(`<
  A B C D E@2 F@2 G@2 H I J K L M@2 N@2 I O@2 P Q R S T U@2 V W X@2 Y Z AA AB AC AD AE@2 I AF@2 P Q R S T U@2 V W X@2 AG
  AH AI AJ@2 AK AL AM AN AO AP AQ AR AS AT AS AU AV
>`.pickRestart({
  A: "~@13 f5@2 [d5,e5], a3, ~ e4@15, ~@3 f4@13, ~@9 e5@2 f5 g5@4", // Dsus2
  B: "~@13 f4@2 e4, [g#3,c5], ~ b4@14 ~, ~@3 e4@7 e4@5 ~, ~@7 g#4@9", C: "~@9 e4@6 e4, [a2,d4], c4@3 c4@5, ~@3 f3@13",
  D: "~@3 [e4,d5], a2, e4@9 [g#4,e5]@7, b4@3 g#4@3 [b4,g#5]@10, ~@3 b3@13", // E7 C#m E
  E: "[[e3,f3,a3,c4]@15 ~ e5@12 ~ e5@2 b4, ~@15 g#3@17, ~ e4, ~@8 b4@7 ~, ~@7 g#5]/2", // Fmaj7
  F: "[[c4,a4]@16 ~@11 d6@5, [d3,a#3,f4]@22 a4 d5@2 e5 a5@6, ~ [f#2,f#3,d4], ~@16 [e4,a4]@5 e4@11, ~@19 f#4@13]/2", // F A# D A5
  G: "[d#4@5 ~ [d4,d#4,f4,g4]@9 ~@7 c5@9 ~, [a#4,d6]@19 d#4 f4 g4@10 ~, ~@15 c5@3 c4@13 ~, ~@16 g#2@15 ~, ~@17 d#3@14 ~]/2", // D#maj7 A#
  H: "~@6 d#5@9 ~, g2@4 f4 a#4@10 ~, [a#3,d#4]@2 a#3@13 ~, ~ f3@14 ~, ~@3 d#4@12 ~", // D#5
  I: "a#4@4 g#4@3 ~@5 f4@4, [f2,g#3,c4,d#4,g4] [g2,f3,a#3,d#4]", // Fm7 D#
  J: "~@6 g5@9 ~, [a2,f3,a3,c4,e4]@15 ~, ~ g4@6 ~, ~@4 c5@11 ~", K: "~@2 [e5,g#5] [e5,b5], [a2,e3,g#3,b3,e4]",
  L: "[a#3,a4,c5,f5,c6]", M: "[~@7 d#4, [f#3,d4,a4,d5]@15 e5@5 c5@4 g4@8, ~@3 d6@5, ~@13 a5@5 g4 a#4@13, ~ d5]/2",
  N: "[c4@2 ~@20 d#5@9 ~, d#3@16 [a#3,d#4] f3 a#3 d#4 f4 a#4@10 ~, ~@2 g3@29 ~, ~@3 c4@28 ~, ~@4 f4@12 g2@15 ~]/2", // D#5
  O: "[[d#4,a#4,c5,g5]@8 ~ [c4,g4,a#4,d#5] ~@2 [g4,a#4,d#5]@4 [f4,c5,d5]@7 ~ [f4,b4,d5]@7 ~, g#2 [g2,g3], ~@3 c4@3 ~@2]/2", // Cm7 D# Dm7 Bdim G
  P: "[f#3,c#4,f4,a#4,c#5,f5]@7 ~@2 [f3,f#3,c#4,f4,a#4,c#5,f5] ~@2 [f3,f#3,c#4,f4,a#4,c#5,f5]@4, f#2", // F#maj7
  Q: "a#3@6 ~ a#3 a3@7 ~, [f2,d#4,f4,c5]@15 ~", // F7
  R: "[b4,d#5]@5 ~@2 b5@7 ~@2, [e2,e4,g#4,f#5], ~@5 b4@9 ~@2, ~@3 d#5@4 ~", S: "[g2,g4,c#5,f#5,a5]@15 ~",
  T: "~@15 f#5, [g#2,f#3,d#4,g#4]@7 c#5, b4@3 a#4, ~@11 f#4@5, ~@13 b4@3", // G#7
  U: "[[d#4,a#4,c5,g5]@8 ~ [c4,g4,a#4,d#5,g#5] ~@2 [a#4,d#5,g5]@4 [f4,c5,d5]@7 ~ [f4,b4,d5]@7 ~, g#2 [g2,g3], ~@3 g4@5, ~@3 c4@3 ~@2]/2", // Cm7 D# Dm7 Bdim G
  V: "[f#3,c#4,f4,a#4,c#5,d#5]@7 ~@2 [f3,f#3,c#4,f4,a#4,c#5,d#5] ~@2 [f3,f#3,c#4,f4,a#4,c#5,d#5]@4, f#2", // F#maj7 D#m7
  W: "a#3@6 ~ a#3 a3@7 ~, [f2,d#4,g#4]@15 ~", // Fm7
  X: "[[b4,d#5]@5 ~@2 b5@7 ~@10 c#5@7 ~, [e4,g#4]@22 b4 f#5@8 ~, [e2,f#5]@16 [g2,g4,a5]@15 ~, ~@5 b4@9 ~@2 [c#5,f#5]@5 f#4@10 ~, ~@6 d#5@8 ~@6 c#4@11 ~]/2", // B E Esus2 Gsus2 F#5
  Y: "~@13 f#4@2 e4, [g#2,f#3,d#4,g#4,b4]", Z: "~@6 [a4,c5,e5,g5]@9 ~, [a2,f3,a3,c4,e4]@15 ~",
  AA: "~@7 [b4,e5]@7 ~@2, [a2,e3,g#3,b3,e4], ~@6 g#4@9 ~", AB: "[a#3,f4,a4,c5]",
  AC: "~@7 d6@8 ~, [f#3,d4,a4]@15 ~, ~@3 d5@12 ~, ~@5 e5@10 ~, ~@6 a5@9 ~", AD: "~@3 c5@13, [g3,d#4,a#4,d5]",
  AE: "[~@6 g5 ~@15 [a#4,d#5,g5]@9 ~, g#2@5 c5@2 f5@9 [g2,f3,a#3,d#4]@16, ~ d#3@30 ~, ~@2 c4@29 ~, ~@3 d#4 g#4@27 ~]/2", // D#
  AF: "[[d#4,a#4,c5,g5]@8 ~ [c4,g4,a#4,d#5] ~@2 [a#4,d#5]@4 [f4,c5,d5]@7 ~ [f4,b4,d5]@7 ~, g#2 [g2,g3], ~@3 g4@5, ~@3 c4@3 ~@2]/2", // Cm7 D#5 Dm7 Bdim G
  AG: "f#3@7 ~@8 b4, [g#2,b4]@10 d#4 e4 f#4 g#4 a#4@2, g#4@9 c#4@7, d#4 b3, ~@7 f#3@9", // G#m
  AH: "[a3,c4,e4]@5 ~@3 g4@7 ~, f3, ~@5 a3@11, ~@6 c4@9 ~, ~@7 e4@6 ~@3", AI: "g#4@5 ~ [g#4,b4,e5]@10, [b3,e4]@15 ~",
  AJ: "[~@7 g5@8 ~ [b4,e5]@8 [b4,e5] [g#4,b4]@3 [e4,g#4] [b3,e4,g#4]@3, f3@4 a4 c5 e5@9 ~@9 g#5@8, ~ a3@14 ~@17, ~@2 c4@13 ~@13 b4@4, ~@3 e4@12 g#4@10 e5@7]/2", // E5 G#m E
  AK: "~@8 [f4,a4,c5,e5,g5]@6 ~ [f3,a3,c4], [f3,a3,c4,e4]@7 ~", AL: "[g#3,b3]@2 ~ [g#3,b3,e4] ~@2 [g#3,b3,e4]@10, e3",
  AM: "[a3,f4,a4,c5,e5,g5]@15 [f3,a3,c4]", AN: "[e3,g#3,b3]@15 ~",
  AO: "~@5 d5 ~ e5@4 d5 [a4,e5]@3 [f4,a4,c5,e5], [a3,f4,c5,g5]@15 ~, [a4,e5]@6 a4@5 ~@5", // A5 Fmaj7 F A5
  AP: "b4@5 ~ [b4,e5,g#5]@9 ~, [a3,e4,g#4]@15 ~", // E Amaj7
  AQ: "c5@5 ~@6 e6@4 ~, [a3,f4,a4], ~@6 c5@3 a5 c6@5 ~, ~@7 e5@7 ~@2, ~@8 f5@7 ~", // Dm
  AR: "~@2 b4 ~ e5@12, [g#3,b3,e4], ~ g#4@2 g#4@13", // E
  AS: "~ a4 c5 a4 ~ a4 c5 a4 e5 a4 c5 a4 e5 a4 c5 a4, [f3,a3,c4,e4], ~@2 e5 ~@5", // Fmaj7
  AT: "~ g#4 b4 g#4 e5 g#4 b4 g#4 ~ g#4 ~ g#4 [b4,f5] ~ e5 ~, [e3,g#3,b3,e4]@15 ~, ~@8 e5@2 b4@2 ~ g#4@2 ~", // Bdim E
  AU: "~ g#4 b4 g#4 e5 g#4 b4 g#4 ~ g#4 ~ g#4 f5 ~ e5 ~, [e3,g#3,b3,e4]@15 ~, ~@8 e5@2 b4@2 ~ g#4@2 ~", // E
  AV: "~@3 a5@13, [e3,a3,c4,e4,a4], ~ c5@15, ~ e5@7", // Am
})).s("gm_piano").gain(0.48).pan(0.7)

// chords · pad warm
const pad_warm = note("<~@20 A@4 B C D E@4 F G H ~@8 E@4 F G H E@4 F G H ~@17>".pickRestart({
  A: "[[d#3,g3]@2 ~ b3 c#3@2 ~ a3, c4@3 ~ a#3@3 ~, ~ f3@2 ~, ~ d3 ~ [c3,d#3,f4,g#4]]/4", B: "[g#3,b3,c#4,e4]",
  C: "[c#4,f#4] [b3,e4], [f#3,a3]", D: "[f#3,a#3,b3,d#4,f#4]",
  E: "[[g#3,d#4]@2 g3 b3 [f#3,c#4]@2 ~ a3, g4 ~, c4@3 ~ a#3@3 ~, ~ f4@2 ~, ~ d4 ~ [d#3,c4,f4,g#4]]/4", // G#5 F#5 Fm7
  F: "~@3 b4, [e3,b3,c#4,g#4]", G: "[c#4,f#4] [b3,e4], [f#3,a3,e5]", H: "[f#3,b3,f#4,a#4,d#5]",
})).s("gm_pad_warm").gain(0.32)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@20 A ~@2 B ~ B ~@2 B ~ B ~ B ~@9 A ~@2 B ~ B ~@4 B ~ B ~@8 C ~@9>".pickRestart({
  A: "~@3 x ~@4", B: "~@7 x ~@8", C: "~@9 x!3 ~@4",
})).gain(0.24)

// drums · rim
const rim = s("rim").struct("<~@20 [~ x ~ x]!21 [~ x ~@2] ~@31>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@42 A@3 B A@4 C A@4 D A@7 E A@8 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@4 x ~@6 x!2 ~@3", D: "~@4 x ~@4 x ~@6", E: "~@4 x ~@4 x!7",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@41 [~@6 x!2] ~@6 [~@15 x] ~@6 [~@11 x ~@2 x!2] ~@17>").gain(0.64)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 A ~@5 B C A ~@4 D@2 A E F@13 G H I H I H I J K F@6 K F@6 ~@17>".pickRestart({
  A: "~@7 x ~@8", B: "x", C: "x ~@9 x!2 ~@4", D: "~ x ~@6", E: "x!4 ~ x ~ x ~ x ~ x ~ x ~ x",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", G: "~@2 x!2 ~ x ~ x ~ x ~@5 x", H: "~ x ~ x ~ x ~ x ~ x ~@5 x",
  I: "~ x!3 ~ x ~ x ~ x ~@5 x", J: "~ x ~ x ~ x ~@10", K: "~@2 x!2 ~ x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@21 B ~@6 C ~@22 D ~>".pickRestart({
  A: "~@3 x", B: "~@6 x ~@2 x ~@6", C: "~@7 x", D: "~@13 x ~ x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A B A B A B A@3 B A B A C@2 A ~@14 D@7 ~@15 E@7 F E@8 G>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "x!2 ~ x", D: "~@11 x!2 ~@3", E: "~ x ~ x ~ x ~ x",
  F: "~@2 x ~@3 x ~@5 x!3 ~", G: "x",
})).gain(0.4)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@34 [~@5 x ~@2]!7 ~@22 [~@9 x!3 ~@4] ~@9>").gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<~@55 [~@3 x] ~@17>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@34 A ~@7 A ~@6 A ~@6 A ~@6 B ~@9>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<A B C D ~@2 E ~ E ~@3 E ~ E ~ E ~@56>".pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~@2 x ~@3 x!4 ~@5", C: "x ~@7 x ~@6 x", D: "x ~@6 x!3 ~@2 x ~@3", E: "x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 [~ x ~ x]!36 ~@17>").gain(0.48)

stack(
  bass, acoustic_guitar_nylon, string_ensemble_2, piano, pad_warm, kick, kick_soft, rim, snare, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, open_hat_soft, high_tom, crash, ride, tambourine
)

More by Daniele