Strudelify

Fai come me

Grandi

KeyG majorTempo84 bpm
0:00/0:00
// Fai come me — Grandi
// 84 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: Full arrangement: all 76 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · pad sweep · A D5 G
const pad_sweep = note("<~@53 [[a4,c#5]@23 ~] [[a4,d5]@23 ~] [c#5@12 d5@11 ~, a4@23 ~] [[g4,b4]] [a4@7 ~] ~@18>")
  .s("gm_pad_sweep").gain(0.24).pan(0.6)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@3 A@2 B@2 C ~@11 D ~@5 B@4 ~@6 E F ~ G H ~@2 B@4 ~@7 I ~ J ~@3 K@2 ~@3 K@4 ~@3 L@4 ~
>`.pickRestart({
  A: "[~@12 [c4,c5] ~@2 [d4,d5] ~@2 [e4,e5] ~@2 [d4,d5]@12 ~@15]/2", // C D E D
  B: "[~@11 [g3,g4] [c4,c5] ~@2 [d4,d5] ~@2 [e4,e5] ~@2 [d4,d5]@12 ~@15]/2", // G C D E D
  C: "~@3 c4 ~@2 d4@2 c4 a3 ~@2 c4 ~@2 d4@3 c#4 [b3,c4] a#3 [g#3,a3] ~@2", // Cmaj7 Amaj7
  D: "[g3,g4] ~@2 [g3,g4] ~@2 [g3,g4]@3 [e3,e4] ~@2 g4@2 ~ g4@8 ~, ~@4 g3@3 ~", // G E
  E: "~@3 a#4 ~ a#4 ~@12 [d5,f5]@2 [d#5,g5] ~@3", F: "~@17 d4 [e4,g4,b4] ~ [e4,g4,b4] ~@3", G: "~@5 g#4", H: "g4@2 ~",
  I: "a3 ~@2 a3 ~@2 a3@2 ~ f#3 ~@2 a3 ~@2 a3@5 ~@4", J: "a3 ~@2 a3 ~@2 a3@3 f#3 ~@2 a3 ~@2 a3@5 ~@4",
  K: "[~@11 [a3,a4] [d4,d5] ~@2 [e4,e5] ~@2 [f#4,f#5] ~@2 [e4,e5]@12 ~@15]/2", // A D E F# E
  L: "[~@11 a3 d4 ~@2 e4 ~@2 f#4 ~@2 e4@12 ~@15]/2",
})).s("gm_electric_guitar_jazz").gain(0.3).pan(0.7)

// bass · fretless bass
const bass = note(`<
  ~@3 A B C D E F G F H I F J K L F M N H I F J K O B C B C P Q B R F S F T U V W K X B C B C P Q B R Y Z AA AB AC AD AE
  AF AG AF AH AI AJ AK AF AL AF AM AI AN AO AF AP AF AQ
