Strudelify
Siamo ancora sulla strada cover art

1987 · Il colore dei pensieri

Siamo ancora sulla strada

Pooh

KeyG majorTempo89 bpm
0:00/0:00
// Siamo ancora sulla strada — Pooh
// 89 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(89/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, A@4 for four bars: edit a riff to change every repeat.

// chords · rock organ
const rock_organ = note(`<
  A B C D E F C D E G H I J G H I J K@2 H L M N@2 F C D E G H I J O H I J K@2 H L M N@2 P Q P R G S G T U V U W R V F C
  D E F C X Y Z AA AB L AC AA AB L AD@2 AA AB L AE AA AB L AF AA AB AG AF AA AB AG AF AH AI AJ AK AH AI ~
>`.pickRestart({
  A: "~@12 c4 [c#4,d4,e4] [f4,f#4,g4] [g#4,a4,b4]", B: "g5@3 a5, [g4,b4], c5 ~@15", C: "f#5@3 g5, [f#4,b4]",
  D: "e5@12 ~ d5 e5 g5, [e4,g4]", E: "b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 g5 e5 d5, [g4,c5]@15 ~",
  F: "g5@3 a5, [g4,b4]", G: "[b4,d5,g5]@15 ~", H: "[b4,d5,f#5]", I: "[g4,c5,e5]", J: "[g4,c5]", K: "[g4,b4,e5]@15 ~",
  L: "[a4,d5,f#5]", M: "[a4,c5,e5]@15 ~", N: "[f#4,a4,d5]", O: "d5 e5, [b4,g5]", P: "g5@3 a5, [b4,d5]",
  Q: "g5@3 a5, [c5,e5]@15 ~", R: "[c5,e5,g5]", S: "[c5,e5,g5]@7 ~ [d5,f#5]@8", T: "[c5,e5,g5] [d5,f#5,a5]",
  U: "[b4,d5,g5]@7 ~ [a4,d5,f#5]@8", V: "[a4,c5,e5]@8 [c5,e5,g5]@4 [d5,f#5,a5]@3 ~",
  W: "[b4,e5,g5]@7 ~ [b4,d5,f#5]@7 ~", X: "[e4,g4,e5]@9 ~@7", Y: "[g4,c5]@2 ~ [g4,c5] ~@12",
  Z: "[g4,c5]@2 ~ [g4,c5] ~@2 [a4,d5] ~@9", AA: "[c#5,e5,a5]@15 ~", AB: "[c#5,e5,g#5]@15 ~",
  AC: "[e5,g#5]@4 e5 f#5 a5 b5, b4", AD: "[b4,e5,g#5]/2", AE: "[b4,e5,g#5]", AF: "[e5,g#5,b5]", AG: "[d5,f#5,a5]",
  AH: "a5@3 b5, [a4,c#5]", AI: "g#5@3 a5, [g#4,c#5]", AJ: "f#5@12 ~ e5 f#5 a5, [f#4,a4]",
  AK: "c#6 d6 c#6 d6 c#6 d6 c#6 d6 c#6 d6 c#6 d6 c#6 a5 f#5 e5, [a4,d5]@15 ~", // D5
})).s("gm_rock_organ").gain(0.2)

