Strudelify

Io Vicino Io Lontano

Pooh

KeyD majorTempo78 bpm
0:00/0:00
// Io Vicino Io Lontano — Pooh
// 78 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2, 2/4 at bar 44, 4/4 at bar 45) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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.

// other · distortion guitar · "Gtr Dist."
const distortion_guitar = note(`<
  ~@21 A@2 B C ~@2 D@4 ~@8 E F G H@2 ~@5 I ~ J@2 ~ K L K L ~@8 M@2 N O P@2 N O Q@2 ~@16
>`.pickRestart({
  A: "[~@10 d4 d4@2 ~ d4 d4@2 ~ d4 d4@4 ~@9]/2", B: "~@11 b4 a4@2 b4 ~", C: "~@3 a4 e4 d4 b3 a3@3 ~@6",
  D: "[~@4 d4!2 ~@5 d4@3 b3 a3@2 ~@15]/2", E: "e3@4 g3@3 f#3@2 d3 b2 a#2 a2 f#2@3", F: "e2 g2 d3@2", G: "c#3 b2",
  H: "[a#2 a2@3]/2", I: "~@2 d4 d4@2 ~ d4 d4@2 ~ d4 d4@4 ~", J: "[~@3 b4 a4@2 b4 ~@4 a4 e4 d4 b3 a3@3 ~@14]/2",
  K: "~@12 d4!2 ~@2", L: "~@3 d4@3 b3 a3@2 ~@7", M: "[~@8 e3@4 g3@3 f#3@2 d3 b2 a#2 a2 f#2@3 e2@4 g2@4]/2", N: "d3 c#3",
  O: "b2 a#2", P: "[a2@8 e3@4 g3@3 f#3@2 d3 b2 a#2 a2 f#2@3 e2@4 g2@4]/2", Q: "[a2@3 ~]/2",
})).s("gm_distortion_guitar").gain(0.26).pan(0.6)

// bass · synth bass 2 · "Basso"
const bass = note(`<
  ~@2 A B C B C B C B C B C B C B C B C B C B C B C B C B C B D@5 E@2 F G H I J K L M N M N M N M N M N M N M N O P Q P
  R@2 S T U@8 V@2 B C B C B C B C B C B C B C B W
>`.pickRestart({
  A: "~@8 d2 ~@2 d2 ~@2 a2!2", B: "~@4 a1@2 b1@2 d2 ~@2 d2 ~@2 a2!2", C: "~ a2 ~@2 a1@2 b1@2 d2 ~@2 d2 ~@2 a2!2",
  D: "[~ a2 ~@2 a1@2 b1@2 e1@2 ~ e1 e2 e1@2 f#1@4 f#1 f#2@2 f#1@2 g1@2 ~ g1 g2 g1 ~ a1@3 ~ a1 c#2 d2 d#2 e2 e1@2 ~ e1 e2 e1 ~ f#1@3 ~ f#1 f#2@2 f#1@2 g1@2 ~ g1 g2 g1 ~ a1@3 ~ a1 c#2 d2 d#2 e2 d2@2 ~ d2 d3@3 d2]/5",
  E: "d2@2 ~ d2 d3 d2 ~ d2 d2@2 ~ d2 d3@3 d2", F: "c#2@2 ~ c#2 c#3 c#2 ~ c#2 b1@2 ~ b1 b2 b1@2 ~",
  G: "a#1@2 ~ a#1 a#2 a#1@2 ~ a1@2 ~ a1 a2 a1 ~ a1", H: "e2@4 g2@3 f#2@5 d2@4", I: "e2@4 g2@3 f#2@5 d2@3 ~",
  J: "c#2@3 c#2 c#3 [a1,b1] [a1,a#1] b1@6 ~ b1@2", K: "a#1@8 a1@3 a2@3 a1@2", L: "e1",
  M: "d2 ~@2 d2 ~@2 a2!2 ~@4 a1@2 b1@2", N: "d2 ~@2 d2 ~@2 a2!2 ~ a2 ~@2 a1@2 b1@2",
  O: "e1@2 ~ e1 e2 e1@2 f#1@4 f#1 f#2@2 f#1@2", P: "g1@2 ~ g1 g2 g1 ~ a1@3 ~ a1 c#2 d2 d#2 e2",
  Q: "e1@2 ~ e1 e2 e1 ~ f#1@3 ~ f#1 f#2@2 f#1@2", R: "d2@2 ~ d2 d3@3 d2 d2@2 ~ d2 d3 d2 ~ d2",
  S: "d2@2 ~ d2 d3@3 d2 c#2@2 ~ c#2 c#3 c#2 ~ c#2", T: "b1@2 ~ b1 b2 b1@2 ~ a#1@2 ~ a#1 a#2 a#1@2 ~",
  U: "[a1@2 ~ a1 a2 a1 ~ a1 e2@4 g2@3 f#2@5 d2@4 e2@4 g2@3 f#2@5 d2@3 ~ c#2@3 c#2 c#3 [a1,b1] [a1,a#1] b1@6 ~ b1@2 a#1@8]/4", // Asus2 A#maj7
  V: "[a1@3 a2@3 a1@2 e1@16 d2 ~@2 d2 ~@2 a2!2]/2", W: "~ a2 ~@2 a1@2 b1@2 ~@8",
})).s("gm_synth_bass_2").gain(0.48)

