Strudelify

Piu bella cosa

Eros Ramazzotti

KeyA♭ majorTempo112 bpm
0:00/0:00
// Piu bella cosa — Eros Ramazzotti
// 112 bpm, 4/4, 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: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · piano
const piano = note(`<
  ~@5 A B C D A B E F A B G H ~@8 A B I J A B E K ~@15 L M ~@6 N ~@2 A B E O A B E K P Q R ~ P Q S ~@8 L M ~@6 N ~@7 L M
  ~@6 T ~@15
>`.pickRestart({
  A: "[ab2,db3,f3]", B: "[bb2,eb3,gb3]", C: "f3@8 f3@3 gb3@3 ab3@2, [ab2,db3]",
  D: "db4@3 c4@3 ab3@9 ~, [bb2,eb3,gb3]@7 ~", E: "[ab2,db3], f3 ~", F: "[bb2,eb3,gb3]@7 ~",
  G: "f3@8 f5@3 gb5@3 ab5@2, [ab2,db3]", H: "db6 ab5 bb5@2, [bb2,eb3,gb3]@7 ~", I: "f3@8 f4@3 gb4@3 ab4@2, [ab2,db3]",
  J: "db5@3 c5@3 ab4@2 bb4@8, [bb2,eb3,gb3]@7 ~", K: "[bb2,eb3,gb3]@7 ~, [ab4,db5]",
  L: "[f3,a3,c4,f4]@5 ~ [a3,c4,f4]@2, ~@5 f3@3", M: "[g3,bb3,eb4]@15 ~",
  N: "[ab3,c4,eb4]@8 ~@2 [ab3,c4,eb4] ~ [ab3,c4,eb4]@4", O: "[db4,gb4]", P: "[eb3,ab3]@7 ~", Q: "[f3,bb3]",
  R: "[ab3,c4]", S: "[ab3,c4] ~", T: "[ab3,c4,eb4] ~@15",
})).s("gm_piano").gain(0.22).pan(0.6)

