Strudelify

Come Saremo

Pooh

KeyG majorTempo118 bpm
0:00/0:00
// Come Saremo — Pooh
// 118 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/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 · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@52 A B C D E C F G ~@5 F H I ~@30 A B C D E C F G ~@5 F H I A B C D ~@24
>`.pickRestart({
  A: "~@2 d3@2 [g3,b3]@4 g2@2 d3 ~ [g3,b3]@4, g2 ~@3", B: "~@2 b2@2 [e3,g3]@4 ~@2 b2@2 [e3,g3]@3 ~, e2 ~ e2 ~",
  C: "~ g3 [c4,e4]@2 ~ g3 [c4,e4]@2, c3 ~ c3 ~", D: "~@2 a3@2 [d4,f#4]@4 ~@2 a3@2 [d4,f#4]@3 ~, d3 ~ d3 ~",
  E: "~@2 b3@2 [e4,g4]@4 ~@2 b3@2 [e4,g4]@3 ~, e3 ~ e3 ~", F: "~ d3 [g3,b3]@2 ~ d3 [g3,b3]@2, g2 ~ g2 ~",
  G: "~ g3 [c4,e4]@2 ~ a3 [d4,f#4] ~, c3 ~ d3 ~", H: "~ b2 [e3,g3]@2 ~ b2 [e3,g3]@2, e2 ~ e2 ~",
  I: "~@2 g3@2 [c4,e4]@4 ~@2 a3@2 [d4,f#4]@3 ~, c3 ~ d3 ~", // C D
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// bass · fretless bass
const bass = note(`<
  A B C D E B F G B H I J K L M N O P Q J R S T U K V S K W X B H I J K L M N O P Y J R S T U K V S K Z AA AB AC AD AE
  AF AG AH AI AJ AK AL AM AN AO AP AQ A B C D E B F G B H I J K L M N O P Y J R S T U K V S K Z AA AB AC AD AE AF AG AH
  AI AJ AK AL AM AN AO AP AQ AB AC AD AR A B C D E B F G A B C D E B F G A B C D E B F G