// chords · synth brass 2 · "Polysynth"
const synth_brass_2 = note("<~@2 A B@26 C@2 ~@13 D E D E D E D E D E D E D E ~@17 A B@14 C@2>".pickRestart({
  A: "~@8 [d2,a3,d4,f#4]@7 ~", // D
  B: "[[d2,a3,c#4,e4]@7 ~ [d2,g3,b3,d4]@11 ~ [d2,g3,b3,d4] [e2,a3,c#4,e4]@3 [d2,a3,d4,f#4]@7 ~]/2", // A G A D
  C: "[[d2,a3,c#4,e4]@7 ~ [d2,g3,b3,d4]@11 ~ [d2,g3,b3,d4] [e2,a3,c#4,e4]@3 ~@8]/2", // A G A
  D: "[d2,a3,d4,f#4]@7 ~ [d2,a3,c#4,e4]@7 ~", E: "[d2,g3,b3,d4]@11 ~ [d2,g3,b3,d4] [e2,a3,c#4,e4]@3",
})).s("gm_synth_brass_2").gain(0.29)

// other · electric guitar muted · "Gtr Mute"
const electric_guitar_muted = note(`<
  ~ A B C D C D C D C D C D C D C D C D C D C D C D C D C D C E F@3 G ~@9 H I H I H I H I H I H I H J K@4 ~@13 L C D C D
  C D C D C D C D C D C M
>`.pickRestart({
  A: "~@2 a3 a3@3 ~@8 a3 ~", B: "~ a3 ~@2 b3!2 a3@2 d3 ~@2 d3 ~@2 a3!2", C: "~@4 a2@2 b2@2 d3 ~@2 d3 ~@2 a3!2",
  D: "~ a3 ~@2 a2@2 b2@2 d3 ~@2 d3 ~@2 a3!2", E: "~ a3 ~@6 a3 ~@2 a3 ~@2 a3!2",
  F: "~ a3 ~@2 a3 ~ a3 ~ a3 ~@2 a3 ~@2 a3!2", G: "~ a3 ~@2 a3 ~ a3 ~@9", H: "d3 ~@2 d3 ~@2 a3!2 ~@4 a2@2 b2@2",
  I: "d3 ~@2 d3 ~@2 a3!2 ~ a3 ~@2 a2@2 b2@2", J: "d3 ~@2 d3 ~@2 a3!2 ~ a3 ~@6",
  K: "a3 ~@2 a3 ~@2 a3!2 ~ a3 ~@2 a3 ~ a3 ~", L: "~@8 d3 ~@2 d3 ~@2 a3!2", M: "~ a3 ~@2 a2@2 b2@2 ~@8",
})).s("gm_electric_guitar_muted").gain(0.35).pan(0.3)

