Strudelify
Take A Chance On Me cover art

1978 · The Album

Take A Chance On Me

ABBA

KeyB majorTempo108 bpm
0:00/0:00
// Take A Chance On Me — Abba
// 108 bpm, 4/4, key B major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 9, 4/4 at bar 10, 2/4 at bar 18, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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.

// other · reed organ
const reed_organ = note("<~@7 A B@4 C D@3 E ~@29 F B@2 C D@3 E ~@56>".pickRestart({
  A: "~@8 b3!2 f#4!2 b3!2 f#4!2", B: "b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2",
  C: "b3!2 f#4!2 b3!2 f#4!2 a#3!2 f#4!2 a#3!2 f#4!2", D: "a#3!2 f#4!2 a#3!2 f#4!2 a#3!2 f#4!2 a#3!2 f#4!2",
  E: "b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2 b3!2 ~@2", F: "~@9 b3 f#4!2 b3!2 f#4!2",
})).s("gm_reed_organ").gain(0.25).pan(0.4)

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@9 A B C D E F G H I J I K L M N O L M N P Q R S Q T I J I U V W X F@2 Y@2 W Z B C D E F G H I J I K L M N O L M N P
  Q R S Q T I J I U V W X F@2 Y@2 W AA W@2 AB F@2 AC W AD V W X F@2 Y@2 W AA W@2 AB F@2 AC W AE@2
