Strudelify
Un pugno di sabbia cover art

Nomadi 40

Un pugno di sabbia

Nomadi

KeyA majorTempo73 bpm
0:00/0:00
// Un pugno di sabbia — Nomadi
// 73 bpm, 4/4, key A 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 60 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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(`<
  A B C D E ~@2 E F G H I J K L M N O P Q R S T U V W X Y Z AA@2 AB AC@2 AD@2 AE AF AG AH AI AJ AK AL AM AN AO AP AQ U
  AR AS AT U AR AS AU@4
>`.pickRestart({
  A: "a1@12 c#2 d2@2 e2", B: "e1@15 ~ b2@8 e2@8", C: "f#2@14 c#2 ~ f#2@8 c#2@2 f#2@6", D: "e2@15 ~ e2@16", E: "a1",
  F: "~@14 d2 d#2", G: "e2@6 b2@4 d2@2 c3 f3@2 ~", H: "a2@14 e2 ~ a2@8 e2@4 d2@4",
  I: "d2@4 d3@9 ~ d2@2 c#2@4 c#3@10 d3@2", J: "g2@4 d2@5 d2 g2@4 d2 d#2", K: "e2@2 e2@3 b2 b2@3 e3 e3@3 d3 b2 e2",
  L: "a1@10 e2 ~ e2@7 ~ a2@6 b1 ~ c#2@4", M: "d2@14 ~@2 e1 ~ f#1@3 ~ g1@5 ~ g#1@4", N: "a1@8 e2@4 a2 ~ e2@2",
  O: "d2@15 ~ a1@2 a1@4 d2@3 ~ a2 ~ d2@4", P: "e1@9 ~ e1 ~ b2@8 d2@4 c3@2 f3@4 ~@2",
  Q: "a1@4 a1@2 ~@2 e2@6 a1 ~ a1@2 e2@3 ~ a2@6 e2@4", R: "d2@7 ~ g2@7 ~ c#2@12 f#2@4",
  S: "g2@13 ~ d2 ~ g1@2 d2@6 g2@4 d2@2 d#2@2", T: "e2@3 ~ e2@6 a2 ~ b2@6 e3 ~ e3@4 d3@4 b2 ~ e2@2",
  U: "a1@7 ~ a1@2 b1@6 c#2@6 e2@5 ~ f2@4", V: "f#2@11 ~ c#2@3 ~ e1@6 e2@4 f#1@2 g#1@4",
  W: "a1@6 ~@2 a1@2 c#2@3 ~ c#2 ~ c#2@8 e2@2 f#2@5 ~", X: "f#1@2 c#2 ~ f#1@4 f#2@6 f2 ~ e2@7 ~ e1@8",
  Y: "e1@8 b2@4 e2@2 f2@2 f#2@8 c3@2 c#3@5 ~", Z: "c#3@2 f#3@5 ~ c#3@2 f#3@2 c#3@2 f#2@2 e2@8 a#2@2 b2@5 ~",
  AA: "[b2@6 e2@4 b2@4 e2@2 f#2@8 f#2@2 c#3 ~ c#3@8 f#3@7 ~ c#3@4 f#2@4 a2@2 a#2@2 b2@2 e3@2 e3@4]/2",
  AB: "~ d3 d3@3 b2 e2@2 a1@8", AC: "[d#2 e2@7 a2@2 e2@4 a2@2 d2@10 g#2@2 a2@6 d3 ~ d3@6 a2@2 d2@4 a1@14 ~@2]/2",
  AD: "[a1@6 b1@3 ~@3 c#2@4 d2@10 g#2@2 a2@8 a1@3 ~ a1@2 d2@6 e1@10 a#2@2 b2@4]/2", AE: "~@2 e3@6 d3@2 g3@6 a2@15 ~",
  AF: "e2@5 ~ a2@6 e2@4 d2@11 ~ a2@4", AG: "c#2@3 ~ c#2@12 g2@7 ~ g2@8",
  AH: "g1@6 d2@4 g2@2 d2@4 e2@3 ~ e2@6 a#2 ~ b2@4", AI: "~@2 e3@6 d3@4 b2@4 a1@7 ~ a1@2 b1@6",
  AJ: "c#2@6 ~@2 e2@4 f2@3 ~ f#2@16", AK: "e1 ~ a#1@4 b1@4 e2@2 b1 ~ g#1 ~ a1@6 ~@2 a1@2 c2@6",
  AL: "c#2 ~ c#2@2 c#2@4 ~@2 e2@2 f2@4 f#2@4 f#2@11 ~", AM: "e2@3 ~ e2@12 e2@4 e2@4 e2@8",
  AN: "f#2@5 c3 c#3@2 c#3 f#3 f#3@2 c#3@2 f#2 f2", AO: "e2@6 a#2 b2 b2@3 e2@3 e2 f2",
  AP: "f#2@4 c3 c#3@5 f#1 f#2@2 c#3@2 a2", AQ: "e2@3 ~ e2@4 a#2@2 b2@2 e3@4 b2@2 b2@4 d3@6 b2@2 e2@2",
  AR: "f#1@2 c#2 ~ f#2@4 f#2@2 c#2@6 e1@2 e2@4 e1@2 e2 ~ f#1 ~ g#1@4",
  AS: "a1@8 ~@2 a1@2 c#2@2 ~@2 c#2@5 ~ e2@5 ~ f#2@3 ~", AT: "f#2@7 ~ f#2 ~ c#2@5 ~ e1 ~ e1@4 e2@4 f#1 ~ g#1@4",
  AU: "[f#2@7 ~ f#2 ~ c#2@6 ~ e1@2 ~ e1@5 e2@5 ~ f#1@2 ~ g#1@7 a1@58 ~@29]/4",
})).s("gm_fretless_bass").gain(0.4)

// chords · french horn
const french_horn = note("<A B C D ~@10 E F E F G@2 H I J K L K M@2 ~@32>".pickRestart({
  A: "[a3,c#4]@31 ~", B: "[g#3,b3]@31 ~", C: "[f#3,c#4]@31 ~", D: "[g#3,b3]", E: "[e3,e4]", F: "[f#3,f#4]",
  G: "[[g3,b3] [a3,c#4], e4]/2", H: "d4 c#4, a3@31 ~", I: "[g3,d4] [b3,e4]", J: "a4 g#4", K: "c#4@31 ~",
  L: "a3@15 ~ b3@15 ~", M: "[a3@15 ~ b3@32 ~@16]/2",
})).s("gm_french_horn").gain(0.4)

// other · brass section
const brass_section = note("<A B C D ~@23 E ~@10 F@2 G ~@3 H I J I K L M N O P M N Q@4>".pickRestart({
  A: "~@4 c#5 ~ c#5 ~ e5 ~ b4@2 ~@2 c#5@2 ~@2 e5@2 ~@2 c#5 ~ e5@2 ~@2 c#5@2 ~@2",
  B: "b4@2 ~@2 e5@7 ~ b4 ~ b4@2 ~@2 e5@2 ~@2 b4 ~ e5@2 ~@2 b4@2 ~@2", C: "c#5 ~ f#5@2 ~@2 f#5@22 ~@4", D: "[b3,e5]",
  E: "[e2,e3] ~", F: "[~@20 d5 ~@3 e5 ~ d5 ~@3 b4@16 ~@6 a4@3 ~ b4@3 ~ e5@3 ~]/2", G: "d5 ~ b4@2 ~@2 e5@8 ~@18",
  H: "~ [e2,e3]", I: "~@4 c#5 ~ c#5 ~ c#5@3 ~ c#5 ~ c#5@14 ~@4", J: "~@4 b4 ~ b4 ~ b4@3 ~ g#4 ~ b4@3 ~ g#4@12 ~@2",
  K: "~@4 e5 ~ e5 ~ e5@3 ~ d5 ~ e5@3 ~ b4@12 ~@2", L: "e5 ~@15", M: "~ f#5@2 c#5 b4@4", N: "e5@29 ~@3",
  O: "f#5@15 ~ e5@15 ~", P: "e5@5 ~@11", Q: "[f#5@16 ~ e5@22 ~@2 e5@58 ~@29]/4",
})).s("gm_brass_section").gain(0.64).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B C D ~@11 E ~ F ~@4 G ~ H@2 ~ I@2 J@3 K L K M ~@3 N O ~ P ~@6 Q@2 R@2 Q@2 S@5
>`.pickRestart({
  A: "[a4,a5]", B: "[g#4,g#5]",
  C: "[a4,a5]@17 ~@4 [b4,b5]@2 [c#5,c#6]@2 [b4,b5]@2 ~ a5@4, ~@19 a5@2 ~@11, ~@20 a4@2 ~@5 a4@3 ~@2", D: "[e5,e6]",
  E: "f#4@3 g4 f#4@2 e4 d4", F: "f#4@12 g4@4 f#4@7 ~ e4@4 d4@4", G: "a3 g#3",
  H: "[~@27 a5@2 [b5,c#6]@2 ~ e6@14 ~@18, ~@31 d6@2 ~@31]/2", I: "[~@20 a4@8 g#4@8 f#4@7 c#4@5 b3@14 a3@2]/2",
  J: "[g#3@11 e3@5 f#3@8 c#4@23 b3@7 g#3@2 e3@24 ~@16]/3", K: "~@4 f#4@3 g4", L: "f#4@8 e4@4 d4@5 ~@15",
  M: "f#4@7 ~ e4@4 d4@4 ~@16", N: "~ a3", O: "g#3 ~", P: "~@11 a5@2 [b5,c#6]@2 ~ e6@14 ~@2, ~@15 d6@2 ~@15",
  Q: "[~@4 [e5,e6] ~ [e5,e6]@2 [e5,e6]@2 [e5,e6] [e5,e6]@2 ~ [f#5,f#6]@4 [e5,e6]@7 [f#5,f#6]@2 [g#5,g#6]@2 ~ [a5,a6]@5 [f#5,f#6]@8 ~ [c#5,c#6]@2 [e5,e6]@18]/2", // E F# E F# G# A F# C# …
  R: "[~@4 [e5,e6] [e5,e6]@2 [e5,e6]@2 [e5,e6]@2 [e5,e6]@2 ~ [f#5,f#6]@4 [e5,e6]@8 [f#5,f#6]@2 [g#5,g#6]@2 [a5,a6]@6 [f#5,f#6]@8 [c#5,c#6]@2 [e5,e6]@18]/2", // E F# E F# G# A F# C# …
  S: "[~@4 [e5,e6] [e5,e6]@2 [e5,e6]@2 [e5,e6]@2 [e5,e6]@2 ~ [f#5,f#6]@4 [e5,e6]@8 [f#5,f#6]@2 [g#5,g#6]@2 [a5,a6]@6 [f#5,f#6]@8 [c#5,c#6]@2 [e5,e6]@86 ~@28]/5", // E F# E F# G# A F# C# …
})).s("gm_string_ensemble_1").gain(0.4).pan(0.8)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@14 A@4 B@5 C D E@2 F@8 G@8 H@2 I@4 ~@11>".pickRestart({
  A: "[[c#4,e4]@31 ~ f#4@11 g4@5 f#4@8 e4@4 ~@4 e4@31 ~ f#4@11 g4@5 f#4@8 e4@3 d4@5, a3, ~@31 d4@29 d4@5 ~@30 d4@28 ~@5, ~@63 c#4@32 ~@33]/4", // C#m
  B: "[[g3,b3]@32 [a3,c#4]@31 d5@16 c#5@16 [g4,d5]@32 a4@16 g#4@17, e4@63 [f#4,a4]@32 b4@65, ~@127 e5@33]/5", // G A G5 F#m
  C: "[c#4,c#5]@27 [e4,e5]@5", D: "[f#4,f#5]@15 [g#4,g#5]@17",
  E: "[[e5,e6]@15 ~ g#6@15 [a5,a6]@16 [b5,b6]@16 ~, ~@15 g#5@16 ~@33]/2", // E A B
  F: "[~@16 [c#5,f#5,a5]@31 [b4,e5,g#5]@32 [c#5,f#5,a5]@32 [b4,e5,g#5]@33 [c#4,e4]@31 ~ f#4@11 g4@5 f#4@8 e4@4 ~@4 e4@31 ~ f#4@11 g4@5, ~@9 a3@7, ~@175 d4@29 d4@5 ~@30 d4@17, ~@207 c#4@32 ~@17]/8", // F#m E F#m E C#m
  G: "[f#4@8 e4@3 d4@5 [g3,b3]@32 [a3,c#4]@31 d5@16 c#5@16 [g4,d5]@32 a4@16 g#4@17 [c#4,c#5]@27 [e4,e5]@5 [f#4,f#5]@15 [g#4,g#5]@17 [e5,e6]@15 g#5, ~@16 e4@63 [f#4,a4]@32 b4@65 ~@80, ~@143 e5@33 ~@80]/8", // G A G5 C# E F# G# E …
  H: "[g#6@15 [a5,a6]@16 [b5,b6]@16 ~@17]/2", I: "[[c#5,f#5,a5]@31 [b4,e5,g#5]@32 [c#5,f#5,a5]@32 [b4,e5,g#5]@33]/4",
})).s("gm_string_ensemble_2").gain(0.17).pan(0.6)

