Strudelify
Faith cover art

Faith

Faith

Michael George

KeyB majorTempo120 bpm
0:00/0:00
// Faith — Michael George
// 120 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 32-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.

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@4 A B@8 C D E F G H I@2 J K L M N@8 O P Q R S T U@2 V W X Y Z@8 AA P AB AC S T U@2 AD AE X Y ~@3 AF
>`.pickRestart({
  A: "[b3,d#4,f#4,b4]@4 ~@2 [b3,d#4,f#4,b4]@3 ~@3 [b3,d#4,f#4,b4]@3 ~ [b3,d#4,f#4,b4]@3 ~@13", // B
  B: "[f#3@20 g#3@4 f#3@28 g#3@3 ~ f#3@6 ~@22 c#4@4 ~@8 f#3@20 g#3@3 ~ f#3@28 g#3@4 f#3@7 ~ d#4@32 [g#3,e4]@32 f#3@23 ~ f#4@4 ~@4, b3@83 ~@5 b3@164 ~@4, d#4@31 ~ [g#3,e4]@16 d#4@31 ~ f#4@15 ~@17 d#4@14 ~@2]/8", // C#m
  C: "b3@15 ~@9 c#5@7 ~, e4@15 ~, g#4@19 ~ g#4@11 ~, ~@16 b4@15 ~", D: "[f#4,b4,d#5]@27 ~@5",
  E: "~ [e4,g#4]@15 [g#4,b4]@7 ~ [g#4,b4,c#5]@7 ~, b3@7 ~ e4@7 ~", F: "[f#4,b4,d#5]@7 ~",
  G: "[b3,e4,g#4]@15 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4,c#5]@6 ~@2", // E C#m7
  H: "[f#4,b4,d#5]@4 ~@2 [a#4,c#5,f#5]@3 ~@3 [b4,d#5,g#5]@16 ~@4", // B F# G#m
  I: "[[g#4,e5]@31 ~@2 [f#4,a#4,f#5]@3 ~@2 [f#4,a#4,c#5,f#5]@2 ~@4 [f#4,a#4,c#5,f#5]@3 ~@17, c#5@33 ~@31]/2", // C#m F#
  J: "b3@3 ~@3 b3@3 ~@3 b3@6 ~@2 b3@3 ~ b3@4 ~@4",
  K: "[b3,f#4]@3 ~@3 [b3,f#4]@3 ~@3 [b3,f#4]@5 ~@3 [b3,f#4]@3 ~ [b3,f#4]@3 ~@5", // B5
  L: "[b3,f#4,b4]@3 ~@3 [b3,f#4,b4]@4 ~@2 [b3,f#4,b4]@5 ~@3 [b3,f#4,b4]@3 ~ [b3,f#4,b4]@2 ~@6", // B5
  M: "~ [b4,d#5,f#5,b5]@3 ~@2 [b4,d#5,f#5,b5]@3 ~@3 [b4,d#5,f#5,b5]@3 ~@17", // B
  N: "[~ f#3@20 g#3@4 f#3@28 g#3@3 ~ f#3@6 ~@22 c#4@4 ~@8 f#3@20 g#3@3 ~ f#3@28 g#3@4 f#3@7 ~ d#4@32 [g#3,e4]@32 f#3@23 f#4@4 ~@4, ~ b3@83 ~@5 b3@164 ~@3, ~ d#4@62 ~@2 [g#3,e4]@32 d#4@62 ~@2 f#4@30 ~@34 d#4@28 ~@3]/8", // C#m
  O: "~ b3@14 ~@10 c#5@7, ~ e4@30 ~, ~ g#4@19 ~ g#4@11, ~@17 b4@15", P: "~ [f#4,b4,d#5]@27 ~@4",
  Q: "~ [b3,e4,g#4]@15 ~ [g#4,b4]@8 [g#4,b4,c#5]@7, ~@17 e4@14 ~", R: "~ [f#4,d#5]@28 ~@3, b4@7 ~",
  S: "~ [b3,e4,g#4]@15 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4,c#5]@6 ~", // E C#m7
  T: "~ [f#4,b4,d#5]@4 ~@2 [a#4,c#5,f#5]@3 ~@3 [b4,d#5,g#5]@16 ~@3", // B F# G#m
  U: "[~ [g#4,e5]@31 ~ [f#4,a#4,f#5]@3 ~@3 [f#4,a#4,c#5,f#5]@2 ~@4 [f#4,a#4,c#5,f#5]@3 ~@16, ~ c#5@35 ~@28]/2", // C#m F#
  V: "~ b3@3 ~@3 b3@3 ~@3 b3@6 ~@2 b3@3 ~ b3@4 ~@3",
  W: "~ [b3,f#4]@3 ~@3 [b3,f#4]@3 ~@3 [b3,f#4]@5 ~@2 [b3,f#4]@3 ~@2 [b3,f#4]@3 ~@4", // B5
  X: "~ [b3,f#4,b4]@3 ~@3 [b3,f#4,b4]@4 ~@2 [b3,f#4,b4]@5 ~@3 [b3,f#4,b4]@3 ~ [b3,f#4,b4]@2 ~@5", // B5
  Y: "~ [b4,d#5,f#5,b5]@3 ~@3 [b4,d#5,f#5,b5]@3 ~@3 [b4,d#5,f#5,b5]@3 ~@16", // B
  Z: "[~ f#3@20 g#3@4 f#3@28 g#3@3 ~ f#3@7 ~@21 c#4@4 ~@8 f#3@20 g#3@3 ~ f#3@28 g#3@4 f#3@7 ~ d#4@32 [g#3,e4]@32 f#3@23 ~ f#4@4 ~@3, ~ b3@83 ~@5 b3@164 ~@3, ~ d#4@62 ~@2 [g#3,e4]@32 d#4@62 ~@2 f#4@30 ~@34 d#4@28 ~@3]/8", // C#m
  AA: "~ b3@15 ~@9 c#5@7, ~ e4@30 ~, ~ g#4@19 ~ g#4@11, ~@17 b4@15",
  AB: "~ [b3,e4,g#4]@15 ~ [g#4,b4]@7 ~ [g#4,b4,c#5]@7, ~@17 e4@14 ~", AC: "~ [f#4,b4,d#5]@28 ~@3",
  AD: "~ b3@3 ~@3 b3@3 ~@3 b3@6 ~@2 b3@2 ~@2 b3@4 ~@3",
  AE: "~ [b3,f#4]@3 ~@3 [b3,f#4]@3 ~@3 [b3,f#4]@5 ~@3 [b3,f#4]@3 ~ [b3,f#4]@3 ~@4", // B5
  AF: "~ [b3,d#4,f#4,b4]@4 ~@2 [b3,d#4,f#4,b4]@3 ~@3 [b3,d#4,f#4,b4]@3 ~ [b3,d#4,f#4,b4]@3 ~@12", // B
})).s("gm_drawbar_organ").gain(0.19).pan(0.9)

// chords · brass section · "Horns"
const brass_section = note(`<
  ~@2 A@2 B ~@8 C D E F G H I J K L M N ~@8 O P Q F R S I T U V W X ~@8 Y Z AA AB AC AD AE AF AG AH AI AJ ~@2 AK AL