>`.pickRestart({
  A: "~@6 b1!2 b1@2 b2@2 b2@2 b1!2", B: "b1@2 b2 ~ b2 ~ b1!3 ~ b2 ~ b2@2 b1!2",
  C: "b1@2 b2 ~ b2 ~ b1!2 b1@2 b2 ~ b2@2 b1!2", D: "b1@2 b2 ~ b2 ~ f#1!2 f#1@2 f#2 ~ f#2@2 f#1!2",
  E: "f#1 ~ f#2 ~ f#2@2 f#1!3 ~ f#2 ~ f#2@2 f#1!2", F: "f#1@2 f#2 ~ f#2@2 f#1!2 f#1@2 f#2 ~ f#2@2 f#1!2",
  G: "f#1@2 f#2 ~ f#2@2 f#1!2 f#1@2 f#2 ~ f#2 ~ b1!2", H: "b1@2 b2 ~ b2@2 b1!2 b1@2 b2 ~ b2 ~ c#2!2",
  I: "c#2@2 c#3 ~ c#3@2 c#2!2 c#2@2 c#3 ~ c#3@2 f#1!2", J: "f#1@2 f#2 ~ f#2@2 f#1!2 f#1@2 f#2 ~ f#2@2 c#2!2",
  K: "f#1 ~ f#2 ~ f#2@2 f#1!2 f#1@2 f#2 ~ f#2@2 f#1@2", L: "c#2 ~ c#2@2 c#3@2 c#2 ~ c#2@2 c#3 ~ c#3@2 c#2 ~",
  M: "c#2 ~ c#2@2 c#3@2 c#2 ~ c#2@2 c#3 ~ c#3@2 c#2@2", N: "b1 ~ b1@2 b2@2 b1 ~ b1@2 b2 ~ b2@2 b1 ~",
  O: "b1 ~ b1@2 b2@2 b1 ~ b1@2 b2 ~ b2@2 b1@2", P: "b1 ~ b1@2 b2@2 b1 ~ b1 ~ b2 ~ b2@2 b1@2",
  Q: "g#1 ~ g#1@2 g#2@2 g#1 ~ g#1 ~ g#1@2 g#2 ~ g#2@2", R: "e1 ~ e1@2 e2@2 e1 ~ e1 ~ e1@2 e2 ~ e2@2",
  S: "g#1 ~ g#1@2 g#2@2 g#1@2 e1!2 e2@2 f#1!2 f#2@2", T: "e1 ~ e1@2 e2@2 e1 ~ e1 ~ e1 ~ e2@2 c#2!2",
  U: "f#1@8 ~@2 f#1@3 ~ b1!2", V: "b1@2 b2@2 b2@2 b1!2 b1@2 b2 ~ b2@2 b1!2",
  W: "b1@2 b2 ~ b2@2 b1!2 b1@2 b2 ~ b2@2 b1!2", X: "b1@2 b2 ~ b2@2 b1!2 b1@2 b2 ~ b2@2 f#1!2",
  Y: "[f#1@2 f#2 ~ f#2@2 f#1!2 f#1@2 f#2 ~ f#2@2 f#1 f#1@3 f#2@2 f#2 ~ b1!2 b1@2 b2 ~ b2@2 b1!2]/2",
  Z: "b1@2 b2 ~ b2 ~ b1!2 b1@2 b2@2 b2@2 b1!2", AA: "b1@2 b2 ~ b2 ~@3 b1@2 b2@2 b2@2 b1!2",
  AB: "b1@2 b2 ~ b2@2 f#1!2 f#1@2 f#2 ~ f#2@2 f#1!2", AC: "f#1@2 f#2 ~ f#2@2 f#1 f#1@3 f#2@2 f#2 ~ b1!2",
  AD: "b1@2 b2 ~ b2@2 b1!2 b1@2 b2 ~ b2 ~@3", AE: "[b1@2 b2 ~ b2@2 b1!2 b1@2 b2 ~ b2 ~ b1@14 ~@4]/2",
})).s("gm_synth_bass_2").gain(0.38)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@7 A B C@4 D E F G ~@14 H I ~@5 J K L M@2 E N@6 D E F G ~@3 O ~@10 H I ~@5 J K L M@2 E N@6 D E F P@2 J K L M@2 E N@6
  D E F Q@3
>`.pickRestart({
  A: "~@8 b3!2 f#4!2 b3!2 f#4!2", B: "b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2",
  C: "[b3!2 f#4!2 b3!2 f#4!2 d#5@11 ~ d#5 c#5 b4@2 c#5@2 d#5@11 c#5 b4@2 c#5@2 d#5@14 c#5@2 f#4@2 c#5@2 f#4@2]/4",
  D: "c#5 a#4 f#4@2 c#5@2 f#4@2 c#5@2 f#4@2 c#5@2 f#4@2", E: "c#5 a#4 f#4@2 c#5@2 f#4@2 c#5 a#4 f#4@2 c#5@2 f#4@2",
  F: "c#5 a#4 f#4@2 c#5@2 f#4@2 c#5 a#4 f#4@2 c#5@2 d#5@2", G: "c#5@2 b4@3 ~ b4@8 ~@2",
  H: "g#4 d#5 c#5 d#5 g#4 g#5 c#5 d#5", I: "g#4 ~", J: "d#5@11 ~ d#5 c#5 b4@2", K: "c#5@2 d#5@11 c#5 b4@2",
  L: "c#5 d#5@7", M: "c#5@2 f#4@2 c#5@2 f#4@2 c#5 a#4 f#4@2 c#5@2 f#4@2",
  N: "[c#5 a#4 f#4@2 c#5@2 d#5@2 c#5@2 b4@3 ~ b4@26 d#5@11 ~ d#5 c#5 b4@2 c#5@2 d#5@11 c#5 b4@2 c#5@2 d#5@14 c#5@2 f#4@2 c#5@2 f#4@2]/6",
  O: "[c#5,a#5]!2 [c5,a5] [b4,g#5] ~ [b4,g5]!2 f#5 c#5!2 [f#4,c#5]!5 c#5, ~@7 a#4@2 ~@7, ~@4 f#4 ~@3", // F# F E Em F#5
  P: "[c#5@2 b4@3 ~ b4@26]/2", Q: "[c#5@2 b4@3 ~ b4@34 ~@8]/3",
})).s("gm_lead_2_sawtooth").gain(0.16).pan(0.3)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A@6 B@3 C@3 D E F E G H@2 I@2 J K L@2 M K N@2 ~ O P ~ Q R@2 S@7 T@3 C@3 D E F E G H@2 U@2 J K L@2 M J V@2 ~ O P ~ W
  X@2 Y Z@6 T@3 C@3 D E F AA AB@7 AC@3 AD@3 D E F AA AE@2 ~
