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, A@4 for four bars: 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 F@2 J K H@2 I@2 F@2 G@2 L@2 M N O P Q R S T U V W P X Y S T M N O P Q R S T U
  V W P X Y S T Z AA AB AC AD AE D@2 M N O P Q R S T U V W P X Y S T M N O P Q R S T U V W P X Y S T Z AA AB AC AD AE
  D@2 ~@8 AF@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: "f1@15 ~", K: "f2",
  L: "[bb1@19 ~ bb1@6 ~@2 bb1@4]/2", M: "eb2@5 ~ g2@2", N: "bb2@7 ~ eb3@7 ~", O: "c2@3 eb2", P: "g2 c2",
  Q: "f2@11 ~ f2@2 ~@2", R: "f2@7 ~ c2@8", S: "bb1@9 ~@3 bb1@4", T: "d2 f2", U: "eb2@3 g2", V: "bb2@8 eb3@5 ~@3",
  W: "c2@11 ~ g2 ~@3", X: "f2@11 ~ ab1@4", Y: "c2 f2", Z: "eb2@2 ~@2 eb2@5 ~@3 eb2@2 ~@2", AA: "eb2@11 ~@5",
  AB: "c2@2 ~@2 c2@5 ~@3 c2@2 ~@2", AC: "c2@9 ~@7", AD: "f2 ~ f2@3 ~ f2 ~", AE: "f2@5 ~@3", AF: "[~ eb2@64 ~@15]/5",
})).s("gm_acoustic_bass").gain(0.32)

// chords · harpsichord
const harpsichord = note(`<
  ~@24 A@2 B C D E F D B@3 C D@3 G H@2 I J K L M N O P Q R S T U V@3 I J K W M N O P Q R S T U X ~@8 H@2 I J K L M N O P
  Q R S T U V@3 I J K L M N O P Q R S T U X ~@8 A@2 Y@2 C@2 F Z@3 ~@3
>`.pickRestart({
  A: "[~@24 eb4@7 ~, [f4,g4,bb4]@16 [f4,g4,bb4]@15 ~, ~ eb4@2 ~]/2", B: "[f4,g4,bb4]@15 ~",
  C: "~@8 eb4@7 ~, [f4,g4,bb4]@15 ~", D: "~ f4, [g4,ab4,c5]", E: "[ab4,c5]@15 ~", F: "[g4,ab4,c5]@15 ~",
  G: "g4@4 g4@2 f4 ~, [ab4,c5]@7 ~", // Ab
  H: "[[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
  I: "[eb4,g4,c5] ~ g4 [eb4,g4,c5]", J: "[eb4,g4,c5] [eb4,g4] [eb4,g4,c5]!2", K: "ab4 [f4,ab4,c5]!3",
  L: "ab4 [f4,ab4,c5] c5 f4, ~ ab4", M: "[f4,bb4]!3 [d4,f4,bb4]",
  N: "[f4,bb4]@4 [f4,bb4]@4 [d4,f4,bb4]@4 [d4,f4,bb4]@3 ~", // Bb5 Bb
  O: "[eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 ~ [eb4,g4,bb4]@4", // Eb
  P: "[eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 ~", // Eb
  Q: "[eb4,g4,c5]@4 eb4@4 [g4,c5]@3 ~ [eb4,g4,c5]@4", R: "[eb4,g4]@4 [eb4,g4]@4 [eb4,g4,c5]@4 [eb4,g4,c5]@3 ~",
  S: "[f4,ab4] ab4 [f4,ab4,c5]!2", T: "[ab4,c5]!2 ab4 [f4,c5]", U: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4]!2",
  V: "[[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
  W: "ab4@4 [f4,ab4,c5]@4 c5@4 f4@3 ~, ~@8 ab4@7 ~", X: "[f4,bb4]@4 [f4,bb4]@4 [f4,bb4]@4 [f4,bb4] ~@3",
  Y: "~@8 f4@7 ~, [g4,ab4,c5]@15 ~", // Abmaj7
  Z: "[~@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 ~ A@3 ~@5 D E F G H I J K ~@2 L M N O P Q@3 F G H R J K ~@2 L M N O P S ~@8 D E F G H I J K ~@2 L M N O
  P Q@3 F G H I J K ~@2 L M N O P S ~@14 C ~@6
>`.pickRestart({
  A: "~@8 eb4@7 ~", B: "~@8 f4@7 ~, g4@15 ~", C: "~@8 f4@7 ~", D: "~ bb4!2 ~", E: "eb4 ~@3",
  F: "~ [eb4,g4,c5] [eb4,c5] ~", G: "~ c5 ~@2", H: "[f4,c5] ~@3", I: "[f4,c5] ~ f4 c5", J: "d4!3 ~", K: "d4!2 ~@2",
  L: "~@4 [g4,c5]@4 eb4@3 ~@5", M: "c5!2 ~@2", N: "c5 [f4,c5] ~@2", O: "f4!2 [f4,c5] ab4", P: "~ d4 ~@2",
  Q: "[d4!3 ~@2 bb4!2 ~ eb4 ~@3, ~@3 d4@8 ~]/3", R: "[f4,c5]@4 ~@4 f4@4 c5@3 ~", S: "d4@4 d4@4 d4@4 d4 ~@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 D 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",
})).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@3 C@4 A B@2 A D C@2 E A B@2 A D C@2 E A B@2 A D C@2 E A B@2 A D C@2 E ~@80 F@2 G@2 F@2 H@2 I@4 ~
>`.pickRestart({
  A: "[f5,g5]@9 ~@7", B: "[f5,g5]@4 eb5 ~@3", C: "[g5,ab5]@4 f5 ~@3", D: "[g5,ab5] ~", E: "[g5,ab5]@8 f5@3 ~@5",
  F: "[f5,g5]@8 eb5@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 A B ~@3 A ~@2 A B ~@3 A ~@2 A B ~@3 A ~@2 A B ~@86 B ~@9>".pickRestart({
  A: "~@4 eb5 ~@3", B: "~@4 f5 ~@3",
})).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