Strudelify
Sweet Love cover art

1986 · Rapture

Sweet Love

Anita Baker

KeyB♭ majorTempo89 bpm
0:00/0:00
// Sweet Love — Anita Baker
// 89 bpm, 4/4, key Bb major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(89/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
const piano = note(`<
  A B C D A B C E F@2 G H I@2 J K L M N O P M N O F@2 G H I@2 J K L M N Q P M N R S@2 T@2 U@4 V W G H I@2 J K L M N O P
  M N O L M N O P M N Q L M N Q P M N O L M N O P M N O A B C X@4
>`.pickRestart({
  A: "[a3,c4,d4,f4]@3 [a3,c4,d4]@2 a3@2 d4, ~@3 f4@5", B: "[ab3,bb3,db4,f4]@6 [ab3,bb3,db4,f4]@6 ab3 bb3 db4@2",
  C: "[gb3,bb3,db4,f4]@6 [gb3,bb3,db4,f4]@7 gb3 bb3 db4", // Gbmaj7
  D: "[gb3,bb3,db4,f4] ~ [gb3,bb3,db4,f4]@4 [bb3,c4,eb4,g4]@6 [g3,bb3,c4,eb4]@4", // Gbmaj7 Cm7
  E: "~@2 [gb3,bb3,db4,f4] ~@3 [gb3,bb3,db4,f4]@6 [g3,bb3,eb4,f4]@4", // Gbmaj7 Eb
  F: "[d4@2 eb4 a3@2 f3@2 gb3@2 [gb3,bb3,db4,f4]@2 eb4 [gb3,bb3,db4]@4, a3@3 [d4,f4]@4 ~@9]/2", // Gbmaj7 Gb Dm
  G: "db4 db4@2 eb4@3 ~ gb3, [f3,ab3,bb3]@3 ~", // Bb7
  H: "f3 [ab3,c4,eb4]@2 db4@2 ~@2 f4, ~@3 [gb3,bb3]@3 [gb3,bb3]@2, ~@5 eb4@2 ~", // Ab Gb
  I: "[[a3,c4,d4,f4]@5 f3@2 gb3@2 [gb3,bb3,db4,f4]@2 eb4 [gb3,bb3,db4]@4]/2", // Dm7 Gbmaj7 Gb
  J: "db4 db4@2 eb4@3 ~ f3, [f3,ab3,bb3]@3 ~", K: "gb3 [gb3,bb3,db4,eb4]@2 db4@2 db4 eb4 f4, ~@3 [gb3,bb3]@3 ~@2",
  L: "[bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~, f4!4 ~@4", // Bb
  M: "[bb3,db4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~", // Gb Ebm7
  N: "[db4,f4,gb4] ~ [db4,f4,gb4] ~ [db4,f4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~", // Gbmaj7 Ebm7
  O: "[ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [g3,bb3,c4,eb4]@4 [bb3,c4,eb4] ~ [g3,bb3,c4,eb4]@4", // Bbm7 Cm7
  P: "[bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~", // Bb
  Q: "[ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [g3,bb3,c4,eb4]@4 [bb3,c4,eb4] ~ [g3,bb3,c4,eb4]@3 ~", // Bbm7 Cm7
  R: "[ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [ab3,bb3,db4,f4] ~ [g3,bb3,c4,eb4]@4 [bb3,c4,eb4] ~ [eb4,f4]@2 eb4@2, ~@3 [g3,bb3,c4]", // Bbm7 Cm7 Ebsus2 C7
  S: "[[gb3,db4]@2 bb3@2 c4@2 [gb3,db4]@4 ab4@2 f4@2 [ab3,eb4]@8 [ab3,d4,f4]@4 f4@2 eb4 db4 bb3@2]/2", // Gb5 Ab5 Ddim
  T: "[[gb3,db4]@2 bb3@2 c4@2 [gb3,db4]@4 eb4@2 f4@2 [ab3,eb4]@8 [ab3,d4,f4]@4 f4@2 eb4 db4 bb3@2]/2", // Gb5 Ab5 Ddim
  U: "[[gb3,db4]@2 bb3@2 c4@2 [gb3,db4]@4 ab4@2 f4@2 [ab3,eb4]@8 [ab3,d4,f4]@4 eb4@2 f4@2 gb4@4 ab4@2 f4@2 f4 eb4 db4@2 eb4@2 f4@2 ~@2 [g3,bb3,eb4]@6 g4@6 f4@4, ~@15 [bb3,eb4]@4 ab3@5 ~@3 [bb3,eb4]@5, ~@23 f4@4 ~@5]/4", // Gb5 Ab5 Ddim Eb Eb5
  V: "a3@3 [d4,f4]@4 ~, ~@3 a3@2 ~@3", W: "~ [gb3,bb3,db4,f4]@2 eb4 [gb3,bb3,db4]@4",
  X: "[[gb3,bb3,db4,f4] ~ [gb3,bb3,db4,f4]@4 [bb3,c4,eb4,g4]@43 ~@15]/4", // Gbmaj7 Cm7
})).s("gm_piano").gain(0.42).pan(0.6)