>`.pickRestart({
  A: "[~@6 [b3,d#4] [c#4,e4] [f#3,a#3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4,d#5]@8 [b3,d#4,f#4] [d#4,f#4] [e4,g#4]@2 [b3,e4,g#4]@4 [b3,d#4,f#4]@8 ~ c#4 d#4@2 f#4@4 f#4@8 [b3,d#4] c#4 [a#3,d#4]@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@8 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4 e4@2 f#4@4 f#4@2, ~@23 b3@3 ~@12 b3@16 ~@42, ~@21 d#4@6 f#4@2 ~@8 f#4@6 ~@5]/6", // B C#m D#m B D#m E B D#5 …
  B: "[~@6 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4 e4@2 d#4@4 d#4@10 ~@6 [b3,d#4,f#4] [c#4,e4,g#4], ~@5 f#4@6 ~@13]/3", // A#m B C#m
  C: "[[b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4,d#5]@8 [b3,d#4,f#4] [d#4,f#4] [e4,g#4]@2 [b3,d#4,f#4]@4 [e4,g#4]@4 d#4@2 [d#4,f#4]@2 ~ c#4 d#4@2 f#4@4 f#4@8 [b3,d#4] [c#4,e4], ~@15 b3@3 ~@4 b3@8 b3@16 ~@2, ~@17 d#4@6 ~]/3", // B D#m E B E D#m B C#m
  D: "[b3,d#4,f#4]@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@8 c#4 d#4", // B F#
  E: "e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4, ~ f#4@6 ~", F: "e4@2 f#4@4 f#4@8 c#4 d#4",
  G: "e4@2 d#4@4 d#4@8 c#4 d#4", H: "[e4@2 f#4@4 f#4@24 c#4 d#4]/2", I: "[e4 f#4@2 f#4@11 ~@2]/2",
  J: "g#3@2 c#4 c#4@3 d#4@4 c#4@6", K: "g#3@2 c#4 c#4@3 d#4@4 c#4@5 c#4", L: "[f#3@2 b3 b3@2 b3 c#4@4 b3@22]/2",
  M: "g#3@2 c#4 c#4@2 c#4 d#4@4 c#4@6", N: "[f#3@2 b3 b3@2 b3 c#4@4 b3@11 ~@11]/2", O: "~@7 [c#4,e4,g#4]",
  P: "[b3,d#4,g#4]@3 [b3,d#4,g#4]@5", Q: "~@14 c#4 d#4", R: "[e4@2 f#4@4 f#4@14 ~@10 c#4 d#4]/2",
  S: "[e4@2 f#4@4 f#4@16 b3 c#4 d#4@2 f#4@4 [f#4,b4,d#5]@7 ~ a#4!2 g#4@2 f#4@4 d#4@8 ~ c#4 d#4@2 f#4@4 f#4@8 [b3,d#4] c#4 [b3,d#4]@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@8 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4 e4@2 f#4@4 f#4@2, ~@27 b3@8 ~@21, ~@29 d#4@6 f#4@2 ~@8 f#4@6 ~@5]/7", // B F# A#m
  T: "[~@6 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4 e4@2 d#4@4 d#4@14 ~@2 [b3,d#4,f#4] [c#4,e4,g#4], ~@5 f#4@6 ~@13]/3", // A#m B C#m
  U: "[e4 f#4@2 f#4@10 d#4 c#4 b3]/2", V: "[f#3@2 b3 b3@2 b3 c#4@4 b3@12 ~@10]/2", W: "~@14 g#4 f#4",
  X: "[g#4@2 f#4@4 f#4@14 ~@10 c#4 d#4]/2", Y: "e4 f#4@2 f#4@5",
  Z: "[~@6 b3 c#4 d#4@2 f#4@4 [f#4,b4,d#5]@7 ~ a#4!2 g#4@2 f#4@4 d#4@8 ~ c#4 d#4@2 f#4@4 f#4@8 [b3,d#4] c#4 [b3,d#4]@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@8 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4 e4@2 f#4@4 f#4@2, ~@19 b3@8 ~@21, ~@21 d#4@6 f#4@2 ~@8 f#4@6 ~@5]/6", // B F# A#m
  AA: "e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 [c#4,e4] [d#4,f#4], ~ f#4@6 ~", // A#m C#m D#m
  AB: "[[e4,g#4]@2 [d#4,f#4]@4 [d#4,f#4]@14 ~@2 [b3,d#4,f#4] [c#4,e4,g#4] [b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4,d#5]@8 [b3,d#4,f#4] [d#4,f#4] [e4,g#4]@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@8 ~ c#4 d#4@2 f#4@4 f#4@8 [b3,d#4] [c#4,e4] [b3,d#4,f#4]@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@8 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 c#4 d#4 e4@2 f#4@4 f#4@2, ~@39 b3@3 ~@12 b3@16 ~@42, ~@29 d#4@6 ~@10 f#4@6 ~@5]/7", // E D#m B C#m B D#m E B …
  AC: "[~@6 c#4 d#4 e4@2 ~@4 [a#4,c#5]@4 [a#4,c#5]@2 [a#4,c#5]@2 [c#4,e4] [d#4,f#4] [e4,g#4]@2 [d#4,f#4]@4 [d#4,f#4]@14 ~@2 [b3,d#4,f#4] [c#4,e4,g#4], ~@5 f#4@6 ~@13]/3", // A#m C#m D#m E D#m B C#m
  AD: "[[b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4,d#5]@8 [b3,d#4,f#4] [d#4,f#4] [e4,g#4]@2 [b3,e4,g#4]@4 [e4,g#4]@4 [d#4,f#4]@2 [d#4,f#4]@2 ~ c#4 d#4@2 f#4@4 f#4@8 [b3,d#4] [c#4,e4], ~@15 b3@3 ~@4 b3@8 b3@16 ~@2, ~@17 d#4@6 ~]/3", // B D#m E D#m B C#m
  AE: "[[e4,g#4] [d#4,f#4]@2 [d#4,f#4]@13]/2", // E D#m
})).s("gm_epiano1").gain(0.16)

// other · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A@7 B C@8 D ~@20 E A@6 B C F C@6 D ~@20 E A@6 B C F C@6 A@2 G A@5 B C F C@6 A H@2
>`.pickRestart({
  A: "f#4 ~ f#4!3 ~ f#4!5 ~ f#4 ~ f#4!2", B: "f#4 ~ f#4!3 ~ f#4!3 ~ f#4!3 ~ f#4!2",
  C: "f#4!3 ~ f#4 ~ f#4!3 ~ f#4!3 ~ f#4!2", D: "f#4 ~ f#4!3 ~ f#4!5 ~ f#4 ~@3", E: "~@14 f#4!2",
  F: "f#4!3 ~ f#4 ~ f#4!2 ~@2 f#4!3 ~ f#4!2", G: "~@2 f#4!3 ~ f#4!5 ~ f#4 ~ f#4!2",
  H: "[f#4 ~ f#4!3 ~ f#4!5 ~ f#4@16 ~@4]/2",
})).s("gm_rock_organ").gain(0.14).pan(0.8)

