Strudelify

Il Tempo Non Torna Piu

Fiorella Mannoia

KeyB majorTempo104 bpm
0:00/0:00
// Il Tempo Non Torna Piu — Fiorella Mannoia
// 104 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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 · synth bass 2
const bass = note(`<
  ~ A B C D A E F G H I H J H I H J H I H K L M N O A B C D F P N Q A R S D F P N O A B C D A E F G T U V W T U V W T U
  V W X Y Z AA AB AC AD AE AF AG AH AI AB AJ AK AE AF AL AH AI AB AC AD AE AF AL Z AM AB AJ AK AE AF AL AH AM AN AC AD
  AE AO AL AH AM AB AJ AK AE AO AG Z AM AN AC AD AE AO AG Z AM AB AJ AK AP AQ@2
>`.pickRestart({
  A: "a1@2 ~ a1 ~ a1 e2 a2 a1@2 ~ a1 ~ a1 a2 e2", B: "d2@2 ~ d2 ~ a1 d2 ~ e2@2 ~ e2 ~ a1 e2 d2",
  C: "a1@2 ~ a1 ~ a1 a2 ~ a1@2 ~ a1@2 a2 e2 a1", D: "d2@2 ~ d2 ~ a1 d2 a1 e2@2 ~ e2 e1@2 e2 g1",
  E: "d2@2 ~ d2 ~ a1 d2 a1 e2@2 ~ e2 ~ a1 d2 e2", F: "f#2@2 ~ f#2 ~ c#2 f#2 c#2 f#1@2 ~ f#1 ~ f#1 c#2 f#2",
  G: "e2@2 ~ e2@2 e1 b1 e2 e1@2 ~ e1@2 e2 b1 e1", H: "a1@2 ~ a1 ~ a1 e2 a2 a1@2 ~ a1 ~ a2 e2 a1",
  I: "d2@2 ~ d2 ~ a1 d2 a1 e2@2 ~ e1 ~ e1 a1 e2", J: "d2@2 ~ d2 ~ d1 d2 d1 e1@3 e2 ~ e1 e2 b1",
  K: "d2@2 ~ d2 ~ d1 d2 d1 e1@2 ~ e2 ~ e1 e2 b1", L: "b1@2 ~ b1 ~ b1 b2 f#2 b1@2 ~ b1 ~ b2 f#2 b1",
  M: "d2@2 ~ d2 ~ d1 d2 d1 e1@3 e2 ~ e1 e2 e1", N: "a1@2 ~ a1 ~ a1 e2 a2 a1 ~ a1 ~ a2 e2 a1@2",
  O: "d2 ~ d2 ~@2 a1 d2 a1 e2 ~ e2 ~ e1 e2 a1 d2", P: "d2@2 ~ d2 ~ d1 d2 a1 e1@2 ~ e1 ~ e2 a1 e2",
  Q: "d2 ~@2 d2 ~ a1 d2 a1 e2 ~ e2 ~ e1 e2 a1 d2", R: "b1@2 ~ b1 ~ b1 e2 b2 b1 ~@2 b1 ~ b2 b1 b2",
  S: "c#2@2 ~ c#2 ~ c#2 c#3 ~@2 c#3 c#2 c#2@2 c#3 c#2 c#3", T: "b1 ~@2 b1 ~ b1 f#2 b2 b1@2 ~ b1 ~ b2 f#2 b1",
  U: "e2@2 ~ e2 ~ b1 e2 b1 f#2@2 ~ f#1 ~ f#1 b1 f#2", V: "b1@2 ~ b1 ~ b1 f#2 b2 b1@2 ~ b1 ~ b2 f#2 b1",
  W: "e2@2 ~ e2 ~ e1 e2 e1 f#1@2 ~ f#2 ~ f#1 f#2 c#2", X: "c#2@2 ~ c#2 ~ c#2 c#3 g#2 c#2@2 ~ c#2 ~ c#3 g#2 c#2",
  Y: "e2@2 ~ e2 ~ e1 e2 e1 f#1@3 f#2 ~ f#1 f#2 f#1", Z: "b1@2 ~ b1 ~ b1 f#2 b2 b1 ~ b1 ~ b2 f#2 b1@2",
  AA: "e2 ~@2 e2 ~ b1 e2 b1 f#2 ~ f#2 ~ f#1 f#2 b1 e2", AB: "b1@2 ~ b1 ~ b1 f#2 b2 b1@2 ~ b1 ~ b1 b2 f#2",
  AC: "e2@2 ~ e2 ~ b1 e2 ~ f#2@2 ~ f#2 ~ b1 f#2 e2", AD: "b1@2 ~ b1 ~ b1 b2 ~ b1@2 ~ b1@2 b2 f#2 b1",
  AE: "e2@2 ~ e2 ~ b1 e2 b1 f#2@2 ~ f#2 f#1@2 f#2 a1", AF: "g#2 ~@2 g#2 ~ d#2 g#2 d#2 g#1@2 ~ g#1 ~ g#1 d#2 g#2",
  AG: "e2@2 ~ e2 ~ e1 e2 b1 f#1@2 ~ f#1 ~ f#2 b1 f#2", AH: "b1@2 ~ b1 ~ b1 f#2 b2 b1 ~ b1 ~ b2 f#2 b1 ~",
  AI: "e2@2 ~ e2 ~ b1 e2 b1 f#2 ~ f#2 ~ f#1 f#2 b1 e2", AJ: "c#2@2 ~ c#2 ~ c#2 f#2 c#3 c#2 ~@2 c#2 ~ c#3 c#2 c#3",
  AK: "d#2@2 ~ d#2 ~ d#2 d#3 ~@2 d#3 d#2 d#2@2 d#3 d#2 d#3", AL: "e2@2 ~ e2 ~ e1 e2 b1 f#1 ~@2 f#1 ~ f#2 b1 f#2",
  AM: "e2 ~ e2 ~@2 b1 e2 b1 f#2 ~ f#2 ~ f#1 f#2 b1 e2", AN: "b1@2 ~ b1 ~ b1 f#2 b2 b1 ~@2 b1 ~ b1 b2 f#2",
  AO: "[a1,g#2] ~@2 g#2 ~ d#2 g#2 d#2 g#1@2 ~ g#1 ~ g#1 d#2 g#2", AP: "e2@2 ~ e2 ~ b1 e2 b1 f#2@2 ~ f#2 ~ f#1@2 f#2",
  AQ: "[a1 b1@29 ~@2]/2",
})).s("gm_synth_bass_2").gain(0.45)