// bass · electric bass finger
const bass = note(`<
  A B C D E B F G H I J K L M N O P Q R S P T U V H M J W X Y Z AA P Q R S P T U V AB AC AD AE AD AF@2 AG AH M AI W L M
  AJ AK P Q R S P T U V P Q R S P T U V P Q R S P T U V P Q R S P T U V A B C AL@4
>`.pickRestart({
  A: "bb1@5 ~ bb1@6 ~@2 bb1 ab1", B: "gb1@4 ~@2 gb1@7 ~ f2@2", C: "eb2@4 ~@2 eb2@9 ~", D: "~@2 ab1@3 ~ f1@5 ~ f1@2 ~@2",
  E: "~@2 f2@2 c3@2 bb2@2 ~ bb2 f2 c2 bb1@3 ab1, bb1@4 bb2 ~@11", F: "eb2@2 ~ eb2@5", G: "~@2 ab1 ~@3 ab1@5 ~ f1@4",
  H: "bb1@4 ~@2 bb1@7 ~ bb1@2", I: "eb2@4 ~@2 eb2@7 ~ eb2 ~", J: "gb1@4 ~@2 gb1@6 ~@2 gb1 ~", K: "f1@5 ~ ab1@6 f1@3 ~",
  L: "~@2 f2 ~ c3@2 bb2@2 ~ bb2 f2 c2 bb1@2 ~ bb1, bb1@4 bb2 ~@11", M: "eb2@4 ~@2 eb2@5 ~ eb2 ~ f1 ~",
  N: "gb1@5 ~ gb1@6 ~@2 gb1 ~", O: "ab1@4 ~@2 ab1@5 ~ f1@4", P: "bb1 ~@5 f2 ~@5 bb1 ~ f2 ~",
  Q: "eb2 ~ eb3 ~@3 bb2 ~@5 eb2 ~ ab1 ~", R: "gb1 ~@5 eb2 ~@5 eb2 ~ gb1 ~", S: "ab1 ~ ab1 ~@3 f1@4 eb2 ~ f1@3 f1",
  T: "eb2 ~ eb3 ~@3 bb2 ~@5 bb1 ~ f2 ~", U: "eb2 ~ eb3 ~@3 bb2 ~@5 eb2 ~ bb1 ~", V: "ab1@4 ~@2 f1@5 ~ f1@3 ~",
  W: "f1@5 ~ ab1@5 ~ f1@3 ~", X: "bb1 ~ f2 ~ c3@2 ~@2 bb1@5 ~ bb1@2, ~@6 d3@7 ~@3", Y: "eb2@4 ~@2 eb2@4 ~@2 eb2 ~ f1 ~",
  Z: "gb1@4 ~@2 gb1@7 ~ gb1 ~", AA: "ab1@5 ~ ab1@6 f1@3 ~", AB: "eb2@4 ~@2 eb2@5 bb1 eb2 ~ eb2 f2",
  AC: "bb1@4 ~@2 bb1@3 f2 ab2 ~ bb2@2 ab2@2", AD: "eb2@4 ~@2 eb2@4 ~ bb1 eb2 ~ eb2 f2",
  AE: "bb1@5 ~ bb1@3 ~ bb1 ~ bb1 c2 d2@2", AF: "[bb1@4 ~@2 bb1@4 bb2@2 bb1 ~ b1@5 ~ b1 ~ bb1@8 f1 ~]/2",
  AG: "f1@5 ~ f1@4 f2@2 f1@4", AH: "bb1@4 ~@2 bb1@8 db2 ~", AI: "gb1@4 ~@2 gb1@3 ~ ab1 ~ gb1@4",
  AJ: "gb1@5 ~ gb1@4 f1 ~ gb1 ~ g1 ~", AK: "ab1@5 ~ ab1@4 ~@2 f1@3 ~", AL: "[~@2 ab1@3 ~ f1@43 ~@15]/4",
})).s("gm_electric_bass_finger").gain(0.52)

