Strudelify
This Time I Know It's Real cover art

1989 · Another Place & Time

This Time I Know It's Real

Donna Summer

KeyC♯ minorTempo120 bpm
0:00/0:00
// This Time I Know It's Real — Summer Donna
// 120 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@3 A B C D C B C E F@2 G@2 H I G@2 H J E K G L C B C D C B C E F@2 G@2 H I G@2 H J E K G L C B C D C B C E F@2 H@2
  M@2 H@2 G@2 H@2 G@2 H N E K O L C B C D C B C E C B C D C B C E C B C D C B C E F P
>`.pickRestart({
  A: "a1 ~ a1 ~ e1@2 f#1 ~@2 a1 ~ e1 f#1@2 a1 ~", B: "b1 ~ b1 ~ f#1@2 a1 e1 ~ e2 ~ f#1 a1@2 b1 ~",
  C: "a1 ~ a1 ~ e1@2 f#1 a1 ~ a1 ~ e1 f#1@2 a1 ~", D: "g#1 ~ g#1 ~ d#1@2 d#1 c#2 ~ c#2 ~ e1 g#1@2 b1 ~",
  E: "g#1 ~ g#1 ~ d#1@2 f#1 g#1 ~ g#1 ~ d#1 f#1@2 g#1 ~", F: "c#2 ~ c#2 ~ c#1@2 g#1 c#2 ~ c#2 ~ c#1 g#1@2 c#2 ~",
  G: "f#1 ~ f#1 ~ c#1@2 d#1 f#1 ~ f#1 ~ c#1 d#1@2 f#1 ~", H: "c#1 ~ c#1 ~ g#1@2 c#2 c#1 ~ c#1 ~ c#1 g#1@2 c#2 ~",
  I: "c#1 ~ c#1 ~ g#1@2 c#2 c#1 ~ c#1 ~ c#1 d#1@2 c#1 ~", J: "a#0 ~ a#0 ~ c#1@2 f1 a#0 ~ a#0 ~ a#0 c#1@2 f1 ~",
  K: "g#1 ~ g#1 ~ d#1@2 f1 g#1 ~ g#1 ~ d#1 f1@2 g#1 ~", L: "f#1 ~ f#1 ~ c#1@2 d#1 g#1 ~ g#1 ~ d#1 f#1@2 g#1 ~",
  M: "c#2 ~ c#2 ~ g#1@2 a#1 c#2 ~ c#2 ~ f1 g#1@2 c#2 ~", N: "a#1 ~ a#1 ~ f1@2 g#1 a#1 ~ a#1 ~ f1 g#1@2 a#1 ~",
  O: "f#1 ~ f#1 ~ c#1@2 d#1 ~@2 f#1 ~ c#1 d#1@2 f#1 ~", P: "c#1 ~ c#1 ~ g#1@2 c#2 c#1 ~@8",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · synth brass 1 · "SYNTHBRASS"
const synth_brass_1 = note(`<
  A@3 B C B D B C E F G@2 H I J@2 K I L M N O P Q B C B D B C E F G@2 H I J@2 K I R M N O P Q B C B D B C E F S@2 T@2
  U@2 T@2 V W X@2 Y@2 Z AA N O P Q B C B D B C E F B C B D B C E F B C B D B C E F AB@2
