Strudelify
I Am Woman cover art

I Am Woman

I Am Woman

Helen Reddy

KeyF majorTempo86 bpm
0:00/0:00
// I Am Woman — Helen Reddy
// 86 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(86/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 · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K@2 L M N O P Q R S T U@2 E F G H I J K@2 L M N O P Q R S T U@2 E F G H I J K@2 L M N O P Q R S
  T V W X Y V W X Y V W X Y V W X Y V W X
>`.pickRestart({
  A: "g4@2 g4 [g3,d4,g4] [g2,g3,d4,g4]@3 ~ g4 [e3,g3,d4,g4] [e3,g3,d4,g4]@2 [e3,g3,d4,g4]@3 [d4,g4], [g2,b2,d3,g3,d4]@4 [b2,d3]@5 c3@6 ~, ~@7 [g3,d4,g4]@2 ~@7", // G5 Em7 G5 G Bm G5
  B: "[g2,d4]@2 [g2,d4]@2 [g2,d4]@3 [b2,d4] [d4,g4] [c3,e3,d4,g4] [e3,g3,d4,g4]@2 g4@2 g4 [d4,g4], [b2,d3,g3,g4]@2 [d3,g3]@3 ~ [e3,g3,d4]@2, ~@4 [b2,g4]@2 ~@4 c3@5 ~", // G5 Bm G5 C Em7 G5 G G5 …
  C: "[g2,b2,d3,g3,d4,g4]@4 [g2,b2,d3,g3,d4,g4]@3 [d4,g4] [g3,d4,g4] [c3,e3,d4,g4] [e3,d4,g4]@2 [e3,g3,d4,g4]@2 ~ [g3,d4], ~@9 g3@3 ~@2 [d4,g4]@2, ~@10 c3@5 ~", // G G5 C Em7 G5
  D: "d3@2 d3@2 [b2,g3,d4,g4]@2 g4 ~ g4 [c3,e3,g3,d4] [e3,g3,d4]@2 [e3,g3,d4,g4]@2 [g3,d4,g4] [d4,g4], [g2,b2,g3,d4,g4]@4 [g2,d3]@5 ~ c3@5 ~, ~@7 [g3,d4,g4]@2 g4@3 ~@4", // G C Em7 G5 G G5
  E: "[g2,b2,d3,g3,d4,g4]@4 [g2,b2,d3,d4,g4]@2 g4 [d3,d4,g4] [d4,g4] [c3,d4,g4] [c3,d4,g4]@2 [c3,e3,g3,d4,g4]@2 g3 b4, ~@4 g3@5 [e3,g3]@3 ~@4", // G G5 Csus2 C Em
  F: "[b3,gb4,b4]@4 b4@2 b4 ~ b3 [b3,e4] [b3,e4]@2 [g3,b3,e4]@3 e4, [b2,gb3,d4]@2 ~@2 [b2,gb3,b3,d4,gb4]@4 ~ b2@5 ~@2, ~@9 g3@3 ~@4, ~@5 e3@2 ~", // B5 E5 Em Bm
  G: "[e3,g3,c4]@4 [e3,g3,c4,g4]@2 c4 [g3,c4]@2 [g3,c4,g4] [c4,g4]@2 [c3,e3,g4]@3 [g3,c4], [c3,g4]@2 ~@2 c3@5 [c3,e3]@3 c4@2 ~@2, ~@10 g3@5 ~", // C C5 C C5 C
  H: "[c3,e3,g3,c4,g4]@3 [c3,e3,g3,c4,g4]!2 ~ [a3,d4,gb4]@3 [d4,gb4] [a3,d4,gb4]@2 [a3,d4,gb4]@2 a3 b3, ~@3 d3@3 d3@2", // C D
  I: "g2@2 g2@2 d4@2 d4 [g3,d4,g4]!2 [c3,e3,d4,g4] [e3,g3,d4,g4]@2 [e3,g3,d4,g4]@2 [c3,d4,g4] [g3,d4,g4], [b2,g3,d4,g4]@2 [g2,b2,d3,g3,g4]@2 ~ c3@2 ~", // G5 C Em7 Csus2 G5 G
  J: "[d4,g4]@4 [d4,g4]@2 d4 [g3,d4,g4]@2 [e3,g3,d4,g4] [e3,g3,d4,g4]@2 [c3,e3,g3,d4,g4]@2 ~ e4, [b2,g3]@7 ~@2 c3@3 ~@4, g2 ~@7", // G5 Em7 C Em
  K: "[[e3,g3,db4,e4]@3 db4 [g3,db4,e4]@3 [g3,db4,e4]@2 [db4,e4] [db4,e4]@2 [e3,g3,db4,e4]@2 [b3,e4]!2 [d3,a3]@4 [d3,a3,c4,gb4] ~ [g3,b3] [f3,bb3,d4] [d4,f4]@2 [d4,f4] [bb3,d4,f4] [f3,bb3,d4,f4]@2 [d4,f4] b3, ~@4 [a2,e3]@5 a2@14 ~@9, ~@9 [e3,g3]@3 ~@4 [c4,gb4]@2 ~@6 [f3,bb3]@4 ~@4]/2", // Dbdim Dbm Dbdim E5 D5 D7 G Bb …
  L: "[c3,f3,a3,c4,f4]@3 ~ [a3,c4,f4]@3 [a3,c4,f4] f4 [c3,f3,f4] [f3,f4]@2 [a3,c4,f4]@2 [f3,c4,f4] ~, ~@4 [c3,f3]@5 [a3,c4]@3 ~@4, ~@10 c3@5 ~", // F F5 F F5 Am
  M: "[f3,bb3,d4]@4 [bb3,d4,f4]@2 [d4,f4] [d4,f4]@2 [f3,bb3,d4,f4] [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4] ~, f4@2 ~@2 f3@5 ~@7", // Bb Dm Bb
  N: "a3@2 a3@2 [a3,c4,f4]@3 [c4,f4] [a3,c4,f4] [c3,c4,f4] [c4,f4]@2 [c4,f4]@2 [c3,f3,a3,c4,f4] ~, [c3,f3,c4,f4]@4 f3@5 [f3,a3]@5 ~@2, ~@5 c3@2 ~", // F F5 F F5 F F5 F
  O: "[f3,d4,f4]@4 [f3,bb3,d4,f4]@2 [bb3,d4] d4@2 [f3,a3,c4,f4] [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [a3,c4,f4] ~, bb3@2 ~@4 f4@3 ~@7", // Dm Bb F
  P: "[g3,bb3,d4,g4]@3 [d4,g4] [bb3,d4,g4]@3 [bb3,d4,g4] [d4,g4] [g3,bb3,d4,g4] [bb3,d4,g4]@2 [bb3,d4,g4]@3 ~, ~@4 g3@5 ~ g3@4 ~@2", // Gm G5 Gm G5 Gm
  Q: "[f3,c4,f4]@4 [a3,c4,f4]@2 [c4,f4] [a3,c4,f4]@2 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@2 f4@2, a3@2 ~@2 f3@6 f3@5 ~", // F5 F F5 F
  R: "[g3,bb3,d4,g4]@5 ~ [g3,bb3,d4,g4]@8 ~@2", S: "[f3,a3,c4,f4]@5 ~ [f3,a3,c4,f4]@8 ~@2",
  T: "[g3,bb3,d4,g4]@6 [g3,bb3,d4,g4]@7 ~@3", // Gm
  U: "[[b2,d3,g3,d4,g4]@4 [d3,g3,g4]@5 [c3,d4,g4] [d4,g4]@2 [d4,g4]@2 g4 [g3,g4] ~@2 d4@2 [b2,g3,d4,g4]@2 [g3,d4,g4]@3 [c3,g3] [e3,g3]@2 [d4,g4]@2 [c3,d4,g4]@2, ~@4 [b2,d4]@3 ~@2 [e3,g3]@6 d4@3 ~@7 [d4,g4]@3 ~@4, ~@10 c3@5 ~ g2@8 ~@4 [e3,g3]@4, ~@8 [b2,d3,g3,g4]@2 d3@2 ~ c3@2 ~]/2", // G G5 Csus2 G5 G G5 C5 Em …
  V: "[f3,a3,c4,f4]@3 a3 [c4,f4]@3 ~ f4 [a3,c4,f4] [c4,f4]@2 [c4,f4]@2 [a3,f4] ~, ~@4 [f3,a3]@5 ~ [f3,a3]@5 ~, ~@7 [c4,f4]@2 ~@7", // F F5 F F5 Dm F F5
  W: "[f3,bb3,d4,f4]@4 [bb3,d4,f4]@3 [d4,f4]!3 [d4,f4]@2 [f3,bb3,d4,f4]@2 [bb3,d4,f4] ~, ~ f3 bb3 ~, ~@9 f3@3 ~@4", // Bb Dm Bb
  X: "[a3,c4,f4]@4 [a3,c4,f4]@3 f4@2 f4 f4@2 [a3,c4,f4]@2 [f3,a3,c4,f4] ~, f3@9 [a3,c4]@3 ~@4, ~@5 f3@2 ~", // F Am
  Y: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@3 d4 [bb3,d4,f4] [d4,f4] [f3,d4,f4]@2 [f3,d4,f4]@2 [f3,bb3,d4,f4] ~", // Bb Dm Bb
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A B ~@2 C D E ~ F@2 G H I J K ~ L ~@4 M ~ C D E ~ F@2 G H I J K ~ L ~@4 M ~ C D E ~ F@2 G H I J K ~ L ~@4 N ~ O P N
  ~ O P N ~ O P N ~ O P N ~ O
>`.pickRestart({
  A: "~@3 [b2,d3] ~@3 g2@2 ~@7", B: "~@6 g4!2 ~@8", C: "~@15 gb4", D: "~@2 b2@2 ~@4 [e2,e4] e2@5 ~@2",
  E: "~@3 [g3,c4] ~@2 g4 [e3,g4]@2 ~@6 g4", F: "[~@2 d3@2 ~@14 g2@5 ~@7 d3@2, ~@15 d3@9 ~@8]/2",
  G: "~@3 [e3,g3,e4] ~@12", H: "~@14 f3 e4", I: "~@3 c4 ~@12", J: "~@2 f4@2 ~@3 bb3@2 ~@6 [g3,b3]",
  K: "~@7 a3 ~@7 b3, ~@4 c3@5 ~@7", L: "~@3 bb3 ~@11 f4", M: "~@3 d4 ~@3 d4!2 ~@6 d3, g2@7 ~@9", N: "~@9 f3 ~@5 g3",
  O: "~@8 c4 ~@7", P: "~@7 f4 ~@8, f3@5 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.7)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B A C D E F G H I J K L M N O P Q R S T ~ U D V F G H I J K W M N O P Q X Y Z AA AB D E F AC AD I J K AE M N O P Q
  AF S AG AH AI AJ AK AH AI AJ AK AH AI AJ AK AH AI AJ AK AH AI AJ
>`.pickRestart({
  A: "g2@4 d3@4 c3@4 a2@2 d2 e2", B: "g2@4 d3@4 c3 ~ a3@3 g3 e3 d3", C: "g2@4 d3@4 c3@3 ~ a3@2 g3@2",
  D: "g2@5 ~ g2 a2 c3@3 ~ c3 d3 c3 ~", E: "b2@2 b1@2 e2@2 d2 g1", F: "c2@4 g1@3 b1 c2@4 g1@2 a1 b1",
  G: "c2@3 ~ c2@3 db2 d2@4 e2@2 gb2@2", H: "g2@3 g1 g1@3 ~ g1@3 b1 c2@2 d2@2", I: "g1@4 d2@2 g1 b1 c2@4 d2@2 c2@2",
  J: "a1@2 a2@2 a1@2 b1 db2", K: "d2@4 d3@3 d2 bb1@2 d2 f2 bb2!2 a2 g2", L: "f2@2 f2@2 f2 ~ f2@2 c2 d2 f2 ~ f2 ~ f2@2",
  M: "bb1@4 bb2@3 ~ bb1 c2 d2 f2 g2!2 f2 d2", N: "f1 ~ f1@2 f2@2 ~ f2 g1 a1 c2 ~ f2@2 c2 a1",
  O: "bb1 ~ bb1@2 bb2@3 bb1 a1 ~ a1@2 a2@3 a1", P: "g1 ~ g1@2 g2@3 f1 g1 ~ g1 a1 bb1 c2 bb1 g1",
  Q: "f1 ~ f1@2 f2@3 e1 f1 ~ f1@2 f2 e1 f1 gb1", R: "g1 ~ g1@2 ~@2 g1@9 g1", S: "a1 ~ a1@2 ~@2 a1@7 ~ a1@2",
  T: "g2@3 ~@3 g3@9 ~", U: "~@11 d3 b2 g2 d2 e2", V: "~@2 b1@2 e2@2 d2 g1, b2 ~",
  W: "f2@2 f2@2 f2 ~ f2@2 c2 d2 f2 ~ f2@2 f2@2", X: "g1@5 ~ g2@10", Y: "a1@5 ~ a1@7 ~ a1@2", Z: "g2@3 ~ g2@2 g3@9 ~",
  AA: "~@6 g3@2 g3@3 ~ g3@2 g3 ~", AB: "b3@2 d3 e3 g3 ~ g3@2 g3@2 e3@2 d3 b2 d2 e2", AC: "c2@3 ~ c2 ~ d2@6 e2@2 gb2@2",
  AD: "g2@3 g1 g1@3 ~ c2@3 b1 c2@2 d2@2", AE: "f2@2 f2@2 f2@2 f2@2 c2 d2 f2 ~ f2@2 f2@2", AF: "g1 ~ g1@2 ~@2 g1@10",
  AG: "g2@5 ~ g3@6 c3@4", AH: "f1 ~ f1@2 f2 ~ f2@2 f1 ~ f1@2 f2@2 f1@2",
  AI: "bb1 ~ bb1 ~ bb1@2 ~@2 g2 d2 f2@3 g2 f2 d2", AJ: "f1 ~ f1@2 f2 ~ f2@2 g1 a1 c2 ~ f2 g2 f2 c2",
  AK: "bb1 ~ bb1@2 bb2@2 bb2!2 d3@3 c3 a2 g2 f2 d2",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B C D E F G H@2 I J K L M@2 N O P Q R S T B C F G H@2 I J K L M@2 N O P Q R S T B C F G H@2 I J K L M@2 N O P Q R S
  U V W V W V W V W V W V W V W V W V W V
>`.pickRestart({
  A: "~@7 g4", B: "g5 ~ e5 ~ d5 e5 d5@3 ~ b4 ~ b4 a4 g4@2", C: "g4@4 d4@2 g4@2 a4 [b4,d5]!2 ~ g4 a4 g4@2",
  D: "~ g5 e5 ~@2 g5@2 ~ g5 ~ e5 ~ d5@2 b4 ~", E: "d5@4 ~@8 d4@2 g4 ~",
  F: "~@2 d4 b3 ~@3 c4, b3@6 ~@2 c4@5 e4@2 ~, ~@2 g4@5 ~@4 g4@4 ~",
  G: "~@2 d4 ~@3 b3@2, b3@6 b3@5 e4@4 ~, ~@2 gb4@6 g4@7 ~",
  H: "[~@11 e4@5 ~@2 g4@2 e4 ~@8 d5 ~@2, c4@6 ~@10 c4@5 ~ d4@8 ~@2, ~@2 g4@6 g4@10 ~@8 a4@5 ~, ~@4 e4@7 ~@17 gb4@2 ~@2]/2",
  I: "db4@2 [d4,b4]@2 d4 ~ [c4,a4] ~ [c4,g4]@4 [g3,g4]@4", J: "c4@2 b4@2 d4 ~ [c4,a4] ~ [d4,g4]@4 g4@3 ~",
  K: "~@2 db4@2 e3 ~ [gb3,d4]@2 [gb3,eb4]@2 [g3,e4]@2 [g3,e4]@2 [a3,gb4]@2, e3 ~@3", // D Ebm C D
  L: "a3@4 a3@2 ~@5 bb4@2 ~ d4 ~, gb4@6 ~@2 [bb3,d4]@7 ~, ~@13 f4@2 ~", // Bb
  M: "[~@5 f4 c4@2 ~@5 c4 a3 ~ d4@2 ~@9 f4@2 d4 ~@2, a3@4 ~ a3@2 ~ bb3@4 ~ bb3@2 ~, c4@5 ~@6 f4@4 e4@2 ~ d4@4 ~@10, ~@3 a4@13 ~@3 bb4@11 ~@2]/2",
  N: "a3@2 ~@3 f4@6 f4@2 c4 ~@2, c4@3 ~@5, ~@3 a4@12 ~",
  O: "d4@2 ~@3 d4 bb3@2 a3@2 ~@4 c4 ~, bb3@6 ~@7 f4@2 ~, ~@3 f4@4 ~@4 a4@4 ~",
  P: "[g3,bb3]@2 ~@4 g3@2 ~@5 bb3 ~@2, ~@3 d4@8 d4@4 ~", Q: "[a3,f4]@2 ~@3 c4 ~@2 a3@2 ~ f4@2 c4 a3@2, ~@3 f4@5 ~@8",
  R: "[bb3,d4,g4] ~@5 [d4,g4,bb4]@8 ~@2", S: "[c4,f4,a4] ~@5 [c4,f4,a4]@8 ~@2", T: "[d4,g4,bb4] ~@5 [d4,g4,bb4]@8 g4@2",
  U: "[d4,g4,bb4] ~@5 [d4,g4,bb4]@8 ~@2", V: "[f4,a4]@2 ~@4 f4@2 ~@5 a4 ~@2, ~@3 c5@8 c5@4 ~",
  W: "[d4,bb4]@2 ~@3 f4 ~@2 d4@2 ~ bb4@2 f4 d4@2, ~@3 bb4@5 ~@8", // Gm
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.3)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@7 A ~@2 B ~@2 C@2 D E F G ~@7 A ~@2 B ~@2 C@2 D E F G ~@7 A ~@2 B ~@2 C@2 D E F G ~@3 H I H I H I H I H I H I H I H
  I H I H
>`.pickRestart({
  A: "~@3 c4@5", B: "~@2 d4@3 ~@7 g3@3 ~",
  C: "[~@8 a3@2 ~@6 f4@2 ~@4 d4@2 bb3@2 d4@4 bb3 ~, ~@15 bb4@2 ~@4 f4@6 ~@5]/2", D: "~ a3@3 a3 a3@2 ~", E: "~@4 c4 ~@3",
  F: "~@5 bb3 ~@2 bb3@2 ~@4 g3 ~", G: "c4 ~@2 a3 c4 ~@3", H: "~@5 a4 ~@2 a4@2 ~@4 f4 ~", I: "f4 ~@2 d4 f4 ~@3",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.3)

// chords · pan flute
const pan_flute = note(`<
  ~@13 A ~ B ~ C D ~@3 E@2 ~@8 F ~ B ~ C D ~@3 G@2 ~@8 F ~ B ~ C D ~@3 H I J I J I J I J I J I J I J I J I K
>`.pickRestart({
  A: "[f4,a4]@4 [f4,a4]@2 [f4,a4] [f4,a4]@5 ~@4", // F
  B: "[a3,c4,d4]@2 [a3,c4,f4]@2 [a3,c4,g4]@2 [a3,c4,d4] [a3,c4,f4]@6 ~@3", C: "f4@3 d4@5 ~@8", D: "a4@2 f4 f4@9 ~@4",
  E: "[[g3,g4]@7 ~]/2", F: "f4@4 f4@2 f4 f4@4 ~@5", G: "[[g4,b4,d5]@7 ~]/2", H: "~@6 c4 d4",
  I: "[f4,bb4,f5]@3 [d4,f4,bb4,bb5]@5", J: "[f4,a4,f5,a5]@4 ~@2 c4 d4", K: "[f4,a4,f5,a5] ~",
})).s("gm_pan_flute").gain(0.25)

// chords · trombone
const trombone = note(`<
  ~@2 A B C ~@7 D ~@18 D E F G H I J K L M ~@5 N ~@3 D E F G H I J K L M O P Q R O P Q R O P Q R O P Q R O P Q
>`.pickRestart({
  A: "~@12 b3@2 c4 ~", B: "d4@4 d4@3 b3 e4 d4@5 ~@2", C: "e4@2 g4@4 e4 a4 ~ a4 g4@6",
  D: "~@4 [a3,gb4]@2 ~ [d4,f4]!2 ~ [d4,f4]@3 ~ [d4,f4] ~", E: "[c4,f4,a4]", F: "~@10 c4 d4 f4 g4 ~@2",
  G: "[f4,a4], c4@7 ~", H: "[d4,f4,bb4] [c4,f4,a4]",
  I: "[bb3,d4,g4]@7 ~ [c4,f4,a4]@2 [bb3,d4,g4] ~ [bb3,d4,g4]@2 [a3,c4,f4] ~", J: "[c4,f4]@15 ~, [g3,a3] ~@15",
  K: "[d4,f4]@2 c4@2 d4 ~ [bb3,f4]@10, bb3 ~@5 d4@8 ~@2", L: "[c4,f4]@3 c4 a3 ~ [f3,a3]@9 ~, a3 ~@5 c4@5 ~@5",
  M: "~@4 a4@2 f4@9 ~", N: "[e4,g4,c5] ~ [e4,g4,c5]@2 ~@2 [gb4,a4,d5]@8 ~@2", O: "~@4 [c4,f4,a4] ~@11",
  P: "~@7 [bb3,d4,g4] ~ [bb3,d4,g4] [bb3,d4,f4]@5 ~", Q: "~@2 [c4,f4] ~@5, ~@4 a4 ~@11",
  R: "~@4 [bb3,d4,g4]!2 [g3,bb3,d4] [bb3,d4,g4] ~ [bb3,d4,g4] [bb3,d4,f4]@5 ~", // Gm Bb
})).s("gm_trombone").gain(0.4).pan(0.4)

// bass · tuba
const bass_2 = note(`<
  ~@12 A B C B D E F G H I@3 J K L M N O P Q B C B D E F G H I@3 J K L M N O P Q B C B D E F G H R S T S C S T S C S T S
  C S T S C S T U
>`.pickRestart({
  A: "~@4 d3@2 ~ bb2!2 ~ bb2@3 ~ bb2 ~", B: "f2@15 ~", C: "bb2@15 ~", D: "bb2 a2", E: "g2", F: "f2@14 ~ f2",
  G: "g2 ~@2 g2@5", H: "a2 ~@2 a2@5", I: "[g2@47 ~]/3", J: "g2@5 ~ g2 ~ g2@6 ~@2", K: "b2 e2", L: "c2@5 ~ c2 ~ c2@7 ~",
  M: "c2 ~ c2@3 ~ d2@10", N: "g2@5 ~ g2 ~ g2@7 ~", O: "g2 ~ g2@3 ~ g2@9 ~", P: "a2@5 ~ a2 ~ a2@8",
  Q: "d2@4 d3@2 ~ bb2!2 ~ bb2@3 ~ bb2 ~", R: "g2@15 ~", S: "f2 ~ f2@3 ~ f2 ~ f2@8", T: "bb2",
  U: "f2 ~ f2@3 ~ f2 ~ f2@4 ~@4",
})).s("gm_tuba").gain(0.44)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@12 A B C B D E F G H I@3 ~@7 J B C B D E F G H I@3 ~@4 K L M J B C B D E F G H N O ~@18
>`.pickRestart({
  A: "~@2 a4 [b4,c5,d5] [e5,f5,g5,a5] ~@2 a5 bb5 ~ bb5@3 ~ bb5 ~", B: "a5", C: "bb5", D: "bb5 a5", E: "g5", F: "f5",
  G: "g5@3 ~@3 bb5@10", H: "a5@3 ~@3 a5@10", I: "[g5@47 ~]/3", J: "~@4 a5 ~@2 a5 bb5 ~ bb5@3 ~ bb5 ~", K: "~ d4 e4 g4",
  L: "a4 b4@5 a4 b4", M: "a4", N: "g5@12 f4@3 [g4,a4,bb4]", O: "[c5,d5,e5] ~@15, f5@9 ~@7",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note("<~@12 A B@4 C D E F G@3 ~@7 H B@4 C D E F G@3 ~@7 H B@4 C D E F I ~@19>".pickRestart({
  A: "~@2 f4 [g4,a4,bb4] [c5,d5,e5,gb5] ~@2 gb5 f5 ~ f5@3 ~ f5 ~", B: "f5", C: "d5", D: "c5", E: "d5@3 ~@3 f5@10",
  F: "f5@3 ~@3 f5@10", G: "[d5@47 ~]/3", H: "~@4 gb5 ~@2 gb5 f5 ~ f5@3 ~ f5 ~", I: "d5@3 ~",
})).s("gm_string_ensemble_1").gain(0.33)

// other · flute
const flute = note("<~@2 [~@12 b4@2 c5 ~] [d5@4 d5@3 b4 e5 d5@6 ~] [e5@2 g5@4 e5 a5 ~ a5 g5@6] ~@74>")
  .s("gm_flute").gain(0.38)

// chords · pan flute
const pan_flute_2 = note("<~@19 A B ~@17 A B ~@17 A B ~@20>".pickRestart({
  A: "~@3 [d5,f5,bb5,d6]@3 ~@2", B: "~@6 [d5,a5,c6] ~ [f5,a5,c6] ~ [c5,a5,c6] [d5,a5,c6]@3 ~@2",
})).s("gm_pan_flute").gain(0.25)

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

// drums · rim
const rim = s("rim").struct("<~@5 [~ x ~ x]!3 ~@16 [~ x ~ x]!3 ~@16 [~ x ~ x]!3 ~@33>").gain(0.44)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@3 B ~ A ~ C ~@2 D@2 E ~@5 A ~@3 B ~ A ~ C ~@2 D@2 E ~@5 A ~@3 B ~ A ~ C ~@2 D@2 F ~ G ~ C ~ H ~ G ~ C ~ H ~ G
  ~ C ~ H ~
>`.pickRestart({
  A: "~@7 x", B: "~@10 x!3 ~@3", C: "~@14 x!2", D: "~@2 x!2 ~ x!2 ~ x ~@5 x ~", E: "~@3 x ~@4", F: "~@11 x ~@2 x!2",
  G: "~@4 x!2 ~@2 x ~@3 x ~@3", H: "~@6 x ~@3 x ~ x!4",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~@5 A@3 B C D@2 E ~@11 A@3 B C D@2 E ~@11 A@3 B C D@2 E ~@28>".pickRestart({
  A: "x!8", B: "x!3 ~ x ~ x ~", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
  E: "x ~ x!3 ~ x!3 ~@3 x ~@3",
// … 29 more lines

More by Helen Reddy