// bass · fretless bass
const bass = note(`<
  ~@4 A B C B D B C B E B C B F G H I J G H K L B C B M B C B N G H O P G H K Q C R G S T R G U H V O W G R X H Y Z B C
  B AA B C B N G H O P G H K AB C R G AC T R G U H V O W G R X H C R G AD T R G U H V O W G R X AE AF R G AG T R G AH AI
  R G AJ@4
>`.pickRestart({
  A: "~@11 ab1 db1@4, ~@12 eb2 ~@3", B: "db1 ~ db1 ~ db1 ~ db1 ~ db1 ~ db1 ~ db1 ~ db1 ~",
  C: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~", D: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ bb1@2 eb1 ~",
  E: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1@2 eb1 ~", F: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ bb1 ~ f2@4, ~@12 eb2 ~@3",
  G: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", H: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  I: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ gb1@2, ~@14 c2 ~", J: "gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1@2 g1 ~",
  K: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ gb1 ~ gb1 ~ gb1 ~ gb1@2", L: "f1 ~ f1 ~ f1 ~ f1@2 f2@2 ab2@2 f2 eb2 db2@2",
  M: "eb1 ~ eb1 ~ eb1 ~ eb1 f1 gb1@2 db2@5 ~", N: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1@2 f1@2 gb1@2 bb1@2",
  O: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", P: "gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1@2 db2 ~ db2@3 ~",
  Q: "f1 ~ f1 ~ f1 ~ f1@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~", R: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  S: "f1 ~ f1 ~ f1 ~ f1!2 bb1@2 bb1@2 f2@2 bb1 ~", T: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1@2 f1@2 gb1@2",
  U: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 a2@2 a1@2", V: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  W: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ ab2@2 ab2@4", X: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ab1", Y: "ab1",
  Z: "~@2 ab2@3 ab1@3 ab1 ab2 ab1@2 ab2@4", AA: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ db1@2 eb1@2",
  AB: "f1 ~ f1 ~ f1 ~ f1@2 eb2@4 eb1@2 eb2@2", AC: "f1 ~ f1 ~ f1 ~ f1!2 bb2@2 ab2@2 bb2@2 bb1@2",
  AD: "f1 ~ f1 ~ f1 ~ f1!2 bb1 ~ bb1 ~ bb1@2 bb1 ~", AE: "bb1 ~@15", AF: "~@6 g2@2 g2@3 ab2@3 bb2@2",
  AG: "f1 ~ f1 ~ f1 ~ f1 ab1 bb1 ~ bb1 ~ bb1@2 bb1 ~",
  AH: "f1 ~ f1 ~ f2 c2 bb2@2 bb2@2 ab2@2 bb2@2 eb1@2, ~@6 f2 ~@7 bb1 ~",
  AI: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1!2 f1@2 gb1@2", AJ: "[f1@9 bb1@3 bb1 eb1@5 ~ eb1@39 ~@6, ~@13 bb2 ~@50]/4",
})).s("gm_fretless_bass").gain(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A@6 ~@16 B@8 C D C E C D F G H@2 I@2 H@2 J@2 ~@10 K@4 L M N M C D C E C D F G H@2 I@2 H@2 J@2 ~@8 H@2 I@2 H@2 J@2
  ~@8 O P@3 Q@2 R@2 Q@2 S@5
>`.pickRestart({
  A: "[~@7 ab4@89]/6", B: "[[db4,f4] gb4 [db4,f4] gb4 f4 gb4 f4 gb4, ab4]/8", C: "ab3", D: "bb3", E: "gb3",
  F: "ab3 gb3", G: "f3 eb3", H: "[g4 f4, bb3]/2", I: "[c4,eb4]/2", J: "[eb4 f4, c4]/2",
  K: "[[db4,f4] gb4 [db4,f4] gb4, ab4, db5@40 ~@8 db6@3 ~@13]/4", L: "ab4", M: "gb4", N: "f4",
  O: "~@6 g3@2 g5@2 d5 [eb5,f5] g5 [ab5,bb5] c6 [d6,eb6], ~@6 g5 ~ g3@4 ~@4, ~@5 ab3@2 bb3", // Ebsus2 Absus2 Ebmaj7
  P: "[[f4,f6] eb4@2, bb3, ~ eb6 ~]/3", Q: "[g4 f4, bb5]/2", R: "[eb4,c5]/2", S: "[[eb4,c5]@35 [g4,bb5]@39 ~@6]/5",
})).s("gm_string_ensemble_2").gain(0.15)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@26 A ~ A B A B C ~@27 A ~ A D A B C ~@55>".pickRestart({
  A: "eb4", B: "db4", C: "eb4@7 ~", D: "f4",
})).s("gm_string_ensemble_2").gain(0.11)

// chords · rock organ
const rock_organ = note(`<
  ~@41 A B C@2 A D E@2 F@4 ~@14 G@4 ~@4 A B C@2 A D E@2 F@4 ~@4 A B C@2 A D E@2 F@4 ~@8 A B C@2 A B H@5
>`.pickRestart({
  A: "[eb5,g5]", B: "[bb4,f5]", C: "[[c5,eb5]@31 ~]/2", D: "[g5,bb5]", E: "[ab5 a5, c6]/2",
  F: "[bb5@15 ~ b5@15 ~ c6@15 ~ db6@13 ~@3, eb5@29 ~@3]/4", G: "[eb6,ab6]/4",
  H: "[c5@24 ~@11 bb4@39 ~@6, eb5@37 ~@3]/5",
})).s("gm_rock_organ").gain(0.12)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@17 A B C ~ A B C ~@9 A B C ~ A B C ~@27 A B C ~ A B C ~@48>".pickRestart({
  A: "~@8 ab3@3 bb3@3 c4@2", B: "db4@15 ~", C: "eb4@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.13)

// other · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note("<~@18 A@2 ~@2 A@2 ~@10 A@2 ~@2 A@2 ~@28 A@2 ~@2 A@2 ~@48>".pickRestart({
  A: "[~@15 ab3@16 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.07)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@5 A B A C ~@8 D E F G D E H ~@9 D E F G I E H J@2 K L@2 M K L@2 N@4 O@4 ~@10 D E F G I E H J@2 K L@2 M K L@2 N@4 O@4
  P K L@2 M K L@2 N@4 Q@4 ~ K L@2 P K L@2 P K F R@4
>`.pickRestart({
  A: "~ ab3@15, [db3,f3]", B: "~ bb3@15, [eb3,gb3]", C: "~ bb3@14 ~, [eb3,gb3]@15 ~", D: "~ c4@15, [eb3,ab3]",
  E: "[f3,bb3,db4]@15 ~", F: "[ab3,c4,eb4]", G: "[gb3,bb3,db4]@7 ~", H: "[ab3,c4,eb4]@7 ~", I: "[eb3,ab3,c4]@15 ~",
  J: "[~ [bb3,g4], ~@15 eb3@16 ~]/2", K: "[g3,bb3,f4]", L: "[[ab3,c4,eb4]@13 ~@3]/2", M: "[eb3,bb3,g4]",
  N: "[~@2 g4 ~@11 b3@2 ~@6 c4@3 ~@5 db4@2, eb4@5 eb4@5 eb4@3 eb4@4 ~ eb4@3 eb4@4 ~ eb4@3 eb4@3, ~ bb3@5 bb3@4 ~ g4@6 ~@2 g4@6 ~@2 g4@5, ~@3 g4@6 b3@4 ~@4 c4@4 ~@4 db4@4 ~@3]/4",
  O: "[~@2 eb4 eb4@2 ~ eb4@3 ~@5 eb4@3 ~@5 eb4@3 ~@7, ~ ab3@4 ab3@3 ~ g3@7 ~ f3@7 ~@8, ~@10 bb3@3 bb3@3 ~@2 ab3@3 ab3@3 ~@8, ~@11 eb4@3 ~@5 eb4@3 ~@10]/4",
  P: "[bb3,g4]", // Eb
  Q: "[~@2 eb4 eb4@2 ~ eb4@3 ~@5 eb4@3 ~@5 eb4@3 ~@7, ~@2 ab3@5 ~@3 ab3@6 ~@2 g3@14 ~@2 f3@14 ~@16, ~@10 bb3@3 bb3@3 ~@2 ab3@3 ab3@3 ~@8, ~@11 eb4@3 ~@5 eb4@3 ~@10]/4",
  R: "[[ab3,c4,eb4]@9 [ab3,c4,eb4]@9 ~@2 [bb3,eb4]@38 ~@6, ~@18 eb3@21 ~@25, ~@19 g3@38 ~@7]/4", // Ab Eb5
})).s("gm_electric_guitar_clean").gain(0.27)

