Strudelify

Back and Forth

Cameo

KeyG minorTempo115 bpm
0:00/0:00
// Back and Forth — Cameo
// 115 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 4 "FLUTE & W" named as a pipe, played on flute (its synth strings 2 patch is not one); ch 5 "FLUTE & W" named as a pipe, played on flute (its pad poly patch is not one); ch 12 "CLAVINET" named as a piano, played on clavinet (its electric guitar muted patch is not one)
// note: duplicate parts dropped: ch 3 "BASS" synth bass 2 (copy of ch 1 "BASS" slap bass 2); ch 5 "FLUTE & W" flute (copy of ch 4 "FLUTE & W" flute)
// note: Full arrangement: all 148 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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 · slap bass 2 · "BASS"
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q B C D E F G H I J K L M N O P Q J K L M N O P Q B C D E F G H R B C D E F G H R
  J K L M N O P Q J K L M N O P Q B C D S F G H T B C D S F G H T J K L M N O P Q J K L M N O P Q B C D E F G H I B C D
  S F G H T ~@7 U J K L M N O P Q J K L M N O P Q V
>`.pickRestart({
  A: "~@14 [g1,g2] ~", B: "~@6 g1 ~ f1@2 ~ eb1@2 ~ d1@2", C: "~@5 d3 d2 ~ f1@3 gb1@3 g1 ~",
  D: "~@5 g1 [g1,g2] ~ f1@3 eb1@3 d1@2", E: "~ a2@2 ~ c3 ~@3 f1@3 gb1@3 g1 ~", F: "~@5 g2 g1 ~ f1@3 eb1@2 ~ d1 ~",
  G: "~@6 d1 ~ f1@3 gb1@3 g1 ~", H: "~@5 g2 g1 ~ f1@3 eb1@3 d1@2",
  I: "~ a2 a1@2 a2@2 [a1,bb1] ~ c2 ~@2 db2 ~@2 d2@2, ~@14 eb2 ~", J: "~@3 eb2!2 ~ d2@2 eb2 ~@3 eb2 ~ eb2 ~",
  K: "~ eb2!2 ~ f1@2 gb1@2 g1@3 ~@3 d2@2", L: "eb2 ~@7 eb2 ~@5 d2@2", M: "eb2 ~@2 f1 ~ f1 gb1 ~ g1@5 f1 bb1 ~",
  N: "eb2 ~@5 d2@2 eb2 ~@5 eb2 ~", O: "eb2 ~@2 eb2 ~ f1 gb1 ~ g1@5 ~@3", P: "eb2 ~@5 d2@2 eb2 ~@2 eb2 ~ bb1 eb2 d2",
  Q: "c2@3 ~@2 bb1 a1@2 d2@6 g2 ~, ~@4 c2@2 db2 ~@9", R: "~ a2 a1@2 a2@2 a1 ~ c2 ~@2 db2 ~@2 d2@2",
  S: "~ a2@2 ~ c3 ~@3 f1@3 gb1@3 g1@2", T: "~ a2 a1@2 a2@2 [a1,bb1] ~ c2 ~@2 db2 ~@2 d2@2", U: "~@8 c2@4 d2@3 ~",
  V: "g2@2 d2 g1 ~@12",
})).s("gm_slap_bass_2").gain(0.59)

// bass · slap bass 1 · "BASS"
const bass_2 = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q B C D E F G H I J K L M N O P Q J K L M N O P Q B C D E F G H R B C D E F G H R
  J K L M N O P Q J K L M N O P Q B C D S F G H T B C D S F G H T J K L M N O P Q J K L M N O P Q B C D E F G H I B C D
  S F G H T ~@7 U J K L M N O P Q J K L M N O P Q V
>`.pickRestart({
  A: "~@14 [g2,g3] ~", B: "~@6 g2 ~ f2@2 ~ eb2@2 ~ d2@2", C: "~@5 d4 d3 ~ f2@3 gb2@3 g2 ~",
  D: "~@5 g2 [g2,g3] ~ f2@3 eb2@3 d2@2", E: "~ a3@2 ~ c4 ~@3 f2@3 gb2@3 g2 ~", F: "~@5 g3 g2 ~ f2@3 eb2@2 ~ d2 ~",
  G: "~@6 d2 ~ f2@3 gb2@3 g2 ~", H: "~@5 g3 g2 ~ f2@3 eb2@3 d2@2",
  I: "~ a3 a2@2 a3@2 [a2,bb2] ~ c3 ~@2 db3 ~@2 d3@2, ~@14 eb3 ~", J: "~@3 eb3!2 ~ d3@2 eb3 ~@3 eb3 ~ eb3 ~",
  K: "~ eb3!2 ~ f2@2 gb2@2 g2@3 ~@3 d3@2", L: "eb3 ~@7 eb3 ~@5 d3@2", M: "eb3 ~@2 f2 ~ f2 gb2 ~ g2@5 f2 bb2 ~",
  N: "eb3 ~@5 d3@2 eb3 ~@5 eb3 ~", O: "eb3 ~@2 eb3 ~ f2 gb2 ~ g2@5 ~@3", P: "eb3 ~@5 d3@2 eb3 ~@2 eb3 ~ bb2 eb3 d3",
  Q: "c3@3 ~@2 bb2 a2@2 d3@6 g3 ~, ~@4 c3@2 db3 ~@9", R: "~ a3 a2@2 a3@2 a2 ~ c3 ~@2 db3 ~@2 d3@2",
  S: "~ a3@2 ~ c4 ~@3 f2@3 gb2@3 g2@2", T: "~ a3 a2@2 a3@2 [a2,bb2] ~ c3 ~@2 db3 ~@2 d3@2", U: "~@8 c3@4 d3@3 ~",
  V: "g3@2 d3 g2 ~@12",
})).s("gm_slap_bass_1").gain(0.59)