// chords · piano
const piano = note(`<
  A B C D E@2 F E G H I J K L M N M O P Q R S T U V U W X ~@3 Y Z AA Z AB AC AD AE AF AG AH AI AJ AK ~@15
>`.pickRestart({
  A: "[c#5,e5,a5]@19 ~@5 [e5,g#5]@2 [c#5,e5,a5]@5 ~, ~@24 b4 ~@7", B: "[b4,e5,g#5]@23 ~ [b4,e5,g#5]@2 [b4,e5,g#5]@6",
  C: "[a4,c#5,f#5,a5]@19 ~ [f#5,a5]@2 [a4,c#5,f#5,a5]@3 ~ [a4,c#5,f#5,a5]@4 ~@2, ~@20 [a4,c#5] ~@11", // F#m A
  D: "[a4,b4,e5]@11 ~@5 [b4,e5,g#5]@16", E: "[e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~",
  F: "[f#4,a4,d5]@7 ~ [f#4,a4,d5]@7 ~ [f#4,a4,d5]@7 ~ [f#4,a4,d5]@6 ~@2", // D
  G: "[f#4,a4,d5]@7 ~ [f#4,a4,d5]@7 ~ [f#4,a4,d5]@7 ~ [f#4,a4,d5]@8", // D
  H: "[e4,g4,b4]@7 ~ [e4,g4,b4]@7 ~ [e4,g4,b4]@7 ~ [e4,g4,b4]@7 ~", // Em
  I: "[e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~ [e4,a4,c#5]@8", // A
  J: "[f#4,a4,d5]@7 ~ [f#4,a4,d5]@7 ~ [f#4,a4,c#5]@7 ~ [f#4,a4,c#5]@6 ~@2", // D F#m
  K: "[d4,g4,b4]@7 ~ [d4,g4,b4]@7 ~ [d4,g4,b4]@6 ~@2 [d4,g4,b4]@7 ~", // G
  L: "[b3,e4,a4]@7 ~ [b3,e4,a4]@7 ~ [b3,e4,g#4]@7 ~ [b3,e4,g#4]@8", // Esus4 E
  M: "[a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~", // A
  N: "[a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~", // D
  O: "[a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~ [a3,d4,f#4]@8", // D
  P: "[e4,g4,b4]@7 ~ [e4,g4,b4]@7 ~ [e4,g4,b4]@7 ~ [e4,g4,b4]@6 ~@2", // Em
  Q: "[e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~ [e4,a4,c#5]@6 ~@2 [e4,a4,c#5]@7 ~", // A
  R: "[f#4,a4,d5]@6 ~@2 [f#4,a4,d5]@7 ~ [f#4,a4,c#5]@7 ~ [f#4,a4,c#5]@7 ~", // D F#m
  S: "[d4,g4,b4]@7 ~ [d4,g4,b4]@7 ~ [d4,g4,b4]@7 ~ [d4,g4,b4]@6 ~@2", // G
  T: "[b3,e4,a4]@7 ~ [b3,e4,a4]@6 ~@2 [b3,e4,g#4]@7 ~ [b3,e4,g#4]@8", // Esus4 E
  U: "[e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~ [e4,g#4,c#5]@7 ~ [e4,g#4,c#5]@6 ~@2", // A C#m
  V: "[f#4,a4,c#5]@6 ~@2 [f#4,a4,c#5]@7 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4]@7 ~", // F#m E
  W: "[f#4,a4,c#5]@7 ~ [f#4,a4,c#5]@6 ~@2 [e4,g#4,b4]@7 ~ [e4,g#4,b4]@7 ~", X: "[e4,g#4,b4]@7 ~ [e4,g#4,b4]@8 ~@16",
  Y: "~@16 [a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~", Z: "[a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~ [a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~",
  AA: "[a3,d4,f#4]@7 ~ [a3,d4,f#4]@7 ~ [a3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~", // D A
  AB: "[a3,d4,f#4]@7 ~ [a3,d4,f#4]@8 [e4,g4,b4]@7 ~ [e4,g4,b4]@7 ~", // D Em
  AC: "[e4,g4,b4]@7 ~ [e4,g4,b4]@6 ~@2 [e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~", // Em A
  AD: "[e4,a4,c#5]@6 ~@2 [e4,a4,c#5]@7 ~ [f#4,a4,d5]@6 ~@2 [f#4,a4,d5]@7 ~", // A D
  AE: "[f#4,a4,c#5]@7 ~ [f#4,a4,c#5]@7 ~ [d4,g4,b4]@7 ~ [d4,g4,b4]@7 ~", // F#m G
  AF: "[d4,g4,b4]@7 ~ [d4,g4,b4]@6 ~@2 [b3,e4,a4]@7 ~ [b3,e4,a4]@6 ~@2", // G Esus4
  AG: "[b3,e4,g#4]@7 ~ [b3,e4,g#4]@8 [e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~", // E A
  AH: "[e4,g#4,c#5]@7 ~ [e4,g#4,c#5]@6 ~@2 [f#4,a4,c#5]@6 ~@2 [f#4,a4,c#5]@7 ~", // C#m F#m
  AI: "[e4,g#4,b4]@7 ~ [e4,g#4,b4]@7 ~ [e4,a4,c#5]@7 ~ [e4,a4,c#5]@7 ~", // E A
  AJ: "[e4,g#4,c#5]@7 ~ [e4,g#4,c#5]@6 ~@2 [f#4,a4,c#5]@7 ~ [f#4,a4,c#5]@6 ~@2", // C#m F#m
  AK: "[e4,g#4,b4]@7 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4]@8", // E
})).s("gm_piano").gain(0.4).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@6 A@2 ~@2 B C D E F G H I J K L M N O P Q R S T U V W X Y X Z AA X AB AC AD AE AF AG AH AI AJ AK AL AM AN Q AO AM AN
  Q AO ~@3
