Strudelify
Only Love cover art

The Romance Of Nana Mouskouri

Only Love

Mouskouri Nana

KeyG majorTempo66 bpm
0:00/0:00
// Only Love — Mouskouri Nana
// 66 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.Piano"
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH J K L M AI AJ P Q R S AK U V W X Y AL AA
  AB AC AD AE AF AG AH J K L M N AM P AN AO AP AQ AR@2 ~
>`.pickRestart({
  A: "a3@3 ~@3 d4@2 [g1,g2,g3,a3,b3,d4]@8, [g1,g2,g3]@15 ~@17, [b3,d4]@8 a3@7 ~@17, ~@3 d3@5 ~@8, ~@5 b3@3 ~@8", // G Bm
  B: "[g3,b3,d4]@8 [g3,b3,d4]@7 ~ [g3,b3,d4]@8 g3@3 ~ g3@4, [g1,g2]@15 ~ [b1,b2]@15 ~, ~@24 [b3,d4]@7 ~", // G B Bm
  C: "[g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~ [g3,c4,e4]@8 [c2,c3]@3 ~ [b1,b2]@4, [c2,c3]@23 ~ [g3,c4,e4]@7 ~", // C B C
  D: "[a2,g3,c4,e4]@6 e2@2 [a2,g3,c4,e4]@8 [f#3,a3,c4,e4]@8 [f#3,a3,c4,e4]@7 ~, a1@15 ~ [d2,d3]@15 ~", // Am7 F#m7b5 D
  E: "[g3,b3,d4]@8 [g3,b3,d4]@7 ~ g3@4 g3@4 [g1,g2]@3 ~ [f#1,f#2]@4, [g1,g2]@23 ~@9, ~@16 [b3,d4]@8 [b3,d4,g4]@7 ~", // G F# G Bm G
  F: "[b3,e4,g4]@8 ~@4 [e1,e2]@4 [b3,e4,g4]@8 e4@3 ~ [d1,d2,e4]@4, [e1,e2]@11 ~@5 [d1,d2]@11 ~@5, ~@8 [b3,e4,g4]@7 ~@9 [b3,g4]@7 ~", // Em E Em Dsus2 E D Em
  G: "[a3,c#4,e4,g4]@8 ~@4 [c#2,c#3]@4 [d2,d3,a3,d4,f#4]@8 [c2,c3,a3,d4,f#4]@7 ~, [c#1,c#2]@11 ~@21, ~@8 [a3,c#4,e4,g4]@7 ~@17", // A7 C# D D7 C# A7
  H: "~@3 g3 [c2,c3,e4,g4,c5]@2 [c2,c3] [b1,b2], [c2,b2] ~, [b3,d4,f4]@8 [f4,d5]@7 ~@9 [e4,g4,c5]@8, ~@4 g3@7 ~@21", // C B Cmaj7 Bdim Dm C
  I: "~ g3 ~ g3 ~ c4 ~ d4, [a1,a2]@15 ~ [d2,e4,g4,c5]@8 [d2,f#4,a4,c5,d5]@8, [c4,e4,g4]@8 [c4,e4,g4]@7 ~ d3@15 ~", // A C D7 C
  J: "[d4,g4,b4,d5]@8 ~@4 [g1,g2]@4 [d4,g4,b4,d5]@8 d4@3 ~ d4@4, [g1,g2]@11 ~@5 [b1,b2]@15 ~, ~@8 [d4,g4,b4,d5]@7 ~@9 [g4,b4,d5]@8", // G B G
  K: "[e4,g4,d5]@7 ~ [e4,g4,c5]@7 ~@5 [c2,c3]@3 ~ [b1,b2,c4,e4,g4,c5]@8, [c2,c3]@19 ~@13, ~@2 [c4,e4,g4,c5] ~", // Em7 C Cmaj7 C
  L: "[c4,e4,g4,c5]@8 ~@4 b2 ~ c3 ~ [e4,f#4,a4,c5]@8 ~@4 d3@4, [a1,a2]@12 ~@4 d2@15 ~, ~@8 [e4,g4,c5,e5]@7 ~ d3@12 ~@4, ~@24 [f#4,a4,c5,e5]@7 ~", // C F#m7b5 A C F#m7b5
  M: "[d4,g4,b4,d5]@8 [d4,g4,b4,d5]@7 ~@5 [g1,g2]@3 ~ [f#1,f#2]@3 ~ [e1,e2]@4, [g1,g2]@19 ~@13, ~@16 [d4,g4,b4,d5]@8 [g4,b4,d5,g5]@7 ~", // G F# E G
  N: "[b3,d#4,f#4]@8 [b3,d#4,f#4]@7 ~ [b3,d#4,f#4,a4]@8 b3@3 ~ b3@4, [d#1,d#2]@15 ~ [b1,b2]@15 ~, ~@3 [d#4,f#4,a4]", // B B7 D# B D#dim
  O: "[e4,a4,c5]@8 ~@4 [d2,d3]@4 c#3@4 ~@4 [a3,c#4,e4,a4]@7 ~, [e2,e3]@11 ~@5 c#2@2 ~@2 c#2@11 ~, ~@8 [e4,g4,b4]@7 ~ [b3,c#4,e4,g4]@6 c#3@9 ~", // Am D A E Em C#m7b5
  P: "[b3,d4,g4,b4]@8 [g4,b4,d5]@7 ~ [g4,b4,d5,g5]@7 ~@7 d3@2, [d2,d3]@31 ~, ~@24 g4@7 ~, ~@13 b3@3, ~@7 g3", // G D
  Q: "[c4,e4,g4,c5]@8 ~@4 d3@3 ~ [a3,d4,f#4,a4]@8 ~@4 f#2@4, d2@15 ~ [d2,d3]@12 ~@4, d3@11 ~@21, ~@8 [c4,e4,g4,c5]@7 ~@9 [c4,d4,f#4,a4]@8", // C D C D7
  R: "[g3,c4,d4,g4]@8 [g3,c4,d4,g4]@7 ~ [g3,b3,d4,g4]@8 a3@2 ~@2 g3@4, g2@31 ~, g1@15 ~ g1@15 ~, ~@3 d4, ~@13 b3@3", // Gsus4 G
  S: "[f#3,b3,d#4,f#4]@2 ~ [b1,b2] [f#3,b3,d#4,f#4]@2 ~ [d#2,d#3], [b1,b2]@11 ~@5 [d#2,d#3]@11 ~@5, ~@8 [f#3,b3,d#4,f#4]@7 ~@9 [b3,d#4,f#4,a4]@8", // B D# B D# B B7
  T: "[b3,e4,g4,b4]@7 ~@5 [e2,e3]@4 [b3,e4,g4,b4]@8 ~@4 [e2,e3,b4]@4, [e2,e3]@11 ~@5 [e2,e3]@11 ~@5, ~@8 [b3,e4,g4,b4]@7 ~@9 [b3,e4,g4]@7 ~", // Em E Em E5 E Em
  U: "[a3,d4,f#4,a4]@8 ~@4 [d2,d3]@4 [d2,e4,f#4,a4,c5]@8 d2@4 f#2@3 ~, [d2,d3]@11 ~@13 [e4,f#4,a4,c5]@7 ~, ~@8 [a3,d4,f#4,a4]@7 ~ d3@11 ~@5", // D D7 D F#m7b5 D
  V: "[d4,g4,b4,d5]@2 ~ [g1,g2] [d4,g4,b4,d5]@2 ~ [g1,g2], [g1,g2]@11 ~@5 [g1,g2]@11 ~@5, ~@8 [d4,g4,b4,d5]@7 ~@9 [d4,g4,b4,d5]@7 ~", // G
  W: "[e4,f#4,a4,c5]@2 ~ [f#1,f#2] b2 ~@2 [b1,b2], [f#1,f#2]@11 ~@5 b1@3 ~ b1@7 ~@5, ~@8 [e4,f#4,a4,c5]@7 ~ [d#4,f#4,a4,b4]@6 b2@5 ~@5, ~@3 [d#4,f#4,a4,b4]", // F#m7b5 F# B F# F#m7b5 B7
  X: "[b3,e4,g4,b4]@4 ~@2 [e2,e3]@2 [d2,b3]@2 a3 ~@3 [d2,g3]@2, [e2,e3]@11 ~@11 b3@9 ~, ~@8 [b3,e4,g4,b4]@7 ~ [d3,e4,g4,b4]@6 d2@4 e4@6, ~@3 [d3,f#4]", // Em E G G5 E Em Em7 D
  Y: "[c#4,e4,g4,b4]@4 [g4,b4,c#5,e5]@2 [g4,b4,c#5,e5]@2 f#2@2 f#4 ~@3 f#4@2, c#2@15 ~ [f#1,e4,a#4,c#5]@7 ~ [f#1,e4,a#4,c#5]@8, ~@8 c#3@7 ~@7 f#2@9 ~", // C#m7b5 F#7
  Z: "~ f#4 [e4,e5] [f#4,f#5] ~ f#4 ~ f#4, [b1,b2]@15 ~ [b1,b2,d#4,b4,d#5]@8 [a2,d#4,b4,d#5]@7 ~, [e4,b4,e5]@8 b4@7 ~@17", // E F# B B7 E5
  AA: "[g3,b3,d4]@8 [g3,b3,d4]@7 ~ [g3,b3,d4]@6 f#3@2 ~@4 [d4,g4]@4, [g1,g2]@15 ~ [b1,b2]@15 ~, ~@3 g3, ~@13 b3@3", // G G5 G B
  AB: "[g3,c4,e4,g4]@8 [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [g3,c4,e4,g4]@8 [c2,c3]@3 ~ [b1,b2]@4, [c2,c3]@23 ~@9, ~@8 g3@7 ~@9 [g3,c4,e4,g4]@7 ~", // C B C
  AC: "[a2,g3,c4,e4,g4]@6 e2@2 [a2,g3,c4,e4,a4]@8 [f#3,a3,c4,e4]@8 [f#3,a3,c4,e4]@7 ~, a1@15 ~ [d2,d3]@15 ~", // Am7 F#m7b5 D
  AD: "[g3,b3,d4]@8 [g3,b3,d4]@7 ~ g3@4 g3@4 [g1,g2,g4]@3 ~ [f#1,f#2,f#4]@4, [g1,g2]@23 ~@9, ~@16 [b3,d4]@8 [b3,d4]@7 ~", // G F# G Bm
  AE: "[b3,e4,g4]@8 ~@4 [e1,e2]@4 d3@4 ~@4 e4@3 ~ [d2,d3,e4,g4]@4, [e1,e2]@11 ~@5 d2@3 ~ d2@8 ~@4, ~@8 [b3,e4,g4]@7 ~ [b3,e4,g4]@6 d3@5 ~@5, ~@24 b3@7 ~", // Em E Em7 E Em
  AF: "[a3,c#4,e4,g4]@4 ~@2 [c#2,c#3,a4]@2 d5@2 [e4,e5]@2 [c2,c3] ~ c3@2, [c#1,c#2]@11 ~@5 [d2,d3,d4,a4]@8 ~@2 c2@5 ~, ~@8 [e4,e5]@8 ~@8 [d4,a4,d5]@7 ~", // A7 F#m E C C# D5 E D5
  AG: "~@8 [g3,b3,d4]@4 [b3,d4,f4]@4 [c2,c3,c4,e4,g4,c5]@7 ~ [c2,c3]@4 [b1,b2]@4, c2@15 ~@17, [b2,b3,d4,f4]@3 b2@5 ~@8, ~@4 g3@4 ~@16 [c4,e4,g4,c5]@7 ~", // G Bdim C B Bdim C
  AH: "a1@4 ~@8 b2 ~ c3@2 ~@4 c4@4 ~@4 d4@4, [c4,e4,g4]@3 a1@3 ~@2 [d2,e4,g4,c5]@4 [d2,f#4,a4,c5,d5]@4, a2@3 ~ a2@8 g3@4 d3@15 ~, ~@4 g3@4 [c4,e4,g4]@7 ~@17", // C D7 C
  AI: "[b3,d#4,f#4]@2 f#4!2 [b3,d#4,f#4,a4]@2 f#4!2, [d#1,d#2]@15 ~ [b1,b2]@15 ~, ~ [f#3,b3,d#4] ~ [a4,b4,d#5]", // B B7 D# B B7
  AJ: "[e4,a4,c5]@4 ~@2 [d2,d3]@2 c#3@2 ~@2 g4 ~ g4@2, [e2,e3]@11 ~@5 c#2@2 ~@2 c#2@11 ~, ~@8 [e4,g4,b4]@7 ~ [a3,c#4,e4,g4]@6 c#3@9 ~, ~@13 [c#5,e5,g5]@3", // Am D E Em A7 C#dim
  AK: "[b3,e4,g4,b4]@7 ~@5 [e2,e3]@4 [b3,e4,b4]@6 [f#4,a4]@2 ~@4 [e2,e3,b4]@4, [e2,e3]@11 ~@5 [e2,e3]@11 ~@5, ~@8 [b3,e4,g4,b4]@7 ~ g4@5 ~@3 [b3,e4,g4]@7 ~", // Em E E5 F#m E5 E Em
  AL: "~ f#4 ~ f#4 ~ f#4 ~ a4, [b1,b2]@15 ~ [b1,b2,d#4,b4,d#5]@8 [a2,d#4,b4]@7 ~, [e4,b4,e5]@8 [e4,b4,e5]@7 ~@17", // B B7 E5
  AM: "[e4,a4,c5]@8 ~@4 [d2,d3]@4 c#3@4 ~@4 [a3,c#4,e4,a4]@7 ~, [e2,e3]@11 ~@5 c#2@2 ~@2 c#2@11 ~, ~@8 [e4,g4,b4]@7 ~ [a3,c#4,e4,g4]@6 c#3@9 ~", // Am D A E Em A7
  AN: "[c4,e4,g4,c5]@8 ~@4 d3@3 ~ [c4,e4,g4,c5]@8 ~@6 g4@2, d2@15 ~ [d2,d3]@12 [d3,d4]@4, d3@11 ~@13 g3@8, ~@8 [c4,e4,g4,c5]@7 ~@11 c4@6", // C D C
  AO: "[a3,d4,f#4]@8 ~@4 d3@3 ~ [d2,d3,d4,f#4,a4,c5,d5]@16, d2@15 ~@17, d3@11 ~@21, ~@8 [d4,f#4,a4,c5,d5]@7 ~@17", // D D7
  AP: "[g3,c4,d4,g4]@8 ~@4 g2@3 ~ [g3,c4,d4,g4]@8 ~@4 g2@3 ~, g1@15 ~ g1@15 ~, g2@11 ~@5 g2@12 ~@4, ~@8 [g3,c4,d4,g4]@7 ~@9 [g3,c4,d4,g4]@8", // Gsus4
  AQ: "[g3,b3,d4,g4]@8 ~@4 g2@3 ~ [d5,g5,c6,d6]@8 [d6,g6,b6]@8, g1@15 ~ [g1,g2]@15 ~, g2@11 ~@21, ~ [d4,g4,b4,d5] ~@2", // G Csus2 G
  AR: "[g1,g2,d3,b3]/2", // G
})).s("gm_piano").gain(0.33)

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  ~@10 A B C D E F G H I J K H L M N O P A Q R S T U V W X Y Z AA AB AC AD H AE J AF AG AH AI N AJ AK X Q AL S AM U V W
  X AN AO AP AB AQ AR AS AT AU AV AW@3
>`.pickRestart({
  A: "g1@10 ~@2 g1@3 ~ b1@14 ~@2", B: "c2@17 ~@3 c2@3 ~ b1@7 ~", C: "a1@10 ~@2 b1@2 c2@2 d2@10 ~@2 d1@3 ~",
  D: "g1@16 ~@4 g2@3 ~ f#2@3 ~ e2@3 ~", E: "d#2@15 ~ b1@14 ~@2", F: "e2@10 ~@2 d2@3 ~ c#2@15 ~", G: "d2@15 ~",
  H: "d2@10 ~@2 d2@3 ~ d1@10 ~@2 f#1@3 ~", I: "g1@14 ~@2 g1@11 ~ g1@3 ~", J: "b1@10 ~@2 b1@3 ~ d#2@10 ~@2 d#2@3 ~",
  K: "e2@10 ~@2 e2@3 ~ e2@10 ~@2 e2@3 ~", L: "g1@10 ~@2 g1@3 ~ g1@10 ~@2 g1@3 ~",
  M: "f#1@10 ~@2 f#1@3 ~ b1@10 ~@2 b1@3 ~", N: "e2@10 ~@2 e2@3 ~ d2@10 ~@2 d2@3 ~",
  O: "c#2@7 ~ c#3@7 ~ f#2@6 ~ f#1 f#1@5 ~@3", P: "b2@6 ~@2 b2@7 ~ b1@7 ~ a2@7 ~",
  Q: "c2@10 ~@2 c2@3 ~ c2@7 ~ c3@3 ~ b2@3 ~", R: "a2@10 ~@2 a2@3 ~ d2@10 ~@2 d2@3 ~",
  S: "g1@10 ~@2 g1@3 ~ g1@6 ~@2 g1@3 ~ f#1@3 ~", T: "e1@10 ~@2 e1@3 ~ d2@10 ~@2 d2@3 ~",
  U: "c#2@10 ~@2 c#2@3 ~ d2@7 ~ c2@7 ~", V: "b1@10 ~@2 b1@3 ~ c2@6 ~@2 c2@3 ~ b1@3 ~",
  W: "a1@10 ~@2 b1 ~ c2@2 d2@6 ~@2 d1@7 ~", X: "g1@10 ~@2 g1@3 ~ b1@10 ~@2 b1@3 ~", Y: "c2@10 ~@2 g1@3 ~ c2@7 ~ b1@7 ~",
  Z: "a1@10 ~@2 a1@3 ~ d2@7 ~ d1@7 ~", AA: "g1@10 ~@2 g1@3 ~ g2@6 ~@2 f#2@3 ~ e2@3 ~",
  AB: "d#2@10 ~@2 d#2@3 ~ b1@7 ~ b1@3 ~ b1@3 ~", AC: "e2@10 ~@2 d2@3 ~ c#2@11 ~ c#2@3 ~",
  AD: "d2@10 ~@2 d2@3 ~ d2@11 ~ d3@4", AE: "g1@10 ~@2 g1@3 ~ g1@8 ~@8", AF: "e2@10 ~@2 e2@3 ~ e2@7 ~ f#2@3 ~ e2@3 ~",
  AG: "d2@10 ~@2 d2@3 ~ d1@10 ~@2 f#1 ~ d1 ~", AH: "g1@10 ~@2 g1@3 ~ g1@8 ~@2 g2@2 e2 ~ d2@2",
  AI: "f#1@9 ~ f#1 ~ f#1@3 ~ b1@10 ~@2 b1@3 ~", AJ: "c#2@10 ~@2 c#2@3 ~ f#1@7 ~ f#1@4 f#1 ~ f#1 ~",
  AK: "b1@7 ~ b2@3 ~ f#2@3 ~ b1@7 ~ a1@7 ~", AL: "a2@10 ~@2 a2@3 ~ d2@7 ~ d1@7 ~", AM: "e1@10 ~@2 e1@3 ~ d1@7 ~ d2@7 ~",
  AN: "c2@10 ~@2 g2@3 ~ c2@7 ~ b1@7 ~", AO: "a1@10 ~@2 a1@3 ~ d2@7 ~ d3@3 ~ d2@3 ~",
  AP: "g1@10 ~@2 g1@3 ~ g2@3 ~ g2@3 ~ f#2@3 ~ e2@3 ~", AQ: "e2@7 ~ e2@3 ~ d2@3 ~ c#2@7 ~ c#3@3 ~ c#2@3 ~",
  AR: "d2@10 ~@2 d2@3 ~ d2@7 ~ d2@3 ~@2 c#3 [b2,c3] ~, ~@14 d3 ~", AS: "d2@10 ~@2 d2@3 ~ d2@10 ~@2 d2@3 ~",
  AT: "d2@10 ~@2 d2@3 ~ d1@15 ~", AU: "g1@10 ~@2 g1@3 ~ g1@10 ~@2 g2@3 ~", AV: "g1@10 ~@2 g1@3 ~ g1@14 ~@2",
  AW: "[g1@65 ~@31]/3",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · string ensemble 2 · "#Sl.Strin"
const string_ensemble_2 = note("<A@3 B@2 C@2 D@7 E F@8 G@7 H@2 I@7 E J@8 K@7 H@2 I@7 E L@8 ~>".pickRestart({
  A: "[~@31 [g2,b3,d4,g4,b4,d5]@31 ~ g2@16 b2@16 c3, ~@21 [d4,d5]@11]/3", // G D
  B: "[~@5 [e4,e5]@2 ~@20 b2@4 ~@6 a4@2 ~@8 d3@15 ~ g4, ~@7 [c4,c5]@57, ~@31 a2@17 ~@14 g2@2, ~@39 f#4@25]/2", // E C
  C: "[~@5 [d4,d5]@2 ~@15 g3@5 [f#2,f#3]@4 [e2,e3]@16 [d2,d3]@16 [c#2,c#3,a3,e4], ~@7 [b3,b4]@23 ~ [b3,g4,b4]@33]/2", // D F# E D A B Em
  D: "[~@15 [d2,d3]@8 ~@8 [b1,b2,f4]@16 [c2,c3]@12 [b1,b2]@4 [a1,a2]@16 ~@7 [f#3,d4,f#4]@9 [g2,g3,b3]@16 [b2,b3]@16 c3@23 [b2,b3]@9 [a2,a3,e4,g4]@15 ~@17 g3@23 [f#2,f#3]@5 ~@4 [d#2,d#3,f#4], ~@6 a4@27 ~@14 e4@41 ~@7 g4@64 c5@32 g4@33, ~@14 f#4@16 [g3,g4]@58 ~@7 d4@8 ~@24 [c4,e4]@33 ~@14 d4@16 b4@32 a3@2, ~@23 [c2,c3]@10 ~@46 [d2,d3]@17 ~@79 [d3,f#4,a4]@16 d5@29 ~@4, ~@190 g2@26 ~@3 [e2,e3]@5]/7", // D Bdim C B A D G B …
  E: "~@7 [b3,b4]@4 [f#4,f#5]@4 [b1,b2,d#4,a4,d#5]@15 ~ [e2,e3,e4,a4,a5], ~@15 c4", // B F# B7 A5
  F: "[~@11 [d2,d3]@4 ~@8 a3@8 ~@9 g5@3 ~@4 [d5,g5]@4 ~ g5@3 [b4,d5]@4 ~ d5@3 e4@12 g4@4 ~@32 b4@13 ~@3 [b1,b2,b3]@16 ~@8 f#6@7 ~ b4@8 e4@8 b4@7 ~@29 d5@4 f#5@4 ~@4 c6@8 b5@12 g5@4 b5@4 d6@4 [f#2,f#3,c4,f#4,a4,e6], ~@5 [g4,g5]@26 [b3,g4]@32 a5@29 g5@33 ~@2 f#5@25 ~@6 g6@25 e4@8 [d2,d3]@31 g2@34, ~@5 b3@19 ~@7 [d2,d3]@64 [g1,g2,d4,g4]@30 ~@18 [d#2,d#3,a3]@16 g4@15 ~ g4@15 [f#4,a4]@33 [g3,b3,d4,g4]@33, ~@15 [c#2,c#3]@18 ~@6 b5@4 d6@5 ~@15 c5@47 b3@17 ~@32 [e2,e3,b3]@31 d4@17 c4@17 ~@32, ~@44 b5@5 ~@2 b5@5 ~@3 g5@5 ~@15 [d4,f#4]@16 c4@18 ~@14 [d#4,f#4]@33 ~@22 g5@9 a5@21 ~@7 a5@5 ~@32]/8", // D G5 Bm B F#m7b5 G Em D …
  G: "[~@31 e6@8 b5@8 g5@8 e5@8 [c#2,c#3,b3,b4]@16 [f#2,f#3,a#3,a#4]@16 ~@24 [a1,a2,a3]@8 g2@16 b2@16 ~@6 [e4,e5]@2 ~@20 b2@4 ~@6 a4@2 ~@8 d3@15 ~ g4, ~@14 d#6@16 g4@50 ~@15 b4@30 ~@2 g3@81 ~@16, ~@15 [b1,b2,d#4]@16 [e2,e3]@16 [d2,d3]@18 ~@30 [b1,b2,b3]@26 ~@6 [d4,d5]@40 ~@32 f#4@25, ~@16 b3@46 ~ [c#4,e4]@32 e4@15 d#4@17 b3@33 ~@7 [c4,c5]@57, ~@30 e4@32 ~@17 f#4@49 ~@31 c3@30 ~@2 a2@17 ~@14 g2@2]/7", // C#7 F# A E B E D B …
  H: "[~@5 [d4,d5]@2 ~@15 g3@5 [f#2,f#3]@4 [e2,e3,e4]@16 ~ d4@15 [c#2,c#3,a3,e4], d3@24 ~@23 [d2,d3]@17, ~@7 [b3,b4]@23 ~ [b3,g4,b4]@33]/2", // D F# E A D B Em
  I: "[~@16 d4@7 ~ c4@6 ~ [b1,b2,f4]@16 [c2,c3,c4]@12 [b1,b2,b3]@4 [a1,a2]@16 ~@7 [f#3,d4,f#4]@9 [g2,g3,b3]@16 [b2,b3]@16 c3@23 [b2,b3]@9 [a2,a3,e4,g4]@15 ~@17 g3@23 [f#2,f#3]@5 ~@4 [d#2,d#3,f#4], c#4@14 f#4@16 [g3,g4]@58 ~@87 [d3,f#4,a4]@16 g4@33, ~@6 a4@25 b3@15 ~ e4@41 ~@7 g4@64 c5@32 d5@29 ~@4, ~@15 [d2,d3]@8 [c2,c3]@10 ~@30 c4@25 ~@7 d4@8 ~@24 [c4,e4]@33 ~@14 d4@16 g2@26 ~@3 [e2,e3]@5, ~@79 [d2,d3]@17 ~@94 b4@32 a3@2]/7", // Bdim C B A D G B A7 …
  J: "[~@11 [d2,d3]@4 ~@8 a3@8 ~@9 g5@3 ~@4 [d5,g5]@4 ~ g5@3 [b4,d5]@4 ~ d5@3 e4@12 g4@4 ~@32 b4@13 ~@3 [b1,b2,b3]@16 [d#2,d#3,a3]@16 b4@8 e4@8 b4@8 ~@24 c4@15 ~ [g3,b3,d4,g4]@32 [f#2,f#3,c4,f#4,a4], ~@5 [g4,g5]@26 [b3,g4]@32 a5@29 g5@33 ~@65 [f#4,a4]@34 ~@32, ~@5 b3@19 ~@7 [d2,d3]@64 [g1,g2,d4,g4]@30 ~@34 [e2,e3,b3]@31 d4@17 ~@15 g2@34, ~@15 [c#2,c#3]@18 ~@6 b5@4 d6@5 ~@15 c5@47 b3@17 ~@32 g4@15 ~ g4@16 [d2,d3]@33 ~@32, ~@44 b5@5 ~@2 b5@5 ~@3 g5@5 ~@15 [d4,f#4]@16 c4@18 ~@14 [d#4,f#4]@33 ~@23 e4@10 ~@63]/8", // D G5 Bm B D#dim G F#dim G …
  K: "[~@31 [e2,e3]@16 [d2,d3]@16 [c#2,c#3,b3]@16 [f#2,f#3,a#3]@16 ~@24 [a1,a2,a3]@8 g2@16 b2@16 ~@6 [e4,e5]@2 ~@20 b2@4 ~@6 a4@2 ~@8 d3@15 ~ g4, ~@15 [b1,b2,d#4]@18 ~@62 [b1,b2,b3]@26 ~@6 [d4,d5]@40 ~@32 f#4@25, ~@16 b3@46 ~ [c#4,e4]@33 ~@14 d#4@17 b3@33 ~@7 [c4,c5]@57, ~@30 g4@50 ~@15 e4@18 ~@14 g3@81 ~@16, ~@30 e4@32 ~@17 f#4@49 ~@31 c3@30 ~@2 a2@17 ~@14 g2@2]/7", // E D C#7 F# A E B D …
  L: "[~@11 [d2,d3]@4 ~@8 a3@8 ~@9 g5@3 ~@4 [d5,g5]@4 ~ g5@3 [b4,d5]@4 ~ d5@3 e4@23 ~ e4@4 g4@4 f#4@24 [g4,g5]@8 [c4,d4,g5]@33 d5@5 ~@2 g5@15 ~ b5@3 c6@3 d6@2 g6@65, ~@5 [g4,g5]@26 [b3,g4]@32 a5@57 ~@45 b5@4 ~@87, ~@5 b3@19 ~@7 [d2,d3]@97 ~@128, ~@15 [c#2,c#3]@18 ~@6 b5@4 d6@5 ~@15 c5@64 ~@33 b3@96, ~@44 b5@5 ~@2 b5@5 ~@3 g5@5 ~@31 d4@31 ~ [g2,d3,g3]@129]/8", // D G5 Bm G Csus2 G Em D …
})).s("gm_string_ensemble_2").gain(0.32)

// chords · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note("<~@22 A B ~@11 C D E F ~@5 G H@2 I J K L@2 ~@8 C D E F ~@10>".pickRestart({
  A: "~@5 g3 b3 d4", B: "e4 ~", C: "~@8 b4@4 d5@4 d5@4 g5@3 ~ g5@3 a5@2 b5@2 ~", D: "b5@3 e5 e5@8 a5@2 b5@2",
  E: "c6@8 a5@4 g5@4 a5@7 ~ a5@3 b5@2 c6@2 ~",
  F: "[c6,e6]@6 [b5,d6]@2 [b5,d6]@7 ~ c6@6 [g5,b5]@2 [g5,b5]@8, ~@15 a5@7 ~@10", // C Bm G
  G: "[f#4,f#5]@2 [f#4,f#5]@2 [f#4,f#5]@2 [c5,a5,c6] [b4,g5,b5]", // F# F Em
  H: "[[a4,f#5,a5]@8 [g4,e5,g5]@4 [f#4,d#5,f#5]@4 [g4,e5,g5]@15 ~ [a4,a5]@8 [a4,f#5,a5]@8 [a4,f#5,a5]@8 [e5,c6,e6]@4 [d5,b5,d6]@4, ~@31 f#5@8 ~@25]/2", // D C D#m C A D C G
  I: "[c5,a5,c6]@2 [b4,g5,b5] [a#4,f#5,a#5] ~ g3 b3 d4, ~ [b4,g5,b5]", // F Em D#m Em
  J: "[b4,b5]@2 [a4,a5] [g#4,g#5] [a4,a5]@2 [c5,a5,c6] [b4,g5,b5], e4 ~", // B A G# A F Em
  K: "[a4,f#5,a5]@2 [g4,e5,g5] [f#4,d#5,f#5] [g4,e5,g5]@2 [b4,b5] [a4,a5]", // D C D#m C B A
  L: "[[g4,g5]@16 [f#4,f#5]@15 ~ e5@16 [d#4,d#5]@16, ~@31 e4@16 ~@17]/2", // G F# D#
})).s("gm_string_ensemble_1").gain(0.48)

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

