Strudelify

Let's Stay Together

Jimmy McGriff

KeyF majorTempo103 bpm
0:00/0:00
// Let's Stay Together — Jimmy McGriff
// 103 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 12 acoustic guitar steel (copy of ch 11 electric guitar clean)
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · "Lets Stay"
const bass = note(`<
  A@2 B C D E F G H I J K L M N O L P Q O D R S T H I J U L M N O L P Q V W X Y Z AA AB AC AD AE AF AG AH AI AJ AC AD AK
  AL AM AN AO AP AQ@2 AR AS N AT L P Q V AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BE BO BG BH BI BJ
  BP BQ BC BD BE BF BG BR BS BT BU ~@2
>`.pickRestart({
  A: "g1@8 a1@2 c2@2 a1@3 ~", B: "g1@4 a1 c2 a1@2", C: "g1@5 ~ g1@2 c2@4 ~@2 d2@2",
  D: "f2@4 ~@2 g2@2 a2@2 f2@2 c2@3 ~, ~ c2 ~@2", E: "f2@2 ~ g2 a2 bb2 c3 d3, f1@3 ~@5, ~ c2 ~@2",
  F: "d2@6 a2@6 ~ c3 db3@2", G: "d3@2 a2 ~@2 f3 g3 ~, ~@3 d2@5", H: "bb2@2 c3 ~ d3@2 f2@2",
  I: "bb2@4 c3 ~ c3@2 d3@2 f2@2 bb2@4, bb1", J: "db3@3 ~ db3@2 ~@2 db3@3 ~ bb2@2 db3 ~, db2@15 ~",
  K: "db3@3 ~ db3@2 db3@2 db3@3 ~@3 db3@2, db2", L: "a2@2 c3 a2 g2@2 c3 g2", M: "f2@2 c3 f2 e2@2 c3 e2",
  N: "d2@4 c3@2 d2@2 ~@3 c3 c3@4, ~@8 d2@5 ~@3", O: "d2@3 c3 ~@2 d2@2 d2@3 c3 c3@2 d2@2, ~ c3 ~@2",
  P: "f2@3 f2 g2@2 ab2@2 a2@2 a1@2 e2@2 eb2@2", Q: "d2@4 c3@2 d2 ~@4 c3 c3@4, ~@8 d2@5 ~@3",
  R: "f2@4 ~@2 g2@2 a2@2 c3 ~ c3@2 d3@2, f1@3 ~@5, ~ c2 ~@2", S: "~@2 a2 d3@3 a1 c2, d2@3 ~",
  T: "d2@3 ~ d2@4 a1@2 e2@2 f2@2 g2@2", U: "db3@3 ~ db3@2 bb2@2 db3@3 ~@3 db3@2, db2",
  V: "d2@3 c3 ~@2 d2@2 d2@3 c3 c3@2 a1@2, ~ c3 ~@2", W: "g1@4 d2@3 g1@3 g1@2 d2@2 g2@2",
  X: "g1@4 d2@3 g1 ~ g1 g1@2 d2@2 g2@2", Y: "a1 ~ a1@2 c2@2 ~ a1!2 ~ a1@2 c2@2 e1@2",
  Z: "a1@2 a1@2 c2@2 e1@2 a1@2 a1 ~ c2@2 a1@2", AA: "g1@4 d2@3 g1!2 ~ g1@2 d2@3 ~", AB: "g1@4 d2@3 g1!2 ~ g1@2 d2@3 a1",
  AC: "bb1@2 bb1@2 d2@3 bb1 a1 ~ a1@2 d2@3 ~", AD: "d2 ~ d2@2 f2@3 d2 c2@2 e1@2 f1@2 g1@2",
  AE: "g1 ~ g1@2 d2@2 ~@2 g1 ~ g1@2 d2@2 g2@2", AF: "g1 ~ g1@2 d2@2 ~@2 g2@2 g1@2 d2@4",
  AG: "ab1 ~ ab1@2 c2@3 ab1!2 ~ ab1@2 eb2@2 ab1@2", AH: "g1 ~ g1@2 d2@3 ~ g1@2 g1@2 d2@3 ~",
  AI: "ab1 ~ ab1@2 c2@2 ~ ab1!2 ~ ab1@2 c2@3 ~", AJ: "ab1 ~ ab1@2 c2@3 ab1!2 ~ ab1@2 c2@3 eb2",
  AK: "f2@3 ~@3 g2@2 a2@2 f2@2 c2@3 ~, ~ c2 ~@2", AL: "f2@4 ~@2 g2@2 a2@2 c3 ~ d3@2 e3@2, f1@3 ~@5, ~ c2 ~@2",
  AM: "d2@4 a2@2 a1 ~ d2@4 d3 d3@2 ~", AN: "d2@3 ~ d2@4 a1@2 e2 ~ f2@2 g2@2", AO: "bb1@4 c2 ~@3 d2@3 ~ c2@4",
  AP: "bb1@4 c2 ~ c2@2 d2@2 f1@2 bb1@2 ~@2",
  AQ: "[db3@3 ~ db3@2 db3@2 db3@3 db3 bb2@2 ~@6 db3@2 bb2@2 db3@3 db3 bb2@2 db3@2, db2@14 db3@5 ~@13, ~ db2]/2",
  AR: "a2@3 ~ c3@2 a2@2 g2@4 c3@2 g2@2", AS: "f2@3 c3 c3@2 f2@2 e2@3 e2 c2@2 e2@2",
  AT: "d2@3 c3 c3@2 c2@2 d2@2 e2@2 f2@2 g2@2", AU: "g1@4 d2@3 g1 g1@2 g1@2 d2@2 g2@2",
  AV: "g1@2 g1@2 d2@3 g1 ~@2 g1@2 d2@2 g2@2", AW: "a1 ~ a1@2 c2@2 ~ e1 a1 ~ a1@2 c2@2 g1 ab1",
  AX: "a1 ~ a1@2 c2@2 g1 e1 a1@2 a1 ~ c2@2 a1@2", AY: "g1@4 d2@3 g1!2 ~ g1@2 d2@3 f1",
  AZ: "g1@4 d2@2 f1 g1 g2@2 g1@2 d2@3 a1", BA: "g1 ~ g1@2 d2@3 g1 a1 ~ a1@2 c2@3 a1",
  BB: "g1 ~ g1@2 d2@3 a1 c2!2 e1!2 f1!2 gb1 g1", BC: "g1 ~ g1@2 d2@2 ~ d2 g1@2 g1@2 d2@2 ~@2",
  BD: "g1 ~ g1@2 d2@2 ~ d2 g1 ~ g1@3 ~ g1@2", BE: "a1 ~ a1@2 c2@2 ~ c2 a1 ~ a1@2 c2 ~ d2@2",
  BF: "a1 ~ a1@2 c2@2 ~ c2 a1 ~ a1@2 c2 a1 e2@2", BG: "g1 ~ g1@2 d2@3 g1!2 ~ f1 g1 d2!2 bb1!2",
  BH: "g1 ~ g1@2 bb1@2 g1 d2 g1!2 f1 e1 f1 e1 f1 gb1", BI: "g1 ~ g1@4 ~ g1 a1 ~ a1@4 ~ a1",
  BJ: "g1 ~ g1@4 ~ g1 c2!2 e1!2 f1!2 gb1!2", BK: "g1 ~ g1@2 c2@3 g1 a1 ~ a1@2 c2@3 a1",
  BL: "g1 ~ g1@2 c2@3 a1 c2!2 e1!2 f1!2 gb1 g1", BM: "g1 ~ g1@2 d2@2 ~ d2 g1@2 g1@2 d2@2 f1 gb1",
  BN: "g1 ~ g1@2 d2@2 ~ d2 g1 ~ g1@2 d2!2 g1 ab1", BO: "a1 ~ a1@2 c2@2 ~ c2 a1 ~ a1@2 e2!2 c2@2",
  BP: "g1 ~ g1@4 c2 g1 a1 ~ a1@4 c2 a1", BQ: "g1 ~ g1@4 c2 a1 c2!2 e1!2 f1!2 gb1 g1",
  BR: "g1 ~ g1@2 bb1@2 g1 d2 g2!2 f2 db2 d2 bb1 f2 gb2", BS: "g2!2 ~ g2 g1!2 ab1 a1 ~ a1 a2@2 ~ a1 ab1 ~, ~ g1 ~@6",
  BT: "g1 ~ g2 g1 g2 g1 g2 d2 c2!2 e1!2 f1!2 gb1!2", BU: "g1 g2 ~ g2 ~ g2 g1 ab1 ~@8",
})).s("gm_fretless_bass").gain(0.24).pan(0.6)

