Strudelify

Don't Let It Show

Alan Parsons

KeyD♭ majorTempo130 bpm
0:00/0:00
// Don't Let It Show — Alan Parsons
// 130 bpm, 4/2, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "String Lead 1" fretless bass (copy of ch 2 "Church Organ Lead" electric bass finger); ch 7 "Strings3 Lead" synth strings 2 (copy of ch 6 "String Lead 2" string ensemble 2); ch 6 "String Lead 2" acoustic bass (copy of ch 7 "Strings3 Lead" synth strings 1)
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/8)

// 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 · muted trumpet · "Sax Melody"
const muted_trumpet = note("<~@50 A B A B C D C D E F E F E F E F E F>".pickRestart({
  A: "[e4,ab4,b4]@3 [gb4,a4,db5]@3 [ab4,b4,d5]@4 [a4,db5,e5]@5 ~", // E Gbm Abdim A
  B: "~@2 [e4,ab4,b4] [gb4,a4,db5]@2 [ab4,b4,d5]@2 [a4,db5,e5]@2 [ab4,b4,d5]@2 [gb4,a4,db5]@2 [e4,ab4,b4]@2 ~", // E Gbm Abdim A Abdim Gbm E
  C: "[gb4,a4,db5]@3 [ab4,b4,eb5]@3 [a4,db5,e5]@4 [b4,eb5,gb5]@5 ~", // Gbm Abm A B
  D: "~ [gb4,a4,db5]@2 [ab4,b4,eb5]@2 [a4,db5,e5]@2 [b4,eb5,gb5]@2 [a4,db5,e5]@2 [ab4,b4,eb5]@2 [gb4,a4,db5]@2 ~", // Gbm Abm A B A Abm Gbm
  E: "[ab4,b4,eb5]@3 [bb4,db5,f5]@3 [b4,eb5,gb5]@4 [db5,f5,ab5]@5 ~", // Abm Bbm B Db
  F: "~ [ab4,b4,eb5]@2 [bb4,db5,f5] [bb4,eb5,gb5]@2 [db5,f5,ab5]@2 [bb4,eb5,gb5]@2 [bb4,db5,f5]@2 [ab4,b4,eb5]@3 ~", // Abm Bbm Ebm Db Ebm Bbm Abm
})).s("gm_muted_trumpet").gain(0.72)

