Strudelify

Girasole

Giorgia

KeyA majorTempo82 bpm
0:00/0:00
// Girasole — Giorgia
// 82 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(82/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(`<
  ~@18 A@3 B C D E F G H@3 ~@12 I@3 B C D E F G J@5 K L M N@2 O P Q R@2 O P Q R@2 O P Q R@2 O P Q S@2
>`.pickRestart({
  A: "[~@8 d2@7 d1@2 d1 d1@3 d1 d1@2 a1@7 g1@2 ~ g1@11 g1 g1@2]/3", B: "d2@7 d1@2 d1 d1@3 d1 d1@2", C: "a1 e1",
  D: "f#1 g1", E: "a1@7 b1@2 ~ b1@4 b1@2", F: "c#2@6 c#2 d2 e2@4 e1@4", G: "f#1@7 g1@2 ~ g1@4 g1@2",
  H: "[a1@6 c#2 d2 e2@32 ~@8]/3", I: "[~@8 d2@7 d1@2 d1 d1@3 d1 d1@2 a1@7 g1@3 g1@11 g1 g1@2]/3",
  J: "[a1@6 c#2 d2 e2@14 d2 b1 g1@6 g1 a1@9 e2@14 d2 b1 g1@6 g1 a1@3 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2]/5",
  K: "b1@7 c#2@2 ~ c#2@4 c#2@2", L: "d#2@6 d#2 e2 f#2@4 f#1@4", M: "g#1@7 a1@2 ~ a1@4 a1@2",
  N: "[b1@6 d#2 e2 e1@4 e2 ~@2 e1@3 e1@2 e2@2 g#1@2 b1@6 ~ a1]/2", O: "~@2 a1@5 a1@3 c#2@2 e2@2 c#2@2",
  P: "e1@4 e2 ~@2 e1@3 e1@2 e1@2 a1@2", Q: "b1@6 ~ f#1@2 ~ f#1@6",
  R: "[f#1@3 f#1 c#2 e2 f#2 c#2 e1@4 e2 ~@2 e1@3 e1@2 e2@2 g#1@2 b1@6 ~ a1]/2",
  S: "[f#1@3 f#1 c#2 e2 f#2 c#2 e1@16 ~@8]/2",
})).s("gm_fretless_bass").gain(0.62)

// chords · rock organ
const rock_organ = note("<~@48 A@5 B@2 C D@5 C E F@3 C E F@3 C E F@3 C E G@2 ~>".pickRestart({
  A: "[a5@54 [c4,d4,e4,f4,g4] [a4,b4,c5,d5,e5] [f5,g5,a5] ~@15 [d5,g5,b5]@8, g#5 ~@55 b5@16 ~@8]/5", // C Am F G
  B: "[[c#5,e5,a5]@4 ~@3 b5@5 [d5,g5,b5]@4, ~@8 [b4,e5,g#5]@16 f#5 ~@7]/2", C: "[c#5,e5,a5]",
  D: "[e5@2 f#5@2 e5@2 f#5 [e5,g#5,b5]@2 [d5,f#5,b5], b5@7 ~@3, d#5 ~@79]/5", E: "[e5,g#5,b5]",
  F: "[[d5,f#5,b5] [c#5,f#5,a5]@2 [e5,g#5,b5]@2 [d5,f#5,b5]]/3", G: "[[d5,f#5,b5] [c#5,f#5,a5]@2 ~]/2",
})).s("gm_rock_organ").gain(0.48).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@37 A@4 ~@10 B@5 ~@25>".pickRestart({
  A: "[~@15 a3 ~@6 g4@4 ~@6, ~@4 c4@4 b3@4 a3@3 ~ g3@4 f3@4 ~@8, ~@5 d4@2 d4@2 d4@4 d4@3 ~ c4@4 d4@4 ~@7, ~@3 g4@2 g4@2 g4@2 g4@2 ~@5]/4",
  B: "[~@9 e4@2 ~ d4@2 ~ c#4@2 ~@3 e3@4 a3 b3 d4 e4@2 b3 d4 ~@4 b3@3 a3@2 ~ e4@2 ~ d4@2 ~ c#4@2 ~@3 e3@4 a3 b3 d4 e4@2 b3 d4 ~@4 b3@3 a3@10, ~@8 e3@3 e3@3 e3@3 e3@3 ~@11 g3@7 ~@2 e3@3 e3@3 e3@3 e3@3 ~@11 g3@7 ~@10, ~@9 b3@3 ~@13 b3@3 ~@12]/5",
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.3)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@52 [~@12 a3 ~@3] [~ a3 ~@6] [~@12 a3 ~@3] [~ a3 ~@6] ~@25>")
  .s("gm_electric_guitar_clean").gain(0.32).pan(0.3)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@4 A B A C ~@17 D ~ E@3 ~ F G ~@16 D ~@7 H ~@2 I ~@2 J ~ I ~@2 J ~ I ~@2 J ~ I ~@2 J ~@2
>`.pickRestart({
  A: "~@10 f2!2 a2 c3 d3 a2", B: "c3@2 b3 ~@5", C: "c3@4 [g3,e4,g4]@2 ~@6 e4 ~ c4@2", D: "~ g3",
  E: "[~@8 g3@27 ~ a2 c3 d3 a2 c3@4 b3@2 ~@2]/3", F: "~@2 f2!2 a2 c3 d3 a2 c3@4 [g3,e4,g4]@2 ~@2",
  G: "~@4 e4 ~ c4@2 ~@8", H: "~ a3", I: "~ a4", J: "a4 ~",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B A B A B A B C D C E@2 F G C H@3 I J K L M N M O@5 P@6 F G C H@3 I J K L M N M Q R S R T U V U W X T Y Z S X T Y
  Z S X T Y Z S X T Y Z AA@2
>`.pickRestart({
  A: "~@3 [g3,c4,e4,g4] ~ [c4,g4] [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!3 ~, ~@3 d3@5", // C C5 G
  B: "[a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] [a3,c4,e4] [c3,f3,a3,c4]@10", // Am F
  C: "[c3,e3,g3,c4,e4]@3 [g3,c4,e4,g4] ~ [c4,g4] [g3,b3]@2 [g3,b3]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!3 ~, ~@3 d3@5, ~@3 [d4,g4]@2 ~@3", // C C5 G G5
  D: "[a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] ~ [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [f3,c4,f4] ~, ~@3 c3@5", // Am F F5
  E: "[[a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] ~ [f3,a3,c4,f4]@6 [a3,c4,f4]@3 [a3,c4,f4] [a3,c4,f4] [f3,a3,c4] [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [f3,c4,f4] ~ [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@3 [g3,b3,d4,g4], ~@3 c3@9 ~@4, ~@12 f3@5 ~@15]/2", // Am F F5 C G
  F: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [e3,a3,c4,e4]@4 [e3,a3,c4,e4]@3 [g3,b3,d4]", // G Am G
  G: "[g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [f3,a3,c4,f4]@3 [a3,c4,f4] [f3,a3,c4,f4]!3 ~", // G F
  H: "[[a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] ~ [c3,f3,a3,c4,g4]@18 [d3,f#3,a3]@4 [d3,f#3,a3]@2 [d3,f#3,a3,d4]@6 [d3,f#3,a3,d4]@4 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@4, ~@4 d4 ~@3]/3", // Am F D C
  I: "[d3,g3]@2 [d3,g3] d3@2 d3 [d3,g3,b3,d4]@2, [b3,d4]@3 [g3,b3,d4]@3 ~@2", // G5 G Bm G
  J: "d3@2 d3 d3@2 d3 [d3,f#3,a3,d4]@2, [f#3,a3,d4]@3 [f#3,a3,d4]@3 ~@2", K: "[e3,g3,c4,e4]!2 [e3,g3,b3,e4]!2",
  L: "[f#3,a3,c#4]!2 [g3,b3,d4]!2", M: "[a3,d4,f#4]!2 [b3,d4,g4]!2", N: "[a3,c#4,e4]!2 [b3,d4,f#4]!2",
  O: "[[a3,c#4,e4]@4 [a3,c#4,e4]@4 [e3,b3,d4,f#4]@27 ~@8 [g3,c4,e4,g4] ~ [c4,g4] [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!3 ~ [a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] [a3,c4,e4] [c3,f3,a3,c4]@10 ~@3 [g3,c4,e4,g4] ~ [c4,g4] [d3,g3,b3,d4,g4]@2, ~@23 d3@5 ~@12]/5", // A Bm C C5 G Am F C …
  P: "[[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!3 ~ [a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] [a3,c4,e4] [c3,f3,a3,c4]@10 [c3,e3,g3,c4,e4]@3 [g3,c4,e4,g4] ~ [c4,g4] [g3,b3]@2 [g3,b3]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!3 ~ [a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] ~ [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [f3,c4,f4] ~ [c3,e3,g3,c4,e4]@3 [g3,c4,e4,g4] ~ [c4,g4] [g3,b3]@2 [g3,b3]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!3 ~ [a2,e3,a3,c4,e4]@3 [a3,c4,e4] [a2,e3,a3,c4,e4] ~ [f3,a3,c4,f4]@6 [f3,a3,c4,f4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@3 [g3,b3,d4,g4], ~@15 d3@5 ~@3 c3@5 ~@3 d3@5 ~@3 c3@5 ~@4, ~@15 [d4,g4]@2 ~@14 [d4,g4]@2 ~@15]/6", // G Am F C C5 G Am F …
  Q: "[a3,c#4,e4]!2 [b3,e4,b4]!2", R: "[b3,e4,b4]!2 [g3,d4,g4]!2", S: "[a3,e4,a4]!2 [b3,e4,b4]!2", T: "[a3,e4,a4]!4",
  U: "[b3,e4,g#4]!2 [c#4,e4,a4]!2", V: "[b3,d#4,f#4]!2 [c#4,e4,g#4]!2", W: "[b3,d#4,f#4]!2 [b3,e4,b4]!2",
  X: "[b3,e4,b4]!2 [b3,f#4,b4]!2", Y: "[b3,e4,b4]!4", Z: "[b3,f#4,b4]!2 [a3,e4,a4]!2",
  AA: "[[a3,e4,a4]@4 [a3,e4,a4]@4 ~ e4@15 ~@8, ~@8 [e3,g#3,b3]@15 ~@9]/2", // A5 E
})).s("gm_acoustic_guitar_steel").gain(0.48).pan(0.4)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A ~ A ~ A ~ A ~ A B A ~ C ~ D A ~@12 E F E F E F G F ~@2 D A ~@40
>`.pickRestart({
  A: "~@5 g3 ~@9 [g3,b3,d4,g4]", B: "~@14 a3 [f3,a3,c4,f4]", C: "~@6 a3 [f3,a3,c4,f4] ~@8", D: "~@15 [f3,a3,c4,f4]",
  E: "~@13 g3 ~@2", F: "~@7 [g3,b3,d4,g4] ~@8", G: "~@6 a3 [f3,a3,c4,f4] ~@5 g3 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel_3 = note(`<
  A B A B A B A B ~@10 C D E F G H I J I K@4 L@2 ~@9 C D E F G H I J I M N O N P Q R Q S T P U V O T P U V O T P U V O T
  P U V W@2
>`.pickRestart({
  A: "~@10 f2!2 [g#2,a2] c3 d3 a2", // Amaj7
  B: "c3@3 [c3,g3,c4,e4,g4] ~ [c3,g3,c4,g4] [g3,b3,d4,g4]@6 [g3,b3,d4,g4]!2 ~@2, ~@3 [g2,d3]@5", // C C5 G G5
  C: "~@8 [a3,d4]!2 [a3,d4,f#4] [a3,d4] ~@3 [a3,d4], ~@4 d3@2 [d3,a3,d4,f#4] [d3,a3,e4], ~@8 f#4@2 ~@3 [a3,d4]@2 ~", // D5 D D5 D Dsus2 D5
  D: "~ e4 ~ d4 [d3,a3,d4,f#4]@2 ~ a3 [c4,e4]!2 [c4,e4,g4] [c4,e4] ~@3 [c4,e4], [d3,a3,d4,e4]!2 ~ [d3,a3,d4,f#4] a3@2 [a3,c4,e4,g4] [a3,c4,g4], ~@8 g4@2 ~@3 [c4,e4]@2 ~", // D C Dsus2 D Am7 C
  E: "[b3,d4]!2 [b3,d4,g4] [b3,d4] ~@3 [b3,d4] ~ g4 ~ d4 [g3,b3,d4,g4]@2 ~ b3, g3@2 [g3,b3,d4,g4] [g3,b3,g4] [g3,b3,d4,g4]!2 ~ [g3,b3,d4,g4], g4@2 ~@3 [b3,d4]@2 ~@9", // Bm G Bm G Bm
  F: "[a3,d4]!2 [a3,d4,f#4] [a3,d4] ~@3 [a3,d4] ~ e4 ~ d4 [d3,a3,d4,f#4]@2 ~ a3, d3@2 [d3,a3,d4,f#4] [d3,a3,e4] [d3,a3,d4,e4]!2 ~ [d3,a3,d4,f#4], f#4@2 ~@3 [a3,d4]@2 ~@9", // D5 D D5 D Dsus2 D D5
  G: "[c4,e4]!2 [c4,e4,g4] [c4,e4] ~@3 [c4,e4] [b3,e4]!2 [b3,e4,g4] [b3,e4] ~@3 [b3,e4], a3@2 [a3,c4,e4,g4] [a3,c4,g4] g3@2 [g3,b3,e4,g4] [g3,b3,g4], g4@2 ~@3 [c4,e4]@2 ~ g4@2 ~@3 [b3,e4]@2 ~", // C E5 Em E5 Am7 Em G C …
  H: "~ f#4 ~ c#4 [f#3,a3,c#4,f#4]@2 ~ a3 [b3,d4]!2 [b3,d4,g4] [b3,d4] ~@3 [b3,d4], [f#3,a3,c#4,f#4]!2 ~ [f#3,a3,c#4,f#4] g3@2 [g3,b3,d4,g4] [g3,b3,g4], ~@8 g4@2 ~@3 [b3,d4]@2 ~", // F#m Bm G Bm F#m G Bm
  I: "~ f#4 ~ d4 [a3,d4,f#4,a4]@2 ~ a3 [b3,d4]!2 [b3,d4,g4] [b3,d4] ~@3 [b3,d4], [a3,d4,f#4,a4]!2 ~ [a3,d4,f#4,a4] g3@2 [g3,b3,d4,g4] [g3,b3,g4], ~@8 g4@2 ~@3 [b3,d4]@2 ~", // D Bm G Bm D G Bm
  J: "~ e4 ~ c#4 [a3,c#4,e4,a4]@2 ~ a3 [b3,d4]!2 [b3,d4,f#4] [b3,d4] ~@3 [b3,d4], [a3,c#4,e4,a4]!2 ~ [a3,c#4,e4,a4] g3@2 [g3,b3,d4,f#4] [g3,b3,f#4], ~@8 f#4@2 ~@3 [b3,d4]@2 ~", // A Bm A Gmaj7 Bm
  K: "[~ e4 ~ c#4 [a3,c#4,e4,a4]@2 ~ a3 [g3,b3,d4,f#4]@15 ~@2 f#5@11 a2 c3 d3 a2 c3@3 [c3,g3,c4,e4,g4] ~ [c3,g3,c4,g4] [g3,b3,d4,g4]@6 [g3,b3,d4,g4]!2 ~@10, [a3,c#4,e4,a4]!2 ~ [a3,c#4,e4,a4] ~@8 [g4,b4,d5]@6 ~@5 [g2,d3]@5 ~@4]/4", // A Gmaj7 C C5 G A G G5
  L: "[~@2 f2!2 [g#2,a2] c3 d3 a2 c3@3 [c3,g3,c4,e4,g4] ~ [c3,g3,c4,g4] [g3,b3,d4,g4]@6 [g3,b3,d4,g4]!2 ~@10, ~@7 [g2,d3]@5 ~@4]/2", // Amaj7 C C5 G G5
  M: "~ e4 ~ c#4 [a3,c#4,e4,a4]@2 ~ a3 ~ e4 ~ b3 [g#3,b3,e4,g#4]@2 ~ g#3, [a3,c#4,e4,a4]!2 ~ [a3,c#4,e4,a4] [g#3,b3,e4,g#4]!2 ~ [g#3,b3,e4,g#4]", // A E A E
  N: "[b3,e4]!2 [b3,e4,g#4] [b3,e4] ~@3 [b3,e4] ~ d4 ~ b3 [g3,b3,d4,g4]@2 ~ g3, g#3@2 [g#3,b3,e4,g#4] [g#3,b3,g#4] [g3,b3,d4,g4]!2 ~ [g3,b3,d4,g4], g#4@2 ~@3 [b3,e4]@2 ~@9", // E5 E E5 G E G#m G E5
  O: "[c#4,e4]!2 [c#4,e4,a4] [c#4,e4] ~@3 [c#4,e4] ~ e4 ~ b3 [g#3,b3,e4,g#4]@2 ~ g#3, a3@2 [a3,c#4,e4,a4] [a3,c#4,a4] [g#3,b3,e4,g#4]!2 ~ [g#3,b3,e4,g#4], a4@2 ~@3 [c#4,e4]@2 ~@9", // C#m A C#m E A E C#m
  P: "[c#4,e4]!2 [c#4,e4,a4] [c#4,e4] ~@3 [c#4,e4]!3 [c#4,e4,a4] [c#4,e4] ~@3 [c#4,e4], a3@2 [a3,c#4,e4,a4] [a3,c#4,a4] a3@2 [a3,c#4,e4,a4] [a3,c#4,a4], a4@2 ~@3 [c#4,e4]@2 ~ a4@2 ~@3 [c#4,e4]@2 ~", // C#m A C#m A C#m A C#m
  Q: "~ g#4 ~ e4 [b3,e4,g#4,b4]@2 ~ b3 [c#4,e4]!2 [c#4,e4,a4] [c#4,e4] ~@3 [c#4,e4], [b3,e4,g#4,b4]!2 ~ [b3,e4,g#4,b4] a3@2 [a3,c#4,e4,a4] [a3,c#4,a4], ~@8 a4@2 ~@3 [c#4,e4]@2 ~", // E C#m A C#m E A C#m
  R: "~ f#4 ~ d#4 [b3,d#4,f#4,b4]@2 ~ b3 [c#4,e4]!2 [c#4,e4,g#4] [c#4,e4] ~@3 [c#4,e4], [b3,d#4,f#4,b4]!2 ~ [b3,d#4,f#4,b4] a3@2 [a3,c#4,e4,g#4] [a3,c#4,g#4], ~@8 g#4@2 ~@3 [c#4,e4]@2 ~", // B C#m B Amaj7 C#m
  S: "~ f#4 ~ d#4 [b3,d#4,f#4,b4]@2 ~ b3 ~ e4 ~ b3 [g#3,b3,e4,g#4]@2 ~ g#3, [b3,d#4,f#4,b4]!2 ~ [b3,d#4,f#4,b4] [g#3,b3,e4,g#4]!2 ~ [g#3,b3,e4,g#4]", // B E B E
  T: "[b3,e4]!2 [b3,e4,g#4] [b3,e4] ~@3 [b3,e4] ~ f#4 ~ d4 [b3,d4,f#4,a4]@2 ~ b3, g#3@2 [g#3,b3,e4,g#4] [g#3,b3,g#4] ~@4, g#4@2 ~@3 [b3,e4]@2 ~ [b3,d4,f#4,a4]@2 [b3,d4,f#4,a4]@2 ~@2 [b3,d4,f#4,a4]@2", // E5 E E5 Bm7 E G#m E5 Bm7
  U: "~ e4 ~ b3 [g#3,b3,e4,g#4]@2 ~ g#3 [b3,e4]!2 [b3,e4,g#4] [b3,e4] ~@3 [b3,e4], [g#3,b3,e4,g#4]!2 ~ [g#3,b3,e4,g#4] g#3@2 [g#3,b3,e4,g#4] [g#3,b3,g#4], ~@8 g#4@2 ~@3 [b3,e4]@2 ~", // E E5 E E5 E G#m E5
  V: "~ f#4 ~ d4 [b3,d4,f#4,a4]@2 ~ b3 [c#4,e4]!2 [c#4,e4,a4] [c#4,e4] ~@3 [c#4,e4], [b3,d4,f#4,a4]!2 ~ [b3,d4,f#4,a4] a3@2 [a3,c#4,e4,a4] [a3,c#4,a4], ~@8 a4@2 ~@3 [c#4,e4]@2 ~", // Bm7 C#m A C#m Bm7 A C#m
  W: "[[c#4,e4]!2 [c#4,e4,a4] [c#4,e4] ~@3 [c#4,e4] [e3,b3,e4,g#4]@15 ~@9, a3@2 [a3,c#4,e4,a4] [a3,c#4,a4] ~@12, a4@2 ~@3 [c#4,e4]@2 ~@25]/2", // C#m A C#m E A C#m
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.7)

// chords · harpsichord · Dm
const harpsichord = note(`<
  ~@17
  [~@6 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3]
  [[f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] ~@9]
  ~@22
  [~@6 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3]
  [[f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] f3 [f3,a3,d4] ~@9]
  ~@38
>`).s("gm_harpsichord").gain(0.13).pan(0.7)

// other · piano
const piano = note("<~@15 A B@3 ~@4 C@5 ~@11 A B@3 ~@4 C@5 ~@3 D@6 ~@20>".pickRestart({
  A: "~@9 c5@4 e5@3", B: "[~ c5@4 g5@4 e5@4 f5@2 g5@2 a5@2 g5@2 f5@16 ~@11]/3",
  C: "[~@9 d5@12 e5 d5@9 c#5@8 b4@2 d5@10 b4 d5 e5 d5@8 e5@16 ~@2]/5",
  D: "[~@9 e5@12 f#5 e5@9 d#5@8 c#5@2 e5@10 c#5 e5 f#5 e5@9 f#5@4 e5 g#5@2 f#5 e5@16 ~@9]/6",
})).s("gm_piano").gain(0.05)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@18 A B C D@6 E ~@14 A B C D@6 B@4 E D@3 B@2 F D@2 A B F D@2 A B F D@2 A B F D@2 ~@2
>`.pickRestart({
  A: "~@15 x", B: "~ x ~@13 x", C: "~ x ~@11 x ~ x", D: "~@7 x ~ x ~@6", E: "~ x ~@14", F: "~ x ~@5 x ~ x ~@6",
})).gain(0.24)

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

// drums · low tom
const low_tom = s("lt").struct("<~@55 [~@15 x] ~@25>").gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A ~@23 A ~@4 B ~@7 B ~@25>".pickRestart({
  A: "~@3 x ~@4", B: "~@13 x!2 ~",
})).gain(0.64)

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

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

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@29 [~@3 x ~@12] ~@51>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A@12 ~ B@2 A ~ C D@8 E F G D@10 H@2 ~ B@8 I A@4 B@3 I A@2 B@2 I A@2 B@2 I A@2 B@2 I A@2 B@3 ~
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~@4 x!2 ~@10", C: "~@4 x!4", D: "x ~ x ~ x!2 ~@2 x ~ x ~ x ~ x ~", E: "x ~ x ~ x!2 ~@10",
  F: "~@2 x ~ x!2 ~@10", G: "~@2 x ~ x!2 ~@2 x ~ x ~ x ~ x ~", H: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2",
  I: "~@4 x!2 ~@6 x!2 ~@2",
// … 32 more lines

More by Giorgia