>`.pickRestart({
  A: "~@9 c2@2 ~", B: "f2@3 ~@8 c2 e2@2 f2 e2@2 ~@6 c2", C: "d2@2 ~@9 d2 c2@2 ~ d2 ~@2 e2@4 ~@2",
  D: "f2@3 ~@8 c2 e2@2 f2 e2@2 ~@7", E: "d2@2 ~@10 c2 ~@2 d2@5 ~@4", F: "c2@2 ~@9 g1 c2@2 g1 c2@2 ~@7",
  G: "a#1@2 ~@10 f1 ~@2 f1 ~@2 a#1@3 ~@3", H: "a#1@2 ~@9 f1 a#1@2 f1 a#1@3 d2@3 f2@2 ~",
  I: "g#1@2 ~@9 d#2 g#1@2 d#2 g#1@2 ~@6 g1", J: "g#1@2 ~@9 d#2 g#1 ~ d#2 g#1@2 ~@7", K: "g1@3 ~@6 g1@5 ~@10",
  L: "g1@3 ~@6 g1@5 ~@4 d2@2 e2@3 g2", M: "a#1@2 ~@9 a#1 a#1@2 ~ c2 ~@2 d2@5 ~", N: "c2@2 ~@9 g1 c2@2 d2 g2@2 ~@7",
  O: "g1@3 ~@6 g1@5 ~ d2@2 ~ e2@3 ~@3", P: "f2@3 ~@8 c2 e2@2 f2 e2@2 ~@6 a#1",
  Q: "d#2@2 ~@9 c2 d2@2 ~ d2@2 ~ e2@2 ~ c2@2 ~", R: "g1@14 ~ g2@4 ~ e2 d2@2 ~",
  S: "g#1@2 ~@9 d#2 g#1 ~ d#2 g#1@2 ~ c3@3 a#2@2 ~", T: "g#1@2 ~@9 d#2 g#1 ~ d#2 g#1@2 ~ g2@2 f2 d#2 ~@2",
  U: "f2@5 ~@6 c2 f2@2 g2 f2@3 ~@6", V: "e2@2 f2 e2@3 ~@8 b1 d2 ~@2 e2@4 ~@2", W: "g#1@5 ~@6 d#2 g#1 ~ d#2 g#1@3 ~@6",
  X: "g1@5 ~@4 g1@5 ~ d2@2 ~ e2@3 ~@3", Y: "g1@12 ~@3 g1@4 ~ a1@4", Z: "a#1@6 ~@5 f1 a#1@2 a1 a#1@2 ~@6 a1",
  AA: "d2@3 ~@8 a1 d2 ~@2 d2 ~@2 e2@2 d2 e2@2 ~", AB: "a#1@5 ~@6 a#1 a#1@2 ~@9 c#2",
  AC: "f#1@5 ~@6 f#1 b1 ~@2 b1 ~@2 b1@2 a1 b1@2 ~", AD: "e2@6 ~@5 b1 d2@2 ~ e2@2 ~@6 a1",
  AE: "a2@4 ~ a1@2 ~@2 a2@4 ~ a1 ~@2 a1 a2@2 a1 g2@2 ~", AF: "g2@3 ~@8 d2 f#2@2 g2 f#2@2 ~@6 d2",
  AG: "e2@2 ~@9 e2 a1@2 ~ b1 ~@2 d2 ~@2 e2 ~@2", AH: "e2@2 ~@9 e2 a1@2 b1 d2 ~@2 e2@2 b1 d2 ~@2",
  AI: "g2@3 ~@8 d2 f#2@2 g2 f#2@2 ~@6 c2", AJ: "f2@2 ~@9 d2 e2@2 f2 e2@2 ~@7",
  AK: "g2@3 ~@8 d2 f#2@2 ~@4 e2 ~ d2 a1@2 d2", AL: "e2@2 ~@9 e2 d2@2 ~ b1 ~@2 a1@4 ~@2",
  AM: "e2@2 ~@7 d2@4 ~@2 e2 ~@2 f#2@4 ~@2", AN: "f2@2 ~@9 d2 e2@2 ~ e2@2 ~@3 d2 e2@2 ~",
  AO: "g2@3 ~@8 d2 f#2@2 ~ d3@2 ~ a2@2 f#2 d2@2 ~", AP: "e2@2 ~@9 e2 d2@2 ~ e2 ~@2 f#2@4 ~@2",
  AQ: "e2@2 ~@9 e2 d2@2 ~ e2 ~@8",
})).s("gm_fretless_bass").gain(0.39)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A@2 B@2 C ~@7 D E ~@2 F ~ G H I J K@2 L@2 ~@3 M N O P@2 Q ~ R S T U@2 L@2 ~@3 V W X ~ Y ~ Y ~@3 Z@2 ~@3 AA@2 Z@2
  ~@3 AA@2 Z@2 ~
>`.pickRestart({
  A: "[~@12 c4 ~@2 d4 ~@2 e4 ~@2 e4@11 ~@16]/2", B: "[~@11 g3 c4 ~@2 d4 ~@2 e4 ~@2 e4@11 ~@16]/2",
  C: "~@3 c4 ~@2 c4@2 ~ a3 ~@2 c4 ~@2 c4@8 ~", D: "f4!2 ~@3 a4, c4@7 ~, ~@3 f4@4 ~, ~@5 c5@3",
  E: "~@9 g3@4 ~ g3@5 ~@5, d4@23 ~, ~@5 e4@19",
  F: "[g3,g4]@2 ~ [g3,g4] ~@2 [g3,g4]@3 [e3,e4] ~@2 g4@2 ~ g4@8 ~, ~@12 g3@11 ~", // G E
  G: "[c4,d#4,g4]@3 [d#4,g4,a#4]@3 [d#4,g4]@3 [c4,d#4,g4]@13 ~@2, ~@3 a#4@8 ~", // Cm D# Cm
  H: "[e4,g4,b4]@3 [g4,b4]@3 [g4,b4]@3 [e4,g4,b4]@11 ~@4, ~@3 e4@5 ~@16", I: "g4!4 ~@4, [c4,d#4]@11 ~",
  J: "[a3,c4,f4]@11 ~", K: "[[a3,c4,f4]@11 ~ c4@3 d4@2 ~ e4 ~@2 e4@12 ~@15]/2",
  L: "[~@11 [g3,g4] [c4,c5] ~@2 [d4,d5] ~@2 [e4,e5] ~@2 [d4,d5]@12 ~@15]/2", M: "~@14 c4 ~@2 c4 ~@2 f4@4", N: "c4@2 ~",
  O: "~@12 [g4,b4,d5]@2 [e4,g4,b4,d5]@4 [f4,a4,c5] ~@5", // G Em7 F
  P: "[~@3 a#4 ~ a#4 a#4@8 ~ a#4 ~ a#4 a#4@8 ~@7 g4 ~@2 e4@3 c4 ~@2 d4@2 e4 ~@3]/2", Q: "~@9 c3 ~@2 c3@10 ~@2",
  R: "~@6 e4@3 ~@3 e4@11 ~, ~@9 g4@14 ~", S: "g4@3 g4@2 ~ g4@2 ~ g4@3 ~@12, [c4,d#4]@7 ~", T: "[a3,c4,f4]@3 ~@5",
  U: "[~@12 c4@3 d4@2 ~ e4 ~@2 e4@12 ~@15]/2", V: "~@14 c4 ~@2 c4 ~@2 c4 e4@2 ~",
  W: "c4@3 c4 ~@4 c4 ~@3 c4@2 ~@6 c4 ~@3", X: "d4@5 ~@7", Y: "a4 ~@2 a4 ~@2 a4@2 ~ f#4 ~@2 a4 ~@2 a4@6 ~@3",
  Z: "[~@11 [a3,a4] [d4,d5] ~@2 [e4,e5] ~@2 [f#4,f#5] ~@2 [e4,e5]@12 ~@15]/2", // A D E F# E
  AA: "[~@12 d4@3 e4@2 ~ f#4 ~@2 f#4@12 ~@15]/2",
})).s("gm_electric_guitar_clean").gain(0.34).pan(0.7)

