Strudelify

uptown funk

Yaume

KeyF majorTempo120 bpm
0:00/0:00
// uptown funk — Yaume
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6083738; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 149 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · piano · "Voix 1"
const piano = note(`<
  ~@11 A B A B C D A E F G F G H I J K L@2 M N@3 O P ~@3 P ~@3 P@3 Q R S T U ~ V W X Y F G F G H I J K L@2 M N@3 O P ~@3
  P ~@3 P@3 Z@2 ~@4 AA AB AA AB AC AD AE AF ~@12 AG AH AG AH AG AH AG AH AI AJ AI AJ AI AJ AI ~ AI AJ AI AJ AI AJ AI ~
  AI AJ AI AJ AI AJ AI AJ ~@10
>`.pickRestart({
  A: "f4@3 f4 ~@2 c4@2 d4@3 d4 ~@2 c4@2", B: "d4@3 d4 ~@2 c4@2 d4@3 d4 ~@2 c4@2",
  C: "c4@3 c4 ~@2 c4@2 c4@3 c4 ~@2 c4@2", D: "c4!4 ~ c4 c4@2 d4 d4@2 ~@3 d4@2",
  E: "f4@2 f4!2 ~@2 c4@2 d4@2 d4!2 ~@2 f4@2", F: "f4 ~@6 a3", G: "c4@3 d4 ~@2 d4@2 f4 d4@2 d4 ~@2 f4@2", H: "f4 ~@7",
  I: "f4@3 f4 ~@2 f4@2 f4 f4@2 f4 ~@2 f4@2", J: "f4 ~@6 f4", K: "d4!4 ~@2 d4!6 ~@4",
  L: "c4@3 c4 ~@2 c4!2 d4!2 ~@2 d5@4", M: "f4@3 f4 ~@2 f4!4 ~@2 d5@4", N: "f4@2 f4@2 f4@2 f4@2 f4!2 d4 ~@5",
  O: "f4!4 ~ f4!7 ~@4", P: "g4@2 f4 g4 ~ f4 a4@2 f4@4 ~@4", Q: "c5@2 a4 c5 ~ a4 c5@2 g4@4 ~@2 d4@2",
  R: "~ f4 ~ g4 ~ d5 ~@2", S: "f4@2 ~@4 d4!4 ~@6", T: "c4@3 c4 ~@2 c4!2 d4!2 ~@6", U: "f4@3 f4 ~@2 c4@2 d4 d4@2 d4 ~@4",
  V: "c4@3 c4 ~@4 c4 c4@2 c4 ~@4", W: "c4@3 c4 ~@2 c4!2 d4!2 ~@4 d4@2", X: "f4@3 f4 ~@2 c4@2 d4@3 d4 ~@4",
  Y: "d4@2 c4 a3 d4@2 d4@2 c4 a3 ~@4 f4@2", Z: "c5@2 a4 c5 ~ a4 c5@2 g4@4 ~@4", AA: "f4@2 ~@2 f4@2 ~@2 f4 ~ f4!2 ~@4",
  AB: "f4 ~ d4@2 f4 ~ f4 d4 ~@8", AC: "a4@4 ~@2 f4@2 f4!2 ~@4 f4@2", AD: "a4@3 a4 ~@2 f4@2 a4@2 ~@4 a4 f4",
  AE: "a4@3 a4 ~@2 f4@2 a4@2 ~@4 f4@2", AF: "a4@2 a4 a4@3 a4@2 f4!2 ~@2 f4!2 ~@2", AG: "gb4@4 gb4@4 gb4@2 gb4!2 ~@4",
  AH: "gb4@2 gb4@2 gb4@2 gb4!2 ~@8", AI: "[db4,gb4]@4 [db4,gb4]@4 [db4,gb4]@2 [db4,gb4] [eb4,gb4] ~@4",
  AJ: "[db4,gb4]@2 [db4,gb4]@2 [db4,gb4]@2 [c4,gb4] [eb4,gb4] ~@8", // Gb5 Cdim Ebm
})).s("gm_piano").gain(0.09).pan(0.3)

