Strudelify
The Girl From Ipanema (Garota de Ipanema) cover art

Verve Jazz Masters 9: Astrud Gilberto

The Girl From Ipanema (Garota de Ipanema)

Astrud Gilberto

KeyF minorTempo126 bpm
0:00/0:00
// The Girl From Ipanema (Garota de Ipanema) — Astrud Gilberto
// 126 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · "#Sft.Pian"
const epiano1 = note(`<
  ~@7 A B@2 C D E F@2 G H@2 I@2 E J@3 K L M N O P Q@2 R@2 S T U V W X Y Z I@2 AA@4 AB@2 B@2 C D E F@2 G H@2 I@2 E AC@3 K
  L M N O P Q@2 R@2 S T U AD W X AE@2 AF@2 AG@2 AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
>`.pickRestart({
  A: "~@7 ab4", B: "[[f4,ab4,c5,eb5]@12 ~ [f4,ab4,c5,eb5]@3]/2", C: "[f4,g4,c5,eb5]",
  D: "~@2 [f4,g4,c5,eb5]@2 ~@2 [f4,g4,c5,eb5]@9 ~", E: "[gb4,bb4,db5,f5]@15 ~",
  F: "[[gb4,bb4,c5,f5]@15 ~ ab5@16, ~@15 [c5,db5,f5]@17]/2", // Gbmaj7 Dbmaj7
  G: "[c4,d4]@2 [c4,d4]@2 [ab3,c4,d4] ~ [gb3,d4]@2 [gb3,ab3,d4] ~ [gb3,ab3,c4,d4] ~ [gb3,c4,d4]@2 [gb3,c4,d4]@2, [gb3,ab3] ~ [gb3,ab3] ~ gb3@2 [ab3,c4] ~ c4@2 ~@2 ab3 ~ ab3 ~", // Csus2 Dm7b5 D Abm7b5 D7 Gbsus2 Ab
  H: "[[eb4,f4,ab4,c5]@15 ~ [ab4,c5,eb5]@10 [f4,ab4,c5,eb5]@6, ~@15 f4@10 ~@7]/2", // Fm7 Ab Fm7
  I: "[[f4,g4,c5,eb5]@10 ~ [f4,g4,c5,eb5] ~ [f4,g4,c5,eb5]@3]/2", // Cm
  J: "[~@6 [gb4,bb4,c5]@2 ~@2 f5@2 eb5@3 ~@17 ab6@15 ~, ~@6 f5 ~@3 [gb4,bb4,c5]@5 c5@11 ab4@4 c6 f6@16 ~, ~@16 db5@13 ab5@18 ~, ~@16 [f5,ab5]@11 c5@20 ~, ~@28 f5@19 ~]/3", // Cm7b5 Fm
  K: "[d4,gb4,a4,db5]@13 a3 [d4,gb4,a4]@2, ~@14 db4 ~", L: "[db4,d4,gb4,a4]@7 ~", M: "[f4,a4,b4,e5]@15 ~",
  N: "[f3,b3,e4]@2 [f3,a3,e4] ~ [a3,eb4] ~ [f3,a3,b3,d4]@9 ~, a3 ~ b3@4 ~@10", // E Fmaj7 Adim Bm7b5
  O: "[f4,a4,b4,e5]@6 ~ f5, ~@3 a4, ~@13 b4@3", P: "[a4,c5,d5]@15 ~",
  Q: "[[f4,ab4,c5,d5]@5 ~@5 d4@6, ~@5 f6@2 f5 d5@8, ~@11 d6@6 c5@15, ~@6 c6@3 ab4@7, ~@13 ab5@6 f4@13]/2", // Dm7b5
  R: "[[gb4,bb4,db5,f5]@21 ~ [gb4,bb4,db5,f5]@9 ~]/2", S: "[eb4,gb4,a4,db5]@10 gb4@3 [db5,e5]@3, ~@5 a4@3",
  T: "[a4,eb5]@15 ~", U: "[f4,ab4,c5,eb5]", V: "[g4,b4] [gb4,bb4] ab4!2, d4, ~@8 f4@7 ~", W: "[gb3,bb3,db4,f4]",
  X: "[ab3,c4,d4,gb4,a4] ~@3 [ab3,c4,d4,gb4,a4]@12", Y: "[eb4,f4,ab4,c5]@15 ~",
  Z: "~ [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5]@3", // Fm7
  AA: "[[gb4,bb4,db5,f5]@15 ~ [bb4,c5,f5]@15 ~ ab5@5 ~ ab5@2 ~@6 eb4@10 ab5@2 c6 db6@2 b5 c6@2, ~@15 gb4@15 ~ c5@24 ~@9, ~@32 [db5,f5]@25 ~@7, ~@40 ab5@15 ~@9]/4", // Gbmaj7 Bbsus2 Db
  AB: "[ab5@6 bb5 g5 ab5@8 ~@16, [f3,ab3,c4,eb4]@31 ~]/2", // Fm7
  AC: "[[gb4,bb4,c5,f5]@15 ~ [db5,f5,ab5]@31 ~, ~@15 c5@31 ~@2]/3", AD: "g4 gb4 ~ ab4, [d4,b4], ~@8 f4@7 ~",
  AE: "[[eb4,f4,ab4,c5]@14 ~ [ab5,c6,eb6]@16 ~, ~@14 f5@17 ~]/2", // Fm7 Ab
  AF: "[~@8 [c6,eb6]@7 ~, [f4,g4,c5,eb5]@5 ~@3, ~@15 [f5,g5,bb5]@15 ~@2]/2", // Cm Gm7
  AG: "[[gb4,bb4,db5,f5]@15 ~ c5@6 ~@2 c5@2 f4@5 ~, ~@15 gb4@15 ~@2, ~@16 [bb4,f5]@15 ~]/2", // Gbmaj7 Bb5
  AH: "[db4,ab4]@6 ~ ab4@2 ~ eb4@6, [c4,f4]@15 ~", AI: "~@3 b4@3 ab4@2, [gb3,a3,b3,e4]@15 ~",
  AJ: "f4@7 ab4@3 eb4@4 ab5@2, c4, db4@5 ~@3, ab4@3 ~@5",
  AK: "b5@3 ab5@2 bb5 b5@2 ab5@3 b5@3 ab5@2, [gb3,ab3,c4,e4]@15 ~, bb5 ~@10 bb5 ~@4", AL: "[f3,ab3,c4,eb4,ab5]",
  AM: "~@5 g4 ab4@10, [gb3,ab3,c4,e4]@15 ~", AN: "~@10 ab4!2 ~ ab4!2 ~, [f3,ab3,c4,eb4]@7 ~",
  AO: "ab4!2 ~ ab4!2 ~ ab4!2 ~ ab4!2 ~ ab4 ~ ab4 ~, [gb3,ab3,c4,e4]@7 ~", // Caug
  AP: "~@2 ab5 f6 ~ db6 ab5 f6 ~ db6 ab5 f6 ~ db6 ab5 e6, [f3,ab3,c4,eb4]@7 ~", // Fm7
  AQ: "~ b5 ab5 d6 ~ b5 ab5 d6 ~ b5 ab5 e6 ~ b5 ab5 f6, [gb3,ab3,c4,e4]@15 ~", // Caug
  AR: "~ db6 ab5 f6 ~ db6 ab5 f6 ~ db6 ab5 f6 ~ db6 ab5 ab6, [f3,ab3,c4,eb4]@7 ~", // Fm7
  AS: "~ d6 b5 ab6 d6 b5 d6 b5 ab5 b5 ab5 e5 ab5 e5 d5@2, [gb3,ab3,c4,e4]", AT: "[f3,ab3,c4,eb4]@7 ~",
  AU: "[gb3,ab3,c4,e4]", // Caug
})).s("gm_epiano1").gain(0.33)

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  A@2 B@2 C@2 D E F G H I J K L M F N H I O P L Q R S T U V W X Y Z AA AB AC AD AE@2 AF F AG H AH AI AJ AK AL AK AM AN
  AO AP AQ AR AS L AT AU AV AW AX AY AZ L BA BB BC BD BE BF W BG BH Z BI BJ BK AD BL@2 BM BN AG BO BP BQ BR BS BT BS BU
  BV BU BV BW BX BY BX BZ BX BY