// other · pad new age
const pad_new_age = note("<~@8 A ~@23 B ~@28 C D ~@3 D ~@4 E F ~@49>".pickRestart({
  A: "[f5,db6]@3 [eb5,c6]@2 ~ [c5,ab5]@2 [db5,bb5]@8", B: "db7 ab6 bb6@2", C: "~@8 f5@3 gb5@3 ab5@2",
  D: "db6@3 c6@3 ab5@2 bb5@8", E: "~@8 ab6@3 bb6@3 c7@2", F: "db7@3 ~",
})).s("gm_pad_new_age").gain(0.32).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@18 A@2 B@2 C D@2 ~@9 E@2 F@2 C D@2 ~@3 G@2 ~@22 E@2 F@2 C D@2 ~@3 G@2 ~@11 H@8 ~@9 I@7 J@4 ~@3
>`.pickRestart({
  A: "[~@6 ab4@21 ~@5, ~@2 db4@11 ~@3]/2", B: "[~@2 db4@2 ~@2 db4@3 ~@3 ab4@8 ~@12, ~@2 ab4@3 ~@11]/2",
  C: "~@4 ab4@2 ~@4 db4@5 ~, ~@6 ab4@9 ~",
  D: "[~@5 eb4 ~ eb4 ~@6 ab4@2, ab3@6 gb3@10 f3@9 ~@7, ~@2 eb4@7 ~@9 eb4@4 ~@2 eb3@8, ~@4 ab4@7 ~ ab4@7 ~ ab4@6 eb4@4 ~@2]/2",
  E: "[~@6 ab4@21 ~@3 gb3@2, ~@2 db4@11 ~@3]/2", F: "[~@2 gb3@4 ~@2 db4@3 ~ db4@13 ~@7, db4@3 ~@13]/2",
  G: "[~@4 ab3@7 ~@3 eb3 ~@17, ~@3 ab3@2 ~@3]/2",
  H: "[~@4 eb4@2 ~@5 bb3 ~@13 bb3 ~ bb3 ~@3 eb4@2 ~@10 bb3 ~@6 f4 ~@8 f4 ~@3 f4, eb4@3 ~@4 f4@4 ~ f4@3 eb4@5 eb4@2 ~ eb4@4 ~ eb4@2 ~@6 eb4@2 ~ f4@4 ~ f4@3 eb4@5 eb4@2 ~ f4@4 ~ f4@2 ~@2, ~ bb3@3 ~@5 bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@3 ~@5 bb3@3 ~ bb3@3 ~ bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@3 ~ a3@4 a3@3, ~@2 bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@4 bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@4 c4@3 ~ c4@2]/8",
  I: "[~@3 bb3 ~@16 eb4@2 ~ eb4 eb4 ~@3 eb4@2 ~@5 bb3 ~@16 eb4@2 ~ eb4, ~ bb3@2 ~ f4@3 eb4@5 eb4@2 ~ eb4@4 ~@12 f4@4 ~ f4@3 eb4@5 eb4@2 ~ eb4@4 ~@5, ~@2 bb4@3 bb3@2 ~@6 bb3@3 ~@9 bb3@3 ~@5 bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@3 ~@8, ~@6 bb4@3 ~ bb4@3 ~ bb4@4 bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@4 bb4@3 ~ bb4@2]/7",
  J: "[eb4 ~@3 eb4@2 ~@5 bb3 ~@11 eb4@4 ~@5, ~ bb3@3 ~@3 f4@4 ~ f4@3 eb4@5 eb4@2 ~@10, ~@2 bb4@3 ~ bb4@3 bb3@2 ~@2 bb3@2 ~@6 bb3@3 ~@8, ~@10 bb4@3 ~ bb4@3 ~ bb4@3 ~ bb4@4 ~@6]/4",
})).s("gm_electric_guitar_clean").gain(0.37)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_3 = note(`<
  ~@20 A@2 ~@2 B ~@11 C@2 ~@2 B ~@3 D ~@25 C@2 ~@2 B ~@3 E ~@12 F ~ G ~@3 G ~@11 H I F ~ G I F ~ H ~@4