// other · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@16 A@3 ~@4 B ~@10 C ~@5 D ~@35>".pickRestart({
  A: "[~@19 g3@53]/3", B: "~@12 g4@11 ~", C: "~@18 [f#4,a#4,c#5] [d#4,e4,g4,g#4,a#4,b4] [c#4,d4,f4,f#4,g#4,a4] ~@3",
  D: "~@4 g4@3 ~",
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.7)

// chords · pad warm
const pad_warm = note("<~@4 A B A C ~@13 D@2 E F@2 G B G B G H G I J E J E K L E M F G B G B G H G ~@26>".pickRestart({
  A: "[c4,e4,a4]@8 ~ [c4,e4,g4]@14 ~", B: "[c4,e4,f4,a4]@3 [c4,e4,g4]@5", C: "[c4,f4,a4]@23 ~",
  D: "[[c4,d#4] [b3,e4], g4]/2", E: "[c4,d#4,g4]", F: "[c4,f4,a4]", G: "[c4,e4,a4]@3 [c4,e4,g4]@5",
  H: "[a#3,d4,g4] [a3,c4,f4]", I: "~@9 a4@14 ~, [a3,c4,f4]", J: "[b3,e4]", K: "[c4,d#4,f4,g#4]", L: "[b3,d4,e4,g4]",
  M: "[c4,f4,a4]@5 ~@7", // F
})).s("gm_pad_warm").gain(0.18)