// chords · epiano2
const epiano2 = note(`<
  ~@20 A B C D E ~@6 F E G@2 H I J@2 F E ~@11 K ~@2 L M N O ~ P Q R S T ~@6 U T V@2 W X Y@2 U T ~@6 U Z AA AB AC X ~@2 U
  T ~@6 U Z AD AE AF ~@3 U Z ~@6 U Z AD AE AF ~ AG@2
>`.pickRestart({
  A: "~@14 d4 e4", B: "[b1,a3,b3,d4,f#4]", C: "[a3,d4,e4]@7 ~ [e2,g#3,b3,e4]@8, d2 ~", D: "[a2,b3,c#4,e4]",
  E: "[d2,a3,d4,e4] [e2,g#3,b3,e4]", F: "[a2,b3,c#4,e4], e2 ~@15", G: "[~@16 d4@13 ~@3, ~@8 a4@9 ~@15, ~@6 c#4@9 ~]/2",
  H: "[c#2,a3,b3,e4]@15 ~", I: "[a3,d4,e4]@8 [b3,e4]@7 ~", J: "[~@12 a4 g#4 a4 ~ a4@6 ~@10, ~@15 e5@8 ~@9]/2",
  K: "e4 [a4,b4,e5] ~ [a4,b4,e5] ~ [a4,b4,e5] e4 [a4,b4,e5] ~ [b4,e5,f#5] ~ [b4,e5,f#5] ~ [b4,e5,f#5] e4 [b4,e5,f#5]", // Asus2 Bsus4
  L: "~@13 f#5 b4 c#5", M: "f#5 b4 c#5 f#5 b4 c#5 f#5 b4 c#5 f#5 b4 c#5 f#5 ~@3",
  N: "~@2 [f#4,b4,d#5]!2 ~@2 [f#4,d#5] [f#4,b4,d#5] ~ [f#4,b4,d#5] ~@4 [f#4,b4,d#5]!2", O: "~@11 [b4,c#5,e5,f#5]!5",
  P: "~@14 e4 f#4", Q: "[c#2,b3,c#4,e4,g#4]", R: "[b3,e4,f#4]@3 ~ [f#2,a#3,c#4,f#4]@4, e2 ~", S: "[b2,c#4,d#4,f#4]",
  T: "[e2,b3,e4,f#4] [f#2,a#3,c#4,f#4]", U: "[b2,c#4,d#4,f#4], f#2 ~@15", V: "[~@12 d#4@17 ~@3, ~@8 b4@9 ~@15]/2",
  W: "[d#2,b3,c#4,f#4]@15 ~", X: "[b3,e4,f#4]@8 [c#4,f#4]@7 ~", Y: "[~@12 b4 a#4 b4 f#5@8 ~@9]/2",
  Z: "[e2,b3,e4,f#4]@7 ~ [f#2,a#3,c#4,f#4]@8", AA: "~@2 b4 d#4", AB: "e4@2 a#4 g#4",
  AC: "f#4@4 a#3@3 ~ b3@4 f#4@4, ~@8 c4 ~@7", AD: "~@8 b4@4 d#4@3 ~", AE: "e4@7 ~ a#4@3 ~ g#4@4", AF: "f#4 a#3 b3 f#4",
  AG: "[~ [b2,b3,c#4,d#4,f#4]@29 ~@2]/2", // B
})).s("gm_epiano2").gain(0.36).pan(0.6)