// bass · fretless bass · "Lets Stay" · soft notes
const bass_soft = note(`<
  ~@6 A B C ~ D E F G H ~ I ~ J ~@5 K ~ D E F G H ~ I ~ J ~@7 L ~ M@2 ~ N O ~ L ~ P ~@3 Q R ~ S T ~ H ~ I ~ J ~@2 U ~@34
  V W X
>`.pickRestart({
  A: "~@12 c3 ~@3", B: "~@7 e3", C: "~@3 c3 ~@4, bb1", D: "~@3 db3 ~@4", E: "~@6 bb2 ~", F: "~@11 c3 ~@4",
  G: "~@3 c3 ~@12", H: "~@3 c3 ~@10 d2@2", I: "~@3 c3 ~@7 c3 ~@4", J: "~@3 c3 ~@10 d2 ~", K: "~@3 c3 ~@4", L: "~@15 c2",
  M: "~@7 d2 ~@8", N: "~@7 g2 ~@8", O: "~@15 eb2", P: "~@3 c2 ~@12", Q: "~@6 c2 ~@4 d2 ~@4", R: "~@7 c2",
  S: "~@3 db3 ~@12", T: "~@3 a2 ~@7 c3 ~@4", U: "~@9 g1 ~@6", V: "~@8 a1 ~ a2 a1 a2 e2 bb1 a1",
  W: "g1 g2 ~ g2 ~ d2 g2 c2 ~ c3 a2 f2 c3 bb2 f2 d2, ~@4 d3 ~@3", X: "[g1,g2]@9 ~@7",
})).s("gm_fretless_bass").gain(0.15).pan(0.6)