// chords · church organ · "Church Organ Lead"
const church_organ = note(`<
  A B C D E F G H E I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AA AO AP AQ@2 AR AS
  AT ~@18
>`.pickRestart({
  A: "[db4,ab4,db5,f5]@8 eb5 f5 eb5 ab5@2 f5 eb5@2, ~@8 [c4,ab4]@7 ~", // Db Fm
  B: "[bb3,f4,bb4,db5]@7 ~ c5 db5 c5 f5@2 db5 c5@2, ~@8 [ab3,f4]@7 ~", // Bbm Db
  C: "bb4@3 c5@3 db5@2 db5@2 f5@2 eb5@2 db5@2, [bb3,db4,f4,g4]@15 ~", // Gm7b5
  D: "[ab3,eb4]@4 [ab3,c4]@3 [ab4,c5], [ab4,db5]@13 ~@3", E: "[db4,ab4,db5,f5]@7 ~ [c4,ab4,eb5]@7 ~",
  F: "[bb3,f4,bb4,db5]@7 ~ [ab3,f4,c5]@7 ~", G: "[bb3,eb4,bb4,db5,f5]@7 ~ [bb3,db4,db5,g5,bb5]@7 ~",
  H: "[eb4,db5,gb5,bb5]@7 ~ [eb4,c5,gb5,ab5]@7 ~, ab3@15 ~", I: "[bb3,f4,bb4]@7 ~ [ab3,f4,bb4]@7 ~, db5@15 ~",
  J: "[[g3,bb4,db5,f5]@7 ~ [g3,db5,f5]@7 ~ [ab3,db5]@7 ~ [ab3,c5,eb5,ab5]@7 ~, ~@8 bb5@15 ~@9, ~@16 gb5@15 ~]/2", // Gm7b5 Db5 Ab
  K: "[bb2,bb3,f4,bb4]@7 ~ [ab2,ab3,f4,bb4]@7 ~", L: "[g2,g3,eb4,bb4]@7 ~ [eb2,eb3]@7 ~",
  M: "[ab2,ab3,eb4,ab4]@7 ~ [gb2,gb3,eb4,ab4]@7 ~", N: "[f2,f3,db4,ab4]@7 ~ [db2,db3,f4,ab4,db5]@7 ~",
  O: "[bb2,ab3,f4,bb4]@7 ~ [f3,c4,eb4]@7 ~", P: "[gb2,gb3,gb4,bb4]@7 ~ [ab2,ab3,gb4,bb4,eb5]@7 ~",
  Q: "[db3,db4,ab4,db5,f5]@7 ~ [c3,c4,ab4,eb5]@7 ~", R: "[bb2,bb3,f4,bb4,db5]@7 ~ [ab2,ab3,f4,c5]@7 ~",
  S: "[g3,f4,g4,bb4]@7 ~ [g3,f4,g4,bb4]@7 ~, db5@15 ~", T: "[ab3,f4,ab4,bb4]@7 ~ [ab3,f4,ab4,bb4]@7 ~, db5@15 ~",
  U: "[ab3,eb4,gb4,bb4,db5]@7 ~ [ab2,ab3,gb4,bb4,db5,gb5]@7 ~", // Ebm7 Gb
  V: "[db2,db3]@2 [db2,db3]@3 [db2,db3,ab4,db5,f5]@3 [c2,c3]@2 [c2,c3]@3 [c2,c3,ab4,c5,eb5]@3, [ab4,db5,f5]@5 ~@3 [ab4,c5,eb5]@5 ~@3", // Db C Ab Db Ab
  W: "[bb1,bb2]@2 [bb1,bb2]@3 [bb1,bb2,f4,bb4,db5]@3 [ab1,ab2]@2 [ab1,ab2]@3 [ab1,ab2,f4,ab4,c5]@3, [f4,bb4,db5]@5 ~@3 [f4,ab4,c5]@5 ~@3", // Bb Bbm Ab Fm Bbm Fm
  X: "[gb1,gb2,gb4,bb4]@3 [gb1,gb2,ab4,c5]@3 [gb1,gb2]@5 ~ gb2 f2@2 db2, ~@6 [gb4,bb4,db5]@9 ~", // Gb Ab7 Gb
  Y: "[eb2,eb3,gb4,bb4,db5]@3 [eb2,eb3,ab4,c5,eb5]@3 [gb4,bb4,db5,f5]@8 [ab2,ab3]@2, ~@6 [eb2,eb3]@7 ~@3", // Ebm7 Ab Gbmaj7 Ab Eb
  Z: "[db3,db4,f4,ab4]@2 ~@2 db4 eb4 f4 gb4 [eb4,ab4] bb4 ab4 [gb4,db5]@4 ~, ~@2 db3@5 ~ [c3,c4]@2 [c3,c4]@5 ~", // Db Ab5 Gb5 C
  AA: "[bb2,bb3]@2 ~@3 [f4,bb4,db5]@3 [ab2,ab3]@2 ~@3 [f4,bb4,db5]@3, [f4,bb4,db5]@5 ~@3 [f4,bb4,db5]@5 ~@3, ~@2 [bb2,bb3]@5 ~@3 [ab2,ab3]@5 ~", // Bb Bbm Ab Bbm Bb Ab
  AB: "[bb4,db5,f5]@3 [db5,f5,bb5]@2 ~@5 [db5,f5,bb5]@2 ~@2 [db5,f5,bb5]@2, [g2,g3]@5 [f2,f3]@3 [eb2,eb3]@5 [eb2,eb3]@3, ~@3 [bb4,db5,f5]@2 ~ [bb4,db5,f5] ~", // Bbm G F Eb Bbm
  AC: "[db5,gb5,bb5]@3 [bb4,db5,gb5]@2 ~@3 [ab2,ab3]@4 ~@2 [c5,eb5,gb5]@2, [ab2,ab3]@5 [ab2,ab3]@3 ~@5 [ab2,ab3]@3, ~@6 [bb4,db5,gb5]@5 ~ [bb4,db5,gb5]@2 ~@2", // Gb Ab Cdim Ab Gb
  AD: "db3@2 ~@3 [ab4,db5,f5]@3 [c3,c4]@2 ~@3 [ab4,c5,eb5]@3, [ab4,db5,f5]@5 ~@3 [ab4,c5,eb5]@5 ~@3, ~@2 db3@5 ~@3 [c3,c4]@5 ~", // Db C Ab Db Ab C
  AE: "[bb2,bb3]@2 ~@6 [ab2,ab3]@2 ~@3 [f4,bb4,db5]@3, [f4,bb4,db5]@5 [f4,bb4,db5]@8 ~@3, ~@2 [bb2,bb3]@5 ~@3 [ab2,ab3]@5 ~", // Bb Ab Bbm Bb Ab
  AF: "[db4,f4,bb4]@3 [db4,f4,bb4]@2 ~@3 [eb2,eb3]@5 ~ [db4,f4,bb4]@2, [g2,g3]@5 [g2,g3]@3 ~@5 [eb2,eb3]@3, ~@6 [db4,f4,bb4]@7 ~@3", // Bbm Eb Bbm G Eb Bbm
  AG: "[db4,f4,bb4]@3 [db4,f4,bb4]@2 ~@3 [ab2,ab3]@4 ~@2 [db4,gb4,ab4]@2, [ab2,ab3]@5 [ab2,ab3]@3 ~@5 [ab2,ab3]@3, ~@6 [db4,f4,bb4]@5 ~ [db4,f4,bb4]@2 ~@2", // Bbm Ab Dbsus4 Ab Bbm
  AH: "[db4,f4,bb4] db4 f4 [db4,f4,bb4]@2 [bb2,bb3,bb4,db5]@3 [db4,f4,bb4] db4 f4 [db4,f4,bb4]@2 [ab2,ab3,bb4,db5]@3, [bb2,bb3]@2 [bb2,bb3]@3 ~@3 [ab2,ab3]@2 [ab2,ab3]@3 ~@3", // Bbm Bbm7 Bb Ab
  AI: "[g2,g3]@5 [g2,g3]@3 ~ [bb4,db5]!2 [ab4,c5]@2 [g4,bb4] [g4,bb4]@2, [bb4,db5,f5]@8 [eb2,eb3]@5 [eb2,eb3]@3", // G Bbm Ab Gm Bbm Eb
  AJ: "[eb4,ab4,b4] eb4 ab4 [ab4,b4]@2 [ab2,ab3,b4,eb5]@3 [eb4,ab4,b4] eb4 ab4 [ab4,b4]@2 [gb2,gb3,b4,eb5]@3, [ab2,ab3]@2 [ab2,ab3]@3 ~@3 [gb2,gb3]@2 [gb2,gb3]@3 ~@3", // Abm B Ab Gb
  AK: "[f2,f3]@5 [f2,f3]@3 ~ [ab4,c5]!2 [gb4,bb4]@2 [f4,ab4] [f4,ab4]@2, [db4,ab4,c5]@8 [db2,db3]@5 [db2,db3]@3", // F Ab Gb Fm Dbmaj7 Db
  AL: "[db4,f4,bb4]@3 ~@3 c5 bb4 [f2,f3,f4,a4,c5]@5 ~ f4@2, [bb2,bb3]@2 db5 ~@5, ~@5 [bb2,bb3]@3 ~@5 [f2,f3]@3", // Bbm F Bb F
  AM: "[eb2,eb3,gb4,bb4,eb5]@5 [eb2,eb3,gb4,bb4,eb5]@3 [gb4,bb4,eb5]@4 ~ [gb4,bb4,eb5]@3, ~@8 [ab2,ab3]@3 ~ [ab2,ab3]@3 ~", // Ebm Ab
  AN: "[db3,db4]@2 ~@3 [ab4,db5,f5]@3 [c3,c4]@2 ~@3 [ab4,c5,eb5]@3, [ab4,db5,f5]@5 ~@3 [ab4,c5,eb5]@5 ~@3, ~@2 [db3,db4]@5 ~@3 [c3,c4]@5 ~", // Db C Ab Db Ab Db C
  AO: "[f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@2 [bb2,bb3]@3 ~ [bb2,bb3,f4,g4,bb4,db5]@2 [f4,g4,bb4,db5]@2, [bb2,bb3]@6 [f4,g4,bb4,db5]@5 ~@5", // Gm7 Bb Gm7b5 Bb Gm7b5
  AP: "[f4,ab4,bb4]@3 [f4,ab4,c5]@3 g4@2 [bb2,bb3,ab4]@3 ~ [bb2,bb3,f4,g4,bb4,db5]@2 [f4,ab4,bb4,db5]@2, [bb2,bb3]@6 [f4,bb4,db5]@5 ~@5", // Bb7 Fm Bb7 Gm7b5 Bbm7 Bb Bbm
  AQ: "[[ab2,ab3,eb4,gb4,bb4,db5]@3 ~ [ab2,ab3]@2 [eb4,gb4,bb4,db5]@2 [eb4,gb4,bb4,db5]@4 [ab2,ab3]@2 ~@2 [db2,db3]@2 [db2,db3]@3 [db2,db3]@3 eb5 f5 eb5 ab5@2 f5 eb5@2, ~@3 [eb4,gb4,bb4,db5]@3 ~@2 [ab2,ab3]@3 ~@3 ab4@9 ~ ab4@7 ~, ~@16 [db5,f5]@7 ~ [c2,c3]@2 [c2,c3]@3 [c2,c3]@3]/2", // Ebm7 Ab Ebm7 Ab Db Ebm7 Ab Db …
  AR: "[bb1,bb2]@2 [bb1,bb2]@3 [bb1,bb2]@3 c5 db5 c5 f5@2 db5 c5@2, [f4,bb4,db5]@7 ~ f4@7 ~, ~@8 [ab1,ab2]@2 [ab1,ab2]@3 [ab1,ab2]@3", // Bb Bbm Ab
  AS: "[gb1,gb2,gb4,bb4]@3 [gb1,gb2,gb4,bb4]@3 [gb1,gb2]@5 ~ gb2 f2@2 db2, ~@6 [gb4,bb4,db5]@9 ~", // Gb
  AT: "[eb2,eb3,gb4,bb4,db5]@3 [eb2,eb3,ab4,c5,eb5]@3 [eb2,eb3,gb4,bb4,db5,f5]@9 ~", // Ebm7 Ab Ebm7
})).s("gm_church_organ").gain(0.32)

