Strudelify
Il cielo in una stanza cover art

Gino Paoli - I Miti

Il cielo in una stanza

Paoli

KeyE♭ majorTempo96 bpm
0:00/0:00
// Il cielo in una stanza — Paoli
// 96 bpm, 2/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/2)

// 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 · acoustic bass
const bass = note(`<
  ~@8 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K L M@2 I@2 N@2 O@4 P Q R S T U V W X Y Z AA AB AC V W P Q R S T U V W X Y
  Z AA AB AC V W AD AE AF AG AH AI D@2 P Q R S T U V W X Y Z AA AB AC V W P Q R S T AJ V W X Y Z AA AB AC V W AD AE AF
  AG AH AI D@2 ~@8 AK@5
>`.pickRestart({
  A: "eb2/2", B: "[c2@27 ~ c2@4]/2", C: "f1/2", D: "bb1/2", E: "[eb2@23 ~ eb2@8]/2", F: "[c2@11 ~ c2@4]/2",
  G: "[f2@31 ~]/2", H: "[bb1@23 ~ bb1@7 ~]/2", I: "[eb2@13 ~ eb2@2]/2", J: "[c2@23 ~ c2@8]/2", K: "f1@15 ~", L: "f2",
  M: "[bb1@11 ~ bb1@4]/2", N: "[c2@22 ~@2 c2@7 ~]/2", O: "[f2@32 bb1@19 ~ bb1@6 ~@2 bb1@4]/4", P: "eb2@5 ~ g2@2",
  Q: "bb2@7 ~ eb3@7 ~", R: "c2@3 eb2", S: "g2 c2", T: "f2@11 ~ f2@2 ~@2", U: "f2@7 ~ c2@8", V: "bb1@9 ~@3 bb1@4",
  W: "d2 f2", X: "eb2@3 g2", Y: "bb2@8 eb3@5 ~@3", Z: "c2@11 ~ g2 ~@3", AA: "g2@7 ~ c2@8", AB: "f2@11 ~ ab1@4",
  AC: "c2 f2", AD: "eb2@2 ~@2 eb2@5 ~@3 eb2@2 ~@2", AE: "eb2@11 ~@5", AF: "c2@2 ~@2 c2@5 ~@3 c2@2 ~@2", AG: "c2@9 ~@7",
  AH: "f2 ~ f2@3 ~ f2 ~", AI: "f2@5 ~@3", AJ: "f2 c2", AK: "[~ eb2@64 ~@15]/5",
})).s("gm_acoustic_bass").gain(0.32)

