Strudelify

Tico Tico

Faith

KeyB♭ majorTempo120 bpm
0:00/0:00
// Tico Tico — Faith
// 120 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · clavinet
const clavinet = note(`<
  ~ A B C D A E C E F G H G F G I J A E C D A E C E F G F G F G K L M N O P Q R S L M N O P Q R S T A B C D A E C E F G
  H G F G I J A E C D A E C E F G F G F G K L M N O P Q R S L M N O P Q R S T ~
>`.pickRestart({
  A: "~@2 [d4,g4] ~ bb3 [d4,g4] ~@2 [c4,gb4] ~ a3 [c4,gb4] ~ [c4,gb4] a3 ~", // G5 Cdim
  B: "~@2 [c4,gb4] ~ a3 [c4,gb4] ~@2 [d4,g4] ~ bb3 [d4,g4] ~ [d4,g4] bb3!2", // Cdim G5
  C: "~@2 [eb4,g4] ~ c4 [eb4,g4] ~@2 [d4,g4] ~ bb3 [d4,g4] ~ [d4,g4] bb3 ~", // Eb G5
  D: "~@2 [db4,a4] ~ g4 [db4,a4] ~@2 [c4,gb4] ~ a3 [c4,gb4] ~ [c4,gb4] a3 ~", // Gbm Cdim
  E: "~@2 [c4,gb4] ~ a3 [c4,gb4] ~@2 [d4,g4] ~ bb3 [d4,g4] ~ [d4,g4] bb3 ~", // Cdim G5
  F: "~@2 [f4,bb4] ~ d4 [f4,bb4] ~@2 [eb4,a4] ~ c4 [eb4,a4] ~ [eb4,a4] c4 ~", // Bb5 Ebdim
  G: "~@2 [eb4,a4] ~ c4 [eb4,a4] ~@2 [f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~", // Ebdim Bb5
  H: "~@2 [f4,bb4] ~ d4 [f4,bb4] ~@2 [eb4,a4] ~ c4 [eb4,a4] ~ [eb4,a4] c4!2", // Bb5 Ebdim
  I: "~@2 [g4,bb4] ~@2 [e4,g4,bb4] ~@2 [f4,bb4] ~ d4 f4 ~@2 [g4,bb4] ~", // Gm Edim Bb5 Gm
  J: "~@2 [eb4,g4] ~@2 [f4,a4] ~@2 [f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~", // Eb F Bb5
  K: "~@2 [g4,bb4] ~@2 [e4,g4,bb4] ~@2 [f4,bb4] ~@2 [g4,bb4] ~@2 [g4,bb4] ~", // Gm Edim Bb5 Gm
  L: "~@2 [eb4,g4] ~@2 [c4,f4,a4] ~@2 [f4,bb4] ~ d4 [f4,bb4] bb4 ~ [f4,bb4] ~", // Eb F Bb5
  M: "[f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~ [f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4!2", // Bb5
  N: "[f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~ [eb4,bb4] ~ c4 [eb4,a4] ~ [eb4,a4] c4 ~", // Bb5 Eb5 Ebdim
  O: "[eb4,a4] ~ c4 [eb4,a4] ~ [eb4,a4] c4 ~ [eb4,a4] ~ c4 [eb4,a4] ~ [eb4,a4] c4 ~", // Ebdim
  P: "[eb4,a4] ~ c4 [eb4,a4] ~ [eb4,a4] c4 ~ [f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~", // Ebdim Bb5
  Q: "[f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~ [f4,bb4] ~ d4 [f4,bb4] ~ [f4,bb4] d4 ~", // Bb5
  R: "[g4,b4] ~ d4 [g4,b4] ~ [g4,b4] d4 ~ [g4,c5] ~ eb4 [g4,c5] ~ [g4,c5] eb4 ~", // G C5
  S: "[g4,bb4] ~ eb4 [e4,g4,bb4] ~ [g4,bb4] e4 ~ [f4,bb4] ~ d4 [g4,bb4] ~ [g4,bb4] d4 ~", // Gm Edim Gm Bb5 Gm
  T: "[eb4,g4] ~ c4 [f4,a4] ~ [f4,a4] c4 ~ [d4,f4,bb4] ~ [d4,f4,bb4]!3 ~@3", // Eb F Bb
})).s("gm_clavinet").gain(0.15).pan(0.9)

