Strudelify
Sleeping Satellite cover art

1992 · Great Expectations

Sleeping Satellite

Tasmin Archer

KeyF minorTempo104 bpm
0:00/0:00
// Sleeping Satellite — Tasmin Archer
// 104 bpm, 4/4, key F minor. 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 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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 · drawbar organ
const drawbar_organ = note("<~@49 A B ~@32 C D E ~ F G H@2 ~ I J@2 ~ K L M@5 N O ~@9>".pickRestart({
  A: "f6@10 eb6 c6 eb6 c6 eb6 c6", B: "bb5 ab5 f5@2 ab5@4 f5@7 ~",
  C: "~@2 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5", D: "bb5@5 ~ bb5@2 ab5@8",
  E: "g5@2 eb5 bb4@5 bb4 g4 f4 eb4 bb3@4", F: "~ bb5@7", G: "~@6 eb6@8 f6 eb6", H: "[g6 eb6@3 c6@9 f6@16 ~@3]/2",
  I: "~@5 f4@2 [bb4,eb5] ~ c5 ~@2 [f4,bb4]@2 [g4,c5]@2", // Eb5 Bb5 C5
  J: "[~ [bb4,eb5] ~ [bb4,eb5] ~ f4@2 [bb4,eb5] ~ [bb4,eb5] ~@2 eb5 c5 eb5@11 ~@7]/2", K: "eb5 f5@13 ~@2",
  L: "~@8 c5@2 f5 d5 ~ d5@2 c5",
  M: "[c5 g4 bb4 c5 bb4@2 f4 g4 f4@2 eb4 c4 eb4 f4 eb4@4 ~ c4 ~ c4 eb4 c4 eb4@2 eb4@4 c4@7 ~@8 c5 f5@10 ~@2 f5 ~ f5@2 eb5 c5@6 f4@2 [bb4,eb5] ~ c5@7, ~@73 g4@2 ~@5]/5", // Eb5
  N: "~@3 f4@2 [bb4,eb5] ~ c5@2 f4@2 [bb4,eb5] ~ [bb4,eb5]@2 [g4,c5], ~@7 g4 ~@8", O: "~@9 bb5@7",
})).s("gm_drawbar_organ").gain(0.4).pan(0.1)

// chords · epiano1
const epiano1 = note("<~@8 A@3 ~@103>".pickRestart({
  A: "[~ f5@13 ~@3 f5@21 ~@10, [db4,f4,bb4,c5]@15 [eb4,g4]@23 ~@10, ~@8 [bb4,c5]@11 ~@5]/3", // Bbm Eb Bbsus2
})).s("gm_epiano1").gain(0.22).pan(0.7)