// other · flute · "FLUTE & W"
const flute = note(`<
  ~ A B C@4 ~@7 D ~@4 C@4 ~@7 D ~@7 D ~@4 C@4 ~@4 C@4 ~@7 D ~@7 D ~@4 E@3 F G H I ~ E@3 F G H I ~@4 D ~@7 D ~@4 C@4 ~@4
  J@2 K@2 I L M N O@2 P@2 I Q R S ~@3 D ~@7 D ~@5
>`.pickRestart({
  A: "d5@15 ~", B: "a5@7 ~", C: "[g5@63 ~]/4", D: "~@5 eb4 ~@10, ~ [bb3,d4]@2 ~", E: "[d5@7 c5@4 ~]/3", F: "a4 g4",
  G: "~@3 d4", H: "c4 f4, ~@8 eb4 ~@7", I: "d4", J: "[~@2 d5@21 ~ c5@8]/2", K: "[a4@28 f4@3 ~]/2", L: "~@8 c4@4 f4@3 ~",
  M: "d4@8 g4@7 ~", N: "a4@7 ~ bb4@4 c5@3 ~", O: "[d5@3 c5]/2", P: "[a4@3 f4]/2", Q: "~@8 c4@3 ~ f4@3 ~", R: "d4 g4",
  S: "a4@8 bb4@3 ~ c5@3 ~",
})).s("gm_flute").gain(0.36)

// other · flute · "FLUTE & W" · soft notes
const flute_soft = note("<~@77 A ~@4 B ~@2 A ~@4 B ~@57>".pickRestart({
  A: "~@3 bb4", B: "c4 ~",
})).s("gm_flute").gain(0.24)

// chords · brass section · "BRASS"
const brass_section = note("<~@91 A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~@42>".pickRestart({
  A: "~@4 d5 [bb4,g5] ~@10, ~@2 bb5 ~@5", B: "~@2 [bb4,d5,g5,bb5] ~@3 [bb4,d5,g5,bb5] ~",
  C: "~@4 [bb4,d5,g5,bb5]@3 ~@9", D: "~@2 [bb4,d5,g5,bb5] ~@5",
})).s("gm_brass_section").gain(0.48)

