Strudelify

Tra dire e fare

Giorgia

KeyG majorTempo60 bpm
0:00/0:00
// Tra dire e fare — Giorgia
// 60 bpm, 4/4, key G 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: duplicate parts dropped: ch 15 acoustic guitar steel (copy of ch 14 acoustic guitar steel)
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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(`<
  ~@11 A B A C D E F G H I J K L ~@2 B M A B A C D E F G H I J K L I J K N O P Q R O P Q R O P Q S@2 ~
>`.pickRestart({
  A: "b1", B: "c2", C: "c2@3 d1", D: "e1@15 ~", E: "c2@3 d2", F: "e1@2 f#1 g1", G: "f1", H: "a1@3 d2", I: "g1 f#1",
  J: "e1 c2", K: "g1 b1", L: "c2@5 ~ a1@10", M: "g1@15 ~", N: "c2@8 ~ g1 c2 d2 g2 d2 c2@2", O: "a1 g#1", P: "f#1 d2",
  Q: "a1 c#2", R: "d2@5 ~ b1@10", S: "[d2@5 ~ b1@12 a1@12 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · pad warm
const pad_warm = note(`<
  ~@11 A B A C D E F B G H I H I ~@4 A B A C D E F B G H I H I H I H I J K J K J K J K J K J L@2 ~
>`.pickRestart({
  A: "[d4,g4]", B: "[c4,g4]", C: "[c4,g4]@3 [d4,f#4]", D: "[b3,e4]", E: "[g3,c4]@3 [a3,d4]",
  F: "[b3,e4]@2 [a3,d4] [b3,g4]", G: "[a3,e4]", H: "[g3,d4] [f#3,d4]", I: "[g3,c4]", J: "[a3,e4] [g#3,e4]",
  K: "[a3,d4]", L: "[[a3,d4]@9 ~@7]/2",
})).s("gm_pad_warm").gain(0.2)

// chords · percussive organ
const percussive_organ = note(`<
  ~@11 A B A C D E F G H I J K L ~@4 A B A C D E F G H I J K L I J K L M N O P M N O P M N O Q@2 ~
>`.pickRestart({
  A: "[d5,g5]", B: "[e5,g5]", C: "[e5,g5]@3 [d5,a5]", D: "[b4,g5]", E: "[c5,g5]@3 [d5,f#5]",
  F: "[e5,g5]@2 [d5,f#5] [b4,g5]", G: "[a4,d5]", H: "[c5,e5]@3 [a4,d5]", I: "[d5,g5] [d5,f#5]", J: "[c5,e5]",
  K: "[b4,g5] [b4,f#5]", L: "[a4,e5]", M: "[e5,a5] [e5,g#5]", N: "[d5,f#5]", O: "[c#5,a5] [c#5,g#5]", P: "[b4,f#5]",
  Q: "[[b4,f#5]@9 ~@7]/2", // B5
})).s("gm_percussive_organ").gain(0.24)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@15 A B ~@13 C D ~@13 E F G@2 ~@10>".pickRestart({
  A: "~ f#4!2 e4", B: "~ e4 ~@2", C: "~@4 b4@3 ~ [a4,b4]@2 g4@4 ~@2", D: "~@7 a4@7 ~@2",
  E: "~ [c4,c#4] e4 a4 b4@3 b4 [g#4,a4]@2 ~ a4 b4@2 a4 g#4", F: "a4 b4 f#4@6 ~ [f4,f#4] a4 d5 e5@3 [d5,e5]",
  G: "[c#5@4 ~@3 g#5@2 e5 e5@3 e5 [e5,f#5] e5@2 c#5 b4 ~ a4@6 ~@6]/2", // Esus2
})).s("gm_electric_guitar_jazz").gain(0.32).pan(0.4)

// other · electric guitar jazz · soft notes · G5
const electric_guitar_jazz_2 = note("<~@16 [~@2 d4 ~] ~@13 [~@7 a4 ~@8] ~@2 [~@7 [g4,d5]@7 ~@2] ~@25>")
  .s("gm_electric_guitar_jazz").gain(0.19).pan(0.4)