// drums · snare
const snare = s("sd").struct("<~@19 A@7 B A@7 B A@8 B A@7 B A@7 B A@8 B A B ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.48)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A ~@7 B ~@7 A ~@8 C ~@7 A ~@7 A ~@14>".pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "~@10 x ~@2 x ~@2",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A B A B A B A B@2 ~@7 C ~@5 C ~ D ~@3 E ~ F ~@14 G ~@7 G ~@3 H I ~ J ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@5 x ~@2", D: "~@3 x!2 ~@3", E: "~@7 x", F: "~@3 x ~@4", G: "~@6 x!2", H: "~@5 x!3",
  I: "x!4 ~@4", J: "~@3 x ~@2 x ~",
})).gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@34 A ~@8 A ~@7 A ~@7 A ~@14>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@19 A ~@7 A ~@7 A ~@8 A ~@7 A ~@6 B A ~@7 B A B A ~@2>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@11 A ~ A ~ A ~ B ~@9 C ~@16 D E@6 F ~@18 G ~@3>".pickRestart({
  A: "~@5 x!2 ~", B: "~@5 x!3", C: "x", D: "~ x!7", E: "x!8", F: "x!5 ~@3", G: "~@3 x",
})).gain(0.48)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@11 A ~ A ~ A ~ A ~@56>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.32)

stack(
  piano, bass, string_ensemble_2, string_ensemble_1, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash,
  ride, ride_soft
)

More by Mouskouri Nana