// chords · percussive organ
const percussive_organ = note(`<
  ~ A B C D A D E F G H G I J H G I J H G I K L M N ~@2 O P Q R M N S T U P Q R M N A B C D A D E F V W V X Y W V X V W
  V X Z AA AB AC ~@2 AD AE AF AG AB AC AH AI AJ AE AF AG AB AC ~@2 AD AE AF AG AB AC AH AI AJ AE AF AG AB AC AK AL AM AN
  AF AG AB AC AH AI AJ AE AF AG AB AC AK AL AM AN AF AG AB AC AH AI AJ AO ~@2
>`.pickRestart({
  A: "[b4,c#5,e5]", B: "[d5,f#5]@7 ~ [e5,g#5]@8", C: "[c#5,e5]@15 ~", D: "[d5,f#5]@7 ~ [e5,g#5]@7 ~", E: "[e5,f#5,a5]",
  F: "a5@7 ~ g#5@6 ~@2, [d5,e5]@7 ~", G: "[a4,e5]@15 ~", H: "[a4,d5,e5]@7 ~ [b4,d5,e5]@8",
  I: "[a4,d5,e5]@7 ~ [b4,d5,e5]@7 ~", J: "[a4,e5]", K: "[d5,f#5]", L: "[d5,e5,f#5]@7 ~ [e5,b5]@8", M: "[a5,c#6]@15 ~",
  N: "[a5,d6]@7 ~ [b5,e6]@7 ~", O: "[e5,a5]@15 ~", P: "[d5,e5,a5]@7 ~ [e5,g#5]@8", Q: "[f#5,a5]@15 ~",
  R: "[d5,e5,a5]@7 ~ [d5,e5,g#5]@7 ~", S: "[a3,e5,a5]", T: "[b3,e5,a5]@15 ~, d5@13 ~@3", U: "[c#4,e5], c#5@7 ~",
  V: "[b4,f#5]@15 ~", W: "[b4,e5,f#5]@7 ~ [c#5,e5,f#5]@8", X: "[b4,e5,f#5]@7 ~ [c#5,e5,f#5]@7 ~", Y: "[b4,f#5]",
  Z: "[e5,g#5]@15 ~", AA: "[e5,f#5,g#5]@7 ~ [f#5,c#6]@7 ~", AB: "[b5,d#6]@15 ~", AC: "[b5,e6]@7 ~ [c#6,f#6]@7 ~",
  AD: "[f#5,b5]@15 ~", AE: "[e5,f#5,b5]@7 ~ [f#5,a#5]@7 ~", AF: "[g#5,b5]@15 ~", AG: "[e5,f#5,b5]@7 ~ [e5,f#5,a#5]@7 ~",
  AH: "[b3,f#5,b5]", AI: "[c#4,e5,f#5,b5]@7 ~", AJ: "[d#4,f#5], d#5@7 ~", AK: "[c#5,d#5,f#5]@15 ~",
  AL: "[e5,g#5]@7 ~ [f#5,a#5]@8", AM: "[d#5,f#5]@15 ~", AN: "[e5,g#5]@7 ~ [f#5,a#5]@7 ~",
  AO: "[e5,f#5,b5]@7 ~ [f#5,a#5]@8", // Esus2 F#
})).s("gm_percussive_organ").gain(0.21)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A B C ~ D E F@2 ~@14 G H I J K L ~ M G H N O P L ~ M G H A B C ~ A E Q@2 ~@14 R S T U V W ~ X R S Y Z AA AB ~ AC R S
  T U AD W ~ X R S AE AF@2 W ~ X R S AG AH AI ~@2 X R S AE AF@2 W ~ X R AJ AG AH AI ~@2 X R S AK@3 W AL@2
