Strudelify

Ricordarti

Nomadi

KeyC majorTempo135 bpm
0:00/0:00
// Ricordarti — Nomadi
// 135 bpm, 4/4, key C 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 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V W X Y R U V W X S T U V Z@2 AA AB AC AD AE AF AG AH AI AJ AK AL AM AN
  AG AO AP AQ AR AS AT AU AV B AW L M AX O AY AZ B AW L M BA BB BC AC AD AE AF AG AH AI BD BE AL BF BG BH BI AV BJ AR BK
  AT BL AV B BM L BN AX O AY AV B BM BO M BA BB BP AV B BM L BQ AX O AY AV B BM BR BQ BA BS@3 ~
>`.pickRestart({
  A: "c2@6 c2 ~ c2@4 e2@2 g2@2", B: "c2@3 c2!2 g1 c2 c#2", C: "d2@3 d2!3 g1 a1", D: "d2@5 ~ d2 ~ d2@2 a1@2 d2@2 c2@2",
  E: "g1@5 ~ g1@2 g1@2 g1@2 c#2@2 d2@2", F: "g1@5 ~ g1@2 g1@2 g1@2 g1@2 g1@2", G: "c2@3 c2!3 e2 g2",
  H: "c2@5 ~ c2 ~ c2@2 c2@2 e2@2 g2@2", I: "c2@5 ~ c2 ~ c2@4 e2@2 g2@2", J: "c2@5 ~ c2 ~ c2@2 g1@2 c2@2 c#2@2",
  K: "d2@5 ~ d2 ~ d2@2 d2@2 g1@2 a1@2", L: "d2@5 ~ d2 ~ d2@2 a1@2 d2@2 a1@2", M: "g1@5 ~ g1@4 g1@2 c#2@2 d2@2",
  N: "g1@3 g1 g2 g1 f1 g1", O: "c2@3 c2!3 f#2 g2", P: "c2@5 ~ c2 ~ c2@2 c2@2 c2@2 c2@2", Q: "a1@2 a1!4 d2 e2",
  R: "a1!6 g1 a1", S: "c2!6 e2 g2", T: "c2!5 g1 c2 c#2", U: "d2!6 g#2 a2", V: "d2!5 a1 d2 a1", W: "g1!6 c2 d2",
  X: "g1!6 f#1 g1", Y: "a1!7 e1", Z: "g1!8", AA: "a1!6 d#2 e2", AB: "a1@2 a1@2 a1@2 e1@2 e1@2 g1@2 g1@3 ~",
  AC: "a1@5 ~ a1@2 a1@4 d2@2 e2@2", AD: "a1@6 a1 ~ a1@4 a1@2 g1@2", AE: "c2@5 ~ c2@2 c2@4 e2@2 g2@2",
  AF: "c2@6 c2 ~ c2@2 g1@2 c2@2 c#2@2", AG: "d2@3 d2@2 d2 g#2 a2", AH: "d2@5 ~ d2@2 d2@2 a1@2 d2@2 a1@2",
  AI: "g1@6 g1 ~ g1@4 c2@2 d2@2", AJ: "g1!7 g#1", AK: "a1@5 ~ a1@2 a2@2 a1@2 d2@2 e2@2", AL: "a1@3 a1@2 a1 g1 a1",
  AM: "c2@5 ~ c2@4 c2@2 e2@2 g2@2", AN: "c2@3 c2@2 g1 c2 c#2", AO: "d2@5 ~ d2@2 d2@2 a1@2 d2@2 d#2@2",
  AP: "e2@3 e2@2 e2 a#2 b2", AQ: "e2@3 e2@2 e2 b1 e2", AR: "f2@3 f2@4 c2", AS: "f2@3 c2@2 f2 c2 a1",
  AT: "g1@5 ~ g1@6 c#2@2 d2@2", AU: "g1@5 ~ g1@6 g1@2 a1@2", AV: "c2@3 c2@2 c2 f#2 g2", AW: "d2@3 d2!3 g2 a2",
  AX: "g1@3 g1!3 f#1 g1", AY: "c2@5 ~ c2@2 c2@2 c2@2 f#2@2 g2@2", AZ: "c2@3 c2@2 c2 e2 g2", BA: "g1@3 g2@2 g1 f#1 g1",
  BB: "c2@2 ~ c2!3 f#2 g2", BC: "c2@5 ~ c2@2 c2@2 g1@2 c2@2 g1@2", BD: "g1!6 a1 c2", BE: "a1@3 a1@2 a1 d2 e2",
  BF: "d2@3 d2!3 g#2 a2", BG: "d2@3 d2!2 a1 d2 a1", BH: "g1@3 g1@2 g1 c2 d2", BI: "g1@3 g1@2 g1 f#1 g1",
  BJ: "c2@3 c2@2 c2 g1 c2", BK: "f2@3 c2@2 f2 f#2 g2", BL: "g1@5 ~ g1@6 d2@2 g1@2", BM: "d2@3 d2@2 d2 g2 a2",
  BN: "g1@3 g2@2 g1 c#2 d2", BO: "d2@2 ~ d2!2 a1 d2 a1", BP: "c2@5 ~ c2@4 c2@2 f#2@2 g2@2",
  BQ: "g1@4 g2 ~ g1@4 g1@2 c#2@2 d2@2", BR: "d2@4 ~@2 d2 ~ d2@2 a1@2 d2@2 a1@2", BS: "[c2@47 ~]/3",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@38 A B C D E F G@2 H I D@2 J F G@2 K L M N O P Q F R G S I F J@2 F T U V I J W ~@20 X F Y G I@2 Z F@2 AA AB AC AD AE
  AF AG AH F AI G AJ AK AL AM Q F AN G AO AP AQ@3 ~
>`.pickRestart({
  A: "[e3,a3,c4,e4]@4 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4] ~ [e3,a3,c4,e4]@2", // Am
  B: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]!4 [e3,a3,c4,e4]@2", // Am
  C: "[e3,a3,c4,e4]@4 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@4", // Am
  D: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4] [e3,a3,c4,e4]@2 [e3,a3,c4,e4] [e3,a3,c4,e4]@2", // Am
  E: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [g3,c4] ~ [e3,g3,c4]@2, ~@3 e4, ~@6 e3 ~", // C C5 C
  F: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2", // C
  G: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4] [d3,a3,d4,f4]@2 [d3,a3,d4,f4] [d3,a3,d4,f4]@2", // Dm
  H: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3] ~ [d3,g3]@2, ~@3 [b3,g4]", // G G5 Em
  I: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4] [d3,g3,b3,g4]@2", // G
  J: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!3", // C
  K: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!3", // E
  L: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2", // E
  M: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@2", // F
  N: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4] [f3,a3,c4,f4]@2 [f3,a3,c4,f4] [f3,a3,c4,f4]@2", // F
  O: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]!4 ~@2", P: "~ [g3,b3,g4] [d3,g3,b3,g4] [d3,g3,b3] ~@4, d3 ~@3",
  Q: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  R: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4]!6", S: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!3",
  T: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4] a3 [d3,a3] [d3,a3,d4,f4]!3, ~@3 [d4,f4]@2 ~@3, ~@6 d3 ~@9", // Dm D5 Dm
  U: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4] [d3,a3,d4,f4]@2 [d3,a3,d4,f4]!2 [d3,g3,b3,g4]", // Dm G
  V: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [b3,g4] ~ [g3,b3,g4]@2, ~@3 d3, ~@6 g3 ~", // G Em G
  W: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]!4 [e3,g3]@2", // C Em
  X: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4]@3 ~ [e3,g3,c4]@2 [e3,g3,c4,e4]@4, ~@3 e4@3 ~@2", // C
  Y: "[d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~ a3@2 [d3,a3]@2 [d3,a3,d4,f4]@2 [d3,a3,d4,f4] ~ [d3,a3,d4,f4]@2, ~@3 [d4,f4]@2 ~@3, ~@6 d3 ~@9", // Dm D5 Dm
  Z: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  AA: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4", // C
  AB: "[d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~ [d3,a3,d4]@3 ~ [d3,a3,d4]@2 [d3,a3,d4] ~ [d3,a3,d4]@2, ~@3 f4@3 f4@2", // Dm D5
  AC: "[d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~ [d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4,f4]@4, ~@3 f4@3 ~@2", // Dm D5 Dm
  AD: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2", // G
  AE: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@4", // G
  AF: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@3 ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  AG: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4] ~@3", // C
  AH: "~@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [g3,c4] ~ [e3,g3,c4]@2, ~@3 e4, ~@6 e3 ~", // C C5 C
  AI: "[d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~ [d3,a3,d4,f4]@4 [d3,a3,d4,f4]@2 d3@2 [d3,a3]@2, ~@3 [d4,f4], ~@12 a3 ~@3", // Dm D5 Dm
  AJ: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4] d3 [d3,g3], ~@3 [b3,g4], ~@12 g3 ~@3", // G G5 Em
  AK: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]!4 [d3,g3,b3,g4]@2", // G
  AL: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@3 ~ [e3,g3,c4,e4]@2 [e3,g3]@2 [e3,g3]@2, ~@3 [c4,e4]", // C Em C
  AM: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3] ~ [e3,g3]@2, ~@3 [c4,e4]", // C Em C
  AN: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4] [d3,a3,d4,f4]@2 [d3,a3,d4,f4] [d3,a3]!2, ~@3 [d4,f4]", // Dm D5 Dm
  AO: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4] [g3,b3,g4] d3, ~@12 d3 ~@3", // G
  AP: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4] [g3,b3,g4] [d3,g3] [d3,g3,b3,g4] [d3,g3,b3,g4]@2, ~@6 d3 ~@9", // G G5 G
  AQ: "[e3,g3,c4,e4]/3", // C
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.2)

