Strudelify
Holding Back The Years cover art

Picture Book

Holding Back The Years

Simply Red

KeyF majorTempo85 bpm
0:00/0:00
// Holding Back The Years — Simply Red
// 85 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · epiano2 · "Piano Ac."
const epiano2 = note("<~@8 A@8 B C@7 D@4 E@7 F G H@7 I J K@8 L ~@7 M@8 B N@8 O@2 P@4 Q@2 R@4 S@4 ~>".pickRestart({
  A: "[[eb4,g4,bb4,d5]@11 ~ [eb4,g4,bb4,d5] ~ [g4,a4,c5]@11 ~ [bb4,d5,f5]@2 [a4,c5] ~@15 [eb4,g4,bb4,d5] ~ g4@2 ~@4 f4@4 ~@2 [bb4,d5,f5]@2 [f4,a4,c5] ~@15 [eb4,g4,bb4,d5] ~ [g4,a4,c5]@10 ~@2 [bb4,d5,f5]@2 [f4,a4,c5] ~@15 [eb4,g4,bb4,d5] ~ [g4,a4]@4 ~@4 c5@6 [g4,bb4]@2 [f4,a4,c5]@2, c3@14 ~@12 g4 ~@3 [eb4,g4,bb4,d5]@13 ~@3 [a4,c5]@10 ~@2 g4 ~@5 c3@14 ~@18 c3@14 ~@4 c4@9 ~@5, ~@32 c3@14 ~@4 c4@6 ~@6 [eb4,g4,bb4,d5]@13 ~@15 g4 ~@3 [eb4,g4,bb4,d5]@13 ~@3 c5@6 f4@8 eb4 ~@3]/8", // Ebmaj7 Am7 Bb Am Ebmaj7 Bb F Ebmaj7 …
  B: "~@3 [a4,c5]@5, f3, ~ c4@7, ~ f4@3", // Am
  C: "[[g4,bb4,d5]@11 ~ [bb4,d5,f5] ~ [a4,c5,f5]@11 ~ [bb4,d5,f5]@2 [a4,c5] ~ [g4,bb4,d5]@13 ~ [g4,d5] ~ [f4,c5]@4 ~@4 c5@3 ~ [f4,bb4,d5]@2 [a4,c5] ~@15 [g4,d5] ~ [f4,c5]@4 ~@4 c5@6 [g4,bb4]@2 [f4,c5]@4 ~@4 [a4,c5]@10, c3@14 ~@16 c3@16 ~@6 f4@5 ~@5 [eb4,g4,bb4]@13 ~ bb4@2 a4@3 ~ c4@7 ~@9 c4@14, ~@44 bb4@2 a4@3 ~ c4@6 ~@8 c3@14 ~@6 f4@5 ~@3 eb4 ~ a4@3 ~@3 f4@12]/7", // Gm Bb F Bb Am Gm G5 F5 …
  D: "[[eb4,g4,bb4,d5]@11 ~ [g4,bb4]@2 ~@4 f3 ~@3 f3 ~@5 [eb4,d5] ~ [eb4,g4,bb4,d5]@13 ~ [g4,bb4]@2 [a4,c5]@4 ~@4 c5@9 ~, ~@12 [eb4,d5] ~ [eb4,a4,d5]@13 ~ a4@2 ~@14 [eb4,d5] ~ f4@2 ~@2 c4@14, ~@52 f4@11 ~]/4", // Ebmaj7 Gm Ebmaj7 Gm Am Ebmaj7 D Ebmaj7
  E: "[[eb4,g4,bb4]@11 ~ [g4,bb4,d5] ~ [f4,a4,c5]@10 ~@2 [bb4,d5,f5]@2 [a4,c5] ~ [eb4,g4,bb4,d5]@13 ~ [g4,bb4,d5] ~ [f4,a4,c5]@11 ~ [f4,bb4,d5]@2 [a4,c5] ~ [eb4,g4,bb4]@13 ~ [g4,bb4,d5] ~ [f4,a4,c5]@11 ~ [bb4,d5,f5]@2 [a4,c5] ~ [eb4,g4,bb4,d5]@13 ~ [g4,bb4,d5] ~ [f4,a4,c5]@2]/7", // Eb Gm F Bb Am Ebmaj7 Gm F …
  F: "~@3 [a4,c5]@3 [g4,bb4] [f4,a4,c5], f3@15 ~, ~@2 c4@9 ~@5, ~@4 f4@7 ~ eb4 ~@3", // Am Gm F
  G: "~@6 a4@4 ~@2 f4@3 ~, f3@7 ~, ~@2 c4@7 ~ c4@4 ~@2, ~@4 f4@5 ~@7, ~@6 c5@9 ~",
  H: "[[eb4,g4,bb4,d5]@11 ~ [g4,bb4,d5,f5] ~ [f4,a4,c5]@10 ~@2 [bb4,d5,f5]@2 [a4,c5] ~ [eb4,g4,bb4,d5]@13 ~ [g4,bb4,d5] ~ [f4,a4,c5]@11 ~ [f4,bb4,d5]@2 [a4,c5] ~ [eb4,g4,bb4]@13 ~ [g4,bb4,d5,f5] ~ [f4,a4,c5]@10 ~@2 [bb4,d5,f5]@2 [a4,c5] ~ [eb4,g4,bb4,d5]@13 ~ [g4,bb4,d5] ~ [f4,a4,c5]@2, ~@14 bb4 ~@97]/7", // Ebmaj7 Gm7 F Bb Am Ebmaj7 Gm F …
  I: "~@6 c5@5 ~ [g4,bb4]@2 [f4,a4,c5]@2, f3@15 ~, ~@2 c4@9 ~@5, ~@4 f4@8 eb4 ~@3", // Gm F
  J: "~@10 c4@2 f4@3 ~, f3@7 ~, ~@2 c4@7 ~@7, ~@4 f4@5 ~@7, ~@6 [a4,c5]@9 ~", // Am
  K: "[[eb4,g4,bb4]@12 [eb4,g4,bb4]@2 [eb4,a4,d5]@7 ~ [eb4,a4]@6 [eb4,a4,d5] ~ [eb4,g4,bb4,d5]@8 [eb4,g4,bb4,d5]@6 [eb4,g4,bb4,d5] ~ [eb4,a4,d5]@8 [eb4,a4,c5]@6 [eb4,a4,d5] ~ [eb4,g4,bb4,d5]@8 [eb4,g4,bb4,d5]@6 [eb4,g4,bb4] ~ [eb4,a4,d5]@8 [eb4,a4,c5]@6 [eb4,a4,d5] ~ [eb4,g4,bb4,d5]@8 [g4,bb4,d5]@6 [g4,bb4,d5]@2 [f4,a4,c5]@14 [g4,bb4]@2 [f4,a4,c5]@2, d5@14 ~@8 c5@8 ~@72 eb4@8 ~@14 eb4 ~@3]/8", // Eb D Ebdim D Ebmaj7 D Adim D …
  L: "~@3 f4, f3, ~ c4@4 c4@3, ~ f4@2 ~, ~@3 [a4,c5]@5", // Am
  M: "[[eb4,g4,bb4,d5]@11 ~ [g4,bb4,d5,f5] ~ [f4,a4,c5]@11 ~ [bb4,d5,f5]@2 [a4,c5] ~ [eb4,g4,bb4,d5]@13 ~ [g4,bb4,d5] ~ [f4,a4,c5]@11 ~ [eb4,g4,bb4]@2 [d4,f4]@2 [c4,eb4,g4]@13 ~ [g4,bb4,d5,f5] ~ [f4,a4,c5]@11 ~ [f4,bb4,d5]@2 [a4,c5] ~ [eb4,g4,bb4]@14 [g4,bb4,d5] ~ f4@2 ~@6 [a4,c5]@6 [g4,bb4]@2 [f4,a4,c5]@2, ~@60 a4 ~@49 [a4,c5]@4 c4@9 ~@5, ~@112 f3@15 ~, ~@116 f4@7 ~ eb4 ~@3]/8", // Ebmaj7 Gm7 F Bb Am Ebmaj7 Gm F …
  N: "[[eb4,g4,bb4,d5]@11 ~ [eb4,g4,bb4]@2 [eb4,a4,d5]@7 ~ [eb4,a4,c5]@6 [eb4,a4,d5] ~ [eb4,g4,bb4,d5]@8 [eb4,g4,bb4,d5]@5 ~ [g4,bb4]@2 [eb4,a4,d5]@7 ~ [eb4,a4,c5]@6 [eb4,a4,d5] ~ [eb4,g4,bb4,d5]@7 ~ [eb4,g4,bb4,d5]@6 [eb4,g4,bb4,d5] ~ [eb4,a4,d5]@7 ~ [eb4,a4,c5]@6 [eb4,a4,d5] ~ [eb4,g4,bb4,d5]@7 ~ [eb4,g4,bb4,d5]@5 ~ [eb4,g4,d5] ~ a4@2 ~@6 [a4,c5]@6 [g4,bb4]@2 [f4,a4,c5]@2, ~@12 d5 ~@31 [eb4,d5] ~@63 bb4@2 [f4,c5]@4 c4@9 ~@5, ~@112 f3@15 ~, ~@116 f4@7 ~ eb4 ~@3]/8", // Ebmaj7 Eb D Adim D Ebmaj7 Gm D …
  O: "[~@6 [a4,c5]@6 [g4,bb4]@2 [a4,c5]@2 ~@4 f4 ~ [f4,a4]@4 c4@2 f4@3 ~, f3@15 ~ f3@15 ~, ~@2 c4@9 ~@7 c4@7 ~@7, ~@4 f4@7 ~ eb4 ~ f4@5 ~@3 c5@9 ~]/2", // Am Gm Am F
  P: "[[eb4,g4,bb4,d5]@5 ~ [eb4,g4,bb4,d5]@5 ~ [eb4,g4,bb4,d5] ~ [eb4,a4,d5]@7 ~ [eb4,a4,c5]@5 ~ [eb4,a4,c5] ~ [eb4,g4,bb4,d5]@7 ~ [eb4,g4,bb4,d5]@5 ~ [eb4,g4,bb4] ~ [eb4,a4,c5]@17 ~]/4", // Ebmaj7 D Adim Ebmaj7 Eb Adim
  Q: "[[eb4,g4,bb4]@11 ~ [eb4,g4,bb4] ~ [f4,a4,c5]@17 ~]/2", // Eb F
  R: "[[eb4,g4,bb4]@11 ~ [eb4,g4,bb4,d5] ~ [f4,a4,c5]@17 ~]/2", // Eb Ebmaj7 F
  S: "[[eb4,g4,bb4,d5]@8 ~@2 [bb4,d5,f5]@2 [a4,c5] ~ [f4,a4,c5]@50]/4", // Ebmaj7 Bb Am F
})).s("gm_epiano2").gain(0.28).pan(0.7)