// other · drawbar organ
const drawbar_organ = note(`<
  ~@24
  [c5 g5 c5 b4@2 g5 b4 ~ c5 g5 c5 b4@2 g5 b4 ~]!2
  [b4 b5 b4 c5 b5 b4 c5 a5 ~@8]!2
  ~@31
>`).s("gm_drawbar_organ").gain(0.29).pan(0.2)

// other · taiko drum
const taiko_drum = note("<~@11 A@12 B A@16 B A@3 B A@3 B A@3 B A@3 B ~@2>".pickRestart({
  A: "c3 ~@6 c3!2 ~ c3 ~@5", B: "c3 ~@5 c3 ~@9",
})).s("gm_taiko_drum").gain(0.34)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@3 B C@2 D@2 E@2 F@2 G H I@2 J@3 K ~ L ~ M N@2 ~ O P@3 I@2 J@3 K ~ L ~ K ~ L Q R ~ S ~ R ~ S ~ R ~ S ~ T@2
>`.pickRestart({
  A: "[[g3,d4,g4]@12 ~@4 g3@12 ~@4 g3@11 ~@5, ~@12 g3@4 ~@12 d3@15 ~@5, ~@13 a3@2 a3@13 ~ e3@14 ~@5, ~@7 d4@7 ~ g3 ~@8, ~@31 c4@12 ~@5]/3", // G5
  B: "~@12 a2 b2 d3@2, ~@11 g2@5", C: "[d3@9 ~@7 [g2,d3,a3,d4]@16, ~@15 g4@17]/2",
  D: "[g3@12 ~@4 g3@11 ~ a2 b2 d3@2, g4@27 ~@5, d4@13 a3@2 a3@12 ~@5, ~@12 g3@4 ~@11 g2@5, ~@14 d4@13 ~@5]/2",
  E: "[d3@15 ~ [g2,d3,a3,d4]@16, ~@15 g4@17]/2", // Gsus2
  F: "[[b2,g3,b3,d4,g4]@11 ~@5 [g3,c4,d4,e4,g4]@12 ~@4, ~@15 c3@13 ~@4]/2", G: "[b2,g3,a3,b3,d4]@11 ~@5",
  H: "[c3,e3,g3,b3]@11 ~@5", I: "[[e3,g3,b3]@14 ~@2 [e3,g3,b3]@13 ~@3, ~@15 c3@13 ~@4]/2",
  J: "[[e3,g3,b3]@8 ~@8 [a3,c4,e4,g4]@13 ~@3 [a3,c4,e4]@12 ~@4, ~@15 f3@14 ~@2 g3@12 ~@5]/3", // Em Am7 Am
  K: "g2@3 g2 ~ b2 e3@2 d3@8, ~@2 a2 ~@5", L: "g2@3 g2 a2 b2@3 f#3@8", M: "[g2,d3,b3,d4,g4]",
  N: "[~@13 a3 ~ a3 g3@10 ~@6, ~@6 g3 d4@6 ~@3]/2", O: "~@3 d4@4 ~, ~@2 g4@5 ~",
  P: "[~@4 g4@9 ~@6 g3@11 ~@2 g4@10 ~@6, ~@15 e4@15 ~ a4@11 ~@6, ~@8 d4@7 ~@9]/3",
  Q: "[c4,e4,g4,b4]@5 ~@9 b4@2, ~@9 c3@4 g4@3, ~@5 g3@3, ~@11 c4@5, ~@3 e4", R: "a2@3 a2 ~ c#3 f#3@2 e3@8, ~@2 b2 ~@5",
  S: "a2@3 a2 b2 c#3@3 g#3@8", T: "[~@2 [a3,b3,c#4]@21 ~@9, ~ e4@21 ~@10]/2",
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B C D E F C D G H I J K L M N O P Q R S T U@3 V W I X Y Z AA N AB P Q R AC T AD R AE AF AG AH AI AJ AK AH AL AM AN
  AH AO AJ AP AQ ~
>`.pickRestart({
  A: "[~@16 [d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [d3,b3,d4]@2 b3@2 [g2,d3,b3,d4,g4] [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4] d3, ~@15 g2@5 ~@12]/2", // G
  B: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [d3,b3,d4,g4]@2 [d3,b3,d4,g4]@2 [g2,d3,b3,d4,g4] [g2,d3,g3,b3,d4,g4]@2 [d3,g3,b3,d4] [g2,d3,b3,d4,g4]", // G
  C: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [d3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4] [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4] [g2,d3]", // G G5
  D: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,g3,b3,d4,g4]@3 [g2,d3,g3,b3,d4,g4]@2 d3@2 [g2,d3,b3,d4,g4] [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4]!2", // G
  E: "[g2,c3,g3,c4,e4,g4]@3 [g2,c3,c4,e4,g4] [g2,c3,g3,c4,e4,g4]@2 [g3,c4,e4,g4]@3 [g3,c4,e4,g4]@2 [g3,c4,e4,g4] [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2, ~@3 [g2,c3]@3 [g2,c3]@2", // C C5
  F: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,b3,d4,g4]@3 ~ [g2,d3] [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3] [g2,d3,g3,b3,d4,g4]@2 ~ [g2,d3], ~@7 [g3,b3,d4,g4]@2 ~@5 [g2,d3,b3,d4,g4]@2", // G G5 G G5 G G5 G
  G: "[g2,c3,g3,c4,e4,g4]@3 [g2,c3,g3,c4,e4,g4] [g2,c3,g3,c4,e4,g4]@2 [g3,c4,e4,g4]@3 [g3,c4,e4,g4]@2 [g3,c4,e4,g4] [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2, ~@3 [g2,c3]@3 [g2,c3]@2", // C C5
  H: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,b3,d4,g4]@3 ~ [g2,d3] [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3] [g2,d3,g3,b3,d4,g4]@2 ~ [g2,d3], ~@7 [g3,b3,d4,g4]@2 ~@5 [g2,d3,g3,b3,d4,g4]@2", // G G5 G G5 G G5 G
  I: "[b2,d3,g3,b3,d4,g4]@4 [b2,d3,g3,b3,d4,g4]@3 ~ [b2,d3] [b2,d3,g3,b3,d4,g4]@2 [b2,d3,g3] [b2,d3,g3,b3,d4,g4]@2 [d3,d4,g4]@2, ~@7 [b3,d4,g4]@2 ~@7", // G Bm G G5 G
  J: "[c3,e3,c4,d4,e4,g4]@4 [c3,e3,g3,c4,d4,e4,g4]@3 [c3,e3,g3,c4,d4,e4,g4]@2 [c4,d4,g4]@2 e3 [c3,c4,d4,g4]@2 [c3,e3,g3,c4,d4,g4]@2, ~@3 e4", // C Csus2 C
  K: "[b2,d3,g3,b3,d4,g4]@4 [b2,d3,g3,b3,d4,g4]@3 g4@2 [b3,g4]@2 [g3,b3,d4,g4] [b2,d3,g3,b3,d4,g4]@2 ~ [d3,b3], ~@7 d3@5 ~@2 [b3,d4,g4]@2", // G Em G
  L: "[c3,e3,g3,c4,e4,g4]@4 [c3,e3,g3,c4,e4,g4]@3 [c3,g3,c4,g4]@2 [e4,g4]@3 [d2,d3,a3,d4,f#4]@4", // C C5 Em D
  M: "[e2,b2,e3,g3,b3,e4]@4 [e2,b2,e3,g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@2 [e3,b3,e4]@2 ~ [e2,b2,e3,g3,b3,e4]@2 e3@2", // Em E5 Em
  N: "[c3,g3,c4,e4]@4 [c3,g3,c4,e4]@3 e4@2 [c3,g3,c4,e4]@3 [d2,d3,a3,d4,f#4]@4", // C D
  O: "[e2,e3,b3,e4,g4]@2 [f#2,d3,d4,f#4] [g2,d3,b3,d4,g4]", P: "[c3,f3,c4,e4,g4]",
  Q: "[a2,e3,a3,c4,e4,g4]@12 d3!2 [d3,a3,c4,e4,g4]@2, ~@3 d2, ~@6 [a3,c4,e4,g4] ~", // Am7
  R: "[g2,d3,g3,b3,d4,g4]!2 [d3,a3,d4,f#4] [f#2,d3,a3,d4,f#4]", // G D
  S: "[e2,c3,c4,d4,e4,g4]@4 [c3,c4,d4,e4,g4]@3 [e2,c3,g3,c4,d4,e4,g4]@2 [e2,c3,g3,c4,d4]@3 [e2,c3,g3,c4,d4,e4,g4]@2 [c3,c4,d4,e4]@2", // C
  T: "[g2,d3,b3,d4,g4] [g2,d3,g3,b3,d4,g4] [b2,f#3,a3,d4,f#4]!2", // G Bm7
  U: "[c3@4 c3@2 [a2,e3,c4,e4,g4]@4 [a2,a3,e4] [e3,a3,c4,e4] [a2,e3,a3,c4,e4,g4]!2 ~@2 [g3,b3,d4,g4]@20 ~@12, [c4,d4,e4,g4]@3 ~@4 [a2,e3] ~@16, ~@15 d3@20 ~@13]/3", // Am7 A5 Am Am7 G C A5
  V: "[g2,c3,g3,c4,e4,g4]@3 [g2,c3,g3,e4,g4] [g2,c3,g3,c4,e4,g4]@2 [g3,c4,e4,g4]@3 [g3,c4,e4,g4]@2 [g3,c4,e4,g4] [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2, ~@3 [g2,c3]@3 [g2,c3]@2", // C C5
  W: "[g2,d3,g3,b3,d4,g4]@4 [g2,d3,b3,d4,g4]@3 ~ g2 [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3] [g2,d3,g3,b3,d4,g4]@2 ~ [g2,d3], ~@7 [g3,b3,d4,g4]@2 ~@5 [d3,b3,d4,g4]@2", // G G5 G G5 G
  X: "[c3,e3,c4,d4,e4,g4]@4 [c3,e3,g3,c4,d4,e4,g4]@3 [c3,e3,g3,c4,d4,e4,g4]@2 [c4,g4]@2 e3 [c4,d4,g4]@2 [c3,e3,g3,c4,d4,g4]@2, ~@3 e4", // C C5 Csus2 C
  Y: "[b2,d3,g3,b3,d4,g4]@4 [b2,d3,g3,b3,d4,g4]@3 g4@2 [b3,g4]@2 [g3,b3,d4,g4] [b2,d3,g3,b3,d4,g4]@2 ~ [d3,b3], ~@7 d3@5 ~@2 [d4,g4]@2", // G Em G G5
  Z: "[c3,e3,g3,c4,e4,g4]@4 [c3,e3,g3,c4,e4,g4]@3 [c3,g3,c4,g4]@2 g4@3 [d2,d3,a3,d4,f#4]@4", // C C5 D
  AA: "[e2,b2,e3,g3,b3,e4]@4 [e2,b2,e3,g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@2 [e3,b3,e4]@2 ~ [e2,b2,e3,g3,b3,e4]@2 b2@2", // Em E5 Em
  AB: "[e2,e3,b3,e4,g4]@2 [f#2,d3,d4,f#4] [g2,d3,d4,g4]", // Em D G5
  AC: "[e2,c3,c4,d4,e4,g4]@4 [c3,c4,d4,e4,g4]@3 [e2,c3,g3,c4,d4,e4,g4]@2 [e2,c3,g3,c4,d4,g4]@3 [e2,c3,g3,c4,d4,e4,g4]@2 [e2,c3,c4,d4,e4]@2", // C
  AD: "c3@4 c3@2 [a2,e3,c4,e4,g4]@4 [a2,a3,g4] [e3,a3,c4,e4] [a2,e3,a3,c4,e4,g4]!2 [a2,e3,c4]@2, [c4,d4,e4,g4]@3 ~@5", // Am7 A7 Am Am7 Am C
  AE: "[e2,c3,c4,d4,e4,g4]@4 [c3,g3,c4,d4,e4,g4]@3 [e2,c3,c4,d4,e4,g4]@2 [e2,c3,g3,c4,d4,e4,g4]@3 [e2,c3,g3,c4,d4,e4,g4]@2 [c3,c4,d4,e4]@2", // C
  AF: "[g2,d3,g3,b3,d4,g4]!2 [b2,f#3,a3,d4,f#4]!2", AG: "[c3,c4,d4,e4,g4]",
  AH: "[a2,e3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4] [e3,b3,e4,g#4] [g#2,e3,b3,e4,g#4]", // A E
  AI: "[f#2,d3,d4,e4,f#4,a4]@4 [d3,a3,d4,e4,f#4,a4]@3 [d3,d4,e4,f#4,a4]@2 [f#2,d3,a3,d4,e4,f#4]@3 [f#2,d3,a3,d4,e4,f#4,a4]@2 [d3,d4,e4,f#4]@2", // D
  AJ: "[a2,e3,a3,c#4,e4,a4]!2 [c#3,g#3,b3,e4,g#4]!2", // A C#m7
  AK: "d3@4 d3@2 [b2,f#3,d4,f#4,a4]@4 [b2,b3] [f#3,b3,d4,f#4] [b2,f#3,b3,d4,f#4,a4]!2 [b2,f#3,f#4]@2, [d4,e4,f#4,a4]@3 ~@5", // Bm7 B Bm Bm7 B5 D
  AL: "[f#2,d3,d4,e4,f#4,a4]@4 [f#2,d3,d4,e4,f#4,a4]@3 [f#2,d3,d4,e4,f#4,a4]@2 [f#2,d3,a3,d4,e4,f#4,a4]@3 [f#2,d3,a3,d4,e4,f#4,a4]@2 [d3,d4,e4,f#4,a4]@2", // D
  AM: "[a2,e3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4] [c#3,g#3,b3,e4,g#4]!2", // A C#m7
  AN: "d3@4 d3@2 [b2,f#3,d4,f#4,a4]@4 [b3,f#4] [f#3,b3,d4,f#4] [b2,f#3,b3,d4,f#4,a4]!2 [b2,f#3,d4]@2, [d4,e4,f#4,a4]@3 ~@5", // Bm7 B5 Bm Bm7 Bm D
  AO: "[f#2,d3,d4,e4,f#4,a4]@4 [d3,a3,d4,e4,f#4,a4]@3 [f#2,d3,a3,d4,e4,f#4,a4]@2 [f#2,d3,a3,d4,e4,f#4]@3 [f#2,d3,a3,d4,e4,f#4,a4]@2 [d3,d4,e4,f#4]@2", // D
  AP: "d3@4 d3@2 [b2,f#3,d4,f#4,a4]@5 [b2,b3,a4] [f#3,b3,d4,f#4] [b2,f#3,b3,d4,f#4,a4]!2 ~, [d4,e4,f#4,a4]@3 ~@5", // Bm7 B7 Bm Bm7 D
  AQ: "~ [e3,c#4,e4,a4]@2 ~@5, [b2,f#3,d4,f#4]@3 ~@13, ~ [a2,a3]@5 ~@10", // A Bm A
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.2)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D E F C D ~ G H I J K L M N@2 ~ O P Q R@3 S T H U V W X M Y@2 ~ O Z Q AA O AB ~ AC AD AE ~ AF AD AG AH AI AD
  AJ ~ AK AL ~