// chords · electric guitar muted · "ELEC PIAN"
const electric_guitar_muted = note(`<
  ~@2 A B C D C E C F G@6 H@3 D C D C E C F I@2 J@4 K@8 H@3 D C D C E C F L D C D C E C F I@2 M@8 N@7 D C D C E C F L D
  C D C E C F L O@5 P@4 N@7 D C D C E C F Q D C D C E C F L ~@8 O@5 P@4 N@7 R
>`.pickRestart({
  A: "~@14 [g3,a3,d4] ~", // Gsus2
  B: "[g3,a3,d4] ~ [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,bb3,d4]@2 ~ [g3,a3,d4]@2 ~ [gb3,c4,f4] ~", // Gsus2 Gm Gsus2 F
  C: "~@2 [gb3,c4,f4] ~ [gb3,c4,f4] ~ [gb3,c4,f4] ~ [gb3,c4,f4]@2 ~ [gb3,c4,eb4]@2 ~ [g3,a3,bb3,d4] ~", // F Cdim Gm
  D: "~@2 [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,bb3,d4]@2 ~ [g3,a3,d4]@2 ~ [gb3,c4,f4] ~", // Gm Gsus2 F
  E: "~@2 [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4]@2 ~ [g3,a3,d4]@2 ~ [gb3,c4,f4] ~", // Gm Gsus2 F
  F: "~@2 [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,a3,bb3,d4] ~ [g3,bb3,d4]@2 ~ [g3,a3,d4] ~@2 [gb3,c4,f4] ~", // Gm Gsus2 F
  G: "[~@2 [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [d3,gb3,c4]@6 [eb3,bb3,d4,g4,bb4,d5,g5]@24 ~@2 [c4,d4,g4]@3 ~@3 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@18, ~@2 d4 ~@21]/6", // Cm D7 Ebmaj7 Csus2 Ebmaj7
  H: "[~@14 [eb3,bb3,d4,g4,bb4]@8 ~@2 [c3,g3,c4,eb4,g4]@5 ~ [g3,a3,c4,d4]@9 ~ [gb3,c4,f4]@2 ~ [gb3,c4,eb4]@2 ~ [g3,a3,d4] ~]/3", // Ebmaj7 Cm Gsus4 F Cdim Gsus2
  I: "[~@2 [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [d3,gb3,c4]@6 [eb3,bb3,d4,g4,bb4,d5,g5]@18, ~@2 d4 ~@5]/2", // Cm D7 Ebmaj7
  J: "[~@8 [c4,d4,g4]@3 ~@3 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@18]/4", // Csus2 Ebmaj7
  K: "[~@14 [eb3,bb3,d4,g4,bb4]@8 ~@2 [c3,g3,c4,eb4,g4]@5 ~ [g3,a3,c4,d4]@9 ~ [gb3,c4,f4]@2 ~ [gb3,c4,eb4]@2 ~ [eb3,g3,bb3,d4,g4,bb4]@23 ~@3 [c4,d4,g4]@3 ~@3 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@18]/8", // Ebmaj7 Cm Gsus4 F Cdim Ebmaj7 Csus2 Ebmaj7
  L: "~@2 [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [d3,gb3,c4,d4]@6 ~@2", // Cm D7
  M: "[~@8 [c4,d4,g4]@3 ~@3 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@8 ~@2 [c3,g3,c4,eb4,g4]@5 ~ [g3,a3,c4,d4]@9 ~ [gb3,c4,f4]@2 ~ [gb3,c4,eb4]@2 ~ [eb3,bb3,d4,g4,bb4]@18]/8", // Csus2 Ebmaj7 Cm Gsus4 F Cdim Ebmaj7
  N: "[~@8 [c4,d4,g4]@3 ~@3 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@8 ~@2 [c3,g3,c4,eb4,g4]@5 ~ [g3,a3,c4,d4]@9 ~ [gb3,c4,f4]@2 ~ [gb3,c4,eb4]@2 ~ [g3,a3,d4] ~]/7", // Csus2 Ebmaj7 Cm Gsus4 F Cdim Gsus2
  O: "[[eb3,bb3,d4,g4,bb4]@24 [c4,d4,g4]@3 ~@3 [eb3,bb3,d4,g4,bb4]@22 ~@10 [eb3,bb3,d4,g4,bb4]@18, [d5,g5]@27 ~@53]/5", // Ebmaj7 Csus2 Ebmaj7 G5
  P: "[~@14 [eb3,bb3,d4,g4,bb4]@8 ~@2 [c3,g3,c4,eb4,g4]@5 ~ [g3,a3,c4,d4]@9 ~ [gb3,c4,f4]@2 ~ [gb3,c4,eb4]@2 ~ [eb3,bb3,d4,g4,bb4]@18]/4", // Ebmaj7 Cm Gsus4 F Cdim Ebmaj7
  Q: "~@2 [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [eb3,g3,c4,d4] ~ [d3,gb3,c4,d4]@6 [bb3,d4,g4,bb4,g5]@2", // Cm D7 Gm
  R: "[g3,a3,d4] ~ [g3,a3,d4]!2 ~@12", // Gsus2
})).s("gm_electric_guitar_muted").gain(0.52)