// chords · piano
const piano = note(`<
  ~@11 A B C D E B C F G H I@2 J K L@2 M N@2 O@2 P@2 O@2 Q@2 G H R@2 J K L@2 M N@2 S@2 T U V@2 T W O@2 P@2 O@2 Q@2 G H
  I@2 J K L@2 M N@2 G H I@2 J K L@2 M X@2 H I@2 J K L@2 M X@2 H R@2 J K L@2 M Y Z@2 ~@6
>`.pickRestart({
  A: "[f2,f3,ab3,c4,f4]", B: "[eb2,g3,bb3,eb4,f4]", C: "[db2,f3,ab3,db4,f4]", D: "[eb2,g3,bb3,eb4,f4]@15 ~",
  E: "[f2,f3,c4,f4], ab3@7 ~", // F5
  F: "[g3,bb3,eb4,g4]@5 ~@3 ab2@2 g2@2 [g3,bb3,eb4]@2 c2 ~, c2@2 ~ [eb2,g4], ~@6 [g3,bb3,eb4,g4]@5 ~@5", // Eb
  G: "[c3,f3,ab3]@5 ~ [ab3,c4,f4]@2, [f1,f2]@3 ~", H: "[f3,bb3,d4]@11 ~ [f3,bb3,d4]@3 ~",
  I: "[[g3,c4,eb4]@14 ~@2 [g3,eb4,g4]@6 ~@6 [g3,c4,eb4]@3 ~, ~@7 c3@6 c3@2 ~, ~@11 [g3,d4,f4]@3 ~@2]/2", // Cm G7
  J: "[f2,f3,ab3,c4,f4]@3 [f3,ab3,c4]", K: "[f3,bb3,d4]@15 ~, ab3 ~@15",
  L: "[[g3,c4,eb4]@7 ~@7 [g3,c4,eb4] ~, ~@14 c3@5 ~ c3@5 ~ c3@4 ~@2, ~@8 [g3,eb4,g4]@3 [g3,d4,f4]@3 ~@2]/2", // Cm G7
  M: "[f3,ab3,db4,f4]@11 ~ [f3,ab3,db4,f4]@3 ~", N: "[[g3,bb3,eb4,g4]@15 ~]/2",
  O: "[[ab3,c4,f4]@3 f4 [eb2,g3,bb3,eb4]@4, [f2,f3]@2 f4 ~, ~@3 [ab3,c4]@3 ~@2]/2", // Fm Eb F Ab
  P: "[[ab3,f4]@12 [c4,f4]@4 [eb2,g3,bb3,eb4]@15 ~, [db2,f3,db4]@2 f4 ~, ~@3 ab3@3 ~@2]/2", // Db F5 Eb Db
  Q: "[[ab3,f4]@12 c4@3 ~ [g3,bb3,eb4,g4]@5 ~ [g3,bb3,eb4,g4]@5 ~ [g3,bb3,eb4,g4]@3 ~, [db2,f3,db4]@2 c2 ~, ~@3 [ab3,f4]@3 ~@2]/2", // Db Eb Db
  R: "[[g3,c4,eb4]@14 ~@2 [g3,eb4,g4]@5 ~@7 [g3,c4,eb4]@3 ~, ~@7 c3@6 c3@2 ~, ~@11 [g3,d4,f4]@3 ~@2]/2", // Cm G7
  S: "[[f3,ab3,c4]@27 ~ [f3,ab3,c4]@3 ~]/2", T: "[g3,bb3,d4]@7 ~", U: "[ab3,c4,eb4]@13 ~@3",
  V: "[[f3,ab3,c4]@23 ~ [ab3,c4,f4]@4 [f3,ab3,c4]@4]/2", // Fm
  W: "[ab3,c4,eb4] ~ [ab3,c4]@2 ~@4 [g3,bb3,d4] ~ [g3,bb3,d4] ~@5, ~@2 eb4 ~@13", // Ab Gm
  X: "[~@8 [c3,f3,ab3]@5 ~ [ab3,c4,f4]@2, [g3,bb3,eb4,g4]@15 ~, ~@4 [f1,f2]@3 ~]/2", Y: "[g3,bb3,eb4,g4]@7 ~",
  Z: "[g3,c4,eb4,g4]/2", // Cm
})).s("gm_piano").gain(0.4).pan(0.7)

// chords · drawbar organ
const drawbar_organ_2 = note("<~@65 A B C D E F G H I J K L@2 ~@36>".pickRestart({
  A: "~ [ab5,c6]!2 f5 [ab5,c6]@2 f5 [bb5,d6]@2 f5 [ab5,c6] f5 ~@4", // Ab Bb Ab
  B: "~ f5 [bb5,d6] ~ [bb5,d6]@2 f5 [d6,f6]@2 f5 [bb5,d6] ~ [bb5,d6]@2 f5 [bb5,d6]", // Bb Dm Bb
  C: "[c6,eb6] g5 [c6,g6] ~ [c6,g6]@2 g5 [d6,f6]@2 g5 [c6,eb6] ~ [c6,eb6]@2 g5 eb6", // Cm C5 Dm Cm
  D: "c6 g5 bb5 g5 eb5 g5 d5 c5 d5 g4 c5@4 d5 ~", E: "~@2 f4 ab4 c5 ab4 c5 f5 c5 f5 ab5 f5 ab5@2 [f5,ab5,c6,eb6] ~",
  F: "~@2 [bb5,d6] ~ [bb5,d6]@2 f5 [d6,f6]@2 f5 [c6,eb6] ~ [c6,eb6]@2 f5 c6", // Bb Dm Cm
  G: "eb6 [ab5,c6] g5 bb5 c6 bb5 g5 eb5 g5 [d5,eb5] c5 ~ c5@2 g4 c5", // Ab Ebmaj7
  H: "[d5,g5] [c5,g5]@2 g4 [f5,g5,c6] eb5 c5 g4 [d5,eb5] ~ eb5 g4 d5 c5 g4 eb4, eb5@3 ~@5 g5@2 ~@6, ~@9 c5@2 ~ [eb5,g5]@2 ~@2", // G5 C5 Fsus2 Ebmaj7 Eb
  I: "db4@2 f5 ab5 c6 f5 [ab5,c6,f6] [ab5,c6,f6]@3 [ab5,c6,g6] ~ [c6,g6]@2 [ab5,c6,f6] ~, ~@12 ab5 ~@3", // Fm Abmaj7 C5 Fm
  J: "~@2 eb6 bb5 g5 eb5 ~ g5 eb5 bb4 eb5 g4 bb4 eb5 bb4 g4, ~@3 bb5 ~@4",
  K: "eb4 bb4 eb5 bb4 eb5 g5 eb5 g5 bb5 eb5 ~ [bb5,eb6] [g5,bb5,eb6]@4, ~@5 g5 ~@2", L: "[[c5,f5] ~, ab4]/2",
})).s("gm_drawbar_organ").gain(0.32).pan(0.7)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C@2 A B C@2 D E F G H I J K L M N G O P@2 Q O R S T U V W J I J X J M N Y O P@2 Q O Z AA AB U V AC AD AE AF AD@2
  AE AG AH J I J X AI M AJ G O P@2 AK AL R AM AB AN AO AP O P@2 Q O R AA AQ AN W O AR P AS O AT S AU U AP O P AR AS AL
  AT AV AB AW@8 ~