>`.pickRestart({
  A: "e4@3 f#4", B: "a3 b3 c#4 d4", C: "c#4", D: "e4@11 ~ f#4@4", E: "a3 b3 d4 c#4",
  F: "[c#4@12 ~@2 c#4 ~ e4@13 ~@3, ~@15 d4@2 ~@15]/2", G: "~ e5 a5 e6", H: "d6@2 c#6@2 b5@3 ~", I: "[c#4,a4]@15 ~",
  J: "[d4,e4,a4]@7 ~ [e4,g#4]@7 ~", K: "~@3 e4@5, [c#4,a4]@15 ~", L: "[d4,e4,a4]@7 ~ [e4,g#4]@8",
  M: "[e4,a4]@8 [e4,g#4]@7 ~", N: "[e4,a4]@15 ~", O: "[d4,e4,a4]@15 ~", P: "[c#4,a4]",
  Q: "[c#4@13 ~ c#4 ~ e4@12 ~@4, ~@15 d4@2 ~@15]/2", R: "~ f#5 b5 f#6", S: "e6@2 d#6@2 c#6@3 ~", T: "[d#4,b4]@15 ~",
  U: "[e4,f#4,b4]@7 ~ [f#4,a#4]@7 ~", V: "~@6 f#4@9 ~, [d#4,b4]@15 ~", W: "[e4,f#4,b4]@7 ~ [f#4,a#4]@8",
  X: "[f#4,b4]@7 ~ [f#4,a#4]@7 ~", Y: "[f#4,b4]", Z: "[e4,f#4,b4]", AA: "[d#4,b4]", AB: "[e4,f#4,b4] [f#4,a#4]",
  AC: "[f#4,b4]@8 a#4@7 ~, ~@8 f#4 ~@7", AD: "~@6 f#4@9 ~, b4@15 ~, d#4@13 ~@3", AE: "[f#4,b4]@15 ~",
  AF: "[[e4,f#4]@15 ~ d#4@15 ~, b4@15 ~]/2", AG: "f#4@3 g#4", AH: "b3@4 c#4@3 ~ d#4@4 e4@4", AI: "d#4",
  AJ: "e6 d#6 ~@2", AK: "[~@16 e4@14 ~@2 d#4@15 ~, [f#4,b4]]/3", AL: "[~ [c#5,d#5,f#5]@29 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.36).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A B C ~ A D E F G H G H G H G H G H G H I J K L ~@5 M K L N O P ~@2 M K L A B C ~ A D E F Q R Q R Q R Q R Q R Q R S
  T U V ~@5 W U V I X Y ~@2 Z U AA ~@5 W U AA I X Y ~@2 AB U V AC AD AE ~@2 Z U AA I X Y ~@2 Z U V AC AD AE ~@2 Z U V I
  X Y ~@3
>`.pickRestart({
  A: "e5@3 f#5", B: "a4 b4 c#5 d5", C: "c#5", D: "a4 b4 d5 c#5", E: "c#5@13 ~ c#5 d5", F: "e5@7 ~", G: "[a3,c#4]@15 ~",
  H: "[a3,d4]@8 [b3,e4]@7 ~", I: "[f#4,b4]@15 ~", J: "[f#4,a4]@7 ~ [g#4,b4]@8", K: "[c#5,e5]@15 ~",
  L: "[a4,d5,e5] [b4,d5]", M: "[d4,f#4]@7 ~ [e4,g#4]@7 ~", N: "[e4,a4]@15 ~", O: "[d4,e4,a4]@7 ~",
  P: "[c#3,e4,a4]@15 ~", Q: "[b3,d#4]@15 ~", R: "[b3,e4]@8 [c#4,f#4]@7 ~", S: "[g#4,c#5]@15 ~",
  T: "[g#4,b4]@7 ~ [a#4,c#5]@8", U: "[d#5,f#5]@15 ~", V: "[b4,e5,f#5] [c#5,e5]", W: "[e4,g#4]@7 ~ [f#4,a#4]@7 ~",
  X: "b4@7 ~", Y: "[d#3,f#4,b4]@15 ~", Z: "e4@7 ~ [f#4,a#4]@7 ~", AA: "[b4,e5,f#5]@8 [c#5,e5]@7 ~",
  AB: "e4@7 ~ f#4@7 ~, ~@7 a#4@7 ~@2", AC: "f#5@3 g#5", AD: "b4 c#5 d#5 e5", AE: "d#5",
})).s("gm_synth_strings_1").gain(0.39).pan(0.4)