>`.pickRestart({
  A: "[~@10 db4@3 ~ db4@6 ~@12]/2", B: "~@6 eb4@3 ~@5 eb4@2", C: "[~@6 gb3 ~@3 gb3@2 ~@2 gb3@8 ~@10]/2",
  D: "~@2 eb3@3 ~ eb3@3 ~ eb3@2 ~@4", E: "~@2 eb3@2 ~@2 eb3@3 ~ eb3@2 ~@4", F: "~@5 bb3@2 ~", G: "~@3 bb3 ~@4",
  H: "~ bb3@2 bb3 ~@4", I: "~ bb3 ~ bb3 ~ bb3@3",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B C B D ~@19 E F@2 ~@22 G H I J K L M@2 ~@2 F@2 ~@22 G H I N K L O G ~@8 G H I N K L O P ~@15
>`.pickRestart({
  A: "~@14 [db3,ab3]!2", B: "[db3,ab3]@13 ~ [eb3,bb3]!2", C: "[eb3,bb3]@13 ~ [db3,ab3]!2",
  D: "[eb3,bb3]@14 [db3,ab3]!2", E: "~@14 [db2,ab2]!2", F: "[[db2,ab2]@29 ~@3]/2", G: "bb2", H: "b2", I: "c3",
  J: "db3@11 ~ [eb3,ab3]@2 [db3,d3] [bb2,b2,c3]", K: "[ab2,eb3], a2 ~@15", L: "[g2,d3]",
  M: "[f2@8 bb2@5 ~@3, c3@13 ~@3]/2", N: "db3@10 ~@2 [eb3,ab3]@2 [db3,d3] [bb2,b2,c3]", O: "[f2,c3]", P: "bb2 ~@15",
})).s("gm_overdriven_guitar").gain(0.16)

