Strudelify

Stella stai

Tozzi

KeyB♭ majorTempo131 bpm
0:00/0:00
// Stella stai — Tozzi
// 131 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27, guitar program 28, guitar program 27.
setcpm(131/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.

// bass · electric bass finger
const bass = note(`<
  ~ A B A B A B A@6 C D A@2 C@2 E D A@4 C D A@2 C@2 E D A@4 C D A@2 C@2 E D A@2 F G C H A I J K L M N F O@3 P Q@2 R@2
  Q@2 R@2 A@6 C D A@2 C@2 E D A@4 C D A@2 C@2 E D A@2 F G C H A I J K L S N F O@3 P Q@2 R@2 Q@2 R@2 I L A L I L A L I L
  A L I L A L T ~
>`.pickRestart({
  A: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", B: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ f2 ~ f2 ~ f2 ~ f2 ~",
  C: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", D: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ eb1 ~ eb1 ~",
  E: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~", F: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  G: "g1 ~ g1 ~ a1 ~ a1 ~ bb1 ~ bb1 ~ g1 ~ g1@2", H: "f1 ~ f1 ~ f1 ~ f1 ~ f2@4 eb2@4",
  I: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2", J: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  K: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", L: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2@2",
  M: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2", N: "eb2 ~ eb2 ~ eb2 ~ eb2@2 d2 ~ d2 ~ d2 ~ d2@2",
  O: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ e1@2", P: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2", Q: "[bb1@27 ~ bb1@4]/2",
  R: "[eb2@27 ~ f2@4]/2", S: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", T: "bb1@2 bb1 ~@13",
})).s("gm_electric_bass_finger").gain(0.37)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~ A B A B A B C D C D C D E F C D G H I J C D C D E F C D G H I J C D C D E F C D G H I J C D K@2 L@2 M@2 N O P@2 Q R
  S ~@3 T@2 U@2 T@2 V W C D C D C D E F C D G H I J C D C D E F C D G H I J C D K@2 L@2 M@2 N O P@2 Q R S ~@3 T@2 U@2
  T@2 V W X Y X Y X Y X Y X Y X Y X Y X Y Z ~
>`.pickRestart({
  A: "bb3@2 c4 bb3 d4 f4 d4 bb3", B: "eb4@2 g4@2 eb4@2 [d4,f4]@4 [c4,f4]@5 ~",
  C: "[f2,bb2,f3] ~ [f2,bb2,f3] ~ bb3@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~ bb3@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~", // Bb5
  D: "bb3@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~ bb3@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~ bb3@4", // Bb5
  E: "[f2,c3,f3] ~ [f2,c3,f3] ~ f3@2 [f2,c3,f3] ~ [f2,c3,f3] ~ f3@2 [f2,c3,f3] ~ [f2,c3,f3] ~", // F5
  F: "f3@2 [f2,c3,f3] ~ [f2,c3,f3] ~ f2@2 [c3,f3]@3 ~ [bb2,eb3]@4", // F5 Eb5
  G: "[c2,f2,c3] ~ [c2,f2,c3] ~ f3@2 [c2,f2,c3] ~ [c2,f2,c3] ~ f3@2 [c2,f2,c3] ~ [c2,f2,c3] ~", // F5
  H: "f3@2 [c2,f2,c3] ~ [c2,f2,c3] ~ f3@2 [c2,f2,c3] ~ [c2,f2,c3] ~ f3@4", // F5
  I: "[eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~ eb3@2 [eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~ eb3@2 [eb2,bb2,eb3] ~ eb3@2", // Eb5
  J: "[f2,c3,f3] ~ [f2,c3,f3] ~ f3@2 f2@2 [c3,f3]@3 ~ [bb2,eb3]@4", K: "[[bb3,d4,g4]@26 ~@2 [bb3,d4,g4]@2 bb3 ~]/2",
  L: "[[a3,c4,f4]@21 ~ a3 ~ [a3,c4,f4]@2 a3 ~ [g3,bb3,eb4]@3 ~]/2", M: "[[f3,bb3,d4]@15 ~]/2", N: "[a3,c4,e4]@15 ~",
  O: "[a3,d4,gb4]", P: "[~ bb3 eb4 f4 bb4 f4 eb4 bb3@2 c4 f4 g4 c5 g4 f4 c4]/2", Q: "eb3 bb3 eb4 eb3 d3 a3 d4 d3",
  R: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3]@2 [g2,d3,g3] ~ [g2,d3,g3]@2 [g2,d3]@2 [d3,g3] ~, ~@12 g3 ~@3", // G5
  S: "[f2,c3,f3,f4] ~ [f2,c3,f3,f4]@4 ~@2", T: "[[bb2,f3,bb3]@27 ~ [bb2,f3,bb3]@4]/2",
  U: "[[eb3,bb3,eb4]@23 ~ [eb3,bb3,eb4]@4 [f3,c4,f4]@4]/2", V: "[eb3,bb3,eb4]",
  W: "~ [bb4,d5]@2 [bb4,d5]@2 [bb4,d5]@2 [bb4,d5]", // Bb
  X: "[f2,bb2,f3] ~ [f2,bb2,f3] ~ [bb2,f3,bb3]@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~ [bb2,f3,bb3]@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~", // Bb5
  Y: "[bb2,eb3,bb3]@2 [f2,bb2,f3] ~ [f2,bb2,f3] ~ [bb2,eb3,bb3] ~ [f2,bb2,f3] ~ [f2,bb2,eb3,f3,bb3] ~ bb2 ~ [bb2,eb3,bb3] ~", // Eb5 Bb5 Eb5 Bb5 Ebsus2 Eb5
  Z: "[bb2,f3,bb3] ~ [bb2,f3,bb3] ~@13", // Bb5
})).s("gm_distortion_guitar").gain(0.31)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@2 A@7 ~@132>".pickRestart({
  A: "[~@15 [c4,f4]@29 ~@3 [c4,f4]@29 ~@3 [c4,f4]@29 ~@4, ~@7 bb4@15 ~ bb4@15 ~ bb4@15 ~@2]/7", // F5
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.4)

// chords · piano
const piano = note(`<
  ~@20 A B ~@8 C D@2 E@2 ~@7 C D@2 B ~ F@4 G@4 ~@8 H I H I H I H J@2 ~@10 C D@2 E@2 ~@7 C D@2 B ~ F@4 G@4 ~@8 H I H I H
  I H J@2 K L K L K L K L K L K L K L K L ~
>`.pickRestart({
  A: "~@2 c4@2 eb4@2 f4@2 g4@2 f4@2 eb4@2 f4 eb4", B: "d4", C: "~@2 c4@2 g4@8 f4@2 g4 f4",
  D: "[eb4@10 g4@2 f4@6 c4@2 eb4@2 f4@2 g4@2 f4@2 eb4@2 f4 eb4]/2", E: "[d4@3 eb4 f4@16 ~@12]/2",
  F: "[~ d3 g3 a3 bb3 a3 g3 d3@2 g3 a3 bb3 a3 g3 f3 c3@7 f3 c3@8 ~]/4",
  G: "[~ f3 bb3 c4 d4 c4 bb3 f3@2 bb3 c4 d4 c4 bb3 c4 g3@7 d4 a3@8 ~]/4", H: "[bb4,d5] [a4,c5] [g4,bb4] [f4,a4]",
  I: "[eb4,g4] [d4,f4] [c4,eb4] [bb3,d4]", J: "[[eb4,g4] [d4,f4] [c4,eb4] [bb3,d4]@4 ~]/2",
  K: "~@4 [c5,eb5]@2 [d5,f5]@2 [eb5,g5]@2 [d5,f5]@2 [c5,eb5]@2 [d5,f5] [c5,eb5]", L: "[bb4,d5]",
})).s("gm_piano").gain(0.05)

// other · lead 1 square
const lead_1_square = note("<~@63 A@8 ~@44 A@24 B@2>".pickRestart({
  A: "[f6@6 d6 f6@7 d6 f6@7 d6 g6@3 f6@2 d6@2 bb5@2]/2", B: "[f6@6 d6 f6@7 d6 f6@7 d6 f6@7 d6 ~]/2",
})).s("gm_lead_1_square").gain(0.18).pan(0.6)

// other · lead 1 square
const lead_1_square_2 = note("<~@63 A@8 ~@44 A@24 ~@2>".pickRestart({
  A: "[f4@6 d4 f4@7 d4 f4@7 d4 g4@3 f4@2 d4@2 bb3@2]/2",
})).s("gm_lead_1_square").gain(0.37)

// chords · cello
const cello = note("<~@47 A B C D E@2 F G H I J A ~@40 A B C D E@2 F G H I J A ~@30>".pickRestart({
  A: "[g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~", // G5
  B: "[g2,d3] ~ [g2,d3] ~ [a2,d3] ~ [a2,d3] ~ [bb2,d3] ~ [bb2,d3] ~ [g2,d3] ~ [g2,d3] ~", // G5 D5 Bb G5
  C: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  D: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [eb2,bb2] ~ [eb2,bb2] ~", // F5 Eb5
  E: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", // Bb5
  F: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A5
  G: "[a2,d3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~", // D5
  H: "[bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~", // Eb5
  I: "[c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // F5
  J: "[bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [bb2,eb3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3] ~", // Eb5 D5
})).s("gm_cello").gain(0.29).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@33 B A@17 C A@3 C D A@10 E A@17 B A@17 C A@3 C D A@10 E A@7 E A@7 E A@2 F ~
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x ~ x ~ x ~ x!2", D: "x ~ x!3 ~ x!2", E: "x ~ x ~ x!4", F: "x!2 ~@6",
})).gain(0.71)

// drums · clap
const clap = s("cp").struct("<~@59 [~ x ~ x]!4 ~@48 [~ x ~ x]!4 ~@26>").gain(0.64)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@50 A ~@13 A ~ A ~@3 B ~@27 A ~@3 A ~@13 A ~ A ~@3 B ~ A ~ A ~@3 B ~ A ~ A ~@3 B ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2",
})).gain(0.43)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@10 A ~@23 B ~@23 C D@3 E ~@7 C ~@3 A ~@11 B ~@23 C D@3 E ~@7 C ~@7 C ~@7 C ~@2
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2", D: "x!8", E: "x!7 ~",
})).gain(0.29)

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@3 B ~ A ~ C ~@3 A ~ A ~@9 A ~ A ~@5 D ~@3 A ~ A ~@9 B ~ A ~ A ~ A ~ E ~@5 A ~ A ~ A ~ F ~ A ~ C ~@3 A ~ A ~@5
  D ~@3 A ~ A ~@9 B ~ A ~ A ~ A ~ E ~@5 A ~ A ~ A ~ F ~ A ~ A ~ A ~ F ~ A ~ A ~ A ~ F ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~ x", D: "~@6 x!3 ~@7", E: "~ x!3", F: "~ x ~@6",
})).gain(0.36)

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

// drums · cowbell
const cowbell = s("cb").struct("<~@35 [x!4]!12 ~@24 [x!4]!28 ~@42>").gain(0.5)

stack(
  bass, distortion_guitar, electric_guitar_clean, piano, lead_1_square, lead_1_square_2, cello, kick, clap, snare,
  snare_soft, low_tom, hihat, mid_tom, open_hat, crash, cowbell
)

More by Tozzi