>`.pickRestart({
  A: "f3@3 f3 f3@2 f3@4 f3@2 f3@2 f3@2, [ab3,c4,f4]@3 [ab3,c4,f4]@3 [ab3,c4,f4]@2", // Fm
  B: "f3@2 ~@3 f3!3, [bb3,d4,f4]@3 [bb3,d4,f4]@3 [bb3,d4,f4]@2, ~@2 f3@3 ~@3", // Bb
  C: "[g3@2 g3 g3@2 g3!3 g3@2 g3 g3@2 g3!3, [bb3,c4,eb4]@3 [bb3,c4,eb4]@3 [c4,eb4]@5 ~@5, ~@6 bb3@2 bb3@3 [bb3,c4,eb4]@3 [bb3,c4,eb4]@2]/2", // Cm7 Cm Cm7
  D: "f3@2 f3 f3@2 ~@2 f3, [ab3,c4,f4]@3 [ab3,c4,f4]@3 [ab3,c4,f4]@2, ~@5 f3@2 ~", // Fm
  E: "~@2 eb4@4 f3@3 f3 f3@2 f3@2 f3@2, [f3,bb3,f4]@3 eb4@5, ~@3 [bb3,f4]@3 [bb3,f4]@2", // Bb5
  F: "[bb3,eb4,f4]@3 [bb3,eb4,f4]@3 [f3,bb3,eb4,f4]@2, f3@3 ~", // Bbsus4 Ebsus2
  G: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [f3,ab3] ~, ~@3 [c4,f4] f3@3 ~, ~@7 ab3@2 ~@7", // Fm F5
  H: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 ~@2 [g3,bb3,f4]@2 g3@3 [eb3,g3] ~, ~@3 [bb3,f4] eb3@3 ~, ~@7 g3@2 ~@2 [bb3,f4]@5", // Gm7 Eb Bb5
  I: "[f3,ab3,f4]@3 [f3,ab3,c4,f4]@3 ab3 ~ f3 [f3,ab3,c4,f4]@2 [f3,ab3]@3 [f3,ab3]@2, ~@6 [f3,c4,f4]@3 ~@7, ~@7 ab3@2 ~@2 [c4,f4]@5", // Fm F5
  J: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 ~@2 [g3,bb3,f4]@2 g3@3 [eb3,g3]@2, ~@3 [bb3,f4] eb3@3 ~, ~@7 g3@2 ~@2 [bb3,f4]@5", // Gm7 Eb Bb5
  K: "[f3,ab3,c4,f4]@3 [f3,ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [f3,ab3,c4,f4]@3 [f3,ab3] ~, ~@6 [f3,c4,f4]@2 f3@3 ~@5, ~@7 ab3@2 ~@7", // Fm F5
  L: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 ~@2 [g3,bb3,f4]@2 [g3,bb3,f4]@3 [eb3,g3] ~, ~@3 [bb3,f4] eb3@3 ~, ~@7 g3@2 ~@7", // Gm7 Eb Bb5
  M: "[f3,ab3,f4]@3 [f3,ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [f3,ab3]@3 [f3,ab3]@2, ~@6 [f3,c4,f4]@2 f3@3 ~@5, ~@7 ab3@2 ~@2 [c4,f4]@5", // Fm F5
  N: "[g3,bb3,eb4]@3 [g3,bb3,eb4]@3 g3 ~@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 ~ [eb3,bb3,eb4]@2, ~@3 [bb3,eb4] eb3@3 ~, ~@7 g3@2 ~@4 g3@3", // Eb Eb5
  O: "[d4,f4]@3 [bb3,d4,f4]@3 bb3 ~@2 [bb3,d4,f4]@2 bb3@3 [f3,bb3]@2, f3@7 bb3@2 ~@2 [d4,f4]@5, ~@3 [d4,f4] f3@3 ~", // Dm Bb Bb5 Dm
  P: "[g3,bb3,eb4]@3 [g3,bb3,eb4]@3 bb3 ~ g3 [g3,bb3,eb4]@2 [g3,bb3]@3 [g3,bb3]@2, ~@6 [g3,eb4]@3 ~@7, ~@7 bb3@2 ~@2 eb4@5", // Eb Gm Cm
  Q: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 ab3@3 [f3,ab3]@2, g3, ~@3 [c4,f4] f3@3 ~, ~@7 ab3@2 ~@2 [c4,f4]@5", // Fm F5
  R: "[g3,bb3,g4]@3 [g3,bb3,eb4,g4]@3 bb3 ~ g3 [g3,bb3,eb4,g4]@2 [g3,bb3]@3 [g3,bb3]@2, ~@6 [g3,eb4,g4]@3 ~@7, ~@7 bb3@2 ~@2 [eb4,g4]@5", // Gm Eb Gm Cm Eb
  S: "[g3,bb3,g4]@3 [g3,bb3,eb4]@3 bb3 ~ g3 [g3,bb3,eb4]@2 [g3,bb3]@3 [g3,bb3]@2, ~@3 g4@13, ~@6 [g3,eb4,f4]@3 ~@2 eb4@5, ~@7 bb3@2 f4@7", // Gm Eb Gm Cm
  T: "[f3,ab3,db4,f4]@3 [ab3,db4,f4]@3 ab3 ~@2 [ab3,db4,f4]@2 ab3@3 [f3,ab3]@2, ~@3 [db4,f4] f3@3 ~, ~@7 ab3@2 ~@2 [db4,f4]@5", // Db Fm Db
  U: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 g3@2 [g3,bb3,f4]@2 g3@3 g3@2, ~@6 [bb3,f4]@3 ~@2 [bb3,f4]@5", // Gm7 Bb5
  V: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 g3@2 [g3,bb3,f4]@2 g3@3 g3@2, f3, ~@6 [bb3,f4]@3 ~@2 [bb3,f4]@5", // Gm7 Bb5
  W: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 ab3@3 [f3,ab3]@2, f3@7 ab3@2 ~@2 [c4,f4]@5, ~@3 [c4,f4] f3@3 ~", // Fm F5
  X: "[f3,ab3,c4,f4]@3 [f3,ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [f3,ab3]@3 [f3,ab3]@2, ~@6 [f3,c4,f4]@2 f3@3 ~@5, ~@7 ab3@2 ~@2 [c4,f4]@5", // Fm F5
  Y: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [f3,ab3]@2, ~@3 [c4,f4] f3@3 ~, ~@7 ab3@2 ~@7", // Fm F5
  Z: "[g3,bb3,g4]@2 ~ [g3,bb3,eb4,g4]@3 bb3 ~ g3 [g3,bb3,eb4,g4]@2 [g3,bb3]@3 [g3,bb3]@2, ~@6 [g3,eb4,g4]@3 ~@7, ~@7 bb3@2 ~@2 [eb4,g4]@5", // Gm Eb Gm Cm Eb
  AA: "[g3,bb3,g4]@3 [g3,bb3,eb4]@3 bb3 ~ g3 [g3,bb3,eb4]@2 [g3,bb3]@3 [g3,bb3]@2, ~@3 g4@12 ~, ~@6 [g3,eb4,f4]@3 ~@2 eb4@5, ~@7 bb3@2 f4@6 ~", // Gm Eb Gm Cm
  AB: "[ab3,db4,f4]@3 [ab3,db4,f4]@3 ab3 ~@2 [ab3,db4,f4]@2 [ab3,db4,f4]@3 [f3,ab3] ~, f3@7 ab3@2 ~@7, ~@3 [db4,f4] f3@3 ~", // Db Fm Db
  AC: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ab3@8 ~, f3@15 ~, ~@6 [c4,f4]@9 ~", // Fm F5
  AD: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ab3@9, ~@3 [c4,f4]@5", // Fm F5
  AE: "[bb3,d4,g4]@3 [bb3,d4,g4]@3 bb3 bb3@9, ~@3 [d4,g4]@5", // Gm G5
  AF: "[c4,eb4,ab4]@3 [c4,eb4,ab4]@3 c4 c4@9, ~@3 [eb4,ab4]@5", AG: "[c4,eb4,ab4] [bb3,d4,g4]",
  AH: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 ab3@3 [f3,ab3]@2, ~@3 [c4,f4] f3@3 ~, ~@7 ab3@2 ~@2 [c4,f4]@5", // Fm F5
  AI: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 ~@2 [g3,bb3,f4]@2 [g3,bb3,f4]@3 [eb3,g3]@2, ~@3 [bb3,f4] eb3@3 ~, ~@7 g3@2 ~@7", // Gm7 Eb Bb5
  AJ: "[g3,bb3,eb4]@3 [g3,bb3,eb4]@3 g3 ~@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 ~ [eb3,bb3,eb4] ~, ~@3 [bb3,eb4] eb3@3 ~, ~@7 g3@2 ~@4 g3@2 ~", // Eb Eb5
  AK: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [f3,ab3]@2, g3, ~@3 [c4,f4] f3@3 ~, ~@7 ab3@2 ~@7", // Fm F5
  AL: "[d4,f4]@3 [bb3,d4,f4]@3 bb3 ~@2 [bb3,d4,f4]@2 bb3@3 [f3,bb3] ~, f3@7 bb3@2 ~@2 [d4,f4]@5, ~@3 [d4,f4] f3@3 ~", // Dm Bb Bb5 Dm
  AM: "[g3,bb3,g4]@2 ~ [g3,bb3,eb4]@3 bb3 ~ g3 [g3,bb3,eb4]@2 [g3,bb3]@3 [g3,bb3]@2, ~@3 g4@12 ~, ~@6 [g3,eb4,f4]@3 ~@2 eb4@5, ~@7 bb3@2 f4@6 ~", // Gm Eb Gm Cm
  AN: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 g3@2 [g3,bb3,f4]@2 [g3,bb3,f4]@3 g3 ~, ~@6 [bb3,f4]@3 ~@7", // Gm7 Bb5
  AO: "[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 g3@2 [g3,bb3,f4]@2 [g3,bb3,f4]@3 g3 ~, f3@15 ~, ~@6 [bb3,f4]@3 ~@7", // Gm7 Bb5
  AP: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [f3,ab3] ~, f3@7 ab3@2 ~@7, ~@3 [c4,f4] f3@3 ~", // Fm F5
  AQ: "[ab3,db4,f4]@3 [ab3,db4,f4]@3 ab3 ~@2 [ab3,db4,f4]@2 [ab3,db4,f4]@3 [f3,ab3]@2, f3@7 ab3@2 ~@7, ~@3 [db4,f4] f3@3 ~", // Db Fm Db
  AR: "[g3,bb3,eb4]@3 [g3,bb3,eb4]@3 bb3 ~ g3 [g3,bb3,eb4]@2 [g3,bb3]@3 [g3,bb3] ~, ~@6 [g3,eb4]@3 ~@7, ~@7 bb3@2 ~@2 eb4@5", // Eb Gm Cm
  AS: "[ab3,c4,f4]@3 [ab3,c4,f4]@3 ab3 ~@2 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [f3,ab3] ~, g3@15 ~, ~@3 [c4,f4] f3@3 ~, ~@7 ab3@2 ~@7", // Fm F5
  AT: "[g3,bb3,g4]@3 [g3,bb3,eb4,g4]@3 bb3 ~ g3 [g3,bb3,eb4,g4]@2 [g3,bb3]@3 [g3,bb3] ~, ~@6 [g3,eb4,g4]@3 ~@7, ~@7 bb3@2 ~@2 [eb4,g4]@5", // Gm Eb Gm Cm Eb
  AU: "[ab3,db4,f4]@3 [ab3,db4,f4]@3 ab3 ~@2 [ab3,db4,f4]@2 ab3@3 [f3,ab3]@2, f3@7 ab3@2 ~@2 [db4,f4]@5, ~@3 [db4,f4] f3@3 ~", // Db Fm Db
  AV: "[g3,bb3,g4]@3 [g3,bb3,eb4]@3 bb3 ~ g3 [g3,bb3,eb4]@2 [g3,bb3]@3 [g3,bb3] ~, ~@3 g4@12 ~, ~@6 [g3,eb4,f4]@3 ~@2 eb4@5, ~@7 bb3@2 f4@6 ~", // Gm Eb Gm Cm
  AW: "[[g3,bb3,f4]@3 [g3,bb3,f4]@3 g3 g3@2 [g3,bb3,f4]@2 g3@3 g3@32 ~@82, ~@6 [bb3,f4]@3 ~@2 [bb3,f4]@117]/8", // Gm7 Bb5
})).s("gm_acoustic_guitar_nylon").gain(0.3).pan(0)

// bass · fretless bass
const bass = note(`<
  ~@10 A B C D E F G H I J K L M N O P Q R S T U V W X Y V Z AA J K L M N O P Q R AB T U AC AD AE AC@2 AD AF U V W X Y V
  Z AA J K L M N O P Q R AB T AG AH AI AJ AK AL AI AM AN AO AP AQ AR AS AT AU AV AW AX AY AP AQ AR AS AT AU AV AW AX AY
  ~@8