// other · piano · "Voix 2"
const piano_2 = note(`<
  ~@19 A ~ A ~ A ~ A ~ B@3 C@2 D E F ~@3 F ~@3 F@3 G H ~@8 A ~ A ~ A ~ A ~ B@3 C@2 D E F ~@3 F ~@3 F@3 I@2 ~@24 J K J K
  J K J K J K J K J K J ~ J K J K J K J ~ L M N O L M N O ~@10
>`.pickRestart({
  A: "~@2 [c5,f5]!2 ~@4", B: "~@3 d5", C: "f4@2 f4@2 f4@2 f4@2 f4!2 d4 ~@5", D: "f5@2 f5@2 f5@2 f5@2 f5!2 d5 ~@5",
  E: "f5!4 ~ f5!7 ~@4", F: "g5@2 f5 g5 ~ f5 a5@2 f5@4 ~@4", G: "c6@2 a5 c6 ~ a5 c6@2 g5@4 ~@2 d4@2",
  H: "~ f4 ~ g4 ~ d5 ~@2", I: "c6@2 a5 c6 ~ a5 c6@2 g5@4 ~@4", J: "gb5@4 gb5@4 gb5@2 gb5!2 ~@4",
  K: "gb5@2 gb5@2 gb5@2 gb5!2 ~@8", L: "eb5@4 eb5@4 eb5@2 eb5!2 ~@4", M: "eb5@2 eb5@2 eb5@2 eb5!2 ~@8",
  N: "d5@4 d5@4 d5@2 d5!2 ~@4", O: "db5@2 db5@2 db5@2 db5!2 ~@8",
})).s("gm_piano").gain(0.26).pan(0.7)

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  A B@2 C ~ D E@2 F@2 G ~@7 H I ~@6 J K G@3 ~@2 L M A N A O A N A O P Q R ~ I ~@6 S T ~@6 J G@2 U V ~@2 W M A N A O A N
  A O X Y X Z ~@16 AA AB@2 AC AD@2 AE AF AG AH AI AJ AK AL AM AN AO AH AI AJ AK AL AM AP AO AH AI AJ AK AL AM AP AQ AR
  AS AT AQ AU AV AP AQ AR AS AT AQ AW AX AY AZ BA