// chords · marimba
const marimba = note(`<
  ~ A B C D A E C E F G H G F G I J A E C D A E C E F G F G F G K L M N O P Q R S L M N O P Q R S T@8 E U@6 V W@8 E X@8
  Y Z@3 AA@2 AB@2 Y Z@3 AA@2 AC@3
>`.pickRestart({
  A: "~@2 [d5,g5] ~ bb4 [d5,g5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~", // G5 Cdim
  B: "~@2 [c5,gb5] ~ a4 [c5,gb5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4!2", // Cdim G5
  C: "~@2 [eb5,g5] ~ c5 [eb5,g5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~", // Eb G5
  D: "~@2 [db5,a5] ~ g5 [db5,a5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~", // Gbm Cdim
  E: "~@2 [c5,gb5] ~ a4 [c5,gb5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~", // Cdim G5
  F: "~@2 [f5,bb5] ~ d5 [f5,bb5] ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~", // Bb5 Ebdim
  G: "~@2 [eb5,a5] ~ c5 [eb5,a5] ~@2 [f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~", // Ebdim Bb5
  H: "~@2 [f5,bb5] ~ d5 [f5,bb5] ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5!2", // Bb5 Ebdim
  I: "~@2 [g5,bb5] ~@2 [e5,g5,bb5] ~@2 [f5,bb5] ~ d5 f5 ~@2 [g5,bb5] ~", // Gm Edim Bb5 Gm
  J: "~@2 [eb5,g5] ~@2 [f5,a5] ~@2 [f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~", // Eb F Bb5
  K: "~@2 [g5,bb5] ~@2 [e5,g5,bb5] ~@2 [f5,bb5] ~@2 [g5,bb5] ~@2 [g5,bb5] ~", // Gm Edim Bb5 Gm
  L: "~@2 [eb5,g5] ~@2 [c5,f5,a5] ~@2 [f5,bb5] ~ d5 [f5,bb5] bb5 ~ [f5,bb5] ~", // Eb F Bb5
  M: "[f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~ [f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5!2", // Bb5
  N: "[f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~ [eb5,bb5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~", // Bb5 Eb5 Ebdim
  O: "[eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~ [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~", // Ebdim
  P: "[eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~ [f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~", // Ebdim Bb5
  Q: "[f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~ [f5,bb5] ~ d5 [f5,bb5] ~ [f5,bb5] d5 ~", // Bb5
  R: "[g5,b5] ~ d5 [g5,b5] ~ [g5,b5] d5 ~ [g5,c6] ~ eb5 [g5,c6] ~ [g5,c6] eb5 ~", // G C5
  S: "[g5,bb5] ~ eb5 [e5,g5,bb5] ~ [g5,bb5] e5 ~ [f5,bb5] ~ d5 [g5,bb5] ~ [g5,bb5] d5 ~", // Gm Edim Gm Bb5 Gm
  T: "[[eb5,g5] ~ c5 [f5,a5] ~ [f5,a5] c5 ~ [d5,f5,bb5] ~ [d5,f5,bb5]!2 [d5,f5] ~@5 [d5,g5] ~ bb4 [d5,g5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~@3 [c5,gb5] ~ a4 [c5,gb5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4!2 ~@2 [eb5,g5] ~ c5 [eb5,g5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~@3 [db5,a5] ~ g5 [db5,a5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~@3 [d5,g5] ~ bb4 [d5,g5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~@3 [c5,gb5] ~ a4 [c5,gb5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~@3 [eb5,g5] ~ c5 [eb5,g5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~, ~@3 bb5@29]/8", // Eb F Bb Dm G5 Cdim G5 Eb …
  U: "[~@2 bb5@2 d5 f5 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~@3 [eb5,a5] ~ c5 [eb5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~@3 bb5@2 d5 f5 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5!2 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~@3 bb5@2 d5 f5 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~@3 [eb5,a5] ~ c5 [eb5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~, ~@2 f5 ~@2 bb5@19 f5 ~@2 f5 ~ bb5@5 f5 ~@2 bb5@19 f5 ~@2 f5 ~ bb5@5 f5 ~@2 bb5@19 f5 ~@2 f5 ~ bb5@3]/6", // Ebdim
  V: "~@2 bb5@3 [e5,g5] ~@2 f5 ~ d5 f5 ~@2 bb5@2, ~@2 g5 ~@2 bb5@3 bb5@6 g5 ~", // Em
  W: "[~@2 [eb5,g5] ~@2 [f5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~@3 [d5,g5] ~ bb4 [d5,g5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~@3 [c5,gb5] ~ a4 [c5,gb5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~@3 [eb5,g5] ~ c5 [eb5,g5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~@3 [db5,a5] ~ g5 [db5,a5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~@3 [d5,g5] ~ bb4 [d5,g5] ~@2 [c5,gb5] ~ a4 [c5,gb5] ~ [c5,gb5] a4 ~@3 [c5,gb5] ~ a4 [c5,gb5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~@3 [eb5,g5] ~ c5 [eb5,g5] ~@2 [d5,g5] ~ bb4 [d5,g5] ~ [d5,g5] bb4 ~, ~@8 f5 ~@2 f5 ~ bb5@115]/8", // Eb F G5 Cdim G5 Eb G5 Gbm …
  X: "[~@2 bb5@2 d5 f5 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~@3 [eb5,a5] ~ c5 [eb5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~@3 bb5@2 d5 f5 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~@3 [eb5,a5] ~ c5 [eb5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~@3 bb5@2 d5 f5 ~@2 [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~@3 [eb5,a5] ~ c5 [eb5,a5] ~@2 bb5@2 d5 bb5@2 f5 d5 ~@3 bb5@3 [e5,g5] ~@2 bb5@3 bb5@3 g5 ~@3 [eb5,g5] ~@2 [c5,f5,a5] ~@2 bb5@2 d5 [f5,bb5] bb5@2 bb5@2, ~@2 f5 ~@2 bb5@19 f5 ~@2 f5 ~ bb5@5 f5 ~@2 bb5@19 f5 ~@2 f5 ~ bb5@5 f5 ~@2 bb5@19 f5 ~@2 f5 ~ bb5@5 g5 ~@2 bb5@3 f5 ~@2 g5 ~@2 bb5@10 f5 ~@5 f5 ~]/8", // Ebdim Em Eb F Bb5
  Y: "bb5@2 d5 bb5@2 f5 d5 ~ bb5@2 d5 bb5@2 f5 d5!2, f5 ~@2 f5 ~ bb5@3 f5 ~@2 f5 ~ bb5@3",
  Z: "[bb5@2 d5 bb5@2 f5 d5 ~ eb5 ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~ [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~ [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~ [eb5,a5] ~ c5 [eb5,a5] ~ [eb5,a5] c5 ~ bb5@2 d5 bb5@2 f5 d5 ~, f5 ~@2 f5 ~ bb5@3 bb5@32 f5 ~@2 f5 ~ bb5@3]/3", // Ebdim
  AA: "[bb5@2 d5 bb5@2 f5 d5 ~ bb5@2 d5 bb5@2 f5 d5 ~ [g5,b5] ~ d5 [g5,b5] ~ [g5,b5] d5 ~ [g5,c6] ~ eb5 [g5,c6] ~ [g5,c6] eb5 ~, f5 ~@2 f5 ~ bb5@3 f5 ~@2 f5 ~ bb5@19]/2", // G C5
  AB: "[bb5@2 eb5 [e5,g5] ~ g5 e5 ~ bb5@2 d5 bb5@2 g5 d5 ~@3 [eb5,g5] ~@2 [c5,f5,a5] ~@2 bb5@2 d5 [f5,bb5] bb5@2 bb5@2, g5 ~@2 bb5@2 bb5@3 f5 ~@2 g5 ~ bb5@11 f5 ~@5 f5 ~]/2", // Em Eb F Bb5
  AC: "[bb5@2 eb5 [e5,g5] ~ g5 e5 ~ bb5@2 d5 bb5@2 g5 d5 ~ [eb5,g5] ~ c5 [f5,a5] ~ [f5,a5] c5 ~ [d5,f5] ~ [d5,f5,bb5]!2 [d5,f5] ~@19, g5 ~@2 bb5@2 bb5@3 f5 ~@2 g5 ~ bb5@11 bb5@2 ~@2 bb5@20]/3", // Em Eb F Dm Bb Dm
})).s("gm_marimba").gain(0.21).pan(0.4)

