Strudelify

Per averti

Celentano

KeyG♯ minorTempo94 bpm
0:00/0:00
// Per averti — Celentano
// 94 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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 · slap bass 2
const bass = note(`<
  A@3 B A C D E A C D E F G H E F G H E I J K L M N O P Q R S A C D E A C D E F G H E F G H E I J K L M N O P Q R S A C
  D E A C D E F G H E F G H E I J K L M N O P Q N K L M N O P Q T@3 K L M N O P Q N K L M N O P Q N U@2 ~
>`.pickRestart({
  A: "g#1 ~ g#1 ~ g#1 ~ f#2 e2", B: "g#1@2 ~@2 g#1@2 ~@2 g#1 ~ g#1@2 f#2@2 e2@2", C: "e1 ~ e1 ~ e1 ~ f#2 e2",
  D: "b1 ~ b1 ~ b1 ~ f#2 e2", E: "a#1@2 ~@2 a#1@2 ~@2 a#1 ~ a#1@2 f#2@2 e2@2", F: "g#1 ~ g#1 ~ f#1 ~ f#1 ~",
  G: "e1 ~ e1 ~ e1 ~ e1 ~", H: "b1 ~ b1 ~ b1 ~ b1 ~", I: "g1 ~ g1 ~ g1 ~ g1 ~", J: "g#1@3 ~ g#1@2 f#1 ~ e1@4 e1@4",
  K: "b1 ~ b1 ~ a#1 ~ a#1 ~", L: "g#1@2 ~@2 g#1@2 f#1@2 e1@3 ~ e1@3 ~", M: "b1@3 ~ b1@2 ~@2 a#1@3 ~ a#1@2 ~@2",
  N: "g#1@3 ~ g#1@2 f#1@2 e1@3 ~ e1@3 ~", O: "b1@3 ~ b1@3 ~ a#1@2 ~@2 a#1@2 ~@2",
  P: "g#1@3 ~ g#1@2 ~@2 e1@2 ~@2 e1@3 ~", Q: "b1@3 ~ b1@3 ~ a#1@3 ~ a#1@3 ~", R: "e1@7 ~ e1@8", S: "e1@3 f#1",
  T: "e1/3", U: "b1/2",
})).s("gm_slap_bass_2").gain(0.64)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@2 B@2 C@2 D E C@2 D F G H I J K L I M N O P Q P R S T U@3 C@2 D E C@2 D E G H I J K L I M N V P Q P R S W X Y@2 Z AA
  AB AC AD AE AF AG G H I J K L I M N O P Q P R P T AH R P Q P R P T AH AI@3 ~ AJ@2 AK ~ AL AM AN AO AP ~ AQ@2 ~ AR AS
  AT@2 ~