// chords · harpsichord
const harpsichord = note(`<
  ~@24 A@2 B C D E F G H@3 C D G D I J@2 K L M N O P Q R S T U V W X@3 K L M Y O P Q R S T U V W Z ~@8 J@2 K L M N O P Q
  R S T U V W X@3 K L M N O P Q R S AA U V W Z ~@8 A@2 AB AC AD@2 F AE@3 ~@3
>`.pickRestart({
  A: "[~@24 eb4@7 ~, [f4,g4,bb4]@16 [f4,g4,bb4]@15 ~, ~ eb4@2 ~]/2", B: "[f4,g4,bb4]",
  C: "~@8 eb4@7 ~, [f4,g4,bb4]@15 ~", D: "~ f4, [g4,ab4,c5]", E: "[ab4,c5]@15 ~", F: "[g4,ab4,c5]@15 ~",
  G: "~@8 f4@7 ~, [g4,ab4,c5]@15 ~", H: "[f4,g4,bb4]@15 ~", I: "g4@4 g4@2 f4 ~, [ab4,c5]@7 ~",
  J: "[[eb4,g4,bb4]@4 [eb4,g4]@4 [eb4,g4]@4 [eb4,g4]@4 g4@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 ~, ~@3 bb4@2 ~@3]/2", // Eb
  K: "[eb4,g4,c5] ~ g4 [eb4,g4,c5]", L: "[eb4,g4,c5] [eb4,g4] [eb4,g4,c5]!2", M: "ab4 [f4,ab4,c5]!3",
  N: "ab4 [f4,ab4,c5] c5 f4, ~ ab4", O: "[f4,bb4]!3 [d4,f4,bb4]",
  P: "[f4,bb4]@4 [f4,bb4]@4 [d4,f4,bb4]@4 [d4,f4,bb4]@3 ~", // Bb5 Bb
  Q: "[eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 ~ [eb4,g4,bb4]@4", // Eb
  R: "[eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 ~", // Eb
  S: "[eb4,g4,c5]@4 eb4@4 [g4,c5]@3 ~ [eb4,g4,c5]@4", T: "[eb4,g4]@4 [eb4,g4]@4 [eb4,g4,c5]@4 [eb4,g4,c5]@3 ~",
  U: "[f4,ab4] ab4 [f4,ab4,c5]!2", V: "[ab4,c5]!2 ab4 [f4,c5]", W: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4]!2",
  X: "[[f4,bb4]@4 [f4,bb4]@4 [f4,bb4]@4 bb4@4 [eb4,g4,bb4]@4 [eb4,g4]@4 [eb4,g4]@4 [eb4,g4]@4 g4@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 ~, ~@3 f4@8 ~, ~@7 bb4@2 ~@3]/3", // Bb5 Eb
  Y: "ab4@4 [f4,ab4,c5]@4 c5@4 f4@3 ~, ~@8 ab4@7 ~", Z: "[f4,bb4]@4 [f4,bb4]@4 [f4,bb4]@4 [f4,bb4] ~@3",
  AA: "[eb4,g4]!2 [eb4,g4,c5]!2", AB: "~@8 f4@7 ~, [g4,ab4,c5]@7 ~", AC: "~@4 f4@3 ~, [g4,ab4,c5]@15 ~",
  AD: "~@4 eb4@3 ~, [f4,g4,bb4]@7 ~", // Gm7
  AE: "[~@9 f4@5 ~@5 eb5@29, [g4,ab4,c5]@7 eb3@17, ~ [bb3,eb4]@2, ~@17 g4@31, ~@18 bb4@29 ~]/3", // Abmaj7 Eb5
})).s("gm_harpsichord").gain(0.15).pan(0.4)

// chords · harpsichord · soft notes
const harpsichord_soft = note(`<
  ~@26 A ~@2 B C ~ D@3 ~@5 E F G H I J K L ~@2 M N O P Q R@3 G H I S K L ~@2 M N O P Q T ~@8 E F G H I J K L ~@2 M N O P
  Q R@3 G H I J K L ~@2 M N O P Q T ~@14 U ~@6
>`.pickRestart({
  A: "~ eb4", B: "~@8 f4@7 ~, g4@15 ~", C: "~@8 f4@7 ~", D: "~@8 eb4@7 ~", E: "~ bb4!2 ~", F: "eb4 ~@3",
  G: "~ [eb4,g4,c5] [eb4,c5] ~", H: "~ c5 ~@2", I: "[f4,c5] ~@3", J: "[f4,c5] ~ f4 c5", K: "d4!3 ~", L: "d4!2 ~@2",
  M: "~@4 [g4,c5]@4 eb4@3 ~@5", N: "c5!2 ~@2", O: "c5 [f4,c5] ~@2", P: "f4!2 [f4,c5] ab4", Q: "~ d4 ~@2",
  R: "[d4!3 ~@2 bb4!2 ~ eb4 ~@3, ~@3 d4@8 ~]/3", S: "[f4,c5]@4 ~@4 f4@4 c5@3 ~", T: "d4@4 d4@4 d4@4 d4 ~@3",
  U: "~@4 f4@3 ~",
})).s("gm_harpsichord").gain(0.12).pan(0.4)