// chords · electric bass finger · "Church Organ Lead"
const electric_bass_finger = note("<~@50 A B A C D E D E F G F G F G F G F G>".pickRestart({
  A: "[a2,a3,e4,ab4,b4]@3 ~ [a2,a3]@2 ~@2 [a2,a3]@2 ~@2 [a2,a3]@2 ~@2, ~@3 [gb4,a4,db5]@3 [ab4,b4,d5]@4 [a4,db5,e5]@5 ~", // E A Gbm Abdim A
  B: "[a2,a3]@2 [e4,ab4,b4] ~@2 [ab4,b4,d5]@2 ~@2 [ab4,b4,d5]@2 ~@2 [e4,ab4,b4]@2 ~, ~@3 [gb4,a4,db5]@2 ~@2 [a4,db5,e5]@2 ~@2 [gb4,a4,db5]@2 ~@3, ~@2 [a2,a3] ~ [a2,a3] ~ [a2,a3] ~", // A E Abdim E Gbm A Gbm A
  C: "[a2,a3]@2 [e4,ab4,b4] [gb4,a4,db5]@2 [ab4,b4,d5]@2 ~@2 [ab4,b4,d5]@2 ~@3 [a2,a3]@2, ~@7 [a4,db5,e5]@2 ~@2 [gb4,a4,db5]@2 [e4,ab4,b4]@2 ~, ~@4 [a2,a3] ~ [a2,a3] ~", // A E Gbm Abdim A Gbm E A
  D: "[b2,b3,gb4,a4,db5] ~ [b2,b3]!6, ~ [b2,b3] ~@6, ~@3 [ab4,b4,eb5]@3 [a4,db5,e5]@4 [b4,eb5,gb5]@5 ~", // Gbm B Abm A B
  E: "~@7 [b2,b3], [b2,b3]!7 ~, ~ [gb4,a4,db5]@2 [ab4,b4,eb5]@2 [a4,db5,e5]@2 [b4,eb5,gb5]@2 [a4,db5,e5]@2 [ab4,b4,eb5]@2 [gb4,a4,db5]@2 ~", // B Gbm Abm A B A Abm Gbm
  F: "[db2,db3,ab4,b4,eb5] ~ [db2,db3]!6, ~ [db2,db3] ~@6, ~@3 [bb4,db5,f5]@3 [b4,eb5,gb5]@4 [db5,f5,ab5]@5 ~", // Abm Db Bbm B Db
  G: "~@3 [bb4,db5,f5] [db2,db3,bb4,eb5,gb5]@2 [db2,db3,db5,f5,ab5]@2 [db2,db3,bb4,eb5,gb5]@2 [db2,db3,bb4,db5,f5]@2 [db2,db3,ab4,b4,eb5]@2 [db2,db3]@2, [db2,db3]!2 ~@6, ~ [ab4,b4,eb5]@2 ~@13", // Bbm Ebm7 Db Ebm7 Bbm Abm Db Abm
})).s("gm_electric_bass_finger").gain(0.32)