// chords · string ensemble 2
const string_ensemble_2 = note("<A@8 B ~@14 C D@4 E@4 F@7 G H@4 I@3 J D@4 E@4 K@32 L@7>".pickRestart({
  A: "[[a4,d5]@15 ~ [bb4,db5]@38 ~ bb4@5 ~@20 [ab4,bb4,db5]@37 [g4,bb4,eb5]@10 ~, f5@52 ~@8 bb4@7 ~@3 f5@50 ~@8, ~@16 ab4@36 ~@2 [g4,eb5]@11 a4@14 ~@49, ~@64 d5@15 ~@49]/8", // D5 Bbm Bbm7 Eb Cm
  B: "[f4,d5]@7 ~, a4@3 ~", C: "[ab4,bb4,db5,f5]@5 [g4,bb4,eb5]@10 ~",
  D: "[[a4,d5]@15 ~@33 eb5@5 [f4,c5,eb5,f5]@10 ~, f5@13 ~@3, ~@2 bb4@5 ~, ~@4 [ab4,db5]@9 ~@3]/4", // D5 F7 Db5
  E: "[~@16 [ab4,bb4,db5]@37 [f4,c5,eb5]@10 ~, d5@15 ~@49, ~ a4@14 ~@49, ~@3 f5@25 ~@4]/4", // Bbm7 F7
  F: "[[a4,d5]@15 ~ [bb4,db5]@38 ~@26 [ab4,bb4,db5]@32, f5@52 ~@3 bb4@5 bb4@7 ~@3 f5@42, ~@16 ab4@36 ~@2 [g4,eb5]@11 a4@14 ~@33, ~@56 g5@8 d5@15 ~@33]/7", // D5 Bbm Bbm7 Cm
  G: "[ab4,bb4,db5]@5 [g4,bb4,eb5]@10 ~, f5 ~", H: "[db5@8 eb5@3 d5@5, f5]/2",
  I: "[db5@8 eb5@3 ~@4 [db5,f5]@4 [c5,eb5]@5, f5@5 ~@3, ~@11 d5@5 ~@8]/3", J: "[eb5,g5]",
  K: "[[a4,d5]@15 ~ [bb4,db5]@38 ~@26 [ab4,bb4,db5]@37 [g4,bb4,eb5]@10 ~, f5@52 ~@3 bb4@5 bb4@7 ~@3 f5@50 ~@8, ~@16 ab4@36 ~@2 [g4,eb5]@11 a4@14 ~@49, ~@56 g5@8 d5@15 ~@49]/8", // D5 Bbm Bbm7 Eb Cm
  L: "[[a4,d5]@15 ~ ab4@36 ~@2 [g4,eb5]@43 ~@15, f5@13 ~@15, ~@2 [bb4,db5]@5 ~@7]/7", // D5 Cm Bbm
})).s("gm_string_ensemble_2").gain(0.16).pan(0.4)

// other · brass section
const brass_section = note(`<
  ~@34 A B ~@11 C ~@10 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A ~@8
>`.pickRestart({
  A: "~@4 [gb4,gb5] ~@2 [db4,db5]@3 [eb4,eb5] ~@5", B: "~@12 [eb4,eb5] ~ [c4,eb5] [d4,f5]",
  C: "~@2 [bb3,bb4]@2 [eb4,eb5] ~ [eb4,eb5]@2 [f4,f5] ~ [eb4,eb5]@6", // Bb Eb F Eb
})).s("gm_brass_section").gain(0.48).pan(0.7)