// chords · piano · "A.PIANO 3"
const piano = note("<~@16 A@5 B ~ C ~ B ~ D ~@25 A@5 B ~ C ~ B ~ D ~@45>".pickRestart({
  A: "[~@16 [g#3,b3,e4,f#4] ~ [g#3,b3,e4,f#4]@5 ~ [g#3,b3,e4,f#4] ~ [g#3,b3,e4,f#4]@5 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@5 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@5 ~ [g#3,b3,e4,f#4] ~ [g#3,b3,e4,f#4]@5 ~ [g#3,b3,e4,f#4] ~ [g#3,b3,e4,f#4]@5 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@5 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@5 ~, ~@15 c#3@7 ~ c#3@8 f#3@7 ~ f#3@8 c#3@6 ~@2 c#3@4 ~@4 f#3@7 ~ f#3@6 ~@3]/5", // E F# E F#
  B: "[e5,g#5,c#6]", C: "[d#5,f#5,b5]", D: "[d#5,f#5] ~, b5@3 ~",
})).s("gm_piano").gain(0.22).pan(0.6)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@16 A B C D@2 ~@3 E F ~ G H I J K L M N O N P ~@15 A B C D@2 ~@3 E F ~ G H I J K L M N O N P ~@35
>`.pickRestart({
  A: "~@7 d#4", B: "~@14 c#4 d#4, e4@7 ~, ~ c#5@7", C: "c#4@7 d#4",
  D: "[~@12 c#4 d#4 c#4 d#4 c#4@14 ~@2, e4@3 ~@5, ~ c#5@14 ~]/2",
  E: "[f#3,b3,e4] b3 ~ [b3,e4] b3 ~@2 b3 f#3 [g#3,e4] [f#3,d#4] b3 [d#4,g#4]@2 [f#4,b4] d#4, ~@2 f#3@2 ~ f#3@2 ~@9, ~@3 [b3,d#4] ~@4", // Esus2 E5 C#m D#m G#5 B5 B
  F: "[e4,g#4]@3 ~, c#5", G: "~@11 b3 ~ b3 [d#4,f#4] b3, ~@5 [d#4,f#4] [e4,g#4] ~",
  H: "[d#4,b4] [e4,c#5] [d#4,b4] [e4,c#5] [d#4,b4] ~@2 [b3,d#4]@2 [e4,g#4] f#4 c#4 b3 g#3 [f#3,b3] [g#3,c#4], ~@5 c#4@2 ~@9, ~@3 f#4 ~@4", // G#m C#m G#m C#m G#m B E B5 …
  I: "[c#4,f#4] [d#4,g#4]@7 ~@8, [d#3,g#3]@15 ~", J: "[b2,e3]", K: "[d#3,g#3]@2 [b2,e3] [c#3,f#3]", L: "[d#3,g#3]",
  M: "[b2,e3]@7 ~", N: "[c#3,g#3]@13 f#3 g#3 f#3",
  O: "~ a#3 g#3 f#3 ~ a#3 g#3 f#3 g#3@2 f#3@6, [g#3,c#4] ~ [g#3,c#4] ~ c#4@4", // C#5
  P: "~ a#3 g#3 f#3 ~ a#3 g#3 f#3 g#3@2 f#3@5 ~, [g#3,c#4]@2 ~@2 [g#3,c#4]@2 ~@2 c#4@7 ~", // C#5
})).s("gm_overdriven_guitar").gain(0.24)

// other · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  ~@29 A B C A B D ~@3 E@3 F@3 G E H ~@19 A B C A B D ~@3 E@3 F@3 G E I E@2 J F@3 E@2 K E@2 F@3 G E I E@2 J F@3 E L ~
>`.pickRestart({
  A: "g#4!2 d#5!2 a#4!2 b4!2 g#4!2 d#5!2 a#4!2 b4!2", B: "g#4!2 e5!2 a#4!2 b4!2 g#4!2 e5!2 a#4!2 b4!2",
  C: "g#4!2 d#5!2 c#5!2 d#5!2 g#4!2 g#5!2 c#5!2 d#5!2", D: "c#5!2 e5!2 g#4@8 ~@4",
  E: "b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2", F: "a#3!2 f#4!2 a#3!2 f#4!2 a#3!2 f#4!2 a#3!2 f#4!2",
  G: "a#3!2 f#4!2 a#3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2", H: "b3!2 f#4!2 b3!2 f#4!2 ~@8",
  I: "b3!2 f#4!2 b3!2 f#4!2 ~ b3 f#4!2 b3!2 f#4!2", J: "b3!2 f#4!2 b3!2 f#4!2 a#3!2 f#4!2 a#3!2 f#4!2",
  K: "~ b3 f#4!2 b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2", L: "b3!2 f#4!2 b3!2 f#4!2 b3!2 f#4!2 b3!3 ~",
})).s("gm_synth_bass_1").gain(0.15).pan(0.3)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@17 A B A C D@2 E F G H I J K ~@24 A B A C D@2 E F G H I J K ~@43>".pickRestart({
  A: "[g#3,b3,e4]@13 ~@3", B: "[a#3,c#4,f#4]@13 ~@3", C: "[a#3,c#4,f#4]@5 ~@3",
  D: "[[c#4,e4]@8 ~@4 d#4 ~@2 c#4 d#4 [c#4,e4]@11 ~@4, g#3@10 c#4@2 ~ e4@2 ~@17, ~@11 g#3@2 ~ g#3@15 ~@3]/2", // C#m
  E: "[f#3,b3,d#4]@15 ~", // B
  F: "[f#3,b3,e4] b3 f#3 [f#3,b3,e4] b3 f#3 ~ b3 f#3 [g#3,e4] [f#3,d#4] b3 [d#4,g#4]@2 [f#4,b4] [d#4,g#4], ~@3 [b3,d#4] ~@4", // Esus2 C#m D#m G#5 B5 G#5 B
  G: "[e4,g#4,c#5]@5 ~@11", H: "[g#3,c#4,e4]@13 ~@3", I: "[f#3,b3,d#4]@9 ~ [d#4,f#4] b3 [e4,g#4] b3 [d#4,f#4] b3",
  J: "[d#4,b4] [e4,a#4,c#5] ~ [e4,c#5] ~ c#4 f#4 [b3,d#4]@2 [e4,g#4] f#4 c#4 b3 g#3 [f#3,b3] [g#3,c#4], ~@2 [d#4,b4] ~@5", // G#m A#dim C#m B E B5 C#5 G#m
  K: "[c#4,f#4] [d#4,g#4]@5 ~@10", // F#5 G#5
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note("<~@24 A B ~ C D E ~@31 A B ~ C D E ~@43>".pickRestart({
  A: "~@2 [f#3,b3,e4] b3 f#3 [f#3,b3,e4] b3 f#3 ~ b3 f#3 [g#3,e4] [f#3,d#4] b3 [d#4,g#4]@2, ~@4 [b3,d#4] ~@3", // Esus2 C#m D#m G#5 B
  B: "[f#4,b4] [d#4,g#4] [e4,g#4,c#5]@5 ~@9", C: "~@12 [d#4,f#4] b3 [e4,g#4] b3",
  D: "[d#4,f#4] b3 [d#4,b4] [e4,a#4,c#5] ~ [e4,c#5] ~ c#4 f#4 [b3,d#4]@2 [e4,g#4] f#4 c#4 b3 g#3, ~@3 [d#4,b4] ~@4", // D#m G#m A#dim C#m B E G#m
  E: "[f#3,b3] [g#3,c#4] [c#4,f#4] [d#4,g#4]@5 ~@8", // B5 C#5 F#5 G#5
})).s("gm_electric_guitar_clean").gain(0.12)