>`.pickRestart({
  A: "[b1@31 ~]/2", B: "[b1@23 ~ b1@2 ~ bb1@2 ~ a1@2]/2", C: "[ab1@15 ~]/2", D: "ab1@15 ~",
  E: "ab1 ~ d4 [a3,b3,c4] g3!2 [d3,e3,f3] c3!2 [g2,a2,bb2] f2!2 [c2,d2,eb2] bb1 b1 [gb1,ab1,a1]", // Am Dm Gm Cm Gbm
  F: "db2@3 ~@4 db2 db2@3 ~@3 b1 c2", G: "db2@3 ~@4 db2 db2@3 ~@3 db2 d2", H: "eb2@3 ~@4 eb2 eb2@3 ~@3 db2 d2",
  I: "eb2@3 ~@4 eb2 eb2@2 g1 ~ bb1 ~ d2@2", J: "eb2@3 ~@4 eb2 eb2@3 ~@3 gb1 g1", K: "ab1@3 ~@4 ab1 ab1@3 ~ ab1@2 c2@2",
  L: "db2@3 ~ f1@3 ~ gb1@3 ~ g1@3 ~", M: "ab1@3 ~ bb1@3 ~ b1@3 ~ c2@3 ~", N: "db2@3 ~@2 db2 ~@2 db2@3 ~@3 db2 d2",
  O: "eb2@3 ~@4 eb2 eb2@3 ~@3 bb1 a1", P: "ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~ ab1@2 ~@2",
  Q: "ab1@3 ~ c2@3 ~ db2@3 ~ c2@2 db2@2", R: "d2@3 ~ b2@2 ~ d2 a2 d2 a2@2 a1@2 b1@2",
  S: "d2@3 ~ b2@2 ~ d2 a2 d2 a2@2 d2@2 a1@2", T: "g1@3 ~ e2@2 ~ g1 d2 ~ e1@2 f1@2 gb1@2",
  U: "g1@3 ~ e2 g1 d2@2 ~@2 a1@2 b1@2 d2@2", V: "d2@2 e2 ~ a1@3 ~ d2@3 ~ a1@2 c2@2",
  W: "d2@3 ~ f1@3 ~ a1@3 ~ c2 ~ b1@2", X: "bb1@3 ~ ab1@3 ~ g1@3 ~ f1@3 ~", Y: "bb1@3 ~ c2@3 ~ db2@3 ~ d2@3 ~",
  Z: "eb2@3 ~ f1@3 ~ gb1@3 ~ f1@3 ~", AA: "eb2@3 ~ f2@3 ~ gb2@2 f2 ~ eb2@2 bb1@2",
  AB: "gb1@3 ~ db2@3 ~ a1@3 ~ gb1@2 ~ bb1", AC: "b1@3 ~ gb1@2 ~ gb1 b1 gb1 b1@2 gb1 ~ b1@2",
  AD: "f1@3 ~@4 f1 f1@3 ~@3 f1!2",
  AE: "[bb1@2 bb2@2 bb1!2 ~ bb1 bb1@3 ~ bb1@2 db2 ~ eb2@3 ~@4 eb2 eb2@3 ~ ab2 [f2,g2] [d2,e2] c2, ~@15 d2@2 ~@15]/2", // Fsus2 Dsus2
  AF: "ab1@2 ~@2 ab2@11 ~", AG: "db2@3 ~@4 db2 ~@2 bb2@3 ~ ab2@2", AH: "eb2@3 ~@4 g1 g1@2 g1 ~ bb1 ~ d2@2",
  AI: "eb2@3 ~@3 bb1 d2 eb2@3 ~@3 db2 bb1", AJ: "ab1@2 ~@5 ab1 ab1@3 ~ ab1 ~ c2@2", AK: "db2@3 ~ f1@3 ~ ab1@3 ~ c2@3 ~",
  AL: "db2@2 ~ ab2 bb2@3 db2 ab2 db2 ab2@2 f2@2 ab2@2", AM: "db2@2 ~ ab2 bb2 db2 bb2@2 ab2@2 bb2 ~ db3 bb2 ab2@2",
  AN: "db2@3 ~@4 db2 db2@3 ~ ab1@2 bb1@2", AO: "db2@3 ~@2 ab1 bb1 ~ db2@2 eb3@3 ~ db3@2",
  AP: "eb2@3 ~@4 eb2 eb2@3 ~ bb1 ~ db2@2", AQ: "eb2@3 ~@2 bb1 db2 ~ eb2@2 f3@3 ~ eb3@2",
  AR: "eb2@3 ~@3 bb1 db2 eb2@3 ~ eb2@2 bb1@2", AS: "ab1@2 ~@5 ab1 ab1@2 ~ ab1!2 ~ c2@2",
  AT: "ab1@3 ~ a1@3 ~ b1@3 ~ c2@3 ~", AU: "db2@3 ~@4 db2!2 ~ bb1@2 ab1@2 bb1@2",
  AV: "db2@3 ~@2 db2 ~ db2!2 ~ bb1@2 ab1@2 bb1@2", AW: "eb2@3 ~@2 db2 ~@2 eb2@3 ~ bb1 ~ db2@2",
  AX: "eb2@3 ~@2 db2 ~@2 f2@2 db2 ~ bb1@2 d2@2", AY: "eb2@2 ~@2 f1@2 ~@2 gb1@3 ~ f1@3 ~",
  AZ: "eb2 ~ bb1 ~ eb2 ~ bb1 ab1", BA: "ab1@3 ~ bb1 ~ c2@2 db2@2 db2@2 ab1 ~ db2 ~",
  BB: "d2@3 a2 b2 a2 b2@2 a2@2 a1@2 b1 ~ db2@2", BC: "d2@3 ~ gb2@2 ~ d2 a2 d2 a2@2 d2@2 ~@2",
  BD: "g1@3 d2 e2 d2 e2@2 d2@4 f1@2 gb1@2", BE: "g1@3 ~ a1@3 ~ b1@3 ~ c2@2 db2@2", BF: "d2@3 ~ c2@3 ~ b1@3 ~ a1@3 ~",
  BG: "bb1@3 ~ ab1@3 ~ f1@3 ~ c2@3 ~", BH: "bb1@2 bb2@2 c2 c3 c2@2 db2 db3 db2@2 d2@2 d3@2",
  BI: "eb2@3 ~ f2@3 ~ gb2@3 ~ f2@2 eb2@2", BJ: "gb1@3 ~ db2@3 ~ a1@3 ~ gb1@3 ~",
  BK: "b1@3 ~ gb1@2 ~ bb1 b1@3 ~ eb2 c2 [a1,b1] g1", // Asus2
  BL: "[bb1@3 ~@4 bb1 bb1@3 ~ bb1@2 db2 ~ eb2@3 ~@4 eb2 eb2@3 ~@5, ~@15 d2@2 ~@15]/2", BM: "a1@2 ~@2 d3@11 ~",
  BN: "db2@3 ~@4 db2 db2@3 ~@3 ab1 bb1", BO: "eb2@3 ~@4 eb2 eb2@3 ~@3 bb1 db2", BP: "eb2@3 ~@4 eb2 ~@2 c3@3 ~ bb2@2",
  BQ: "eb2@3 ~@3 bb1 d2 eb2@2 gb1 ~ gb1@2 g1@2", BR: "ab1 ~@3 ab1@3 ~ bb1@3 ~ c2@3 ~",
  BS: "db2@3 ~ f1@3 ~ ab1@3 ~ db2@3 ~", BT: "d2@3 a2 b2@2 b2@2 d2 a2 b2@2 d2@2 gb2@2",
  BU: "d2@2 ~ a2 b2 d2 b2@2 a2@2 b2 ~ d2 gb2 a2@2", BV: "db2@3 ~ f1@3 ~ ab1@2 bb1 ~ c2 ~ db2@2",
  BW: "d2@2 ~ a2 b2 d2 b2@2 d2 a2 b2@2 d2!2 gb2@2", BX: "db2@3 ~ bb1@3 ~ ab1@3 ~ db2@3 ~",
  BY: "d2@3 ~ b1@2 ~ d2 a1@2 b1@2 e2@2 d2@2", BZ: "d2@3 ~ b1@4 a1@2 b1@2 e2@2 d2@2",
})).s("gm_electric_bass_finger").gain(0.45)

// other · string ensemble 1 · "#Vlo.Strn"
const string_ensemble_1 = note(`<
  ~@8 A@2 B@2 C@3 ~ A@2 B@2 D@4 E@2 F@2 G@2 H@2 I@2 J@3 K L M N@2 O@2 P Q R@6 B@2 C@3 S A@2 B@2 T@4 E@2 F@2 G@2 H@2 I@2
  J@3 K L M N@2 O@2 P Q ~@14