>`.pickRestart({
  A: "~@4 eb3 d3 c3 g2", B: "f3", C: "eb3", D: "db3", E: "eb3@14 c3 ab2", F: "f2", G: "eb3@3 db3", H: "db3@7 bb2",
  I: "c3@7 ~ ab3@2 g3@2 eb3@2 c3@2", J: "f2@2 ~ f2 ~ f2 f2@4 g2@2 ab2@2 c3@2",
  K: "bb2@2 ~ bb2 ~ f2 bb2@4 ~ bb2 g2@2 bb2 g2", L: "c3@2 ~ c3 ~ g2 c3@9 g2", M: "c3@3 c3 ~ g2 c3@4 ~ c3 eb3 d3 c3 ab2",
  N: "f2@3 f2 ~ f2 f2@4 g2@2 ab2@2 c3@2", O: "bb2@2 ~ bb2 ~ f2 bb2@5 bb2 g2@2 bb2 g2",
  P: "c3@2 ~ c3 ~ g2 c3@6 g2!2 bb2 ~", Q: "c3@2 ~ c3 ~ g2 c3@4 ~ c3 eb3 d3 c3 ab2",
  R: "db3 ~ ab2 db3 ~ ab2 db3@5 db3 bb2!2 db3@2", S: "eb3 ~ bb2 g2 ~ f2 eb2@5 eb2@2 eb2!2 ~",
  T: "eb2 ~ eb2 eb2@2 eb2 eb2@10", U: "f3@2 ~ f2 ~ f2 f2@3 ~@7", V: "eb3@3 f2 ~ f2 f2@3 ~@7",
  W: "db3@3 f2 ~ f2 f2@3 ~@7", X: "eb3@2 ~ f2 ~ f2 f2@3 ~@7", Y: "f3@3 f2 ~ f2 f2@3 ~@7",
  Z: "db3@3 f2 ~ f2 f2@3 ~@5 db3 bb2", AA: "c4@3 c3@3 c4 ~ c4@2 c3@2 eb3 d3 c3 ab2",
  AB: "eb3@2 bb2 g2 ~ f2 eb2@5 eb2@2 eb2!2 ~", AC: "f2@2 ~ f2 ~ f2 f2@3 ~@7", AD: "g2@2 ~ g2 ~ g2 g2@3 ~@7",
  AE: "ab2@2 ~ ab2 ~ ab2 ab2@3 ~ bb2@2 c3@2 eb3 c3", AF: "ab2!2 ~@2 g2!2 ~@2",
  AG: "f2 ~ f2!3 ~ f2!3 ~ f2!2 ~ f2 ab2 f2", AH: "bb2@2 bb2!3 ~ bb2!3 ~ bb2!2 ~ g2 bb2 g2",
  AI: "c3 ~ c3!3 ~ c3!3 ~ c3 c3@2 g2 bb2 g2", AJ: "c3 ~ c3!2 c3@2 c3!3 ~ c3 eb3@2 d3 c3 ab2",
  AK: "f2@2 f2!3 ~ f2!2 f2@2 f2!2 ~ f2 ab2 f2", AL: "bb2 ~ bb2!3 ~ bb2!3 ~ bb2!2 ~ g2 bb2 g2",
  AM: "c3 ~ c3!3 ~ c3!3 ~ c3!2 ~ c3 eb3 c3", AN: "db3 ~ db3!3 ~ db3!2 db3@2 ab2!2 f2@2 db2!2",
  AO: "eb2@2 eb2!2 eb2@2 eb2 eb2@2 eb2 g2 eb2 bb2 eb2!2 g2", AP: "f2@2 f2!3 ~ f2!2 g2 ~ g2!2 ab2 ~ ab2!2",
  AQ: "bb2@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2 bb2@2 g2 bb2 g2", AR: "c3@2 c3!3 ~ c3!2 c3@2 bb2 c3@2 g2 bb2 g2",
  AS: "c3 ~ c3!3 ~ c3!2 c3@2 c3 eb3@2 d3 c3 ab2", AT: "f2@2 f2!2 f2@2 f2!3 ~ f2!2 ~ f2 ab2 f2",
  AU: "bb2@2 bb2!3 ~ bb2!3 ~ bb2 bb2@2 g2 bb2 g2", AV: "c3@2 c3!3 ~ c3!2 c3@2 c3 c3@2 g2 bb2 g2",
  AW: "c3 ~ c3!2 c3@2 c3!2 c3@2 c3!2 ~ c3 eb3 c3", AX: "db3 ~ db3!3 ~ db3!3 ~ db3 db3@2 ab2 db3 ab2",
  AY: "eb3@2 eb3!3 ~ eb3!2 ~ eb3 bb2!2 g2!2 eb2!2",
})).s("gm_fretless_bass").gain(0.54).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@11
  [x!2 ~@3 x ~@2]!7
  [x ~ x ~@7 x!2 ~@4]
  [x ~ x!2 ~@2 x ~@3 x ~@4 x]!30
  [x!2 ~@3 x ~@2]!7
  [x!2 ~@2 x!2 ~@2]
  [x ~ x!2 ~@2 x ~@3 x ~@4 x]!49
  ~@8
>`).gain(0.56)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@11 [~@9 x ~@6]!7 ~ [~@9 x ~@6]!37 ~ [~@9 x ~@6]!49 ~@8>").gain(0.24)