>`.pickRestart({
  A: "[g#2,g#3]/3", B: "[a4,c#5,e5]", C: "[b4,d#5,f#5]@3 [b4,e5,g#5]@3 [b4,d#5,f#5]@2",
  D: "d#5 e5 f#5 c#5@3 b4@2, [g#4,b4]@3 [g#4,e5]@5", E: "g#5@3 f#5@3 ~@2, [c#5,e5]", F: "d#5@3 e5@3 f#5@2, [g#4,c5]",
  G: "[g#4,c#5,f5]/2", H: "[f#4,a#4,c#5]@3 [f#4,a#4,c#5]", I: "[f#4,a4,c#5]@3 [f#4,a4,c#5]",
  J: "[[f4,g#4,c#5]@7 [f4,a4,c#5]]/2", K: "[f#4,a#4,c#5]", L: "[f4,g#4,c#5]", M: "[f4,a#4,c#5]", N: "[f#4,b4,d#5]",
  O: "[g#4,b4,f5]", P: "[g#4,a#4,c#5,f5]", Q: "[f#4,a#4,c#5]@3 [g#4,c5,d#5]@5", R: "[f4,g#4,c#5]@3 [f4,g#4,c#5]",
  S: "[[c#5,f5]@18 [c#5,f5,g#5]@2 [c#5,f5,g#5]!2 ~ [d#5,f5,g#5] ~ [d#5,f5,g#5] ~ [c#5,f5,g#5] [d#5,f5,g#5]@2 [c#5,f5,g#5] ~, g#4]/2", // C# Fm7 C# Fm7 C#
  T: "[b3 ~ b3 ~@3 b3 ~ b3!2 ~ b3 b3@2 b3 ~ b3@2 [b4,c#5,d#5]@2 ~ [b4,c#5,d#5] [b3,f#5] [b4,c#5,d#5] b3 [b3,b4,c#5,d#5,f#5] ~ [b3,b4,c#5,d#5,f#5] [b4,c#5,d#5]@2 [b3,b4,c#5,d#5] ~, [b4,c#5,d#5,f#5]@18 f#5@3 ~@3 a#5@4 f#5@4, ~@18 b3 ~@9 b3 ~@3]/2", // B B5 B
  U: "[c#4 ~ c#4 ~@3 c#4 ~ c#4!2 ~ c#4 c#4@2 c#4 ~ c#4@2 [c#5,d#5,f5]@2 ~ [c#5,d#5,f5] [c#4,g#5] [c#5,d#5,f5] [c#4,g#5] [c#4,c#5,d#5,f5,g#5] ~ [c#4,c#5,d#5,f5,g#5] [c#5,d#5,f5]@2 [c#4,c#5,d#5,f5,g#5] ~, [c#5,d#5,f5,g#5]@18 g#5@3 ~@11, ~@18 c#4 ~@9 [c#4,g#5] ~@3]/2", // C# C#5 C# C#5 C# C#5
  V: "f#3@2 [a#4,c#5,g#5]@2 ~@2 f#3 ~ [a#4,c#5,g#5] [f#3,a#4,c#5,g#5] ~ [f#3,a#4,c#5,g#5] [a#4,c#5,f#5]@2 [f#3,a#4,c#5,f#5] ~, ~@2 f#3 ~@2 [a#4,c#5,f#5]@2 ~@5 f#3 ~@3", // A#m7 F#
  W: "f#3@2 [a4,c#5,g#5]@2 ~@2 f#3 ~ [a4,c#5,g#5] [f#3,a4,c#5,g#5] ~ [f#3,a4,c#5,g#5] [a4,d#5,f#5]@2 [f#3,a4,c#5,f#5] ~, ~@2 f#3 ~@2 [a4,c#5,f#5]@2 ~@5 f#3 ~@3", // Amaj7 F#m D#dim F#m
  X: "[c#4@2 [c#4,d#5] ~ c#5@2 c#4 d#5 c#4 [c#4,d#5] ~ [c#4,d#5] c#5@2 [c#4,c#5] ~ c#4@2 [c#4,d#5] ~ c#5@2 c#4 d#5 c#4 [c#4,d#5] ~ [c#4,c#5] d#5@2 [c#4,f#5] ~, [f4,g#4], d#5 ~@11 c#4 ~@3 d#5 ~@11 c#4 ~@3]/2", // C#sus2 C# C#sus2 C# F#5 Fm
  Y: "[[f#3,g#5] ~ [f#3,g#5] ~ f#5@2 f#3 g#5 f#3 [f#3,g#5] ~ [f#3,g#5] f#5@2 [f#3,f#5] ~ f#3@2 [f#3,g#5] ~ f#5@2 f#3 g#5 f#3 [f#3,g#5] ~ [f#3,c#5] d#5@2 [f#3,f#5] ~, [f#4,a#4], ~@12 f#3 ~@3 g#5 ~@11 f#3 ~@3]/2", // F#sus2 F# F#sus2 F#5 F#
  Z: "[c#4,d#5] ~ [c#4,d#5] ~ c#5@2 c#4 d#5 c#4 [c#4,d#5] ~ [c#4,d#5] c#5@2 [c#4,c#5] ~, [f4,g#4], ~@12 c#4 ~@3", // C#sus2 C# Fm
  AA: "[c#4,d#5] ~ [c#4,d#5] ~ c#5@2 c#4 d#5 c#4 [c#4,d#5] ~ [c#4,d#5] c#5@2 [c#4,c#5] ~, [f4,a#4], ~@12 c#4 ~@3", // C#sus2 C# A#5
  AB: "[~@18 c#6 ~ c#6 ~ c#6!2 ~@8, [g#4,c#5,f5]@23 ~@9]/2", // C#
})).s("gm_synth_brass_1").gain(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@3 B C B D B C E F G@2 H@2 I@2 H@2 J@3 K L M B C B D B C E F G@2 H@2 I@2 H@2 J@3 K L M B C B D B C E F G@2 N@2 O@2
  N@2 P Q R@2 P Q S@3 K L M B C B D B C E F B C B D B C E F B C B D B C E F T@2
>`.pickRestart({
  A: "[g#1,g#2]/3", B: "[a3,c#4,e4,c#5,e5]", C: "[d#4,f#4,d#5,f#5]@3 [e4,g#4,e5,g#5]@3 [d#4,f#4,d#5,f#5]@2, b3",
  D: "d#5 e5 f#5 [c#4,c#5,e5]@3 [b3,b4]@2, g#3, [b3,d#4,b4]@3 e4@5", // C#m B
  E: "[e5,g#5]@3 [d#5,f#5]@3 [c#5,e5]@2, [a3,c#4,e4]", F: "[c5,d#5]@3 [c#5,e5]@3 [d#5,f#5]@2, [g#3,c4,d#4]",
  G: "[g#3,c#4,f4,c#5,f5]/2", H: "[a#3 a3, [f#3,c#4]]/2", I: "[g#3@7 a3, [f3,c#4]]/2",
  J: "[~@24 a#4 g#4 a#4 c5 c#5 c5 c#5 ~ [f#3,b3,d#4,f#5]@16, [f3,g#3,c#4]@31 d#5@17, ~ a#3 ~, ~@7 f5 ~@4]/3", // B C#
  K: "[g#3,b3,f4,b4,f5]", L: "[g#3,a#3,c#4,f4,f5,g#5]",
  M: "[f#3,a#3,c#4,a#4]@6 ~@2 g#4 g4 g#4 a#4 c5 a#4 c5 d#5, ~@3 [g#3,c4,d#4]@5, ~@6 c5@5 ~@5", N: "[b3,d#4,f#4]/2",
  O: "[c#4,f4,g#4]/2", P: "[a#3,c#4,f#4]", Q: "[a3,c#4,d#4,f#4]", R: "[g#3,c#4,f4]/2",
  S: "[~@24 a#4 g#4 a#4 c5 c#5 c5 c#5 ~ [f#3,b3,d#4,f#5]@16, [g#3,c#4,f4]@31 d#5@17, ~ a#3 ~, ~@7 f5 ~@4]/3", // B C#
  T: "[[g#3,c#4,f4,c#5,f5]@21 ~@11]/2", // C#
})).s("gm_string_ensemble_1").gain(0.25)

