Strudelify
Il Giorno Prima cover art

1984 · Aloha

Il Giorno Prima

Pooh

KeyA majorTempo85 bpm
0:00/0:00
// Il Giorno Prima — Pooh
// 85 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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.

// chords · piano · "tk1"
const piano = note(`<
  A B@2 C@2 D@2 E@2 F@2 ~@2 G H I J K L@2 M@2 N O ~@3 H I J K L@2 M@2 N O ~@2 G H I J K L@2 M@2 N O ~@3 P Q R@2 P Q R@2
  ~@24 H I J K L@2 M@2 N O ~ S T S U@3 S@2 U S U S U@2 S@2 U S U S ~@6
>`.pickRestart({
  A: "~@7 a2", B: "[d2@15 a2]/2", C: "[c#2@15 g#2]/2", D: "[b1@15 f#2]/2", E: "[a#1@15 f2]/2", F: "a1/2",
  G: "~@12 a2 g2 e2 d#2", H: "d2@7 a2", I: "d2@6 ~ a2", J: "c#2@7 g#2", K: "c#2@13 ~ g#2@2", L: "b1@7 f#2",
  M: "a#1@7 f2", N: "a1@7 e2", O: "a1@7 ~", P: "[a3,c4,f4]@15 ~", Q: "[b3,d4,g4]@15 ~",
  R: "[[a3,c#4,e4,a4]@15 ~, b3 ~@31]/2", S: "[a3,c4,e4]@7 ~ [a3,c4,e4]@7 ~", T: "[f3,a3,c4]@7 ~ [f3,a3,c4]@7 ~",
  U: "[f3,a3,c4]@7 ~ [f3,a3,c4]@8", // F
})).s("gm_piano").gain(0.41)

// bass · fretless bass · "tk2"
const bass = note(`<
  A B@2 C@2 D@2 E@2 F@3 G@2 H@2 I@2 J@2 K L M N O P@2 H@2 I@2 J@2 K L M N O Q@2 H@2 I@2 J@2 K L M N O R@2 S T U V W X Y
  Z AA@2 AB@2 AC AD AC AE AC AF AG@2 AA@2 AB@2 AC AD AC AE AC AF AG@2 AH AI AJ@2 AK AL AM AN AO AP AQ AR AS AT AU@3 AT@2
  AU AT AU AT AU@2 AT@2 AV AR AU AT AW AX AW AX AW AY
>`.pickRestart({
  A: "~@7 a2", B: "[d2@15 a2]/2", C: "[c#2@15 g#2]/2", D: "[b1@15 f#2]/2", E: "[a#1@15 f2]/2", F: "[a1@32 g1@15 ~]/3",
  G: "[a1@21 a1 ~@6 a2 g2 e2 d#2]/2", H: "d2@7 a2", I: "c#2@7 g#2", J: "b1@7 f#2", K: "a#1@7 f2", L: "a#1@13 ~ f2@2",
  M: "a1@7 e2", N: "a1@7 ~", O: "g1@15 ~", P: "[a1@21 a1 ~@10]/2", Q: "[a1@28 a2 g2 e2 d#2]/2", R: "[a1@29 ~@3]/2",
  S: "a1@14 g2 a2", T: "a1@14 g2 g#2", U: "a2 a1 a1@12 g2 g#2", V: "a2 a1 a1@10 a2 g2 e2 d#2",
  W: "~@9 g3 a3@4 d3 e3, a1@15 ~", X: "a2@8 ~@2 g3 g3@4 ~, a1@15 ~, ~@11 a3 ~@4",
  Y: "g3 a3 d3 e3 ~@10 g2 g#2, a1@7 ~, ~ a2@3", Z: "a2 a1 a1@13 ~", AA: "~@11 a1 a1@2 ~@2", AB: "~@12 g1 g1@2 ~",
  AC: "~@11 b1 b1@2 ~@2", AD: "~@12 c#2!2 ~@2", AE: "~@12 c#2 c#2@2 ~", AF: "~@12 e1!2 ~@2", AG: "~@12 a1!2 ~@2",
  AH: "d2@7 ~ d2@7 ~", AI: "d2@7 ~ d2@8", AJ: "c#2@7 ~ c#2@7 ~", AK: "b1@7 ~ b1@7 ~", AL: "b1@8 b1@7 ~",
  AM: "a#1@8 a#1@7 ~", AN: "a#1@7 ~ a#1@7 ~", AO: "a1@7 ~ a1@7 ~", AP: "a1@7 ~ a1@6 ~@2", AQ: "g1@7 ~ g1@7 ~",
  AR: "a1@2 ~ a1 e2@2 ~@2 a1@2 ~ a1 e2@2 c2 a1", AS: "f1@2 ~ f1 c2@2 ~@2 f1@2 ~ f1 c2@2 f1 g1",
  AT: "a1@2 ~ a1 e2@3 ~ a1@3 a1 e2@2 c2 a1", AU: "f1@2 ~ f1 c2@3 ~ f1@2 ~ f1 c2@2 ~@2",
  AV: "f1@2 ~ f1 c2@2 ~@2 f1@2 ~ f1 c2@2 ~@2", AW: "f1@2 ~ f1 c2@2 f1 ~ g1@2 ~ g1 d2@2 g1 ~",
  AX: "~@2 a1 ~@3 a1@2 ~@2 a1 ~@3 a1 ~", AY: "~ a1 ~@6",
})).s("gm_fretless_bass").gain(0.57)