>`.pickRestart({
  A: "[c4,db4,f4,ab4]/2", B: "[bb3,c4,eb4,g4]/2", C: "[[db4,bb4] c4 [c4,db4,f4], [eb4,gb4]@2 ~, ~ ab4@2]/3",
  D: "[[db4,bb4]@16 c4@16 [c4,db4,f4]@17 ~@15, [eb4,gb4] ~, ~@16 ab4@33 ~@15]/4", // Gb Dbmaj7 Ebm
  E: "[[db4,db5]@18 [d4,d5]@3 [db4,db5]@3 [b3,b4]@3 [db4,db5]@3 [b3,b4]@2]/2", F: "[[a3,a4]@8 [b3,b4]@21 ~@3]/2",
  G: "[[e4,e5]@18 [f4,f5]@3 [e4,e5]@3 [d4,d5]@2 [e4,e5]@3 [d4,d5]@3]/2", // E F E D E D
  H: "[[c4,c5]@8 [d4,d5]@16 ~@4 [f3,gb3,f4,gb4] ~ [bb3,c4,bb4,c5] [db4,eb4,db5,eb5], ~@29 [ab3,ab4]@2 ~]/2", // C D Gbmaj7 Bbsus2 Dbsus2 Ab
  I: "[[f4,f5]@18 [gb4,gb5]@3 [f4,f5]@3 [eb4,eb5]@3 [f4,f5]@3 [eb4,eb5]@2]/2", // F Gb F Eb F Eb
  J: "[[db4,db5]@4 [eb4,eb5]@9 [f4,f5] [gb4,gb5] [ab4,ab5]@7 [bb4,bb5]@2]/3", // Db Eb F Gb Ab Bb
  K: "[b4,b5]@4 [bb4,bb5]@3 ~ ab5@4 [gb4,gb5]@4, ~@7 ab4@4 ~@5", L: "[f4,f5]@5 [db4,db5] [bb3,bb4] [ab3,ab4]",
  M: "[f4,a4] ~@3 [f4,a4]@8 ~@4", N: "[ab4@5 bb4 c5 db5]/2", O: "[eb5@5 f5 c5 bb4]/2", P: "[db4,f4,gb4,bb4]",
  Q: "[bb3,c4,f4,ab4]", R: "[c4,db4,f4,ab4]/6", S: "[e4,ab4]@2 ~@2 [c4,e4,ab4]@11 ~, c4 ~@15",
  T: "[[db4,bb4]@16 c4@16 [c4,db4,f4]@29 ~@3, [eb4,gb4] ~, ~@16 ab4@45 ~@3]/4", // Gb Dbmaj7 Ebm
})).s("gm_string_ensemble_1").gain(0.4).pan(0.4)

// other · vibraphone · "Vibraphon"
const vibraphone = note("<~@50 A@2 B@2 C D@2 ~ E@3 F G H I J ~@36>".pickRestart({
  A: "[ab5@2 f5 ~ gb5 ~ g5 ab5@2 ~ f5 ~ gb5 ~ g5 ab5@2 eb6@2 c6 db6 ab5 f5 ~ c6 db6 c6 bb5 ab5 g5 bb5 g5]/2",
  B: "[ab5 gb5 f5 eb5 d5 db5 f5 eb5 c5 db5 bb4 f4 [c5,db5] c5 bb4 a4@2 c5@2 bb4 ~ f4@2 ~ c4@3 ~@3 eb4 f4]/2", // Dbmaj7
  C: "gb4 ~ gb4 bb4 ~ bb4 db5 ~ db5 f5 ~ f5 ab5 ~@3",
  D: "[~@3 f5 ab5 g5 gb5 ab5 f5 eb5 ~ db5@2 c5@2 eb5@2 c5 db5 eb5 c5 ab4 ~ f4 ab4@4 ~@4]/2",
  E: "[[c6,db6] ~ db6 ~ db6@2 db6@2 db6@2 db6@2 [c6,db6] ~ db6 db6@2 c6@2 eb6@2 db6@2 ~ c6 db6 b5 bb5 a5 bb5 c6 bb5@2 g5@2 db5 f5 g5 ~ bb4 f5 bb4 eb5 bb4 db5 f4 c5 eb4, ~@4 c6 ~@3 c6 ~@39]/3", // Dbmaj7
  F: "bb4 eb4 ~ eb4 g4 [g4,ab4] f4 eb4 db4 c4 ~@6, ~ ab4 ~@6", // Abmaj7
  G: "~@3 db4 f4 ~ ab4 ~ gb4 eb4 ~ eb4 [gb4,bb4] db5 f5 db5", H: "bb4 ~@15",
  I: "ab5 [ab5,bb5] g5 [g5,ab5] gb5 [gb5,g5] f5 [f5,gb5] [e5,f5] e5 eb5 [eb5,e5] [d5,eb5] d5 db5 [db5,d5]", // Absus2 Abmaj7 Gmaj7 Gbmaj7 Fmaj7 Emaj7 Ebmaj7 Dmaj7
  J: "[c5,db5] c5 [b4,c5] b4 a4 [a4,bb4] ab4 [gb4,g4] f4@2 ~@6", // Dbmaj7 Cmaj7 Bbmaj7 Gmaj7
})).s("gm_vibraphone").gain(0.48)

// other · tremolo strings · "Trm.Strin"
const tremolo_strings = note("<A@2 B@2 C@2 D E ~@94>".pickRestart({
  A: "[b3@29 ~@3]/2", B: "[b3@22 ~@2 b3@2 ~ bb3@2 ~ a3@2]/2", C: "[ab3@29 ~@3]/2", D: "ab3@15 ~",
  E: "[g3,ab3] [f3,gb3] ~@14", // Abmaj7 Gbmaj7
})).s("gm_tremolo_strings").gain(0.4)

// chords · electric guitar clean · "#Chrs.Gtr"
const electric_guitar_clean = note(`<
  ~@8 A@2 B@2 C D A E A@2 B@2 C D A@2 ~@16 A@2 B@2 C D A@6 B@2 C D A E A@2 B@2 C D A@2 ~@16 A@2 B@2 C D A F A F A F A F
  A F A F A F