// chords · pad poly · "January 1998"
const pad_poly = note(`<
  ~@16 A B C D E B F G ~@8 A B C D E B F G H I H I H J@2 K ~@8 A B C D E B F G A B C D E B F G A B C D E B F G A B C D E
  B F G ~@7
>`.pickRestart({
  A: "~@8 [bb3,d4,f4]@3 [bb3,d4] ~@2 [bb3,d4,f4] ~", // Bb
  B: "~@6 [db4,eb4,gb4] ~ [db4,eb4,gb4]@3 [db4,eb4,gb4] ~@2 [db4,eb4,gb4] ~", // Ebm7
  C: "~@6 [eb4,gb4,ab4] ~ [db4,eb4,gb4]@2 ~ [db4,eb4,gb4] ~@2 [db4,eb4,gb4] ~", D: "~@6 [c4,eb4,g4]@7 ~@3",
  E: "~@6 [bb3,d4,f4] ~ [bb3,d4,f4]@2 ~ [bb3,d4,f4] ~@2 [bb3,d4,f4] ~", // Bb
  F: "~@6 [eb4,gb4,ab4] ~ [db4,eb4,gb4]@2 ~ [eb4,gb4] ~@2 [db4,eb4,gb4] ~", G: "~@3 [c4,eb4,g4]@4 ~",
  H: "f4@3 ~ db4 ~ bb3 ~ f4@3 ~ db4 ~ bb3 ~, e4 ~@7 e4 ~@7", I: "ab4@15 ~", J: "[ab4@7 bb4@4 ab4@5]/2", K: "g4",
})).s("gm_pad_poly").gain(0.3).pan(0.4)

// bass · slap bass 1 · "using Roland XP-50 Music"
const bass_2 = note("<~@19 A ~@15 B ~@23 B ~@7 B ~@7 B ~@7 B ~@11>".pickRestart({
  A: "~@10 eb2 f2 f1@3 ~", B: "~@11 f2 ~@4",
})).s("gm_slap_bass_1").gain(0.52)