>`.pickRestart({
  A: "f4 d4 c4 d4 ~@2 f4 d4 c4 d4 ~@2 f4 d4 c4 d4",
  B: "[~@2 f4@18 ~@4 d4 [eb4,e4] f4 [gb4,g4] ab4 [a4,bb4] b4 [c5,db5]]/2", C: "d5@4 ~@4 f4 ~ c4 d4 ~ c4 d4 ~",
  D: "~@2 ab4 ~ g4 f4 d4 c4 d4 c4 a3 g3 f3 [g3,a3] c4 [d4,f4]", // Gsus2 Dm
  E: "[g4@3 f4@3 d4 ~ g4@3 f4@3 d4@10 ~@2 a3 b3 c4 d4 e4 f4]/2", F: "[g4@3 f4@3 d4 ~ g4@3 f4@3 d4@18]/2", G: "~@3 a4",
  H: "a4@4 ~@8 a4!2 ~@2", I: "d5 ~@3", J: "a4!2 ~@4 g4!2 ~@4 a4!2 ~@2", K: "d5 ~@2 a4",
  L: "~@8 d4 [eb4,e4] f4 [gb4,g4] ab4 [a4,bb4] b4 [c5,db5]", M: "d5@4 ~@8 a4!2 ~@2", N: "~@2 f4@2 ~@8 f4 e4 d4 c4",
  O: "~@2 f4@2 ~@4 f4@2 g4 a4 f4 d4 ~@2", P: "~@12 a4!2 ~@2", Q: "~@10 a4!4 ~@2", R: "~@10 a4!6", S: "a4 ~@5 a4@2",
  T: "a4 ~@3", U: "~@3 bb4", V: "~@3 b4", W: "e4 g4 bb4@2 ab4 b4 d5 eb5 c5 e5 d5@2 ab4 [a4,bb4] b4 [c5,db5]",
  X: "g4@3 ab4@3 a4@2 ~@4 a4!2 ~@2", Y: "g4@3 ab4@3 a4@2 ~@2 a4!4 ~@2", Z: "c5@3 db5@3 d5@2 ~ d5 ~@2 d5!2 ~@2",
  AA: "~@4 a4@2 ~@2 c4 d4 ~ c4 ~@4",
  AB: "[~ g4 a4 c5 d5 a4 c5 d5 e5 f5 g5 ab5 g5 f5 d5 f5@3 g5 d5 ~ c5 ~ d5@2 e5 f5 ~@5]/2",
  AC: "~@2 a4!4 ~ ab4 a4!4 ~ ab4 ~ a4",
  AD: "[~@2 d5@2 ~@5 c4 d4 f4 ~ g4 ~ a4@2 b4 c5 b4@2 a4 g4 a4@2 g4 f4 g4@2 f4 d4 ~]/2",
  AE: "~ c4 d4 f4 g4 d4 f4 g4 a4 f4 g4 a4 c4 [d4,e4] f4 [g4,a4]", AF: "~ b4 ~@2 c5 ~@2 db5 ~@2 d5 ~@5", AG: "eb5 ~@3",
  AH: "~@9 ab4 bb4 db5 ~ eb5@3", AI: "gb5 ~ gb5!2 ~@12", AJ: "~@10 gb5!2 ~ gb5@3", AK: "~ ab5!3 ~@12",
  AL: "~@8 db4 eb4 f4 gb4 g4 a4 bb4 c5", AM: "a4 d5", AN: "~ ab4 bb4 db5 ~ eb4@2 f4 ~ f4 gb4 ab4 ~ bb4@3",
  AO: "ab4 ~@3", AP: "db5@2 c5@2 bb4@2 ab4@2 gb4@2 ab4@2 bb4 gb4@3", AQ: "ab4 ~ gb4 eb4 ~ bb4 ~ ab4@3 gb4 eb4 ~@4",
  AR: "~@2 ab4 gb4 ~ a4 ~ ab4@3 gb4 eb4 ~@2 a4 ~", AS: "ab4@2 gb4 eb4 ~ a4 ~ ab4@3 gb4 eb4 ~@4",
  AT: "~ ab4 bb4 c5 db5 c5 db5 eb5 f5 eb5 f5 gb5 ab5 bb5@3", AU: "~@2 ab4 gb4 ~ bb4 ~ ab4@3 gb4 eb4 ~ db4 eb4 gb4",
  AV: "ab4 a4 ab4 a4 ab4 a4 ab4 a4 ab4 gb4 f4 gb4 ab4 bb4 b4 c5",
  AW: "~ gb4 ab4 a4 bb4 a4 bb4 c5 db5 c5 db5 eb5 e5 f5 gb5 g5",
  AX: "ab5 a5 gb5 eb5 ab5 bb5 gb5 eb5 ~ f4 gb4 f4 gb4!2 [ab4,a4] [bb4,b4]", // Amaj7 Bmaj7
  AY: "db5@2 c5@2 bb4@2 ab4@2 ~ a4 ~@2 bb4 ~@2 b4, c5 ~@15", AZ: "~@2 c5 ~@3 eb4 ~ ab4@3 gb4@3 eb4 ~",
  BA: "ab4@3 gb4@3 eb5@10",
})).s("gm_trumpet").gain(0.33).pan(0.2)

// other · trombone
const trombone = note(`<
  A B@2 C ~ D E@2 F@2 G ~@7 H I ~@6 J K L@3 ~@2 M N A O A P A O A P Q R S ~ T U V W X ~@2 Y I ~@6 J L@4 ~@2 Z N A O A P
  A O A P AA AB AA AC ~@16 AD AE@2 AF AG@2 AH AI AJ AK AL AM AN AO AP AQ AR AK AL AM AN AO AP AS AR AK AL AM AN AO AP AS
  AT AU AV AW AT AX AY AS AT AU AV AW AT AZ BA BB BC BD