// drums · snare
const snare = s("sd").struct(`<
  ~@11 A@7 B C@2 D C@4 E C A F C@2 D C@4 G C@2 D C@4 E C A F A@3 F H A@2 ~ C@2 D C@4 G C@2 D C@4 E C A F C@2 D C@4 E C A
  C@2 D C@4 E C A C@2 D C@4 E C I ~@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~ x", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@2 x ~@4 x ~@2 x",
  E: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", F: "~@4 x ~@2 x ~@4 x!2 ~@2", G: "~@4 x ~@2 x ~ x ~ x!2 ~ x!2",
  H: "~ x ~@2 x ~@7 x ~@3", I: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@11 A@3 B A@3 C ~@18 D ~@11 A@3 E F A@2 ~@8 D ~@49>".pickRestart({
  A: "~@7 x ~@7 x", B: "~@7 x ~@5 x!3", C: "~@7 x ~@8", D: "~@10 x ~@2 x ~@2", E: "~@14 x!2", F: "~@15 x",
})).gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@11
  [x!3 ~ x ~ x!3 ~ x ~ x!3 ~]!8
  [x!11 ~ x!3 ~]!30
  [x!7 ~]!7
  [x ~ x ~ x!3 ~ x ~ x ~ x!2 ~@2]
  [x!11 ~ x!3 ~]!49
  ~@8
>`).gain(0.4)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  ~@11
  [~@3 x ~ x ~@3 x ~@6]!8
  ~@30
  [~ x ~ x ~ x ~ x ~ x ~@3 x!2 ~]!7
  [~ x ~ x ~@3 x ~ x ~@4 x!2]
  ~@57
// … 32 more lines

More by Tasmin Archer