// other · synth brass 2 · B C B G B C B G …
const synth_brass_2 = note(`<
  ~@34
  [[b4,b5]@2 [c5,c6] [b4,b5] ~ [g4,g5] ~@2 [g4,g5] [b4,b5]@2 [c5,c6] [b4,b5]@2 [g4,g5] ~@9]
  [[a#4,a#5]@2 [c5,c6] [a#4,a#5]@2 [g4,g5] ~@17 [g4,g5]]
  [[b4,b5]@2 [c5,c6] [b4,b5]@2 [g4,g5] ~@2 [g4,g5] [b4,b5]@2 [c5,c6] [b4,b5] ~ [g4,g5] ~@8 [g4,g5]]
  [[a#4,a#5]@2 [c5,c6] [a#4,a#5]@2 [g4,g5] ~@11 [a#4,a#5] [g4,g5]@2 [f4,f5] [d#4,d#5] ~@2]
  [~@15 [a#3,d#4] ~@2 c4@2 [d#4,g#4] ~@3, ~@18 f4 ~@5]
  ~@37
>`).s("gm_synth_brass_2").gain(0.39).pan(0.3)

// chords · epiano1
const epiano1 = note(`<
  ~@16 A B C D E F G H I A J K J K L M J N O P Q R S T U V@2 J K J K L M J N W X Y Z AA AB AC AD AE AD AF AG AH AD@2 AE
  AD AF AI AJ AK@2 AL AK ~
>`.pickRestart({
  A: "[g3,c4,f4,a4,c5,f5]@23 ~", B: "[b3,e4,g4]@11 ~ [d4,g4,b4,d5]@2 [e4,g4,b4,e5] ~@9", C: "[d4,f4,a4,d5]@5 ~@3",
  D: "[b3,e4,g4]@11 ~", E: "[d4,f4,a4]@7 ~", F: "~@5 g5@18 ~, [d#4,g4,c5,d#5]@23 ~", G: "[e4,g4,b4]@11 ~",
  H: "[d#4,g4]@9 [d#4,g4,a#4]@14 ~, c4@23 ~", I: "[a3,c4,f4]@23 ~", J: "[c4,e4,a4]@8 ~ [c4,d4,g4]@14 ~",
  K: "[a3,c4,f4]@8 ~ [b3,e4,g4]@13 ~@2", L: "[c4,e4,a4,e5,a5]@9 [c4,d4,g4,d5,g5]@14 ~",
  M: "[g4,a#4,g5]@9 [c5,a5]@3 [a4,c5,f5]@11 ~, d5 ~", N: "[a3,c4,f4,g4]@23 ~", O: "[e4,g4,b4]@23 ~",
  P: "[d#4,g4,a#4]@23 ~", Q: "[e4,g4,b4]@18 [e4,g4,b4] ~ [e4,g4,b4] ~@3", R: "d#4@11 [d#4,g4,c5]@13, [a#3,c4]",
  S: "g#4@9 ~ g#4@2, [c5,d#5,g5]@23 ~", T: "[d4,g4,b4,d5]", U: "[c4,d#4,g4] ~@8 [d#4,g4,a#4] ~@14",
  V: "[[a3,c4,f4]@8 ~ [c4,d4,f4,g4]@2 ~@13 [g3,c4,f4]@23 ~, ~@11 a5@10 ~@3, ~@23 [d5,f5]@20 ~@5, ~@4 c5@3 ~]/2", // F Csus4 Dm
  W: "[g4,c5,d5]@13 ~@2 [f4,a4,d5]@4 ~ [g4,c5,e5]@4", X: "[a4,d5,f5]@11 ~", Y: "[a4,c#5,e5]@5 [a4,c#5,e5]@3",
  Z: "f4@11 ~@4 c4@9, [a4,d5]@14 c5@7 ~@3, ~@12 f4@7 ~@5", AA: "[c#4,e4,a4]@11 ~ [c#4,e4,a4] ~@2 [d4,f#4,b4]@8 ~",
  AB: "[b3,d4,g4]@17 ~ [d4,g4,b4]@5 ~", AC: "[b3,d4,a4]@3 [b3,d4,a4,d5,a5]@5", AD: "[d5,f#5,b5]@3 [d5,e5,a5]@5",
  AE: "[b4,d5,g5]@3 [a4,c#5,f#5]@5", AF: "[b4,d5,g5]@3 [c#5,f#5,a5]@5", AG: "[d4,f#4,b4,f#5,b5]@3 [d4,e4,a4,e5,a5]@5",
  AH: "[a4,c5,a5]@3 [d5,b5] [b4,d5,g5]@4, e5 ~", AI: "[d4,f#4,b4,f#5,b5]@9 [d4,e4,a4,e5,a5]@14 ~",
  AJ: "[a4,c5,a5]@9 [d5,b5]@3 [b4,d5,g5]@11 ~, e5 ~", AK: "[d5,f#5,b5]@8 ~ [d5,e5,a5]@14 ~",
  AL: "[b4,d5,g5]@8 ~ [a4,c#5,f#5]@13 ~@2", // G F#m
})).s("gm_epiano1").gain(0.33).pan(0.4)