// chords · piano
const piano = note(`<
  ~ A B C D E F G ~ H I J K H I J K H I J K ~@4 A B L D M N ~@2 O P Q D R N ~@2 A S L D E F T ~ U V W X Y V W X Y Z W X
  ~@4 AA AB AC AD AE AF ~@2 AG AH AI AD AJ AK ~@2 AA AL AM AN AJ AF ~@2 AG AO AI AP AJ AF ~@2 AA AL AQ AN AR AF ~@2 AS
  AO AI AD AR AF ~@2 AA AL AQ AN AT AF ~@2 AG AO AI AU@2 ~
>`.pickRestart({
  A: "[a2,b3]@4 ~@6 c#4@2 [c#4,e4]@2 a2 ~, e4 ~, ~@4 [b3,c#4]@4 b3@7 ~, ~@6 a2@7 ~@3", // Asus2 C#m Bsus2
  B: "[a3,d4,e4]@4 [a3,d4,e4]@3 ~ [b3,d4,e4]@4 [b3,d4,e4]@4", // Asus4 E7
  C: "[a3,c#4,e4]@6 ~@2 c#4@2 [c#4,e4] ~ [a3,c#4,e4]@2 a3 ~, ~@6 a3@5 ~@5", // A C#m A
  D: "[a3,d4]@4 ~@2 d4@2 [b3,e4]@3 [b3,e4]@2 ~ [b3,e4]@2, ~ a3 ~@2", // D5 E5
  E: "[a2,b3]@4 b3@2 ~@4 c#4@2 [b3,c#4,e4]@2 a2 ~, e4@6 a2@7 ~@3, ~@2 b3 ~", F: "[d4,e4]@7 ~ [b3,e4]@7 ~, a3@5 ~@11",
  G: "~@8 c#4@2 e4 ~@3 f#2@2, [a3,c#4]@6 a3@5 ~ [a3,c#4,e4]@4, ~@4 f#2@9 ~@3", // A
  H: "a2@2 ~@2 a3 b3 [a3,b3,c#4,e4] a2, [a3,b3,c#4,e4] ~, ~@6 a2@7 ~@3", // A
  I: "[d2,a3,d4]@2 [a3,d4,e4] d2 [e2,b3]@4, e4@3 ~@5 [g#3,d4]@6 ~@2", // D5 Asus4 E5 G#dim
  J: "[a3,b3,c#4,e4]@6 ~@2 a3@2 b3 ~ [a3,b3,c#4,e4]@2 a2@2, a2@5 ~ a2@7 ~@3", // A
  K: "[a3,d4,e4]@3 ~ [a3,d4,e4]@2 d2@2 [g#3,b3,d4]@2 ~@4 e2@2, d2@4 ~@4 e2@5 ~@3, ~@11 [g#3,b3,d4]@5", // Asus4 G#dim
  L: "[a3,c#4,e4]@6 ~@2 c#4@2 [c#4,e4]@2 [a3,c#4,e4]@2 a3 ~, ~@6 a3@5 ~@5", // A C#m A
  M: "~@4 c#4 e4 ~ f#2, [a3,c#4]@3 a3@3 [a3,c#4,e4]@2, ~@4 f#2@9 ~@3", // A
  N: "[d2,d4]@3 [a3,d4,e4]@3 d2@2 [e2,g#3,b3,e4]@3 [g#3,b3,e4]@3 e2@2, [a3,e4] ~@15", // D Asus4 E A5
  O: "[b3,e4]@3 ~@7 b3@2 [b3,c#4,e4]@2 a2@2, a2@6 ~@2 a2@5 ~@3, ~@2 [b3,c#4,e4]@3 ~@3", // E5 C#m7
  P: "[b2,a3,d4,e4]@5 ~ [a3,d4,e4]@4 [a3,d4,e4] ~@3 b2@2, ~@6 b2@7 ~@3", // Bm7 Asus4
  Q: "c#3@5 ~@3 b3@2 e4 ~ [b3,e4,a4]@2 c#3 ~, [b3,e4,a4] ~, ~@3 c#3@3 ~@2", // Esus4
  R: "~@4 c#4 e4 ~ f#2, [a3,c#4]@6 a3@5 ~ [a3,c#4,e4]@4, ~@4 f#2@9 ~@3", S: "[a3,d4,e4]!2 [b3,d4,e4]!2",
  T: "~@8 c#4@2 e4 ~@3 f#2@2, [a3,c#4]@3 a3@3 [a3,c#4,e4]@2, ~@4 f#2@9 ~@3", // A
  U: "b2@4 ~@4 b3@2 c#4 ~ [b3,c#4,d#4,f#4]@2 b2@2, [b3,c#4,d#4,f#4] ~, ~@6 b2@7 ~@3", // B
  V: "[e2,b3]@2 [b3,e4,f#4] e2 [f#2,c#4]@4, [e4,f#4]@3 ~@5 [a#3,e4]@6 ~@2", // E5 Bsus4 F#5 Esus2 A#dim
  W: "[b3,c#4,d#4,f#4]@6 ~@2 b3@2 c#4 ~ [b3,c#4,d#4,f#4]@2 b2@2, b2@5 ~ b2@6 ~@4", // B
  X: "[b3,e4,f#4]@3 ~ [b3,e4,f#4]@2 e2@2 [a#3,c#4,e4]@2 ~@4 f#2@2, e2@4 ~@4 f#2@5 ~@3, ~@11 [a#3,c#4,e4]@5", // Bsus4 A#dim
  Y: "b2@2 ~@2 b3 c#4 [b3,c#4,d#4,f#4] b2, [b3,c#4,d#4,f#4] ~, ~@6 b2@7 ~@3", // B
  Z: "[e2,b3]@2 [b3,e4,f#4] e2 [f#2,c#4,e4]@4, [e4,f#4]@3 ~@5 a#3@6 ~@2", // E5 Bsus4 F#7 Esus2
  AA: "[b2,c#4]@4 ~@6 d#4@2 [d#4,f#4]@2 b2 ~, f#4 ~, ~@4 [c#4,d#4]@4 c#4@7 ~, ~@6 b2@7 ~@3", // Bsus2 D#m C#sus2
  AB: "[b3,e4,f#4]!2 [c#4,e4,f#4]!2", AC: "[b3,d#4,f#4]@6 ~@2 d#4@2 [d#4,f#4]@2 [b3,d#4,f#4]@2 b3 ~, ~@6 b3@5 ~@5",
  AD: "[b3,e4]@4 ~@2 e4@2 [c#4,f#4]@3 [c#4,f#4]@2 ~ [c#4,f#4]@2, ~ b3 ~@2", // E5 F#5
  AE: "~@8 d#4@2 f#4 ~@3 g#2@2, [b3,d#4]@3 b3@3 [b3,d#4,f#4]@2, ~@4 g#2@9 ~@3", // B
  AF: "[e2,e4]@3 [b3,e4,f#4]@3 e2@2 [f#2,c#4]@3 [a#3,c#4,f#4]@3 f#2@2, [b3,f#4] ~@7 [a#3,f#4]@2 ~@6", // E Bsus4 F#5 F# B5 D#m
  AG: "[c#4,f#4]@3 ~ [c#4,d#4,f#4]@4 ~@2 c#4@2 [c#4,d#4,f#4]@2 b2@2, b2@6 ~@2 b2@5 ~@3", // F#5 D#m7
  AH: "[c#3,b3,e4,f#4]@5 ~ [b3,e4,f#4]@5 [b3,e4,f#4]@3 c#3@2, ~@6 c#3@7 ~@3", // C#m7 Bsus4
  AI: "d#3@5 ~@3 c#4@2 f#4 ~ [c#4,f#4,b4]@2 d#3 ~, [c#4,f#4,b4] ~, ~@3 d#3@3 ~@2", // F#sus4
  AJ: "~@8 d#4@2 f#4 ~@3 g#2@2, [b3,d#4]@6 b3@5 ~ [b3,d#4,f#4]@4, ~@4 g#2@9 ~@3", // B
  AK: "[e2,e4]@3 [b3,e4,f#4]@3 e2@2 [f#2,a#3,c#4,f#4]@3 [a#3,c#4,f#4]@3 f#2@2, [b3,f#4] ~@15", // E Bsus4 F# B5
  AL: "[b3,e4,f#4]@4 [b3,e4,f#4]@3 ~ [c#4,e4,f#4]@4 [c#4,e4,f#4]@4", // Bsus4 F#7
  AM: "[b3,d#4,f#4]@6 ~@2 d#4@2 d#4@2 [b3,d#4,f#4]@2 b3 ~, ~@6 b3@4 f#4 ~@5", // B
  AN: "[b3,e4]@4 b3@2 e4@2 [c#4,f#4]@3 [c#4,f#4]@2 ~ [c#4,f#4]@2", // E5 F#5
  AO: "[c#3,b3,e4,f#4]@5 ~ [b3,e4,f#4]@4 ~ [b3,e4,f#4]@3 c#3@2, ~@6 c#3@7 ~@3", // C#m7 Bsus4
  AP: "[b3,e4]@4 ~@2 e4 ~ [c#4,f#4]@3 [c#4,f#4]@2 ~ [c#4,f#4]@2, ~ b3 ~@2", // E5 F#5
  AQ: "[b3,d#4,f#4]@6 ~@2 d#4@2 f#4@2 [b3,d#4,f#4]@2 b3 ~, ~@6 b3@4 d#4 ~@5", // B
  AR: "c#4 ~@7 d#4@2 f#4@2 ~@2 g#2@2, [b3,d#4]@6 b3@5 ~ [b3,d#4,f#4]@4, ~@4 g#2@9 ~@3", // B
  AS: "[c#4,f#4]@3 ~@7 c#4@2 [c#4,d#4,f#4]@2 b2@2, b2@6 ~@2 b2@5 ~@3, ~@2 [c#4,d#4,f#4]@3 ~@3", // F#5 D#m7
  AT: "c#4 ~@7 d#4@2 f#4 ~@3 g#2@2, [b3,d#4]@6 b3@5 ~ [b3,d#4,f#4]@4, ~@4 g#2@9 ~@3", // B
  AU: "[[b3,e4]@4 ~@2 e4@2 [c#4,f#4]@3 [c#4,f#4]@2 ~@2 [c#4,f#4]@2 ~@15, ~ b3 ~@6]/2", // E5 F#5
})).s("gm_piano").gain(0.41)