// other · soprano sax
const soprano_sax = note(`<
  ~@26 A@2 B@2 ~@4 C@3 ~ D@2 ~@3 E F ~@2 G H I ~@5 J K ~@27 L@2 ~ M N ~ O P ~@19 Q R S T@2 U@2 V@2 W X Y Z AA@4 ~@2
>`.pickRestart({
  A: "[~@11 e4@3 a4@4 b4@13 ~]/2", B: "[~@15 f4@2 e4@2 f4@4 e4@3 f4@6]/2",
  C: "[~@10 f4@2 a4@3 b4@3 d5@4 e5@3 ~ f5@8 g5@14]/3", D: "[e5@6 ~ d5@2 ~ c5@2 d5@2 d#5 e5@3 ~ a4@4 ~ b4@7 ~]/2",
  E: "g5@2 [f5,f#5] e5@2 g5@2 g5@8 ~", F: "~@2 g5@3 e5@4 d5@5 ~@2", G: "e4@5 ~ e4@7 ~@3, ~@5 d4@2 ~@9", H: "~@7 g4",
  I: "a4@3 b4@9 ~@4", J: "~@4 b4@2 c5@4 c#5 d5@5", K: "c5@15 ~", L: "[~@11 e4@3 a4@4 b4@11 ~@3]/2",
  M: "~@5 a5 ~ g5 ~ a5@3 g5@2 e5@2", N: "d5 e5@2 d5@4 ~", O: "~@5 e5@2 d5", P: "~ c5 a4 g4@4 ~", Q: "~@2 g5@5 f5",
  R: "~ f5@3 ~ e5@11", S: "~@4 e5@7 f5@4 [d#5,e5]", T: "[~ d5@9 a4@10 ~ d5@5 [d5,e5] c5@2 ~ c5@2]/2",
  U: "[~@2 [c5,d5] b4@16 ~ b4@4 c5@3 ~ d5@4, ~@28 e5 ~@3]/2", // Csus2
  V: "[c5@5 ~ g4 a4 c5@2 d5@2 d5@2 c5@5 ~ g5@3 ~ g5@5 ~ g5 ~, ~@12 e5 ~@16 f5@2 ~]/2", W: "e5 f5@2 e5@11 ~@2",
  X: "~@4 e5@6 f5@3 ~ d5@2", Y: "~ d5 d#5@12 ~@2", Z: "~@6 d5@3 d5@7",
  AA: "[c5@2 d5 c5@3 b4@7 ~ b4@4 ~@2 b4@4 c5@4 d5@2 c5@21 ~@13]/4",
})).s("gm_soprano_sax").gain(0.56)