// chords · slap bass 1
const slap_bass_1 = note(`<
  ~ A B C D A B C B ~@8 A B C E A B F B ~@8 G H I J G K L ~ G H I J G K M N A B C D A B C B ~@8 A B C E A B F B ~@8 G H
  I J G K M ~ G H I J G K M N ~
>`.pickRestart({
  A: "~@2 [bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4] ~@2 [a3,c4,d4,gb4]@2 ~ [a3,c4,d4,gb4] ~@2 [a3,c4,d4,gb4] ~", // Gm7 D7
  B: "~@2 [a3,c4,d4,gb4] ~@2 [a3,c4,d4,gb4] ~@2 [bb3,d4,f4,g4]@2 ~ [bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4] ~", // D7 Gm7
  C: "~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~@2 [bb3,d4,f4,g4]@2 ~ [bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4] ~", // Cm7 Gm7
  D: "~@2 [a3,db4,e4,g4] ~@2 [a3,db4,e4,g4] ~@2 [a3,c4,d4,gb4]@2 ~ [a3,c4,d4,gb4] ~@2 [a3,c4,d4,gb4] ~", // A7 D7
  E: "~@2 [a3,c4,e4,g4] ~@2 [a3,c4,e4,g4] ~@2 [a3,c4,d4,gb4]@3 [a3,c4,d4,gb4] ~@2 [a3,c4,d4,gb4] ~", // Am7 D7
  F: "~@2 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] ~@2 [bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4] ~", // Cm7 Gm7
  G: "~@2 [bb3,c4,d4,f4] ~@2 [bb3,c4,d4,f4] ~@2 [bb3,c4,d4,f4]@2 ~ [bb3,c4,d4,f4] ~@2 bb3 c4", // Bb
  H: "~@2 [bb3,c4,d4,f4] ~@2 [bb3,c4,d4,f4,g4] ~@2 [a3,c4,eb4,f4]@2 ~ [a3,c4,eb4,f4] ~@2 a3 c4", // Bb Gm7 F7
  I: "~@2 [a3,c4,eb4,f4] ~@2 [a3,c4,eb4,f4] ~@2 [a3,c4,eb4,f4]@2 ~ [a3,c4,eb4,f4] ~@2 a3 c4", // F7
  J: "~@2 [a3,c4,eb4,f4] ~@2 [a3,c4,eb4,f4] ~@2 [bb3,c4,d4,f4]@2 ~ [bb3,c4,d4,f4] ~@2 bb3 c4", // F7 Bb
  K: "~@2 [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~@2 [bb3,c4,eb4,g4]@2 ~ [bb3,c4,eb4,g4] ~@2 bb3 c4", // G7 Cm7
  L: "~@2 [bb3,eb4,g4] ~@2 [bb3,db4,e4,g4] ~@2 [bb3,d4,f4]@2 ~ [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Eb Bbdim Bb Gm
  M: "~@2 [bb3,eb4,g4] ~@2 [bb3,db4,e4,g4] ~@2 [bb3,d4,f4]@3 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Eb Bbdim Bb Gm
  N: "~@2 [c4,eb4,g4] ~@2 [c4,f4,a4]@2 ~ [d4,f4,bb4] ~ [d4,f4,bb4]!3 ~@3", // Cm F Bb
})).s("gm_slap_bass_1").gain(0.14).pan(0.1)

