Strudelify

Light My Fire

Jose Feliciano

KeyA majorTempo107 bpm
0:00/0:00
// Light My Fire — Jose Feliciano
// 107 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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 · string ensemble 2
const string_ensemble_2 = note(`<
  ~@26 A B A B A B A B C D E F G H@2 I@4 J@2 K@2 L M N M O P@2 Q@6 A B R@2 S T U V@2 W X W X Y@4 Z AA AB AC Z AA AB AC Z
  AA AB AC Y@4 Z AD
>`.pickRestart({
  A: "[a2,c4,e4]", B: "[f#2,a3,c#4]", C: "[b3,d4] [c#4,f#4]", D: "[d4,a4] [f#4,b4]", E: "[b3,d4]@2 f#4 f4, ~ c#4",
  F: "[c#4,e4] [b3,d4]", G: "[d4,g4] [c#4,f#4]", H: "[[b3,e4,g#4]@7 ~]/2",
  I: "[~ [c5,g5] [a4,c#5,f#5,a5]@2, ~@8 e5@23 ~]/2", J: "[~ [c5,g5] [a4,c#5,f#5]@2, ~@8 e5@23 ~]/2",
  K: "[~@8 [a4,c5]@8 [f#4,a4,c#5]@13 ~@3, ~@8 e5@21 ~@3]/2", L: "[g4,b4,e5] [g4,c#5,f#5]", M: "[c#5,a5] [d5,b5], f#5",
  N: "[g5,b5,d6] [e5,g5,c#6]", O: "[b4,d5,g5] [c#5,f#5,a5]", P: "[[b4,e5,b5]@29 ~@3]/2",
  Q: "[~@8 [c5,g5]@8 [c#5,f#5,a5]@13 ~@3, ~@8 e5@21 ~@3]/2", R: "[[g4,b4,d5] ~ f#4 [f#4,b4], ~ [a4,c#5]@2 ~]/2",
  S: "[e4,b4,d5] [c#5,e5]", T: "[f#4,a4,c#5] [d4,b4]", U: "[g4,b4] [f#4,a4,c#5]", V: "[[e3,b4,e5]@29 ~@3]/2",
  W: "[g5,b5]", X: "[f#5,a5]", Y: "[[d4,e4]@2 f#4 d4, a4]/2", Z: "e4 [c#4,f#4]", AA: "a4@8 b4@7 ~", AB: "a4@2 f#4 f4",
  AC: "e4 d4", AD: "a4@4 b4@3 ~",
})).s("gm_string_ensemble_2").gain(0.27).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@36 A B C D@2 ~@8 E F G H I J@2 ~@8 K L M ~ N O@2 P Q R S T@4 U V W X U V W X U V W X T@4 U Y
>`.pickRestart({
  A: "d4@2 f#4 f4, ~ c#4", B: "e4@8 d4@7 ~, f#3", C: "[b3,g4] [a3,f#4]", D: "[[e2,g#3,e4]@7 ~]/2",
  E: "b3@2 c#4 d4 c#4@2 b3@2", F: "c#4!2 d4 c#4 b3@4", G: "b3@2 c#4 d4 c#4@2 b3 a3", H: "c#4@2 d4 e4 f#4@2 e4 f#4",
  I: "g4@4 f#4@2 e4 d4", J: "[e4@15 ~]/2", K: "d5 e5", L: "c#5 b4", M: "[a4,d5] [g4,c#5,e5]", N: "[b4,d5] [a4,c#5]",
  O: "[[b4,e5]@26 [d3,e3] [g3,b3] [d4,e4] [g4,b4] [d5,e5] [g5,b5], a4 ~]/2", P: "[e5,g5,b5]", Q: "[c#5,f#5] b4, a5",
  R: "[g5,b5]", S: "c#5 d5, [f#5,a5]", T: "[[d4,e4,g4,b4]@16 c#4@8 d4@7 ~, a4, ~ f#4]/2", U: "[b3,e4] [c#4,f#4]",
  V: "[c#4,a4] [d4,b4], f#4", W: "[d4,g4,a4]@2 f#4 f4, ~ d4", X: "[c#4,e4]@4 [b3,d4]@3 ~",
  Y: "[c#4,a4]@4 [d4,b4]@3 ~, f#4@7 ~", // F#m G
})).s("gm_string_ensemble_1").gain(0.31).pan(0.4)

// other · flute
const flute = note(`<
  ~@34 A B ~@2 C D@2 ~@15 E F ~ G ~ H I J K L M N O ~@3 P Q R ~ S T U V W X ~ Y Z AA AB AC AD AE AF AG S T U ~@2