// chords · pad halo · "tk3"
const pad_halo = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F G@2 H@2 I@2 J@2 K@2 L@2 F G@2 H@2 I@2 J@2 K@2 L@2 F G@2 H@2 I@2 J@2 K@2 L@2 F G@2 M F N@2 M O
  N@2 P@2 Q@2 R S R S T@4 P@2 Q@2 R S R S T@4 H@2 I@2 J@2 K@2 L@2 F U V W@18 X Y X Y Z AA
>`.pickRestart({
  A: "[d4,f#4,a4]/2", B: "[[c#4,e4,g#4]@31 ~]/2", C: "[b3,d4,f#4]/2", D: "[a#3,c#4,f4]/2", E: "[[a3,c4,e4]@31 ~]/2",
  F: "[b3,d4,g4]", G: "[c#4,e4,a4]/2", H: "[a3,d4,f#4]/2", I: "[g#3,c#4,e4]/2", J: "[f#3,b3,d4]/2", K: "[f3,a#3,c#4]/2",
  L: "[e3,a3,c4]/2", M: "[a3,c4,f4]", N: "[[a3,c#4,e4,a4]@31 ~]/2", O: "[b3,d4,g4]@15 ~", P: "[e4,a4,c#5,a5]/2",
  Q: "[d4,g4,b4,g5]/2", R: "[d4,f#4,b4,b5]", S: "[e4,g#4,c#5,c#6]",
  T: "[[d4,f#4,b5] [g#4,e5] c#4 [d4,f#4], b4@31 ~ [a4,a5]@32, ~ e4@2 ~]/4", U: "~@3 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@5",
  V: "~@3 [d4,g4,b4]@5 ~@3 [d4,g4,b4]@5", W: "~@3 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@4 ~", X: "[c4,f4,a4] [d4,g4,b4]",
  Y: "~ [a4,c5,e5,a5] ~ [a4,c5,e5,a5] ~ [a4,c5,e5,a5] ~ [a4,c5,e5,a5]", Z: "[c4,f4,a4]@7 ~ [d4,g4,b4]@8",
  AA: "~ [a4,c5,e5,a5] ~@6", // Am
})).s("gm_pad_halo").gain(0.25)

// chords · violin · "tk5"
const violin = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F G@2 A@2 B@2 C@2 D@2 E@2 F G@2 A@2 B@2 C@2 D@2 E@2 F G@2 A@2 B@2 C@2 D@2 E@2 F G@2 ~@32 A@2 B@2
  C@2 D@2 E@2 F ~@26
>`.pickRestart({
  A: "~@2 a3 ~ [d4,f#4] ~ a3 ~@9", B: "~@2 g#3 ~ [c#4,e4] ~ g#3 ~@9", C: "~@2 f#3 ~ [b3,d4] ~ f#3 ~@9",
  D: "~@2 f3 ~ [a#3,c#4] ~ f3 ~@9", E: "~@2 e3 ~ [a3,c4] ~ e3 ~@9",
  F: "~@2 [g3,b3] ~ [g3,c4] ~ [g3,b3] ~ [f3,c4]@4 [d3,d4]@4, ~ g3", G: "[[c#3,e3,a3]@15 ~]/2",
})).s("gm_violin").gain(0.3).pan(0.7)