>`.pickRestart({
  A: "f4 d4 c4 d4 ~@2 f4 d4 c4 d4 ~@2 f4 d4 c4 d4",
  B: "[~@2 ab3@18 ~@4 d3 [eb3,e3] f3 [gb3,g3] ab3 [a3,bb3] b3 [c4,db4]]/2", C: "d4@4 ~@4 f4 ~ c4 d4 ~ c4 d4 ~",
  D: "~@2 ab4 ~ g4 f4 d4 c4 d4 c4 a3 g3 f3 [g3,a3] c4 [d4,f4]", // Gsus2 Dm
  E: "[g4@3 f4@3 f4 ~ g4@3 g4@3 g4@10 ~@2 a3 b3 c4 d4 e4 f4]/2", F: "[g4@3 f4 ~@4 c5@3 bb4@3 g4@18]/2", G: "~@3 c4",
  H: "c4@4 ~@8 c4!2 ~@2", I: "d4 ~@3", J: "c4!2 ~@4 c4!2 ~@4 c4!2 ~@2", K: "d4 ~@2 d4", L: "~@3 d4",
  M: "~@8 d3 [eb3,e3] f3 [gb3,g3] ab3 [a3,bb3] b3 [c4,db4]", N: "d4@4 ~@8 c4!2 ~@2", O: "~@2 f4@2 ~@8 f4 e4 d4 c4",
  P: "~@2 f4@2 ~@4 f4@2 g4 a4 f4 d4 ~@2", Q: "~@12 d4!2 ~@2", R: "~@10 d4!4 ~@2", S: "~@10 d4!6", T: "d4 ~@2 f4",
  U: "d4@8 ~@2 a3 c4 d4 e4 f4 g4", V: "f4!2 ~ f4 ~ c4 a3@8 ~@2", W: "~@3 f4", X: "d4 ~", Y: "c4 ~@5 c4@2",
  Z: "e3 g3 bb3@2 ab3 b3 d4 eb4 c4 e4 d4@2 ab3 [a3,bb3] b3 [c4,db4]", AA: "c4@3 db4@3 d4@2 ~@4 d4!2 ~@2",
  AB: "c4@3 db4@3 d4@2 ~@2 d4!4 ~@2", AC: "c4@3 db4@3 d4@2 ~ d4 ~@2 d4!2 ~@2", AD: "~@4 d4@2 ~@2 f4 g4 ~ f4 ~@4",
  AE: "[~@3 c4 d4 a3 c4 d4 e4 f4 g4 ab4 g4 f4 d4 f4@3 g4 d4 ~ c4 ~ d4@2 e4 f4 ~@5]/2",
  AF: "~@2 e4 f4!3 ~ e4 f4!4 ~ e4 ~ f4",
  AG: "[~@2 a4@2 ~@5 c4 d4 f4 ~ g4 ~ a3@2 b3 c4 b3@2 a3 g3 a3@2 g3 f3 g3@2 f3 d3 ~]/2",
  AH: "~ c4 d4 f4 g4 d4 f4 g4 a4 f4 g4 a4 c4 [d4,e4] f4 [g4,a4]", AI: "~ db4 ~@2 d4 ~@2 eb4 ~@2 e4 ~@5", AJ: "f4 ~@3",
  AK: "~@9 ab3 bb3 ab3 ~ bb3@3", AL: "d4 ~ d4!2 ~@12", AM: "~@10 db4!2 ~ db4@3", AN: "~ eb4!3 ~@12",
  AO: "~@8 db3 eb3 f3 gb3 g3 a3 bb3 c4", AP: "a3 d4", AQ: "~ ab3 bb3 db4 ~ eb4@2 f4 ~ f3 gb3 ab3 ~ db4@3",
  AR: "eb4 ~@3", AS: "db4@2 c4@2 bb3@2 ab3@2 gb3@2 ab3@2 bb3 gb3@3", AT: "ab3 ~ gb3 eb3 ~ bb3 ~ ab3@3 gb3 eb3 ~@4",
  AU: "~@2 ab3 gb3 ~ a3 ~ ab3@3 gb3 eb3 ~@2 a3 ~", AV: "ab3@2 gb3 eb3 ~ a3 ~ ab3@3 gb3 eb3 ~@4",
  AW: "~ ab3 bb3 c4 db4 c4 db4 eb4 f4 eb4 f4 gb4 ab4 gb4@3", AX: "~@2 ab3 gb3 ~ bb3 ~ ab3@3 gb3 eb3 ~ db3 eb3 gb3",
  AY: "ab3 a3 ab3 a3 ab3 a3 ab3 a3 ab3 gb3 f3 gb3 ab3 bb3 b3 c4",
  AZ: "~ gb3 ab3 a3 bb3 a3 bb3 c4 db4 c4 db4 eb4 e4 f4 gb4 g4",
  BA: "ab4 a4 gb4 eb4 ab4 bb4 gb4 eb4 ~ f4 gb4 f4 gb4!2 [ab4,a4] [bb4,b4]", // Amaj7 Bmaj7
  BB: "db4@2 c4@2 bb3@2 ab3@2 ~ b3 ~@2 c4 ~@2 db4, c5 ~@15", BC: "~@2 d4 ~@3 eb4 ~ ab4@3 gb4@3 eb4 ~",
  BD: "ab4@3 gb4@3 eb4@10",
})).s("gm_trombone").gain(0.17).pan(0.3)

// other · alto sax · "Saxophone Alto"
const alto_sax = note(`<
  A B@2 C ~ D E@2 F@2 G ~@7 H I ~@6 J K G@3 ~@2 L M A N A O A N A O P Q R ~ I ~@6 S I ~@6 J G@2 T G ~@2 U V A N A O A N
  A O W X W Y ~@16 Z AA AB AC AD@2 AE AF AG AH AI AJ AK AL AM AN I AH AI AJ AK AL AM AO I AH AI AJ AK AL AM AO AP AQ AR
  AS AP AT AU AO AP AQ AR AS AP AV AW AX AY AZ