>`.pickRestart({
  A: "~@11 f#5 e5 ~ d5 ~", B: "~@4 d5 e5 f#5 g5 f#5@2 e5 d5 ~@4", C: "~@2 b4@2 ~ g4 e4 d4 c#4@4 e4 g4 a4 ~",
  D: "[b4@2 e4@3 ~ g#4@3 ~ b4@4 d5@4 f#5@11 ~@3]/2", E: "~@2 a4@11 ~@3",
  F: "~@2 a4 ~ b4 c#5 ~ c5 c#5 c5 c#5@2 c5 b4 a4 ~", G: "~@2 a4@5 ~", H: "~@2 a4@3 ~ c5 ~ [c5,c#5] c5 a4 ~ c5@2 a4 ~",
  I: "[a#4,b4] ~ a4@10 ~@4", J: "~@4 a4 [a4,b4] f#4 ~ f#4 ~ f#4@4 ~@2", K: "~ b4 c#5@2",
  L: "a4@8 ~@3 d5 e5 [e5,f5] d5 ~", M: "b4@2 a4@13 ~, c#5 ~@15", N: "a4 f#4 g4 a4@4 b4 c#5 ~ d5 c#5 ~ b4 ~ a4",
  O: "g4@8 f#4@7 ~", P: "~@3 g5 a5 b5 ~ a5@3 ~ g5 f#5 e5 d5 c#5", Q: "b4@2 a4@9 ~@5",
  R: "~@2 e5@2 d5@2 c#5@2 d5@2 c#5 c#5@2 b4 a4@2", S: "~@6 b4 c#5 ~ d5 ~ e5 f#5 g5 a5 c#6", T: "b5@9 ~@7",
  U: "~@2 b5 c#6 ~ d6 ~ c#6 ~ b5 ~ a5 g5 f#5 e5 d5", V: "e5@7 ~ f#5@5 ~@3",
  W: "~@2 a5 g5 ~ f#5 ~ e5 ~ g5 ~ f#5 e5@2 d5 ~", X: "b4@15 ~", Y: "~@6 e5 f#5 ~ g5 ~ a5 ~ b5 c#6 d6",
  Z: "~ c#6@2 b5 a5@6 b5@2 f#5 ~@3", AA: "~@2 e5 ~ f#5 ~@5 [e5,f#5] [g5,a5,b5,c#6] d6@2 c#6@2",
  AB: "b5@2 a5 a5@5 d5@6 a5@2", AC: "~@2 b5 ~@5 a5 ~ g5 f#5 ~ e5 ~ d5", AD: "c#5 b4 a4 g#4 g4 f#4 e4 ~@9",
  AE: "d5@3 a4@5 ~@2 d5 e5 f#5 g5 a5 b5", AF: "c#6 ~ d6 ~ e6 f#6 ~ f#6@2 ~@6 [f#6,g6]",
  AG: "f#6 ~ e6 d6 ~ c#6 b5 a5 g5 f#5 e5 d5 c#5 ~ b4 a4",
})).s("gm_flute").gain(0.48).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@4 D@2 ~ E F E F E F E F G H G H I J K E F E F E F E F G H G H I J K E F E F E F E F G H G H L M@2 E F E F E
  F E F G H G H I N O P Q P Q R S R S P Q T Q P Q T Q P U V U R S W X Y Z
>`.pickRestart({
  A: "[[c4,e4]@4 [a2,e3] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4]@2 [a2,e3] ~ [f#3,a3]@7 ~@11]/2", // C A5 C A5 F#m
  B: "[[c4,e4]@4 [a2,e3] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4]@2 [a2,e3] ~ a3@4 c#4@3 ~ f#4@4 c#4@2 ~@2 f#3 ~, ~@14 f#3@7 ~@11]/2", // C A5 C A5
  C: "[~@2 b3 ~ [g3,b3] ~ b3@2 [c#4,f#4]@2 [c#4,f#4]@3 ~ [d3,f#4]@4 e4@4 [b2,d4]@4 [a2,c#4]@4 f#2@2]/2", // G F#5 D Bm A
  D: "[~@2 [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [f#3,a3]@2 [f#3,a3]@2 ~@2 [e2,b2,d3,a3,b3,d4,e4]@15 ~@3]/2", // G F#m Esus4
  E: "[c4,e4]@4 [a2,e3] ~ [c4,e4]@5 ~ [c4,e4]@2 [f#3,a3]@2", // C A5 C F#m
  F: "~@4 [f#2,c#3,f#3,a3] ~@3 [f#2,c#3,f#3,a3] ~@3 [f#2,f#3,a3]@4", // F#m
  G: "~@2 [g3,d4]@2 [g3,b3,d4] ~ [g2,d3] ~ [c#4,f#4]@2 [g3,c#4]@2 [g3,c#4,f#4] ~ [a2,e3] ~", // G5 G G5 F#5 Gdim F# A5
  H: "d3@4 [a3,d4] ~ [d3,a3] ~ [a3,d4] ~@3 [a3,d4] ~@3, d4@3 ~@13, a3 ~@7 b2@4 ~@4", // D5
  I: "g2@4 [g3,b3,d4] ~ g2 ~ [f#2,a3,c#4] ~ [f#2,a3,c#4]@2 ~@4, g3 ~@15", J: "~@2 e2@2 ~@2 g#2@2 ~@2 b2@2 ~@2 d3 ~",
  K: "~@2 e3@11 ~@3", L: "g2@4 [g3,b3,d4] ~@3 f#2 ~ f#2@2 [f#3,c#4] ~ e2@2",
  M: "[[e3,g#3] ~ g#2@2 [e3,g#3,b3] ~ b2@2 [e3,g#3,b3] ~ d3@2 [g#3,b3] ~@5 e2@4 e3@2 e2@2 e3@2 e2@2 e3 ~, ~@14 e3@7 ~@11]/2", // E G#m
  N: "[a3,b3,d4]@5 ~ a3@2 ~@2 a3@2 [a3,b3,d4]@2 e3 ~, ~@3 [b3,d4]@3 ~@2, ~@8 e3@5 ~@3", // Bm7 Bm
  O: "[g#3,b3,d4]@6 [g#3,b3,d4]@2 [g#3,b3,d4]@2 ~@2 [e3,g#3,b3,d4]@2 [e3,g#3,b3,d4] ~, ~@10 e2@5 ~", // G#dim E7
  P: "[g2,d3] ~ [g2,d3]@2 ~@2 [g2,d3] ~ a2 ~ [a2,e3]@2 ~@2 [a2,e3]@2, ~ [g3,b3,d4] ~ [a3,c#4,e4]", // G5 A5 G A
  Q: "d3 ~ d3@2 ~@2 d3@2 b2 ~ b2@2 [a3,d4,f#4]@2 b2 ~, ~ [a3,d4,f#4] ~@2", // D
  R: "~ [g3,b3,e4] d4 [g3,b3,d4,e4]!2 ~ g3 [g3,b3,d4,e4] ~ [g3,b3,d4,e4] [g3,b3,d4,e4]@2 g3 [g3,b3,d4,e4] ~ [g3,b3,d4,e4]", // Em Em7
  S: "[a3,c#4]@7 ~ b3@2 ~@2 f#3@2 ~@2, f#3@5 ~@2 f#3@3 [b3,e4]@5 ~, ~@8 a3@5 ~@3", // A E5
  T: "[a2,d3] ~ [g2,d3]@2 ~@2 [g2,d3] ~ a2 ~ [a2,e3]@2 ~@2 [a2,e3]@2, ~ [g3,b3,d4] ~ [a3,c#4,e4]", // D5 G5 A5 G A
  U: "[d3,a3,c#4,f#4] ~ d3 [a3,c#4,f#4] ~ d3 [a3,d4]@4 d3!2 [a3,d4,f#4]@2 d3 ~, ~@6 f#4 ~@9", // Dmaj7 F#m D5 D
  V: "[a2,g3,b3,d4,e4]@2 a2 [g3,b3,d4,e4] ~ a2 ~ a2@5 [g3,b3,d4,e4]@2 a2 ~, ~@6 [g3,b3,d4,e4]@5 ~@5", // Em7
  W: "~ [a3,c4,d4,e4] ~ a2 [a3,d4,e4] ~ a2 [a3,d4,e4] ~ a2 [a3,d4,e4] ~ a2 [a3,d4,e4] ~ a2", X: "[a3,d4,e4] ~@15",
  Y: "e2 [a3,b3,d4,e4]@2 e2 [a3,b3,d4,e4] ~ e2 [a3,b3,d4,e4] ~ e2 [a3,b3,d4,e4] ~ e2 [a3,b3,d4,e4] ~ e2", // Asus4
  Z: "[a3,b3,d4,e4] ~ [c#4,a4]@5 ~@3 d4 ~ [b3,d4]@2 ~@2", // Asus4 F#m Bm
})).s("gm_acoustic_guitar_steel").gain(0.27).pan(0.6)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@3 A B C B C D ~@10 E F E F G ~@10 E F E F G ~@10 E F E F H ~@10 E F E F G ~@7 I ~ I ~@9 J ~ J ~ I ~@3 K
>`.pickRestart({
  A: "~@2 [a3,g#4]@3 ~@7 a3@2 ~@2", B: "[g3,b3] ~ g3 ~@3 g3@2 ~@8", C: "~ c#3@2 ~@5", D: "[g3,b3] ~@15",
  E: "[g3,b3,d4] ~ b3@2 ~@4 g3@2 f#4@2 ~@4", F: "~@2 a3 ~@7 [a3,d4] ~@5", G: "~@2 g3 ~@10 a3 ~@2",
  H: "~@7 g3 ~@4 a3 ~@3", I: "~@14 a3 ~", J: "~@7 f#4 ~@8", K: "~@10 b3 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.6)

// bass · acoustic bass
const bass = note(`<
  ~@9 A@2 B C B C B C B C D E D E F G H B C B C B C B C D E D E F G H B C B C B C B C D E D E I J@2 B C B C B C B C K E
  D E F L@2 M E D E N O N O M E P Q M E P Q M E R Q N O N O S E