// chords · string ensemble 1 · "String Lead 1"
const string_ensemble_1 = note(`<
  ~@12 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 Z AA AB AC AD Q AE AF AG@2 AH AI AJ ~@18
>`.pickRestart({
  A: "db5@7 ~ db5@7 ~", B: "~@4 bb4 [bb4,db5] [bb3,eb4] [bb4,db5], db5@5 ~@3", C: "b4@7 ~ b4@7 ~",
  D: "b4@5 [ab4,b4] [ab3,db4] [ab4,b4]", E: "db5@7 ~ [a4,c5]@7 ~", F: "[bb4,eb5]@7 ~ [gb4,bb4,eb5]@7 ~",
  G: "[ab4,db5,f5]@7 ~ [ab4,eb5]@7 ~", H: "[f4,bb4,db5]@7 ~ [f4,c5]@7 ~",
  I: "[f4,g4,bb4]@7 ~ [f4,g4,bb4]@7 ~, db5@15 ~", J: "[f4,ab4,bb4]@7 ~ [f4,ab4,bb4]@7 ~, db5@15 ~",
  K: "[eb4,gb4,bb4,db5]@7 ~ [gb4,bb4,db5,gb5]@7 ~", // Ebm7 Gb
  L: "[db2,db3]@2 [db2,db3]@3 [db2,db3,ab4,db5,f5]@3 [c2,c3]@2 [c2,c3]@3 [c2,c3,ab4,c5,eb5]@3, [ab4,db5,f5]@5 ~@3 [ab4,c5,eb5]@5 ~@3", // Db C Ab Db Ab
  M: "[bb1,bb2]@2 [bb1,bb2]@3 [bb1,bb2,f4,bb4,db5]@3 [ab1,ab2]@2 [ab1,ab2]@3 [ab1,ab2,f4,ab4,c5]@3, [f4,bb4,db5]@5 ~@3 [f4,ab4,c5]@5 ~@3", // Bb Bbm Ab Fm Bbm Fm
  N: "[gb1,gb2,gb4,bb4]@3 [gb1,gb2,ab4,c5]@3 [gb1,gb2]@5 ~ gb2 f2@2 db2, ~@6 [gb4,bb4,db5]@9 ~", // Gb Ab7 Gb
  O: "[eb2,eb3,gb4,bb4,db5]@3 [eb2,eb3,ab4,c5,eb5]@3 [gb4,bb4,db5,f5]@8 [ab2,ab3]@2, ~@6 [eb2,eb3]@7 ~@3", // Ebm7 Ab Gbmaj7 Ab Eb
  P: "db3@2 db3@5 ~ [c3,c4]@2 [c3,c4]@5 ~, [ab4,db5,f5]@7 ~ [ab4,eb5]@7 ~", // C Db Ab5
  Q: "[bb2,bb3]@2 ~@3 [f4,bb4,db5]@3 [ab2,ab3]@2 ~@3 [f4,bb4,db5]@3, [f4,bb4,db5]@5 ~@3 [f4,bb4,db5]@5 ~@3, ~@2 [bb2,bb3]@5 ~@3 [ab2,ab3]@5 ~", // Bb Bbm Ab Bbm Bb Ab
  R: "[bb4,db5,f5]@3 [db5,f5,bb5]@2 ~@5 [db5,f5,bb5]@2 ~@2 [db5,f5,bb5]@2, [g2,g3]@5 [f2,f3]@3 [eb2,eb3]@5 [eb2,eb3]@3, ~@3 [bb4,db5,f5]@2 ~ [bb4,db5,f5] ~", // Bbm G F Eb Bbm
  S: "[db5,gb5,bb5]@3 [bb4,db5,gb5]@2 ~@3 [ab2,ab3]@4 ~@2 [c5,eb5,gb5]@2, [ab2,ab3]@5 [ab2,ab3]@3 ~@5 [ab2,ab3]@3, ~@6 [bb4,db5,gb5]@5 ~ [bb4,db5,gb5]@2 ~@2", // Gb Ab Cdim Ab Gb
  T: "db3@2 ~@3 [ab4,db5,f5]@3 [c3,c4]@2 ~@3 [ab4,c5,eb5]@3, [ab4,db5,f5]@5 ~@3 [ab4,c5,eb5]@5 ~@3, ~@2 db3@5 ~@3 [c3,c4]@5 ~", // Db C Ab Db Ab C
  U: "[bb2,bb3]@2 ~@6 [ab2,ab3]@2 ~@3 [f4,bb4,db5]@3, [f4,bb4,db5]@5 [f4,bb4,db5]@8 ~@3, ~@2 [bb2,bb3]@5 ~@3 [ab2,ab3]@5 ~", // Bb Ab Bbm Bb Ab
  V: "[db4,f4,bb4]@3 [db4,f4,bb4]@2 ~@3 [eb2,eb3]@5 ~ [db4,f4,bb4]@2, [g2,g3]@5 [g2,g3]@3 ~@5 [eb2,eb3]@3, ~@6 [db4,f4,bb4]@7 ~@3", // Bbm Eb Bbm G Eb Bbm
  W: "[db4,f4,bb4]@3 [db4,f4,bb4]@2 ~@3 [ab2,ab3]@4 ~@2 [db4,gb4,ab4]@2, [ab2,ab3]@5 [ab2,ab3]@3 ~@5 [ab2,ab3]@3, ~@6 [db4,f4,bb4]@5 ~ [db4,f4,bb4]@2 ~@2", // Bbm Ab Dbsus4 Ab Bbm
  X: "[db4,f4,bb4] db4 f4 [db4,f4,bb4]@2 [bb2,bb3,bb4,db5]@3 [db4,f4,bb4] db4 f4 [db4,f4,bb4]@2 [ab2,ab3,bb4,db5]@3, [bb2,bb3]@2 [bb2,bb3]@3 ~@3 [ab2,ab3]@2 [ab2,ab3]@3 ~@3", // Bbm Bbm7 Bb Ab
  Y: "[g2,g3]@5 [g2,g3]@3 ~ [bb4,db5]!2 [ab4,c5]@2 [g4,bb4] [g4,bb4]@2, [bb4,db5,f5]@8 [eb2,eb3]@5 [eb2,eb3]@3", // G Bbm Ab Gm Bbm Eb
  Z: "[eb4,ab4,b4] eb4 ab4 [ab4,b4]@2 [ab2,ab3,b4,eb5]@3 [eb4,ab4,b4] eb4 ab4 [ab4,b4]@2 [gb2,gb3,b4,eb5]@3, [ab2,ab3]@2 [ab2,ab3]@3 ~@3 [gb2,gb3]@2 [gb2,gb3]@3 ~@3", // Abm B Ab Gb
  AA: "[f2,f3]@5 [f2,f3]@3 ~ [ab4,c5]!2 [gb4,bb4]@2 [f4,ab4] [f4,ab4]@2, [db4,ab4,c5]@8 [db2,db3]@5 [db2,db3]@3", // F Ab Gb Fm Dbmaj7 Db
  AB: "[db4,f4,bb4]@3 ~@3 c5 bb4 [f2,f3,f4,a4,c5]@5 ~ f4@2, [bb2,bb3]@2 db5 ~@5, ~@5 [bb2,bb3]@3 ~@5 [f2,f3]@3", // Bbm F Bb F
  AC: "[eb2,eb3,gb4,bb4,eb5]@5 [eb2,eb3,gb4,bb4,eb5]@3 [gb4,bb4,eb5]@4 ~ [gb4,bb4,eb5]@3, ~@8 [ab2,ab3]@3 ~ [ab2,ab3]@3 ~", // Ebm Ab
  AD: "[db3,db4]@2 ~@3 [ab4,db5,f5]@3 [c3,c4]@2 ~@3 [ab4,c5,eb5]@3, [ab4,db5,f5]@5 ~@3 [ab4,c5,eb5]@5 ~@3, ~@2 [db3,db4]@5 ~@3 [c3,c4]@5 ~", // Db C Ab Db Ab Db C
  AE: "[f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@2 [bb2,bb3]@3 ~ [bb2,bb3,f4,g4,bb4,db5]@2 [f4,g4,bb4,db5]@2, [bb2,bb3]@6 [f4,g4,bb4,db5]@5 ~@5", // Gm7 Bb Gm7b5 Bb Gm7b5
  AF: "[f4,ab4,bb4]@3 [f4,ab4,c5]@3 g4@2 [bb2,bb3,ab4]@3 ~ [bb2,bb3,f4,g4,bb4,db5]@2 [f4,ab4,bb4,db5]@2, [bb2,bb3]@6 [f4,bb4,db5]@5 ~@5", // Bb7 Fm Bb7 Gm7b5 Bbm7 Bb Bbm
  AG: "[[ab2,ab3,eb4,gb4,bb4,db5]@3 ~ [ab2,ab3]@2 [eb4,gb4,bb4,db5]@2 [eb4,gb4,bb4,db5]@4 [ab2,ab3]@2 ~@2 [db2,db3]@2 [db2,db3]@3 [db2,db3]@3 eb5 f5 eb5 ab5@2 f5 eb5@2, ~@3 [eb4,gb4,bb4,db5]@3 ~@2 [ab2,ab3]@3 ~@3 ab4@9 ~ ab4@7 ~, ~@16 [db5,f5]@7 ~ [c2,c3]@2 [c2,c3]@3 [c2,c3]@3]/2", // Ebm7 Ab Ebm7 Ab Db Ebm7 Ab Db …
  AH: "[bb1,bb2]@2 [bb1,bb2]@3 [bb1,bb2]@3 c5 db5 c5 f5@2 db5 c5@2, [f4,bb4,db5]@7 ~ f4@7 ~, ~@8 [ab1,ab2]@2 [ab1,ab2]@3 [ab1,ab2]@3", // Bb Bbm Ab
  AI: "[gb1,gb2,gb4,bb4]@3 [gb1,gb2,gb4,bb4]@3 [gb1,gb2]@5 ~ gb2 f2@2 db2, ~@6 [gb4,bb4,db5]@9 ~", // Gb
  AJ: "[eb2,eb3,gb4,bb4,db5]@3 [eb2,eb3,ab4,c5,eb5]@3 [eb2,eb3,gb4,bb4,db5,f5]@9 ~", // Ebm7 Ab Ebm7
})).s("gm_string_ensemble_1").gain(0.56)