// bass · electric bass finger
const bass = note(`<
  A B C D E F G H I J K L M J N O P F Q D E F G R I J S T U J N V W X L Y U Z AA AB W X L Y U Z AA AB AC B C D E F G H I
  J K L M J N O P F Q D E F G R I J S T U J N V W X L Y U Z AA AB W X L Y U Z AA AB AC ~
>`.pickRestart({
  A: "d2!2 ~ d2 ~ d2 ~ d2@4 ~ d2@3 ~", B: "g1@3 d1 d1@3 g1 d1@3 a1 a1@3 d1", C: "d1@2 ~ a1 a1@2 d1@2 g1@3 d1 d1@2 g1@2",
  D: "c2@3 g1 g1@2 c2@2 g1@3 d1 d1@2 g1 ab1", E: "a1@3 e1 e1@2 a1@2 d1 a1 ~ d2@2 ~ d2@2",
  F: "g1@3 d1 d1@2 g1@2 d1@3 a1 a1@3 d1", G: "d1@3 a1 a1@2 d1@2 g1@3 d1 d1@2 g1@2",
  H: "c1@3 g1 g1@2 c1@2 g1@2 ~ g1 d1@2 g1@2", I: "d1@3 a1 a1@2 d1@2 g1@3 g1 d1@2 g1@2",
  J: "bb1@3 f1 f1@2 bb1@2 f1 ~ f2 ~@3 f1 ~", K: "f1@3 c2 c2@2 f1@2 bb1 ~ c3 ~@3 bb1 ~",
  L: "bb1@3 f1 f1@2 bb1@2 f1@3 c2 c2@3 f1", M: "f1@2 ~ c2 c2@2 f1@2 bb1@3 f1 f1@2 g1 f1",
  N: "f1@3 c2 c2@2 f1@2 bb1 ~ bb1 ~@3 bb1@2", O: "eb1@3 eb1 e1@2 ~ e1 f1@2 ~ f1 g1@3 g1",
  P: "c1@2 ~ c1 f1@3 f1 bb1@3 f1 f1@2 bb1@2", Q: "d1@3 a1 a1@2 d1@2 g1@3 d1 d1@2 g1 d1",
  R: "c2@3 g1 g1@3 c2 g1@3 d1 d1@2 g1@2", S: "f1@3 c2 c2@2 f1@2 bb1 ~ bb2@2 ~@2 bb1 ~",
  T: "bb1@3 f1 f1@3 bb1 f1@3 c2 c2@3 f1", U: "f1@3 c2 c2@2 f1@2 bb1 f1 ~ f1 ~ f1 g1 f1",
  V: "eb1@3 eb1 e1@2 ~ e1 f1@3 gb1 g1@3 g1", W: "c1@2 ~ c1 f1@2 ~ f1 bb1 ~@2 bb1 ~@2 bb1 ~",
  X: "bb1@3 f1 f1@3 bb1 bb1@3 f1 f1@2 f1 g1", Y: "f1@3 c2 c2@3 f1 f1@3 c2 c2@3 f1",
  Z: "bb1@3 f1 f1@3 bb1 bb1@3 f1 f1@2 f1 gb1", AA: "g1@3 d1 d1@2 g1@2 c2@3 g1 g1@2 c2@2",
  AB: "eb1@2 ~ eb1 e1@3 e1 f1@2 gb1@2 g1@2 ~ g1", AC: "c1@2 ~ c1 f1@2 ~ f1 bb1 ~@3 bb1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!48
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!47
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3]
  ~
>`).gain(0.45)

// drums · rim
const rim = s("rim").struct(`<
  A B@3 C B@4 D@2 B@2 D@2 B@10 D@2 B@2 D E B@17 F B@3 C B@4 D@2 B@2 D@2 B@10 D@2 B@2 D E B@17 F ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", B: "x ~@2 x ~@2 x ~@3 x ~@2 x ~@2", C: "x ~@2 x ~@2 x ~@3 x ~@3 x ~",
  D: "x ~@2 x ~@2 x ~ x ~ x ~@3 x ~", E: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~", F: "x ~@2 x ~@2 x ~ x ~ x!3 ~@3",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<[x!2 ~ x ~ x ~ x!2 ~@3 x ~@3] ~@97>").gain(0.35)

// drums · clap
const clap = s("cp").struct(`<
  ~ A@8 B@2 ~@6 A@8 B@2 ~@2 B@2 ~@2 A@7 C A@16 B@2 ~@6 A@8 B@2 ~@2 B@2 ~@2 A@7 C A@8 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x!2 ~@2", C: "~ x ~@2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C B@3 D E@8 B F B F B@4 E@8 B G B D B@2 D H B G B D B@2 D I B C B C B@3 D E@8 B F B F B@4 E@8 B G B D B@2 D H
  B G B D B@2 D I ~
>`.pickRestart({
  A: "x!2 ~ x ~ x ~ x!2 ~@3 x ~@3", B: "x!8", C: "x ~ x ~ x ~ x ~ x!2 ~@2 x!2 ~@2", D: "x!7 ~",
  E: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", F: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", G: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
  H: "x ~ x ~ x!3 ~ x ~ x ~ x ~ x ~", I: "x ~@3 x ~@3 x ~ x!3 ~@3",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~ A ~ A ~@3 B C@8 ~ B ~ B ~@4 C@8 ~@3 B ~@2 B ~@4 B ~@2 B D ~ A ~ A ~@3 B C@8 ~ B ~ B ~@4 C@8 ~@3 B ~@2 B ~@4 B ~@2
  B D ~
>`.pickRestart({
  A: "~@5 x ~ x", B: "~@7 x", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~@4",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  A B ~@3 B ~@3 C@2 B ~ C@2 B ~ B ~@3 B ~@3 C@2 B ~ C@2 B ~ B ~@6 D ~@7 E B ~@3 B ~@3 C@2 B ~ C@2 B ~ B ~@3 B ~@3 C@2 B
  ~ C@2 B ~ B ~@6 D ~@7 E ~
>`.pickRestart({
  A: "x ~@2 x", B: "x", C: "~@4 x!2 ~@2", D: "~@13 x ~@2", E: "~@3 x",
})).gain(0.3)

// drums · ride bell
const ride_bell = s("rd").struct("<~@33 A@3 B A@7 B A@3 C ~@32 A@3 B A@7 B A@3 C ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x ~@3 x ~@3 x ~@3 x!2", C: "~@2 x ~@3 x ~@3 x!3 ~@3",
})).gain(0.3)

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

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

// drums · congas
const congas = s("conga:13").struct("<[x!2 ~ x ~ x ~ x!2 ~@7] ~@97>").gain(1.11)

// drums · ht
const ht = s("ht").struct("<[x!2 ~ x ~ x ~ x!2 ~@3 x ~@3] ~@39 [~@9 x ~ x!2 ~@3] ~@47 [~@9 x ~ x!2 ~@3] ~@9>")
// … 17 more lines

More by Faith