>`.pickRestart({
  A: "g1@2 ~ g1 ~@2 g1@9 ~", B: "g1@2 ~ g1 ~@2 g1@8 ~@2", C: "g1@5 ~ g1@8 ~@2", D: "g1@2 ~ g1 ~@2 g1@4 g2 ~ g2!2 ~@2",
  E: "g1@5 ~ g1@10", F: "g1@3 ~@3 g1@4 ~@2 g2!2 ~@2", G: "g1@2 ~ g1 ~@2 g1@6 g2@2 ~@2", H: "g1 ~@2 g1@2 ~ g1@8 ~@2",
  I: "g1@2 ~ g1@2 ~ g1@8 ~@2", J: "e1@2 ~ e1@2 ~ e1@8 ~@2", K: "b1@2 ~ b1@2 ~ b1@8 ~@2", L: "c2@2 ~ c2@2 ~ c2@8 ~@2",
  M: "d2@2 ~ d2@2 ~ d2@4 ~@2 d2 a2 d3@2", N: "d2@2 ~ d2 ~@2 d2@4 d3 ~ d3 ~@3", O: "g1 ~@2 g1 ~@2 g1@8 ~@2",
  P: "g1@2 ~@4 g1@9 ~", Q: "g1@2 ~ g1@2 ~ g1@6 g2@3 ~", R: "b1@2 ~ b1@2 ~ b1@9 ~", S: "c2@2 ~ c2@2 ~ c2@9 ~",
  T: "d2@2 ~ d2@3 d2@6 d2 a2 d3 d2", U: "a1@2 ~ a1@2 ~ a1@7 ~ a1@2", V: "d2@3 d2@2 ~ d2@5 ~ d2 a2 d3 d2",
  W: "d2@2 ~ d2@3 d2@5 ~ d2 a2 ~ a2, ~@7 d3", X: "d2@2 ~ d2@3 d2@6 d3 a2 d2@2", Y: "g1@2 ~ g1@2 ~ g1@6 g2@4",
  Z: "d2@2 ~ d2@2 ~ d2@5 ~ d2 a2 d3 a2", AA: "d2@2 ~ d2@2 ~ d2@6 d2@3 ~", AB: "g1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~",
  AC: "e1 ~ e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1 ~", AD: "c2 ~ c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2 ~",
  AE: "d2 ~ d2@2 ~@2 d2@2 a2@2 d3@2 d2@3 ~", AF: "e2@2 e2@2 ~@2 e2@3 ~ e2@3 ~ e2@2",
  AG: "c2@2 c2@2 ~@2 c2@2 ~@2 c2@3 ~ c2 ~", AH: "g1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~ g1@2 ~",
  AI: "d2@2 d2@2 ~@2 d2@2 e3@2 d3@3 a2 ~@2", AJ: "e2", AK: "b1", AL: "c2", AM: "d2@8 a2@2 d3@3 ~ d3 a2", AN: "d2@15 ~",
  AO: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", AP: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  AQ: "c2 ~ c2 ~ c2 ~ c2 ~ d2 ~ d2 ~ d2 ~ d2 ~", AR: "a1 ~ a1@2 ~@2 a1@2 d2@2 d3@2 a2@3 ~",
})).s("gm_fretless_bass").gain(0.36)

// chords · harpsichord
const harpsichord = note("<~@52 A B C D B C A E ~@5 A B E ~@30 A B C D B C A E ~@5 A B E A B C F ~@24>".pickRestart({
  A: "[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~", // G
  B: "[b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~", // Em
  C: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  D: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // D
  E: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // C D
  F: "[c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // Am D
})).s("gm_harpsichord").gain(0.29).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A@2 B@2 A@2 C@2 A@2 C@2 D@2 E@2 A@2 C@2 D@2 F@2 G H I J I K L@2 M@2 N@2 O@2 P@2 M@2 Q@2 R@2 S T U V W X V Y U X Y U V
  Z Y AA U@2 X V Y Z A@2 B@2 A@2 C@2 L@2 M@2 N@2 O@2 P@2 M@2 Q@2 R@2 S T U V W X V Y U X Y U V Z Y AA U@2 X V Y Z V Y U
  AB A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2
>`.pickRestart({
  A: "[d3@14 e3@17 ~, g3@31 ~]/2", B: "[d3@7 e3@9, g3]/2", C: "[d3@14 e3@17 ~, g3]/2",
  D: "[[d3,f#3]@14 [e3,g3]@17 ~]/2", E: "[[e3,g3]@7 [f#3,a3]@9]/2", F: "[f#3@14 e3@17 ~, a3]/2", G: "[d3,g3]",
  H: "[c3,e3]@8 [d3,f#3]@7 ~", I: "[e3,g3]", J: "[d3,g3]@15 ~", K: "[f#3,a3]", L: "[[b3,d4,g4]@7 [c4,e4,g4]@9]/2",
  M: "[[b3,d4,g4]@14 [b3,e4,g4]@17 ~]/2", N: "[[b3,d4,f#4]@7 [c4,e4,g4]@9]/2", O: "[[c4,e4,g4]@14 [d4,f#4,a4]@17 ~]/2",
  P: "[[b3,d4,g4]@14 [c4,e4,g4]@17 ~]/2", Q: "[[b3,d4,f#4]@14 [c4,e4,g4]@17 ~]/2", R: "[[d4,f#4,a4]@7 [c4,e4,a4]@9]/2",
  S: "[b3,d4,g4]@15 ~", T: "[c4,e4,g4]@7 ~ [d4,f#4,a4]@8", U: "[c4,e4,g4]", V: "[b3,d4,g4]", W: "[c4,e4,g4]@15 ~",
  X: "[d4,f#4,a4]", Y: "[b3,e4,g4]", Z: "[c4,e4,g4] [d4,f#4,a4]", AA: "[b3,d4,f#4]", AB: "[c4,e4,a4] [d4,f#4,a4]",
})).s("gm_string_ensemble_1").gain(0.19)