// chords · string ensemble 2 · "String Lead 2"
const string_ensemble_2 = note(`<
  ~@12 A B C D E F G H I J K L M N O G P Q R L S T U V W X Y Z AA L P AB AC AD@2 AE AF O ~@18
>`.pickRestart({
  A: "db5@7 ~ db5@7 ~", B: "~@4 bb4 [bb4,db5] [bb3,eb4] [bb4,db5], db5@5 ~@3", C: "b4@7 ~ b4@7 ~",
  D: "b4@5 [ab4,b4] [ab3,db4] [ab4,b4]", E: "db5@7 ~ [a4,c5]@7 ~", F: "[bb4,eb5]@7 ~ [gb4,bb4,eb5]@7 ~",
  G: "[ab4,db5,f5]@7 ~ [ab4,eb5]@7 ~", H: "[f4,bb4,db5]@7 ~ [f4,c5]@7 ~",
  I: "[f4,g4,bb4]@7 ~ [f4,g4,bb4]@7 ~, db5@15 ~", J: "[f4,ab4,bb4]@7 ~ [f4,ab4,bb4]@7 ~, db5@15 ~",
  K: "[eb4,gb4,bb4,db5]@7 ~ [gb4,bb4,db5,gb5]@7 ~", L: "[ab4,db5,f5]@5 [ab4,db5,f5]@3 [ab4,c5,eb5]@5 [ab4,c5,eb5]@3",
  M: "[f4,bb4,db5]@5 [f4,bb4,db5]@3 [f4,ab4,c5]@5 [f4,ab4,c5]@3", N: "[gb4,bb4]@3 [ab4,c5]@3 [gb4,bb4,db5]@9 ~",
  O: "[gb4,bb4,db5]@3 [ab4,c5,eb5]@3 [gb4,bb4,db5,f5]@9 ~", // Gb Ab Gbmaj7
  P: "[f4,bb4,db5]@5 [f4,bb4,db5]@3 [f4,bb4,db5]@5 [f4,bb4,db5]@3", // Bbm
  Q: "[bb4,db5,f5]@3 [db5,f5,bb5]@3 [bb4,db5,f5]@4 [db5,f5,bb5]@2 [bb4,db5,f5]@2 [db5,f5,bb5]@2", // Bbm
  R: "[db5,gb5,bb5]@3 [bb4,db5,gb5]@3 [bb4,db5,gb5]@5 ~ [bb4,db5,gb5]@2 [c5,eb5,gb5]@2", // Gb Cdim
  S: "[f4,bb4,db5]@5 [f4,bb4,db5]@8 [f4,bb4,db5]@3", T: "[db4,f4,bb4]@3 [db4,f4,bb4]@3 [db4,f4,bb4]@7 ~ [db4,f4,bb4]@2",
  U: "[db4,f4,bb4]@3 [db4,f4,bb4]@3 [db4,f4,bb4]@5 ~ [db4,f4,bb4]@2 [db4,gb4,ab4]@2", // Bbm Dbsus4
  V: "[db4,f4,bb4] db4 f4 [db4,f4,bb4]@2 [bb4,db5]@3 [db4,f4,bb4] db4 f4 [db4,f4,bb4]@2 [bb4,db5]@3", // Bbm
  W: "[bb4,db5,f5]@9 [bb4,db5]!2 [ab4,c5]@2 [g4,bb4] [g4,bb4]@2", // Bbm Ab Gm
  X: "[eb4,ab4,b4] eb4 ab4 [ab4,b4]@2 [b4,eb5]@3 [eb4,ab4,b4] eb4 ab4 [ab4,b4]@2 [b4,eb5]@3", // Abm B Abm B
  Y: "[db4,ab4,c5]@9 [ab4,c5]!2 [gb4,bb4]@2 [f4,ab4] [f4,ab4]@2", // Dbmaj7 Ab Gb Fm
  Z: "[db4,f4,bb4]@3 ~ db5@2 c5 bb4 [f4,a4,c5]@5 ~ f4@2", // Bbm F
  AA: "[gb4,bb4,eb5]@5 [gb4,bb4,eb5]@3 [gb4,bb4,eb5]@5 [gb4,bb4,eb5]@3", // Ebm
  AB: "[f4,g4,bb4]@3 [f4,g4,bb4]@3 [f4,g4,bb4,db5]@5 ~ [f4,g4,bb4,db5]@2 [f4,g4,bb4,db5]@2", // Gm7 Gm7b5
  AC: "[f4,ab4,bb4]@3 [f4,ab4,c5]@3 g4@2 ab4@3 ~ [f4,g4,bb4,db5]@2 [f4,ab4,bb4,db5]@2, ~@6 [f4,bb4,db5]@5 ~@5", // Bb7 Fm Gm7b5 Bbm7 Bbm
  AD: "[[eb4,gb4,bb4,db5]@3 [eb4,gb4,bb4,db5]@3 [eb4,gb4,bb4,db5]@2 [eb4,gb4,bb4,db5]@5 ~@3 [db5,f5]@7 ~ eb5 f5 eb5 ab5@2 f5 eb5@2, ~@14 ab4@9 ~ ab4@7 ~]/2", // Ebm7 Db
  AE: "[f4,bb4,db5]@7 ~ c5 db5 c5 f5@2 db5 c5@2, ~@8 f4@7 ~", AF: "[gb4,bb4]@3 [gb4,bb4]@3 [gb4,bb4,db5]@9 ~",
})).s("gm_string_ensemble_2").gain(0.56)