// bass · fretless bass · "Bass"
const bass = note(`<
  A B C@2 D B C@2 E@2 F@2 G@3 H@2 I@2 F@2 J@2 K L@2 M@2 N@2 O P Q@2 O R@2 I@2 S@2 T@2 U V@2 W X Y X Y Z Y AA AB AC@2 O
  AD@3 AE AF@2 O P AF@2 O AG@2 AH AI Y AI AJ AK Y AL AM AN I@2 AO@2 AP@2 AQ@2 I@2 AR@4 ~
>`.pickRestart({
  A: "c3 ~ g2 ~ c3 ~@11", B: "d3 ~ a2 ~ d3 ~@11", C: "[eb3 ~ bb2 ~ eb3 ~@7 g2@2 f2@18]/2", D: "c3 ~ g2 ~ c3@2 ~@10",
  E: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@9 ~ f2@2 c3@2 g3@3 ~, ~@28 f3 ~@3]/2",
  F: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@4 f2@8 g2 f2 eb2@4]/2",
  G: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@9 f2 f2@2 c3@2 f3 ~ c2@4 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@2]/3",
  H: "[~@2 f2@10 c3@2 f3@4 f2@3 ~ f2@4 g2 f2 eb2@4]/2",
  I: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@8 ~ f2 f2@2 c3 ~ f3@3 ~]/2",
  J: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@8 ~ f2 f2@2 c3 ~ f3@4]/2", K: "f2@5 ~ f2@4 c3@2 f3@2 c3 ~",
  L: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@9 ~ f2@2 c3@2 f3@3 ~]/2",
  M: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@4 f2@8 g2 f2 eb2@2 f2@2]/2",
  N: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@8 ~ f2 f2@2 c3@2 f3 ~ c3@2]/2", O: "c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@2",
  P: "~@2 f2@8 g2 f2 eb2@2 f2@2", Q: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@8 ~ f2 f2@2 c3@2 f3@3 ~]/2",
  R: "[~@2 f2@10 c3@2 f3@4 f2@4 f2@4 g2 f2 eb2@2 f2@2]/2",
  S: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3@2 f2@4 f2@8 g2 f2 eb2@2 f2@2]/2",
  T: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@8 ~ f2 f2@2 c3@2 f3 ~ c3 ~]/2", U: "c2@2 g2@2 c3 ~ d3 ~ c3@4 d3@2 f2@2",
  V: "[~@2 f2@3 ~ f2@3 ~ f2@2 c3@2 f3@4 f2@3 ~ f2@4 c2@2 f2@2 c2@2]/2", W: "g2@2 f2@2 g2@2 c2@6 g2@2 f2 ~",
  X: "f2@2 f2@3 ~ f2@4 ~@5 g2", Y: "c3@2 g2@2 c3@2 eb2@2 c2@4 g2@2 f2 ~", Z: "f2 ~ f2@3 ~ f2@5 ~@4 g2",
  AA: "f2 f2@5 c3 f3", AB: "f2 ~ f2@3 ~ f2@3 c2 c2@2 f2@2 c2 ~",
  AC: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@9 f2 f2@2 c3 ~ f3@3 ~]/2",
  AD: "[~@2 f2@3 ~ f2@6 c3@2 f3@4 f2@3 ~ f2@2 ~ f2 ~ f3 g3@2 f3@4 f2@3 ~ f2@2 ~ f2 f2@2 eb2@2 f2@2, ~@13 f2 ~@10]/3",
  AE: "~@2 f2@3 ~ f2@4 g2 f2 eb2@2 f2@2", AF: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@9 f2 f2@2 c3@2 f3@3 ~]/2",
  AG: "[~@2 f2@3 ~ f2@6 c3@2 f3@4 f2@3 ~ f2@4 c2@2 f2@2 c2@2]/2", AH: "c3 ~ g2@2 c3 ~ eb2@2 c2@4 g2@2 f2@2",
  AI: "f2 ~ f2@3 ~ f2@3 ~@6 g2", AJ: "c3@2 g2@2 c3@2 eb2 ~ c2@3 ~ g2@2 f2 ~", AK: "f2@2 f2@3 ~ f2@3 ~@6 g2",
  AL: "f2@5 ~ f2@6 c3@2 f3@2", AM: "f2@5 ~ f2@3 f3 f2 ~ g3@2 f3 ~, ~@12 f3 ~@3", AN: "f2@5 ~ f2@4 g2 f2 eb2@2 f2 g2",
  AO: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@12 g2 f2 eb2@2 f2@2]/2",
  AP: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@7 ~ f2@4 c3@2 f3@2 c3 ~]/2",
  AQ: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@4 f2@3 ~ f2@4 g2 f2 eb2@2 f2@2]/2",
  AR: "[c2@2 g2@2 c3 ~ d3 ~ c3@4 d3 ~ f2@50]/4",
})).s("gm_fretless_bass").gain(0.28)