>`.pickRestart({
  A: "f5 d5 c5 d5 ~@2 f5 d5 c5 d5 ~@2 f5 d5 c5 d5",
  B: "[~@2 db5@18 ~@4 d5 [eb5,e5] f5 [gb5,g5] ab5 [a5,bb5] b5 [c6,db6]]/2", C: "d6@3 ~@5 f5 ~ c5 d5 ~ c5 d5 ~",
  D: "~@2 ab5 ~ g5 f5 d5 c5 d5 c5 a4 g4 f4 [g4,a4] c5 [d5,f5]", // Gsus2 Dm
  E: "[c5@3 bb4 ~@4 g4@3 a4@3 a4@10 ~@2 f4 g4 f4 d4 c4 ~]/2", F: "[b4@3 a4 ~@4 c5@3 bb4@3 b4@18]/2", G: "~@3 f5",
  H: "f5@4 ~@8 f5!2 ~@2", I: "f5 ~@3", J: "f5!2 ~@4 f5!2 ~@4 f5!2 ~@2", K: "f5 ~@2 f5",
  L: "~@8 d5 [eb5,e5] f5 [gb5,g5] ab5 [a5,bb5] b5 [c6,db6]", M: "d6@3 ~@9 f5!2 ~@2", N: "~@2 f5 ~@9 f5 e5 d5 c5",
  O: "~@2 f5 ~@5 f5 ~ g5 a5 f5 d5 ~@2", P: "~@12 f5!2 ~@2", Q: "~@10 f5!4 ~@2", R: "~@10 f5!6", S: "f5 ~@5 f5@2",
  T: "~@3 gb5", U: "e4 g4 bb4@2 ab4 b4 d5 eb5 c5 e5 d5@2 ab4 [a4,bb4] b4 [c5,db5]", V: "d5@4 ~@8 f5!2 ~@2",
  W: "eb5@3 e5@3 f5@2 ~@4 f5!2 ~@2", X: "eb5@3 e5@3 f5@2 ~@2 f5!4 ~@2", Y: "eb5@3 e5@3 f5@2 ~ f5 ~@2 f5!2 ~@2",
  Z: "~@4 f5@2 ~@2 f5 g5 ~ f5 ~@4", AA: "~ g4 a4 c5 d5 a4 c5 d5 e5 f5 g5 ab5 g5 f5 d5 f5",
  AB: "f5@2 g5 d5 ~ c5 ~ d5@2 e5 f5 ~@5", AC: "~@2 e5!4 ~ eb5 e5!4 ~ eb5 ~ e5",
  AD: "[~@2 f5@2 ~@5 c4 d4 f4 ~ g4 ~ a4@2 b4 c5 b4@2 a4 g4 a4@2 g4 f4 g4@2 f4 d4 ~]/2",
  AE: "~ c4 d4 f4 g4 d4 f4 g4 a4 f4 g4 a4 c5 [d5,e5] f5 [g5,a5]", AF: "~ e5 ~@2 f5 ~@2 gb5 ~@2 g5 ~@5", AG: "bb5 ~@3",
  AH: "~@9 ab4 bb4 db5 ~ ab4@3", AI: "bb4 ~ bb4!2 ~@12", AJ: "~@10 eb5!2 ~ eb5@3", AK: "~ f5!3 ~@12",
  AL: "~ gb4 ab4 a4 bb4 a4 bb4 c5 db5 eb5 f5 gb5 g5 a5 bb5 c6", AM: "d5 gb5",
  AN: "~ ab4 bb4 db5 ~ eb5@2 f5 ~ f5 gb5 ab5 ~ gb5@3", AO: "db5 ~ c5 ~ bb4 ~ ab4 ~ gb4 ~ ab4 ~ bb4 gb4@3",
  AP: "ab4 ~ gb4 eb4 ~ bb4 ~ ab4@3 gb4 eb4 ~@4", AQ: "~@2 ab4 gb4 ~ a4 ~ ab4@3 gb4 eb4 ~@2 a4 ~",
  AR: "ab4@2 gb4 eb4 ~ a4 ~ ab4@3 gb4 eb4 ~@4", AS: "~ ab3 bb3 c4 db4 c4 db4 eb4 f4 eb4 f4 gb4 ab4 d4@3",
  AT: "~@2 ab4 gb4 ~ bb4 ~ ab4@3 gb4 eb4 ~ db4 eb4 gb4", AU: "ab4 a4 ab4 a4 ab4 a4 ab4 a4 ab4 gb4 f4 gb4 ab4 bb4 b4 c5",
  AV: "~ gb3 ab3 a3 bb3 a3 bb3 c4 db4 c4 db4 eb4 e4 f4 gb4 g4",
  AW: "ab4 a4 gb4 eb4 ab4 bb4 gb4 eb4 ~ f4 gb4 f4 gb4!2 [ab4,a4] [bb4,b4]", // Amaj7 Bmaj7
  AX: "[c5,db5] ~ c5 ~ bb4 ~ ab4 ~@2 d5 ~@2 eb5 ~@2 e5", AY: "~@2 f5 ~@3 eb5 ~ ab5@3 gb5@3 eb5 ~",
  AZ: "ab5@3 gb5@3 f5@10",
})).s("gm_alto_sax").gain(0.3)

// other · baritone sax · "Saxophone Baryton"
const baritone_sax = note(`<
  A B@2 C ~ D E@2 F@2 G ~@7 H I ~@6 J K L@3 ~@2 M N A O A P A O A P Q R S ~ T U V W X ~@2 Y I ~@6 J L@4 ~@2 Z AA A O A P
  A O A P AB AC AB AD ~@16 AE AF@2 AG AH@2 AI AJ AK AL AM AN AO AP AQ AR AS AL AM AN AO AP AQ AT AS AL AM AN AO AP AQ AT
  AU AV AW AX AU AY AZ AT AU AV AW AX AU BA BB BC BD BE