>`.pickRestart({
  A: "[~@30 [e3,c#4] ~ [e3,a3,c#4,e4]@22 ~@10, ~@15 [e2,a2]@12 ~@5]/2", // C#m A A5
  B: "~@24 [a2,e3,a3,c#4,e4]@2 ~ [c#4,e4]@3 [a2,e3,a3,c#4,e4]@2, ~@12 e2@3 ~, ~@26 [a2,e3,a3]@3 ~@3", // A C#m A A5
  C: "[a2,d3,a3,d4,f#4]@7 ~ [a2,d3,a3,d4,f#4]@8 [c#3,f#3,a3,c#4,f#4]@8 [c#3,f#3,a3,c#4,f#4]@8, ~ f#2", // D F#m
  D: "~ g4@7 [d3,g3,b3,g4]@6 [b3,g4]@2 [b3,g4]@4 ~@4 [b2,d3,g3,b3,g4]@8, g2@3 ~, [b2,d3,g3,b3] ~@3", // G Em G
  E: "[e3,b3,e4]@4 ~ e4@3 [b2,e3,a3,b3,e4]@4 [b2,e3,a3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@4 [e2,b2,e3,g#3,b3,e4]@4 [b2,e3,g#3,b3,e4]@4, e2@3 ~@5, ~ [b2,e3,a3,b3] ~@6", // E5 Esus4 E Esus4
  F: "~@2 [e3,a3,c#4,e4]!6", G: "[d3,a3,d4,f#4]!8", H: "[e3,a3,c#4,e4]!8", I: "[d3,a3,d4,f#4]!6 [d3,a3,d4,f#4]@2",
  J: "~ e4@4 [e3,g3,b3]@3 ~ [b3,e4]@3 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4, [e3,g3,b3] ~ [e3,g3] ~@5", // Em E5 Em
  K: "[e3,a3,c#4,e4] [e3,a3,e4] [e3,a3,c#4,e4] [e3,e4] [e3,a3,c#4,e4]!4", L: "[d3,a3,d4,f#4]!4 [f#3,a3,c#4,f#4]!4",
  M: "[d3,g3,b3,g4]!8", N: "[e3,a3,b3,e4]!4 [e3,g#3,b3,e4]!2 [e3,g#3,b3,e4]@2",
  O: "~ [c#4,e4]@3 ~ [a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 [e3,a3,c#4,e4]@4 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@4, [e3,a3] e3 ~@6", // C#m A C#m A5
  P: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4] b3 [e3,g#3,b3,e4]@2 [g#3,b3,e4] [b3,e4] [e3,g#3,b3,e4] [g#3,b3,e4] [e3,g#3,b3,e4]@2, ~@3 f#4 ~ e3 ~@2", // F#m E E5 E
  Q: "[e3,a3,c#4,e4]@2 ~ [a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [e3,g#3,c#4,e4]@2 [c#4,e4]@2 [e3,g#3,c#4,e4] [g#3,c#4,e4] [e3,g#3,c#4,e4]@2", // A C#m
  R: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] [b3,f#4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,e4]@2 [g#3,b3,e4] b3, ~@12 b3 ~ e3@2", // F#m B5 E
  S: "[e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3]@6 [f#3,a3,c#4,f#4] [f#3,a3] [f#3,a3,c#4,f#4]@8 [f#3,a3,c#4,f#4]@4 [f#3,c#4,f#4]@4, ~@2 e4 ~@5", // E F#m F#5
  T: "[f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@6 [e3,g#3,b3,e4]!2 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4", // F#m E
  U: "[e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@6 [a3,c#4,f#4] [f#3,a3,c#4,f#4] [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,f#4]@4, ~@14 [a3,c#4] ~", // E F#m F# A
  V: "[f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4,f#4]@2 c#4@2 [f#3,a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [e3,g#3,b3,e4]!2 [e3,g#3,b3,e4]@4 ~@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4, f#4 ~@7", // F#m E
  W: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 ~ [c#4,e4] [e3,a3,c#4,e4]!2", X: "[e3,a3,c#4,e4]!4 [d3,a3,d4,f#4]!4",
  Y: "[d3,a3,d4,f#4]!4 [e3,a3,c#4,e4]!4", // D A
  Z: "[d3,a3,d4,f#4]@4 [d3,a3,d4,f#4]@4 [d3,a3,d4,f#4]@8 ~ e4@4 [e3,g3,b3]@3 ~ [b3,e4]@3 [e3,g3,b3,e4]@4, ~@4 [e3,g3,b3] ~ [e3,g3] ~", // D Em E5 Em
  AA: "[e3,g3,b3,e4]!4 [e3,a3,c#4,e4] [e3,a3,e4] [e3,a3,c#4,e4] [e3,e4]", AB: "[f#3,a3,c#4,f#4]!4 [d3,g3,b3,g4]!4",
  AC: "[d3,g3,b3,g4]!4 [e3,a3,b3,e4]!4", // G Esus4
  AD: "[e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 ~@13 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 [e3,a3,c#4,e4]@4, ~@5 e3 ~@2", // E A
  AE: "[e3,g#3,c#4,e4]@2 [e3,g#3,c#4,e4]@2 [e3,g#3,c#4,e4]@2 [e3,g#3,c#4,e4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4] b3, ~@7 f#4", // C#m F#m
  AF: "[e3,g#3,b3,e4]@2 [g#3,b3,e4] [b3,e4] [e3,g#3,b3,e4] [g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,a3,c#4,e4]@2 ~ [a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2, ~ e3 ~@6", // E E5 E A
  AG: "[e3,g#3,c#4,e4]@2 [c#4,e4]@2 [e3,g#3,c#4,e4] [g#3,c#4,e4] [e3,g#3,c#4,e4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] [b3,f#4]", // C#m F#m B5
  AH: "[e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,e4]@4 [g#3,b3,e4]@2 b3@2 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3]@6 [f#3,a3,c#4,f#4] [f#3,a3], ~@4 b3 ~ e3@2 ~@4 e4@2 ~@2", // E F#m
  AI: "[f#3,a3,c#4,f#4]@8 [f#3,a3,c#4,f#4]@4 [f#3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@6 [e3,g#3,b3,e4]!2", // F#m F#5 F#m E
  AJ: "[e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@6 [a3,c#4,f#4] [f#3,a3,c#4,f#4]", // E F#m
  AK: "[f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4 [f#3,f#4]@4 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4,f#4]@2 c#4@2 [f#3,a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [e3,g#3,b3,e4]!2, ~@6 [a3,c#4] ~ f#4@2 ~@6", // F#m F# F#m E A
  AL: "[e3,g#3,b3,e4] ~ [e3,g#3,b3,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2", // E
  AM: "~@5 [a3,c#4,e4]@3 [e3,a3,c#4,e4]@4 [e3,a3,c#4,e4]@4 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@4 [e3,g#3,c#4,e4]@4, ~ e3 ~@6", // A C#m
  AN: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4] ~@9", // F#m
  AO: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] ~@9", // F#m
})).s("gm_acoustic_guitar_steel").gain(0.13)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@10 A ~ B C D ~@3 E F ~@4 G H I J ~ K L ~@4 M N ~@4 O P Q R S T U V ~@2 H ~@3 H ~@4
>`.pickRestart({
  A: "~@15 e2", B: "~@6 [g3,b3]@2 ~@4 [d3,b3,g4]@2 g3@2 g3@4 b3@2 ~ b2 g2@8, ~@2 b2@3 g4 ~@2, ~@7 d3@4 [g3,b3] ~@4",
  C: "~@3 e2 ~@3 e2", D: "~ [c#4,e4] ~@6", E: "~@5 e4@4 ~@23", F: "~ c#4 ~ [a3,c#4] ~@4",
  G: "~@7 [e3,g#3] ~@3 g#3 ~ e3 ~@2", H: "~@2 [e3,a3,c#4,e4] e3 ~@6 [e3,g#3]@2 ~ e3 ~@2",
  I: "~@7 [e3,g#3] ~@5 b3 ~ [g#3,e4]", J: "~@3 e4 ~@3 a3", K: "~@14 f#3 ~@15 [a3,c#4]@2",
  L: "~ [f#3,a3,c#4] ~ [f#3,a3,f#4] ~ f#3!2 ~@3 [g#3,b3,e4]@2 ~@4, ~@19 e3@4 ~@9", M: "~@21 e4@4 ~@7",
  N: "~@5 c#4 ~ [a3,c#4]", O: "~@15 [e3,g#3]", P: "~@3 g#3 ~ e3 ~@4 [e3,a3,c#4,e4] e3 ~@4",
  Q: "~@2 [e3,g#3]@2 ~ e3 ~@9 [e3,g#3]", R: "~@5 b3 ~ [g#3,e4] ~@6 e4@2", S: "~@3 a3 ~@4", T: "~@30 f#3 ~",
  U: "~@7 [a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,f#4] ~ f#3!2 ~", V: "~ [g#3,b3,e4] ~@6, ~@3 e3@4 ~@25",
})).s("gm_acoustic_guitar_steel").gain(0.07)