// other · pad poly · "POLYSYNTH"
const pad_poly = note("<~@29 A B C A B D E@2 F ~@28 A B C A B D E@2 F ~@35>".pickRestart({
  A: "g#4 d#5 a#4 b4 g#4 d#5 a#4 b4", B: "g#4 e5 a#4 b4 g#4 e5 a#4 b4", C: "g#4 d#5 c#5 d#5 g#4 g#5 c#5 d#5",
  D: "c#5@2 e5@2 g#4@8 ~ f#4 g#4 f#4",
  E: "[g#4 a#4 g#4 f#4 g#4 a#4 g#4 f#4 g#4@2 f#4@5 ~ g#4@13 f#4 g#4 f#4, c#5@2 ~@2 c#5@2 ~@2 c#5@21 ~@3]/2",
  F: "g#4 a#4 g#4 f#4 g#4 a#4 g#4 f#4 g#4@2 f#4@4 ~@2, c#5 ~ c#5 ~ c#5@3 ~",
})).s("gm_pad_poly").gain(0.33).pan(0.7)

// other · rock organ · "ORGAN 3"
const rock_organ_2 = note(`<
  A@3 B C@3 D E@4 F G@2 H I ~@20 J A@2 B C@3 D E@4 F G@2 H I ~@20 J A@2 B C@3 D E@4 F G@2 H A@4 B C@3 D E@4 F G@2 H A
  K@2
>`.pickRestart({
  A: "b3 ~ b3!3 ~ b3!5 ~ b3 ~ b3!2", B: "b3 ~ b3!3 ~ b3!5 ~ b3 ~ f#3!2", C: "f#3 ~ f#3!3 ~ f#3!5 ~ f#3 ~ f#3!2",
  D: "f#3 ~ f#3!3 ~ b3!3 ~ b3!3 ~ b3!2", E: "b3!3 ~ b3 ~ b3!3 ~ b3!3 ~ b3!2", F: "b3!3 ~ b3 ~ f#3!3 ~ f#3!3 ~ f#3!2",
  G: "f#3!3 ~ f#3 ~ f#3!3 ~ f#3!3 ~ f#3!2", H: "f#3!3 ~ f#3 ~ f#3!3 ~ f#3!3 ~ b3!2", I: "b3 ~ b3!3 ~ b3!5 ~ b3@2 ~@2",
  J: "~@14 b3!2", K: "[b3 ~ b3!3 ~ b3!5 ~ b3 ~ b3@14 ~@4]/2",
})).s("gm_rock_organ").gain(0.19).pan(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@9 A@8 B@4 C@2 D@2 C@2 E@2 F@3 G@6 H@8 I@8 B@4 C@2 D@2 C@2 E@2 F@3 G@6 J@8 K@7 L@2 H@8 K@7 M@3
>`.pickRestart({
  A: "[~ [b3,d#4]@6 [a#3,c#4]@7 [b3,d#4]@2, ~ f#3@15]/8", B: "[[g#3,e4] [a#3,f#4] [g#3,e4] [a#3,f#4], c#4]/4",
  C: "[g#3,c#4,e4]/2", D: "[f#3,b3,d#4]/2", E: "[[f#3,b3,d#4]@31 ~]/2",
  F: "[d#4@4 e4@4 d#4@2 [e3,g#3,b3] [f#3,a#3,c#4], b3@37 ~@11, g#3@15 ~ g#3@3 ~@5]/3", // E F#
  G: "[d#4@8 ~@16 [a#3,f#4]@8 [g#3,e4]@8 [a#3,f#4]@7 ~, g#3 ~, b3@15 ~ c#4@31 ~, ~ e4@2 ~@3]/6", // D#m C#m D#m
  H: "[[b3,d#4]@6 [a#3,c#4]@7 [b3,d#4]@3, f#3]/8", I: "[~ [b3,d#4]@6 [a#3,c#4]@7 [b3,d#4]@2, ~ [f#3,f#5]@15]/8",
  J: "[[b3,d#4]@6 [a#3,c#4]@7 [b3,d#4]@3, [f#3,f#5]]/8", K: "[~ [b3,d#4]@6 [a#3,c#4]@7, ~ f#3@13]/7", L: "[b3,d#4]/2",
  M: "[[b3,d#4]@11 ~]/3", // B
})).s("gm_string_ensemble_1").gain(0.27)

// drums · kick
const kick = s("bd").struct("<~@9 A B@7 C@20 D B@7 E B@8 C@20 D B@7 E B@8 C B@7 E B@8 F ~>".pickRestart({
  A: "~ x", B: "x!2", C: "x ~@6 x!2 ~@7", D: "x ~@4 x ~ x", E: "x ~@7 x ~@6 x", F: "x ~@6 x!2 ~@5 x ~",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct("<~@9 A B@10 C B@3 D B@3 D B@8 ~ B@19 C B@3 D B@3 D B@8 ~ B@34 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@2 x ~@2", D: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.44)

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

// drums · low tom
const low_tom = s("lt").struct("<~@20 A ~@3 A ~@3 A ~@7 A B ~@19 A ~@3 A ~@3 A ~@7 A B ~@35>".pickRestart({
// … 44 more lines

More by ABBA