// chords · acoustic guitar steel
const acoustic_guitar_steel_3 = note("<A B C B D E F G H E ~@14 H E ~@2 H E ~@27 I@2 E ~@62>".pickRestart({
  A: "~@14 [db3,f3,ab3,ab4]!2", B: "[db3,f3,ab3,ab4]@12 ~@2 [bb2,eb3,bb3,ab4]!2",
  C: "[bb2,eb3,bb3,ab4]@13 ~ [db3,f3,ab3,ab4]!2", D: "[bb2,eb3,bb3,ab4]@14 [db3,f3,ab3,db4]!2",
  E: "[db3,f3,ab3,db4]@7 ~", F: "[bb2,eb3,bb3,eb4]@14 [db3,f3,ab3,db4]!2", G: "[db3,f3]@7 ~",
  H: "~@14 [db3,f3,ab3,db4]!2", // Db
  I: "[[eb3,ab3,c4]@6 [f3,ab3,db5]@4 [f3,ab3,db5] ~ [eb3,ab3,c4]@12 ~@6 [db3,f3,ab3,db4]!2]/2", // Ab Db Ab Db
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel_4 = note(`<
  ~@5 A B A B C D C D C D C D E F E F E F G H C D C D C D C D E F E F E F G H I J E@2 I J E K I L M N O P E Q ~@2 C D C
  D C D C D E F E F E F G H I J E@2 I J E K I L M N O P E Q I J E@2 I J E K I L M N O P E R ~ J E@2 I J E@2 I J E S T@3
>`.pickRestart({
  A: "[ab3,db4,ab4]@2 [ab3,db4,ab4]@2 [ab3,db4,ab4]!2 [ab3,db4,ab4]@2", // Db5
  B: "[bb3,db4,ab4]@2 [bb3,db4,ab4]@2 [bb3,db4,ab4]!2 [bb3,db4,ab4]@2", // Bbm7
  C: "[db3,f3,ab3,db4]@2 [db3,f3,ab3,db4]@3 [db3,f3,ab3,db4]!3", // Db
  D: "[eb3,gb3,bb3,db4]@2 [eb3,gb3,bb3,db4]@3 [eb3,gb3,bb3,db4]!3", // Ebm7
  E: "[ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@3 [ab3,c4,eb4,ab4]!3", F: "[bb3,db4,ab4]@2 [bb3,db4,ab4]@3 [bb3,db4,ab4]!3",
  G: "[ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4] [bb3,db4,ab4]@2 [bb3,db4,eb4,ab4]!3", // Ab Bbm7
  H: "[ab3,db4,f4,ab4]@4 [ab3,db4,f4,ab4]@3 ~ [ab3,c4,eb4,ab4]@3 ~ [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2", // Db Ab
  I: "[eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@3 [eb3,g3,bb3,eb4]!3", // Eb
  J: "[g3,bb3,d4,f4]@2 [g3,bb3,d4,f4]@3 [g3,bb3,d4,f4]!3", K: "[a3,c4,eb4,a4]@2 [a3,c4,eb4,a4]@3 [a3,c4,eb4,a4]!3",
  L: "[eb3,g3,b3,eb4]@2 [eb3,g3,b3,eb4]@3 [eb3,g3,b3,eb4]!3", // Ebaug
  M: "[eb3,g3,c4,eb4]@2 [eb3,g3,c4,eb4]@3 [eb3,g3,c4,eb4]!3", // Cm
  N: "[eb3,g3,bb3,db4]@2 [eb3,g3,bb3,db4]@3 [eb3,g3,bb3,db4]!3", // Eb7
  O: "[ab3,c4,eb4]@2 [ab3,c4,eb4]@3 [ab3,c4,eb4]!3, ~@3 ab4", // Ab
  P: "[bb3,c4,eb4]@2 [bb3,c4,eb4]@3 [bb3,c4,eb4] [bb3,eb4] [bb3,eb4,c5], ~@3 c4", // Cm7 Eb5 Cm7
  Q: "[ab3,c4,eb4]@2 [ab3,c4,eb4]@3 [ab3,c4,eb4]!3", R: "[ab3,c4] ~@3, eb4 ~@15",
  S: "[ab3,c4,eb4,ab4]@4 [ab3,c4,eb4,ab4]@4 ~ [ab3,c4,eb4,ab4]@2 ~@5", // Ab
  T: "[~@3 [g3,bb3,eb4]@38 ~@7, ~@3 eb3@29 ~@16]/3", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 A B@35 C B@17 D B@15 C B@30 E ~@2 B@10 F G ~@2>".pickRestart({
  A: "~@10 x ~@3 x!2", B: "x!2", C: "x ~@3 x!2 ~@2", D: "~@2 x ~@2 x ~@3 x ~@6", E: "x ~@7 x ~@5 x!2",
  F: "x ~@8 x ~@2 x!2 ~@2", G: "~@3 x ~@12",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@4 A B@11 C B@23 D B@17 E B@15 D B@31 F G B@10 H ~@3>".pickRestart({
  A: "~@8 x!2 ~@2 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@4 x ~@3 x!2 ~@2 x ~ x!2", E: "~@3 x", F: "x",
  G: "~@3 x!2 ~@2 x", H: "~@2 x ~@4 x",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@8 [~@3 x] ~@15 [~@3 x] ~@82 [~@10 x ~ x!2 ~ x] ~@14>").gain(0.4)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A B ~@2 A@2 ~@3 A ~@3 A ~ A ~@5 A ~ C ~ A ~@3 A ~ A ~@5 A ~ A ~@3 A ~@4 A ~@2 A D E ~ A ~ C ~ A ~@3 A ~ A ~@5 A ~
// … 44 more lines

More by Eros Ramazzotti