// chords · piano · "ELEC PIAN"
const piano = note(`<
  ~@2 A ~@8 B@8 ~@8 B@8 C@8 ~@16 B@8 C@8 ~@16 B@8 D@8 ~@8 E F G H E I J I ~@8 B@8 C@8 K
>`.pickRestart({
  A: "~@14 [g2,a2,d3] ~", // Gsus2
  B: "[[f3,g3,bb3,d4]@22 ~@5 c4@3 ~@10 bb4@3 c5@3 g4@9 ~@4 c4@3 c4 ~@15 eb4@2 ~@2 bb3@5 ~@4 c4@3 [f3,g3,bb3,d4]@10 [c3,d3,g3]@5 ~ [g2,a2,c3,d3]@9 ~ [gb2,c3,f3]@2 ~ [gb2,c3,eb3]@3 [g2,a2,d3] ~, ~@24 [c3,d3,g3]@6 [f3,g3,bb3,d4]@25 ~ [c3,d3,g3]@6 [f3,g3]@24 ~@2 [c3,d3,g3]@6 ~@34, ~@31 bb3@10 ~@23, ~@31 d4@9 d4@3 ~@21]/8", // Gm7 Csus2 Gsus4 F Cdim Gsus2 Csus2 Gm7 …
  C: "[[f3,g3,bb3,d4,g4]@22 ~@5 c4@3 ~@10 bb4@3 c5@3 g4@9 ~@4 c4@3 c4 ~@15 eb4@2 ~@2 bb3@5 ~@4 c4@3 [f3,g3,bb3,d4]@10 [c3,d3,g3]@5 ~ [g2,a2,c3,d3]@9 ~ [gb2,c3,f3]@2 ~ [gb2,c3,eb3]@3 [g2,a2,d3] ~, ~@24 [c3,d3,g3]@6 [f3,g3,bb3,d4]@25 ~ [c3,d3,g3]@6 [f3,g3]@24 ~@2 [c3,d3,g3]@6 ~@34, ~@31 bb3@10 ~@23, ~@31 d4@9 d4@3 ~@21]/8", // Gm7 Csus2 Gsus4 F Cdim Gsus2 Csus2 Gm7 …
  D: "[[f3,g3]@21 ~@6 c4@3 ~@10 bb4@3 c5@3 g4@9 ~@4 c4@3 c4 ~@15 eb4@2 ~@2 bb3@5 ~@4 c4@3 [f3,g3,bb3,d4]@10 [c3,d3,g3]@5 ~ [g2,a2,c3,d3]@9 ~ [gb2,c3,f3]@2 ~ [gb2,c3,eb3]@3 [g2,a2,d3] ~, [bb3,d4,g4]@26 ~@4 [f3,g3,bb3,d4]@25 ~@7 [f3,g3]@24 ~@2 [c3,d3,g3]@6 ~@34, ~@12 [c3,d3,g3]@3 ~@13 [c3,d3,g3]@3 bb3@10 ~@23, ~@31 d4@9 d4@3 ~@21]/8", // Fsus2 Gm7 Csus2 Gsus4 F Cdim Gsus2 Gm …
  E: "~@2 [g5,bb5] ~ [g5,bb5] ~ [g5,bb5] ~ [g5,bb5]@2 ~ [g5,bb5] ~@4", // Gm
  F: "~@2 [g5,bb5]!2 ~ [g5,bb5] ~ [g5,bb5]!2 ~ [g5,bb5] ~ [g5,bb5]!2 ~@2", // Gm
  G: "~@2 [g5,bb5] ~ [g5,bb5] ~ [g5,bb5] ~ [g5,bb5]@2 ~@6", // Gm
  H: "~@2 [g5,bb5]!2 ~ [g5,bb5] ~ [g5,bb5]!2 ~@3 g5@2 ~@2, ~@12 bb5 ~@3", // Gm
  I: "~@2 [g5,bb5] ~@2 [g5,bb5] ~@2 [g5,bb5] ~ [g5,bb5] ~ [g5,bb5]!2 ~@2", // Gm
  J: "~@2 [g5,bb5]!2 ~ [g5,bb5] ~ g5 [g5,bb5]@3 ~ [g5,bb5] ~@3", K: "d4@2 bb3 g3 ~@12",
})).s("gm_piano").gain(0.66)