>`.pickRestart({
  A: "~@2 [c4,eb4,f4,ab4] ~ [c4,eb4,f4,ab4]!2 ~ [c4,eb4,f4,ab4] ~@8", // Fm7
  B: "~@2 [bb3,c4,f4,g4] ~ [bb3,c4,f4,g4]!2 ~ [bb3,c4,f4,g4] ~@8", // Bbsus2
  C: "~@2 [db4,f4,gb4,bb4] ~ [db4,f4,gb4,bb4]!2 ~ [db4,f4,gb4,bb4] ~@8", // Gbmaj7
  D: "~@2 [ab3,c4,f4,ab4] ~ [ab3,c4,f4,ab4]!2 ~ [ab3,c4,f4,ab4] ~@8", // Fm
  E: "~@2 [c4,e4,gb4,ab4] ~ [c4,e4,gb4,ab4]!2 ~ [c4,e4,gb4,ab4] ~@8", // Caug
  F: "~@2 [c4,e4,gb4,a4] ~ [c4,e4,gb4,a4]!2 ~ [c4,e4,gb4,a4] ~@8", // Gbm7b5
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.8)

// chords · brass section · "Brass Sec"
const brass_section = note(`<
  A@2 B@2 C@2 D E ~@7 F G ~ H ~ I ~ G ~ J@2 K@2 L@2 M@2 N O P Q R S T ~ U@2 V@2 W X G@2 ~@9 F G ~ H ~ I ~ G ~ J@2 K@2
  L@2 M@2 N O P Q R S T ~ U@2 V@2 W X G ~ Y ~ Y ~ Y ~ Y ~ Y ~ Y ~