>`.pickRestart({
  A: "[~@3 d#4@12 ~ e4@15 ~, b3 ~@3, ~@2 g#3@12 ~ g#3@16 ~]/2",
  B: "[~@3 d#4@12 ~ b3@8 c#4@7 ~, b3@14 ~@2 e4@15 ~, ~@2 g#3@12 ~ g#3@16 ~]/2",
  C: "[~@3 d#4@12 ~ [b3,e4]@15 ~, b3@15 ~@17, ~@2 g#3@12 ~ g#3@15 ~@2]/2", D: "~ f#3@6 ~, b3@15 ~", E: "[a#3,c#4]",
  F: "[f#3,a#3,c#4]", G: "~@6 b3@9 ~, g#3@15 ~, ~ b3@2 ~@5, ~@3 d#4@12 ~",
  H: "~@6 b3@9 ~, g#3@15 ~, ~ b3@2 ~@5, ~@3 e4@12 ~", I: "~@6 b3@9 ~, f#3@15 ~, ~@2 b3@3 ~@11, ~@3 d#4@12 ~",
  J: "~@3 c#4@11 ~@2, f#3@15 ~, ~ a#3@2 ~@5", K: "~@6 b3@9 ~, g#3 ~, ~ b3@2 ~@5, ~@3 d#4@12 ~",
  L: "~@6 b3@9 ~, g#3@15 ~, ~@2 b3@3 ~@11, ~@3 e4@11 ~@2", M: "~@3 f#4@4 ~, f#3@7 ~, ~ a#3@6 ~, ~@3 c#4@11 ~@2",
  N: "~@6 c#4@9 ~, g3@15 ~, ~@2 a#3@13 ~", O: "~@3 d#4 [b3,e4]@4, g#3 ~, ~@3 b3@5 ~@8",
  P: "[f#3,b3,d#4]@7 ~ [f#3,a#3,c#4]@7 ~", Q: "[g#3,b3,d#4]@7 ~ [g#3,b3,e4]@7 ~",
  R: "[g#3,b3,d#4]@7 ~ [g#3,b3,f#4]@7 ~", S: "[b3,d#4]@7 ~ [f#3,a#3,c#4]@7 ~",
  T: "b3@3 ~@10 g#3@3, g#3 ~, d#4@5 ~ d#4@7 ~@3, ~@3 b3@7 ~ b3@5",
  U: "[b3@2 ~ b3@3 ~@2 [a#3,c#4]@7 ~ g#3@9 ~@7 f#4@7 ~@9, d#4@8 ~@8 d#4@13 b3@11 ~@8, ~@6 f#3@19 ~ g#3@13 ~@9]/3", // A#m
  V: "~@3 d#4 [g#3,b3,e4]@4, g#3 ~, ~@3 b3@5 ~@8", W: "b3@3 ~@10 g#3@3, d#4@5 ~ d#4@7 ~@3, ~@3 b3@7 ~ b3@5",
  X: "b3@2 ~ b3@4 ~ [a#3,c#4]@7 ~, d#4 ~", Y: "[g#3@9 ~@7 f#4@7 ~@3 d#4@6, d#4@13 b3@11 ~@8, ~@10 g#3@13 ~@9]/2",
  Z: "d#4 d#4@2 d#4!2 ~ d#4!2 ~ d#4 d#4@2 d#4 c#4 b3 g#3", AA: "b3 c#4 ~ d#4 b3@6 [d#3,g#3]!2 ~ g#3 [c#4,f#4]!2",
  AB: "[c#4,f#4]!4 ~ [c#4,f#4]!7 ~ [c#4,f#4]!3", AC: "[c#4,f#4]@8 ~@2 [g#4,c#5]@4 [g#4,c#5] ~",
  AD: "g#4@5 ~ b3@2 f#4@4 c#4 b3 c#4 g#3", AE: "b3@4 c#4 b3 d#4 c#4 b3@6 ~@2",
  AF: "f#5@3 ~@2 [c#5,f#5]@2 ~@2 d#5 ~ d#5 ~ [g#4,c#5]@2 ~, ~@4 [b4,e5] b4 ~@2", // F#5 C#5 E5
  AG: "[f#4,b4]@5 ~ [c#4,f#4] f#4 [c#4,f#4]@4 [c#4,f#4]@4", AH: "b3@2 ~ b3@3 ~@2 [a#3,c#4]@7 ~, d#4 ~, ~@3 f#3@5",
  AI: "[~@23 d#4, b4@6 d#4@5 ~@3 d#4@5 ~@3 d#4@5 ~@3 d#4@4 ~@4 d#4@5 ~@5, ~@3 e4@7 ~ e4@7 ~ e4@7 ~ e4@7 ~ e4@7 ~ e4@5, ~@8 b4@7 ~ b4@7 ~ b4@7 ~ b4@7 ~ b4@8]/3",
  AJ: "[~@5 f#4 ~ f#4@3 e4 ~ e4@2 d#4@7 ~@11]/2", AK: "~@4 d#4 g#4 ~ f#4@3 d#4 [b3,c#4] c#4 g#3 b3@2",
  AL: "~@4 d#4 f#4 g#4 [f#4,b4] ~ e4 ~ e4@3 d#4@2", AM: "b3@4 ~@10 g#4 b4",
  AN: "~@2 g#4 b4 ~ f#4 ~ b4 ~@2 c#5@3 b4 g#4 f#4", AO: "b4@3 c#5@3 ~@10",
  AP: "~ f#4 ~ f#4 ~ f#4 g#4 b4 ~ b4 ~@2 g#4@2 f#4@2",
  AQ: "[~ [d#4,g#4]@2 [d#4,g#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [d#4,g#4]@2 [d#4,g#4] ~ [c#4,f#4] ~ [c#4,f#4]@2 ~@15]/2", // G#5 F#5 G#5 F#5
  AR: "~@13 d#5 [d#5,g#5]!2", // G#5
  AS: "[d#5,g#5]@2 [c#5,f#5]!2 ~ f5 [b4,d#5]!2 ~ a#4 [g#4,c#5]!2 [g#4,c#5]@2 b4 [f#4,b4], ~@2 [c#5,f#5] ~ [b4,d#5] ~@3", // G#5 F#5 B C#5 B5 F#5 B
  AT: "[d#4,f#4,b4]/2", // B
})).s("gm_electric_guitar_clean").gain(0.47)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  A B ~@4 C D ~@2 C ~@4 E F ~@4 G ~@4 H I J K ~@3 C D ~@2 C D ~@3 E F ~@9 H L M@2 ~@8 N ~@3 E F ~@4 G ~@5 I J ~@6 I J
  ~@9 O P ~ Q ~@4 R S ~@3
>`.pickRestart({
  A: "~@4 b3@3 ~", B: "b3@15 ~", C: "~@3 d#4@12 ~", D: "f#3", E: "~@3 a#3@4 ~", F: "~@8 f#3@7 ~", G: "~ g#3",
  H: "f#3@7 ~@9", I: "~@4 g#3@2 ~ d#4", J: "f#3@5 ~@11", K: "~@3 b3@3 ~@2", L: "g#3@4 g#3@2 ~ d#4",
  M: "[f#3@5 ~@17 b3@6 ~@4, ~@6 f#3@19 ~@7]/2", N: "~@7 c#4 ~@8", O: "~@13 f#4 ~@2", P: "~ f#4 ~@4 g#4 ~ f#4 ~@7",
  Q: "~@10 g#4 f#4 ~@4", R: "~@13 g#5 ~@2", S: "~@14 f#4 ~",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@3 B C ~@7 D@4 E@3 F@2 G H I@2 J@2 K H L@2 M ~@7 N O P@2 N O Q@3 R H I@2 J@2 K H L@2 M ~@7 N O P@2 N O Q@3 R H I@2
  J@2 K H S H I@2 J@2 K H T@3 H I@2 J@2 K H S H I@2 J@2 K H S U@2 ~
>`.pickRestart({
  A: "[d#4 e4 d#4, [g#4,b4]@47 ~]/3", B: "b4 c#5, [e4,g#4]", C: "[g#3,d#4,g#4]",
  D: "[g#3@7 ~ f#3@7 ~ [g#3,e4]@16 d#4@16 [a#3,c#4]@16, b3@3 ~, d#4@16 ~@16 f#3@31 ~]/4", // C#m A#m
  E: "[g#3@8 f#3@7 ~ [g#3,e4]@16 [f#3,d#4]@16, b3, d#4 ~@2]/3", F: "[f#3@16 g3@15 ~, [a#3,c#4]@31 ~]/2",
  G: "d#4 e4, [g#3,b3]", H: "[b3,d#4] [a#3,c#4], f#4",
  I: "[d#4@7 ~@3 f#4@2 g#4@2 a#4@2 d#4@8 [a#3,c#4]@8, b3@3 ~, g#4@5 ~@3 f#4@8, ~ e4 ~@2]/2", // A#m
  J: "[~ f#4 e4@2 d#4@2 [a#3,c#4]@2, b3@3 ~, g#4 f#4, d#4 ~@3]/2", K: "d#4 e4, [b3,g#4]",
  L: "[[f#3,g#3,b3,d#4]@24 ~ [f#3,c#4]@7]/2", M: "[g#3,d#4]@15 ~", N: "g#3 f#3, d#4", O: "[g#3,e4]",
  P: "[d#4 c#4, f#3]/2", Q: "[d#4 ~ g3, f#3@31 ~@17, ~ c#4@2]/3", R: "d#4 e4, g#3", S: "~ f#4 e4@2, [b3,g#4], d#4 ~",
  T: "[d#4,e4,b4]/3", U: "[f#3,d#4]/2",
})).s("gm_string_ensemble_2").gain(0.44).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B C@3 ~@16 D E F G@2 H@2 I@3 J ~@11 K L M N O P E F G@2 H@2 I@3 J ~@11 K L M N O P E F G@2 H@2 Q@2 R@4 S@2 T@2 U V
  W@4 S@2 T@2 X@4 S@2 Y@4 ~
>`.pickRestart({
  A: "g#4@3 a#4 b4@2 d#5@2", B: "g#4 a#4",
  C: "[b4@6 [c#4,c#5]@2 [d#4,d#5]@3 [a#4,a#5]@3 [b4,b5]@4 [a#4,a#5]@4 [g#4,g#5]@4 [e4,e5]@4 [g#3,g#4]@14 ~@4]/3", // C# D# A# B A# G# E G#
  D: "~@5 [f#4,f#5] [g#4,g#5] [a#4,a#5]", E: "[b4,b5]@6 [a#4,a#5] [g#4,g#5] [f#4,f#5]@4 [e4,e5]@4",
  F: "[d#4,d#5]@4 [e4,e5] [f#4,f#5] [g#4,g#5] [a#4,a#5]", // D# E F# G# A#
  G: "[[b4,b5]@6 [a#4,a#5] [g#4,g#5] [f#4,f#5]@4 [c#5,c#6]@2 [b4,b5]@8 [a#4,a#5]@2 [b4,b5]@2 [c#5,c#6]@2 [d#5,d#6]@2 [e5,e6]@2]/2", // B A# G# F# C# B A# B …
  H: "[[f#5,f#6]@6 [e5,e6] [d#5,d#6] [c#5,c#6]@4 [e5,e6]@2 [d#5,d#6]@8 [c#5,c#6] [b4,b5] [g#4,g#5]@2 [f#4,f#5]@2 [g#4,g#5]@2 [a#4,a#5]@2]/2", // F# E D# C# E D# C# B …
  I: "[[b4,b5]@6 [a#4,a#5] [g#4,g#5] [f#4,f#5]@4 [e4,e5]@2 [d#4,d#5]@27 ~ [e2,f#2,b2,c#3,e3,f#3,b3] [g#2,d#3,g#3,c#4,d#4] [f#2,c#3,f#3,c#4]@4]/3", // B A# G# F# E D# Esus2 G#sus4 …
  J: "[d#3,b3]", K: "[b3,b4]@3 [c#4,c#5] [d#4,d#5]@2 [e4,e5] [f#4,f#5]", L: "[g#4,g#5] [a#4,a#5] [b4,b5] [c#5,c#6]",
  M: "[d#5,d#6]@3 [e5,e6] [f#5,f#6]@2 [f#4,f#5]@2", N: "[c#5,c#6]@2 [c#5,c#6] [f#4,f#5]", O: "[c#5,c#6]",
  P: "[d#5,d#6]@9 ~ f#4@2 [g#4,g#5]@2 [a#4,a#5]@2, ~@9 f#5@2 ~@5", // D# G# A#
  Q: "[[b4,b5]@6 [a#4,a#5] [g#4,g#5] [f#4,f#5]@4 [c#5,c#6]@2 [b4,b5]@18]/2", // B A# G# F# C# B
  R: "[[b4,b5]@4 [a#4,a#5] [b4,b5] [c#5,c#6] [b4,b5]@13 [c#5,c#6] [a#4,a#5] [f#4,f#5] [d#4,d#5]@2 [f#4,f#5]@2 [g#4,g#5]@2 [b4,b5] [c#5,c#6]@2]/4", // B A# B C# B C# A# F# …
  S: "[[b4,b5]@4 [a#4,a#5] [b4,b5] [c#5,c#6] b5@4 f#6@5, ~@7 b4@9]/2", // B A# B C#
  T: "[[b4,b5]@4 [a#4,a#5] [b4,b5] [c#5,c#6] [b4,b5]@9]/2", U: "~@8 e3 f#3 g#3 a#3 g#3 a#3 b3 c#4",
  V: "[d#4,c#5,e5] [c#4,d#5,f#5] [b3,e5,g#5] [a#3,d#5,f#5] [c#4,e5,g#5] [b3,f#5,a#5] [a#3,e5,g#5] [c#4,f#5,a#5] [g#5,b5] [f#5,a#5] [g#5,b5] [a#5,c#6] [g#5,b5] [a#5,c#6] [b5,d#6] [c#6,e6], ~ b3", // C#m D#m7 E D#m C#m Bmaj7 A#m7b5 F# …
  W: "[[b4,b5]@4 [a#4,a#5] [b4,b5] [c#5,c#6] ~@7 e6@2 d#6@4 [c#5,c#6] [a#4,a#5] [f#4,f#5] [d#4,d#5]@2 [f#4,f#5]@2 [g#4,g#5]@2 [b4,b5] [c#5,c#6]@2, f#6@7 ~@9, ~@7 [b4,b5]@13 ~@12]/4", // B A# B C# A# F# D# F# …
  X: "[[b4,b5]@4 [a#4,a#5] [b4,b5] [c#5,c#6] ~@7 e6@2 d#6@4 [c#5,c#6] [a#4,a#5] [f#4,f#5] [d#4,d#5]@2 [f#4,f#5]@2 [g#4,g#5]@2 [b4,b5] [c#5,c#6]@2, ~@7 [b4,b5]@13 ~@12]/4", // B A# B C# A# F# D# F# …
  Y: "[[b4,b5]@4 [a#4,a#5] [b4,b5] [c#5,c#6] [b4,b5]@25]/4", // B A# B C# B
})).s("gm_string_ensemble_1").gain(0.39).pan(0.6)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  A B C D E F G H E I G H J K L M N O P Q R S T S U V W X Y Z AA AB F G H E AC G H J K AD M N O P AE R S AF AG AF AH AI
  AG AJ@2 ~ AB I G H E AC G H J K L AK N O P AE R S AF AG AF AH AI AG AL@2 AF AG AF AH AI AG AF AM AN AO AF AG AF AH AI
  AG AL@2 AF AG AF AH AI AG AL@2 ~@3
>`.pickRestart({
  A: "g#3!2 ~ d#4 ~ g#3 f#3 ~ g#3 ~ g#3!2 ~@4", B: "g#3 ~ g#3 b3 ~@2 f#3 ~ g#3!4 ~@4",
  C: "g#3!3 d#4 ~ g#3 f#3 ~ g#3 ~@2 g#3 ~@2 g#3!2", D: "g#3!2 ~ b3 ~ g#3 f#3 ~ g#3 ~ g#3!2 ~@2 g#3 ~",
  E: "g#3!3 d#4 g#3 ~ f#3 ~ g#3!2 ~ g#3!3 ~ g#3", F: "g#3!3 b3 ~ g#3 f#3 g#3!2 ~@2 g#3!4 ~",
  G: "f#3!3 b3 ~ f#3!4 ~ f#3!4 ~ f#3", H: "f#3!3 c#4 f#3 ~ f#3 ~ f#3 ~@2 f#3!5",
  I: "g#3!3 b3 ~@2 f#3 g#3!2 ~@2 g#3!4 ~", J: "g#3 ~@2 g#3 ~ g#3!3 f#3!6 ~ f#3", K: "e3!2 ~ e3!7 ~ e3 [e3,b3] e3 ~ e3",
  L: "[f#3,b3] f#3 ~ f#3 ~ f#3 [f#3,b3] f#3 [f#3,b3] f#3 ~ f#3 [f#3,b3] f#3 b3 f#3", // B5
  M: "[f#3,c#4] f#3 ~ f#3!2 ~ [f#3,c#4] f#3 [f#3,c#4] f#3 ~ f#3 [f#3,c#4] f#3 c#4 f#3", N: "g#3 ~ g#3!6 f#3!6 ~ f#3",
  O: "e3!10 ~ e3!5", P: "[f#3,b3] f#3 [f#3,b3] f#3 ~ f#3 [f#3,b3] f#3 [f#3,b3] f#3 ~ f#3 [f#3,b3] f#3!3",
  Q: "[f#3,c#4] f#3 ~ f#3 ~ f#3 [f#3,c#4] f#3 [f#3,c#4] f#3 ~ f#3 [f#3,c#4] f#3 [f#3,c#4] f#3", R: "g3 ~@2 g3 ~ g3!11",
  S: "g#3!6 f#3!2 e3!8", T: "b3 ~@2 b3!5 ~@2 f#3!6", U: "~ b3!7 ~ f#3!3 ~ f#3!3", V: "~ g#3!5 f#3 ~ e3!5 ~ e3!2",
  W: "b3!2 ~ b3 ~ b3!3 ~ f#3!3 ~ f#3!3", X: "g#3 ~ g#3!4 f#3!2 e3!8", Y: "b3!4 ~ b3!3 ~@2 f#3!6",
  Z: "~ e3!3 ~ e3!7 ~ e3!3", AA: "e3!2 ~ e3 ~ e3!4 ~@7", AB: "g#3!3 d#4 g#3 ~ f#3 ~ g#3!6 ~ g#3",
  AC: "g#3!3 b3 ~ g#3 f#3 g#3!3 ~ g#3!4 ~",
  AD: "[f#3,b3] f#3 ~ f#3 ~ f#3 [f#3,b3] f#3 [f#3,b3] ~@2 f#3 [f#3,b3] f#3 b3 f#3", // B5
  AE: "[f#3,c#4] f#3 ~ f#3 ~@2 [f#3,c#4] f#3 [f#3,c#4] f#3 ~ f#3 [f#3,c#4] f#3 [f#3,c#4] f#3", // F#5
  AF: "b2 ~ c#3@2 f#3 ~ g#3 f#3@3 ~ f#3 ~ f#3 g#3 b3", AG: "~@2 b3!2 ~@2 b3!2 ~@2 b3 ~ b3@2 g#3 f#3",
  AH: "~@2 b3!2 ~@2 b3!2 ~@2 b3!2 ~ b3 ~ b3", AI: "b2 ~ c#3@2 f#3 ~ g#3 f#3@4 f#3 ~ f#3 g#3 b3",
  AJ: "[b2 ~ c#3@2 f#3 ~ g#3 f#3@3 ~ f#3 ~ f#3 g#3 b3@3 ~@14]/2",
  AK: "[f#3,c#4] f#3 ~ f#3!2 ~ [f#3,c#4] f#3 [f#3,c#4] f#3 ~ f#3 [f#3,c#4] f#3 [f#3,c#4] f#3", // F#5
  AL: "[b2 ~ c#3@2 f#3 ~ g#3 f#3@3 ~ f#3 ~ f#3 g#3 b3@2 b4 g#4 b4 ~ b4 ~ b4 ~ b4 g#4 b4 ~ b4 g#4 f#4]/2",
  AM: "~@3 b3 ~@3 b3 ~@2 b3!2 ~@2 b3!2", AN: "~@2 b3!2 ~@3 b3 ~@2 b3!2 ~@3 b3", AO: "~@3 b3 ~@12",
})).s("gm_electric_guitar_muted").gain(0.43).pan(0.7)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  A B C D E F G H E I G H J K L M N O P Q R ~ S ~ T U V W X ~ Y Z F G H E AA G H J K AB M N O P AC R ~@4 AD ~ X ~@3 Z I
  G H E AA G H J K L AE N O P AC R ~@4 AD ~ X ~ AF ~@3 AD ~ X ~ AG AH AI ~@3 AD ~ X ~ AF ~@3 AD ~ X ~ AF ~@3
>`.pickRestart({
  A: "~@9 g#3 ~@4 g#3!2", B: "~ g#3 ~@3 g#3 ~@8 g#3!2", C: "~@9 g#3!2 ~@5", D: "~@2 g#3 ~@6 g#3 ~@5 g#3",
  E: "~@7 g#3 ~@2 g#3 ~@3 g#3 ~", F: "~@9 g#3!2 ~@4 g#3", G: "~@9 f#3 ~@4 f#3 ~", H: "~@9 f#3!2 ~@5",
  I: "~@5 g#3 ~@3 g#3!2 ~@4 g#3", J: "~ g#3!2 ~ g#3 ~@9 f#3 ~", K: "~@2 e3 ~@11 [e3,b3] ~",
  L: "~@2 [f#3,b3] ~ [f#3,b3] ~@5 [f#3,b3] ~@3 f#3 ~", M: "~@2 [f#3,c#4] ~@2 f#3 ~@4 [f#3,c#4] ~@3 f#3 ~",
  N: "~@14 f#3 ~", O: "~@10 e3 ~@5", P: "~@10 [f#3,b3] ~@3 b3 ~", Q: "~@2 [f#3,c#4] ~ [f#3,c#4] ~@5 [f#3,c#4] ~@5",
  R: "~ g3!2 ~ g3 ~@11", S: "~ b3!2 ~@13", T: "b3 ~@7 f#3 ~@3 f#3 ~@3", U: "g#3 ~@12 e3 ~@2",
  V: "~@2 b3 ~ b3 ~@3 f#3 ~@3 f#3 ~@3", W: "~ g#3 ~@14", X: "~@4 b3 ~@11", Y: "~@2 e3 ~ e3 ~@11",
  Z: "~@7 g#3 ~@6 g#3 ~", AA: "~@10 g#3 ~@4 g#3", AB: "~@2 [f#3,b3] ~ [f#3,b3] ~@4 f#3 [f#3,b3] ~@3 f#3 ~",
  AC: "~@2 [f#3,c#4] ~ [f#3,c#4] f#3 ~@4 [f#3,c#4] ~@5", AD: "~@12 b3 ~@3",
  AE: "~@2 [f#3,c#4] ~@2 f#3 ~@4 [f#3,c#4] ~@5", AF: "~@6 g#4 ~@9", AG: "~@2 b3 ~@3 b3 ~@9", AH: "~@6 b3 ~@7 b3 ~",
  AI: "~@2 b3 ~@3 b3!2 ~@2 b3!2 ~@2 b3!2",
})).s("gm_electric_guitar_muted").gain(0.18).pan(0.7)