>`.pickRestart({
  A: "f4 d4 c4 d4 ~@2 f4 d4 c4 d4 ~@2 f4 d4 c4 d4",
  B: "[~@2 ab3@18 ~@4 d3 [eb3,e3] f3 [gb3,g3] ab3 [a3,bb3] b3 [c4,db4]]/2", C: "d4@3 ~@5 f3 ~ c3 d3 ~ c3 d3 ~",
  D: "~@2 ab4 ~ g4 f4 d4 c4 d4 c4 a3 g3 f3 [g3,a3] c4 [d4,f4]", // Gsus2 Dm
  E: "[g3@3 f3 ~@4 g3@3 g3@3 g3@10 ~@2 a3 b3 c4 d4 e4 f4]/2", F: "[g4@3 f4 ~@4 c4@3 bb3@3 g3@18]/2", G: "~@3 c4",
  H: "c4@4 ~@8 c4!2 ~@2", I: "d4 ~@3", J: "c4!2 ~@4 c4!2 ~@4 c4!2 ~@2", K: "d4 ~@2 d4", L: "~@3 d4",
  M: "~@8 d3 [eb3,e3] f3 [gb3,g3] ab3 [a3,bb3] b3 [c4,db4]", N: "d4@3 ~@9 c4!2 ~@2", O: "~@2 f4 ~@9 f4 e4 d4 c4",
  P: "~@2 f4 ~@5 f4 ~ g4 a4 f4 d4 ~@2", Q: "~@12 d4!2 ~@2", R: "~@10 d4!4 ~@2", S: "~@10 d4!6", T: "d4 ~@2 f3",
  U: "d3@8 ~@2 a2 c3 d3 e3 f3 g3", V: "f3!2 ~ f3 ~ c3 a2@8 ~@2", W: "~@3 f3", X: "d3 ~", Y: "c4 ~@5 c4@2",
  Z: "e3 g3 bb3@2 ab3 b3 d4 eb4 c4 e4 d4@2 ab3 [a3,bb3] b3 [c4,db4]", AA: "d4@4 ~@8 c4!2 ~@2",
  AB: "c4@3 db4@3 d4@2 ~@4 d4!2 ~@2", AC: "c4@3 db4@3 d4@2 ~@2 d4!4 ~@2", AD: "c4@3 db4@3 d4@2 ~ d4 ~@2 d4!2 ~@2",
  AE: "~@4 d4@2 ~@2 f3 g3 ~ f3 ~@4",
  AF: "[~ g3 a3 c3 d3 a2 c3 d3 e3 f3 g3 ab3 g3 f3 d3 f3@3 g3 d3 ~ c3 ~ d3@2 e3 f3 ~@5]/2",
  AG: "~@2 e3 f3!3 ~ e3 f3!4 ~ e3 ~ f3",
  AH: "[~@2 a3@2 ~@5 c3 d3 f3 ~ g3 ~ a3@2 b3 c4 b3@2 a3 g3 a3@2 g3 f3 g3@2 f3 d3 ~]/2",
  AI: "~ c3 d3 f3 g3 d3 f3 g3 a3 f3 g3 a3 c4 [d4,e4] f4 [g4,a4]", AJ: "~ db4 ~@2 d4 ~@2 eb4 ~@2 e4 ~@5", AK: "f4 ~@3",
  AL: "~@9 ab3 bb3 ab3 ~ bb3@3", AM: "d4 ~ d4!2 ~@12", AN: "~@10 db4!2 ~ db4@3", AO: "~ eb4!3 ~@12",
  AP: "~ gb3 ab3 a3 bb3 a3 bb3 c4 db3 eb3 f3 gb3 g3 a3 bb3 c4", AQ: "a3 d4",
  AR: "~ ab3 bb3 db4 ~ eb4@2 f4 ~ f3 gb3 ab3 ~ db4@3", AS: "eb4 ~@3",
  AT: "db3 ~ c3 ~ bb2 ~ ab2 ~ gb2 ~ ab2 ~ bb2 gb2@3", AU: "ab3 ~ gb3 eb3 ~ bb3 ~ ab3@3 gb3 eb3 ~@4",
  AV: "~@2 ab3 gb3 ~ a3 ~ ab3@3 gb3 eb3 ~@2 a3 ~", AW: "ab3@2 gb3 eb3 ~ a3 ~ ab3@3 gb3 eb3 ~@4",
  AX: "~ ab3 bb3 c4 db4 c4 db4 eb4 f4 eb4 f4 gb4 ab4 d4@3", AY: "~@2 ab3 gb3 ~ bb3 ~ ab3@3 gb3 eb3 ~ db3 eb3 gb3",
  AZ: "ab3 a3 ab3 a3 ab3 a3 ab3 a3 ab3 gb3 f3 gb3 ab3 bb3 b3 c4",
  BA: "~ gb3 ab3 a3 bb3 a3 bb3 c4 db4 c4 db4 eb4 e4 f4 gb4 g4",
  BB: "ab4 a4 gb4 eb4 ab4 bb4 gb4 eb4 ~ f3 gb3 f3 gb3!2 [ab3,a3] [bb3,b3]", // Amaj7 Bmaj7
  BC: "[db3,c4] ~ c3 ~ bb2 ~ ab2 ~@2 b3 ~@2 c4 ~@2 db4", BD: "~@2 d4 ~@3 eb4 ~ ab4@3 gb4@3 eb4 ~",
  BE: "ab4@3 gb4@3 eb4@10",
})).s("gm_baritone_sax").gain(0.3)

// chords · electric guitar clean · "Guitare électrique" · F G7 C5 D5 C5 F G7 C5 …
const electric_guitar_clean = note(`<
  ~@87
  [[a4,c5,f5]@3 [a4,c5,f5] ~@2 c4@2 d4@4 ~@4]
  [[g4,b4,f5]@3 [g4,b4,f5] ~@4 [g4,c5] [a4,d5] [g4,c5]@4 ~@2]
  [[a4,c5,f5]@3 [a4,c5,f5] ~@2 c4@2 d4@4 ~@4]
  [[g4,b4,f5]@3 [g4,b4,f5] ~@4 [g4,c5] [a4,d5] [g4,c5]@4 ~@2]
  ~@58