// other · percussive organ
const percussive_organ = note("<~@4 A B C@2 D@2 E@2 ~@8 A B C@2 D@2 E@2 ~@24 F B C@2 D@2 E@2 ~@47>".pickRestart({
  A: "a4@14 bb4 a4", B: "bb4 a4@6 ~", C: "e5/2", D: "d5/2", E: "[db5@31 ~]/2", F: "~@14 bb4 a4",
})).s("gm_percussive_organ").gain(0.07).pan(0.1)

// chords · rock organ
const rock_organ = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~@8 E@2 B@2 C@2 D@2 ~@14 F G ~@8 H@2 B@2 C@2 I@2 ~@41 J K@3 L ~
>`.pickRestart({
  A: "[c5@7 d5@2 c5@7, f4]/2", B: "[[f4,c5]@31 ~]/2", C: "[f4,bb4,f5]/2", D: "[[f5,c6]@31 ~, b5 ~@31]/2",
  E: "[c5@14 d5@4 c5@13 ~, f4]/2", F: "[d4,bb4] [c4,a4]", G: "[f4,d5] [e4,c5]", H: "[~@14 d5@4 c5@13 ~]/2",
  I: "[[ab5,c6]@15 ~, f5@7 ~, b5 ~@31]/2", // Ab
  J: "~@11 [a1,b1] [f2,g2,a2,b2] [c3,d3,e3,f3,g3,a3] [b3,c4,d4,e4,f4,g4,a4,b4,c5] [d5,e5,f5,g5,a5,b5,c6,d6]", // Asus2 G7 Dm7 Bm7b5 Dm7
  K: "[[e6,f6,g6] ~@15 c7 ~@9 g6 a6 ~ g6 a6 ~@17, d7]/3", L: "~ [db7,d7] c7 ~@13",
})).s("gm_rock_organ").gain(0.11).pan(1)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@10 A@2 ~@14 A@2 ~@30 A@2 ~@41 B ~@3 C@2>".pickRestart({
  A: "[c7@31 ~]/2", B: "~@11 c2 [d2,e2] ~@3", C: "[~@3 a6 g6 c7 a6 g6 f6 g6 ~ d6 g6 f6 d6 c6@3 d6 ~@13]/2",
})).s("gm_rock_organ").gain(0.04).pan(1)

// other · trumpet
const trumpet = note(`<
  A B C D ~@31 E F G H ~@11 I J ~@15 E F G H ~@3 K L F G H ~@3 K M K N ~@6 K M K N ~@6 O ~@4