// chords · epiano2
const epiano2 = note(`<
  A B A C A D E F A D E F A G H I J K L M N O P Q R S T U V W@2 A D E F A D E F A G H I J K L M N O P Q R S T U V W@2 A
  D E F A D E F A G H I J K L M N O P Q R S T U V X Y Q R S T U V Z@3 P Q R S T U V X Y Q R S T U V X AA@2 ~
>`.pickRestart({
  A: "[g#3,b3,d#4]@15 ~", B: "[g#3,b3,e4]", C: "b3@7 ~ c#4@8, [g#3,e4]", D: "[e3,g#3,b3]@15 ~", E: "[d#3,f#3,b3]@15 ~",
  F: "[f#3,a#3,c#4]", G: "[g#3,b3]@15 ~", H: "[f#3,b3,d#4]", I: "a#3", J: "g#3 f#3, [b3,d#4]", K: "[g#3,b3,e4]@15 ~",
  L: "b3@15 ~", M: "[f#3,a#3,c#4]@15 ~", N: "[c#4,e4]@15 ~", O: "d#4 e4, [g#3,b3]", P: "[f#3,b3,d#4]@8 [a#3,c#4]@7 ~",
  Q: "[g#3,b3,d#4] [b3,e4,g#4]", R: "[f#3,b3,d#4]@7 ~ [f#3,a#3,c#4]@8", S: "[g#3,b3,d#4]@7 ~ [g#3,b3,e4]@7 ~",
  T: "[f#3,b3,d#4] [f#3,a#3,c#4]", U: "[g#3,b3,d#4]@8 [g#3,b3,e4]@7 ~", V: "[f#3,b3,d#4]@8 [f#3,a#3,c#4]@7 ~",
  W: "[d#4@14 ~@5 [b4,f#5]@5 ~@8, [e3,g#3]@19 ~@13, b3@2 g#4 ~, ~@7 f#4@5 ~@4]/2", X: "[g#3,b3,d#4] [g#3,b3,e4]",
  Y: "[f#3,d#4]@8 [a#3,c#4]@7 ~, b3 ~@15", Z: "[g#3,b3,d#4]/3", AA: "[[d#3,f#3], b3 ~@31]/2",
})).s("gm_epiano2").gain(0.51)