// chords · orchestral harp
const orchestral_harp = note("<~@78 A@2 B ~@37 C@2 ~@13>".pickRestart({
  A: "[~@20 ab4@3 ~ c5 ~@3 f5@2 ~@2, ~@4 eb3@19 ~@9, ~@8 ab3@15 ~@9, ~@12 c4@11 ~@9, ~@16 f4@7 ~@9]/2", B: "eb5 ~@7",
  C: "[~@3 c5, ~@4 eb3@16 ab4@7 ~@5, ~@8 ab3@19 ~@5, ~@12 c4@15 ~@5, ~@16 f4@11 ~@5]/2",
})).s("gm_orchestral_harp").gain(0.21).pan(0.4)

// other · accordion
const accordion = note("<~@72 A B C D E F G H I@2 ~@30 A B C J E F G H ~@13>".pickRestart({
  A: "~ eb5", B: "d5 c5", C: "d5 eb5", D: "c5@15 ~", E: "ab4@7 ~ c5@8", F: "eb5 f5", G: "g5", H: "f5", I: "eb5/2",
  J: "c5@7 ~",
})).s("gm_accordion").gain(0.47).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@40 A B C D@3 E@2 F G@6 H I@8 J@8 ~@8 K@2 L@2 M N@7 O@3 P I@8 J@8 ~@16 Q@4 ~
>`.pickRestart({
  A: "eb3@3 g3", B: "bb3@7 eb4@9", C: "g4", D: "[f4@8 eb4@37 ~ eb4@2, ~@45 f4@2 ~]/3", E: "[d4@3 ~]/2", F: "bb3",
  G: "[eb4@8 g4@7 c5@16 bb4@8 ab4@40 bb4@13 ~@4]/6",
  H: "~ c4 d4 ~@3 g4 ~@3 c5@2 d5 eb5 f5 ~, bb3@2 ~@2 eb4@2 ~@3 bb4@2 ~@5, ~@5 f4@2 ~ ab4@2 ~@6",
  I: "[[bb4,bb5]@23 [c5,c6]@4 [d5,d6]@4 ~ eb6@7 [d5,d6]@8 [c5,c6]@8 [bb4,bb5]@8 [ab4,ab5]@24 [g5,g6]@8 [f5,f6]@29 ~@4, ~@31 eb5@8 ~@89]/8", // Bb C D C Bb Ab G F
  J: "[[eb5,eb6]@24 [f5,f6]@3 ~ eb6@3 [g5,g6]@8 [f5,f6]@8 [eb5,eb6]@8 [d5,d6]@8 [c5,c6]@32 [bb4,bb5]@25 ~@8, ~@27 eb5@4 ~@97]/8", // Eb F G F Eb D C Bb
  K: "[[eb4,eb5]@20 ~ d5@5 ~ c4@5, ~@10 d4@3 c5@3]/2", L: "[[d4,d5]@3 [eb4,eb5]@3 [c4,c5]@10]/2",
  M: "~@2 [ab3,ab4]@3 [c4,c5]@3", // Ab C
  N: "[[eb4,eb5]@7 ~ f5@7 [g4,g5]@8 ~ ab5@7 ~ g4@7 ~ f5@7 [eb4,eb5]@21 [d4,d5]@6 [c4,c5]@5 [d4,d5]@7 [eb4,eb5]@6 [c4,c5]@19 ~, ~@7 f4@8 ~@8 ab4@8 g5@8 f4@8 ~@65]/7", // Eb G Eb D C D Eb C
  O: "[~@4 [ab3,ab4]@6 [c4,c5]@5 [eb4,eb5]@8 [f4,f5]@8 [g4,g5]@8 [ab4,ab5]@9]/3", // Ab C Eb F G Ab
  P: "~ c4 d4 eb4 f4 ~@2 ab4 bb4 ~ d5 eb5@2 f5@3, g5@8 ~ c5@3 ~@4, g4@5 g4@6 ~@5, bb3@2 ~@5 [f4,f5]@4 ~@5", // F
  Q: "[~ eb2@62 ~]/4",
})).s("gm_string_ensemble_1").gain(0.29).pan(0.4)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@24 A@8 B@2 C@6 ~@80 D@8 E@4 ~>".pickRestart({
  A: "[~@9 bb3@119, ~@3 eb4@61]/8", B: "[g4@31 ~]/2", C: "[~@32 ab4@31 [bb3,d4]@31 ~@2, c4@2 ~, ~@31 f4@63 ~@2]/6",
  D: "[g4@31 ab4@32 ~]/4", E: "[~ [eb3,g3,eb4]@55 ~@8]/4",
})).s("gm_string_ensemble_1").gain(0.07).pan(0.4)

// chords · flute
const flute = note(`<
  A B@2 C D@4 A B@2 A E D@2 F A B@2 A E D@2 F A B@2 A E D@2 F A B@2 A E D@2 F ~@80 C@2 G@2 C@2 H@2 I@4 ~