>`.pickRestart({
  A: "~@7 [g2,g3,g4]@2 [g2,d3,g3,d4,g4]@2 g3 ~@3 [g2,g3,b3,d4,g4]", B: "~@7 [g2,g3]@2 [g2,g3]@2 g3 ~@2 [g2,g4] ~",
  C: "~@7 [g2,g3]@2 ~@6 [g3,b3,d4,g4]", D: "~@9 [g2,g3,b3,d4,g4]@2 g3 ~@4", E: "~@3 g3 ~@12",
  F: "~@4 g3@3 ~@4 b3 ~@2 g3@2", G: "~@4 g3@3 ~@4 b3 ~@4", H: "~@7 g3@2 ~@5 [b2,g3,b3]@2",
  I: "g3@4 ~@5 [c3,e3,g3,e4]@3 [e3,g3]@2 ~@2", J: "~@7 [g3,b3,d4]@2 [g3,d4]@2 ~@4 g4, ~@7 b2@5 ~@2 [b2,d3,g3]@2",
  K: "~@7 [e3,e4]@2 [c3,e3,g3,c4]@3 ~@4", L: "~@9 [e2,b2,g3]@2 [e2,b2,e3,g3,b3,e4] ~@2 [e2,b2,g3,b3,e4]@2",
  M: "~@7 [c3,g3,c4]@2 ~@7", N: "[g3@8 a3@4 g3@3 ~ a3@16, ~@15 f2@16 ~]/2", O: "~@2 f#2 ~",
  P: "g3@4 [e2,g3]@3 ~@2 [e4,g4]@2 [e2,c3,g3] ~@2 [e2,g3,g4]@2", Q: "g3 ~@3",
  R: "[g3@6 a3@4 [e3,c4,g4] [a2,g4] ~@3 g2@20 ~@13, ~@7 [a3,c4,e4,g4] ~@16]/3", S: "~@3 c4 ~@12",
  T: "~@4 g3@3 ~ d3 ~@2 b3 ~@2 [g2,g3]@2", U: "g3@4 ~@5 [c3,e3,g3,d4,e4]@3 [c3,e3,g3]@2 ~@2",
  V: "~@7 [g3,b3,d4]@2 [g3,d4]@2 ~@4 g4, ~@7 b2@5 ~@2 [b2,d3,g3,b3]@2", W: "~@7 [e3,e4]@2 [c3,e3,g3,c4,e4]@3 ~@4",
  X: "~@9 [e2,b2,g3]@2 [e2,b2,e3,g3,b3,e4] ~@2 [e2,e3,g3,b3,e4]@2", Y: "[g3@8 a3@4 [g3,b3]@3 ~ a3@16, ~@15 f2@16 ~]/2",
  Z: "g3@4 [e2,g3]@3 ~@2 e4@2 [e2,c3,g3] ~@2 [g3,g4]@2", AA: "g3@6 a3@4 [e3,c4,e4] [a2,g4] ~@2 [a3,e4,g4]@2",
  AB: "g3@4 e2@3 g3@2 ~@2 [e2,c3,g3] ~@2 [e2,g3,g4]@2", AC: "g3", AD: "a3 ~ g#2 ~",
  AE: "a3@4 f#2@3 [f#2,a3]@2 a4@2 [f#2,d3,a3] ~@2 [f#2,a3,a4]@2", // F#m D F#m
  AF: "a3@6 b3@4 [f#3,d4,f#4,a4] [b2,a4] ~@2 [b3,d4,a4]@2", AG: "a3@4 a3@3 a3@2 ~@2 [f#2,d3,a3] ~@2 [f#2,a3]@2",
  AH: "a3 ~@3", AI: "a3@6 b3@4 [b2,f#3,d4,a4] [b2,a4] ~@2 [b3,f#4,a4]@2",
  AJ: "a3@4 f#2@3 ~@2 a4@2 [f#2,d3,a3] ~@2 [f#2,a3,a4]@2", AK: "a3@6 b3@5 [f#3,d4,f#4] [b2,a4] ~@3",
  AL: "[b3,a4]@3 ~@13", // B7
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.2)

// other · piano
const piano = note("<~@13 A@2 ~@2 B@2 ~@11 A@2 ~@2 B@2 ~@23>".pickRestart({
  A: "[~@2 g4@10 d4 c4 b3@16 ~@2]/2", B: "[~ b4@2 d5@2 g5@8 ~@3]/2",
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~@11 A@12 B ~@2 A@14 B A@7 B A@3 B A@3 C D ~>".pickRestart({
  A: "x ~@6 x!2 ~ x ~@5", B: "x ~@2 x ~@4", C: "x ~@6 x ~ x ~ x ~@4", D: "~ x ~@6",
})).gain(0.8)

// drums · rim
const rim = s("rim").struct("<~@11 [~ x ~ x]!13 ~@2 [~ x ~ x]!30 [~@4 x ~@8 x ~@2] ~@2>").gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@20
  [~ x ~ x]!4
  ~@13
  [~ x ~ x]!7
  [~@2 x ~@2 x!2 ~]
  [~ x ~ x]!11
  [~@4 x ~@6 x ~ x ~@2]
  ~@2
>`).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@20
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]!4
  ~@13
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]!19
  [~ x!3 ~ x!3 ~@2 x!3 ~ x ~]
  [x!2 ~@14]
  ~
>`).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@11 [~@3 x]!9 ~@6 [~@3 x]!11 ~@22>").gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@36 A ~@7 B ~@3 B ~@8 C ~>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "x",
})).gain(0.64)

// drums · mid tom
// … 25 more lines

More by Giorgia