// bass · fretless bass
const bass = note(`<
  ~ A B C D A B C E F G H I F J K L M N O L P Q R A B C S T U H I V W X Y Z N AA L AB L AC AD AE AD AF AG@4 AH AI AJ AK
  C AI A AL AM AN A B AM AO AP AQ AR AS AT AQ AR AS AT AU AV AR AW AX AQ AR AS AY AZ BA Q BB AQ AR Q BC AQ BD Q AX AQ AR
  ~
>`.pickRestart({
  A: "g1@6 ~ g1 g1@4 a1@4", B: "b1@7 b1 b1@7 ~", C: "c2@6 ~ c2 c2@8", D: "d2@7 d2 d3 e3 g3@2 g2@4",
  E: "d2@7 d2 d3 e3 g3@2 a2@2 ~@2", F: "g1", G: "b1@7 b1 b1@8", H: "c2", I: "d2@12 a2@3 ~", J: "b1@7 b1 b1@4 b2@4",
  K: "c3", L: "d3", M: "e3", N: "c3@3 c3", O: "b2", P: "a2", Q: "d2@6 ~ d2 d2@8", R: "d2@8 e3 c3 a2 g2 e2 d2 b1 a1",
  S: "d2@6 ~ d2 d3 e3 g3 ~ a2@4", T: "g1@3 a1", U: "b1@3 b1", V: "g2 e2", W: "b2@7 b2 b2@8", X: "c3@7 ~ c3@8",
  Y: "d3@15 d3", Z: "e3@3 g3", AA: "b2@6 b2 c3", AB: "a2@6 ~ a2 a2@8", AC: "d3@7 d3 d3@3 a2 d2@3 a1",
  AD: "g1@6 ~ g1 g1@7 ~", AE: "g1@10 f#3 g3 f#3 e3 d3@2", AF: "g1@6 ~ g1 g3@7 ~", AG: "g2", AH: "g2 f#2",
  AI: "a1@2 c2 d2", AJ: "g2@6 ~ g2 f#2@8", AK: "e2@6 ~ e2 d2@8", AL: "b1@6 ~ b1 b1@8", AM: "c2@6 ~ c2!2 ~@7",
  AN: "d2@7 d2 d3@2 a2 ~ a2@3 ~", AO: "d1@3 d1 ~@12", AP: "d1@3 d1@2 ~ e1@10", AQ: "a1@6 ~ a1 a1@4 b1@4",
  AR: "c#2@6 ~ c#2 c#2@4 c#2@3 ~", AS: "d2@6 ~ d2 d2@4 d2@4", AT: "e2@2 e2!2", AU: "d3 c#3 b2@2 e2@4 b2@4 e2@4",
  AV: "a1@7 a1 a1@4 a1@4", AW: "d2@6 ~ d2 d2@4 d2 ~@3", AX: "e2@6 ~ e2 e2@4 e2@4", AY: "e2@6 ~ e2 b2@4 e2@4",
  AZ: "a1@7 a1 a1@8", BA: "c#2@6 ~ c#2 c#2@4 c#2@4", BB: "e2@6 ~ e2 e2@4 e2 ~@3",
  BC: "a3 g#3 a3 g#3 a3 g#3 a3 g#3 e3@8", BD: "c#2@6 ~ c#2 c#2@7 ~",
})).s("gm_fretless_bass").gain(0.54)

// other · alto sax
const alto_sax = note("<~@23 A B@2 C ~@15 A D@3 ~ E@5 ~@4 A B@2 C ~@18 F G ~@2 F G ~@2 F G ~@10>".pickRestart({
  A: "~@2 g5 a5", B: "[g5@2 d5 d5@21 e5@4 d5@4]/2", C: "b4@2 g4 g4@8 ~@5", D: "[g5@2 d5 d5@44 ~]/3",
  E: "[~@6 g5 a5 b5@2 g5 b5@2 g5 b5@4 b5@2 ~@2 e6!2 d6@2 e6 f#6@2 d6@2 b5@4 b5@2 ~ g5 a5 b5@2 g5 b5@2 g5 b5@4 b5@2 ~@2 e6!2 d6@2 e6 f#6@3 d6 d6@3 d6@2 ~@12]/5",
  F: "~@2 a5 b5", G: "a5@2 e5 e5@12 ~",
})).s("gm_alto_sax").gain(0.45).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A B C@2 A B C@2 D E C@2 D B F C G@2 E H I J@2 A B C@2 D E C K L B C K G@2 E H I M@2 A N A C O P O P Q R Q S C R A B
  T C A B C U V W X K Y W X K Z@2 W X K Y W X K Y W X K Y W X K Y AA AB H K AA AB ~