// chords · electric guitar jazz · "Track 8"
const electric_guitar_jazz = note(`<
  A B C D A B C E F G H I J K L M N O P Q N O P Q F G H I J K L M N O P R N O P S T@4 U@4 V G H W J G H X N O P Q N O P
  Q N O P Q N O P R N O P R N O P Q N O P Q N O P Q A B C Y@4
>`.pickRestart({
  A: "[a4,c5,d5,f5]@3 [a4,c5,d5]@2 a4@2 d5, ~@3 f5@5", B: "[ab4,bb4,db5,f5]@6 [ab4,bb4,db5,f5]@6 ab4 bb4 db5@2",
  C: "[gb4,bb4,db5,f5]@6 [gb4,bb4,db5,f5]@7 gb4 bb4 db5", // Gbmaj7
  D: "[gb4,bb4,db5,f5] ~ [gb4,bb4,db5,f5]@4 [bb4,c5,eb5,g5]@6 [g4,bb4,c5,eb5]@4", // Gbmaj7 Cm7
  E: "~@2 [gb4,bb4,db5,f5] ~@3 [gb4,bb4,db5,f5]@6 [g4,bb4,eb5,f5]@4", F: "a4@3 [d5,f5]@4 ~, d5@2 ~ a4@2 ~@3",
  G: "[gb4,bb4,db5,f5] ~ [gb4,bb4,db5]@2", H: "[f4,ab4,bb4]@3 ~",
  I: "[ab4,c5,eb5]@2 ~ db5@2 ~@2 f5, ~@3 [gb4,bb4]@3 [gb4,bb4]@2, ~@5 eb5@2 ~", J: "[a4,c5,d5,f5]@5 ~@3",
  K: "[gb4,bb4,db5,f5]@2 ~ eb5 [gb4,bb4,db5]@4", L: "[f4,ab4,bb4]@6 ~ f4",
  M: "gb4 [gb4,bb4,db5,eb5]@2 db5@2 db5 eb5 f5, ~@3 [gb4,bb4]@3 ~@2", // Ebm7 Gb
  N: "[bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~", // Bb
  O: "[bb4,db5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~", // Gb Ebm7
  P: "[db5,f5,gb5] ~ [db5,f5,gb5] ~ [db5,f5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~ [bb4,db5,eb5,gb5] ~", // Gbmaj7 Ebm7
  Q: "[ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~ [g4,bb4,c5,eb5]@3 ~ [bb4,c5,eb5] ~ [g4,bb4,c5,eb5]@4", // Bbm7 Cm7
  R: "[ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~ [g4,bb4,c5,eb5]@3 ~ [bb4,c5,eb5] ~ [g4,bb4,c5,eb5]@3 ~", // Bbm7 Cm7
  S: "[ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~ [ab4,bb4,db5,f5] ~ [g4,bb4,c5,eb5]@3 ~ [bb4,c5,eb5] ~ [eb5,f5]@2 eb5@2, ~@3 [g4,bb4,c5]", // Bbm7 Cm7 Ebsus2 C7
  T: "[[gb4,db5] ~@2 [gb4,db5]@2 ~@2 [ab4,eb5]@4 [ab4,d5,f5]@4 ~]/2", // Gb5 Ab5 Ddim
  U: "[[gb4,db5] ~@2 [gb4,db5]@2 ~@2 [ab4,eb5]@4 [ab4,d5,f5]@2 ~@2 [bb4,eb5]@4 ~@5 [g4,bb4,eb5]@3 g5@3 f5@2, ~@15 gb5@2 ~@2 ab4@5 ~@3 [bb4,eb5]@5, ~@23 f5@4 ~@5]/4", // Gb5 Ab5 Ddim Eb5 Eb Eb5
  V: "a4@3 [d5,f5]@4 ~, ~@3 a4@2 ~@3", W: "[ab4,c5,eb5]@2 ~ [gb4,bb4]@3 [gb4,bb4]@2, ~@3 db5@2 ~@3",
  X: "[gb4,bb4,db5,eb5]@2 ~ db5@2 db5 eb5 f5, ~@3 [gb4,bb4]@3 ~@2", // Ebm7 Gb
  Y: "[[gb4,bb4,db5,f5] ~ [gb4,bb4,db5,f5]@4 [bb4,c5,eb5,g5]@43 ~@15]/4", // Gbmaj7 Cm7
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.2)

// other · piano · "Track 15"
const piano_2 = note(`<
  ~@16 A B C D A E F G ~@8 A B C D A E F G ~@16 A B C D A E F G A B C D A E F G A B C D A E F G A B C D A E F G ~@7
>`.pickRestart({
  A: "bb2 ~@5 f3 ~@5 bb2 ~ f3 ~", B: "eb3 ~ eb4 ~@3 bb3 ~@5 eb3 ~ ab2 ~", C: "gb2 ~@5 eb3 ~@5 eb3 ~ gb2 ~",
  D: "ab2 ~ ab2 ~@3 f2@4 eb3 ~ f2@3 f2", E: "eb3 ~ eb4 ~@3 bb3 ~@5 bb2 ~ f3 ~", F: "eb3 ~ eb4 ~@3 bb3 ~@5 eb3 ~ bb2 ~",
  G: "ab2@4 ~@2 f2@5 ~ f2@3 ~",
})).s("gm_piano").gain(0.32).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@8 [~ x ~ x]!8 ~@8 [~ x ~ x]!8 ~@63>").gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~ A B C ~ A ~@17 C ~@15 C ~@6 B C ~@15 C ~@7 C ~@7 C ~@7 C ~ A B ~@4>".pickRestart({
  A: "~@4 x ~@8 x!2 ~", B: "~ x ~@2", C: "~@13 x!2 ~",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~ A B A ~ A C D@3 E D@3 E D@3 E D@3 F D@3 E D@3 E D@3 E D@3 F D@6 ~ G D@3 E D@3 E D@3 E D@3 F D@3 E D@3 F D@3 E D@3
  F D@3 E D@3 F A ~ A B ~@3
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~@3 x ~@12", D: "x!7 ~", E: "x!6 ~@2", F: "x!3 ~@5", G: "x!5 ~@3",
})).gain(0.57)

// drums · mid tom
const mid_tom = s("mt").struct("<A B C D A B C ~@16 D ~@15 D ~@6 C D ~@15 D ~@7 D ~@7 D ~@7 D A B C ~@4>".pickRestart({
  A: "~@3 x ~@10 x ~", B: "~@3 x ~@7 x!2 ~@3", C: "~@3 x ~@12", D: "~@11 x!2 ~@3",
})).gain(0.57)

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

// drums · high tom
const high_tom = s("ht").struct("<~ A ~ A ~ A ~@17 A ~@15 A ~@6 B A ~@15 A ~@7 A ~@7 A ~@7 A ~ A ~@5>".pickRestart({
  A: "~@9 x ~@6", B: "~ x ~@6",
})).gain(0.57)

// drums · crash
const crash = s("cr").struct(`<
  A@3 B A@3 B ~@15 B ~@15 B ~@5 C D A ~@15 B E ~@3 E ~@2 B E ~@3 E ~@2 B E ~@3 E ~@2 B A@3 B ~@3
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "~@3 x ~@4", C: "~@7 x", D: "~@3 x ~@2 x ~", E: "x",
})).gain(0.57)

stack(
  piano, bass, string_ensemble_2, brass_section, pad_poly, bass_2, electric_guitar_jazz, piano_2, kick, rim, snare,
  low_tom, hihat, mid_tom, open_hat, high_tom, crash
)

More by Anita Baker