>`.pickRestart({
  A: "[f5,g5]@9 ~@7", B: "[f5,g5]@4 eb5 ~@3", C: "[f5,g5]@8 eb5@3 ~@5", D: "[g5,ab5]@4 f5 ~@3", E: "[g5,ab5] ~",
  F: "[g5,ab5]@8 f5@3 ~@5", G: "[[g5,ab5]@8 f5@2 ~@5 [g5,ab5]@9 ~@8]/2",
  H: "[[g5,ab5]@7 f5@3 ~@6 ab5@8 f5@3 ~@5, ~@15 g5@9 ~@8]/2", I: "[~ eb5@55 ~@8]/4",
})).s("gm_flute").gain(0.15).pan(0.3)

// chords · flute · soft notes
const flute_soft = note("<A ~@7 A ~@2 B C ~@3 A ~@2 B C ~@3 A ~@2 B C ~@3 A ~@2 B C ~@86 D ~@9>".pickRestart({
  A: "~@4 eb5 ~@3", B: "~@8 eb5@3 ~@5", C: "~@4 f5 ~@3", D: "~@8 f5@3 ~@5",
})).s("gm_flute").gain(0.1).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@40 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C B C B C B@2 ~ A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B C B C B C B@2 ~@14
>`.pickRestart({
  A: "x ~@2 x", B: "x", C: "x!2 ~ x",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct("<~@41 [~ x]!15 ~@77>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@56 A@16 B C B C B C@2 ~ A@32 B C B C B C@2 ~@14>".pickRestart({
  A: "~ x", B: "x!2 ~ x", C: "x",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@40 [x!2]!32 ~@8 [x!2]!32 ~@21>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@40 x ~@39 x ~@47 x ~@4>").gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  ~@9 A@3 ~@2 A@4 ~ A ~ A@2 ~ A@16 B@3 C B C B@6 D B@6 C B C B@6 D B@3 E A E A E A@2 ~ C B@2 C B C B@6 D B@6 C B C B@6 D
  B@3 E A E A E A@2 ~@2 A@6 ~ F ~@4
>`.pickRestart({
  A: "x", B: "x!4", C: "~ x!3", D: "x ~ x!2", E: "x!2 ~ x", F: "~ x ~@14",
})).gain(0.35)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@8 A B@2 ~ A@2 B C B@2 A B A B@2 A B@9 D B@3 D B D ~@3 E ~ E ~@6 F ~@6 E ~ E ~@6 F ~@14 E ~ E ~@6 F ~@6 E ~ E ~@6 F
  ~@11 E ~@2 C ~@9
>`.pickRestart({
  A: "x!2", B: "~ x", C: "~@3 x", D: "~@2 x!2", E: "x", F: "~ x ~@2",
})).gain(0.2)

stack(
  bass, harpsichord, harpsichord_soft, orchestral_harp, accordion, string_ensemble_1, string_ensemble_1_soft, flute,
  flute_soft, kick, rim, snare, hihat, crash, ride, ride_soft
)

More by Paoli