// chords · clavinet
const clavinet = note(`<
  A B@2 ~@4 C D C E F G H G F G I J ~@4 C D C E F G H G F G I J F G H G F G I J ~@4 C D C E ~@4 C D C E F G H G F G I J
  F G H G F G I J ~@16 F G H G F G I J F G H G F G I J ~@4 C D C E ~@4 K L ~@10 F G H G F G I J F G H G F G I J M
>`.pickRestart({
  A: "~@14 [g5,c6] ~", B: "[g5,c6] ~ [g5,c6] ~@3 [g5,c6] ~ [g5,c6] ~ [g5,c6] ~@3 [g5,c6] ~",
  C: "~@2 [g5,bb5] ~@2 [g5,bb5] ~@2 [g5,bb5] ~@7", D: "~@2 [g5,bb5]!2 ~ [g5,bb5] ~ [g5,bb5] [gb5,g5,bb5] ~@7",
  E: "~@2 [g5,bb5]!2 ~ [g5,bb5] ~ [g5,bb5]!2 ~@7", F: "~@4 [d4,f4,g4,bb4] ~@3 [d4,f4,g4,bb4]@3 [d4,f4,g4,bb4] ~@4",
  G: "[d4,f4,g4,bb4] ~@3 [d4,f4,g4,bb4]@2 ~ [d4,f4,g4,bb4] ~@8", // Gm7
  H: "~@4 [d4,f4,g4,bb4] ~@3 [d4,f4,g4,bb4]@2 ~ [d4,f4,g4,bb4] ~@4", // Gm7
  I: "~@4 [d4,f4,g4,bb4] ~@3 [bb3,d4,g4]@2 ~ [bb3,d4,g4] ~@4", J: "~@4 [c5,f5]@3 ~@9", K: "~@15 d4",
  L: "eb4 bb4 a4@5 ~@9", M: "[bb3,d4,g4] ~ [bb3,d4,g4]!2 ~@12",
})).s("gm_clavinet").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~ x!3 ~@3", C: "~@2 x!2 ~@12",
})).gain(0.66)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@3 x ~@12",
})).gain(0.39)

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

// drums · clap
const clap = s("cp").struct("<~@7 A@4 ~@12 B@4 ~@20 B@4 A@8 ~@24 A@8 ~@24 A@8 ~@8 A@16 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.66)

// drums · hihat
const hihat = s("hh").struct("<~ [x!2]!146 [x!2 ~@6]>").gain(0.66)

// drums · tambourine
const tambourine = s("tb").struct("<~@7 A@4 ~@12 B@4 ~@20 B@4 A@8 ~@24 A@7 C ~@24 A@8 ~@7 D A@7 E A@8 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@7 x ~ x!2", D: "~@12 x!4", E: "~@4 x ~@9 x!2",
})).gain(0.66)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@130 [~@8 x!4 ~@4] ~@7 [~@12 x!2 ~@2] ~@9>").gain(0.33)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@3 [x!8]!144 [x!2 ~@6]>").gain(3.33)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
  ~@3
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!58
  [~ x ~ x ~@3 x ~ x ~ x ~ x ~ x]
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!85
  [~ x ~ x ~@12]
>`).gain(1.66)

stack(
  bass, bass_2, flute, flute_soft, brass_section, electric_guitar_muted, piano, clavinet, kick, kick_soft, snare, clap,
  hihat, tambourine, tambourine_soft, cabasa, cabasa_soft
)

More by Cameo