>`.pickRestart({
  A: "[~@8 e1@2 f#1@2 e1 ~ e1@15 ~@3]/2", B: "a1@4 ~@2 a1@9 ~", C: "f#1@2 ~ f#1@3 g#1@2",
  D: "g1 ~ g1@4 ~@2 a1 ~ a1@4 ~@2", E: "d2 ~ d2@4 ~@2 b1@2 b1@4 ~@2", F: "g2!2 ~@2 f#2 f#2@2 ~",
  G: "e1 e2 ~ g#2 ~ b2 ~ d3", H: "~ e3@6 ~", I: "g2!2 ~@2 f#2!2 ~ e2",
  J: "[~@2 g#2@2 ~@2 b2@2 ~@2 d3@2 ~@12 e2 ~ e1@2 e2@2 e1 ~, ~@14 e3@13 ~@5]/2",
  K: "e1@2 e1@2 ~@2 e1 ~ a1 ~ a1@3 ~ a1 ~",
  L: "[~@6 e2 ~ e2 ~ e2 ~ e2 ~@3 e1 ~ e1 ~ e1 ~ e1 ~@3 e2@2 e2@2 e1 ~, e1@7 e2@5 e1@2 ~@2]/2",
  M: "e2@2 e2@2 ~@2 e1 ~ a1 ~ a1@3 ~ a1 ~", N: "a1@4 ~@2 a1 ~ a1@4 ~@2 a1 ~", O: "d2@5 ~ d2 ~ b1@7 ~",
  P: "a1@4 ~@2 a1 ~ a1@5 ~ a1 ~", Q: "d2@8 b1@7 ~", R: "a1@3 a1@2 ~ a1@7 ~ a1 ~",
  S: "e2 ~ e2@2 ~@2 e1 ~ a1 ~ a1@3 ~ a1 ~",
})).s("gm_acoustic_bass").gain(0.48)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@2 B@2 C@4 D@2 ~ E F E F E F E F G H G H I J K E F E F E F E F G H G H I J L M N M O P Q R S T U T U V W X E F E F E
  F E F G H G H I Y Z AA AB AA AB AC AD AC AD AA AB AE AB AA AB AE AB AA AF AG AH AC AD AI AJ AK AL
>`.pickRestart({
  A: "[[a2,g3,c4,e4]@4 [g3,c4,e4] ~ [a2,g3,c4,e4]@2 [a2,g3,c4,e4]@2 [a2,g3,c4,e4]@2 [e2,a2,g3,c4] ~ [f#2,a3,c#4,e4]@4 f#3 a3 b3 a3 f#3 a3 b3 a3 f#3 a3 b3 a3 f#3 ~]/2", // Am7 C Am7 F#m7
  B: "[[a2,g3,c4,e4]@4 [g3,c4,e4] ~ [a2,g3,c4,e4]@2 [a2,g3,c4,e4]@2 [a2,g3,c4,e4]@2 [e2,a2,g3,c4] ~ [f#2,a3,c#4,e4]@4 [a3,c#4]@4 a3@4 ~@2 a3@2 f#3 ~, ~@11 f#4@3 ~@2, ~@13 c#4@2 ~]/2", // Am7 C Am7 F#m7 A
  C: "[[g3,b3]@2 [g3,b3]@2 [g2,g3,b3]@2 [g2,g3,b3]@2 [a2,g3,c#4,f#4]@2 [a2,g3,c#4,f#4]@3 ~ [d3,a3,d4,f#4]@4 [c#3,c#4,e4]@4 [b2,f#3,b3,d4]@3 ~ [a2,a3,c#4]@4 f#2 ~, g2@4 ~@22 e3@3 ~@3]/2", // G F#m D C#m Bm A
  D: "[[g3,b3]@2 [g3,b3]@2 [g2,g3,b3]@2 [g2,g3,b3]@2 [f#2,f#3,g3,a3]@2 [f#2,f#3,a3]@3 ~ [e2,b2,d3,a3,b3,d4,e4]@15 ~@3, g2 ~@7]/2", // G F#m Esus4
  E: "[a2,g3,c4,e4]@4 [g3,c4,e4] ~ [c4,e4]@5 ~ [g3,c4,e4]@2 ~@2, ~@3 a2@3 ~@2, ~@6 g3@3 ~@7", // Am7 C
  F: "[f#2,e3,f#3,a3,c#4]@4 [f#3,a3,c#4] ~ [f#2,e3,f#3,a3,d#4]@2 [f#3,a3,c#4] ~ [f#2,e3,f#3,a3,c#4]@2 [f#3,a3,c#4]@4", // F#m7 F#m D#dim F#m F#m7 F#m
  G: "[g2,d3]@2 [g3,b3] ~ [g2,d3,g3,b3] ~ [g2,d3] ~ [a2,f#4]@2 [a2,e3,g3,c#4,f#4]@2 [g3,c#4,f#4] ~ [a2,e3] ~, [g3,b3] ~@15", // G5 G G5 D A7 F# A5 G
  H: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~ d3 ~ [a3,d4,f#4]@2 [d4,f#4]@2 [a3,d4,f#4] ~ [b2,d3] ~, d3@4 ~@4 b2@5 ~@3", // D Bm
  I: "[g3,b3,d4] ~ [g3,b3,d4]@2 ~@2 g2 ~ [f#2,a3,c#4]@2 [f#2,a3,c#4]@3 ~@3, g2 ~@7", J: "~ e2 ~ g#2 ~ b2 ~ d3",
  K: "~@2 f#3@13 ~", L: "~@2 f#3@8 ~@2 a3 ~ c4 ~", M: "d4@3 ~ d4@3 ~ d4@2 c4 ~ a3@2 g3 ~",
  N: "[f#2,f#3,a3,c#4]!2 ~ [f#2,f#3,a3,c#4]!2 ~ [f#2,f#3,a3,c#4]!2 ~ [f#2,f#3,c#4] [f#2,a3,c#4] ~ a3@2 c4 ~", // F#m F#5 F#m
  O: "[f#2,f#3,a3,c#4]!2 ~ [f#2,f#3,a3,c#4]!2 ~ [f#2,f#3,a3,c#4]!2 ~ [f#2,f#3,c#4] [f#2,f#3,a3,c#4] ~@3 a3 [c4,d4]", // F#m F#5 F#m Csus2
  P: "[e4,g4] e4 [a3,c4] c4 [d4,e4] [e4,g4] ~ [a3,c4] c4 [d4,e4] g4 [d4,e4] a3 ~ c4 a3", // Em Am Dsus2 Em Am Dsus2
  Q: "[f#2,f#3,a3,c#4]@2 [f#2,a3,c#4] ~ [f#2,f#3,a3,c#4] ~ [f#3,a3,c#4]@4 f#2 ~ [f#2,a3,c#4]@2 f#3 ~, ~@6 f#2@3 ~@7", // F#m
  R: "[a2,a3]@2 [a3,c4] ~ [a3,b3,c4] ~ [a3,c4] ~ a3 c4 ~ a3 c4 b3 a3 g3, [b3,c4] ~@3 a2@6 ~@6", // A Am Cmaj7
  S: "f#3@2 ~@2 c#4 g#4 c#4@2 ~@3 f#4@4 ~, f#2@7 ~, ~ f#3@6 ~, ~@4 g#4 a3@2 ~, ~@9 c#4@5 ~@2",
  T: "[e3,g3,b3,d4]@2 [e3,g3,b3,d4]@2 ~@2 [b3,e4] ~ [g3,c#4,f#4]@2 [g3,c#4,f#4]@3 ~ [g3,c#4,f#4] ~", // Em7 E5 F#
  U: "[d3,c#4,f#4,a4] ~ [d3,c#4,f#4,a4]@2 ~@4 [b2,d4,f#4,b4]@2 [b2,d4,f#4,b4]@2 ~@4", // Dmaj7 Bm
  V: "[g3,b3,d4] ~ [g3,b3,d4]@2 ~@2 g2 ~ [f#2,a3,c#4]@2 [f#2,a3,c#4]@3 ~ e2@2, g2 ~@7", W: "~ g#2 ~ b2 ~ d3 ~ e3",
  X: "~@2 [e2,b2,e3,b3,e4]@3 ~ [e2,b2,e3,b3,e4]@3 ~ [e2,e3,b3,e4] ~ [e2,e3,b3,e4]@2 [e2,e3,b3,e4] ~", // E5
  Y: "[a3,b3,e4]@4 [a3,b3,e4] ~ [a3,b3,e4] ~ [a3,b3,e4] ~ [a3,b3,e4] ~ [a3,b3,e4] ~ [a3,b3,e4] ~, e2@15 ~", // Asus2
  Z: "[g#3,b3,e4]@3 ~ g#3 ~@5 [g#3,b3,e4] ~ [g#3,b3,e4]@2 e2 ~, e2@3 [g#3,b3,e4]@2 ~@3, ~@8 e2@5 ~@3", // E
  AA: "[g2,g3]@4 ~@2 g2@2 ~@2 a3 ~@3 a2@2, ~ [g3,b3,d4] a2 [a3,c#4,e4]", // G A
  AB: "~@6 d3@2 b2@4 ~@2 b2 ~, d3@4 [d4,f#4]@7 ~ [d4,f#4]@4, ~@2 a3@7 ~@7", // D
  AC: "~@2 [g3,b3,d4,e4]!3 ~ b3 [g3,b3,d4,e4] ~ [g3,b3,d4,e4] [g3,d4,e4] ~ b3 [g3,b3,d4,e4] ~ [g3,b3,d4,e4]", // Em7
  AD: "~ c#4@6 ~ a3@2 [b3,e4]@4 a3 ~, [a3,e4]@6 ~@4 a3@3 ~@3", // E5 A5
  AE: "a2@3 ~@3 g2@2 ~@2 a3 ~@3 a2@2, ~ [g3,b3,d4] a2 [a3,c#4,e4]", // G A
  AF: "[d3,c#4,f#4] ~ d3 [c#4,f#4] ~ d3 [d3,d4,f#4]@2 ~ [d3,d4] ~@2 [d3,d4,f#4]@2 b3 ~", // Dmaj7 F#5 D
  AG: "[a2,b3,d4]@2 a2 [b3,d4]@2 a2 [b3,d4]@5 ~ [b3,d4]@2 a2 ~, ~@3 a2@3 ~@2", // Bm7 Bm
  AH: "[d3,c#4,f#4]@2 d3 [c#4,f#4] ~ d3 [d3,d4,f#4]@2 ~ [d3,d4] ~@2 [d3,d4,f#4]@2 b3 ~", // Dmaj7 F#5 D
  AI: "a2 [g3,b3,d4,e4] ~ a2 [g3,b3,d4,e4] ~ a2 [g3,b3,d4,e4] ~ a2 [g3,b3,d4,e4] ~ a2 [g3,b3,d4,e4] ~ a2", // Em7
  AJ: "[g3,b3,d4,e4] ~@7", AK: "e2 [a3,b3,e4] ~ e2 [a3,b3,e4] ~ e2 [a3,b3,e4] ~ e2 [a3,b3,e4] ~ e2 [a3,b3,e4] ~ e2",
  AL: "[a3,b3,e4] ~ c#4@2 d3@4 b2 [a3,b3,d4] ~ b2 [a3,b3,d4]@2 ~@2, ~@2 f#4@5 ~@9, ~@2 e2 ~@13", // Asus2 Bm7
})).s("gm_acoustic_guitar_nylon").gain(0.37).pan(0.4)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@3 A ~ B ~ B ~@3 C ~ C ~ C ~ C ~ D E D E F ~@2 C ~ C ~ C ~ C ~ D E D E F ~@3 G ~ H I J ~ K ~@4 F ~@2 C ~ C ~ C ~ C ~
  D E D E F ~ L M N M N O P O P M N M N M N M N M Q ~ Q O P ~@3 R