// chords · epiano2 · soft notes
const epiano2_soft = note(`<
  ~@13 A ~ B ~@2 C ~ D ~ E ~@17 A ~ B ~@2 C ~ D ~ E ~@17 A ~ B ~@2 C ~ D ~ E ~@7 E ~@9 E ~@7 E ~@10
>`.pickRestart({
  A: "e4@15 ~", B: "[f#3,c#4]@15 ~", C: "[f#3,d#4]@15 ~", D: "g3@15 ~", E: "~@8 f#3@7 ~",
})).s("gm_epiano2").gain(0.29)

// chords · pad warm
const pad_warm = note(`<
  ~@31 A B C@2 D B E F G H A I G J G K@2 L ~@9 A B C@2 D B E F G H A I G J G K@2 L ~@37
>`.pickRestart({
  A: "[b3,d#4]@15 ~", B: "[g#3,b3,e4]", C: "[[b3,d#4] [a#3,c#4], f#3]/2", D: "[g#3,b3,d#4]@15 ~", E: "[f#3,b3,d#4]",
  F: "[f#3,a#3,c#4]@15 ~", G: "[b3,d#4]", H: "[b3,e4]@15 ~", I: "[a#3,c#4]", J: "[b3,e4]", K: "[a#3 e4, c#4]/2",
  L: "d#4@8 e4@7 ~, b3@15 ~",
})).s("gm_pad_warm").gain(0.27)

// other · rock organ · Bm E Dmaj7 C#m7 B
const rock_organ = note(`<
  ~@61
  [~@10 f#6@5 [b5,c#6,d6], ~@5 d#6@2 ~, ~@10 d6 ~@5]
  [g#5@4 b5@4 [e5,f#5,g#5] d#5 ~@6]
  ~@6
  [~@6 [c#5,d5] d#5@8 [e4,g#4,a#4,b4,c#5], ~@3 f#5@4 ~]
  [[b3,c#4,d#4] ~@15]
  ~@42
>`).s("gm_rock_organ").gain(0.48)

// … 134 more lines

More by Celentano