Strudelify
Georgia cover art

Georgia

Ray Charles

KeyC♯ minorTempo87 bpm
0:00/0:00
// Georgia — Ray Charles
// 87 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "solo 2" trumpet (copy of ch 6 "solo 1" trumpet, 0.104 beats late); ch 7 "solo 2" tenor sax (copy of ch 6 "solo 1" tenor sax, 0.104 beats late); ch 9 "lead 2" clarinet (copy of ch 8 "lead 1" clarinet, 0.073 beats late); ch 9 "lead 2" synth brass 2 (copy of ch 8 "lead 1" synth brass 2, 0.073 beats late)
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(87/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 · "bass"
const bass = note(`<
  A@2 B C@3 D E@3 F G@2 H@3 I@3 J@3 K L@2 M@3 N@2 O P@2 Q R S T U@2 V W@3 E@3 F G@2 H@3 I@3 X Y@2 K L@2 M@3 Z Y@2 K L@2
  M@3 N@2 O P@2 Q R S T U@2 V AA@2 AB AC@2 AD AE@3 AF@3 AG@2 AH AI AJ@2 AK AL@2
>`.pickRestart({
  A: "[~@12 e2@3 ~@2 b2@3 ~ e3@7 ~@2 d#2@14 ~@4]/2", B: "c#2@14 ~@5 c1 ~ g1 ~ c2",
  C: "[e2@2 ~ c3@2 ~@5 f#2@9 g#2@4 b2@14 ~@4 a#2@14 ~@4 f#2@13, ~ g2 ~@34]/3", D: "~@5 b2@14 ~@5",
  E: "[e2@14 ~ e2@2 ~ e2@14 ~@4 d#2@14 ~ d#2@2 ~ g#2@14 ~ c2@2 ~]/3", F: "c#2@14 ~ c#2@2 ~ b1@6",
  G: "[~@3 f#2@7 ~@2 a#1@14 ~@4 a1@14 ~@4]/2",
  H: "[e2@7 ~@2 d2@7 ~@2 c#2@14 ~ e2@2 ~ f#2@7 ~@2 f#2@5 ~ g#2@2 ~ b1@11 ~ b1@2 ~ e2@2 ~]/3",
  I: "[d2@14 ~ d2@2 ~ c#2@14 ~ f2@2 ~ f#2@14 ~ f#2@2 ~ b2@11 ~ b2@2 ~ c#3@2 ~]/3",
  J: "[e2@14 ~ e2@2 ~ e2@11 ~ f#2@2 ~ g2@2 ~ g#2@14 ~@4 g#2@14 ~ c3@2 ~]/3", K: "c#3@14 ~ c3@2 ~ b2@6",
  L: "[~@3 e2@7 ~@2 a2@7 ~@2 a2@5 ~ a2@2 ~ a#2@14 ~ a#2@2 ~]/2",
  M: "[b2@7 ~@2 d2@7 ~@2 d2@14 ~ f2@2 ~ f#2@7 ~@2 f#2@5 ~ f#2@2 ~ b2@11 ~ b2@2 ~ c#3@2 ~]/3",
  N: "[e2@7 ~@2 e2@2 ~ g2@2 ~ g#2@2 ~ a2@14 ~ b2@2 ~ e2@11 ~]/2", O: "f#2@2 ~ g2@2 ~ g#2@7 ~@2 g#1@2 ~ b1@2 ~ c2@2 ~",
  P: "[c#2@14 ~ c#2@2 ~ c#2@14 ~ c#2@2 ~@13]/2", Q: "~@3 c#2@2 ~ a2@7 ~@2 g#2@5 ~ g#2@2 ~", R: "c#2@14 ~ c#2@2 ~@7",
  S: "~@9 c#2@2 ~ c#2@11 ~", T: "d#2@2 ~ e2@2 ~ f#2@11 ~ b1@2 ~ c2@2 ~",
  U: "[c#2@14 ~ c#2@2 ~ c#2@14 ~ c#2@3 c#2@11 ~]/2", V: "c#2@2 ~ d2@2 ~@4 g2@2 ~ g2@2 ~@10",
  W: "[g#2@14 ~ g#2@2 ~ c#2@14 ~ f2@2 ~ f#2@14 ~ f#2@2 ~ b2@7 ~@2 b1@2 ~ c#2@2 ~ b1@2 ~]/3", X: "e2@14 ~ e2@2 ~ e2@6",
  Y: "[e2@5 ~ f#2@2 ~ g2@2 ~ g#2@14 ~@4 g#2@14 ~ c3@2 ~]/2", Z: "e2@7 ~@2 e2@2 ~ g2@2 ~ g#2@2 ~ a2@6",
  AA: "[g#2@14 ~ g#2@2 ~ c#2@14 ~ f2@2 ~ f#2@7 ~@2 f#2@2 ~]/2", AB: "f#2@2 ~ f#2@2 ~ b1@7 ~@2 b1@2 ~ c#2@2 ~ e2@2 ~",
  AC: "[e2@14 ~ e2@2 ~ e2@11 ~ c#2@2 ~ d2@2 ~ d#2@11 ~]/2", AD: "f#2@2 ~ g#2@2 ~ g#2@14 ~ c2@2 ~",
  AE: "[c#2@14 ~ c2@2 ~ b1@14 ~ b1@2 ~ a#1@14 ~ a1@2 ~ a1@11 ~ d2@2 ~ d#2@2 ~]/3",
  AF: "[e2@5 ~ e2@2 ~ d2@5 ~ d2@2 ~ c#2@14 ~ f2@2 ~ f#2@14 ~ f#2@2 ~ b1@7 ~@2 b1@2 ~ b1@2 ~ c#2@2 ~]/3",
  AG: "[d2@11 ~ a2@2 ~ a1@2 ~ d2@11 ~ e2@2 ~ d2@2 ~ c#2@11 ~]/2", AH: "g#2@2 ~ d#3@2 ~ c#3@5 ~ c#2@2 ~ c#2@5 ~ f2@2 ~",
  AI: "f#2@5 ~ f#2@2 ~ g#2@5 ~ g#2@2 ~ a2@5 ~",
  AJ: "[a2@2 ~ a#2@5 ~ a#2@2 ~ b2@5 ~ b2@2 ~ b2@5 ~ f#2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ d3@2 ~ e3@2 ~]/2",
  AK: "e2@2 ~ e3@2 ~ e2@2 ~ g#2@5 ~ g#2@2 ~ a2@5 ~",
  AL: "[a2@2 ~ a#2@5 ~ a#2@2 ~ b2@2 ~@7 f2@5 ~ e2@2 ~@7 e2@10 ~@2]/2",
})).s("gm_fretless_bass").gain(0.48)

// chords · piano
const piano = note(`<
  A B C D@2 E@2 F G@8 H@5 I J@8 K@8 L@5 F G@8 M@4 N O@8 N I J@8 P Q@7 R@5 S T U V W X Y Z AA AB@3 AC AD AE AF AG@2
>`.pickRestart({
  A: "~@12 g#4@7 ~@2 b4@3", B: "~@2 g#4@4 c#5@7 ~@2 b4@3 ~ g#4@3 ~@2",
  C: "[g#3,b3,e4]@7 ~@2 f#4@3 ~ c#4@5 ~ e4 ~ g4 ~ c5", // E
  D: "[e5@2 ~ c#6@2 ~@13 g3@2 ~ g#3@2 [g#3,b3,e4]@7 ~@2 f#4@4 ~ c#4@3 ~ [g#3,c#4,e4]@7, ~@2 g5@2 ~ e6@18 ~@25]/2", // E C#m
  E: "[~@2 c#4@3 ~ a3@3 ~@2 [e3,a3,b3]@7 ~@2 c#4@2 ~ e4@2 ~ b4@2 ~ [a3,d#4,g#4]@7 ~@2 b4@2 b3@2 ~ a3@2 ~@3]/2", // Esus4 G#
  F: "[e3,g#3] ~ b3 e4@5 ~ b4@5 ~ [a3,c#4,e4]@2 ~ [g#3,b3,e4]@6", // E A E
  G: "[~@3 b3@2 ~ c#4@2 ~ e4@2 ~ [f#3,c#4,f#4]@5 ~ f#3@2 ~ [c#4,f#4]@5 ~ [f#3,f#4]@10 ~@5 [g3,g4]@2 ~ f#4@2 ~ [g#3,c#4,e4]@14 ~ [g3,d#4]@2 ~ [a3,d#4,f#4]@5 ~ [e4,b4,e5]@2 ~@4 [e4,b4]@2 ~ f#4@2 ~ [g#3,c#4,e4]@7 ~@2 f#3@2 ~ g3 ~ e3 f#3@2 ~ c4@9 [g#3,e4]@2 ~ f#3@2 ~ g#3@2 ~ [g#3,b3,e4]@7 ~@2 f#3@7 ~@2 [e3,b3,c#4]@5 ~ [c#4,f4,a4,c#5]@2 ~ [g#4,b4]@2 ~ [c#4,f4,a4,c#5]@2 ~ c#4@2 ~ [a#3,e4]@7 ~@2 e5@2 ~ e4@2 ~ e3@2 ~ [a3,c#4,e4]@11 ~ [a3,c#4,e4]@2 ~ e4@2 ~, ~@27 c4@36 c4@39 e3@7 ~@2 c4@18 c4@63]/8", // F#5 F# G C#m Cm D#dim E5 C#m …
  H: "[f#3@7 ~@2 [c4,e4,g#4]@6 [e4,g#4]@2 ~ [b3,d#4,g#4]@7 ~@2 [b3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@5 ~ [a3,c#4,g#4]@8 ~ [c#4,e4,a4]@2 ~ [e4,g#4,b4] ~ b3 e4@2 ~ [a3,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [g#3,b3,e4]@5 ~ [a3,c#4,e4]@2 ~ [g#3,b3,e4]@7 ~@2 b3 ~ c#4 e4@2 ~ b4@2 ~ [e4,g#4]@7 ~@2 [c4,d#4,f#4]@3, ~@5 c4@31 ~@4]/5", // Caug E G#m D#sus4 Amaj7 A E A5 …
  I: "~@3 [d#4,f#4]@10 ~@7 g#4 f#4@2 ~, ~ c4@7", // D#m
  J: "[[g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@2 ~ [g3,d#4]@2 ~ [e3,b3,d4]@5 ~ [a3,f#4]@5 ~ [g#3,c#4,e4]@2 ~ [f#3,b3,d#4]@2 ~ [e3,a3,c#4]@11 ~ f3@2 ~ f#3@2 ~ g#3@5 ~ [g4,a#4,c#5,e5]@5 ~ g#3@2 ~ [a#3,c#4,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [f#3,e4]@7 ~@2 [f3,b3,f4]@5 ~ [f4,a4]@2 ~ [b3,f4,g#4]@2 ~ [f4,a4]@2 ~ a3@2 ~ [a#3,e4]@11 ~ e3@2 ~ e4@2 ~ [a3,c#4,e4]@7 ~@2 [a3,c#4,e4]@2 ~ a3@2 ~ b3@10 ~@2 [b3,b4]@2 ~ [c#4,c#5]@2 ~ [e4,e5]@2 ~ [f#4,f#5]@5 ~ [g3,c#4,f#4]@5 ~ [g3,c#4,f#4]@5 ~ [g#3,b3,d#4,f#4]@7 ~@2 b4@2 ~, ~@5 c4@22 c4@5 c4@2 c4@30, ~ d4@7]/8", // C#m Cm E7 D C#m B A Gdim …
  K: "[b3@2 ~ b3@2 ~ [f#3,g#3]@2 ~ [f#3,a#3,c#4]@2 ~ [f#3,b3]@2 ~ [f#3,d#4]@2 ~ [e3,e4]@2 ~ [f#3,f#4]@2 ~ [g#3,c#4,e4]@14 ~ [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@14 ~ [a3,c#4,e4]@2 ~ [a#3,c#4,e4]@15 [c#4,e4]@2 ~ [g3,c#4,e4]@7 ~@2 [f#3,e4]@2 ~ [g#3,g4]@2 ~ [f#3,f#4]@2 ~ [g#3,c#4,e4]@14 ~ [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@15 [c#4,e4]@2 ~ [b3,c#4,e4]@14 ~ e4@10 ~@5 [g4,g5] ~ [e4,e5] [f#4,f#5]@2 ~ [g#4,c#5,e5]@7 ~@8 [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@6, ~@2 c4@3 c4@24 c4@35, ~ d4@15, ~@75 a#3@82 ~@35, ~@43 a3@6 a3@13 ~@2]/8", // F#sus2 F# B5 D#m E F# C#m A …
  L: "[~@9 [c#4,e4]@3 [b3,c#4,e4]@2 ~ [e3,e4]@2 ~ [g#3,g#4]@2 ~ [b3,b4]@2 ~ [c#4,c#5]@2 ~ d5@2 ~ [g4,d#5]@5 ~ d5@5 ~ [g#4,a4,c#5]@5 ~ [b3,d#4,f#4,d#5]@7 ~@5 [b3,d#4,f#4,b4]@2 ~ g#4@2 ~ [b3,d#4,e4,b4]@14 ~@4 [a#3,c#4,e4,g#4]@7 ~@2 a#3@2 ~ c#4@2 ~ e4@2 ~ [c#4,e4,g#4]@7 ~@5 [c#4,e4,a4]@2 ~ a3@2 ~, ~@3 a3@31 a3@5 ~]/5", // C#m C#m7 E G# B C# Cm Amaj7 …
  M: "[f#3@7 ~@2 [c4,e4,g#4]@6 [e4,g#4]@2 ~ [b3,d#4,g#4]@7 ~@2 [b3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@5 ~ [a3,c#4,g#4]@8 ~ [c#4,e4,a4]@2 ~ [e4,g#4,b4] ~ b3 e4@2 ~ [a3,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [g#3,b3,e4]@5 ~ [a3,c#4,e4]@2 ~ [g#3,b3,e4]@6, ~@5 c4@27]/4", // Caug E G#m D#sus4 Amaj7 A E A5 …
  N: "~@3 b3 ~ c#4 e4@2 ~ b4@2 ~ [e4,g#4]@7 ~@2 [c4,d#4,f#4]@3, c4 ~", // E Cdim
  O: "[~@3 [d#4,f#4]@10 ~@7 g#4 f#4@2 ~ [g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@2 ~ [g3,d#4]@2 ~ [e3,b3,d4]@5 ~ [a3,f#4]@5 ~ [g#3,c#4,e4]@2 ~ [f#3,b3,d#4]@2 ~ [e3,a3,c#4]@11 ~ f3@2 ~ f#3@2 ~ g#3@5 ~ [g4,a#4,c#5,e5]@5 ~ g#3@2 ~ [a#3,c#4,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [f#3,e4]@7 ~@2 [f3,b3,f4]@5 ~ [f4,a4]@2 ~ [b3,f4,g#4]@2 ~ [f4,a4]@2 ~ a3@2 ~ [a#3,e4]@11 ~ e3@2 ~ e4@2 ~ [a3,c#4,e4]@7 ~@2 [a3,c#4,e4]@2 ~ a3@2 ~ b3@10 ~@2 [b3,b4]@2 ~ [c#4,c#5]@2 ~ [e4,e5]@2 ~ [f#4,f#5]@5 ~, ~ c4@12 c4@22 c4@5 c4@2 c4@22, ~ d4@3]/8", // D#m C#m Cm E7 D C#m B A …
  P: "b3@2 ~ b3@2 ~ [f#3,g#3]@2 ~ [f#3,a#3,c#4]@2 ~ [f#3,b3]@2 ~ [f#3,d#4]@2 ~ [e3,e4]@2 ~ [f#3,f#4]@2 ~, ~@2 c4@3 c4@3, ~ d4", // F#sus2 F# B5 D#m E F#
  Q: "[[g#3,c#4,e4]@14 ~ [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@14 ~ [a3,c#4,e4]@2 ~ [a#3,c#4,e4]@15 [c#4,e4]@2 ~ [g3,c#4,e4]@7 ~@2 [f#3,e4]@2 ~ [g#3,g4]@2 ~ [f#3,f#4]@2 ~ [g#3,c#4,e4]@14 ~ [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@15 [c#4,e4]@2 ~ [b3,c#4,e4]@14 ~ e4@10 ~@5 [g4,g5] ~ [e4,e5] [f#4,f#5]@2 ~ [g#4,c#5,e5]@7 ~@8 [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@6, d4, c4@3 c4@5, ~@51 a#3@82 ~@35, ~@35 a3@6 a3@13 ~@2]/7", // C#m A A#dim C#m C#dim F#7 G#maj7 F# …
  R: "[~@9 [c#4,e4]@3 [b3,c#4,e4]@2 ~ [e3,e4]@2 ~ [g#3,g#4]@2 ~ [b3,b4]@2 ~ [c#4,c#5]@2 ~ d5@2 ~ [d#4,g4,b4,d#5]@5 ~ d5@5 ~ [c#4,g#4,a4,c#5]@5 ~ [b3,d#4,f#4,d#5]@7 ~@5 [b3,d#4,f#4,b4]@2 ~ g#4@2 ~ [b3,d#4,e4,b4]@14 ~@4 [a#3,c#4,e4,g#4]@5 ~ [e4,a4,b4]@5 ~ [e4,a4,b4]@2 ~ [e4,a4,b4]@7 ~@2 b3 ~ b4 [c#4,c#5] ~ [e4,e5]@2 ~ [f#4,f#5]@2 ~@2, ~@9 a3@109 ~@2, ~@27 d4@9 d4@82 ~@2]/5", // C#m C#m7 E G# B C# D#aug Amaj7 …
  S: "[b4,e5,g#5]@5 ~ [e4,g#4,b4]@9 [c#4,e4,a4]@2 ~ [b3,e4,g#4]@5 ~", // E A E
  T: "g#3@2 ~ [g#3,g#4]@2 ~ [b3,b4]@2 ~ [c#4,c#5]@2 ~ [f#3,c#4,f#4]@7 ~@5", // G# B C# F#5
  U: "[f#3,c#4,f#4]@5 ~ [f#3,c4,f#4]@7 ~@2 [g3,g4] ~ [e3,e4] [f#3,f#4]@5 ~", // F#5 F#dim G E F#
  V: "[g#3,c#4,e4]@15 [g3,c4,d#4]@2 ~ [a3,d4,f#4]@6", W: "~@3 [g3,g4]@2 ~ [b3,b4]@2 ~ [d4,d5]@2 ~ [g#4,c#5,e5]@7 ~@5",
  X: "[g3,g4]@2 ~ [a3,f#4]@2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~ [g#3,c#4,e4]@7 ~@2", // G D C C#m
  Y: "[g#3,b3,e4]@7 ~@2 [g#3,c#4]@7 ~@2 [f3,c4,c#4]@5 ~", // E C#5 C#maj7
  Z: "[f4,a4,c#5]@2 ~ [f4,g#4,b4]@2 ~ [f4,a4,c#5]@2 ~ [a3,c#4,f4]@2 ~ [a#3,e4]@5 ~ [a#3,e4]@5 ~", // Faug Fdim Faug Aaug A#dim
  AA: "[a#3,e4]@5 ~ [a3,c#4,e4]@7 ~@2 [a3,c#4,e4]@5 ~ f#3@2 ~", // A#dim A
  AB: "[[f#3,c4,e4]@7 ~@2 [c4,e4,g#4]@7 ~@2 [c4,e4,g#4]@12 [a3,a4]@2 ~ [b3,b4]@2 ~ [b3,b4]@5 ~ [b3,f4,g#4]@2 ~ [c#4,e4,a4]@5 ~ [b3,e4,g#4]@9 [c#4,e4,a4]@2 ~ [b3,e4,g#4]@2 ~ [c#4,e4,a4]@2 ~ [b3,e4,g#4]@2 ~]/3", // F#m7b5 Caug A B Fdim A E A …
  AC: "[e3,a3,e4]@5 ~ [e3,a3,e4]@3 ~@3 [e3,b3,e4]@3 [e3,b3,e4]@3 [e3,c#4,e4]@6", // A5 E5 C#m
  AD: "[e3,c#4,e4]@3 [g3,c#4,e4]@6 [g3,c#4,e4]@3 [a3,c#4,e4]@5 ~ [e4,a4,c#5]@5 ~", // C#m C#dim A
  AE: "[a3,e4]@2 ~ b3@2 ~ [a3,c#4,e4]@7 ~@5 [d4,g4]@5 ~", // A5 A G5
  AF: "[g#3,b3,e4]@5 ~ [g#3,b3,e4]@2 ~ [g#3,b3,d4]@5 ~ [g#3,b3,d4]@2 ~ [a3,c#4]@5 ~", // E G#dim A
  AG: "[[a3,c#4]@2 ~ [g3,c#4,e4]@5 ~ [g3,c#4,e4]@2 ~ [a3,c#4,e4]@2 ~ [b3,e4,g#4] ~ e4 a#3@2 ~ a3@5 ~ [g#3,b3,e4]@2 ~@7 [g#3,d4,e4,g4]@11 ~]/2", // A C#dim A E E7
})).s("gm_piano").gain(0.4)

// other · pad bowed · "pad 2"
const pad_bowed = note(`<
  ~@31 A@6 B@3 C@3 D@3 E@3 F@3 G@3 H I@2 J@3 K@3 L I@2 J@3 K@3 M@3 N O@2 P Q@2 N R@2 S@3 D@3 T U@2 V@3 W@3 X@3 Y@3
>`.pickRestart({
  A: "[c#5@101 ~@7 c#5@14 ~@4 f#5@14 ~@4]/6", B: "[c#5@25 ~@2 d#5@7 ~@2]/3",
  C: "[g#4@7 ~@2 c#5@7 ~@2 f#4@7 ~@2 b4@7 ~@2]/3", D: "[e5@29 ~@7 d#5@14 ~@4 g#4@14 ~@4]/3",
  E: "[c#5@14 ~@4 b4@14 ~@4 a4@29 ~@7]/3", F: "[e5@7 ~@2 d#5@7 ~@2 c#5@14 ~@4 f#5@14 ~@4 a4@7 ~@2 b4@7 ~@2]/3",
  G: "[d#5@7 ~@2 c#5@7 ~@2 f#5@7 ~@2 b4@7 ~@2]/3", H: "e5", I: "[e5@5 ~@7 g#4@29 ~@7]/2",
  J: "[c#5@14 ~@4 b4@14 ~@4 c#5@29 ~@7]/3", K: "[e5@4 ~ b4@4 d#5@7 ~@2 c#5@14 ~@4 f#4@14 ~@4 a4@7 ~@2 b4@7 ~@2]/3",
  L: "e5@7 ~@2 a4@3", M: "[e5@7 ~@2 a4@7 ~@2 e5@7 ~@2 g#4@7 ~@2]/3", N: "c#5@7 ~@2 a4@3",
  O: "[~@3 c#5@7 ~@2 c#5@7 ~@2 c#5@7 ~@2 a4@7 ~@2 g#4@7 ~@2]/2", P: "c#5@8 ~ a4@3",
  Q: "[~@3 c#5@7 ~@2 c#5@14 ~@4 f#5@14 ~@4]/2", R: "[~@3 c#5@7 ~@2 c#5@14 ~@4 d#5@14 ~@4]/2",
  S: "[g#4@14 ~@4 c#5@14 ~@4 f#5@14 ~@13 c#5@2 ~ b4@2 ~@4, ~@9 b4@2 ~]/3", T: "c#5@7 ~@2 c#5@3",
  U: "[~@3 b4@7 ~@2 a#4@35 ~]/2", V: "[e5@7 ~@2 d#5@7 ~@2 c#5@14 ~@4 f#5@14 ~@4 c#5@7 ~@2 b4@7 ~@2]/3",
  W: "[d#5@29 ~@7 c#5@29 ~@7]/3", X: "[f#5@7 ~@2 e5@2 ~ g#4@7 ~@2 a4@14 ~ a4@5 ~ b4@14 ~@4 b4@4 ~ b4@4 b4@3]/3",
  Y: "[e5@65 ~@7]/3",
})).s("gm_pad_bowed").gain(0.37).pan(0.8)

// chords · piano · "pad 3"
const piano_2 = note("<A B C D E F@2 G@2 H@7 I@5 J K@8 L@8 M@5 G@2 H@7 N@4 O ~@49>".pickRestart({
  A: "~@13 g#4@7 ~@2 b4@2", B: "~@2 g#4@3 ~@2 c#5@7 ~@2 b4@3 ~ g#4@3 ~",
  C: "~ [g#3,b3,e4]@7 ~ f#4@3 ~@2 c#4@5 ~ e4@2 g4@2", D: "~ e5 ~ g5 c#6@2 ~@13 g3@2 g#3@3, c5@2 ~@4 e6@17 ~",
  E: "[g#3,b3,e4]@7 ~@2 f#4@3 ~ c#4@3 ~@2 [g#3,c#4,e4]@6", // E C#m
  F: "[~@3 c#4@3 ~ a3@4 ~ [e3,a3,b3]@7 ~ c#4@2 ~ e4@2 ~ b4@2 ~ [a3,d#4,g#4]@7 ~@2 b4@2 ~ b3@2 ~ a3@2 ~@2]/2", // Esus4 G#
  G: "[~ [e3,g#3] b3 ~ e4@5 ~ b4@5 ~ [a3,c#4,e4]@2 ~ [g#3,b3,e4]@7 ~@2 b3@2 ~ c#4@2 ~ e4@2 ~ [f#3,c#4,f#4]@5 ~ f#3@2 ~ [c#4,f#4]@2]/2", // E A E F#5
  H: "[~@4 [f#3,f#4]@10 ~@5 [g3,g4]@2 ~ f#4@2 ~ [g#3,c#4,e4]@14 ~ [g3,d#4]@2 ~ [a3,d#4,f#4]@5 ~ [e4,b4,e5]@2 ~@4 [e4,b4]@2 ~ f#4@2 ~ [g#3,c#4,e4]@7 ~@2 f#3@2 ~ g3 e3 ~ f#3@2 ~ c4@9 [g#3,e4]@2 ~ f#3@2 ~ g#3@2 ~ [g#3,b3,e4]@7 ~@2 f#3@7 ~@2 [e3,b3,c#4]@5 ~ [c#4,f4,a4,c#5]@2 ~ [g#4,b4]@2 ~ [c#4,f4,a4,c#5]@2 ~ c#4@2 ~ [a#3,e4]@7 ~@2 e5@2 ~ e4@2 ~ e3@2 ~ [a3,c#4,e4]@11 ~ [a3,c#4,e4]@2 ~ e4@2, ~@4 c4@36 c4@39 e3@7 ~@2 c4@18 c4@62]/7", // F# G C#m Cm D#dim E5 C#m E …
  I: "[~ f#3@7 ~@2 [c4,e4,g#4]@6 [e4,g#4]@2 ~ [b3,d#4,g#4]@7 ~@2 [b3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@5 ~ [a3,c#4,g#4]@8 ~ [c#4,e4,a4]@2 ~ [e4,g#4,b4] b3 ~ e4@2 ~ [a3,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [g#3,b3,e4]@5 ~ [a3,c#4,e4]@2 ~ [g#3,b3,e4]@7 ~@2 b3 c#4 ~ e4@2 ~ b4@2 ~ [e4,g#4]@7 ~@2 [c4,d#4,f#4]@2, ~@16 c4@93 ~@11]/5", // Caug E G#m D#sus4 Amaj7 A E A5 …
  J: "~@4 [d#4,f#4]@10 ~@6 g#4 ~ f#4@2, ~ c4@5", // D#m
  K: "[~ [g#3,c#4,e4]@11 ~ [g#3,c#4,e4]@2 ~ [g3,d#4]@2 ~ [e3,b3,d4]@5 ~ [a3,f#4]@5 ~ [g#3,c#4,e4]@2 ~ [f#3,b3,d#4]@2 ~ [e3,a3,c#4]@11 ~ f3@2 ~ f#3@2 ~ g#3@5 ~ [g4,a#4,c#5,e5]@5 ~ g#3@2 ~ [a#3,c#4,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [f#3,e4]@7 ~@2 [f3,b3,f4]@5 ~ [f4,a4]@2 ~ [b3,f4,g#4]@2 ~ [f4,a4]@2 ~ a3@2 ~ [a#3,e4]@11 ~ e3@2 ~ e4@2 ~ [a3,c#4,e4]@7 ~@2 [a3,c#4,e4]@2 ~ a3@2 ~ b3@10 ~@2 [b3,b4]@2 ~ [c#4,c#5]@2 ~ [e4,e5]@2 ~ [f#4,f#5]@5 ~ [g3,c#4,f#4]@5 ~ [g3,c#4,f#4]@5 ~ [g#3,b3,d#4,f#4]@7 ~@2 b4@2, ~@16 c4@66 c4@15 c4@6 c4@89, ~@25 d4@167]/8", // C#m Cm E7 D C#m B A Gdim …
  L: "[~ b3@2 ~ b3@2 ~ [f#3,g#3]@2 ~ [f#3,a#3,c#4]@2 ~ [f#3,b3]@2 ~ [f#3,d#4]@2 ~ [e3,e4]@2 ~ [f#3,f#4]@2 ~ [g#3,c#4,e4]@14 ~ [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@14 ~ [a3,c#4,e4]@2 ~ [a#3,c#4,e4]@15 [c#4,e4]@2 ~ [g3,c#4,e4]@7 ~@2 [f#3,e4]@2 ~ [g#3,g4]@2 ~ [f#3,f#4]@2 ~ [g#3,c#4,e4]@14 ~ [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@15 [c#4,e4]@2 ~ [b3,c#4,e4]@14 ~ e4@10 ~@5 [g4,g5] [e4,e5] ~ [f#4,f#5]@2 ~ [g#4,c#5,e5]@7 ~@8 [g#3,c#4,e4]@2 ~ [a3,c#4,e4]@5, ~@7 c4@9 c4@72 c4@104, ~@13 d4@179, ~@38 a#3@41 ~@17, ~@130 a3@18 a3@39 ~@5]/8", // F#sus2 F# B5 D#m E F# C#m A …
  M: "[~@10 [c#4,e4]@3 [b3,c#4,e4]@2 ~ [e3,e4]@2 ~ [g#3,g#4]@2 ~ [b3,b4]@2 ~ [c#4,c#5]@2 ~ d5@2 ~ [b4,d#5]@5 ~ d5@5 ~ [g#4,a4,c#5]@5 ~ [b3,d#4,f#4,d#5]@7 ~@5 [b3,d#4,f#4,b4]@2 ~ g#4@2 ~ [b3,d#4,e4,b4]@14 ~@4 [a#3,c#4,e4,g#4]@7 ~@2 a#3@2 ~ c#4@2 ~ e4@2 ~ [c#4,e4,g#4]@7 ~@5 [c#4,e4,a4]@2 ~ a3@2, ~@10 a3@93 a3@15 ~@2]/5", // C#m C#m7 E G# B C# B Amaj7 …
  N: "[~ f#3@7 ~@2 [c4,e4,g#4]@6 [e4,g#4]@2 ~ [b3,d#4,g#4]@7 ~@2 [b3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@7 ~@2 [a#3,d#4,g#4]@5 ~ [a3,c#4,g#4]@8 ~ [c#4,e4,a4]@2 ~ [e4,g#4,b4] b3 ~ e4@2 ~ [a3,e4]@2 ~ [g#3,b3,e4]@7 ~@2 [g#3,b3,e4]@5 ~ [a3,c#4,e4]@2 ~ [g#3,b3,e4]@5, ~ c4@5]/4", // Caug E G#m D#sus4 Amaj7 A E A5 …
  O: "e4@5 ~@19",
})).s("gm_piano").gain(0.25).pan(0.2)

// other · pad warm · "pad 3"
const pad_warm = note(`<
  ~@56 A@2 B@3 C@3 D E@2 B@3 C@3 F@3 G H@2 I J@2 G K@2 L@3 M@3 N O@2 P@3 Q@3 R@3 S@3
>`.pickRestart({
  A: "[~@7 g#3@11 ~@6]/2", B: "[c#4@14 ~@4 b3@14 ~@4 c#4@29 ~@7]/3",
  C: "[e4@4 ~ b3@4 d#4@7 ~@2 c#4@14 ~@4 f#3@14 ~@4 a3@7 ~@2 b3@7 ~@2]/3", D: "e4@7 ~@2 a3@3",
  E: "[e4@5 ~@7 g#3@29 ~@7]/2", F: "[e4@7 ~@2 a3@7 ~@2 e4@7 ~@2 g#3@7 ~@2]/3", G: "c#4@7 ~@2 a3@3",
  H: "[~@3 c#4@7 ~@2 c#4@7 ~@2 c#4@7 ~@2 a3@7 ~@2 g#3@7 ~@2]/2", I: "c#4@8 ~ a3@3",
  J: "[~@3 c#4@7 ~@2 c#4@14 ~@4 f#4@14 ~@4]/2", K: "[~@3 c#4@7 ~@2 c#4@14 ~@4 d#4@14 ~@4]/2",
  L: "[g#3@14 ~@4 c#4@14 ~@4 f#4@14 ~@13 c#4@2 ~ b3@2 ~@4, ~@9 b3@2 ~]/3", M: "[e4@29 ~@7 d#4@14 ~@4 g#3@14 ~@4]/3",
  N: "c#4@7 ~@2 c#4@3", O: "[~@3 b3@7 ~@2 a#3@35 ~]/2",
  P: "[e4@7 ~@2 d#4@7 ~@2 c#4@14 ~@4 f#4@14 ~@4 c#4@7 ~@2 b3@7 ~@2]/3", Q: "[d#4@29 ~@7 c#4@29 ~@7]/3",
  R: "[f#4@7 ~@2 e4@2 ~ g#3@7 ~@2 a3@14 ~ a3@5 ~ b3@14 ~@4 b3@4 ~ b3@4 b3@3]/3", S: "[e4@65 ~@7]/3",
})).s("gm_pad_warm").gain(0.4).pan(0.2)

// chords · trumpet · "solo 1"
const trumpet = note("<~@56 A B C D E F@2 G H I ~@40>".pickRestart({
  A: "~@16 [f4,f#4] ~ g#3!2 c4 ~ [g#4,a#4] [g4,a4,b4], ~@16 [a#2,d#3,c#4]@2 f#3@2 ~ [c#4,d#4,f4]@2 ~, ~@17 c4@2 ~ a#3@2 f#4@2", // F#maj7 G#sus2 G D#7 C#
  B: "g#4@10 g#4@9 ~@2 c5@2 ~", C: "c#5@2 ~@2 e5@8 c#5 ~ e5 ~ d#5 ~ d5@5 ~",
  D: "c5@2 ~ e5 ~@2 c#5 ~ c#5@9 ~ c#5 ~@2 a5@3",
  E: "f5@2 ~ f#5 ~@2 g5@2 ~@4 [g5,a#5,c#6,e6]@2 ~@4 g#4@2 ~ [a#4,c#5,e5]@2 ~", // Gdim A#dim
  F: "[g#4@2 ~@2 e5@7 ~ c5@2 ~ f#4@2 ~ f4@2 [b4,f5]@10 ~@5 a4@2 ~@3 e5@8]/2", // Bdim
  G: "e4@2 ~ e5@2 ~ [a4,c#5,e5]@2 ~@7 [a4,c#5,e5]@2 ~ a4@2 ~ b4@2 ~", H: "~@9 b4@2 ~ c#5@2 ~ e5@2 ~ f#5@2 ~@4",
  I: "b4@2 ~ d5@2 ~@19",
})).s("gm_trumpet").gain(0.53).pan(0.7)

// other · tenor sax · "solo 1"
const tenor_sax = note("<~@65 A B C D E@3 F@2 G@2 H@2 ~@28>".pickRestart({
  A: "~@18 e4 f#4 g4 [g#4,b4] c#5 ~", B: "~ [b4,c#5] e5@7 ~@2 c#5@2 e5@6 ~@5, e5 ~@4 f#5 ~@6",
  C: "~@2 [g5,g#5] ~ b5@2 b5@4 g#5 b5 g#5 g5 b5@7 c#6 ~@2", D: "~@16 g5 g#5 b5@2 ~@2 b5 g#5",
  E: "[[g5,g#5] b5 g5 c#6@7 b5@5 c#6@4 g5 f#5 e5 c#5 e5@2 ~@3 [e5,g5] a#5 ~ [b5,c#6] ~ e6 f#6 g6@10 f#6@8 g6 e6!2 c#6 e6@5 ~@9 [g#5,b5], ~@35 a6 ~@36]/3", // G#maj7 Em Bsus2 G#m
  F: "[c#6@8 g5 b5@6 c#6 ~@2 g5 [f#5,g5] [c#5,e5]!2 e5@4 f#5 g5 [e5,f#5] c#5 e5@3 ~ [f#5,g5] e5 c#5 e5@4 f#5 b4 c#5 e5 f#5 g5 ~, ~@9 g#5 ~@38]/2", // Gmaj7 C#m Esus2 Gmaj7
  G: "[[g#5,a5,a#5] ~@2 b5 ~@2 b5@5 a5 b5 d6 b5@5 a5 b5 d6 b5@6 a5 b5 d6 b5@6 a5!2 ~ a5@2 b5 ~@3 b4 c#5, ~ a5@2 ~@36 g5@2 ~@7, ~@2 a#5@2 ~@33 b5@2 ~@9]/2",
  H: "[~ [e5,f#5] g5 a5 ~ a#5 b5 c#6 e6 ~ f#6@2 ~ g6@6 f#6@9 e6@8 ~@12, ~@19 e6 ~@28]/2", // Esus2
})).s("gm_tenor_sax").gain(0.53).pan(0.4)

// other · flute · "lead 2"
const flute = note("<~@31 A@2 B C@2 D E F@2 G@3 H I J K@3 L@2 M N@2 O P ~@50>".pickRestart({
  A: "[~@13 c#5@2 ~ e5@2 ~ f#5@14 ~@15]/2", B: "~ c#5@2 ~ g#5@2 ~ e5@5 ~ c#5 e5@9 ~",
  C: "[~@13 c#5@2 ~ e5@2 ~ f#5@17 ~@7 g#5@2 ~ b5@2]/2", D: "~ g#5@2 ~ a#5@10 ~@10", E: "~@13 c#5@2 ~ e5@2 ~ f#5@5",
  F: "[~ g#5@8 ~ b5@10 ~@2 c#6@5 ~ d#6@10 ~@8 c#6@2]/2",
  G: "[~ b5@11 ~ b5@5 ~ b5@2 ~ c#6@5 ~@4 g#5@2 ~ f#5@2 ~ g#5@16 ~@19]/3", H: "~@10 g#4@5 ~ b4@8", I: "~@19 g#4@5",
  J: "~ g#4@6 f#4@7 ~@10", K: "[~@16 g#4@2 ~ c#5@17 ~ f#4@2 ~ g#4@5 ~ e4@16 ~@5 f#4@2 ~ g4@2]/3",
  L: "[~ g#4@7 ~@2 b4@5 ~ c#5@10 ~@22]/2", M: "~@4 e4@2 ~ g#4@5 ~ f#4@5 ~ f#4@2 ~ g#4@2", N: "[~ g#4@29 ~@18]/2",
  O: "~@16 g#4@2 ~ g#4@2 ~ a4@2", P: "~ c#5@2 ~ b4@15 ~@5",
})).s("gm_flute").gain(0.59).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@31 A B@8 ~@2 B@12 A ~ B@20 ~ B@26 C B@2>".pickRestart({
  A: "x", B: "x!2", C: "~ x",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct(`<
  ~@8 A B C D B C D B C D B C E F A G F A G F A G F H ~@11 G F A G F A G F A ~@54
>`.pickRestart({
  A: "~ x ~@5 x", B: "~ x", C: "~ x ~@2", D: "x ~@2 x", E: "x ~@4 x ~@2", F: "~@3 x ~@4", G: "~@5 x ~@2", H: "~ x ~@6",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  ~@30 A B C D E C D E C D E C F ~@9 G H E C D E C D E C D E C D E C D E C D E C I J ~ I K H I J H I K D E L D E C D E C
  D E H I K M I K H I N D
>`.pickRestart({
  A: "~@3 x", B: "x!2 ~ x ~@2 x ~", C: "~ x", D: "~ x ~@2", E: "x ~@2 x", F: "~@2 x ~@4 x", G: "x!2 ~@3 x ~@2",
  H: "~@3 x ~@4", I: "~ x ~@5 x", J: "~@2 x ~ x!2 ~ x", K: "~@5 x ~@2", L: "~ x ~ x!2 ~ x ~", M: "x ~ x!2 ~ x ~@2",
  N: "~@2 x ~@2 x ~ x",
})).gain(0.47)

// drums · low tom
const low_tom = s("lt").struct("<~@31 A ~@43 B C ~@4 B ~@5 B ~@11 D ~@6>".pickRestart({
  A: "~@3 x ~@4", B: "~@7 x", C: "x", D: "~@3 x",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~ B ~ C D E C F G H I G H I G H I G H J I G H I G H I G H K L M@10 N O I G H I G H I G P M@23 Q M@27 R E
>`.pickRestart({
  A: "~@7 x", B: "x ~@4 x", C: "x ~@2 x", D: "~ x", E: "~ x ~@2", F: "~ x ~@5 x", G: "~ x ~@2 x ~@2 x",
  H: "~@2 x ~@2 x ~@2", I: "x ~@2 x ~@2 x ~", J: "x ~ x ~@2 x ~@2", K: "x ~@2 x ~ x!2 ~", L: "~ x ~ x!5", M: "x!8",
  N: "~@2 x ~ x ~@2 x", O: "~ x!2 ~@2 x ~@2", P: "~@2 x!6", Q: "~@3 x ~@4", R: "x!3 ~@2 x ~ x",
})).gain(0.11)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 A ~@11 B ~@8 B ~@22 C ~@5 C ~@5 C ~@11 D ~@6>".pickRestart({
  A: "~ x!2 ~@5", B: "~ x ~@6", C: "~@3 x", D: "~@4 x!2 ~@2",
// … 18 more lines

More by Ray Charles