// other · muted trumpet
const muted_trumpet = note("<~@55 A B C@2 D E@2 ~@10 F G F H F I ~@2 J K ~@4 F I ~@2 L M@3 ~@2>".pickRestart({
  A: "~@2 g4@2 a4 ~ bb4@10", B: "~ bb4 a4 c5@12 ~", C: "[~@2 d5 c5 ~ bb4 ~ f4 ~ c4@4 f4 g4 f4@14 ~@3]/2",
  D: "g4 f4@11 ~@4", E: "[bb4 c5@10 ~@2 c5 ~ f5@16 ~]/2", F: "~@10 f4 ~@2 g4 ~@2", G: "f4@13 ~@3", H: "f4@11 ~@5",
  I: "f4@3 ~", J: "~@11 g4 f4 ~ g4 ~", K: "~ g4 ~ g4 g4@12", L: "~@10 d5 c5 ~ bb4 ~ f4", M: "[~ c4@34 ~@13]/3",
})).s("gm_muted_trumpet").gain(0.56)

// other · muted trumpet · soft notes
const muted_trumpet_soft = note("<~@86 [~@11 eb4 f4 ~ f4 eb4] ~@9>").s("gm_muted_trumpet").gain(0.32)

// chords · electric guitar clean · "Chit. Ritm"
const electric_guitar_clean = note(`<
  ~@8 A B A B A B A C ~ A B A B A B@2 A B A B A B A B A B A B@2 A B A B A B A B@2 ~@2 D ~ D ~ D ~@20 E ~ E ~ E ~@4 F ~ F
  ~ G ~ F ~ H ~@5
>`.pickRestart({
  A: "~@4 [c4,eb4,g4] ~@7 [c4,eb4,g4] ~@3", B: "~@4 [a3,c4,f4] ~@7 [a3,c4,f4] ~@3", C: "~@4 [a3,c4,f4] ~@11",
  D: "~@2 [eb4,g4] ~@2 [eb4,g4] ~@2 [eb4,g4] ~@7", E: "~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@7",
  F: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@4", // F
  G: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~", // F
  H: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4]!2 ~@6", // F
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
  ~@24 A@4 B@2 C@2 D@2 E@3 C@2 F@2 C@2 G ~ H I@2 J@4 K L@2 ~@7 C@2 B@4 M@3 N O@4 P@5 Q@2 R@4 B@4 S@3 ~@2
>`.pickRestart({
  A: "[[g3,bb3]@7 [eb3,a3]@9 [g3,bb3]@7 [f3,a3,c4]@9, d4@23 ~@9]/4", B: "[[eb3,g3,bb3]@7 [f3,a3,c4]@9]/2",
  C: "[[g3,bb3,d4]@7 [f3,a3,c4]@9]/2", D: "[~@7 [f3,a3,c4]@9]/2",
  E: "[[g3,bb3,d4]@7 [f3,a3,c4]@7 [eb3,g3,bb3] [f3,a3,c4]@9]/3", F: "[[eb3,g3,bb3]@7 c4@9]/2", G: "[eb3,g3,bb3]@11 ~@5",
  H: "[f3,a3,c4]", I: "[[g3,bb3]@15 ~@7 c4@9 ~, d4@11 ~@5, ~ [eb3,a3]]/2",
  J: "[[g3,bb3]@16 ~@6 c4@9 ~, d4@11 ~@5, ~ [eb3,a3]]/2", K: "[g3,bb3,d4]", L: "[f3,a3,c4]/2",
  M: "[[g3,bb3,d4]@7 [f3,a3,c4]@17]/3", N: "[g3,bb3]@7 [eb3,a3], d4",
  O: "[~@3 c4@3 ~ [g3,bb3]@8 ~@4 c4@3 ~ [g3,bb3]@8 [eb3,a3], ~@6 d4@13 ~@3 d4@10, ~@15 [eb3,a3]@8 ~@9]/4", // Gm Ebdim
  P: "[~@3 c4@3 ~ [g3,bb3]@8 [f3,a3,c4]@25, ~@6 d4@9 ~@25]/5", Q: "[[g3,bb3]@7 ~@4 c4@5, d4@11 ~@5, ~@7 [eb3,a3]@9]/2",
  R: "[[g3,bb3,d4]@7 [a3,c4]@9 [g3,bb3]@7 [f3,a3,c4]@9, ~@7 eb3@16 ~@9]/4", // Gm Am Gm F
  S: "[[bb3,d4]@14 [f3,a3,c4]@25 ~@9, g3 ~@3]/3", // Bb F
})).s("gm_synth_strings_1").gain(0.2)

// chords · epiano1 · "Electric Piano"
const epiano1 = note(`<
  A B C@2 D E@3 ~@9 F@7 G@2 H I J@3 K@6 L@8 M@2 N@7 O P@3 Q R S T U@8 V W@8 X@2 Y@4 Z@2 AA@4 AB@4 ~
>`.pickRestart({
  A: "[c2,g3,bb3,d4]", B: "[a3,c4,e4]", C: "[[bb3,d4,f4]@12 [g3,bb3,d4] ~@13 f2@2 g2 bb2@3, ~@14 [a3,c4,f4]@17 ~]/2",
  D: "[c2,e3,g3,bb3,d4]", E: "[[a3,c4]@16 [g3,bb3,d4]@11 ~ [g3,bb3,d4] ~ [a3,c4,f4]@18, f4@29 ~@19]/3",
  F: "[[g3,bb3,d4]@11 ~ [bb3,d4,f4] ~ [a3,c4,f4]@11 ~ [bb3,d4,f4]@2 [a3,c4,f4] ~ [g3,bb3,d4]@13 ~ [g3,bb3,d4] ~ [f3,a3,c4]@11 ~ [f3,bb3,d4]@2 [a3,c4] ~@15 [f3,bb3,d4] ~ [f3,a3,c4]@14 [g3,bb3]@2 [f3,a3,c4]@18, c2@12 ~@18 c2@16 ~@16 [eb3,g3,bb3]@13 ~@17 eb3 ~@19, ~@32 c2@7 ~@17]/7", // Gm Bb F Bb F Gm F Bb …
  G: "[[g3,bb3,d4]@12 [g3,bb3,d4]@2 [eb3,a3,d4]@17 ~]/2", H: "[g3,bb3,d4]@6 [bb3,d4] [a3,c4], ~@12 g3 ~ ab3 ~",
  I: "~@3 c4@5, ~ c3@7, ~ f3@3",
  J: "[[g3,bb3]@6 ~@9 [g3,bb3,d4]@7 ~ [f3,a3,c4], eb3@13 [bb3,d4] [a3,c4]@8 [g3,bb3,d4]@2, ~@2 g3@3 eb3@3, ~@6 [bb3,d4] [a3,c4]@6 f4@11, ~@7 f3@16 ~]/3", // Gm F Bb Am Gm Bb Am
  K: "[~@7 [g3,bb3]@7 ~@9 [eb3,g3,bb3,d4]@7 ~@16 f3@2, ~@5 f3@9 [bb3,d4] [a3,c4]@6 f4@10 [f3,c4] f2@7 a3@6 c3@3, ~@5 d4@9 g3@7 [bb3,d4] [a3,c4]@8 [eb3,g3,bb3]@3 c3@6 [f3,c4] f2@8, ~@5 bb3@2 eb3@16 ~@7 d4@11 c3 f3 c4@5, ~@6 [a3,c4]@9 f3@16 a3@3 f3 c4@3 [eb3,g3,bb3]@10]/6", // Gm Ebmaj7 Bb Am F5 Bb Am Eb …
  L: "[[g3,bb3,d4]@6 bb3 bb3@6 ~@2 [g3,bb3,d4]@7 ~ f3@6 ~@2 [g3,bb3]@7 ~@9 [g3,bb3,d4]@7 ~@9 [f3,a3,c4], eb3@13 [bb3,d4] [a3,c4]@8 g3@7 bb3 [a3,c4]@8 [bb3,d4,f4] [a3,c4]@6 f4@10 a3@3 f3 c4@3 [eb3,g3,bb3]@2, ~@6 g3@9 eb3@16 eb3@14 [bb3,d4] [a3,c4]@8 d4@10, ~@6 [d4,f4] [a3,c4]@6 f4@10 [a3,c4]@6 d4@9 g3@9 eb3@8 [f3,c4] f2@8, ~@7 f3@15 [bb3,d4]@7 f3@10 f3@15 [g3,bb3]@3 c3@7]/8", // Gm F Bb Am Bb Am Eb Bb …
  M: "[~@8 [eb3,g3,bb3]@6 [eb3,g3,bb3] [eb3,a3,d4], f2@8 d4@7 ~, ~ c3@4 c3@10 ~, ~@2 f3@4 f3@9 ~, ~@3 [a3,c4]@12 ~]/2", // Eb D Am
  N: "[~@6 [eb3,a3]@6 [eb3,a3,d4] ~ [eb3,g3,bb3,d4]@8 [eb3,g3,bb3,d4]@6 [eb3,g3,bb3,d4] ~ [eb3,a3,d4]@8 [eb3,a3,c4]@6 [eb3,a3,d4] ~ [eb3,g3,bb3,d4]@8 [eb3,g3,bb3,d4]@6 [eb3,g3,bb3] ~ [eb3,a3,d4]@8 [eb3,a3,c4]@6 [eb3,a3,d4] ~ [eb3,g3,bb3,d4]@8 [g3,bb3,d4]@6 [g3,bb3,d4]@2 [f3,a3,c4]@14 [g3,bb3]@2 [f3,a3,c4]@2, ~@6 c4@8 ~@72 eb3@8 ~@14 eb3 ~@3]/7", // Ebdim D Ebmaj7 D Adim D Ebmaj7 Eb …
  O: "~@3 f3, f2, ~ c3@4 c3@3, ~ f3@2 ~, ~@3 [a3,c4]@5", // Am
  P: "[[eb3,g3,bb3,d4]@11 ~ [g3,bb3,d4,f4] ~ [f3,a3,c4]@11 ~ [bb3,d4,f4]@2 [a3,c4] ~ [eb3,g3,bb3,d4]@13 ~ [eb3,g3,bb3] ~ [f3,a3,c4]@2]/3", // Ebmaj7 Gm7 F Bb Am Ebmaj7 Eb F
  Q: "~@3 c4@3 [g3,bb3] [f3,a3,c4], f2@15 ~, ~@2 c3@9 ~@5, ~@4 f3@7 ~ eb3 ~@3", // Gm F
  R: "~@6 a3@5 ~ [g3,bb3]@2 [f3,a3,c4]@2, f2@15 ~, ~@2 c3@9 ~@5, ~@4 f3@7 ~ eb3 ~@3", // Gm F
  S: "~@6 c4@5 ~ [g3,bb3]@2 [f3,a3,c4]@2, f2@15 ~, ~@2 c3@9 ~@5, ~@4 f3@8 eb3 ~@3", // Gm F
  T: "~@5 c2 f2 g2, f2@5 ~@3, ~ c3@7, ~ f3@3, ~@3 c4@5",
  U: "[[eb3,g3,bb3,d4]@11 ~ [g3,bb3,d4,f4] ~ [f3,a3,c4]@11 ~ [bb3,d4,f4]@2 [a3,c4] ~ [eb3,g3,bb3,d4]@13 ~ [g3,bb3,d4] ~ [f3,a3,c4]@11 ~ [eb3,g3,bb3]@2 [d3,f3]@2 [c3,eb3,g3]@13 ~ [g3,bb3,d4,f4] ~ [f3,a3,c4]@11 ~ [f3,bb3,d4]@2 [a3,c4] ~ [eb3,g3,bb3]@14 [g3,bb3,d4] ~ f3@2 ~@6 [a3,c4]@6 [g3,bb3]@2 [f3,a3,c4]@2, ~@60 a3 ~@49 [a3,c4]@4 c3@9 ~@5, ~@112 f2@15 ~, ~@116 f3@7 ~ eb3 ~@3]/8", // Ebmaj7 Gm7 F Bb Am Ebmaj7 Gm F …
  V: "~@3 [a3,c4]@5, f2, ~ c3@7, ~ f3@3", // Am
  W: "[[eb3,g3,bb3,d4]@11 ~ [eb3,g3,bb3]@2 [eb3,a3,d4]@7 ~ [eb3,a3,c4]@6 [eb3,a3,d4] ~ [eb3,g3,bb3,d4]@8 [eb3,g3,bb3,d4]@5 ~ [g3,bb3]@2 [eb3,a3,d4]@7 ~ [eb3,a3,c4]@6 [eb3,a3,d4] ~ [eb3,g3,bb3,d4]@7 ~ [eb3,g3,bb3,d4]@6 [eb3,g3,bb3,d4] ~ [eb3,a3,d4]@7 ~ [eb3,a3,c4]@6 [eb3,a3,d4] ~ [eb3,g3,bb3,d4]@7 ~ [eb3,g3,bb3,d4]@5 ~ [eb3,g3,d4] ~ a3@2 ~@6 [a3,c4]@6 [g3,bb3]@2 [f3,a3,c4]@2, ~@12 d4 ~@31 [eb3,d4] ~@63 bb3@2 [f3,c4]@4 c3@9 ~@5, ~@112 f2@15 ~, ~@116 f3@7 ~ eb3 ~@3]/8", // Ebmaj7 Eb D Adim D Ebmaj7 Gm D …
  X: "[~@6 [a3,c4]@6 [g3,bb3]@2 [a3,c4]@2 ~@4 f3 ~ [f3,a3]@4 c3@2 f3@3 ~, f2@15 ~ f2@15 ~, ~@2 c3@9 ~@7 c3@7 ~@7, ~@4 f3@7 ~ eb3 ~ f3@5 ~@3 c4@9 ~]/2", // Am Gm Am F
  Y: "[[eb3,g3,bb3,d4]@5 ~ [eb3,g3,bb3,d4]@5 ~ [eb3,g3,bb3,d4] ~ [eb3,a3,d4]@7 ~ [eb3,a3,c4]@5 ~ [eb3,a3,c4] ~ [eb3,g3,bb3,d4]@7 ~ [eb3,g3,bb3,d4]@5 ~ [eb3,g3,bb3] ~ [eb3,a3,c4]@17 ~]/4", // Ebmaj7 D Adim Ebmaj7 Eb Adim
  Z: "[[eb3,g3,bb3]@11 ~ [eb3,g3,bb3] ~ [f3,a3,c4]@17 ~]/2", // Eb F
  AA: "[[eb3,g3,bb3]@11 ~ [eb3,g3,bb3,d4] ~ [f3,a3,c4]@17 ~]/2", // Eb Ebmaj7 F
  AB: "[[eb3,g3,bb3,d4]@8 ~@2 [bb3,d4,f4]@2 [a3,c4] ~ [f3,a3,c4]@50]/4", // Ebmaj7 Bb Am F
})).s("gm_epiano1").gain(0.38).pan(0.2)

// chords · acoustic guitar steel · "Chit. El 1"
const acoustic_guitar_steel = note(`<
  A B@2 C D E F@2 ~@39 G ~ H ~ I ~@2 J K L M ~@5 N O P Q R S T@2 ~ U ~ V ~ V ~@4 W ~ X ~ Y ~ X ~ Y ~ Z ~@4
>`.pickRestart({
  A: "~@6 g3@9 ~, d4@15 ~, ~@2 eb4@13 ~, ~@4 bb3@11 ~",
  B: "[~@4 [f3,a3]@2 [f3,a3,d4]@9 ~ d4@6 ~@4 f3@5 ~, ~@4 c4@11 bb3@8 ~ bb3@7 ~, ~@15 f3@5 ~@2 d4@9 ~]/2", // F Dm
  C: "~@2 c4 [a3,c4,f4]@5, g3, ~ a3@2 ~@5", D: "e4 ~@2 c5@5, c5@3 ~@5, g4 g4@3, ~ e4@7", E: "~@3 g4@5, ~ e4@7, ~ c5@3",
  F: "[~@4 [g3,bb3,d4]@2 [g3,bb3,d4]@6 [bb3,d4,f4] ~ [a3,c4,f4]@18]/2", G: "~@10 a3 [a3,c4,f4]!2 ~@3",
  H: "~@9 [c4,f4] ~ [c4,f4] [a3,c4,f4] ~@3", I: "~@10 [c4,f4] a3 [a3,c4,f4] ~@3",
  J: "~@6 a3@9 ~, ~ f4@6 ~, ~@4 c4@11 ~", K: "d4@6 eb4@2 bb4@5 ~@3", L: "~@3 c4@4 ~", M: "~ d4@2 eb4@3 ~@2",
  N: "~@3 [a3,c4,f4]@5", O: "~@2 d4@2 eb4@2 bb4@9 ~", P: "~@2 a3@2 ~@2 f4@9 ~, ~@4 c4@11 ~",
  Q: "~@2 d4@2 eb4 ~ [d4,eb4,bb4]@8 ~@2", R: "~@6 [a3,c4,f4]@9 ~", S: "~@6 bb4@7 ~@3, ~ d4@6 ~, ~@4 eb4@9 ~@3",
  T: "[~@3 [a3,c4,f4]@8 ~@5]/2", U: "~@9 [a3,c4,f4]!2 [c4,f4] [a3,c4,f4] [a3,c4,f4]@2 ~",
  V: "~@9 [c4,f4] [a3,c4,f4]!3 [a3,c4,f4]@2 ~", W: "~ d4 eb4 bb4@4 ~", X: "~@2 d4@2 eb4 ~ [d4,eb4,bb4]@7 ~@3",
  Y: "~ d4 eb4 [d4,eb4,bb4]@4 ~", Z: "~@2 d4@2 eb4@2 [d4,eb4,bb4]@7 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.16)

// chords · acoustic guitar steel · "Chit. El 1" · soft notes
const acoustic_guitar_steel_2 = note("<~@2 A ~@44 B ~ C ~ D ~@4 E ~@15 F ~@23>".pickRestart({
  A: "~@2 f3@3 ~@3", B: "~@9 c4!2 ~@5", C: "~@9 a3 [a3,c4,f4] a3 ~@4", D: "~@9 [a3,c4,f4] a3 [c4,f4] ~@4",
  E: "~@3 [a3,f4]@4 ~", F: "~@11 a3 ~@4",
})).s("gm_acoustic_guitar_steel").gain(0.1)

// chords · acoustic guitar nylon · "Chit. El 2" · Gm
const acoustic_guitar_nylon = note(`<
  ~@4
  [~ g4@3, d4, ~ bb3@7]
  [~@3 e4@5, ~ a3@7, ~ c4@3]
  [~@4 [g3,bb3,d4]@2 [g3,bb3,d4]@9 ~]
  [~@3 f4@5, c3, ~ g3@7, ~ a3@3]
  ~@88
>`).s("gm_acoustic_guitar_nylon").gain(0.17)

// chords · string ensemble 2 · "Strings 2" · Gm
const string_ensemble_2 = note("<~@24 [~@4 [g4,bb4,d5]@5 ~@7] ~ [~@4 [g4,bb4,d5]@5 ~@7] ~@69>")
  .s("gm_string_ensemble_2").gain(0.28)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A C D A B A B A ~ D A B A B A B A B A B A E D A B A B A B A C D F G F G F G F H@2 I B I B J@3 A B A B
  A B A E K F G F G F G F H@4 L H L H L J M H L N ~@4
>`.pickRestart({
  A: "x ~@3 x ~@2 x", B: "~@15 x", C: "~@10 x ~@4 x", D: "x ~@9 x ~@4 x", E: "~@5 x ~@2", F: "x!2 ~ x!2 ~@3",
  G: "x ~ x ~@3 x ~@8 x", H: "x ~@2 x ~@4", I: "x ~@2 x!2 ~@2 x", J: "x ~@2 x ~@3 x", K: "x ~@4 x ~@2",
  L: "x ~@5 x ~@8 x", M: "~@6 x ~@8 x", N: "x ~@2 x ~ x!3",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct(`<
  ~@8
  [~ x ~ x]!14
  [~@4 x ~@7 x ~@2 x]
  [~ x ~ x]!65
  [~@4 x ~@5 x ~@2 x ~@2]
  [~ x ~ x]!2
  [~ x ~@2]
  ~@4
>`).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@7 [~@3 x] [x!8]!47 ~@7 [x!8]!16 [~ x!2 ~ x!4]!3 ~@15>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@7 [~@7 x] ~@88>").gain(0.25)
// … 20 more lines

More by Simply Red