>`.pickRestart({
  A: "~@4 a4!2 ~@4 g4 ~ g4@2 ~@2", B: "~@4 f4 ~@5 g4@4 ~@2", C: "~@4 a4@2 ~@4 g4 ~ g4@2 ~@2", D: "~@4 f4 ~@5 e4@4 ~@2",
  E: "~@7 db5", F: "d5 ~@15", G: "~@7 gb4", H: "g4 ~@15", I: "~ bb4@2 ~@2 a4@2 ~", J: "~@2 d5@5 ~@3 c5@5 ~",
  K: "~@2 a4@5 ~@3 g4@5 ~", L: "~@2 f4@5 ~@3 e4@2 ~@2 db5@2", M: "~@2 f4@5 ~@3 g4@5 ~", N: "~@2 f4@5 ~@3 e4@5 ~",
  O: "~@2 [a4,a5]@5 ~@3 [g4,g5]@5 ~", // A G
})).s("gm_trumpet").gain(0.15).pan(0.7)

// other · trumpet · soft notes · F G A G F E
const trumpet_soft = note(`<
  ~@103
  [~@2 [f4,f5]@5 ~@3 [g4,g5]@5 ~]
  [~@2 [a4,a5]@5 ~@3 [g4,g5]@5 ~]
  [~@2 [f4,f5]@5 ~@3 [e4,e5]@5 ~]
  ~
>`).s("gm_trumpet").gain(0.05).pan(0.7)

// other · trombone
const trombone = note(`<
  A B C D ~@31 E ~ F G ~@11 H I ~@15 E ~ F G ~@3 J K ~ F G ~@3 J L J M ~@6 J L J M ~@6 J ~@4
>`.pickRestart({
  A: "~@4 f4!2 ~@4 e4 ~ e4@2 ~@2", B: "~@4 d4 ~@5 e4@4 ~@2", C: "~@4 f4@2 ~@4 e4 ~ e4@2 ~@2", D: "~@4 d4 ~@5 c4@5 ~",
  E: "~@7 a3", F: "~@7 b3", G: "c4 ~@15", H: "~ d4@2 ~@2 c4@2 ~", I: "~@2 f4@5 ~@3 e4@5 ~", J: "~@2 d4@5 ~@3 c4@5 ~",
  K: "~@2 bb3@5 ~@3 a3@2 ~@2 a3@2", L: "~@2 bb3@5 ~@3 c4@5 ~", M: "~@2 bb3@5 ~@3 a3@5 ~",
})).s("gm_trombone").gain(0.15).pan(0.3)

// other · trombone · soft notes
const trombone_soft = note("<~@103 [~@2 bb3@5 ~@3 c4@5 ~] [~@2 d4@5 ~@3 c4@5 ~] [~@2 bb3@5 ~@3 a3@5 ~] ~>")
  .s("gm_trombone").gain(0.05).pan(0.3)

// other · tenor sax
const tenor_sax = note(`<
  A B C D ~@31 E F G H ~@11 I J ~@15 E F G H ~@3 K L F G H ~@3 K M K N ~@6 K M K N ~@6 K ~@4