// chords · epiano2 · "E.PIANO"
const epiano2 = note(`<
  ~@3 A B A C A B D E F@2 G H I@2 J H K L M N L O P Q P R P Q S T U@2 G H I@2 J H K L M N L O P Q P R P Q S T U@2 V@2
  W@2 V@2 X Y W@2 X Y K Z AA N L O P Q P R P Q S T P Q P R P Q S T P Q P R P Q S T AB@2
>`.pickRestart({
  A: "[a4,c#5,e5]", B: "[b4,d#5,f#5]@3 [b4,e5,g#5]@3 [b4,d#5,f#5]@2", C: "[g#4,b4,d#5]@3 [g#4,c#5,e5]@3 [g#4,b4,e5]@2",
  D: "g#7@3 f#7@3 e7@2, [c#5,e5,g#5]", E: "d#7@3 e7@3 f#7@2, [c5,d#5,g#5]", F: "[g#4,c#5,f5,f7]/2", G: "[f#4,a#4,c#5]",
  H: "a4@3 a4, [f#4,c#5]", I: "[[g#4,c#5,f5]@7 [a4,c#5,f5]]/2", J: "a#4@7 a#4, [f#4,c#5]", K: "[g#4,c#5,f5]",
  L: "[g#4,a#4,c#5,f5]", M: "[f#4,b4,d#5]", N: "[g#4,b4,f5]@3 [g#4,b4,f5]",
  O: "[f#4,a#4,c#5]@6 ~@2 g#5 g5 g#5 a#5 c6 a#5 c6 d#6, ~@3 [g#4,c5,d#5]@5", P: "[a4,c#5,e5,e6]",
  Q: "[b4,d#5,f#5,f#6]@3 [b4,e5,g#5,g#6]@3 [b4,d#5,f#5,f#6]@2", // B E B
  R: "d#6 e6 f#6 [g#4,c#5,e5,e6]@3 [g#4,b4,e5,b5]@2, [g#4,b4,d#5]@3 ~@5", S: "g#6@3 f#6@3 e6@2, [c#5,e5,g#5]",
  T: "d#6@3 e6@3 f#6@2, [c5,d#5,g#5]", U: "[g#4,c#5,f5,f6]/2", V: "[b4,d#5,f#5]/2", W: "[g#4,c#5,f5]/2",
  X: "[f#4,a#4,c#5,f#5]", Y: "[f#4,a4,c#5,d#5,f#5]",
  Z: "f5@8 a#5 ~@6 f6, [a#4,c#5]@7 c#6, ~@9 g#5@2 f5@5, ~@5 a#5 g#5@2, ~@13 a#5@3", AA: "[f#4,b4,d#5], f#6 ~",
  AB: "[[g#4,c#5,f5,f6]@11 ~@5]/2", // C#
})).s("gm_epiano2").gain(0.35)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@3 A B A C A B D E F@2 G H I@2 J H K L M N L O P Q P R P Q S T U@2 G H I@2 J H K L M N L O P Q P R P Q S T U@2 V@2
  W@2 V@2 X Y W@2 X Y K Z AA N L O P Q P R P Q S T P Q P R P Q S T P Q P R P Q S T AB@2