>`).s("gm_electric_guitar_clean").gain(0.09).pan(0.3)

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  A B@2 C D@2 E@2 F@3 G H I J G H I K G H I J G H I L M N@3 O P Q R S@2 T@2 S@2 U@2 V W X ~ Y Z AA AB AC Z AA AD AC Z AA
  AE AC Z AA L AF AG AH AI O P Q R S@2 AJ@2 S@2 U@2 V W V AK AL@2 AM@2 AN AO AN AP@4 AQ@8 AR AS@3 AT AU AV AW AX AU AV
  AW AX AU AV AW AX AU AV AW AX AU AV AW AX AU AV AW AX AU AV AW AX AU AV AW AX AU AV AW AX AU AV AW AY AZ BA
>`.pickRestart({
  A: "[d3,g4,c5,f5] ~@2 [ab2,ab4,c5,f5] ~@2 [a2,g4,c5,f5] ~", B: "[~ [b1,g4,a4,db5,f5]@15]/2", C: "[d3,g4,c5,f5] ~@7",
  D: "[[g3,a3,d4,g4]@3 [f3,a3,c4,d4,f4] ~@4 [g3,a3,d4,g4]@3 [a3,c4,e4,f4,a4] ~@2 [bb3,c4,d4,g4,bb4]@6 ~@12]/2", // Gsus2 Dm7 Gsus2 Fmaj7 Gm
  E: "[[f3,g3,c4,g4]@3 [f2,ab3,db4,f4] ~@4 [g2,a3,e4,g4]@3 [a2,db4,e4,f4]@3 [d3,g3,d4,f4]@6 ~@12]/2", // Fsus2 Db A7 A G7
  F: "[[g3,a3,d4,g4]@3 [a3,d4,f4] ~@4 [ab2,c4,e4,g4]@3 [gb2,d4,gb4,a4] ~@2 [eb2,eb4,g4,b4,d5]@26 ~@4 [a2,db4,f4,g4,a4,c5]@4, ~@3 f3@5 ~@40]/3", // Gsus2 Dm C D G F
  G: "~@3 d3, [a3,c4,d4,g4]@3 [a3,c4,d4,gb4]@5, ~ d2 ~@2", H: "~@3 a2, [g3,bb3,d4,f4]@3 [g3,bb3,d4,e4]@5, ~ d3 ~@2",
  I: "~@3 g2, [a3,c4,d4,g4]@3 [a3,c4,d4,gb4]@5, ~ d2 ~@2", // Am7 D7
  J: "~@3 [g3,bb3,d4,e4]@3 [a2,g3,a3,db4,f4]@2, [g3,bb3,d4,f4]@3 ~@5, ~ g2 ~@2", // Em7b5 Aaug Gm7
  K: "[c3,e4,a4,c5,d5]@4 ~@8 [a2,db4,f4,g4,a4,c5]!2 ~@2", // Am F
  L: "[c3,e4,a4,c5,d5]!2 ~@4 [bb2,d4,g4,bb4,c5]!2 ~@4 [a2,db4,f4,a4]!2 ~@2", // Am Gm Aaug
  M: "[d3,gb4,a4,c5,f5] ~@2 [d3,gb4,a4,c5,f5]", N: "~@3 [d3,gb4,a4,c5,f5]",
  O: "~ [d2,e4,g4,b4] ~ [eb2,f4,ab4,c5] ~ [e2,gb4,a4,db5] ~ [f2,g4,bb4,d5]", // Em7 Fm7 Gbm7 Gm7
  P: "~ [gb2,ab4,b4,eb5] ~ [g2,a4,c5,e5] ~ [ab2,bb4,db5,f5] ~ [a2,b4,d5,gb5]", // Abm7 Am7 Bbm7 Bm7
// … 62 more lines

More by Yaume