// chords · brass section
const brass_section = note(`<
  A@10 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F G H F I@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F G H F J@2 ~@8 K L M@2 N ~@3 A@10 B@2
  C@2 D@2 A@2 B@2 C@2 E@2 F G H F J@2 ~@8 K L M@2 N ~@7 A@22 O ~
>`.pickRestart({
  A: "[[d3,g3,b3]@3 [d3,g3,b3]@3 [d3,g3,b3] [e3,g3,c4]@3 ~@6]/2", // G C
  B: "[[d3,g3,b3]@3 [d3,g3,b3]@3 [d3,g3,b3] [e3,g3,b3]@3 ~@6]/2", // G Em
  C: "[[d3,f#3,b3]@3 [d3,f#3,b3]@3 [d3,f#3,b3] [e3,g3,c4]@3 ~@6]/2", // Bm C
  D: "[[e3,g3,c4]@3 [e3,g3,c4]@3 [e3,g3,c4] [d3,f#3,a3]@3 ~@6]/2", // C D
  E: "[[d3,f#3,a3]@3 [d3,f#3,a3]@3 [d3,f#3,a3] [c3,e3,a3]@3 ~@6]/2", F: "[d3,g3,b3] ~@3",
  G: "[c3,e3,g3]@5 ~@3 [d3,f#3,a3]@4 ~@4", H: "[e3,g3,c4] ~@3",
  I: "[[e3,g3,c4]@5 ~ [e3,g3,c4]@6 [e3,g3,c4]@2 [d3,f#3,a3]@6 ~@12]/2", // C D
  J: "[[e3,g3,c4]@5 ~ [e3,g3,c4]@5 ~ [e3,g3] ~@11 [d4,f#4,a4]@8, ~@6 c4 [d3,f#3,a3]@9]/2", K: "[b3,e4,g4]",
  L: "[b3,d4,f#4]", M: "[c4,e4,g4]", N: "[d4,f#4,a4]", O: "[d3,g3,b3]@3 [d3,g3,b3]@3 [d3,g3,b3] ~",
})).s("gm_brass_section").gain(0.22)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A B A B A B A B C D E F G H I J C K E F G H I L M J H M J I C D E F G H I J C K E F G H I L M J H M J I N@3 O N@2 P Q
  ~@5 P N Q A B A B A B A B C D E F G H I J C K E F G H I L M J H M J I N@3 O N@2 P Q ~@5 P N Q N@3 R A B A B A B A B A
  B A B A B A B A B A B A B A S
>`.pickRestart({
  A: "g3@2 ~@4 g3 ~@3 g3 ~ g3 ~@3", B: "g3@2 ~@7 g3 ~ e3 g3!3 ~", C: "g3@2 ~ g3!2 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3!2",
  D: "g3@2 ~ g3!2 ~ g3 ~ g3!2 ~ e3 g3!3 ~", E: "g3@2 ~ g3!2 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~",
  F: "e3@2 ~ e3!2 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3!2", G: "b3@2 ~ b3!2 ~ b3 ~ b3!2 ~ b3!4 ~",
  H: "c4@2 ~ c4!2 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~", I: "d4@2 ~ d4!2 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~",
  J: "d4@2 ~ d4!2 ~ d4 ~ d4!2 ~ d4!4 ~", K: "g3@2 ~ g3!2 ~ g3 ~ g3!2 ~ g3!4 ~", L: "a3@2 ~ a3!2 ~ a3 ~ a3!2 ~ a3!4 ~",
  M: "b3@2 ~ b3!2 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3!2", N: "g3 ~ e3 ~ g3 ~ e3 ~ g3 ~ e3 ~ g3 ~ e3 ~",
  O: "f#3 ~ d3 ~ f#3 ~ d3 ~ f#3 ~ d3 ~ f#3 ~ d3 ~", P: "g3 ~ d3 ~ g3 ~ d3 ~ g3 ~ d3 ~ g3 ~ d3 ~",
  Q: "g3 ~ e3 ~ g3 ~ e3 ~ f#3 ~ d3 ~ f#3 ~ d3 ~", R: "e3 ~ c3 ~ e3 ~ c3 ~ f#3 ~ d3 ~ f#3 ~ d3 ~", S: "g3 ~@7",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.3)

// drums · kick
const kick = s("bd").struct("<A@52 B@8 A@4 C B@3 A@30 B@8 A@4 C B@7 A@24>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  ~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ C@12 D C@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ C@12 D C@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~", C: "~ x ~ x", D: "~ x ~@6",
})).gain(0.29)

// drums · low tom
const low_tom = s("lt").struct("<~@51 A ~@12 B ~@32 A ~@12 B ~@31>".pickRestart({
  A: "~@7 x", B: "~@6 x!2",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A B A B A B A B A@6 C B A B A B A B A B A@3 B A B A@6 C B A B A B A B A B A@2 C D E A@7 E A@3 ~ E A@3 B A B A B A
  B A B A@6 C B A B A B A B A B A@2 C D E A@7 E A@3 ~ E A@7 B A B A B A B A B A B A B A B A B A B A B A F
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", D: "x", E: "~ x!7", F: "x!6 ~@2",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@31 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B C ~@12 D ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B C ~@12 D ~@31
>`.pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@3 x!4 ~", D: "~@3 x ~ x ~@2",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@51 A ~@12 B ~@32 A ~@12 B ~@31>".pickRestart({
  A: "~ x!2 ~@5", B: "~ x ~@6",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@52 A ~@7 A ~@4 A ~@32 A ~@7 A ~@4 A ~@30>".pickRestart({
  A: "x",
})).gain(0.25)

stack(
  acoustic_guitar_steel, bass, harpsichord, string_ensemble_1, brass_section, overdriven_guitar, kick, snare, low_tom,
  hihat, mid_tom, high_tom, crash
)

More by Pooh