>`.pickRestart({
  A: "[a3,c#4,e4]", B: "[b3,d#4,f#4]@3 [b3,e4,g#4]@3 [b3,d#4,f#4]@2", C: "[g#3,b3,d#4]@3 [g#3,c#4,e4]@3 [g#3,b3,e4]@2",
  D: "g#6@3 f#6@3 e6@2, [c#4,e4,g#4]", E: "d#6@3 e6@3 f#6@2, [c4,d#4,g#4]", F: "[g#3,c#4,f4,f6]/2", G: "[f#3,a#3,c#4]",
  H: "a3@3 a3, [f#3,c#4]", I: "[[g#3,c#4,f4]@7 [a3,c#4,f4]]/2", J: "a#3@7 a#3, [f#3,c#4]", K: "[g#3,c#4,f4]",
  L: "[g#3,a#3,c#4,f4]", M: "[f#3,b3,d#4]", N: "[g#3,b3,f4]@3 [g#3,b3,f4]",
  O: "[f#3,a#3,c#4]@6 ~@2 g#4 g4 g#4 a#4 c5 a#4 c5 d#5, ~@3 [g#3,c4,d#4]@5", P: "[a3,c#4,e4,e5]",
  Q: "[b3,d#4,f#4,f#5]@3 [b3,e4,g#4,g#5]@3 [b3,d#4,f#4,f#5]@2", // B E B
  R: "d#5 e5 f#5 [g#3,c#4,e4,e5]@3 [g#3,b3,e4,b4]@2, [g#3,b3,d#4]@3 ~@5", S: "g#5@3 f#5@3 e5@2, [c#4,e4,g#4]",
  T: "d#5@3 e5@3 f#5@2, [c4,d#4,g#4]", U: "[g#3,c#4,f4,f5]/2", V: "[b3,d#4,f#4]/2", W: "[g#3,c#4,f4]/2",
  X: "[f#3,a#3,c#4,f#4]", Y: "[f#3,a3,c#4,d#4,f#4]",
  Z: "f4@8 a#4 ~@6 f5, [a#3,c#4]@7 c#5, ~@9 g#4@2 f4@5, ~@5 a#4 g#4@2, ~@13 a#4@3", AA: "[f#3,b3,d#4], f#5 ~",
  AB: "[[g#3,c#4,f4,f5]@11 ~@5]/2", // C#
})).s("gm_piano").gain(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@3 A B C D C B C E F G H I F G H I F J K L M N C B C D C B C E F G H I F G H I F J K L M N C B C D C B C E F G O P F
  G O P Q R S T U V W X K L Y N C B C D C B C E C B C D C B C E C B C D C B C E F Z
>`.pickRestart({
  A: "~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~ [a4,c#5,f#5,a6] ~ [a4,c#5,e5] ~@2 [a4,c#5,f#5] ~ [a4,c#5,e5] ~", // A F#m A F#m A
  B: "~@2 [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,e5,g#5]!2 ~ [b4,e5,g#5] ~@2 [b4,d#5,f#5] ~ [b4,e5] ~", // B E B E5
  C: "~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~ [a4,c#5,f#5] ~ [a4,c#5,e5] ~@2 [a4,c#5,f#5] ~ [a4,c#5,e5] ~", // A F#m A F#m A
  D: "~@2 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,c#5,e5]!2 ~ [g#4,c#5,e5] ~@2 [g#4,c#5,e5] ~ [g#4,b4,d#5] ~", // G#m C#m G#m
  E: "~@2 [g#4,c5,d#5] ~ [g#4,c5,d#5] ~ [g#4,c5,d#5] [g#4,c5,e5] ~ [g#4,c5,e5] ~@2 [g#4,c5,f#5] ~ [g#4,c5,d#5] ~", // G# G#aug G#7 G#
  F: "~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@2 ~ [g#4,d#5,f5] ~ [g#4,c#5,f5] ~@2 [g#4,d#5,f5] ~ [g#4,c#5,f5] ~", // C# Fm7 C# Fm7 C#
  G: "~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~ [g#4,c#5,f5] [g#4,d#5,f5] ~ [g#4,c#5,f5] ~@2 [g#4,d#5,f5] ~ [g#4,c#5,f5] ~", // C# Fm7 C# Fm7 C#
  H: "~@2 [f#4,a#4,c#5] ~ [f#4,a#4,c#5]@2 ~ [f#4,a#4,d#5] ~ [f#4,a#4,c#5] ~@2 [f#4,a#4,d#5] ~ [f#4,a#4,c#5] ~", // F# D#m F# D#m F#
  I: "~@2 [f#4,a4,c#5] ~ [f#4,a4,c#5] ~ [f#4,a4,c#5] [f#4,a4,d#5] ~ [f#4,a4,c#5] ~@2 [f#4,a4,d#5] ~ [f#4,a4,c#5] ~", // F#m D#dim F#m D#dim F#m
  J: "~@2 [a#4,c#5,f5] ~ [a#4,c#5,f5] ~ [a#4,c#5,f5] [a#4,d#5,f5] ~ [a#4,c#5,f5] ~@2 [a#4,d#5,f5] ~ [a#4,c#5,f5] ~", // A#m A#sus4 A#m A#sus4 A#m
  K: "~@2 [g#4,b4,d#5,f#5] ~ [g#4,b4,d#5,f#5]@2 ~ [g#4,b4,d#5,f#5] ~ [g#4,b4,d#5,f#5] ~@2 [g#4,b4,d#5,f#5] ~ [g#4,b4,d#5,f#5] ~", // G#m7
  L: "~@2 [g#4,b4,f5] ~ [g#4,b4,f5] ~ [g#4,b4,f5]!2 ~ [g#4,b4,f5] ~@2 [g#4,b4,f5] ~ [g#4,b4,f5] ~", // Fdim
  M: "~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@2 ~ [a#4,c#5,f5] ~ [g#4,c#5,f5] ~@2 [g#4,d#5,f5] ~ [g#4,c#5,f5] ~", // C# A#m C# Fm7 C#
  N: "~@2 [f#4,a#4,c#5,f#5] ~ [f#4,a#4,c#5,f#5] ~ [f#4,a#4,c#5,f#5] [g#4,c5,d#5] ~ [g#4,c5,d#5] ~@2 [g#4,c5,d#5] ~ [g#4,c5,d#5] ~", // F# G#
  O: "~@2 [f#4,b4,d#5,f#5] ~ [f#4,b4,d#5,f#5]@2 ~ [f#4,c#5,d#5,f#5] ~ [f#4,b4,d#5,f#5] ~@2 [f#4,c#5,d#5,f#5] ~ [f#4,b4,d#5,f#5] ~", // B D#m7 B D#m7 B
  P: "~@2 [f#4,b4,d#5,f#5] ~ [f#4,b4,d#5,f#5] ~ [f#4,b4,d#5,f#5] [f#4,c#5,d#5,f#5] ~ [f#4,b4,d#5,f#5] ~@2 [f#4,c#5,d#5,f#5] ~ [f#4,b4,d#5,f#5] ~", // B D#m7 B D#m7 B
  Q: "~@2 [a#4,c#5,f#5] ~ [a#4,c#5,f#5]@2 ~ [a#4,d#5,f#5] ~ [a#4,c#5,f#5] ~@2 [a#4,d#5,f#5] ~ [a#4,c#5,f#5] ~", // F# D#m F# D#m F#
  R: "~@2 [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] [a4,d#5,f#5] ~ [a4,c#5,f#5] ~@2 [a4,d#5,f#5] ~ [a4,c#5,f#5] ~", // F#m D#dim F#m D#dim F#m
  S: "~@2 [g#4,d#5,f5] ~ [g#4,c#5,f5]@2 ~ [g#4,d#5,f5] ~ [g#4,d#5,f5] ~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~", // Fm7 C# Fm7 C#
  T: "[g#4,d#5,f5] ~ [g#4,d#5,f5] ~ [g#4,c#5,f5] ~@2 [g#4,d#5,f5] ~ [g#4,d#5,f5] ~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~", // Fm7 C# Fm7 C#
  U: "~@2 [g#4,a#4,c#5,f#5] ~ [f#4,a#4,c#5,f#5]@2 ~ [g#4,a#4,c#5,f#5] ~ [g#4,a#4,c#5,f#5] ~@2 [f#4,a#4,c#5,f#5] ~ [f#4,a#4,c#5,f#5] ~", // F#
  V: "~@2 [g#4,c#5,d#5,f#5] ~ [f#4,c#5,d#5,f#5] ~ [f#4,c#5,d#5,f#5] [g#4,c#5,d#5,f#5] ~ [g#4,c#5,d#5,f#5] ~@2 [f#4,c#5,d#5,f#5] ~ [f#4,c#5,d#5,f#5] ~", // G#sus4 D#m7 G#sus4 D#m7
  W: "~@2 [a#4,c#5,f5] ~ [g#4,c#5,f5]@2 ~ [g#4,c#5,f5] ~ [g#4,c#5,f5] ~@2 [g#4,c#5,f5] ~ [a#4,c#5,f5] ~", // A#m C# A#m
  X: "~@2 [a#4,c#5,f5] ~ [a#4,c#5,f5] ~ [a#4,c#5,f5]!2 ~ [a#4,c#5,f5] ~@2 [a#4,c#5,f5] ~ [a#4,c#5,f5] ~", // A#m
  Y: "~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@2 ~ [a#4,c#5,f5,e6] ~ [g#4,c#5,f5] ~@2 [g#4,d#5,f5] ~ [g#4,c#5,f5] ~", // C# A#m C# Fm7 C#
  Z: "~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~ [g#4,c#5,f5]!2 ~@8", // C#
})).s("gm_electric_guitar_clean").gain(0.25)

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

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

