Strudelify

Sealed With a Kiss

Lewis

KeyF minorTempo98 bpm
0:00/0:00
// Sealed With a Kiss — Lewis
// 98 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 58 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B C D E F G H I J K@2 E F G H I J K@2 L M N O N M P Q E F G H I R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK
  AJ AL AM AN
>`.pickRestart({
  A: "[bb4,db5,f5]@8 [bb4,eb5,g5]@7 ~", B: "[ab4,c5,eb5]@7 ~ [ab4,db5,f5]@7 ~",
  C: "[f4,bb4,db5]@7 ~ e4@4 [e4,g4,bb4]@4, ~ [ab4,c5]", D: "[f4,ab4,c5]@13 ~@3",
  E: "~@4 [f5,bb5,d6] ~ [f5,bb5,d6]@4 f5 ~ [bb5,db6] ~ f5@2", // Bb Bbm
  F: "~@2 f5 ~ [ab5,c6] ~ [ab5,c6]@2 ~@2 f5 ~ [ab5,c6]@2 f5@2", // Ab
  G: "~@2 f5@2 [ab5,db6] ~ [ab5,db6]@2 ~@2 eb5@2 [g5,db6]@2 eb5 ~", // Db5 Gdim
  H: "~@2 eb5@2 [ab5,c6] ~ [ab5,c6]@2 ~@2 f5@2 [a5,c6]@2 f5@2", // Ab Am
  I: "~@2 f5 ~ [bb5,db6] ~ [bb5,db6]@2 ~@2 g5 ~ [bb5,db6]@2 g5 ~", // Bbm
  J: "~@2 e5@2 [g5,bb5] ~ g5@2 ~@2 f5 ~ [ab5,c6] ~ f5@2, ~@6 bb5 ~@9", // Gm Ab
  K: "[~@2 db5 ~ [f5,g5,bb5] ~ [f5,g5,bb5]@2 ~@2 c5@2 g5@2 c5 ~ [c5,f5,ab5]@13 ~@3, ~@10 [bb4,e5]@5 ab4@13 ~@4]/2", // Gm7 Fm Bbdim
  L: "~@2 bb4@3 ~@3 bb4@8, f5@5 ~ f5@10", M: "~@4 c5@3 ~, ~ c4@6 ~, ~@2 f4@5 ~, ~@3 ab4@4 ~",
  N: "~ f4, ~ bb4@7, ~ d5@3, ~@3 f5@5", O: "~ c5, ~ c4@7, ~ f4@3, ~@3 ab4@5",
  P: "[f5,g5,b5]@7 ~ [f5,g5,b5]@2 ~ [f5,g5,b5]@2 [f5,g5,b5] ~@2", Q: "[e5,g5,c6]",
  R: "~@2 c5@2 [f5,ab5] ~ f5@2 ~@2 f5 ~ [ab5,c6] ~ f5@2, ~@6 ab5 ~@9", // Fm Ab
  S: "~@2 db5 ~ [f5,g5,bb5] ~ [f5,g5,bb5]@4 eb5@2 [g5,bb5]@2 eb5 ~", // Gm7 Gm
  T: "~@2 f5@2 [ab5,c6]@2 f5 ~ [g5,c6]@2 eb5@2 [g5,c6]@2 eb5@2", U: "[c5,f5,ab5,c6]@7 ~",
  V: "~@4 [bb5,d6] ~ [bb5,d6]@4 f5@2 ~@2 f5@2, ~@2 f5@7 ~@3 [bb5,db6]@4", // Bb Bbm
  W: "~@4 [ab5,c6] ~ [ab5,c6]@4 f5@2 [ab5,c6]@2 f5 ~, ~@2 f5@7 ~@7", // Ab
  X: "~@4 [bb5,db6] ~ [bb5,db6]@4 eb5@2 ~@2 eb5@2, ~@2 f5@7 ~@3 [g5,bb5]@4", // Bbm Gm
  Y: "~@4 [ab5,c6] ~ [ab5,c6]@3 ~ eb5@2 ~@2 eb5@2, ~@2 eb5@7 ~@3 [a5,c6]@4", // Ab Am
  Z: "~@4 [ab5,bb5,db6] ~ [ab5,bb5,db6]@3 ~ eb5@2 ~@2 eb5@2, ~ f5@3 ~@2 [g5,bb5]@2", // Bbm7 Gm
  AA: "[ab4,c5,eb5,g5]@7 ~ [ab4,c5,eb5,f5]@7 ~", AB: "[db5,f5]@7 ~ [e5,g5,bb5,c6]@7 ~, [g5,bb5]@6 ~ c5@7 ~@2",
  AC: "[ab4,c5,f5,ab5]@8 [gb4,a4,db5,gb5] ~ [gb4,a4,db5,gb5] ~ [gb4,a4,db5,gb5]@2 [gb4,a4,db5,gb5]@2", // Fm Gbm
  AD: "~@2 gb5@2 ~@2 gb5@3 ~ gb5@2 [b5,d6]@2 gb5@2, ~@4 [b5,eb6]@5 ~@7", // Bm B
  AE: "~@2 gb5@2 ~@2 gb5@3 ~ gb5@2 ~@2 gb5@2, ~@2 [a5,db6]@3 ~ [a5,db6]@2", AF: "~ gb5 [b5,d6] gb5 ~ e5 [ab5,b5] e5",
  AG: "~ e5 db6 e5 ~ gb5 [bb5,db6] gb5, ~ a5 ~@2", AH: "~ gb5 ~ gb5 ~ e5 ~ e5, ~ [b5,d6] ~ [ab5,b5]",
  AI: "~@2 gb5@2 ~@2 gb5@3 ~ gb5@2 ~@2 gb5 ~, ~@2 [a5,db6]@3 ~ [a5,db6]@2", // A
  AJ: "~@2 gb5@2 ~@2 gb5@3 ~ e5@2 ~@2 e5@2, ~@4 [b5,d6]@5 ~@3 [ab5,b5]@4", // Bm Abm
  AK: "~@4 [a5,db6] ~ [a5,db6]@4 gb5@2 ~@2 gb5@2, ~@2 gb5@7 ~@3 [a5,db6]@4", // A
  AL: "~@4 [a5,db6] ~ [a5,db6]@4 gb5@2 [a5,db6]@2 gb5 ~, ~@2 gb5@7 ~@7", // A
  AM: "~@4 [gb5,a5,b5] ~ [gb5,a5,b5]@2 ~@2 b4@2 ~@2 b4@2, ~ d5@3 ~@2 [d5,e5,ab5]@2", // B7 E7
  AN: "[bb4,db5,gb5,bb5,db6,gb6]@15 ~", // Gb
})).s("gm_piano").gain(0.38).pan(0.4)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@5 A B C D E F G H I B J K E F G L M B I N I B O P Q B R S T U V W X I B Y Z AA AB AC AD AE AF AG AH AI AJ AK AF AK
  AL AK AM
>`.pickRestart({
  A: "bb2@2 ~ bb2 bb2@2 ~ bb2", B: "f2@4 ~@2 f2 ~ f2@4 ~@2 f2@2", C: "bb1@4 ~@2 bb1@2 eb2@4 ~@2 eb2 ~",
  D: "ab2@2 ~ ab2 f2@2 ~ f2", E: "bb2@4 ~@2 bb2 ~ eb2@4 bb2@2 g2@2", F: "c2@4 ~@2 e2@2 f2@4 ~@2 c2 ~",
  G: "bb1@2 ~ bb1 c2@2 ~ c2", H: "f2@15 ~", I: "bb2@4 ~@2 bb2 ~ bb2@4 ~@2 bb2@2", J: "bb2@4 ~@2 bb2@2 eb2@4 ~@2 g2 ~",
  K: "ab2@2 ~ ab2 f2@2 ~ a2", L: "f2@5 ~ f2@2 f2@4 f2@2 ab2@2", M: "bb2@4 ~@2 bb2 ~ bb2@5 ~ bb2@2",
  N: "f2@4 ~@2 f2 ~ f2@4 ~@2 f2 ~", O: "g2@8 g2@2 ~ g2@2 g2@2 ~", P: "c2@13 ~@3", Q: "bb1@4 ~@2 bb1 ~ bb1@4 ~@2 bb1@2",
  R: "bb2@4 ~@2 f2@2 eb2@4 ~@2 g2 ~", S: "ab2@2 ~ g2 f2@2 ~ a2", T: "bb2@4 ~@2 f2 ~ eb2@2 f2@2 g2@2 eb2@2",
  U: "f2@4 ~@2 f2@2 f2@4 ~@2 f2 ~", V: "bb2@4 ~@2 bb2@2 eb2@7 ~", W: "f2@7 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", X: "f2@3 ~",
  Y: "bb2@4 ~@2 bb2@2 eb2@2 f2@2 g2@2 bb2 ~", Z: "ab2@5 ~ g2@2 f2@4 ~@2 a2@2", AA: "bb2@4 ~@2 f2 ~ eb2@4 ~@2 eb2@2",
  AB: "ab2@4 ~@2 ab2@2 db2@4 ~@2 ab2 ~", AC: "bb2@2 ~ bb2 c3@2 ~ c3", AD: "f2@2 ~@2 gb2!4",
  AE: "b2@4 ~@2 b2 ~ b2@4 ~@2 b2@2", AF: "gb2@4 ~@2 gb2 ~ gb2@4 ~@2 gb2@2", AG: "b2@4 ~@2 b2@2 e2@2 gb2@2 ab2@2 b2 ~",
  AH: "a2@2 ~ a2 gb2@2 ~ bb2", AI: "b2@4 ~@2 gb2 ~ e2@4 ~@2 e2@2", AJ: "gb2@4 ~@2 gb2@2 gb2@4 ~@2 gb2 ~",
  AK: "b2@2 ~ gb2 e2 gb2 ab2 e2", AL: "gb2@4 ~@2 gb2@2 gb2@6 gb2 ~", AM: "gb2@7 ~",
})).s("gm_acoustic_bass").gain(0.38)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@4 A@3 B C D E@5 B C D F@4 G@2 H@2 I J K@3 B C D L@2 ~ M@3 B C D N@5 O P Q R S@3 T@3
>`.pickRestart({
  A: "[~@16 f4@5 ~@3 [db4,f4]@7 ~@13 ab3@3 ~, ~@15 [bb3,d4]@6 ~@10 f3@10 ~ f3@5 ~, ~@32 c4@15 ~, ~@8 ab3@3 ~]/3", // Db Bb
  B: "[bb3,db4,f4]@7 ~ [eb4,g4]@7 ~, ~@7 bb3@8 ~", C: "[c4,eb4]@8 [a3,c4,eb4]@7 ~", D: "[bb3,db4,f4]@7 ~ [eb4,g4]@7 ~",
  E: "[[g3,c4,e4]@7 ~ [ab3,c4]@7 ~ [db4,f4]@7 ~ [e4,g4]@7 ~ [ab3,c4]@13 ~@3 [d4,f4]@7 ~ [db4,f4]@7 ~@13 ab3@3 ~, ~@15 bb3@8 c4@6 ~@2 f3@13 ~@3 bb3@8 ~@8 f3@10 ~ f3@5 ~, ~@64 c4@15 ~, ~@16 ab3@3 ~]/5", // C Ab Db Em Ab Dm Db
  F: "[[g3,c4,e4]@7 ~ [ab3,c4]@7 ~ [db4,f4]@7 ~ [e4,g4]@7 ~ [ab3,c4]@13 ~@3 d4@4 ~@8 bb3@3 ~, ~@15 bb3@8 c4@6 ~@2 f3@13 ~@3 bb3@5 ~@2 bb3@6 ~@4, ~@56 d4@7 ~]/4", // C Ab Db Em Ab
  G: "[ab3@6 ~@2 ab3@6 ~@2 d4@4 ~@4 d4@7 ~, f3@5 ~ f3@8 ~ bb3@5 ~@2 bb3@9 ~]/2",
  H: "[[f3,ab3]@5 ~@5 f3@5 ~@13 d4@3 ~, ~@3 f3@2 ~@3 d4@6 ~@2, ~@8 ab3@7 bb3@11 bb3@5 ~]/2", // Fm
  I: "[f3,ab3]@4 ~@6 f3@5 ~, ~@3 f3@2 ~@3, ~@8 ab3@7 ~", J: "[g3,b3]@6 ~@2 [g3,b3]@2 ~ [g3,b3] ~@2 [g3,b3] ~",
  K: "[[g3,c4]@13 ~@3 f4@7 ~ [db4,f4]@7 ~@13 ab3@3 ~, ~@15 [bb3,d4]@8 ~@8 f3@10 ~ f3@5 ~, ~@32 c4@15 ~, ~@8 ab3@3 ~]/3", // C5 Db Bb
  L: "[[f3,ab3,c4]@7 ~ [ab3,c4]@7 ~ [db4,f4]@7 ~@9, ~@15 bb3@8 ~@9]/2", // Fm Ab Db
  M: "[~@16 f4@7 ~ [db4,f4]@7 ~@13 ab3@3 ~, ~@15 [bb3,d4]@8 ~@8 f3@10 ~ f3@5 ~, ~@32 c4@15 ~, ~@8 ab3@3 ~]/3", // Db Bb
  N: "[[ab3,c4,eb4]@7 ~ [ab3,c4,f4]@7 ~ [db4,f4]@7 ~ e4@7 ~ [ab3,c4]@4 ~@12 gb4@7 ~ [d4,gb4]@7 ~@13 a3@3 ~, ~@15 bb3@8 [g3,c4]@6 ~@2 f3@4 ~@12 [b3,eb4]@8 ~@8 gb3@10 ~ gb3@5 ~, ~@64 db4@15 ~, ~@16 a3@3 ~]/5", // Ab Fm Db Ab D C5 B
  O: "[b3,d4,gb4]@7 ~ [e4,ab4]@7 ~, ~@7 b3@8 ~", P: "[db4,e4]@8 [bb3,db4,e4]@7 ~", Q: "[b3,d4,gb4]@7 ~ [e4,ab4]@7 ~",
  R: "[a3,db4,gb4]@7 ~ [a3,db4]@8", // Gbm A
  S: "[[b3,d4,gb4,b4]@7 ~ [e4,ab4]@7 ~@17 [d4,gb4,b4]@7 ~ [e4,ab4]@8, ~@7 b3@8 gb3@16 b3@8 b3@9, ~@16 [a3,db4,gb4]@17 ~@15]/3", // Bm E Bm E Gbm
  T: "[[gb3,a3,db4]@15 ~ [d4,gb4]@7 ~ [e4,ab4]@7 ~ [bb3,db4,gb4]@14 ~@2, ~@15 b3@8 b3@8 gb3@14 ~@3]/3", // Gbm D E Gb
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.6)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@5 A ~ B@2 C D ~@2 A ~ B@2 C D ~@10 A ~ B@2 C D ~@3 A ~ B@2 C ~@3 E ~ F@2 G H ~@6
>`.pickRestart({
  A: "~@7 bb3@8 ~", B: "[~@15 ab3@8 ~@9]/2", C: "~@8 bb3@7 ~", D: "~ f3", E: "~@7 b3@8 ~", F: "[~@15 a3@8 ~@9]/2",
  G: "~@8 b3@7 ~", H: "~ gb3",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@38 A B C D E F G H ~@12>".pickRestart({
  A: "~@3 f4 ~@3 bb3, ~ bb3@3 bb3@3 ~, ~@4 d4@5 ~ db4@6, ~@3 f4",
  B: "~@12 c4@2 ab3 ~, f3@8 f3@7 ~, ~ ab3@4 ab3@2 ~, ~ c4@2 ~, ~@6 f4@9 ~",
  C: "~@6 bb3@2 ~@4 g4@2 bb3 ~, bb3@4 f4@4 ~@2 eb4@5 ~, ~ db4@3 bb3@3 ~",
  D: "~@6 ab3 ~@5 eb4@2 a3 ~, ab3@3 ~ a3@3 ~, ~@2 c4@5 ~@3 c4@5 ~, ~ eb4 ~@2",
  E: "~@4 f4@2 bb3 ~@7 bb3 ~, bb3@3 ~ bb3@3 ~, ~@2 db4@5 ~@3 eb4@5 ~, ~@3 g4",
  F: "~@4 g4@2 c4@2 ~@4 c5@2 f4 ~, c4@3 ~@2 ab4@3, ~ eb4@3 f4@3 ~",
  G: "~@4 f4@2 bb3 ~ c4@2 ~@2 c4@2 e4 ~, bb3@3 ~@5, ~@2 db4@6 ~@2 g4@5 ~", H: "[f4,ab4] ~@15, c4@3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.1)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@37 A B C D E F G H I ~@12>".pickRestart({
  A: "~@4 f4@2 f4@2 ab4 ~ ab4@2 c5@2 ab4@2", B: "bb4@11 ~ ab4@2 g4@2", C: "ab4@2 f4@4 ~ f4",
  D: "db5@2 db5@3 ~ bb4@2 eb5@6 bb4@2", E: "c5@2 ~ c5 f5 eb5 db5 c5", F: "db5@9 ~ bb4 ~ eb5@2 db5@2",
  G: "c5@5 ab4 db5 c5", H: "bb4@2 ab4 g4", I: "f4 ~@3",
})).s("gm_string_ensemble_1").gain(0.38)

// other · violin
const violin = note(`<
  A B C D E ~@8 F G H I J K L M N O P Q R O S T U V W X Y Z AA AB AC AD AE AF AG AH C D AI@2 AJ AK AL AM AN AO AP AO AP
  AO AQ
>`.pickRestart({
  A: "~@3 c5 f5 eb5 db5 c5", B: "db5@9 ~ bb4@2 eb5@2 db5@2", C: "c5@5 ab4 db5 c5", D: "bb4@2 ab4 g4",
  E: "[c4,f4,ab4]@13 ~@3", F: "d5 db5", G: "c5", H: "db5 eb5", I: "c5@2 f5 a5", J: "bb5@4 ab5@4 g5@7 ~",
  K: "c6@4 bb5@4 ab5@7 ~", L: "g5 e5", M: "f5@12 [ab4,ab5] [bb4,bb5] [c5,c6] [eb5,eb6]", N: "[f5,f6]@7 ~",
  O: "~@4 [c5,c6]@2 [bb4,bb5]@2 [ab4,ab5]@2 [g4,g5]@4 [f4,f5] [ab4,ab5]", P: "[bb4,bb5]@6 [c5,c6] [d5,d6]",
  Q: "[c5,c6]@12 [ab4,ab5] [bb4,bb5] [c5,c6] [eb5,eb6]", R: "[f5,f6]@3 ~",
  S: "[b4,f5,b5]@7 ~ [b4,f5,b5]@2 ~ [b4,f5,b5]@2 [b4,f5,b5]@2 ~", T: "[c5,g5,c6]@3 ~", U: "[bb4,d5] [bb4,db5]",
  V: "c5@7 ~", W: "db5@7 ~ eb5@8", X: "c5@7 ~ f5@3 ~ a5@3 ~", Y: "bb5@3 ~ ab5@3 ~ g5@7 ~", Z: "ab5@2 c6 ab5",
  AA: "g5@7 ~ g5@4 eb5@4", AB: "[c5,f5]@8 eb5 ~ eb5 ~ eb5 ~ eb5 ~",
  AC: "f5@4 f4 ~@2 ab4 ~@2 ab4@2 c5@2 ab4@2, ~@3 f4 ~@4", AD: "bb4@6 ab4 g4", AE: "ab4@2 f4@4 ~ f4",
  AF: "db5@2 db5@3 ~ bb4@2 eb5@6 bb4@2", AG: "c5@2 ~ c5 f5 eb5 db5 c5", AH: "db5@9 ~ bb4 ~ eb5@2 db5@2",
  AI: "[f4 ~@14 eb5@8 ~ d5@8]/2", AJ: "db5@7 ~", AK: "gb5@2 ab5 e5", AL: "db5@7 ~ gb5@3 ~ bb5@3 ~",
  AM: "b5@4 a5@3 ~ ab5@7 ~", AN: "a5@2 db6 a5", AO: "gb5@7 ~ ab5@4 e5@4", AP: "gb5 db6 a5 gb5", AQ: "gb5",
})).s("gm_violin").gain(0.26).pan(0.6)

// chords · viola
const viola = note(`<
  ~ A B C D ~@8 E F G H I J K L M N O P Q N R S T U V W X Y Z AA AB ~@8 AC AD AE AF AG AH AI AJ AI AJ AI AK
>`.pickRestart({
  A: "~ c4 bb3 ab3 g3@3 ~", B: "~@2 bb3@2 ab3@2 g3@2 f3@5 ~@3", C: "~@2 g3@2 f3@2 g3@2 e3@3 ~ e3@3 ~",
  D: "[c4,f4,ab4]@13 ~@3, f3 ~@7", E: "bb4@7 ~ bb4@8", F: "ab4@7 ~", G: "[db4,f4]@7 ~ [eb4,g4]@7 ~",
  H: "[eb4,ab4]@8 [a4,c5]@3 ~ [c5,eb5]@3 ~", I: "[bb4,db5]@3 ~ [ab4,c5]@3 ~ [g4,bb4]@7 ~",
  J: "[ab4,c5]@3 ~ [g4,bb4]@3 ~ [f4,ab4]@6 ~@2", K: "[db4,f4]@7 ~ [e4,g4]@7 ~", L: "[f4,ab4]@12 ab4 bb4 c5 eb5",
  M: "f5@7 ~", N: "~@4 c5@2 bb4@2 ab4@2 g4@4 f4 ab4", O: "bb4@11 ~ c5@2 d5@2", P: "c5@12 ab4 bb4 c5 eb5", Q: "f5@3 ~",
  R: "[b4,d5]@7 ~ [b4,d5]@2 ~ [b4,db5]@2 ~ [b4,d5]@2", S: "[c5,e5]@3 ~", T: "f4!2", U: "f4@7 ~", V: "[db4,f4] [eb4,g4]",
  W: "[eb4,ab4]@2 [a4,c5] [c5,eb5]", X: "[bb4,db5] [ab4,c5] [g4,bb4]@2", Y: "[ab4,c5]@2 f5 c5",
  Z: "[f4,db5]@2 [g4,bb4] [eb4,g4]", AA: "[f4,ab4]@8 [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~", AB: "[c4,ab4] ~@3",
  AC: "b4!2", AD: "a4@7 ~", AE: "b4@2 b4 ab4", AF: "[e4,a4]@2 [gb4,bb4] [db5,e5]",
  AG: "[d5,gb5]@4 [db5,e5]@4 [b4,d5]@7 ~", AH: "[db5,gb5]@2 [gb5,a5] [db5,gb5]", AI: "[a4,d5]@2 [b4,e5] [ab4,b4]",
  AJ: "[a4,db5] [gb5,a5] [db5,gb5] [a4,db5]", AK: "[bb4,db5]",
})).s("gm_viola").gain(0.17)

// other · cello
const cello = note("<~ A B C D ~@8 E F G H I J K L ~@8 M F G H I N K O ~@8 P@2 Q R S T U V W X Y Z AA>".pickRestart({
  A: "bb2@2 eb3 bb2", B: "ab2 db3", C: "g2@2 c3!2", D: "f2", E: "d3@7 ~ db3@7 ~", F: "f2@13 ~@3", G: "bb2@7 ~ eb3@7 ~",
  H: "ab2@7 ~ f3@3 ~ a3@4", I: "bb3@3 ~ ab3@4 g3@7 ~", J: "c4@3 ~ bb3@3 ~ ab3@7 ~", K: "g3@7 ~ g3@7 ~", L: "f3@3 ~",
  M: "~@8 db3@7 ~", N: "c4@8 ab3@7 ~", O: "f3 ~", P: "[~@15 eb3@7 ~@2 d3@7 ~]/2", Q: "gb2@13 ~@3", R: "b2@7 ~ e3@7 ~",
  S: "a2@7 ~ gb3@3 ~ bb3@3 ~", T: "b3@3 ~ a3@4 ab3@7 ~", U: "db4@3 ~ b3@3 ~ a3@7 ~", V: "b1@7 ~ e2@7 ~",
  W: "[gb2,gb3]@13 ~@3", X: "b1@7 ~ e2@6 ~@2", Y: "gb2@15 ~, gb3@3 ~", Z: "b1 e2", AA: "[gb2,gb3]",
})).s("gm_cello").gain(0.18).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@5 A@7 B A@7 C A@7 B A@8 B A@7 B A@10 D B>".pickRestart({
  A: "x!2", B: "x", C: "~ x", D: "x ~@3 x ~@2 x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct(`<
  ~@5
  [~@2 x!2 ~@2 x ~]!7
  x
  [~@2 x!2 ~@2 x ~]!7
  [x ~ x!2 ~@4]
  ~@17
  [~@2 x!2 ~@2 x ~]!7
  ~@13
>`).gain(0.33)

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

// drums · hihat
const hihat = s("hh").struct("<~@5 A@7 ~ A@7 B ~@8 A@8 ~ A@7 ~@13>".pickRestart({
  A: "x!8", B: "x!4 ~@4",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@37 [~@7 x] ~@20>").gain(0.27)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@12 x!2 ~ x] ~@8 [~@11 x!2 ~@3] ~@7 [~@4 x!4] ~@12>").gain(0.33)

// drums · open hat
const open_hat = s("oh").struct("<~@12 A ~@7 B ~@16 A ~@7 A ~@12>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.44)

// drums · ride
// … 6 more lines

More by Lewis