// chords · synth strings 1 · "Strings3 Lead"
const synth_strings_1 = note("<~@50 A B A B C D C D E F E F E F E F E F>".pickRestart({
  A: "[e3,ab3,b3]@3 [gb3,a3,db4]@3 [ab3,b3,d4]@4 [a3,db4,e4]@5 ~", // E Gbm Abdim A
  B: "~@2 [e3,ab3,b3] [gb3,a3,db4]@2 [ab3,b3,d4]@2 [a3,db4,e4]@2 [ab3,b3,d4]@2 [gb3,a3,db4]@2 [e3,ab3,b3]@2 ~", // E Gbm Abdim A Abdim Gbm E
  C: "[gb3,a3,db4]@3 [ab3,b3,eb4]@3 [a3,db4,e4]@4 [b3,eb4,gb4]@5 ~", // Gbm Abm A B
  D: "~ [gb3,a3,db4]@2 [ab3,b3,eb4]@2 [a3,db4,e4]@2 [b3,eb4,gb4]@2 [a3,db4,e4]@2 [ab3,b3,eb4]@2 [gb3,a3,db4]@2 ~", // Gbm Abm A B A Abm Gbm
  E: "[ab4,b4,eb5]@3 [bb4,db5,f5]@3 [b4,eb5,gb5]@4 [db5,f5,ab5]@5 ~", // Abm Bbm B Db
  F: "~ [ab4,b4,eb5]@2 [bb4,db5,f5] [bb4,eb5,gb5]@2 [db5,f5,ab5]@2 [bb4,eb5,gb5]@2 [bb4,db5,f5]@2 [ab4,b4,eb5]@3 ~", // Abm Bbm Ebm Db Ebm Bbm Abm
})).s("gm_synth_strings_1").gain(0.56)