// chords · piano
const piano = note("<~@34 A B C D E ~@2 F ~@9 G H I J K L M ~@18>".pickRestart({
  A: "b5@2 c6 b5@2 g5 ~@3 b5@2 c6 b5@2 g5 ~@9",
  B: "a#5@2 c6 a#5@2 g5 ~@12 [d4,f4,a#4] ~ [d#4,g4,a#4,d#5,g5] ~@3, ~@9 [d5,f5] ~@2", // A# D# Dm
  C: "b5@2 c6 b5@2 g5 ~@3 b5@2 c6 b5@2 g5 ~@2 d4 [e4,g4,b4]@2 [e4,g4,b4] ~@3", // Em
  D: "a#5@2 c6 a#5@2 g5 ~@11 a#5 g5@2 f5 d#5 ~@2", E: "[c5,d#5,g5]@3 ~", F: "~@3 [c4,d4,f4,g4] ~@4",
  G: "~@15 [f4,a#4]@5 [g4,c5]@4", H: "[f4,a4,d5]@7 ~@5", I: "[f#4,a4,c#5]@12 ~@3 [a4,c#5,e5]@8 ~", J: "[f4,a4,d5]@3 ~",
  K: "[e4,a4,c#5]@11 ~ [f#4,a4,d5]@11 ~", L: "[b3,d4,g4]@3 ~", M: "~@9 [b3,d4,a4]@14 ~",
})).s("gm_piano").gain(0.32).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@4 A B C D E F G H I J K L M N F G H I J K O ~ P Q R S A T A U J K J K V W K X ~ P Q R S A T A U Y ~@6 Z AA AB AC AD
  AE AD Z AA AB AC AD AE AD Z AA AB AF