>`.pickRestart({
  A: "~ g#4@2 ~@5", B: "~ a3@2 ~@5", C: "~@10 g3 ~@5", D: "~@4 [e3,g3,c#4] ~@3", E: "~@6 a2 ~@3 a3@2 ~@4",
  F: "~@5 g2 ~@10", G: "~@9 a3 f#3 ~@5", H: "~@9 a3 ~@6", I: "~ d4 ~@4 d4 ~@6 [c4,d4] ~@2", J: "~@2 f#3 ~@13",
  K: "~@3 a3@3 ~ a3@2 ~@7, ~ c#3@14 ~", L: "~@4 [b3,e4] ~@11", M: "~@2 b3 ~@13", N: "~@5 a3@3", O: "~@12 g3 ~@3",
  P: "~@9 b3 ~@6, ~@4 d4 ~@3", Q: "~@9 f#4 ~@6", R: "~@3 c#4 ~@4",
})).s("gm_acoustic_guitar_nylon").gain(0.18).pan(0.4)

// drums · bongos
const bongos = s("bongo:4").struct("<~@76 A ~ A ~@13 A ~ A ~@2>".pickRestart({
  A: "~@5 x ~ x ~@5 x ~@2",
})).gain(1.5)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@76 A ~ A ~@13 A ~ A ~@2>".pickRestart({
  A: "~@3 x ~@7 x ~@4",
})).gain(1.5)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@11 A B A B A B A B C@6 ~ A B A B A B A B C@6 ~ A B A B A B A B C@6 ~ A B A B A B A B C@6 ~ C@5 D C D C@13 D C D C@2
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@3 x", C: "~ x ~@2", D: "~@2 x ~ x ~@2 x",
})).gain(1.37)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@11 A B A B A B A B C@6 D A B A B A B A B C@6 D A B A B A B A B C@6 D A B A B A B A B C@6 D C@5 E C E C@13 E C E C@2
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@3 x ~ x ~ x", C: "~@3 x ~@2 x!2", D: "~@4 x!4", E: "~@2 x!2 ~@2 x!2",
})).gain(1.37)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@10 A B C B C B C B C D@6 E B C B C B C B C D@6 E B C B C B C B C D@6 E B C B C B C B C D@6 E D@26
>`.pickRestart({
  A: "~ x!7", B: "x ~@2 x", C: "x", D: "x!2 ~@2 x!2 ~@2", E: "~ x!2 ~@5",
})).gain(1.37)

stack(
  string_ensemble_2, string_ensemble_1, flute, acoustic_guitar_steel, acoustic_guitar_steel_2, bass,
  acoustic_guitar_nylon, acoustic_guitar_nylon_2, bongos, bongos_2, congas, congas_2, congas_3
)

More by Jose Feliciano