// other · reed organ · "Reed Organ Melody"
const reed_organ = note("<~@18 A B C@2 D@3 ~@2 E F@3 G H I@2 J@2 K@2 L M N B O@2 P Q R S ~@19>".pickRestart({
  A: "~@4 f5!4 eb5 f5 eb5 ab5@2 f5 eb5 [eb5,f5]", B: "db5@5 ~@3 c5 db5 c5 f5@2 db5 c5 bb4",
  C: "[bb4@3 c5@3 db5@3 ~ f5@2 eb5@2 db5 eb5@2 db5 bb4@3 ~@5 f5@2 eb5 db5@3]/2",
  D: "[~@10 ab5@2 [eb5,f5] db5@2 ~@7 f5@2 eb5@5 ~ f5@2 eb5 ~@15, ~@5 db5@8 ~@3]/3", // Ebsus2
  E: "~@4 db4 eb4 f4 gb4 ab4 bb4 ab4 db5@2 f4 eb4 [eb4,f4]", // Ebsus2
  F: "[db4@3 ~@9 bb3 c4 db4 f4@6 ~@7 db4 f4 db4 eb4@6 ~@11]/3", G: "~@4 db4 eb4 f4 gb4 ab4 bb4 ~ ab4 db5 f5 ~ eb5",
  H: "[eb5,f5] db5@3 ~@4 f5@2 eb5 db5@2 eb5@2 db5", I: "[bb4@3 ~@7 f5@2 eb5 db5@2 eb5@12 ~@5]/2",
  J: "[~@4 f4 gb4 f4 bb4@2 c5 bb4 db5@2 f5 db5 f5@6 ~@3 db5!3 c5@2 bb4 bb4@2]/2",
  K: "[~@4 eb4 e4 eb4 ab4@2 bb4 ab4 b4@2 db5 b4 eb5@6 ~@3 b4!3 bb4@2 ab4@3]/2", L: "~@4 db5@2 c5 bb4 c5@5 ~ f4@2",
  M: "eb5@8 ab5@7 [eb5,f5]", N: "db5@2 ~@2 f5!4 eb5 f5 ~ eb5 ab5 f5 eb5 [db5,f5]",
  O: "[bb4@3 c5@3 db5@3 ~ f5@2 eb5 db5!2 eb5@2 db5 bb4@4 ~@4 f5@2 eb5 db5@3]/2", P: "~@10 f5 ab5 [eb5,f5] db5@3",
  Q: "ab5 gb5", R: "bb5 ab5", S: "[eb5,f5] db5@10 ~@5",
})).s("gm_reed_organ").gain(0.56)