>`.pickRestart({
  A: "[a3,c4]@2 a4 a4@2 a4 ~@2 a4 [g3,c4,e4]@2 g4 [g3,c4,e4]@2 [e4,g4] g4@2 ~ c4@2 e4 [c4,e4,g4]@3, a4 ~@2 [a3,c4]@4 ~@2 g4 ~@2 g4 ~@11", // Am C Em C Am
  B: "[c4,f4]@2 [c4,f4] [c4,f4]@2 [c4,f4] f4 ~ f4 [c4,e4]@2 [e4,g4] e4@2 e4@2 ~ [c4,e4] [c4,e4,g4]@2 [e4,g4] [c4,e4,g4]@3, a3@6 ~@3 g4 ~@2 c4@5 ~@7, ~@12 g4 ~ g4 ~ g4@2 ~@6", // F5 C Em C Em C
  C: "[a3,c4]@2 a4 [a3,c4,a4]@2 [c4,a4]@2 ~ a4 [c4,e4,g4]@2 [e4,g4] [e4,g4]@2 e4@3 g4 [c4,e4]@2 g4 [c4,e4,g4]@2 ~, a4 ~@11 c4@4 ~@8, ~@14 g4 ~@3 g4 ~@5", // Am F C Em C
  D: "[a3,c4]@2 f4 [a3,c4,f4]@3 c4@2 [c4,f4]!2 ~@14, f4 ~@5 a3@4 ~@14, ~@6 f4 ~@17", // Am F F5
  E: "[c4,e4,g4]@4 ~ [c4,e4,g4] ~@5 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 g3 [c4,e4,g4]@3 [c4,e4,g4] ~@2", // C
  F: "[a#3,d4,f4]@4 ~ [a#3,d4,f4] ~@5 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2 f3 [a#3,d4,f4]@2 ~ [a#3,d4,f4] ~@2", // A#
  G: "[c4,e4,g4]@4 ~ [c4,e4,g4] ~@5 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 g3 [c4,e4,g4]@2 ~ [c4,e4,g4] ~@2", // C
  H: "[a#3,d4,f4]@4 ~ [a#3,d4,f4] ~@5 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2 a#3 [a#3,d4,f4]@2 ~ [a#3,d4,f4] ~@2", // A#
  I: "[c4,d#4,g4]@4 ~ [c4,d#4,g4] ~@5 [c4,d#4,g4] ~@2 [c4,d#4,g4] ~@2 c4 [c4,d#4,g4]@2 ~ [c4,d#4,g4] ~@2", // Cm
  J: "[c4,e4,g4]@4 ~ [c4,e4,g4] ~@5 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 c4 [c4,e4,g4]@2 ~ [c4,e4,g4] ~@2", // C
  K: "[c4,d#4,g4]@4 ~ [c4,d#4,g4] ~@3 [c4,d#4,g4] ~@4 [c4,d#4,g4] ~@2 c4 [c4,d#4,g4]@2 [c4,d#4,g4] ~@3", // Cm
  L: "[a3,c4,f4]@2 ~ [a3,c4,f4]@3 ~@2", M: "~@9 g3@14 ~, d4@23 ~, ~@5 e4@19",
  N: "[c4,e4,g4]@4 ~ [c4,e4,g4] ~@5 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 g3 [c4,e4,g4]@3 [d#4,e4,f#4,g4] [c#4,d4,e4,f4] [b3,c4,d4,d#4]", // C
  O: "[a3,c4,f4]@6 ~@3 [a3,c4,f4]@14 ~", // F
  P: "[a3,c4,a4]@3 [a3,c4,a4]@2 [a3,c4,a4] ~@2 a4 g4@2 [d4,g4] [c4,d4,g4]@2 [d4,g4] [c4,d4,g4]@2 [g3,c4,d4,g4] ~@2 [d4,g4] ~@2 [a3,d4,g4], ~@8 c4@3 ~ g3@5 ~@7", // Am G5 Csus2 G5 Csus2 Gsus4 G5 Dsus4
  Q: "[a3,c4,f4]@2 [c4,f4] [a3,c4,f4]@2 [c4,f4] ~@2 [c4,f4] [b3,e4,g4]@2 g4 [e4,g4]@2 [e4,g4]@3 [e4,g4] [b3,e4,g4]@2 [b3,e4,g4] [b3,e4,g4]@2 [b3,e4,g4], ~@2 b3 ~", // F F5 F F5 Em
  R: "[a3,c4,a4]@2 [c4,a4] [a3,c4,a4]@2 [a3,c4,a4] a4@2 [c4,a4] [c4,d4,g4]@2 g4 [g3,c4,d4,g4]@2 [g3,c4,d4,g4] ~@2 [d4,g4] [c4,d4]@2 [d4,g4] [g3,c4,d4,g4]@2 g4, ~@18 g4 ~@5", // Am F Am F Csus2 Gsus4 G5 Csus2 …
  S: "[f3,a3,c4,f4]@2 f4 [f3,a3,c4,f4]@2 [c4,f4] f4@2 [c4,f4] [b3,e4,g4]@2 [e4,g4] [b3,e4,g4]@2 [e4,g4] g4@2 [e4,g4] [e4,g4]@2 [b3,e4,g4] [b3,e4,g4]@2 [b3,e4,g4], ~@17 b3@3 ~@4", // F F5 Em
  T: "[d4,g4]@2 [d4,g4] [d4,g4]@2 [d4,g4] g4 ~ g4 [a#3,d4]@2 [d4,g4] c4@2 c4@2 ~ [a3,c4] [a3,c4,f4]@2 [c4,f4] [a3,c4,f4]@3, a#3@6 ~@3 g4 ~@2 a3@5 ~@7, ~@12 f4 ~ f4 ~ f4@2 ~@6", // G5 A# G5 Am F F5 F
  U: "[a3,c4,f4]@4 ~ [a3,c4,f4] ~@3 [a3,c4,f4]@13 ~@2", // F
  V: "[d#4,g#4,c5]@5 [d#4,g#4,c5] ~@3 f3 ~ [d#4,g#4,c5] ~@2 [d#4,g#4,c5] ~@2 c4 [d#4,g#4,c5]@3 [d#4,g#4,c5] ~@2", // G#
  W: "[d4,g4,b4]@5 [d4,g4,b4] ~@3 b3 ~ [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 e3 [d4,g4,b4]@2 [d4,g4,b4]!2 ~@2", // G
  X: "[a3,c4,f4]@6 ~@3 [a3,c4,f4]@2 ~@13", Y: "[a3,c4,f4]@5 ~@3",
  Z: "[b3,d4,b4]@3 [b3,d4,b4]@2 [b3,d4,b4] ~@2 b4 a4@2 [e4,a4] [d4,e4,a4]@2 [e4,a4] [d4,e4,a4]@2 [a3,d4,e4,a4] ~@2 [e4,a4] ~@2 [b3,e4,a4], ~@8 d4@3 ~ a3@5 ~@7", // Bm A5 Dsus2 A5 Dsus2 Asus4 A5 Esus4
  AA: "[b3,d4,g4]@2 [d4,g4] [b3,d4,g4]@2 [d4,g4] ~@2 [d4,g4] [c#4,f#4,a4]@2 a4 [f#4,a4]@2 [f#4,a4]@3 [f#4,a4] [c#4,f#4,a4]@2 [c#4,f#4,a4] [c#4,f#4,a4]@2 [c#4,f#4,a4], ~@2 c#4 ~", // G G5 G G5 F#m
  AB: "[b3,d4,b4]@2 [d4,b4] [b3,d4,b4]@2 [b3,d4,b4] b4@2 [d4,b4] [d4,e4,a4]@2 a4 [a3,d4,e4,a4]@2 [a3,d4,e4,a4] ~@2 [e4,a4] [d4,e4]@2 [e4,a4] [a3,d4,e4,a4]@2 a4, ~@18 a4 ~@5", // Bm G Bm G Dsus2 Asus4 A5 Dsus2 …
  AC: "[g3,b3,d4,g4]@2 g4 [g3,b3,d4,g4]@2 [d4,g4] g4@2 [d4,g4] [c#4,f#4,a4]@2 [f#4,a4] [c#4,f#4,a4]@2 [f#4,a4] a4@2 [f#4,a4] [f#4,a4]@2 [c#4,f#4,a4] [c#4,f#4,a4]@2 [c#4,f#4,a4], ~@17 c#4@3 ~@4", // G G5 F#m
  AD: "[b3,d4]@2 b4 b4@2 b4 ~@2 b4 [a3,d4,f#4]@2 a4 [a3,d4,f#4]@2 [f#4,a4] a4@2 ~ d4@2 f#4 [d4,f#4,a4]@3, b4 ~@2 [b3,d4]@4 ~@2 a4 ~@2 a4 ~@11", // Bm D F#m D Bm
  AE: "[e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4] a4 ~ a4 [c4,e4]@2 [e4,a4] d4@2 d4@2 ~ [b3,d4] [b3,d4,g4]@2 [d4,g4] [b3,d4,g4]@3, c4@6 ~@3 a4 ~@2 b3@5 ~@7, ~@12 g4 ~ g4 ~ g4@2 ~@6", // A5 C A5 Bm G G5 G
  AF: "[g3,b3,d4,g4]@2 g4 [g3,b3,d4,g4]@2 [d4,g4] g4@2 [d4,g4] [c#4,f#4,a4]@2 [f#4,a4] [c#4,f#4,a4]@2 [f#4,a4] ~@9", // G G5 F#m
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.3)

// other · rock organ
const rock_organ = note("<~@38 A B ~@3 C@4 D@2 E F@2 G ~@5 H@4 I@2 J H@4 I@2 J K@4>".pickRestart({
  A: "g6@20 g#5 c6 ~@2", B: "d6@5 g5@8 ~@11", C: "[e6@14 f6 e6@5 f6 e6@24 e6@17 f6 e6@5 f6 e6@24 d6 c6 g5]/4",
  D: "[g6@3 f6]/2", E: "e6", F: "[d6@36 ~@3 [d5,f5,a#5]@5 [e5,g5,c6]@4]/2", G: "[a5,d6] ~",
  H: "[f#6@14 g6 f#6@5 g6 f#6@24 f#6@17 g6 f#6@5 g6 f#6@24 e6 d6 a5]/4", I: "[a6@3 g6]/2", J: "f#6",
  K: "[f#6@14 g6 f#6@5 g6 f#6@24 f#6@17 g6 f#6@5 g6 f#6@24 ~@3]/4",
})).s("gm_rock_organ").gain(0.27).pan(0.2)

// chords · harpsichord · F Dm
const harpsichord = note("<~@51 [~@5 [f4,a4,c5]!8 [d4,f4,a4]!11] ~@24>").s("gm_harpsichord").gain(0.33).pan(1)

// chords · harpsichord · soft notes · F
const harpsichord_soft = note("<~@51 [[f4,a4,c5]!5 ~@19] ~@24>").s("gm_harpsichord").gain(0.14).pan(1)

// chords · synth strings 1
const synth_strings_1 = note("<~@51 A B C B D E F G H G H G I G@2 H G H G I G@2 H G J>".pickRestart({
  A: "~@15 [a#3,d4,f4]@5 [c4,e4,g4]@4", B: "[d4,f4,a4]", C: "[c#4,e4,f#4,a4]", D: "[c#4,e4,a4] [d4,f#4,a4]",
  E: "[b3,d4,g4]", F: "[b3,d4,g4,a4]", G: "[d4,f#4,b4]@3 [d4,f#4,a4]@5", H: "[d4,f#4,g4,b4]@3 [d4,f#4,a4]@5",
  I: "[c4,e4,a4] [b3,d4,g4]", J: "[d4,f#4,g4,b4]@3 [d4,f#4,a4]@4 ~",
})).s("gm_synth_strings_1").gain(0.25)

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

// drums · snare
const snare = s("sd").struct("<~@3 A B@12 C B@8 D B@16 E B@8 F B@5 G B@6 H B@6 H B@3 I>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@3 x ~@3 x ~ x!2 ~", D: "~@6 x ~@7 x ~@6 x ~ x", E: "~@3 x ~@5 x!2 ~",
// … 61 more lines

More by Grandi