Strudelify

Lungomare

Masini

KeyA majorTempo88 bpm
0:00/0:00
// Lungomare — Masini
// 88 bpm, 4/4, key A major. 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 62 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(88/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 · electric bass finger
const bass = note(`<
  ~@7 A B C B D E F G H I J K F L M N O P Q R O P Q S T M U V W X Y Z AA AB AC AD AE AF AG AH ~@3 AI AJ AK AL AM AN AO
  AP AQ AR@2 ~
>`.pickRestart({
  A: "~@14 e2 f#2", B: "g2 d2", C: "a1@15 d2", D: "c3", E: "f#2", F: "f2 g2", G: "a1@15 ~", H: "a1", I: "a2",
  J: "a1 g#1", K: "f#1 d#2", L: "a1 f#1", M: "f1 g1", N: "a1@8 ~ g1 a1 d2 c#2 g1 a1@2", O: "g1@3 ~ g1@4 d2 ~ d2@4 d2@2",
  P: "a2@3 ~ a2@6 e1@3 f#1@3", Q: "g1@6 g1@2 d2 ~ d2@3 ~ d2@2", R: "a1@3 ~ a1@4 ~ a1@3 ~ f#1@3", S: "c2", T: "f#1",
  U: "a1@6 ~ a1 ~@2 a1@3 a1@2 ~", V: "a1@6 ~ e1 a1 ~ a1@2 ~ a1@2 ~", W: "a1@6 ~ a1 ~@2 a1@5 ~",
  X: "a1@7 e1 g#1 ~ g#1@4 g#1 ~", Y: "f#1@6 ~ f#1 d#2 ~ d#2@4 d#2@2", Z: "f2@7 f2 g2 ~ g2@3 ~ g2@2",
  AA: "a1@7 a1 f#1 ~ f#1@4 c#2 f#1", AB: "f1@6 ~ f1 g1 ~ g1@3 ~ g1@2", AC: "d2", AD: "e2",
  AE: "f#2@2 f#2@2 f#2 ~ f#2@2 g#2@2 g#2@2 g#2 ~ g#2@2", AF: "f2@3 ~ f2@3 c2 f2 c2 f2@2 e2@4",
  AG: "d2@4 d2@3 a1 d2 a1 d2@2 d2@3 ~", AH: "c#2@4 c#2@3 ~ c2@3 ~ c2@4", AI: "b1@6 ~ b1 ~@2 b1@3 b1@2 ~",
  AJ: "b1@6 ~ f#1 b1 ~ b1@2 ~ b1@2 ~", AK: "g#1@6 ~ g#1 ~@2 g1@5 ~", AL: "f#1@7 f#1 a#1 ~ a#1@4 a#1 ~",
  AM: "g#1@6 ~ g#1 f1 ~ f1@4 f1@2", AN: "g1@7 g1 a1 ~ a1@3 ~ a1@2", AO: "b1@7 b1 g#1 ~ g#1@4 d#2 g#1",
  AP: "g1@6 ~ g1 a1 ~ a1@3 ~ a1@2", AQ: "e2 e3 d3 d2", AR: "[c#2 f#2@3]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@14 A B C D E F@2 G H ~@10 A B C D E F@2 G ~@9 I J K L M N@2 O P@4>".pickRestart({
  A: "[a2,a3,c#4,e4]", B: "[a2,f#3,b3,d#4]", C: "[a2,f#4] [a2,f4], [a3,d4]", D: "[a2,a3,c#4,e4] [g#2,b3,e4]",
  E: "[f#2,b3,d#4,f#4]", F: "[[f2,c3,a3,c4] [g2,d3,b3,d4] [a2,e3] f#2, e4, ~ [a3,c#4]]/2",
  G: "[f2,c3,a3,c4] [g2,d3,b3,d4], e4", H: "[a2,e3,a3,c#4,e4]@13 ~@3", I: "[b2,b3,d#4,f#4]", J: "[b2,g#3,c#4,f4]",
  K: "[b2,g#4] [b2,g4], [b3,e4]", L: "[b2,b3,d#4,f#4] [a#2,c#4,f#4]", M: "[g#2,c#4,f4,g#4]",
  N: "[[g2,d3,b3,d4] [a2,e3,c#4,e4] [b2,f#3] g#2, f#4, ~ [b3,d#4]]/2", O: "[g2,d3,b3,d4] [a2,e3,c#4,e4], f#4",
  P: "[[g3,e4]@2 f#3@2 g3@2 ~@2 c#4@5 ~@3, b3@6 [f#3,a#3]@7 ~@3, ~ d4@3 ~@4]/4", // C F#
})).s("gm_string_ensemble_1").gain(0.2)

// other · synth strings 1
const synth_strings_1 = note("<~@46 A B ~ C@2 ~@11>".pickRestart({
  A: "[b3,b4] [c#4,c#5] [e4,e5] [a4,a5] [b4,b5] [c5,c6] [e5,e6] [a5,a6]", B: "[b5,b6] ~@15",
  C: "[[g3,b3]@8 [a3,c#4]@15 ~@9, e3@23 ~@9]/2", // G A
})).s("gm_synth_strings_1").gain(0.4)

// chords · percussive organ
const percussive_organ = note("<~@41 A B@2 C D@2 ~@15>".pickRestart({
  A: "[d4,f4,a4,c5,a5,c6]", B: "[[e4,g4,b4,b5,d6]@2 [f#4,a4,a5,d6] [g#4,b4,e5,b5,e6], d5@3 ~]/2",
  C: "[f4,a4]@3 [e4,g4], c5", D: "[[d4,f4]@2 c#4 c4, a4, ~ e4]/2",
})).s("gm_percussive_organ").gain(0.2).pan(0.3)

// chords · overdriven guitar
const overdriven_guitar = note("<A@3 ~@6 B@2 ~@12 C D C ~@2 E@2 ~@6 F ~@16 G ~@8>".pickRestart({
  A: "[~ b5@2, ~@5 e5@19]/3", B: "[~@6 g5 ~ g5 e5@21 ~@2]/2", C: "~@13 [a3,d4,f#4]@2 ~",
  D: "~@9 [a3,c#4,e4]@3 [a3,c#4]@3 ~", E: "[~@9 d#5 ~@3 e4@2 ~@9 [f#3,a3,d4] ~ f#3@6, ~@9 e5@11 ~@12, ~@3 a5@2 ~@3]/2",
  F: "~ f#3", G: "~ g#3",
})).s("gm_overdriven_guitar").gain(0.15).pan(0.6)

// chords · epiano1
const epiano1 = note("<A B A B A B A B A B A C D E ~@33 F G H ~@12>".pickRestart({
  A: "[b3,d4,g4]@3 ~ [b3,d4,g4]@3 ~ [a3,d4,f#4]@4 ~@4", // G D
  B: "[a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~@3 [a3,c#4,e4]@3 [a3,d4,f#4]@3", C: "[g3,c4,e4]@15 ~", D: "[f#3,a3,c4,e4]",
  E: "[f3,a3,c4,e4] [g3,b3,d4]", F: "[f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@4 [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@4",
  G: "[g#3,c#4,f4]@4 [g#3,c#4,f4]@4 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // C# E
  H: "[g3,b3,d4]@4 [g3,b3,d4]@4 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~", // G A
})).s("gm_epiano1").gain(0.25).pan(0.6)

// chords · piano
const piano = note("<~@12 A@2 B@4 ~@7 C@2 ~@2 D@2 E@2 F@3 ~@6 G H ~@6 I J@4 K L@4 ~@2>".pickRestart({
  A: "[~@14 e4@4 f4@2 g4 ~ f4@4 g4@2 b4@3 ~]/2", B: "[e5@4 ~@11 d#5@5 ~@11 d5@6 ~@10 c#5@6 ~@11]/4",
  C: "[~@2 [g4,b4] ~ [f#4,a4]@3 [e4,g4] [f#4,a4] ~ [f#4,a4]@3 ~ [e4,a4]@11 ~@7]/2", // G F#m Em F#m A5
  D: "[~@2 [g4,b4] ~ [f#4,a4]@3 [e4,g4] [d4,a4] ~ a4@2 [d4,b4] ~ d4@2 e4@4 ~@12, ~@10 d4 ~@3 g4@6 ~@12]/2", // G F#m Em D5 G
  E: "[c5@2 d5@2 e5 ~ [a4,c5]@4 ~@4 e4@4 f4@2 g4 ~ f4@4 g4 ~ b4@3 ~, a4@5 ~@27]/2", // Am
  F: "[c#5@4 ~@10 c#5@5 ~@11 c#5@5 ~@13]/3", G: "~@8 e4@2 f4@2 g4 ~ e4@2", H: "~@2 f#4 ~ g#4 ~ f#4@4 g#4@2 ~@4",
  I: "[f#3,b3,d#4], d#5@3 ~@5", // B
  J: "[[c#4,f4]@15 ~@9 g3@7 ~ d#4@8 a#3@8 [g#3,f4]@16, g#3@3 ~ f#3@2 ~@2, d#5@6 ~@9 d#5@6 ~@10 d#5@6 ~@27, ~@2 b3@3 c#4@3, ~ e4 ~@2]/4", // C#
  K: "[g3,b3] [a3,c#4,e4], d4@3 ~@5", // G A
  L: "[~@4 f#3@4 g#3@7 ~ d4@8 f#3@5 f#3@2 f#4@2 e3@2 [e3,e4]@2 [d3,d4] ~ [d3,d4]@2 c#3@2 [c#3,c#4]@2 [b2,b3]@9 ~@10, ~@4 b3@20 [a3,c#4]@8 ~ e4 ~@7 c#4 ~@22, ~@4 d#4@12 g3@6 ~@7 f#4 ~ f#3 ~@32]/4", // E D C# B A
})).s("gm_piano").gain(0.05)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B@8 C@3 D E F G H I J K L M N A B@4 C@3 D E F G H I J K L M ~@3 O P Q ~@2 R S T U V W X Y Z ~@4
>`.pickRestart({
  A: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [d3,a3,d4]@2 [d3,a3,d4] [a3,d4]@2 a3@2 [d3,a3]@2, ~@7 e4@9, ~@9 f#4@3 [d4,f#4]@4, ~@5 d3@2 ~", // G D5 D
  B: "[[e3,a3,c#4,e4]@4 [e3,a3,c#4,e4]@2 [a2,e3] [a2,e3,a3,c#4,e4]@3 [e3,a3,c#4]@2 ~@4 [g2,d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [d3,a3,d4]@2 [d3,a3,d4] [a3,d4]@2 a3@2 [d3,a3]@2, a2@6 ~@4 [a2,e4]@13 ~@3 d3@4 ~@2, ~@12 e3@2 e3@9 ~@2 f#4@3 [d4,f#4]@4, ~@13 [a3,c#4,f#4]@10 e4@9]/2", // A A5 A G D5 A5 D F#m
  C: "[[e3,a3,c#4,e4]@4 [e3,a3,c#4,e4]@2 [a2,e3] [a2,e3,a3,c#4,e4]@3 [e3,a3,c#4]@2 ~@4 [g2,d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [d3,a3,d4]@2 [d3,a3,d4] [a3,d4]@2 a3@2 ~@2 [c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@3 ~@3 [c3,e3]@2 [c3,e3,g3,c4,e4]@4, a2@6 ~@4 [a2,e4]@13 ~@3 d3@4 [d3,a3]@18, ~@12 e3@2 e3@9 ~@2 f#4@3 [d4,f#4]@20, ~@13 [a3,c#4,f#4]@10 e4@9 ~@7 [g3,c4,e4]@2 [g3,c4,e4]@3 ~@4, ~@20 [c3,e3] ~@3]/3", // A A5 A G D5 C A5 D5 …
  D: "[f#2,e3,a3,c4]@4 [f#2,e3,a3,c4]@3 ~@3 f#2@2 [f#2,e3,a3,c4]@4, ~@7 [e3,a3,c4]@2 [e3,a3,c4]@3 ~@4, ~@4 f#2 ~@3", // F#m7b5 Am
  E: "[f2,c3,f3,a3,c4]!2 [g2,d3,g3,b3,d4]!2", // F G
  F: "[a2,e3,a3,c#4,e4]@4 [a2,e3,a3,c#4,e4]@3 ~@7 [a2,e3]@2, ~@7 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]@4, ~@4 [a2,e3] [a2,e3]@2 ~", // A A5 A A5
  G: "[a2,e3,f#3,b3,d#4]@4 [a2,e3,f#3,b3,d#4]@3 ~@5 [f#3,b3,d#4]@2 [a2,e3] ~, ~@7 [f#3,b3,d#4]@2 [f#3,b3,d#4]@3 ~@4, ~@4 [a2,e3] [a2,e3]@2 ~", // B7 B A5 B A5
  H: "[a2,e3,f#3,a3,d4]@4 [a2,e3,f#3,a3,d4]@3 ~@7 [a2,e3]@2, ~@7 [a3,d4]@2 [f3,a3,d4]@3 [f3,a3,d4]@4, ~@4 [a2,e3] [a2,e3]@2 ~", // D A5 D5 Dm A5
  I: "[e3,a3,c#4]@4 ~@3 e3 [e3,b3]@4 ~@2 g#2@2, a2@3 a2 g#2@3 ~, ~@4 [e3,a3,c#4]@4 e4 ~@3 [e3,b3,e4]@4", // A E5 A E5
  J: "[f#3,b3,d#4]@4 [f#3,b3,d#4]@3 [f#3,b3,d#4]@2 [f#3,b3,d#4]@3 [f#3,b3,d#4]@4, f#2", // B
  K: "[f2,c3,f3,a3,c4]@4 [f2,c3,f3,a3,c4]@4 [g2,d3,g3,b3,d4]@3 ~@3 [g2,d3]@2, ~@11 [g3,b3,d4]@2 [g3,b3,d4]@3, ~@6 [g2,d3] ~", // F G G5 G G5
  L: "[a2,e3,a3,c#4,e4]@4 [a2,e3,a3,c#4,e4]@4 [f#2,c#3,f#3,a3,c#4]@3 ~@3 [f#2,c#3]@2, ~@11 [f#3,a3,c#4]@2 [f#3,a3,c#4]@3, ~@6 [f#2,c#3] ~", // A F#m F#5 F#m F#5
  M: "[f2,c3,f3,a3,c4,e4]@4 [f2,c3,f3,a3,c4,e4]@3 ~ [g2,d3,g3,b3,d4]@3 ~@3 [g2,d3]@2, ~@11 [g3,b3,d4]@2 [g3,b3,d4]@3, ~@6 [g2,d3] ~", // Fmaj7 G G5 G G5
  N: "[a2,e3,a3,c#4,e4]", // A
  O: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@3 [a3,c4,f4] ~@2 f3@2 [e3,g3,c4,e4]@4, ~@4 f3 ~@3, ~@9 [a3,c4,f4]@3 ~@4", // F C F
  P: "[d3,a3,d4,f4]@4 [d3,a3,d4,f4]@3 [a3,d4,f4] ~@6 d3@2, ~@4 d3 d3@2 ~, ~@9 [a3,d4,f4]@3 [a3,d4,f4]@4", // Dm
  Q: "[c#3,a3,c#4,e4]!2 [c3,a3,c4,e4]!2", R: "[e3,g3,b3,d4]!4 [a2,e3,a3,c#4,e4]!4",
  S: "[b2,f#3,b3,d#4,f#4]@4 [b2,f#3,b3,d#4,f#4]@3 ~@7 [b2,f#3]@2, ~@7 [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4]@4, ~@4 [b2,f#3] [b2,f#3]@2 ~", // B B5 B B5
  T: "[b2,f#3,g#3,c#4,f4]@4 [b2,f#3,g#3,c#4,f4]@3 ~@5 [g#3,c#4,f4]@2 [b2,f#3] ~, ~@7 [g#3,c#4,f4]@2 [g#3,c#4,f4]@3 ~@4, ~@4 [b2,f#3] [b2,f#3]@2 ~", // C#7 C# B5 C# B5
  U: "[b2,f#3,g#3,b3,e4]@4 [b2,f#3,g#3,b3,e4]@3 ~@7 [b2,f#3]@2, ~@7 [b3,e4]@2 [g3,b3,e4]@3 [g3,b3,e4]@4, ~@4 [b2,f#3] [b2,f#3]@2 ~", // E B5 E5 Em B5
  V: "[f#3,b3,d#4]@4 ~@3 f#3 [f#3,c#4]@4 ~@2 a#2@2, b2@3 b2 a#2@3 ~, ~@4 [f#3,b3,d#4]@4 f#4 ~@3 [f#3,c#4,f#4]@4", // B F#5 B F#5
  W: "[g#3,c#4,f4]@4 [g#3,c#4,f4]@3 [g#3,c#4,f4]@2 [g#3,c#4,f4]@3 [g#3,c#4,f4]@4, g#2", // C#
  X: "[g2,d3,g3,b3,d4]@4 [g2,d3,g3,b3,d4]@4 [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3]@2, ~@11 [a3,c#4,e4]@2 [a3,c#4,e4]@3, ~@6 [a2,e3] ~", // G A A5 A A5
  Y: "[b2,f#3,b3,d#4,f#4]@4 [b2,f#3,b3,d#4,f#4]@4 [g#2,d#3,g#3,b3,d#4]@3 ~@3 [g#2,d#3]@2, ~@11 [g#3,b3,d#4]@2 [g#3,b3,d#4]@3, ~@6 [g#2,d#3] ~", // B G#m G#5 G#m G#5
  Z: "[g2,d3,g3,b3,d4,f#4]@4 [g2,d3,g3,b3,d4,f#4]@3 ~ [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3]@2, ~@11 [a3,c#4,e4]@2 [a3,c#4,e4]@3, ~@6 [a2,e3] ~", // Gmaj7 A A5 A A5
})).s("gm_acoustic_guitar_steel").gain(0.19)

// other · distortion guitar
const distortion_guitar = note("<~@44 [a4@7 a3 b3@2 c4 b3@2 a3@2 ~]!2 [b3 c#4 e4 a4 b4 c5 e5 a5] [b5 ~@15] ~@14>")
  .s("gm_distortion_guitar").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@11 A B C ~@6 D ~@5 E@2 ~@2 A B C ~@5 F@2 G H I J ~@11 K@2 L ~@4>".pickRestart({
  A: "~ c4@3, ~ g3@7", B: "~ c4@3, ~ a3@7", C: "~@2 c4@3 ~ d4@2, ~ a3@4 b3@3", D: "~@4 a4@4 f#4@7 ~",
  E: "[~@9 g3 a3 ~ g4@6 ~@14]/2",
  F: "[~@5 a3@2 ~@2 b3@2 ~@2 b3@3 ~@5 c#4@2 ~@7 c#4@2, f3@8 ~@8 a3@7 a3@9, ~@2 a3@3 ~@2 g3@10 ~@2 e4@9 e4@4, ~@3 e4@6 ~@2 e4@7 c#4@3 ~@4 c#4@5 ~@2]/2",
  G: "~@5 a3@2 ~@6 b3@3, f3@8 ~@3 e4@5, ~@2 a3@3 ~@2 g3@9, ~@3 e4@6 b3@4 ~@3", H: "~@3 c4@5, d3@15 ~, ~ f3@7, ~ a3@3",
  I: "~@3 d4@5, e3@15 ~, ~ g3@7, ~ b3@3", J: "~@4 d4@4 ~@4 e4@3 ~, f#3@7 ~@3 b3@5 ~, ~@2 a3@6 g#3@7 ~",
  K: "[~@5 b3@2 ~@2 c#4@2 ~@2 c#4@3 ~@5 d#4@2 ~@7 d#4@2, g3@8 ~@8 b3@7 b3@9, ~@2 b3@3 ~@2 a3@10 ~@2 f#4@9 f#4@4, ~@3 f#4@6 ~@2 f#4@7 d#4@3 ~@4 d#4@5 ~@2]/2",
  L: "~@5 b3@2 ~@6 c#4@3, g3@8 ~@3 f#4@5, ~@2 b3@3 ~@2 a3@9, ~@3 f#4@6 c#4@4 ~@3",
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@3 A B C B C B C B C@11 D B C B C B C E C@10 F C@2 G C@3 ~ C G C@7 F ~@4>".pickRestart({
  A: "~@9 x ~@3 x ~@2", B: "x!2", C: "x ~@4 x ~ x", D: "x ~@8 x ~@3 x ~@2", E: "x ~@7 x ~@2 x ~@4",
  F: "x ~@9 x!2 ~@2 x ~", G: "x ~@3 x ~ x ~ x ~ x ~@2 x ~@2",
})).gain(0.72)

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

// drums · hihat
const hihat = s("hh").struct("<~@3 A B@18 C B@10 ~@8 B@3 ~@4 B@2 ~@12>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@22 A ~@9 B ~@10 C ~@2 C ~@2 C ~@12>".pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "~@15 x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A ~@6 B ~@2 C ~@7 B ~@5 B ~@10 B ~@4>".pickRestart({
  A: "~@9 x ~@6", B: "~@7 x", C: "~@7 x ~@5 x ~@2",
})).gain(0.64)

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

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

// drums · ride
const ride = s("rd").struct("<~@58 [x!4] [~ x ~@2] ~@2>").gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<[x!16]!22 [x!7 ~@9] [x!16]!18 ~@3 [x!16]!3 ~@3 [x!16]!8 ~@4>").gain(0.24)

stack(
  bass, string_ensemble_1, synth_strings_1, percussive_organ, overdriven_guitar, epiano1, piano, acoustic_guitar_steel,
  distortion_guitar, electric_guitar_clean, kick, snare, hihat, low_tom, mid_tom, open_hat, crash, ride, tambourine
)

More by Masini