>`.pickRestart({
  A: "[~@31 b3@16 ~ [b3,b4]@16]/2", B: "[b4,f#5,b5]@3 ~@3 [b4,f#5,b5]@4 ~@2 [b4,f#5,b5]@3 ~ [b4,f#5,b5]@3 ~@13",
  C: "[b3,e4,g#4]@15 ~ [e4,g#4,b4]@8 [e4,g#4,b4,c#5]@7 ~", // E C#m7
  D: "[f#4,b4,d#5]@17 ~@3 [b4,d#5] ~ d#5@2 [b4,e5]@2 [f#4,b4,d#5] ~@5, ~@20 f#4@2 b4 ~ g#4 ~@7", // B E5 B
  E: "[b3,e4,g#4]@15 ~@9 c#5@7 ~, ~@16 [e4,g#4,b4]@15 ~", F: "~@4 [f#4,d#5]@2 ~@4 [e4,c#5]@2 ~@4 [d#4,b4]@13 ~@3",
  G: "[b3,e4,g#4]@15 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4,c#5]@5 ~@3", // E C#m7
  H: "[f#4,b4,d#5]@4 ~@2 [a#4,c#5,f#5]@2 ~@4 [b4,d#5,g#5]@19 ~", I: "[g#4,c#5,e5]@31 ~",
  J: "[f#4,c#5,f#5]@2 ~@4 [f#4,c#5,f#5]@2 ~@4 [f#4,c#5,f#5]@3 ~@17", K: "b3@3 ~@3 b3@2 ~@4 b3@4 ~@16",
  L: "[b3,f#4]@4 ~@2 [b3,f#4]@3 ~@3 [b3,f#4]@6 ~@14", M: "[b3,b4]@31 ~",
  N: "[b4,f#5,b5] ~@2 [b4,f#5,b5] ~@2 [b4,f#5,b5]@2 ~@8", // B5
  O: "~ [e4,g#4]@15 [e4,g#4,b4]@8 ~ [e4,g#4,c#5]@6 ~, b3@15 ~@9 b4@7 ~", // E C#m
  P: "~ [f#4,d#5]@17 ~@2 d#5 b4 d#5@2 ~ g#4 [f#4,b4,d#5] ~@5, b4@17 ~@3 f#4@2 b4 ~ b4@2 ~@6, ~@25 e5@2 ~@5", // D#m B
  Q: "~ [b3,e4,g#4]@15 ~@9 c#5@7, ~@16 [e4,g#4,b4]@15 ~", // E
  R: "~ e4@15 [e4,g#4,b4]@7 ~@2 [g#4,b4]@5 ~@2, [b3,g#4]@15 ~@9 [e4,c#5]@6 ~@2", // E G#m E C#m
  S: "~ f#4@4 ~@2 c#5@2 ~@3 [b4,d#5,g#5]@19 ~, [b4,d#5]@2 ~ [a#4,f#5] ~@12", // G#m B D#m
  T: "~ [f#4,c#5,f#5]@2 ~@4 c#5@2 ~@4 [f#4,c#5,f#5]@3 ~@16, ~@3 [f#4,f#5] ~@12", U: "b3@3 ~@3 b3@2 ~@5 b3@4 ~@15",
  V: "~ b3@4 ~ [b3,f#4]@3 ~@4 [b3,f#4]@6 ~@13, f#4 ~@7", W: "~ b3@30 ~, b4@31 ~",
  X: "~ [b4,f#5,b5]@2 ~@4 [b4,f#5]@2 ~@4 [b4,f#5]@4 ~@15, ~@3 b5 ~@2 b5@2 ~@8", // B5
  Y: "~ [e4,g#4]@15 ~ [e4,g#4,b4]@8 [e4,g#4,b4,c#5]@7, b3@15 ~@17", // E C#m7
  Z: "~ [f#4,b4,d#5]@17 ~@3 [b4,d#5] d#5@2 ~ [b4,e5]@2 [f#4,b4,d#5] ~@4, ~@21 f#4@3 ~ g#4 ~@6, ~@22 b4 ~@9", // B E5 B
  AA: "~ [b3,e4,g#4]@15 ~@8 c#5@7 ~, ~@17 [e4,g#4,b4]@15", AB: "~@4 [f#4,d#5]@2 ~@4 [e4,c#5]@2 ~@5 [d#4,b4]@13 ~@2",
  AC: "~ [b3,e4,g#4]@15 ~ [e4,g#4,b4]@7 ~ [e4,g#4,b4,c#5]@6 ~", // E C#m7
  AD: "~ [f#4,b4,d#5]@4 ~@2 [a#4,c#5,f#5]@3 ~@3 [b4,d#5,g#5]@19", AE: "~ [g#4,c#5,e5]@31",
  AF: "~ [f#4,c#5,f#5]@2 ~@4 c#5@2 ~@4 [f#4,c#5]@3 ~@16, ~@6 [f#4,f#5]@2 ~@4 f#5@3 ~@17", // F#5 F#
  AG: "~ b3@3 ~@2 b3@2 ~@5 b3@4 ~@15", AH: "~ b3@4 ~@2 [b3,f#4]@3 ~@3 [b3,f#4]@5 ~@14, f#4 ~@7", AI: "~ [b3,b4]@31",
  AJ: "~ [b4,f#5,b5]@2 ~@4 [b4,f#5,b5]@3 ~@3 [b4,f#5,b5]@4 ~@15", AK: "b3@16 ~ [b3,b4]@15",
  AL: "~ [b4,f#5,b5]@3 ~@3 [b4,f#5,b5]@4 ~ [b4,f#5,b5]@3 ~@2 [b4,f#5,b5]@3 ~@12", // B5
})).s("gm_brass_section").gain(0.33)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~ A B C D E F G H@2 I J K L M N O P Q R S T U V W E F X H@2 I J Y Z M N O AA Q AB S AC U AD W AE AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB
>`.pickRestart({
  A: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4]@5 ~@3 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@4 ~@4", // B G#m B
  B: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 ~@3 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  C: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  D: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@2 ~@14", // B
  E: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  F: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 ~ f#3 ~ [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@4 ~@4", // B G#m B
  G: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@4 ~@4 [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@3 ~@5", // E C#m E
  H: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  I: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@4 ~@2 f#3 ~ [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  J: "[e3,g#3,b3,e4]@4 ~@2 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@4 ~@4 [e3,g#3,c#4,e4]@3 ~ [e3,g#3,b3,e4]@3 ~@5", // E C#m E
  K: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  L: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@5 ~@3 [e3,g#3,c#4,e4]@3 ~ [e3,g#3,b3,e4]@4 ~@4", // E C#m E
  M: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@4 ~@2 f#3 ~ [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@4 ~@4", // B G#m B
  N: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@4 ~@2 b3 ~ [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@4 ~@4", // E C#m E
  O: "[f#3,b3,d#4]@4 ~@2 [f#3,b3,d#4]@3 ~@3 [f#3,b3,d#4]@6 ~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~ [f#3,b3,d#4]@2 ~@2", // B
  P: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@5 ~ b3 ~ [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@4 ~@4", // E C#m E
  Q: "[f#3,b3,d#4]@3 ~@3 [a#3,c#4,f#4]@3 ~@3 [b3,d#4,g#4]@6 ~@2 [b3,d#4,g#4]@3 ~ [g#3,b3,d#4]@6 ~@2", // B F# G#m
  R: "[g#3,c#4,e4]@3 ~@3 [g#3,c#4,e4]@3 ~@3 [g#3,c#4,e4]@4 ~@4 [c#3,g#3,c#4,e4]@3 ~ [c#3,g#3,c#4,e4]@5 ~@3", // C#m
  S: "[f#3,a#3,c#4,f#4]@3 ~@3 [f#3,a#3,c#4,f#4]@3 ~@3 [f#3,a#3,c#4,f#4]@3 ~@17", // F#
  T: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4]@4 ~@4 [b2,f#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@5", // B
  U: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 ~@3 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  V: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 ~ f#3 ~ [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@4 f#3", // B G#m B
  W: "[b2,b3,d#4,f#4]@3 ~@3 [b2,b3,d#4,f#4]@2 ~@4 [b2,b3,d#4,f#4]@3 ~@17", // B
  X: "[e3,g#3,b3,e4]@4 ~@2 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@4 ~@4 [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@3 ~@5", // E C#m E
  Y: "[b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  Z: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@5 ~@3 [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@4 ~@4", // E C#m E
  AA: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@5 ~ b3 ~ [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@5 ~@3", // E C#m E
  AB: "[g#3,c#4,e4]@4 ~@2 [g#3,c#4,e4]@3 ~@3 [g#3,c#4,e4]@4 ~@4 [c#3,g#3,c#4,e4]@3 ~ [c#3,g#3,c#4,e4]@5 ~@3", // C#m
  AC: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@2 ~@5 b2@4 ~@3 [b2,f#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@5, ~@3 [f#3,b3,d#4] ~@4", // B
  AD: "[b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 ~ f#3 ~ [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  AE: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@4", // B G#m B
  AF: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 f#3 ~ [b2,g#3,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@4 ~@3", // B G#m B
  AG: "~ [e3,b3,e4]@4 ~@2 e4@3 ~@3 [e3,g#3,b3,e4]@4 ~@4 [e3,g#3,c#4,e4]@2 ~ [e3,g#3,b3,e4]@3 ~@5, g#3@3 ~@3 [e3,g#3,b3]@3 ~@23", // E5 E C#m E
  AH: "~ [b2,f#3,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@3 ~@4 [b2,f#3,b3,d#4]@4 ~@3 [b2,g#3,b3,d#4]@2 ~@3 [b2,f#3,b3,d#4]@3 ~@4", // B G#m B
  AI: "[b2,f#3,b3,d#4]@3 ~@4 [b2,f#3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@4 ~@5 [b2,g#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@4, ~@6 b3@3 ~@23", // B G#m B
  AJ: "~ [b2,f#3,b3,d#4]@3 ~@3 [b2,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@4 ~@2 f#3 ~@2 [b2,g#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4]@3 ~@5, ~@6 f#3@3 ~@23", // B G#m B
  AK: "~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@4 ~@3 [e3,g#3,c#4,e4]@3 ~@2 [e3,b3,e4]@3 ~@4, ~@24 g#3@3 ~@5", // E C#m E5
  AL: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@3 [b2,f#3,b3,d#4]@3 ~@5", // B G#m B
  AM: "[e3,g#3,b3,e4]@3 ~@4 [e3,g#3,b3,e4]@3 ~@2 [e3,g#3,b3,e4]@5 ~@4 [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@4 ~@3", // E C#m E
  AN: "~ [b2,f#3,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@3 ~@4 [b2,f#3,b3,d#4]@4 ~ f#3 ~@2 [b2,g#3]@2 ~@2 [b2,f#3,b3,d#4]@3 ~@4, ~@10 [b3,d#4] ~@5", // B E B
  AO: "~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@2 [e3,g#3,b3,e4]@4 ~@3 b3 [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@4 ~@4", // E C#m E
  AP: "[f#3,b3,d#4]@4 ~@3 [b3,d#4]@3 ~@2 [f#3,b3,d#4]@6 ~@3 [b3,d#4,f#4] ~@3 [b3,f#4]@3 ~ [b3,d#4]@3, ~@6 f#3@3 ~@15 d#4@3 ~ f#3@2 ~@2", // B B5 B
  AQ: "~ [g#3,b3,e4]@3 ~@2 [e3,g#3,b3,e4]@3 ~@4 [e3,g#3,e4]@5 ~ b3 ~ [e3,g#3,c#4,e4]@2 ~@2 [e3,g#3,b3,e4]@5 ~@2, e3@3 ~@9 b3@5 ~@15", // E C#m E
  AR: "~ [f#3,b3,d#4]@3 ~@3 [a#3,c#4,f#4]@3 ~@3 [b3,d#4,g#4]@6 ~ [b3,d#4,g#4]@3 ~@2 [g#3,b3,d#4]@6 ~", // B F# G#m
  AS: "~ [g#3,c#4,e4]@4 ~ [g#3,c#4,e4]@3 ~@3 [g#3,c#4,e4]@4 ~@5 [c#3,g#3,c#4,e4]@3 ~ [c#3,g#3,c#4,e4]@5 ~@2", // C#m
  AT: "~ [f#3,c#4,f#4]@3 ~@2 [f#3,a#3,c#4,f#4]@3 ~@3 [f#3,a#3,c#4,f#4]@3 ~@17, a#3@3 ~@29", // F#5 F#
  AU: "~ [b2,f#3,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@2 ~@5 [b2,f#3,b3,d#4]@4 ~@3 [b2,f#3,b3,d#4]@2 ~@3 [b2,f#3,b3,d#4]@3 ~@4", // B
  AV: "[b2,f#3,b3,d#4]@3 ~@4 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@4", // B G#m B
  AW: "~ [b2,f#3,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@3 ~@4 [b2,f#3,b3,d#4]@5 ~ f#3 [b2,g#3,b3,d#4]@3 ~@2 [b2,f#3,b3,d#4]@3 ~@3 f#3", // B G#m B
  AX: "~ [b2,b3,d#4,f#4]@3 ~@3 [b2,b3,f#4]@2 ~@3 [b2,b3,d#4,f#4]@3 ~@17, ~@6 d#4@3 ~@23", // B B5 B
  AY: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@2 ~@4 [b2,f#3,b3,d#4]@5 ~@3 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@4 ~@3", // B G#m B
  AZ: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@5 ~@3 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@4", // B G#m B
  BA: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@4 ~@4 [b2,g#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@3 ~@4", // B G#m B
  BB: "~ [b2,f#3,b3,d#4]@4 ~@2 [b2,f#3,b3,d#4]@3 ~@3 [b2,f#3,b3,d#4]@3 ~ [b2,f#3,b3,d#4]@2 ~@13", // B
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.3)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@3 A B C D E F G@2 H I J K L M N O P Q R S I T U V E F U G H W X Y L M Z O P Q R S I T AA AB AC AD G AE AF AG AH AI
  AJ AK Z AL AM Q AN AO AP T ~@2 AQ AR
>`.pickRestart({
  A: "b2@4 ~@2 b2@4 ~@2 b2@6 ~@2 b2@2 ~@2 b2@5 ~@3", B: "b2@3 ~@3 g#2@2 ~@2 f#2 ~ d#2@2 ~@2 b1@4 ~@12",
  C: "b1@3 ~@3 b1@3 ~@3 b1@5 ~ b1 ~ b1@2 ~@2 b1@3 ~ f#2@3 ~",
  D: "b1@4 ~@2 b1@3 ~@3 b1@4 ~@2 b1 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  E: "e2@4 ~@2 e2@3 ~@3 e2@5 ~@3 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2",
  F: "b1@3 ~@3 b1@3 ~@3 b1@4 ~@2 b1 ~ b1@2 ~@2 b1@2 ~@2 f#2@2 ~@2",
  G: "b1@4 ~@2 b1@4 ~@2 b1@5 ~ b1 ~ b1@2 ~@2 b1@3 ~ f#2@3 ~",
  H: "e2@4 ~@2 e2@3 ~@3 e2@5 ~ e2 ~ e2@2 ~@2 e2@2 ~@2 e2@3 ~", I: "b1@4 ~@2 b1@3 ~@3 b1@4 ~@2 b1 ~ b1@2 ~@2 b1@4 ~@4",
  J: "e2@4 ~@2 e2@3 ~@3 e2@5 ~ e2 ~ e2@3 ~ e2@4 ~@4", K: "b1@4 ~@2 b1@4 ~@2 b1@4 ~@2 b1 ~ b1@3 ~ b1@3 ~ f#2@2 ~@2",
  L: "e2@4 ~@2 e2@4 ~@2 e2@4 ~@4 e2@3 ~ e2@3 ~@5", M: "b1@4 ~@2 c#2@3 ~@3 d#2@6 ~@2 f#2@2 ~@2 f#2@3 ~ d#2@3 ~",
  N: "e2@3 ~@3 e2@4 ~@2 e2@4 ~@2 e2 ~ e2@3 ~ e2@3 ~ e2@3 ~", O: "b2@4 ~@2 a#2@4 ~@2 g#2@5 ~ g#2 ~ g#2@2 ~@2 g#2@4 ~@4",
  P: "c#2@4 ~@2 c#2@3 ~@3 c#2@6 ~@2 c#2@3 ~ c#2@2 ~@2 c#2@3 ~", Q: "f#2@3 ~@3 f#2@3 ~@3 f#2@2 ~@18",
  R: "b1@3 ~@3 b1@3 ~@3 b1@5 ~ b1 ~ b1@2 ~@2 b1@4 ~@4", S: "b1@4 ~@2 b1@3 ~@3 b1@3 ~@5 b1@2 ~@2 b1@3 ~@5",
  T: "b1@2 ~@4 b1@2 ~@4 b1@3 ~@17", U: "b1@4 ~@2 b1@3 ~@3 b1@5 ~ b1 ~ b1@2 ~@2 b1@3 ~ f#2@3 ~",
  V: "b1@4 ~@2 b1@3 ~@3 b1@4 ~@2 b1 ~ b1@2 ~@2 b1@3 ~ b1@3 ~", W: "b1@4 ~@2 b1@3 ~@3 b1@5 ~ b1 ~ b1@2 ~@2 b1@4 ~@4",
  X: "e2@4 ~@2 e2@3 ~@3 e2@5 ~ e2 ~ e2@2 ~@2 e2@4 ~@4", Y: "b1@4 ~@2 b1@4 ~@2 b1@4 ~@2 b1 ~ b1@3 ~ b1@3 ~ f#2@3 ~",
  Z: "e2@4 ~@2 e2@4 ~@2 e2@4 ~@2 e2 ~ e2@3 ~ e2@3 ~ e2@3 ~",
  AA: "~ b1@3 ~@3 b1@3 ~@3 b1@4 ~@2 b1 b1@2 ~@3 b1@3 ~ f#2@3",
  AB: "~ b1@3 ~@3 b1@3 ~@3 b1@4 ~ b1 ~ b1@2 ~@3 b1@3 ~ b1@2 ~", AC: "e2@4 ~@2 e2@3 ~@3 e2@5 ~@4 e2@2 ~ e2@2 ~@3 e2@2 ~",
  AD: "~ b1@3 ~@2 b1@3 ~@4 b1@4 ~@2 b1 b1@2 ~@3 b1@2 ~ f#2@2 ~@2",
  AE: "b1@4 ~@2 b1@4 ~@2 b1@5 ~ b1 ~@2 b1@2 ~ b1@3 ~ f#2@3 ~",
  AF: "~ e2@3 ~@3 e2@3 ~@3 e2@5 e2 ~ e2@2 ~@2 e2@2 ~@2 e2@3 ~", AG: "b1@4 ~@2 b1@3 ~@4 b1@4 ~@2 b1 ~ b1@2 ~ b1@4 ~@4",
  AH: "e2@4 ~@3 e2@3 ~@2 e2@5 ~@2 e2 ~ e2@2 ~ e2@4 ~@4", AI: "~ b1@4 ~ b1@4 ~@2 b1@4 ~@2 b1 ~ b1@3 ~@2 b1@3 ~ f#2@2 ~",
  AJ: "~ e2@4 ~@2 e2@4 ~ e2@4 ~@4 e2@3 ~ e2@3 ~@5", AK: "b1@4 ~@2 c#2@3 ~@3 d#2@6 ~@3 f#2@2 ~ f#2@4 d#2@3 ~",
  AL: "~ b2@4 ~@2 a#2@4 ~@2 g#2@5 ~ g#2 g#2@2 ~@2 g#2@4 ~@4",
  AM: "c#2@4 ~@2 c#2@4 ~@2 c#2@6 ~@3 c#2@2 ~@2 c#2@2 ~@2 c#2@3",
  AN: "~ b1@3 ~@2 b1@3 ~@3 b1@5 ~@2 b1 b1@2 ~@3 b1@4 ~@3", AO: "b1@4 ~@3 b1@3 ~@3 b1@3 ~@5 b1@2 ~@2 b1@3 ~@4",
  AP: "~ b1@4 ~ b1@3 ~@4 b1@4 ~@2 b1 b1@2 ~@3 b1@3 ~@4", AQ: "~ b2@4 ~@2 b2@4 ~@2 b2@6 ~@2 b2@2 ~@2 b2@5 ~@2",
  AR: "~ b2@4 ~@2 g#2@2 ~@2 f#2 ~ d#2@2 ~@2 b1@4 ~@11, ~@17 a#1 ~@14",
})).s("gm_electric_bass_finger").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@3 C@2 B C B C@2 B@4 D E F B D E B@3 C@2 B C B C@2 B@4 D E F B D E G H I J K L M N O P Q R@2 S T E U V W E ~@3
  X
>`.pickRestart({
  A: "~ x", B: "x ~@2 x ~ x!2 ~@3 x ~ x ~@3", C: "x ~@2 x ~ x!2 ~@2 x!2 ~ x ~@3", D: "x ~@2 x ~@2 x ~@3 x ~ x ~@3",
  E: "x ~@2 x ~@2 x ~@9", F: "x ~@2 x ~@2 x ~@2 x!2 ~ x ~@3", G: "~ x ~@5 x ~@2 x ~@2 x ~@7 x ~@3 x ~@6",
  H: "~ x ~@5 x ~@3 x ~ x ~@6 x ~@4 x ~@6", I: "x ~@5 x ~@4 x!2 ~@8 x ~@2 x ~@7",
  J: "~ x ~@4 x ~@3 x ~@2 x ~@5 x!2 ~@4 x ~@6", K: "x ~@5 x ~@4 x!2 ~@6 x ~ x ~@3 x ~@6",
  L: "~ x ~@4 x ~@3 x ~ x ~@8 x ~@2 x ~@7", M: "~ x ~@5 x ~@2 x ~@2 x ~@5 x!2 ~@3 x ~@7",
  N: "~ x ~@4 x ~@3 x ~@2 x ~@7 x ~@2 x ~@7", O: "x ~@6 x ~@2 x ~ x ~@6 x ~ x ~@2 x ~@7",
  P: "~ x ~@4 x ~@3 x ~@2 x ~@4 x ~ x ~@4 x ~@6", Q: "~ x ~@5 x ~@2 x ~ x ~@7 x ~@3 x ~@7",
  R: "x ~@5 x ~@3 x ~ x ~@8 x ~@2 x ~@7", S: "~ x ~@5 x ~@2 x ~@2 x ~@6 x ~@4 x ~@6",
  T: "x ~@5 x ~@5 x ~@8 x ~@3 x ~@6", U: "~ x ~@4 x ~@6 x ~@5 x!2 ~@4 x ~@6", V: "x ~@6 x ~@2 x ~@2 x ~@7 x ~@3 x ~@6",
  W: "~ x ~@4 x ~@6 x ~@6 x ~@4 x ~@6", X: "~@17 x ~@14",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@68>").gain(0.25)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@15 C B@3 C B@15 C B@3 C D E F G H I D J K D L I M E F N E J D C ~@3 O
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@7", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4", D: "~@4 x ~@8 x ~@6 x ~@8 x ~@2",
  E: "~@5 x ~@7 x ~@6 x ~@8 x ~@2", F: "~@5 x ~@6 x ~@8 x ~@7 x ~@2", G: "~@4 x ~@8 x ~@6 x ~@7 x ~@3",
  H: "~@5 x ~@6 x ~@7 x ~@7 x ~@3", I: "~@4 x ~@7 x ~@8 x ~@6 x ~@3", J: "~@4 x ~@8 x ~@7 x ~@7 x ~@2",
  K: "~@5 x ~@6 x ~@8 x ~@6 x ~@3", L: "~@5 x ~@6 x ~@7 x ~@8 x ~@2", M: "~@4 x ~@7 x ~@8 x ~@7 x ~@2",
  N: "~@5 x ~@6 x ~@19", O: "~ x ~@5 x ~@5 x ~@3 x ~@14",
})).gain(0.32)
// … 13 more lines

More by Michael George