>`.pickRestart({
  A: "[[b1,b2]@31 ~]/2", // B
  B: "[[b1,b2]@21 ~@3 [b1,b2,b4]@2 ~ [bb1,bb2]@2 ~ [a3,a4]@2, ~@24 b3 ~@2 [bb3,bb4] ~ [a1,a2]@2 ~]/2", // B Bb A Bb A
  C: "[[ab1,ab2,ab3,ab4]@29 ~@3]/2", D: "[ab1,ab2,ab3,ab4,ab5]@15 ~", E: "[ab4,ab5]@7 ~@9, ab3 ~@7, [ab1,ab2] ~@15",
  F: "[d3,ab3,c4,e4,gb4,ab4] ~@3 [d3,ab3,c4,e4,gb4,ab4]@9 ~@3",
  G: "~@2 [db3,ab3,c4,eb4,f4,ab4] ~ [db3,ab3,c4,eb4,f4,ab4]@2 ~ [db3,ab3,c4,eb4,f4,ab4] ~@8", // Dbmaj7
  H: "~@2 [eb3,bb3,c4,eb4,f4,g4] ~ [eb3,bb3,c4,eb4,f4,g4]@2 ~ [eb3,bb3,c4,eb4,f4,g4] ~@8", // Cm7
  I: "~@2 [eb3,bb3,db4,f4,gb4,bb4] ~ [eb3,bb3,db4,f4,gb4,bb4]@2 ~ [eb3,bb3,db4,f4,gb4,bb4] ~@8", // Ebm7
  J: "[[d3,d4,gb4,a4], db4@15 ~]/2", K: "[[g3,b3,e4,f4,a4]@25 ~@7]/2", L: "[d3,b3,e4,f4,a4]/2",
  M: "[f4@16 g4@15 ~, [bb2,ab3,c4,d4]@31 ~]/2", // Bb7
  N: "~@2 [eb3,gb3,bb3,db4,f4] ~@2 [eb3,gb3,bb3,db4,f4]@3 [eb3,gb3,bb3,db4,f4] ~@7", // Ebm7
  O: "~@2 [eb3,gb3,bb3,db4,f4] ~@2 [eb3,gb3,bb3,db4,f4]@2 ~ [eb3,gb3,bb3,db4,f4] ~@7", // Ebm7
  P: "~@2 [gb3,a3,db4,eb4,gb4] ~@2 [gb3,a3,db4,eb4,gb4]@3 [gb3,a3,db4,eb4,gb4] ~@7", // Ebm7b5
  Q: "~@2 [b2,a3,db4,eb4,gb4] ~@2 [b2,a3,db4,eb4,gb4]@2 ~ [b2,a3,db4,eb4,gb4] ~@7", R: "ab4@3 bb4, [ab3,c4,eb4,f4]",
  S: "[b3,g4,b4]@2 [bb3,gb4,bb4]@2 [ab3,ab4]@2 f3 gb3, d4, f3@11 ~ [b3,gb4]@4, ~ f4", T: "[gb3,bb3,db4,f4]",
  U: "[ab4@5 bb4 c5 db5]/2", V: "[eb5@5 f5 c5 bb4]/2", W: "bb4", X: "ab4",
  Y: "[db3,ab3,c4,eb4,f4,ab4] ~ [db3,ab3,c4,eb4,f4,ab4] ~ [db3,ab3,c4,eb4,f4,ab4]@2 ~ [db3,ab3,c4,eb4,f4,ab4] ~@8", // Dbmaj7
})).s("gm_brass_section").gain(0.4)

// drums · kick
const kick = s("bd").struct("<[~ x ~ x]!4 [x!4]!23 [x ~ x ~ x ~ x!2]!2 [x!4]!73>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A@7 B A@7 C D@14 E F A@7 G D H I@7 J I@7 K D I@13 L F I@5 M N O P K I@3 Q I@6
>`.pickRestart({
  A: "~@4 x ~@2 x ~@8", B: "~@2 x ~@3 x!2", C: "~@4 x!4 ~@8", D: "~ x ~ x", E: "~@4 x ~@7 x!2 ~@2",
  F: "x ~@3 x ~@5 x ~ x!2 ~@2", G: "~@4 x!5 ~ x ~ x!2 ~ x", H: "~@4 x ~@3 x ~ x ~ x!2 ~ x", I: "~@4 x ~@2 x ~@4 x ~@3",
  J: "~@4 x ~@2 x ~@4 x ~ x!2", K: "x!4 ~@12", L: "~@4 x ~@3 x!8", M: "~@4 x ~@2 x ~@2 x ~ x ~ x!2",
  N: "~@4 x ~@2 x ~@4 x!4", O: "x!2 ~@14", P: "~@4 x ~@2 x ~ x ~@2 x ~@3", Q: "~@4 x ~@3 x!4 ~@4",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@50 A@7 B A@7 ~ C ~@25 A@3 D A@5 B>".pickRestart({
  A: "~ x ~@3 x ~@3 x ~ x ~@3 x", B: "~ x ~@3 x ~@3 x ~ x ~@4", C: "~@7 x ~ x ~@6", D: "~ x ~@3 x ~ x ~@8",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@15 B ~@41 C ~@23 D ~ E ~@10>".pickRestart({
  A: "~@11 x!2 ~ x ~", B: "~@12 x!3 ~", C: "~@12 x!4", D: "~@10 x!6", E: "~@12 x ~ x!2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B@6 C A B@6 D E F@3 E F@3 E F@3 G H I ~ A B@2 J K B K D E L M@15 N O P@11 M@2 Q ~ P@4 R S T ~ U N M@3 Q M@6
>`.pickRestart({
  A: "~@2 x ~@2 x!2 ~ x!6 ~ x", B: "x!4 ~ x!2 ~ x!6 ~ x", C: "x!4 ~ x!7 ~ x ~ x", D: "x!4 ~@12", E: "~@5 x!7 ~ x!3",
  F: "x!4 ~ x!7 ~ x!3", G: "~@2 x ~@2 x ~@2 x!2 ~@2 x!2 ~@2", H: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
  I: "x!2 ~@2 x!2 ~@2 x!2 ~@3 x ~@2", J: "x!4 ~ x!2 ~ x!4 ~@2 x ~", K: "~@2 x!2 ~ x!2 ~ x!6 ~ x", L: "~ x!3 ~ x!3 ~@8",
  M: "x!4", N: "x", O: "~ x ~ x!3 ~ x", P: "x!4 ~ x!2 ~ x!4 ~ x ~ x", Q: "x!3 ~", R: "x!4 ~ x!2 ~ x!2 ~@2 x ~@3",
  S: "x!4 ~ x ~@4 x ~ x ~ x ~", T: "~@2 x!2 ~ x!2 ~ x!2 ~@2 x ~@3", U: "~ x!3",
})).gain(0.4)

// drums · mid tom
// … 57 more lines

More by Astrud Gilberto