// other · acoustic guitar steel · "tk6"
const acoustic_guitar_steel = note("<~@13 A ~ B C D ~@7 E@2 ~@13 F@2 G@2 H@2 I@2 J@2 K L@2 ~@69>".pickRestart({
  A: "a3@2 ~ a3@2 ~ a3@2 ~ a3@7", B: "~@4 e4 f#4 e4 d4", C: "c#4@11 ~@5", D: "~@4 c#4 d#4 e4 f#4 g#4@7 ~",
  E: "[~@2 b3!3 a3 e3@12 ~@3 e3 b3!3 a3 e3@5 ~]/2", F: "[~@4 g#4@2 f#4@3 ~@3 g#4@2 f#4@2]/2", G: "~@2 f#4 e4",
  H: "[~@4 e4@2 d4@3 ~@3 e4@2 d4@2]/2", I: "~@2 d#4 c#4", J: "~@2 d4 c4", K: "~@2 c4 d4", L: "[a3@31 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.3)

// chords · electric guitar clean · "tk7"
const electric_guitar_clean = note(`<
  ~@61 A B C@3 D E F G H I J A B C@3 D E F G H I J ~@11 K@20 L M L N L O
>`.pickRestart({
  A: "~@3 e4@3 ~@3 e4@3 ~@3 e4, c#5@5 ~ c#5@5 ~ c#5@3 ~, ~ b4@4 ~@2 b4@4 ~@2 b4@2 ~, ~@2 a4@3 ~@3 a4@3 ~@3 a4@2",
  B: "~@3 e4@3 ~@3 e4@3 ~@2 a4 e4, c#5@5 ~ c#5@5 ~ c#5@3 ~, ~ b4@4 ~@2 b4@4 ~@2 b4@2 ~, ~@2 a4@3 ~@3 a4@3 ~@5",
  C: "[~@33 f#4 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~, b4@6 b4@6 b4@3 b3@3 d4@5 g4@5 b4@3 b3@3 ~@14, ~ g4@6 g4@6 g4@3 b4@3 b3@5 d4@5 g4@5 ~@2 f#4@2 ~ f#4@2 ~ f#4@2 ~ f#4@2 ~, ~@2 f#4@6 f#4@24 b4@2 ~ c#5@3 d5@3 c#5@3 b4@3 ~, ~@3 d4@6 d4@5 d4@3 g4@5 b4@3 b3@5 d4@4 ~@14]/3",
  D: "~ g#4 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4@2, c#5@2 ~ d#5@3 e5@3 d#5@3 c#5@3 ~, ~@4 g#4@2 ~ g#4@2 ~ g#4@2 ~ g#4@2 ~",
  E: "~ f#4 d4 ~@2 d4 ~@3 c#5 ~@4 d4@2, b4@2 ~ c#5@3 d5@4 ~@2 b4@3 ~, ~@4 f#4@2 ~ f#4@3 f#4@3 f#4@2 ~, ~@8 d4@2 ~ d4@3 ~@2",
  F: "~ g#4 e4 ~@2 e4 e5 ~@2 d#5 g#4 e4 c#5 g#4 e4@2, c#5@2 ~ d#5@3 ~@2 e4@2 ~@6, ~@4 g#4@2 ~ g#4@3 ~@6",
  G: "~ f#4 ~@2 f#4 d4 ~ f#4 d4 ~ f#4 d4 ~@2 d4 ~, b4@2 d4@3 ~@8 f#4@2 ~, ~@3 c#5@2 ~ d5@2 ~ c#5@2 ~ b4@3 ~",
  H: "~ g#4 e4 ~@11 e4 ~, b4@2 ~ c#5@5 e4@2 g#4@2 b4@3 ~, ~@4 g#4@2 d5@9 ~, ~@5 e4@2 g#4@2 c#5@6 ~, ~@11 e4@2 g#4@2 ~",
  I: "~@15 e4, c#5@3 c#5@3 c#5@2, ~ a4@6 a4@2 a4@4 b4@3, ~ e4@3 e4@3 a4, ~@3 a3@13",
  J: "~@2 f#4 ~ f#4 d4 ~@8 f#4@2, d5@3 ~@3 d5@6 d5@4, ~ a4@2 a4@2 ~@2 a4@6 a4@3, ~@4 f#4@3 ~, ~@9 d4@7",
  K: "~@2 [e4,a4,c5] ~@2 [d4,g4,b4]!3 ~@2 [e4,a4,c5] ~@2 [d4,g4,b4]!3", // Am G Am G
  L: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // F G
  M: "~@2 [a4,e5,a5] ~@3 [a4,e5,a5] ~@3 [a4,e5,a5] ~@3 [a4,e5,a5] ~", // A5
  N: "~@2 [a4,e5,a5] ~@3 [a4,e5,a5] ~@3 [a4,e5,a5]@2 ~@2 [a4,d5,e5,a5] ~", O: "~ [a4,e5,a5] ~@6",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.7)

// chords · lead 3 calliope · "tk8"
const lead_3_calliope = note(`<
  ~ A B C@2 D@2 E F G H ~@3 A B C@2 D@2 E F G H ~@3 A B C@2 D@2 E F G H ~@3 A B C@2 D@2 E F G H ~@35 A B C@2 D@2 E F G H
  ~@27
>`.pickRestart({
  A: "~@2 [e5,g#5] [d5,f#5]", B: "~@8 [e5,g#5]@4 [d5,f#5]@3 ~", C: "~@2 [d#5,f#5] [c#5,e5]",
  D: "~@8 [c#5,e5]@4 [b4,d5]@3 ~", E: "~@2 [c5,d#5] [a#4,c#5]", F: "~@8 [c5,d#5]@4 [a#4,c#5]@3 ~",
  G: "~@2 [b4,d5] [a4,c5]", H: "~@8 [b4,d5]@4 [a4,c5]@3 ~",
})).s("gm_lead_3_calliope").gain(0.2)

// bass · contrabass · "tk9"
const bass_2 = note(`<
  A B@2 C@2 D@2 E@2 F@2 G H@2 I J K@2 L@2 M@2 N O ~@3 I J K@2 L@2 M@2 N O ~@2 P I J K@2 L@2 M@2 N O ~@35 I J K@2 L@2 M@2
  N O ~@27
>`.pickRestart({
  A: "~@7 a2", B: "[d2@15 a2]/2", C: "[c#2@15 g#2]/2", D: "[b1@15 f#2]/2", E: "[a#1@15 f2]/2", F: "[a1@31 ~]/2",
  G: "g2", H: "[a2@28 a2 g2 e2 d#2]/2", I: "d2@7 a2", J: "d2@7 ~@7 a2@2", K: "c#2@7 g#2", L: "b1@7 f#2", M: "a#1@7 f2",
  N: "a1@7 e2", O: "a1@15 ~", P: "~@12 a2 g2 e2 d#2",
})).s("gm_contrabass").gain(0.38)

// other · steel drums · "tk11"
const steel_drums = note("<~@96 A B A B@3 A@2 B A B A B@2 A@2 B A B A ~ C ~ C ~@2>".pickRestart({
  A: "e5 c5 a4 d5 ~ b4 g4 ~ e5 c5 a4 d5 ~ b4 g4 ~", B: "c5 a4 f4 d5 ~ b4 g4 ~ c5 a4 f4 d5 ~ b4 g4 ~",
  C: "a4!2 ~@2 a4!2 ~@2 a4!2 ~@2 a4!2 ~@2",
})).s("gm_steel_drums").gain(0.21).pan(0.3)

// other · distortion guitar · "tk12"
const distortion_guitar = note("<~@85 A@8 B@2 C ~@20 D ~ D ~ D E>".pickRestart({
  A: "[~@2 a4 ~ d5 ~ a4 ~ g#5@4 f#5@6 a4 ~ d5 ~ a4 ~ g#5@4 f#5@6 g#4 ~ c#5 ~ g#4 ~ f#5@4 e5@6 g#4 ~ c#5 ~ g#4 ~ f#5@4 e5@6 f#4 ~ b4 ~ f#4 ~ e5@4 d5@6 f#4 ~ b4 ~ f#4 ~ e5@4 d5@6 f4 ~ a#4 ~ f4 ~ d#5@4 c#5@6 f4 ~ a#4 ~ f4 ~ d#5@4 c#5@4]/8",
  B: "[~@2 e4 ~ a4 ~ e4 ~ d5@4 c5@6 e4 ~ a4 ~ e4 ~ d5@4 c5@4]/2", C: "~@4 b4@4 g4@4 d4@3 ~", D: "[c4,c5] [d4,d5]",
  E: "~ [e4,e5] ~@6", // E
})).s("gm_distortion_guitar").gain(0.26).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@53 A@8 B@2 C@2 B C B C B C@3 B@2 C@2 B C B C B C@3 D@11 E@21 F E F E G>".pickRestart({
  A: "x ~@2 x ~@3 x!2 ~@2 x ~ x ~@2", B: "~@11 x!2 ~@3", C: "~@12 x!2 ~@2", D: "x ~@2 x!2 ~@3", E: "x ~@2 x ~@4 x ~@7",
  F: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", G: "x!2 ~@14",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@53 A@8 ~@12 B@12 A@32 C A C A D>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~ x ~ x ~ x ~ x", D: "~ x ~@6",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@53 A B A B A B A B C D E F C D E F C D E F C D E F C D E F C D E F A@11 F@3 G@3 F@2 G F G F G@2 F@2 G F G F H I H I
  H J
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x!2 ~ x!2 ~", C: "x ~@3 x!11 ~", D: "x!3 ~ x!3 ~ x!8", E: "x!3 ~ x!7 ~ x!4",
  F: "x!16", G: "x ~ x!14", H: "x!6 ~ x!9", I: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", J: "x!2 ~ x ~@12",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@61 A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~@15 D@3 ~@2 D ~ D ~ D@2 ~@2 D ~ D ~@7
>`.pickRestart({
  A: "~ x!3 ~@11 x", B: "~@3 x ~@3 x ~@8", C: "~@3 x ~@7 x ~@4", D: "~ x ~@14",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@54 A ~ A ~ A ~ A ~@55 B C B C B D>".pickRestart({
  A: "~@3 x", B: "~@3 x ~@4", C: "~ x ~ x ~ x ~ x", D: "~ x ~@6",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@17 A ~ B C ~@2 A ~ D E ~@90 F ~ F ~ G>".pickRestart({
  A: "~@3 x", B: "~@2 x ~@2 x ~@2 x ~@2 x ~@4", C: "x", D: "~@11 x!2 ~@3", E: "~@12 x!4", F: "~ x ~ x ~ x ~ x",
  G: "~ x ~@6",
})).gain(0.4)

stack(
  piano, bass, pad_halo, violin, acoustic_guitar_steel, electric_guitar_clean, lead_3_calliope, bass_2, steel_drums,
  distortion_guitar, kick, snare, hihat, hihat_soft, open_hat, crash
)

More by Pooh