// other · electric guitar muted · "Gtr Mute" · soft notes
const electric_guitar_muted_2 = note("<~@30 A B C B D ~@23 E F E F ~@30>".pickRestart({
  A: "~@9 a3!2 ~ a3!2 ~@2", B: "~@2 a3!2 ~@5 a3!2 ~ a3!2 ~@2", C: "~@2 a3!2 ~ a3 ~@3 a3!2 ~ a3!2 ~@2",
  D: "~@2 a3!2 ~ a3 ~@10", E: "~ a3!2 ~ a3!2 ~@4 a3!2 ~@4", F: "~ a3!2 ~ a3!2 ~@4 a3!2 ~ a3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.17).pan(0.3)

// bass · fretless bass · "Bass Fretl"
const bass_2 = note("<~@6 A@2 B@2 C ~@32 D@2 ~@29 E@3 ~@15>".pickRestart({
  A: "[~@14 a3 g3@17]/2", B: "[~@14 a3 g3@13 ~@3 f#3]/2", C: "~ d3 e3 b2 d3@4 ~@8",
  D: "[f#3@3 d3@2 b2@2 e3@6 ~ f#3@18]/2", E: "[~@8 f#3@3 d3@2 b2@2 e3@6 ~ f#3@18 ~@8]/3",
})).s("gm_fretless_bass").gain(0.39).pan(0.8)

// other · electric guitar clean · "Gtr Clean"
const electric_guitar_clean = note(`<
  ~ A B C@31 D@3 E@2 F G@4 H@18 I@2 J I K@2 L I K@2 L I M@2 ~@3 N O@2 P@2 Q R S T U@2 V W
>`.pickRestart({
  A: "~@2 a3 a3@5 ~@6 a3 ~", B: "~ a3 ~@2 b3!2 a3@2 ~ a3!7", C: "~ a3!4 ~ a3 ~@2 a3!7",
  D: "[~ a3!4 ~ a3 ~@9 [d4,g4]@7 ~@9 [d4,g4]@7 ~@9, ~@15 a#3@7 ~@9 a#3@7 ~@10]/3", // G5
  E: "[[a3,c#4,e4]@7 ~@9 [d4,g4]@7 ~@9, ~@15 a#3@7 ~@10]/2", F: "[a#3,d4,g4]@7 ~@9",
  G: "[[a#3,d4,g4]@7 ~@9 [c#4,e4]@7 ~@9 [d4,g4]@7 ~@9 [e4,g4]@16, ~@15 a3@8 ~@8 a#3@7 ~@9 [b3,d4]@16 ~]/4", // Gm C#m G5 Em Bm
  H: "~ a3!7 ~ a3!4 ~ a3 ~", I: "~@8 [d4,g4]@7 ~, ~@7 a#3@7 ~@2", J: "~@8 [a3,c#4,e4]@7 ~", K: "~@8 [a#3,d4,g4]@7 ~",
  L: "~@8 [c#4,e4]@7 ~, ~@7 a3@8 ~", M: "[~ [e4,g4]@2 ~, ~@7 [b3,d4]@16 ~@9]/2", N: "~@8 d4!2 ~@6",
  O: "[~@8 d4 d4@2 ~@4 a4@2 ~@2 a4@4 ~@6 a4!3]/2",
  P: "[a4@4 ~@5 a4@2 ~@4 g4@2 f#4 g4 d4 e4 b3 d4 a3 b3 f#3 a3 e3 f#3 d3 e3 d3]/2", Q: "e3 d3 b2 d3@2 b2 a2 b2@7 ~@2",
  R: "~@6 a4!2 a4@8", S: "~@7 d5 [a4,c#5] b4 g4 f#4 a4 e4 f#4 d4", T: "e4 b3 d4 a3 b3 f#3 a3 e3@9",
  U: "[~ f#3 d3 e3@6 a2 b2 d3@2 e3@2 f#3@2 a3@2 b3 ~ d4!3 d4@7 ~]/2", V: "~@3 a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4",
  W: "~ a4 ~ a4 ~ a4@2 ~@9",
})).s("gm_electric_guitar_clean").gain(0.08).pan(0.7)

// chords · pad warm · "Warm Pad"
const pad_warm = note("<~@30 A B@2 C D ~@23 E@2 F@2 ~@30>".pickRestart({
  A: "~ [b3,d4,e4,g4]", B: "[[a3,f#4,a4]@8 [b3,g4]@15 ~ [b3,d4,e4,g4]@8, d4@3 ~]/2",
  C: "~@4 a4@3 ~ [b3,g4]@8, d4@15 ~, [a3,f#4] ~", D: "[a3,c#4,e4]@3 ~@5",
  E: "[[b3,d4,e4,g4]@8 [a3,f#4,a4]@8 [b3,g4]@15 ~, ~ d4@3]/2", // Em7 D Em
  F: "[[b3,d4,e4,g4]@8 ~@4 a4@3 ~ [b3,g4]@8 [a3,c#4,e4]@6 ~@2, ~@8 d4@15 ~@9, ~ [a3,f#4] ~@2]/2", // Em7 Em A D
})).s("gm_pad_warm").gain(0.14)

// other · melodic tom · "Melo Tom"
const melodic_tom = note("<~ A@32 B C ~@8 D E@17 F ~@13 G A@16>".pickRestart({
  A: "~@4 d3@5 ~@7", B: "~@4 d3@5 ~@6 b3", C: "[g3,a3] ~@2 e3 d3!2 c3 ~@9", D: "~@8 a3 ~@2 f3@3 ~@2", E: "~@3 d3",
  F: "~@7 b3 [g3,a3] ~@2 e3 d3!2 c3 ~", G: "a3 ~@2 f3@3 ~@10",
})).s("gm_melodic_tom").gain(0.5).pan(0)

// other · shamisen
const shamisen = note("<~@34 A B@2 C D B@2 C D E ~@18 F@2 G H F@2 G H F@2 G H I J ~@16>".pickRestart({
  A: "~@8 f#5 a4 d5 f#5!2 a4 d5 f#5", B: "g5 a#4 d5 g5!2 a#4 d5 g5 f#5 a4 d5 f#5!2 a4 d5 f#5",
  C: "e5 a4 c#5 e5!2 a4 c#5 e5 d5 f#4 b4 d5!2 f#4 b4 d5", D: "d5 g4 a#4 d5!2 g4 a#4 d5 f#5 a4 d5 f#5!2 a4 d5 f#5",
  E: "e5 b4 b5 f#5 b4 e5 b5 b4 e5 b4 b5 f#5 b4 e5 b5 e5", F: "f#5 a4 d5 f#5!2 a4 d5 f#5 g5 a#4 d5 g5!2 a#4 d5 g5",
  G: "f#5 a4 d5 f#5!2 a4 d5 f#5 e5 a4 c#5 e5!2 a4 c#5 e5", H: "d5 f#4 b4 d5!2 f#4 b4 d5!2 g4 a#4 d5!2 g4 a#4 d5",
  I: "f#5 a4 d5 f#5!2 a4 d5 f#5 e5 b4 b5 f#5 b4 e5 b5 b4", J: "e5 b4 b5 f#5 b4 e5 b5 e5 ~@8",
})).s("gm_shamisen").gain(0.11).pan(0.1)

// chords · string ensemble 2 · "Archi"
const string_ensemble_2 = note("<~@34 A@7 B@3 ~@18 C@3 D@4 E@3 F G@3 ~@16>".pickRestart({
  A: "[~ [a3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] f#4 [c#4,e4] [b3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] [a3,f#4], ~ d4@5 ~ d4@7, ~@5 a3@2 ~@7]/7", // D D# D D# C#m B5 D# D …
  B: "[[c#4,e4]@8 [b3,f#4]@8 [a#3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@15 ~, ~@8 d4@39 ~]/3", // C#m B5 D# D Em
  C: "[[a3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] f#4 [c#4,e4], d4@5 ~, ~@2 a3]/3", // D D# D D# C#m
  D: "[[b3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] f#4 [c#4,e4], d4@7 ~, ~@3 a3]/4", // B5 D# D D# D D# C#m
  E: "[[b3,f#4] [a#3,g4] [a3,f#4] [a#3,g4] [a3,f#4] [a#3,g4], d4@13 ~@3]/3", F: "f#4 [c#4,e4], a3",
  G: "[[b3,f#4]@8 [a#3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@15 ~@9, d4@13 ~@3]/3", // B5 D# D Em
})).s("gm_string_ensemble_2").gain(0.19).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  [~@8 x ~@2 x ~@2 x ~]!34
  [~@8 x ~@2 x ~@3 x]
  [x ~@2 x ~@3 x!2 ~@2 x ~@3 x]!8
  [x ~@2 x ~@3 x ~@8]
  [x ~@2 x ~@2 x ~@9]!18
  [x ~@2 x ~@3 x!2 ~@2 x ~@3 x]!13
  [~@8 x ~@2 x ~@2 x ~]!16
  ~
>`).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~ 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 D E@8 F G H G H G H G H G H G H G H G H G I E@13 ~
  A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~ x ~@6", B: "~@2 x!2 ~@12", C: "~@2 x ~@12 x", D: "x ~@2 x", E: "~ x ~ x", F: "~ x ~@2", G: "~@5 x ~@2",
  H: "~@10 x!2 ~@4", I: "~@7 x!2 ~@7",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<A B@33 C D@9 B@18 D@13 E B@15 F>".pickRestart({
  A: "~@4 x!4", B: "x!8", C: "x!6 ~ x", D: "x!2 ~ x!3 ~ x", E: "x!2 ~ x!5", F: "x!4 ~@4",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A B@33 C ~@9 D@18 ~@13 A B@15 C>".pickRestart({
  A: "~@9 x ~ x ~@3 x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~@3 x", C: "~ x ~ x ~ x ~ x ~@8",
  D: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  [~@13 x ~@2]!34
  [~@3 x]
  [~ x ~ x]!9
  [~@5 x ~@10]!18
  [~ x ~ x]!13
  [~@4 x ~@8 x ~@2]
  [~@13 x ~@2]!15
  ~
>`).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@9 A ~@9 A ~ A ~ A ~@9 B ~@3 B ~@9 B ~ B ~ B ~@7 B ~@4 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "~ x", B: "x",
})).gain(0.4)

stack(
  distortion_guitar, bass, synth_brass_2, electric_guitar_muted, electric_guitar_muted_2, bass_2, electric_guitar_clean,
  pad_warm, melodic_tom, shamisen, string_ensemble_2, kick, snare, hihat, hihat_soft, open_hat, crash
)

More by Pooh