Strudelify
Reunited cover art

1995 · At Their Best

Reunited

Peaches & Herb

KeyB♭ minorTempo77 bpm
0:00/0:00
// Reunited — Peaches & Herb
// 77 bpm, 4/4, key A# 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: duplicate parts dropped: ch 7 "JAZZ GTR" electric guitar jazz (copy of ch 3 "JAZZ GTR" electric guitar jazz)
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(77/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 · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A B@2 C D E F G H I@2 J D E K G L@3 M N@2 O@2 P@2 Q R@3 S T U V W X Y@3 Z@2 AA AB AC AD@3 AE AF@2 AG@2 AH@2 AI AJ@2
  AK@2 AL AM@2 AN@2 AO@2 AP AQ@2 AR AN@2 AO@2 AP AS@3
>`.pickRestart({
  A: "[ab3,c4,eb4,f4]", B: "[[ab3,c4,db4,f4]@9 ~ [ab3,c4,db4,f4]@3 ~ [bb3,db4,eb4,gb4]@17 ~]/2",
  C: "[ab3,a3,db4,e4]@15 ~", D: "[ab3,c4,eb4,f4]@4 [c4,eb4] [bb3,db4]@3, ~ [f3,ab3]",
  E: "[ab3,c4,eb4,f4]@3 [f3,ab3,bb3,db4]@5", F: "[ab3,c4,db4,f4]@4 [c4,eb4] [bb3,db4]@3, ~ [f3,ab3]",
  G: "[c4,eb4] [bb3,db4], [f3,ab3]@15 ~", H: "~@6 bb3@9 ~, gb3@15 ~, bb3@3 ~@5, db4@4 db4@11 ~, ~ eb4@2 ~@5",
  I: "[~@2 [gb5,db6,eb6,bb6]@7 ~ [f3,ab3,c4,eb4]@2 ~@2 e4@7 ~ e4 ~ e4@2 eb4 ~ eb4@2 db4@2, [gb3,bb3,db4,f4,gb4,bb4]@5 ~@2 [ab3,a3]@9, ~@7 db4@8 ~]/2", // Ebm7 Fm7 Gbmaj7 Amaj7
  J: "~@2 [a3,db4,e4]@3 ~ [a3,db4,e4]@3 ~ [a3,db4,e4]@5 ~, b4", K: "[ab3,c4,eb4,f4]@4 [c4,eb4] [bb3,db4]@3, ~ ab3",
  L: "[~@26 [ab3,c4,eb4]@4 e4@7 ~ e4 ~ e4@2 eb4 ~ eb4@2 db4@2, [gb3,bb3,db4,f4]@14 ~ [ab3,a3]@9, ~@5 [gb5,eb6,bb6]@9 ~@10, ~@9 [f5,db6,ab6]@5 ~ db4@8 ~]/3", // Ab Gbmaj7 Amaj7 Ebm Db
  M: "~@2 [a3,db4,e4,ab4]@3 ~ [a3,db4,e4,ab4]@3 ~ [a3,db4,e4,ab4]@5 ~, b4", // Amaj7
  N: "[[ab3,c4,eb4,f4]@7 ~ [c4,eb4]@2 [bb3,db4]@22, ~ [ab3,f4]@3]/2", // Fm7 Cm Bbm Db
  O: "[[f3,ab3,c4,eb4]@7 ~ [c4,eb4]@2 [bb3,db4,f4]@21 ~, ~@8 [f3,ab3]@23 ~]/2", P: "[gb3,bb3,db4]",
  Q: "[ab3,a3,db4,e4]", // Amaj7
  R: "[~@2 [a3,db4,e4]@3 ~ [a3,db4,e4]@2 ~@2 [a3,db4,e4]@3 ~ [c4,eb4]@10 [c4,eb4]@2 db4@6 [ab3,c4,db4,f4]@15 ~, ~@7 [f3,ab3]@9 ~@8, ~@26 bb3@21 ~]/3", // A Cm Dbmaj7 Fm
  S: "[gb3,bb3,db4,f4]@15 ~", T: "[g3,b3,d4,e4]@2 [g3,b3,d4,e4]@2 [g3,b3,d4,e4]@2 [g3,b3,d4,e4]@9 ~",
  U: "[db4,e4]@7 ~ [db4,e4]@2 [b3,d4]@5 ~, [gb3,a3]@15 ~", V: "[db4,e4]@3 [b3,d4]@5, [gb3,a3]",
  W: "[a3,db4,e4,a4]@6 [db4,e4,a4]@4 [d4,gb4,a4]@5 ~", X: "[a3,db4,e4]@3 [gb3,a3,b3,d4]@5",
  Y: "[~ a6@9 [e6,gb6,a6,b6]@8 [d6,e6,gb6,a6]@7 ~ [a3,db4,e4]@3 ~ [a3,bb3,d4,f4]@18, [g3,b3,d4,gb4]@25 ~@23, [d6,gb6]@3 ~@13]/3", // Esus4 D A Bbmaj7 Gmaj7 D
  Z: "[~@2 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~ [db4,e4]@10 [db4,e4]@2 [d4,gb4]@6, c5@14 [gb3,a3]@17 ~]/2", // Bb Dbm D Gbm
  AA: "[db4,e4]@7 ~ [db4,e4]@2 [b3,d4]@6, [gb3,a3]", AB: "[a3,db4,e4]@7 ~ [db4,e4]@2 [d4,gb4]@6, ~@8 a3@7 ~",
  AC: "[db4,e4]@3 [d4,gb4]@5, a3", // Dbm D
  AD: "[~@18 [g5,d6,gb6,a6]@8 [a3,db4,e4]@3 ~ [a3,bb3,d4,f4]@18, [g3,b3,d4]@15 ~ [g3,b3,d4]@9 ~@23, ~@5 [g5,e6,gb6,b6]@4 ~@15]/3", // D A Bbmaj7 G Em
  AE: "~@2 [bb3,d4,f4,a4]@3 ~ [bb3,d4,f4,a4]@3 ~ [bb3,d4,f4,g4]@4 ~@2", // Bbmaj7 Gm7
  AF: "[[a3,db4,e4,gb4]@7 ~ [db4,e4]@2 [b3,d4]@22, ~ [a3,gb4]@3]/2", // Gbm7 Dbm Bm D
  AG: "[[gb3,a3,db4,e4]@7 ~ [db4,e4]@2 [b3,d4,gb4]@21 ~, ~@8 [gb3,a3]@23 ~]/2", AH: "[g3,b3,d4]", AI: "[a3,bb3,d4,f4]",
  AJ: "[~@2 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 ~@2 [bb3,d4,f4]@3 ~ [db4,e4]@10 [db4,e4]@2 [b3,d4]@6, ~@7 [gb3,a3]@9]/2", // Bb Dbm Bm Gbm
  AK: "[[a3,db4,d4,gb4]@9 ~ [db4,d4,gb4,a4]@3 ~ [b3,d4,e4,g4]@18]/2", AL: "[ab3,c4,eb4,f4]!4 ~ [c4,eb4,f4,ab4,bb4]@3",
  AM: "[[bb3,d4,f4,g4]@7 ~ [d4,f4]@2 [c4,eb4]@22, ~ [bb3,g4]@3]/2", // Gm7 Dm Cm Eb
  AN: "[[g3,bb3,d4,f4]@7 ~ [d4,f4]@2 [c4,eb4,g4]@21 ~, ~@8 [g3,bb3]@23 ~]/2", AO: "[ab3,c4,eb4]",
  AP: "[bb3,b3,eb4,gb4]", // Bmaj7
  AQ: "[~@2 [b3,eb4,gb4]@3 ~ [b3,eb4,gb4]@2 ~@2 [b3,eb4,gb4]@3 ~ [d4,f4]@10 [d4,f4]@2 [c4,eb4]@6, ~@7 [g3,bb3]@9]/2", // B Dm Cm Gm
  AR: "[g3,bb3,d4,f4]", AS: "[~@2 [b3,eb4,gb4]@3 ~ [b3,eb4,gb4]@2 ~@2 [b3,eb4,gb4]@3 ~ [g3,bb3,d4,f4]@30 ~@4]/3",
})).s("gm_epiano1").gain(0.25).pan(0.6)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B@2 C@2 D E F G H@2 I@2 J K L G M@2 N O P Q R G S T U V W@2 X Y Z AA AB AC AD@2 AE AF AG AH AI AJ AK@2 AL AM AN AO
  AI AP AQ AR AS AT AU@2 AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL@3
>`.pickRestart({
  A: "db2@7 ~", B: "[bb1@9 ~ db2@3 ~ eb2@13 ~ eb2@2 f2@2]/2", C: "[gb2@8 ~@2 b1@2 c2@2 db2@7 ~ db2@5 ~ ab1@2 bb1@2]/2",
  D: "db2@5 ~ db2@5 ~ f1@2 ab1@2", E: "bb1@5 ~ bb1@5 ~ f2@2 ab2@2", F: "bb2@5 ~ bb1@5 ~ bb1@2 db2@2",
  G: "eb2@5 ~ eb2@5 ~ bb1@2 db2@2", H: "[eb2@5 ~ eb2@2 ~@2 f2@2 ~@2 gb2@7 ~ db2@2 gb1@4 gb2@2 db2@2]/2",
  I: "[b1@2 b2@3 ~ b1@3 ~ b1@3 ~ db2@6 ~@2 db2@6 ab1@2 bb1@2]/2", J: "db2@5 ~ db2@6 f2@2 ab2@2",
  K: "bb2@5 ~ bb2@5 ~ f2@4", L: "bb1@5 ~ bb1@5 ~ bb1@2 db2@2",
  M: "[eb2@4 ~@2 eb2@3 ~ f2@3 ~ gb2@6 ~@2 db2@2 gb1@4 ~@2 db2@2]/2", N: "b1@2 b2@2 ~@2 b1@2 ~@2 b1@3 ~@3",
  O: "db2@5 ~ db2 ~ db2@3 ~ ab1@2 bb1@2", P: "db2@5 ~ db2 ~ db2@4 f1@2 ab1@2", Q: "bb1@5 ~ bb1 ~ bb1@3 ~ f1@2 ab1@2",
  R: "bb1@6 bb1 ~ bb1@4 f2@2 bb2@2", S: "eb2@5 ~ eb2@5 ~ eb2@2 f2@2", T: "gb2@5 ~ db2@3 ~ gb1@3 ~ db2@2",
  U: "b1@2 b2@2 ~@2 b1@3 ~ b1@2 ~@2 db2 ~", V: "db2@5 ~ db2 ~ db2@3 ~ ab1@2 a1@2",
  W: "[bb1@5 ~ bb1@4 db2@3 ~ eb2@7 ~ eb2 ~ eb2@3 ~ eb2@2 f2@2]/2", X: "a1!3 a1@3 a2 e2", Y: "d2@5 ~ d2@5 ~ a1@2 b1@2",
  Z: "d2@5 ~ d2@5 ~ gb2@2 a2@2", AA: "b2@5 ~ b2@5 ~ gb2@2 d2@2", AB: "b1@3 ~ b1@2 d2 gb2, ~@3 b2@3 ~@2",
  AC: "e2@5 ~ e2@6 b1@2 e2@2", AD: "[e1@5 ~ e1@3 ~ gb1@2 ~@2 g1@7 ~ bb1@3 ~ d2@3 ~ g2@2]/2",
  AE: "c2@2 c3@2 ~@2 c2@3 ~ c2@2 ~@2 d2@2", AF: "d2@6 d2@2 d2@3 ~ a1@2 b1@2", AG: "d2@3 a2@2 d2@2 db2",
  AH: "b1@5 ~ b1@5 ~ gb2@2 a2@2", AI: "b2@5 ~ a2@4 gb2@4 d2@2", AJ: "e2@5 ~ e2@6 b1@2 d2@2",
  AK: "[e1@5 ~ e1@4 gb1@3 ~ g1@7 ~ bb1@3 ~ d2@3 ~ g2@2]/2", AL: "c2@2 c3@3 ~ c2@3 ~ c2@3 ~ d2@2",
  AM: "d2@5 ~ d2 ~ d2@3 ~ a1@2 b1@2", AN: "d2@5 ~ d2 ~ d2@4 gb1@2 a1@2", AO: "b1@5 ~ b1 ~ b1@4 gb2@2 db3@2",
  AP: "e2@5 ~ e2@2 e2@4 b1@2 d2@2", AQ: "e1@3 e2@3 e1 gb1", AR: "g1@5 ~ bb1@3 ~ d2@4 g2@2",
  AS: "c2@2 c3@2 ~@2 c2@3 ~ c2@3 ~ d2@2", AT: "d2@5 ~ d2@2 d2@4 a1@2 d2@2",
  AU: "[b1@5 ~ b1@4 d2@3 ~ e2@8 e1@2 e1@3 ~ e1@2 gb1@2]/2", AV: "bb1@2 bb1 ~ bb1 ~ bb2@2 ~@2 bb2@2 f2@2 bb1@2",
  AW: "eb2@5 ~ eb2@2 eb2@4 bb1@2 c2@2", AX: "eb2@6 eb2@5 ~ g1@2 bb1@2", AY: "c2@3 c2@3 g2 bb2",
  AZ: "c3@6 c2@4 eb2@3 ~ g2@2", BA: "f2@5 ~ f2@5 ~ c2@2 eb2@2", BB: "f2@5 ~ f1@5 ~ f1@2 g1@2",
  BC: "ab1@5 ~ eb2@4 ab2@3 ~ eb2@2", BD: "db2@2 db3@3 ~ db2@3 ~ db2@3 ~@3", BE: "eb2@5 ~ eb2 ~ eb2@4 bb1@2 c2@2",
  BF: "eb2@5 ~ bb2@4 g2@3 ~ eb2@2", BG: "c2@5 ~ c2@2 c2@4 g1@2 bb1 ~", BH: "c2@5 ~ c2@4 d2@3 ~ eb2@2",
  BI: "f2@5 ~ f2@2 f2@3 ~ c2@2 eb2@2", BJ: "f2@5 ~ f2@4 f1@3 ~ g1 ~", BK: "ab1@5 ~ ab1 ~ ab1@4 ab2@2 eb2@2",
  BL: "[db2@2 db3@3 ~ db2@3 ~ db2@2 ~@2 eb1@30 ~@4]/3",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@5 A@2 B C ~@4 A@2 B C ~@16 D@2 E F ~@4 D@2 E F ~@33>".pickRestart({
  A: "[~@4 c6@3 ~, ~@2 f5 c6 ~@4, ~@5 ab5@9 ~@2, ~@7 f6@7 ~@2]/2", B: "~@7 f6, ~@2 f5 c6, ~@5 ab5@3", C: "db6@3 ~",
  D: "[~@4 db6@3 ~, ~@2 gb5 db6 ~@4, ~@5 a5@9 ~@2, ~@7 gb6@7 ~@2]/2", E: "~@7 gb6, ~@2 gb5 db6, ~@5 a5@3", F: "d6@3 ~",
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0.4)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_2 = note(`<
  A B@2 C ~@17 D@2 E F G@2 H@2 B@2 I J ~@3 K L@2 M@2 ~@3 N@3 O@2 P Q ~@8 R ~ S T U V W X Y@2 Z AA@2 V AB X AC@3
>`.pickRestart({
  A: "~ eb5@13 ~@2, [f4,ab4,c5]@7 ~", B: "[[ab3,db4,f4]@9 ~ [ab3,db4,f4]@3 ~ [gb3,bb3,db4]@16 ~@2]/2",
  C: "[ab3,ab4]@2 [gb3,gb4]@2 [ab3,ab4]@2 [gb3,gb4]@9 ~", D: "[~@8 [eb4,ab4]@2 [eb4,ab4]!2 [eb4,ab4]@7 ~@13]/2",
  E: "~@4 c5@3 bb4", F: "f4@5 ~@3", G: "[~@17 ab4@15, ~@15 a3@17, ~ [db4,e4]]/2",
  H: "[~ [a3,db4,e4] ~ [a3,db4,e4] ~ [a3,db4,e4] ~ [ab3,c4,eb4]@7 ~@2]/2", // A Ab
  I: "[g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@3 ~@3", J: "~ gb4@13 ~@2, [a3,db4,e4]@13 ~@3",
  K: "~@7 a4, ~@3 gb3", L: "[~ gb5@9 ~@7 d5@14 ~, [g3,g4,b4]@11 ~@5 [a4,bb4]@15 ~, d5@9 ~@6 f4@16 ~]/2",
  M: "[~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [a3,db4,e4]@7 ~@2]/2", // Bb A
  N: "[~@16 [d5,gb5]@8 ~@2 [a3,db4,e4,a4]@3 ~ [bb3,d4,f4,a4]@17 ~, ~@5 [d4,g4,b4]@3 ~@8]/3", // D A Bbmaj7 G
  O: "[~@2 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4]@2 ~@2 [a3,db4,e4]@5 ~@13]/2", // Bb A
  P: "~@8 a4@2 d5 [a4,d5] [a4,d5]@2 [a4,d5] ~", Q: "[gb4,b4]@15 ~",
  R: "[ab3,c4,eb4,f4] ~ [ab3,c4,eb4,f4]@2 [ab3,c4,eb4,f4] ~ [ab3,c4,eb4,f4]@3 ~ [ab3,c4,eb4,f4]@2 [ab3,c4,eb4,f4]@2 [ab3,c4,eb4,f4]@2", // Fm7
  S: "~@8 bb4@2 eb5 [bb4,eb5] [bb4,eb5]@2 [bb4,eb5] ~", T: "[g4,c5]@15 ~",
  U: "~@9 bb3 [bb3,eb4]@2 bb3 c4 bb3@2, ~@4 [g3,eb4] ~ eb4@2", V: "~ eb4@14 ~, [ab3,c4]@15 ~",
  W: "[ab3,c4,eb4]@5 ~ [ab3,c4,eb4]@7 ~@3", X: "~ eb4@14 ~, [gb3,bb3,b3]@7 ~",
  Y: "[~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [f3,g3,bb3,d4]@7 ~@2]/2", Z: "~@8 [bb3,eb4]@7 ~",
  AA: "[[f3,bb3,d4]@7 ~ [f3,bb3,d4]@2 [g3,bb3,eb4]@12 ~ g3 bb3 c4 [g3,bb3] ~ bb3@4, ~@3 eb4]/2", // Bb Eb Gm
  AB: "[ab3,c4,eb4]@5 ~ [ab3,c4,eb4]@8 ~@2", // Ab
  AC: "[~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [f3,g3,bb3,d4]@15 ~@2]/3", // B Gm7
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@2 B C D ~@7 E@2 F G ~ H I J ~@3 K L@2 M N A@2 B ~@9 O P Q R S@3 T U@2 V@2 W@2 X Y Z@2 AA AB AC AD AE AF AG AH AI AJ
  AC AD AE AF AG AH AI AK@3
>`.pickRestart({
  A: "[~@4 f5@2 ab5@2 c6 b5 bb5 a5 ab5@6 f5@2 ab5@2 bb5@3 ~ c6@2 db6@2 eb6@2]/2", B: "f6@2 db6@3 bb5@3 gb5@8",
  C: "ab5@2 gb5 ~ ab5@2 gb5@9 ~", D: "f5@9 ~@7", E: "[f4, ab3 ~]/2",
  F: "[c4,eb4]@7 ~ [c4,eb4]@2 ~@2 f4@2 ab4@2, f4@3 ~, ~@5 [bb3,db4]@3", G: "[c4,eb4,c5]@3 [bb3,db4,bb4]@5",
  H: "~@2 ab5 ~@3 eb5@2", I: "e5", J: "[a3,db4,e4,gb4,b4,b5]", K: "~@11 ab4 bb4 c5 db5 eb5",
  L: "[[db5,f5] ~ f5@2, ~ [bb4,db5]@3]/2", M: "[db5,e5,ab5]@15 ~", N: "[db5,e5,gb5,b5]@15 ~", O: "gb6@2 a5 e6@2 d6@3",
  P: "db6@9 ~@2 d6 ~ d6 ~ d6", Q: "~@5 b5@3", R: "e6@6 d6@6 b5 db6 d6 e6", S: "[gb6@9 g6 ~@2 gb6@12 d6@2 e6@4 a5@18]/3",
  T: "~@2 f5 ~ bb5@2 g5@2 a5 bb5 c6@6", U: "a5/2", V: "[b5@27 ~ b4 db5 d5 e5]/2", W: "[b4,d5,gb5]/2",
  X: "[bb4,d5,f5,a5]", Y: "[bb4,d5,f5,c6]",
  Z: "[~@4 gb5@2 a5@2 db6 c6 b5 bb5 a5@6 gb5@2 a5@2 b5@3 ~ db6@2 d6@2 e6@2]/2", AA: "gb6@2 d6@3 b5@3 g5@8",
  AB: "g6@2 f6 ~ g6@2 f6@2 ~@2 g6@6", AC: "~@7 g5", AD: "bb5@7 g5", AE: "bb5@6 eb5 bb5", AF: "eb6@5 c6@3", AG: "g6",
  AH: "c6@7 f6", AI: "gb6", AJ: "~@4 db6!2 ~@2 db6!2 ~@2 db6@4", AK: "[~@7 [eb3,bb3,f4,g4,bb4,d5]@15 ~@2]/3",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.4)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@12 A ~@3 B@2 ~@23 C D ~@35>".pickRestart({
  A: "[c4,eb4]", B: "[f5@10 ~ f5@3 ~@2, db5@7 ~]/2", C: "~@10 db6 ~ db6 ~ db6 ~", D: "db6 d6 db6@8 ~@6",
})).s("gm_string_ensemble_1").gain(0.11).pan(0.4)

// other · flute
const flute = note(`<
  A@2 B C ~ D E F G ~@4 D E F G ~@11 A@2 B H I J K L M@2 N O P Q R S T@3 U ~@8 V@2 W X Y Z AA AB AC AD AE AF Y Z AA AB
  AC AD AE ~@3
>`.pickRestart({
  A: "[~@4 f5@2 ab5@2 c6 b5 bb5 a5 ab5@6 f5@2 ab5@2 bb5@4 c6@2 db6@2 eb6@2]/2",
  B: "f6@3 db6@3 ~ [ab5,a5] gb5@7 ~, ~@6 bb5@2 g5 ~@7", C: "ab5@2 gb5@2 ab5@2 gb5@9 ~",
  D: "~@8 f5@2 ab5@2 c6@2 ~ d6, ~@7 f6", E: "c6@3 ~, db6 ~@15", F: "~@8 f5@2 ab5@2 c6 ~@2 eb6, ~@7 f6",
  G: "db6@3 ~, d6 ~@15", H: "gb6@2 e6 ~ gb5@2 e5 ~@9", I: "~@4 gb5@2 e6@4 d6@5 [b5,c6]", J: "db6@15 ~", K: "db6@5 b5@3",
  L: "e6@3 d6@3 db6@2, ~@12 c6 ~@3", M: "[gb6@5 g6 gb6@6 ~@4]/2", N: "~ a5", O: "c6@7 ~",
  P: "gb6@4 [bb5,b5] ~ e6@4 d6@5 b5, ~@2 a5 ~@5", Q: "db6@9 ~ db6 d6 db6 d6 db6 d6, c6 ~@15", R: "db6 d6 db6@8 b5@6",
  S: "e6@6 d6@6 b5 db6 d6 e6", T: "[gb6@6 gb6@3 g6 ~@2 gb6@12 d6@2 e6@4 a5@18]/3",
  U: "~@2 f5@2 bb5@2 g5@2 a5 bb5 c6@4 ~@2", V: "[~@4 gb5@2 a5@2 db6 c6 b5 bb5 a5@6 gb5@2 a5@2 b5@4 db6@2 d6@2 e6@2]/2",
  W: "gb6@3 d6@3 ~ [a5,bb5] g5@7 ~, ~@6 b5@2 ab5 ~@7", X: "g6@2 f6 ~ g6@2 f6@2 ~@2 g6@5 ~", Y: "~@14 g5 ab5",
  Z: "bb5@13 ~ g5 ab5, a5 ~@15", AA: "bb5@11 ~ eb5@2 bb5@2, a5 ~@15", AB: "eb6@5 c6@3", AC: "g6", AD: "c6@13 ~ f6@2",
  AE: "gb6", AF: "~@4 db6!2 ~@2 db6!2 ~@6",
})).s("gm_flute").gain(0.22).pan(0.6)

// other · french horn · "FR.HORN"
const french_horn = note("<~@56 A B C D E@2 F@2 G H I J ~@10>".pickRestart({
  A: "~@2 e4@2 e4@2 d4@2 e4@2 gb4@5 ~", B: "e4@2 gb4@2 e4@2 d4@3 ~ b3@6", C: "~@2 gb4 ~ gb4@2 e4@2 gb4@2 e4@3 ~@3",
  D: "bb4 ~ bb4@2 bb4 ~ bb4@3 ~ bb4@6", E: "[~@4 d4@2 d4 ~ d4@2 eb4@21 ~, [g3,bb3]@31 ~]/2",
  F: "[[f3,bb3,d4]@7 ~ [f3,d4]@2 [g3,eb4]@22, ~ bb3@3]/2", G: "~@6 c4 eb4", H: "g4 ab4 g4 eb4@5", I: "~@14 bb4 b4",
  J: "db5@7 ~",
})).s("gm_french_horn").gain(0.33).pan(0.4)

// chords · trumpet
const trumpet = note(`<
  ~@2 A B C ~@4 D@2 E@2 ~@4 D@2 F@2 ~@6 G@2 H@2 I J ~@7 K ~@6 L@2 ~@10 M N@2 O@2 P@2 Q R@3 S@2 T@2 U V@3
>`.pickRestart({
  A: "[db4,f4,gb4,bb4]", B: "b4 a4 b4 a4@5, [a3,db4,e4]", C: "[f3,c4,eb4,ab4] ~",
  D: "[~@5 [ab3,c4,eb4,c5] ~ [a3,db4,e4,db5]@9]/2", // Ab A
  E: "[~@2 [a3,db4,e4]@2 ~@2 [a3,db4,e4]@2 ~@2 [a3,db4,e4]@2 ~@2 [f3,ab3,c4,eb4]@13 ~@5]/2", // A Fm7
  F: "[~ [a3,db4,e4] ~ [a3,db4,e4] ~ [a3,db4,e4] ~ [f3,ab3,c4,eb4]@5 [c4,eb4]@4]/2", // A Fm7 Cm
  G: "[~ [a3,db4,e4] ~ [a3,db4,e4] ~ [a3,db4,e4] ~ [f3,ab3,c4,eb4]@9]/2", // A Fm7
  H: "[[ab3,db4,f4]@9 ~ [ab3,db4,f4]@2 ~@2 [db4,f4,gb4,bb4]@18]/2", // Db Gbmaj7
  I: "[e4,g4,a4]@2 [e4,g4,a4,d5]@2 [e4,g4,a4,d5]@2 [e4,g4,a4,d5]@2 ~@2 [e4,g4,a4,d5]@5 ~, d5 ~@15", // A7 Em7
  J: "[db4,gb4,a4,e5]@3 ~", K: "[gb3,db4,a4,e5]@3 ~",
  L: "[[bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 ~@2 [d4,f4,bb4,d5]@3 ~ [db4,gb4,a4,e5]@12 ~@6, f3 ~@31]/2", // Bb Gbm7
  M: "[g4,bb4,c5,eb5] ~ [f4,bb4,c5,eb5] ~ [g4,bb4,c5,eb5]@2 [f4,bb4,c5,eb5] ~@3 [g4,bb4,c5,eb5]@6", // Cm7 Fsus4 Cm7 Fsus4 Cm7
  N: "[~@4 [d5,f5] ~ [d5,f5] ~ [d5,f5]@2 [g4,eb5]@18 ~@4]/2", O: "[~@4 [f4,d5] ~ [f4,d5] ~ [f4,d5]@2 [g4,eb5]@22]/2",
  P: "[[ab4,c5,eb5]@31 ~]/2", Q: "[gb4,b4,eb5]",
  R: "[~@4 [eb4,gb4,bb4]!2 ~@2 [eb4,gb4,bb4]!3 ~ [eb4,gb4]@2 [d4,f4]@6 [d4,f4] ~@3 [d4,f4]@2 [eb4,g4]@21 ~, ~@3 bb4@2 ~@7]/3", // Ebm Dm Eb
  S: "[~@4 [d4,f4]@2 [d4,f4] ~ [d4,f4]@2 [c4,eb4]@20 ~@2]/2", T: "[[c4,eb4,g4]@3 eb4@12 f4, ~@3 [ab3,c4]@13]/2",
  U: "[b3,eb4,gb4]", V: "[~ [eb4,gb4,bb4] ~ [eb4,gb4,bb4] ~ [eb4,gb4,bb4] ~ [d4,f4,g4,bb4]@15 ~@2]/3",
})).s("gm_trumpet").gain(0.27).pan(0.4)

// chords · vibraphone
const vibraphone = note(`<
  ~@9 A@2 B ~@5 A@2 B C@2 D@2 ~@3 E ~@9 F@2 G ~@4 H@3 I J@2 K L M ~@2 N ~@12 O@2 P Q ~@6
>`.pickRestart({
  A: "[~@5 [c5,eb5]@2 [db5,e5]@7 ~@2]/2", B: "b5", C: "[~@12 f5@15 ~@5, [f4,ab4] ~]/2",
  D: "[[c4,eb4]@7 ~ [c4,eb4]@2 ~@6 [f4,bb4]@6 [bb4,db5]@4 [f5,bb5]@6, ~@5 [bb3,db4]@9 ~@2]/2", E: "[b4,b5]@7 ~",
  F: "[~@5 [a4,db5,e5]@2 [bb4,d5,f5]@8 ~]/2", G: "c5@7 ~",
  H: "[~@10 d5@10 ~@4 gb5 ~ [db5,e5]@3 ~ [d5,f5]@11 ~ [g4,g5]@4 [bb4,bb5] ~, ~@8 g4@12 ~@2 g4@3 ~@23, ~@9 b4@12 ~@2 d5@2 ~@23]/3", // Dbm Dm G Bb
  I: "[c5,c6]@15 ~", J: "[a4@27 ~@5]/2", K: "e4@7 ~ e4@2 gb4@5 ~", L: "~@3 d5@5, b4", M: "gb5@13 ~@3", N: "[c5,c6]@7 ~",
  O: "[g4,bb4,d5]/2", P: "[d4,f4]@7 ~ [d4,f4]@2 [c4,eb4]@6", Q: "[c5,eb5]@3 [c5,eb5,g5]@2 [eb5,g5,bb5]@3",
})).s("gm_vibraphone").gain(0.22).pan(0.7)

// chords · vibraphone · soft notes
const vibraphone_soft = note("<~@21 A ~@29 B C@2 D ~@23>".pickRestart({
  A: "ab4@11 ~@5", B: "~@5 [gb5,b5]@3", C: "[~@7 b4@6 ~@3]/2", D: "[bb4,d5]@7 ~",
})).s("gm_vibraphone").gain(0.16).pan(0.7)

// other · orchestral harp · "HARP"
const orchestral_harp = note(`<
// … 72 more lines

More by Peaches & Herb