>`.pickRestart({
  A: "g4@11 ~ a4@4, [b3,d4]@15 ~", B: "f#4@11 ~ g4@4, [b3,d4]@15 ~", C: "[c4,e4,g4]", D: "[b3,d4,g4]", E: "[b3,d4,f#4]",
  F: "[c4,e4], g4 ~@15", G: "[g3,b3,e4]", H: "[a3,d4,f#4]", I: "[a3,c4,e4]", J: "[f#3,a3,d4]", K: "[d4,f#4,a4]",
  L: "[b3,d4,g4] [b3,e4,g4]", M: "[f#4,a4,d5]", N: "g4@3 a4, [c4,e4]@15 ~", O: "[g3,b3,d4]",
  P: "[g3,c4,e4] [a3,d4,f#4]", Q: "[b3,d4,g4] [a3,d4,f#4]", R: "[a3,c4,e4]@2 [c4,e4,g4] [d4,f#4,a4]",
  S: "[b3,e4,g4] [b3,d4,f#4]", T: "[g3,c4,e4]", U: "[g3,e4,g4]@2 ~ [g3,c4,e4,g4] ~@12, c4 ~@15",
  V: "[g3,c4,e4,g4]@2 ~ [g3,c4,e4,g4]@3 [a3,d4,f#4,a4]@2 ~@8", W: "[e4,a4,c#5]", X: "[e4,g#4,c#5]", Y: "[e4,g#4,b4]",
  Z: "[e4,g#4,b4]/2", AA: "a4@3 b4, [c#4,e4]", AB: "g#4@11 ~ a4@4, [c#4,e4]@15 ~",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B C D A B C D A B C E A B C F@2 G@6 A B C H A B C E I B C F@2 G@6 J K J L J M J N O P O Q R S T U V W X U K ~@34
>`.pickRestart({
  A: "[b3,d4,g4]!4 ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~@5", B: "[b3,d4,f#4]!4 ~ [b3,d4,f#4] ~ [b3,d4,f#4]!2 ~@7",
  C: "[g3,c4,e4]!4 ~ [g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4,e4] ~@5", // C
  D: "[c4,e4,g4]!4 ~ [c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  E: "[f#3,a3,d4]!4 ~ [f#3,a3,d4] ~ [f#3,a3,d4] d4 ~ e4 ~ g4 ~ a4 ~", // D
  F: "[[f#3,a3,d4]!4 ~ [f#3,a3,d4] ~ [f#3,a3,d4] d4 ~ e4 ~ g4 ~ a4 ~ [g3,b3,e4]@13 ~@3, ~@15 e3@13 ~@4]/2", // D Em
  G: "[[c3,e3,g3,c4]@14 ~@2 [d3,f#3,b3]@13 ~@3 [f#3,a3,d4]@11 ~@5 [e3,a3,c4]@14 ~@2 [f#3,a3,d4]@12 ~@4 [f#4,a4]@15 ~, ~@15 b2@13 ~@3 d3@12 ~@4 c3@14 ~@2 d3@12 ~@4 [a3,d4]@15 ~@2]/6", // C Bm D Am D F#m D5
  H: "[c4,e4,g4]!4 ~ [c4,e4,g4] ~ [c4,e4,g4] d4 ~ e4 ~ g4 ~ a4 ~", // C
  I: "[b3,d4,g4]!4 ~ [b3,d4,g4] ~ [b3,d4,g4] [b3,e4,g4] ~ [b3,e4,g4] ~@5", // G Em
  J: "[b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~@7", // G
  K: "[c4,e4,g4]@2 [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~@5", // C
  L: "[c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~@5", // C
  M: "[c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4] [d4,f#4,a4] ~@7", // C D
  N: "[c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4] [d4,f#4,a4] ~ [d4,f#4,a4] ~@5", // C D
  O: "[b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,d4,g4] [a3,d4,f#4] ~ [a3,d4,f#4] ~@5", // G D
  P: "[a3,c4,e4] ~ [a3,c4,e4]!2 ~ [a3,c4,e4] ~ [a3,c4,e4] [c4,e4,g4] ~@3 [d4,f#4,a4] ~@3", // Am C D
  Q: "[b3,e4,g4] ~ [b3,e4,g4]!2 ~ [e4,g4] b3 [b3,e4,g4] [b3,d4,f#4] ~ [b3,d4,f#4] ~@5", // Em Bm
  R: "[c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4]!2 ~@7", // C
  S: "[c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~@2 [c4,e4,g4] ~@3 [d4,f#4,a4] ~@3", // C D
  T: "[b3,d4,g4]@2 [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~@5", // G
  U: "[b3,d4,f#4] ~ [b3,d4,f#4]!2 ~ [b3,d4,f#4] ~ [b3,d4,f#4]!2 ~@7", // Bm
  V: "[g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4,e4] ~@5", // C
  W: "[c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~ [c4,e4,g4]!2 ~ [c4,e4,g4] ~@3 [c4,e4,g4] ~", // C
  X: "[b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] ~@5", // G
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.4)

// other · brass section
const brass_section = note("<~@64 A B C D E F C D E G F C D E F C D E F C D E F C D E F C D E H C D ~>".pickRestart({
  A: "[c4,e4,g4]@2 ~ [c4,e4,g4] ~@12", B: "[c4,e4,g4]@2 ~ [c4,e4,g4] ~@2 [d4,f#4,a4] ~@9",
  C: "a4!4 ~ a4 ~ a4!2 ~ a4 ~@5", D: "g#4!4 ~ g#4 ~ g#4!2 ~@7", E: "f#4!4 ~ f#4 ~ f#4!2 ~ f#4 ~@5",
  F: "e4!4 ~ e4 ~ e4!2 ~ f#4 ~ a4 ~ b4 ~", G: "e4!4 ~ e4 ~ e4!5 ~ e4 ~ e4", H: "e4!5 ~ e4 ~ e4 ~ f#4 ~ a4 ~ b4 ~",
})).s("gm_brass_section").gain(0.45).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@3 B A@3 B A B C D C B A C A@6 E B A B D C B C D C B C@3 A@5 F A@3 G H@5 A@3 B I A@2 C B A@2 C J K A B A D A B C@2
  E A B A D C B A C A B A D C B A C A@6 ~
>`.pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~@6 x!2 ~@2 x ~@4", C: "x!2", D: "x ~@7 x ~@6 x", E: "x", F: "x!2 ~@2", G: "x ~ x!2",
  H: "x!4", I: "x ~@6 x!2 ~@4 x ~@2", J: "x ~@2 x ~@2 x!2 ~@3 x ~@4", K: "x ~@2 x ~@2 x ~@5 x ~@3",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@23 A ~@18 B ~@8 C ~@12 D E ~@8 A ~@23>".pickRestart({
  A: "~@4 x ~@3 x ~@2 x ~@2 x ~", B: "~@2 x!3 ~@2 x", C: "~@10 x!5 ~", D: "~@15 x", E: "x ~@2 x ~@2 x ~@9",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C@2 A B C@2 D E@3 D E@3 D E@4 F G D E@3 D E@3 D E@3 D E@4 F G D@3 H I E@3 J K D E@2 L A B C@2 A B C ~@2 D E@3 D
  E@3 G D E@3 D E@3 D E@3 D E@3 D E@4 F ~
>`.pickRestart({
  A: "~@2 x!6", B: "x ~ x!6", C: "x!3 ~ x!3 ~", D: "~ x!7", E: "x!8", F: "x!5 ~ x!2", G: "x", H: "~ x!4 ~@3",
  I: "x!4 ~ x!3", J: "x!3 ~ x ~@3", K: "~ x!3 ~ x ~ x", L: "x!7 ~",
})).gain(0.43)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@18 B ~@4 C@4 D ~@4 E ~@17 A ~@23>".pickRestart({
  A: "~@3 x ~@3 x ~ x!2 ~ x!2 ~@2", B: "~@10 x ~ x!2 ~@2", C: "x!4", D: "x ~@3 x ~ x!2 ~@8", E: "~@5 x ~@2",
})).gain(0.57)

// drums · open hat
const open_hat = s("oh").struct("<A B@2 C@2 B@2 C@2 ~@13 D ~@18 D ~@15 B@2 C@2 B@2 C ~@32 D ~>".pickRestart({
  A: "~@3 x", B: "~ x ~@6", C: "~@3 x ~@3 x", D: "~@5 x ~@2",
})).gain(0.29)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@6 A ~@3 A ~@3 A ~@3 A ~@6 A@3 B C ~@4 D A ~@3 A ~@3 A ~@2 C E A ~@3 A ~@4 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@6
>`.pickRestart({
  A: "x", B: "x ~@2 x", C: "~ x", D: "x ~ x!2", E: "~@3 x",
})).gain(0.43)

stack(
  rock_organ, bass, alto_sax, string_ensemble_2, electric_guitar_clean, brass_section, kick, snare, low_tom, hihat,
  mid_tom, open_hat, crash
)

More by Pooh