// drums · clap
const clap = s("cp").struct(`<
  ~@4 A ~ A ~ A ~ A B@2 ~@8 B ~ B ~@2 B ~@6 B@2 ~@8 B ~ B ~@2 B ~@6 B@2 ~ C ~ D ~ C ~@2 D@2 ~@2 D@2 B ~ B ~@2 B ~@7 B
  ~@7 B ~@6 E F
>`.pickRestart({
  A: "~@6 x!2 ~ x!2 ~ x ~@3", B: "x ~ x ~ x ~ x!2 ~ x!2 ~ x ~@3", C: "~@2 x ~ x!2 ~ x!3 ~ x!2 ~ x ~",
  D: "~@2 x ~ x ~ x!2 ~ x!2 ~ x ~ x ~", E: "x ~ x ~ x ~ x!2 ~ x!2 ~ x ~ x ~", F: "~@2 x ~ x ~ x!2 ~@8",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!99 [x ~ x!3 ~ x!2 ~@8]>").gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~ A ~ A ~@3 A ~@9 A ~@3 A ~ A ~ A ~@3 A ~ B ~@7 A ~@3 A ~ A ~ A ~@3 A ~@11 B ~@3 A ~@3 A ~ A ~ A ~@3 A ~ A ~ A
  ~@3 A ~ A ~ A ~@5
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.3)

stack(bass, synth_brass_1, string_ensemble_1, epiano2, piano, electric_guitar_clean, kick, snare, clap, hihat, crash)

More by Donna Summer