// other · pan flute
const pan_flute = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 C@2 G@2 H@2 ~@49 I F@2 C@2 G@2 H@2 ~@35 I F@2 C@2 G@2 J@2 F@2 C@2 G@2 ~@4
>`.pickRestart({
  A: "[~@4 g6@25 ~ f6@2]/2", B: "[f6@4 e6@14 ~@2 e6@3 ~ e6@4 f6@4]/2", C: "[d6@19 ~ d6@3 ~ d6@6 c6@2]/2",
  D: "[c6@4 b5@15 ~ b5@4 c6@4 d6@4]/2", E: "[c6@19 ~ g6@3 ~ g6@6 f6 ~]/2", F: "[f6@4 e6@15 ~ e6@3 ~ e6@4 f6@4]/2",
  G: "[c6@2 b5@7 ~ b5@2 c6@2 d6@2]/2", H: "[c6@15 ~]/2", I: "~@4 g6@3 ~ g6@6 f6 ~", J: "[c6@18 ~@2 g6@3 ~ g6@6 f6 ~]/2",
})).s("gm_pan_flute").gain(0.2).pan(0.3)

// chords · piano
const piano = note("<~@58 A@2 ~@70>".pickRestart({
  A: "[~@6 [a3,c4]@2 ~@2 g3 ~ [g3,b3] [a3,c4] [g3,b3]@2, ~@5 d3@5 ~ d3@5, ~@2 d4 ~, ~@8 b3@3 ~@5]/2", // Am G Am G
})).s("gm_piano").gain(0.56).pan(0.9)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@18 A@2 B@2 C@2 D@2 A@2 C@2 D@2 B@2 C@2 D@2 A@2 ~@36 A@2 B@2 C@2 D@2 ~@46
>`.pickRestart({
  A: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", // A5
  B: "[c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // C5
  C: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  D: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [d3,g3] ~", // G5
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.4)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@2 A@2 B@6 C@2 D@6 E@7 F@8 G@4 H@6 I@8 J@7 K@3 L@8 M@6 N@8 F@8 O@6 L@8 P@8 L@8 Q@8 ~
>`.pickRestart({
  A: "[g3,c4,e4]/2", B: "[[a3,f4] b3 [c4,e4], d4@65 ~@31, ~@32 g4@57 ~@7]/6", C: "[c4,e4,g4]/2",
  D: "[[f4,a4]@16 b3@16 [c4,e4]@13 ~@3, d4@2 ~, ~@16 g4@29 ~@3]/6", // F C
  E: "[a3@31 g3@32 [a3,f4]@32 [b3,g4]@17, [c4,e4]@9 d4@7]/7", // Dm Em C
  F: "[~@15 [c4,e4]@32 f4@32 b3@32 [c4,e4]@17, ~@15 a3@64 g4@49, ~@47 d4@64 ~@17]/8", // C
  G: "[~@15 [a3,f4]@32 [b3,g4]@17, ~@15 d4@49]/4", H: "[~@15 a3@64 g3@17, ~@5 [c4,e4]@27]/6",
  I: "[~@16 [a3,f4]@31 ~ g4@31 a3@33 g3@16, ~@15 d4@64 ~@49, ~@47 b3@32 [c4,e4]@49]/8", // Dm C
  J: "[~@15 [a3,d4,f4]@32 [b3,e4,g#4]@32 [c4,f4,a4]@32 ~]/7", K: "[[b3,d4,g4]@31 [g3,c4,e4]@17]/3",
  L: "[~@15 [a3,f4]@32 b3@32 ~@32 g3@17, ~@15 d4@64 [c4,e4]@49, ~@47 g4@65 ~@16]/8", // Dm C
  M: "[~@15 [a3,f4]@32 b3@32 [c4,e4]@17, ~@15 d4@64 ~@17, ~@47 g4@49]/6", // Dm C
  N: "[~@15 a3@32 g3@32 [a3,f4]@32 [b3,g4]@17, ~@15 [c4,e4]@64 d4@49]/8", // Dm Em C
  O: "[~@15 [c4,f4,a4]@32 [b3,d4,g4]@32 [g3,c4,e4]@17]/6", // F G C
  P: "[~@15 [a3,f4]@32 b3@32 ~@32 g3@17, ~@15 d4@64 [c4,e4]@49, ~@47 g4@64 ~@17]/8", // Dm C
  Q: "[~@15 [a3,f4]@32 b3@32 [c4,e4]@46 ~@3, ~@15 d4@64 ~@49, ~@47 g4@77 ~@4]/8", // Dm C
})).s("gm_synth_strings_1").gain(0.4)

// chords · percussive organ
const percussive_organ = note(`<
  ~@2 A@2 B@2 C@2 D@2 A@2 B@2 E@2 F@2 ~@22 G@4 H@4 G@4 I@2 J@2 ~@4 K@2 L@4 K@4 M@4 K@2 N@4 O@4 P@4 Q@4 R@2 S@2 K@2 T@4
  U@2 K@2 T@4 K@4 M@4 K@4 M@4 K@2 ~@2
>`.pickRestart({
  A: "[g4,c5,e5]/2", B: "[a4,d5,f5]/2", C: "[g4,b4,d5]/2", D: "[[g4,c5,e5]@31 ~]/2", E: "[[b4,d5], g4@15 ~]/2",
  F: "[[g4,c5,e5]@29 ~@3]/2", G: "[a5 g5, [c6,e6]]/4",
  H: "[[a5,f6]@32 ~@12 f1@2 ~@3 d2@2 ~@10 [d4,e4] [f4,g4] ~, d6, ~ [b5,g6], ~@44 e1 ~ g1@2 c2@3 e2@2 a2@2 c3@2 f3@2 a3@2 ~@3, ~@47 [a1,b1]@3 ~@2 [f2,g2]@2 b2@2 [d3,e3]@2 g3@2 [b3,c4]@2 ~@2]/4", // Dm Dsus2 Fsus2 Em Asus2 Fsus2 Dsus2 Cmaj7
  I: "[a5,d6,f6]/2", J: "[g#5,b5,e6]/2", K: "[g5,c6,e6]/2", L: "[[a5,f6]@8 b5@3 a5 b5@4, d6, ~ g6]/4",
  M: "[[a5,f6] [b5,g6], d6]/4", N: "[a5 g5, [e5,c6]@63 ~]/4",
  O: "[[f5,a5]@32 ~@21 [f1,g1] [a1,b1] c2 [d2,e2] [f2,g2] a2 [b2,c3] [d3,e3] [f3,g3] ~@2, d6, ~ [g5,b5]]/4", // F Fsus2 Asus2 Dsus2 Fsus2 Cmaj7 Dsus2 Fsus2 …
  P: "[[c6,e6] [d6,f6], a5@63 ~]/4", Q: "[[b5,d6] [c6,e6], g5@63 ~]/4", R: "[[a5,c6], f5@15 ~]/2", S: "[g5,b5,d6]/2",
  T: "[[a5,f6]@8 b5@6 a5 b5, d6, ~ g6]/4", // Dm
  U: "[~@16 f1 g1 ~@8 a3 [b3,c4] [d4,e4] [f4,g4] ~@2, [g5,c6,e6], ~@17 a1@2 d2@2 g2@2 c3@2 f3@2 ~@5, ~@9 [b1,c2] [e2,f2] [a2,b2] [d3,e3] g3 ~@2]/2", // Cmaj7 Dsus2 Fsus2 C Cmaj7 Fmaj7 Asus2 Dsus2
})).s("gm_percussive_organ").gain(0.16).pan(0.6)

// chords · percussive organ · soft notes
const percussive_organ_soft = note("<~@18 A@4 B@2 C@2 D@4 E@4 B@2 C@2 F@2 ~@43 G H ~@45>".pickRestart({
  A: "[a4 g4, [c5,e5]]/4", B: "[a4,d5,f5]/2", C: "[g4,b4,d5]/2", D: "[[c5,e5]@32 [d5,f5]@31 ~, a4@63 ~]/4",
  E: "[[b4,d5] [c5,e5], g4]/4", F: "[[a4,c5,e5]@31 ~]/2", G: "~@14 [a3,b3,c4] [d4,e4]", H: "f4 ~@15",
})).s("gm_percussive_organ").gain(0.08).pan(0.6)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@2 A@8 B C@8 ~@21 D@2 E@2 F@2 G@8 H@6 I@2 J K L M N O P Q R J S T@2 U ~@7 V@5 W@8 X U R J Y S Z U AA O K AB S@2 U@2
  AC U AD@2 AE@2 AA U N U AF K AG@2 AH@3 ~
>`.pickRestart({
  A: "[[e3,g3,c4,e4]@31 ~@2 f4@30 ~ [g3,b3,g4]@31 ~ e4@31 e3, ~@31 d3@31 ~ d3@31 ~ [e3,g3,c4]@32 ~, ~@32 [a3,d4]@31 ~@65]/8", // C G C D5
  B: "[g3,c4,e4]", C: "[~@16 [d4,f4]@31 ~ [b3,g4]@31 ~ [c4,e4]@48, ~@15 [d3,a3]@31 ~ [d3,g3]@31 ~ [e3,g3]@49]/8",
  D: "[[e3,a3,c4,e4]@15 [e3,g3,c4,e4]]/2", E: "[e3,g3,c4,e4]/2", F: "[[d3,a3,d4,f4]@31 ~]/2",
  G: "[[d3,g3,b3,g4]@31 ~ [c4,e4]@31 ~ [g3,c4,e4]@31 ~ f4@32, ~@31 [e3,a3]@32 e3@31 ~ [d3,a3,d4]@32 ~]/8", // G C A5 D5
  H: "[~ e4@30 ~ [c4,f4]@31 ~ [b3,g4]@32, [e3,g#3,b3]@31 [f3,a3]@32 [d3,g3]@33]/6", // F5 Em E F G5
  I: "[[e3,g3,c4,e4]@22 [e3,g3,c4,e4]@9 ~]/2", J: "[d3,a3,d4,f4]", K: "[d3,a3,d4,f4]@5 [d3,a3,d4,f4]@3",
  L: "[d3,g3,b3,g4]@7 [d3,g3,b3,g4]", M: "[d3,g3,b3,g4]@15 ~", N: "[e3,g3,c4,e4]@7 [e3,g3,c4,e4]",
  O: "[e3,g3,c4,e4]@15 ~", P: "[e3,g3,c4,e4]@13 ~ [e3,g3,c4,e4]@2", Q: "[e3,g3,c4,e4]@5 [e3,g3,c4,e4]@3",
  R: "[d3,a3,d4,f4]@7 [d3,a3,d4,f4]", S: "[d3,g3,b3,g4]",
  T: "[[d3,g3,b3,g4]@15 ~ c4@14 [e3,g3,c4]@2, ~@15 [e3,g3]@14 ~@3, ~ e4]/2", U: "[e3,g3,c4,e4]",
  V: "[~@16 [c4,e4]@31 ~ [d4,f4]@31 d3, ~@15 [e3,a3]@31 ~ [d3,a3]@32 ~]/5", // C Dm A5 D5
  W: "[[g3,b3,g4]@31 ~ e4@31 ~ [c4,f4]@31 ~ [g3,b3,g4]@31 e3, ~@31 [e3,g3,c4]@32 [f3,a3]@32 d3@31 ~@2]/8", // G F5 G C F
  X: "[g3,c4,e4]@7 [e3,g3,c4,e4]", Y: "[d3,g3,b3]@7 [d3,g3,b3], g4", Z: "[e3,g3,c4]@13 ~ [e3,g3,c4]@2, e4@7 ~",
  AA: "[e3,g3,c4]@7 [e3,g3,c4], e4", AB: "[d3,a3,d4,f4]@15 ~", AC: "[e3,g3,c4]@7 [e3,g3,c4,e4]",
  AD: "[[d3,a3,d4,f4]@11 [d3,a3,d4,f4]@5]/2", AE: "[[d3,g3,b3,g4]@11 [d3,g3,b3,g4]@5]/2",
  AF: "[d3,a3,d4,f4]@13 ~ [d3,a3,d4,f4]@2", AG: "[[d3,g3,b3,g4]@15 ~ [g3,b3,g4]@15 ~, ~@15 d3@15 ~@2]/2",
  AH: "[e3,g3,c4,e4]/3", // C
})).s("gm_distortion_guitar").gain(0.11).pan(0.9)

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

// … 44 more lines

More by Nomadi