>`.pickRestart({
  A: "~@4 g2@2 ~@4 c3 ~ a2@2 ~@2", B: "~@2 g2 ~@2 c3@2 ~", C: "~@4 g2 ~@5 c3 ~ a2@2 ~@2", D: "~@4 g2 ~@5 c3@3 ~@3",
  E: "~@7 [a2,e3]", F: "[bb2,f3] ~@7", G: "~@7 eb3", H: "e3 ~@15", I: "~ f4@2 ~@2 e4@2 ~", J: "~@2 a4@5 ~@3 g4@5 ~",
  K: "~@2 f4@5 ~@3 e4@5 ~", L: "~@2 d4@5 ~@3 c4@3 ~ [a2,e3]@2", M: "~@2 d4@5 ~@3 e4@5 ~", N: "~@2 d4@5 ~@3 c4@5 ~",
})).s("gm_tenor_sax").gain(0.15).pan(0.9)

// other · tenor sax · soft notes
const tenor_sax_soft = note("<~@103 [~@2 d4@5 ~@3 e4@5 ~] [~@2 f4@5 ~@3 e4@5 ~] [~@2 d4@5 ~@3 c4@5 ~] ~>")
  .s("gm_tenor_sax").gain(0.05).pan(0.9)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B C D E F G@2 H@2 I J K L I M A B C N O P G Q H@2 I J K L I M R@5 S@3 T@2 U V W@2 X@2 Y Z AA D AB AC AD AE@3 I
  AF K L I AG@6 AH@3 AI@5 AJ@3 AK@2 AI@5 AJ@3 AK@2 AI@5 AL@2 AM AN ~@2
>`.pickRestart({
  A: "~@2 f3 a3@2 f3@2 c3, c3@13 ~@3", B: "~@2 f3 a3@2 ~ c3@2, ~ c3@4 f3@2 ~",
  C: "~@6 c4@2 e4@4 c4@2 a3 ~, ~ d3@5 ~@2, ~@4 a3@7 ~@5", D: "~@3 c4 e4 c4 a3 d3, ~ d3@5 ~@2, ~@2 a3@3 ~@3",
  E: "~@2 bb3 d4 f4@2 d4 bb3, ~ f3@5 ~@2", F: "~@2 bb3 d4!2 bb3 ~ f3, ~ f3@3 ~@2 bb3@2",
  G: "~@2 bb3@2 db4@2 f4 ~ bb4@4 db4@2 bb3 ~",
  H: "[[a3,c4,e4]@6 ~@2 [bb3,d4]@7 ~ [a3,c4]@6 ~@2 [g3,b3]@7 ~, ~@15 f3@6 ~@2 e3@7 ~@2]/2", // Am Bb Am G
  I: "[c4,e4,a4]@5 ~ [c4,e4,a4]@5 ~ [c4,e4,a4] ~@3", J: "[c4,e4,a4]@6 [c4,e4,a4] ~@9",
  K: "[a3,e4]@7 ~ [bb3,d4]@6 ~@2, c4@5 ~@11", L: "[f3,a3,c4]@6 ~@2 [c4,g4]@7 ~, ~@7 a3@8 ~",
  M: "[c4,e4,a4]@5 ~ [c4,e4,a4]@4 c4@2 [e4,a4] ~@3", N: "~@2 c4@2 a3@2 ~@6 c4@2 e4 ~, e4@8 ~@2 a3@5 ~, ~@3 d3@4 ~",
  O: "~@4 bb3@2 d4 ~ d4@4 bb3@2 f3@2, ~ f3@5 ~@2", P: "~@2 [d4,g4]@9 ~@5", Q: "~@2 bb3@2 db4@2 f4 ~ c5 ~@3 db4@2 bb3 ~",
  R: "[[bb3,d4]@5 ~ bb3@8 ~@2 [bb3,d4]@5 ~ g3@4 a4!4 ~@2 [c4,g4]@4 ~@2 [a3,c4,g4]@8 ~@2 g4@5 ~ c4@3 ~ c4@2 c4 [c4,g4] ~@2 d4@5 ~ [d4,f4]@3 ~@7, g3@15 g3@6 ~@5 g3@5 a3@5 ~@11 c4@5 ~@11 bb3@6 ~@11, ~@8 a4 ~]/5", // Bb C5 Am7 C5 Dm
  S: "[[d4,f4]@5 ~ [d4,f4]@3 ~ [bb3,d4,f4] ~@5 [f4,a4]@7 ~ g4@7 ~ [f4,a4]@7 ~ [e4,g4]@8, ~@15 d4@7 ~ [c4,e4]@7 ~ c4@7 ~ c4@8 ~]/3", // Dm Bb F Em C
  T: "[[c4,d4,f4,a4]@3 ~ [c4,d4,f4,a4] ~@3 [c4,d4,f4,a4] ~ [a3,d4]@4 ~@2 [f4,a4]@3 d4 [c4,d4,f4] ~@3 [c4,d4,f4,a4] ~ [a3,d4]@4 ~@2, ~@15 [c4,d4]@4 ~@13]/2", // Dm7 D5 F Dm7 D5 Csus2
  U: "[bb3,c4,eb4,g4]@3 ~ [bb3,c4,eb4] ~@3 [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4]@5 ~", // Cm7
  V: "[d4,f4,a4]@4 [d4,f4,a4] ~@3 [d4,f4,a4] ~ [d4,f4,a4]@4 ~@2, e4 ~@15", // Dm
  W: "[[bb3,eb4,ab4]@4 [bb3,c4,eb4,ab4] ~@3 [bb3,c4,eb4,ab4] ~ [eb4,ab4]@4 ~ c4 [eb4,ab4]@4 [bb3,c4] ~@3 [bb3,eb4,ab4] ~ [bb3,c4,eb4,ab4]@4 ~@2, ~@10 c4 ~@4 bb3@4 ~@13]/2", // Ebsus4 Ab Ab5 Bbsus2 Ebsus4 Ab
  X: "[[d4,f4,a4]@6 ~@2 g4@6 ~@2 a4@6 ~@2 [e4,g4]@7 ~, ~@7 [c4,e4]@6 ~@2 [c4,f4]@7 ~@10]/2", // Dm Em C F5
  Y: "~@2 f3 a3!2 f3!2 c3, ~ c3@5 ~@2", Z: "~@2 f3 a3!2 f3 c3@2, ~@2 c3@9 ~ f3@2 ~@2",
  AA: "~@3 c4 e4@2 c4 d3, ~ d3@5 ~@2, ~@4 a3@7 ~@5", AB: "~ f3 bb3 d4 [c4,f4]@4",
  AC: "~@2 f3@2 bb3@2 d4 ~ [c4,f4]@4 [bb3,d4]@2 ~@2", AD: "~@2 bb3@2 db4@2 f4 ~ bb4@4 f4@3 ~",
  AE: "[c5@2 bb4@2 f4@2 c5@2 bb4@2 f4@2 bb4@3 ~ [e4,a4]@6 ~@2 d4@7 ~ [c4,f4]@6 ~@2 [b3,e4]@7 ~, ~@15 c4@5 ~@3 bb3@6 ~@2 a3@6 ~@2 g3@6 ~@3]/3", // A5 F5 E5
  AF: "[c4,e4,a4]@6 [c4,e4,a4] ~ d3@2 e3@2 f3@2 g3@2", // Am
  AG: "[[c4,e4,a4]@5 ~ [c4,e4,a4]@4 c4@2 [e4,a4] ~@3 [bb3,d4]@5 ~ bb3@8 ~@2 [bb3,d4]@5 ~ g3@4 a4!4 ~@2 [c4,g4]@4 ~@2 [a3,c4,g4]@8 ~@2 g4@5 ~ c4@3 ~ c4@2 c4 [c4,g4] ~@2 d4@5 ~ [d4,f4]@3 ~@7, ~@15 g3@15 ~ g3@6 ~@5 g3@5 a3@5 ~@11 c4@5 ~@11 bb3@6 ~@11, ~@10 a4 ~]/6", // Am A5 Bb C5 Am7 C5 Dm
  AH: "[[d4,f4]@5 ~ [d4,f4]@3 ~ [bb3,d4,f4] ~@5 [f4,a4]@7 ~ g4@7 ~ [d4,f4]@7 ~ [c4,e4]@7 ~, ~@15 d4@7 ~ [c4,e4]@7 ~ bb3@7 ~ g3@8 ~]/3", // Dm Bb F Dm C
  AI: "[[bb3,d4]@5 ~ bb3@8 ~@2 [bb3,d4]@5 ~ g3@4 a4!4 ~@2 [c4,g4]@4 ~@2 [a3,c4,g4]@8 ~@2 g4@5 ~ c4@3 ~ c4@2 c4 [c4,g4] ~@2 d4@5 ~ [d4,f4]@3 ~@7, g3@13 ~@2 g3@6 ~@5 g3@5 a3@5 ~@11 c4@5 ~@11 bb3@6 ~@11, ~@8 a4 ~]/5", // Bb C5 Am7 C5 Dm
  AJ: "[[d4,f4]@5 ~ [d4,f4]@3 ~ [bb3,d4,f4] ~@5 [f4,a4]@7 ~ g4@7 ~ [d4,f4]@7 ~ [c4,e4,g4]@8, ~@15 d4@7 ~ [c4,e4]@7 ~ bb3@7 ~@10]/3", // Dm Bb F Dm C
  AK: "[~ a4@6 ~ g4@7 ~ [d4,f4]@7 ~ [c4,e4]@8, [d4,f4]@7 [c4,e4]@7 ~ bb3@7 ~ g3@8 ~]/2", // Dm C Dm C
  AL: "[[d4,f4]@5 ~ [d4,f4]@3 ~ [bb3,d4,f4] ~@5 f4@2 [d4,f4,a4] a4 [d4,f4,a4]!2 ~@2 [c4,e4,g4] ~ g4 [c4,e4,g4] ~@2 [c4,e4,g4] ~, ~@15 d4@2 ~@15]/2", // Dm Bb Dm C
  AM: "~@2 [d4,f4,a4] a4 [d4,a4] ~@3 [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [g3,c4] a3", // Dm D5 C C5
  AN: "~@2 [c4,f4]@3 ~ [a3,d4] ~ [g3,c4] ~@7", // F5 D5 C5
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.1)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@12 A ~@3 B ~@10 C A ~@3 B ~@3 D ~ E@2 F@2 ~@3 G ~@2 H I ~ J ~@8 K ~@3 B ~@3 D ~ E@2 F@2 ~ L D ~ E@2 F@2 ~ M ~ N D ~
  E@2 F@2 ~ M ~ N D ~ E@2 F@2 O P Q R S
>`.pickRestart({
  A: "~@7 g3@7 ~@2", B: "~@7 g3@6 ~@3", C: "~@9 bb4@3 ~@4", D: "~@3 d4@4 ~",
  E: "[~@22 g4@3 ~@3 g4 ~@3, ~@15 a3@11 ~ a3@3 ~@2]/2", F: "[~ f4@4 ~ bb3@3 ~ [bb3,d4,f4]@3 ~@2 bb3@5 ~@2 bb3@3 ~@7]/2",
  G: "~@3 [c4,f4] ~@12", H: "c4 ~@9 bb3@4 ~@2", I: "~@4 ab4 ~@11", J: "~@7 c4@8 ~", K: "~@8 g4@7 ~", L: "~@8 a3@7 ~",
  M: "~@7 a3@7 ~@2", N: "~@7 a3@8 ~", O: "a4@2 ~@11 [c4,e4,g4] ~@2", P: "~@3 [d4,f4] f4 [f4,a4] ~@9 d4",
  Q: "~@9 [a3,d4] ~ [a3,d4] ~ c4 ~ [a3,d4]", // D5
  R: "~ [a3,d4] ~ [g3,c4] ~ [g3,c4] [a3,d4] ~ [a3,d4] ~ [c4,f4] [a3,d4] ~@2 [a4,c5] c5", S: "d5@3 ~@13, a4 ~@15",
})).s("gm_electric_guitar_clean").gain(0.07).pan(0.1)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  A B A C ~@16 D@4 E@4 ~@8 F@4 G@2 H I J K L M N O H I ~@6 P@2 ~@8 F@4 G@2 Q A F@4 G@2 Q R Q A F@4 G@2 Q R Q A F@4 G@2 Q
  R Q A ~
>`.pickRestart({
  A: "f5 e5", B: "d5 e5", C: "d5 c5", D: "[f4 e5, [a4,c5]@63 ~]/4", E: "[d5@31 c5@31 ~@2, [f4,bb4]@31 ~]/4",
  F: "[[f5,a5]@31 ~ e5@32, ~@31 g5@32 ~]/4", G: "[[d5,f5]@31 ~]/2", H: "bb5 a5", I: "d6 c6", J: "a4@13 ~ f4 g4",
  K: "a4@3 ~ a4 ~ bb4 ~", L: "c5@12 ~@2 ab4 bb4", M: "a4@3 ~", N: "ab4@13 ~ f4 g4", O: "ab4@7 ~ f4 ~@3 g4@2 ~@2",
  P: "[~@16 c7@15 ~, c6@15 ~]/2", Q: "a5 g5", R: "f5 g5",
})).s("gm_string_ensemble_2").gain(0.12).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B A C ~@16 D@2 E@4 F@2 ~@14 G H I J K L M N G H ~@22 O ~@7 O ~ P Q ~@6 O ~ P Q ~@6 P R ~@3
>`.pickRestart({
  A: "a5 g5", B: "f5 g5", C: "f5 e5", D: "c5/2", E: "[e5 d5]/4", F: "[c6@31 ~]/2", G: "bb4 a4", H: "d5@8 c5@7 ~",
  I: "a5@13 ~ f5 g5", J: "a5@3 ~ a5 ~ bb5 ~", K: "c6@12 ~@2 ab5 bb5", L: "a5@3 ~", M: "ab5@13 ~ f5 g5",
  N: "ab5@7 ~ f5 ~@3 g5@2 ~@2", O: "a4 ~", P: "a4 g4", Q: "f4 e4", R: "f4 ~",
})).s("gm_string_ensemble_1").gain(0.09).pan(0.8)
// … 147 more lines