// drums · kick
const kick = s("bd").struct("<~@22 A B@2 C D E@3 F E@3 F E@3 F E F@2 E F ~@2 E@2 F@2 G@18>".pickRestart({
  A: "~@6 x ~@2 x!7", B: "~@2 x ~ x ~ x!2 ~ x ~ x!2 ~ x ~", C: "~ x!2 ~ x!12", D: "~ x!2 ~ x!11 ~", E: "~ x ~ x",
  F: "~ x ~@2", G: "x!2",
})).gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@22
  [~@6 x ~@2 x!2 ~@3 x!2]
  [~@2 x ~@4 x ~@4 x ~@3]!2
  [~ x ~@2 x ~ x!2 ~ x ~ x ~@4]!2
  ~@41
>`).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 [x!3 ~ x ~@5 x!2 ~ x!2 ~]!2 ~@22>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@27 A@3 B A@3 B A@3 B A C B A D ~@2 A@2 B@2 E@18>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x ~ x!3 ~", C: "~@4 x ~@5 x ~ x!4", D: "~@4 x ~ x ~ x ~ x!3 ~ x ~", E: "x ~ x!7 ~ x!6",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@25
  [x ~@2 x ~@2 x ~@9]!2
  [~ x ~ x]!16
// … 10 more lines

More by Alan Parsons