// other · pad sweep
const pad_sweep = note("<A@4 B@5 ~@118>".pickRestart({
  A: "[~@15 e4@12 f#4@4 a3@4 b3@4 c#4@4 d4@4 c#4@16 ~]/4",
  B: "[~@15 e4@12 f#4@4 a3@4 b3@4 d4@4 c#4@4 c#4@13 ~ c#4 d4 e4@14 ~@3]/5",
})).s("gm_pad_sweep").gain(0.31).pan(0.3)

// other · pad new age
const pad_new_age = note(`<
  ~@23 A B C D ~@2 E F A B ~@4 G@2 A B H I J ~ H K L M ~@14 N O P Q ~@2 R S T O ~@4 U@2 N O P Q ~@2 R S T O V W X ~@3 T
  O Y Z AA ~@3 T O V AB AC@2 ~@2 N O Y Z AA ~@3 T O V AB AC@2 ~@2
>`.pickRestart({
  A: "~@4 e5@3 ~ a5@4 e6@4", B: "d6@4 c#6@4 b5@5 ~@3", C: "~@2 [e5,e6] [f#5,f#6]", D: "[a4,a5]@8 [b4,e5]@7 ~",
  E: "[f#5,a5]@13 ~@3", F: "[e5,f#5,a5]@2 [e5,a5] ~", G: "[~@12 a5 g#5 a5 e6@7 ~@10]/2", H: "e6@3 f#6",
  I: "a5 b5 c#6 d6", J: "c#6", K: "a5 b5 d6 c#6", L: "c#6@13 ~ c#6 d6", M: "e6@7 ~", N: "~ f#5 b5 f#6",
  O: "e6@4 d#6@4 c#6@5 ~@3", P: "~@2 [f#5,f#6] [g#5,g#6]", Q: "[b4,b5]@7 ~ [c#5,f#5]@7 ~", R: "[g#5,b5]@13 ~@3",
  S: "f#5@7 ~ [f#5,b5]@4 ~@4", T: "~@4 f#5@3 ~ b5@4 f#6@4", U: "[~@12 b5 a#5 b5 f#6@7 ~@10]/2", V: "~@8 b5@4 d#5@3 ~",
  W: "e5@2 a#5 g#5", X: "f#5 a#4 b4 f#5", Y: "f#6@3 g#6", Z: "b5 c#6 d#6 e6", AA: "d#6", AB: "e5@7 ~ a#5@3 ~ g#5@4",
  AC: "[f#5@4 a#4@4 b4@4 f#5@9 ~@11]/2",
})).s("gm_pad_new_age").gain(0.26).pan(0.2)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
// … 50 more lines

More by Fiorella Mannoia