// chords · synth strings 1
const synth_strings_1 = note("<A@2 B C ~@10 D@4 E@5 F@4 G@8 H@7 I@2 J K L K L F@4 M@7>".pickRestart({
  A: "[[a3,c#4] [g#3,b3], e4]/2", B: "[a3,c#4,f#4]", C: "[g#3,b3,e4]",
  D: "[~ c#4@31 [f#3,d4]@32 [e3,c#4]@32 [f#3,d4]@32, a3, e3@31 ~@97]/4", // D C#m D
  E: "[[g3,b3]@32 c#4@32 d4@15 c#4@16 [g3,d4]@33 a3@16 g#3@16, e3@64 f#3@31 b3@65, ~ a3@2 ~ e3]/5", // G G5
  F: "[a3@16 g#3@16 [f#3,a3]@15 ~ b3@16 a3@16 g#3@16 [f#3,a3]@16 [e3,g#3,b3]@16, c#4@3 e3@3 ~@2, e3@32 ~@15 g#3@16 ~ c#4@48 ~@16]/4", // F#m E
  G: "[e3@16 [f#3,a3,c#4]@32 [e3,g#3,b3]@32 [f#3,a3,c#4]@32 [e3,g#3,b3]@32 ~ c#4@31 [f#3,d4]@32 [e3,c#4]@32 [f#3,d4]@16, ~@9 a3@7, ~@144 e3@31 ~@81]/8", // F#m E F#m E D C#m D
  H: "[~@16 [g3,b3]@32 c#4@32 d4@15 c#4@16 [g3,d4]@33 a3@16 g#3@16 a3@16 g#3@16 [f#3,a3]@15 g#3, ~@16 e3@64 f#3@31 b3@65 c#4@48, ~@3 a3@4 ~@2 e3@2 e3@2 ~]/7", // G G5 F#m
  I: "[b3 a3 g#3 [f#3,a3], e3@3 ~, ~ c#4@3]/2", J: "[e3,g#3,b3] e3", K: "[f#3,a3,c#4]", L: "[e3,g#3,b3]",
  M: "[a3@16 g#3@16 [f#3,a3]@15 ~ b3@16 a3@16 g#3@16 [f#3,a3]@17 [e3,g#3,b3]@24 [e3,a3,c#4]@58 ~@29, c#4@3 e3@3 ~@8, e3@32 ~@15 g#3@16 ~ c#4@49 ~@111]/7", // F#m E A
})).s("gm_synth_strings_1").gain(0.32)

// chords · rock organ · F#m G D E
const rock_organ = note("<~@11 [d6 c#6, [f#5,a5]] [c#6 ~@15 e5@16, [g5,b5,d6]] [[d5,f#5,a5] [e5,g#5], b4] ~@46>")
  .s("gm_rock_organ").gain(0.14).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A B A B C ~@9 A B A D A E F B A@2 B G B H B@4 I H I H I J B K L I M I H G@3 C A N A N A N A O P ~@2
>`.pickRestart({
  A: "x ~@2 x!3 ~@2", B: "x!2 ~@2 x ~@3", C: "x", D: "x ~ x ~@5 x!2 ~ x ~@4", E: "x ~ x ~@5 x!2 ~@6",
  F: "x ~@2 x!2 ~@3", G: "x ~@3 x!2 ~@2", H: "x!2", I: "x!2 ~@2 x!2 ~@2", J: "x!2 ~@5 x!2 ~@5 x ~",
  K: "x!2 ~@2 x ~@2 x", L: "x ~@3 x ~@2 x", M: "x ~@2 x ~@3 x!2 ~@5 x ~", N: "x ~ x ~@5 x ~@2 x ~@3 x",
// … 55 more lines

More by Nomadi