Strudelify
KeyE♭ majorTempo120 bpm
0:00/0:00
// dolce vita — Pier Luigi Giombini i Tom Mazzoliniarr. Jordi Hortal
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 15 "Guitarra elèctrica" named as a guitar, played on electric guitar clean (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5985633; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · electric guitar clean · "Guitarra elèctrica"
const electric_guitar_clean = note(`<
  ~ A@2 ~@6 B@2 ~@6 C ~@5 D ~ E@3 F@2 G@2 H@2 I@2 J@2 K@2 ~@7 L ~ M@2 ~@8 N@3 O@4 P@2 I@2 J@2 Q@2 R@3 ~ S@2 T@2 Q@2 R@3
  ~@4 L ~ M@2 ~
>`.pickRestart({
  A: "[~@5 eb7 eb6 eb5@2 ~@7]/2", B: "[~@6 [g3,g4]@4 [bb3,bb4]@2 [f3,f4]@2 [eb3,eb4]@9 ~@9]/2", C: "~@10 eb6 ~@5",
  D: "~@5 eb6@3",
  E: "[~@6 [g3,g4]@4 [bb3,bb4]@2 [f3,f4]@2 ~@4 c4 ~ c4 ~ c4 ~ c4@2 g3@2 ab3@2 bb3@4 bb3@2 ab3@2 g3@2 ~@8, ~@14 [eb3,eb4]@9 ~@25]/3", // G Bb F Eb
  F: "[~@2 c4 ~ c4 ~ c4 ~ c4@2 d4@4 bb3@6 ~@12]/2",
  G: "[~@2 c4 ~ c4 ~ c4 ~ c4@2 g3@2 ab3@2 bb3@4 bb3@2 ab3@2 g3@2 ~@8]/2",
  H: "[~@2 ab3 ~ ab3@2 g3@2 f3@4 eb3 ~ eb3@6 ~@12]/2", I: "[~@4 c4@4 d4@4 eb4 ~ [c4,ab4] ~@15 eb4 ~, ~@7 eb4@7 ~@2]/2",
  J: "[eb4@2 d4 ~ d4@2 c4 ~ c4@4 bb3 ~ bb3@10 ~@8]/2", K: "[~@2 c4@2 d4 eb4 ~ eb4@7 ~@2]/2", L: "~@4 eb5 ~@3",
  M: "[~@6 f4 g4@3 bb4@2 f4@2 eb4@9 ~@9]/2",
  N: "[~@6 [bb3,eb4,g4]@3 ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ c4@4 c4 ~ c4@2 bb3@2 ab3@2 g3@2 ab3@2 bb3@4 bb3@2 ab3@2 g3@2 ~@8, ~@14 [ab3,eb4]@9 ~@25]/3", // Eb Bbm Ab5
  O: "[~@2 c4 ~ c4 ~ c4@2 d4@4 d4@2 ~@4 eb6@2 eb5@2 ~@4 bb4@4 ~@4 c4 ~ c4 ~ c4 ~ c4@2 g3@2 ab3@2 bb3@4 bb3@2 ab3@2 g3@2 ~@8, ~@14 bb3@6 ~@2 eb5@21 ~@21, ~@30 eb4@13 ~@21]/4",
  P: "[~@2 ab3 ~ ab3@2 g3@2 f3@4 eb3 ~ eb3@4 ~@14]/2", Q: "[~@4 c4@4 d4@2 eb4@2 ~@2 eb4@14 ~@2 eb4 ~]/2",
  R: "[eb4@2 d4 ~ d4@2 c4 ~ c4@2 bb3@4 f4@4 f4 ~ f4 ~ f4 ~ f4@4 eb4 ~ eb4@6 ~@12]/3",
  S: "[~@4 c4@4 d4@4 eb4 ~ [c4,ab4] ~@15 g4 ~, ~@7 eb4@7 ~@2]/2", T: "[g4@2 f4 ~ f4@2 eb4 ~ eb4@4 d4 ~ d4@10 ~@8]/2",
})).s("gm_electric_guitar_clean").gain(0.4)

// other · synth brass 2 · "Cordes"
const synth_brass_2 = note("<~@33 A B@2 C@8 ~@23 A B@2 D@7 ~ E@3 F@7 ~@8>".pickRestart({
  A: "~@5 g6@2 f6@2 db6@2 ab5@5", B: "[~ c6 d6 eb6@5]/2",
  C: "[~ d6@5 c6@6 bb5@12 eb6@4 d6@3 c6@16 eb6@30 ~ db6@15 ~ c6@15 ~ g6@18]/8",
  D: "[~ d6@5 c6@4 ~@2 bb5@12 eb6@4 d6@3 c6@16 eb6@30 ~ db6@15 ~ c6@18]/7", E: "[~@15 eb6@29 d6@3 bb5]/3",
  F: "[~@8 g6@4 f6@3 eb6@16 eb6@30 ~ db6@15 ~ c6@17 g6@17]/7",
})).s("gm_synth_brass_2").gain(0.25)

// chords · synth brass 1 · "Sintetitzador metalls"
const synth_brass_1 = note(`<
  ~@13 A ~@3 B@2 ~@10 A ~@3 C ~@3 D ~ E@5 F@2 ~@5 G H ~@14 C I J K@3 L@6 J K@3 M@5 F@2 ~@6
>`.pickRestart({
  A: "~@2 eb6 ~@5 f6@4 ~@4", B: "[~ eb6 ~@2 eb6 ~ eb6@6 ~@4]/2", C: "~@4 f5 ~ ab4 ~", D: "~@10 [bb3,d4,f4] ~@5",
  E: "[~@6 [c4,eb4,ab4]@23 ~ [bb3,f4,ab4]@15 ~ [g3,ab3,c4]@15 ~ [bb3,f4,bb4]@18]/5", F: "[~@7 [bb4,eb5,g5]@7 ~@2]/2",
  G: "~@2 [eb4,g4,bb4,eb6] ~@3 [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,f4,ab4] ~ [eb4,f4,ab4] ~ [eb4,g4,bb4] ~, ~@2 f6 ~", // Eb Fm7 Eb
  H: "[eb4,ab4,c5]", I: "[g3,bb3,c4] ~ [g3,bb3,c4] ~@3 [g3,bb3,c4]@8 ~@2", J: "~@3 [c4,eb4,ab4]@4 ~",
  K: "[~@6 [bb3,d4,f4,ab4]@6 ~@2 [bb3,eb4,g4]@10 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [g3,bb3,c4]@10 ~@8]/3", // Bb7 Eb Bb C7
  L: "[~@22 d4@7 ~ [bb3,db4,f4,ab4]@15 ~ [ab3,c4,eb4,g4]@15 ~ [ab3,c4,eb4,g4]@8 [b3,d4,f4,ab4]@7 ~ [bb3,c4,eb4,g4]@6 ~@2 [g3,bb3,c4]@8 ~@2, ~@6 [c4,eb4,ab4]@23 ~@67]/6", // Bbm7 Abmaj7 Bdim Cm7 C7 Ab
  M: "[~@22 d4@7 ~ [bb3,db4,f4,ab4]@15 ~ [g3,ab3,c4]@15 ~ [bb3,f4,bb4]@18, ~@6 [c4,eb4,ab4]@23 ~@51]/5", // Bbm7 Abmaj7 Bb5 Ab
})).s("gm_synth_brass_1").gain(0.35)

// other · pad new age · "Sintetitzador Pad"
const pad_new_age = note("<~@10 A@2 ~@2 B@2 ~@28 A@2 C@2 D@2 E@2 ~@36 A@2 C@2 D@2 F ~>".pickRestart({
  A: "[~ ab8 ab7 ab6 d6 eb6 f6 g6@9]/2", B: "[~ ab7 ab6 ab5 d5 eb5 f5 g5@4 eb5@5]/2",
  C: "[~ ab8 ab7 ab6 d6 eb6 f6 eb6@9]/2", D: "[~ ab7 ab6 ab5 d5 eb5 f5 g5@5 ~@4]/2",
  E: "[~ ab7 ab6 ab5 d5 eb5 f5 eb5@5 ~@4]/2", F: "~ ab7 ab6 ab5 d5 eb5 f5 eb5",
})).s("gm_pad_new_age").gain(0.4)

// chords · electric guitar jazz · "Guitarra acústica"
const electric_guitar_jazz = note(`<
  ~@6 A B C D A B C D A B C D A B C D A B C D A B C D A B C E F G H I F G J K L M A B C D A B C D A B C D A B C D A N C
  D A B C E F G H I F G J K F O F G H I F G J K L M A B C D A B C ~
>`.pickRestart({
  A: "[c4,eb4,ab4] ~ [c4,eb4,ab4] ~ c4 ~ [c4,eb4,ab4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4] ~ [bb3,eb4,g4] ~", // Ab Bb Eb
  B: "bb3 ~ [bb3,eb4,g4] ~ bb3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,eb4] ~", // Eb Bbm Eb7
  C: "[c4,eb4,ab4] ~ [c4,eb4,ab4] ~ c4 ~ [c4,eb4,ab4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,f4,g4] ~", // Ab Bb Gm7
  D: "[bb3,f4] ~ [bb3,f4,g4] ~ bb3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,eb4] ~", // Bb5 Gm7 Eb Bbm Eb7
  E: "[db4,f4,g4] ~ [db4,f4,g4] ~ [db4,f4,g4] ~ [db4,f4,g4] ~ [db4,f4,g4] ~ [db4,f4,g4] ~ [db4,f4,g4] ~ [db4,f4,g4] ~", // Gm7b5
  F: "[c4,eb4,g4] ~ [c4,eb4,g4] ~@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ c4 ~ [c4,eb4,g4] ~", // Cm
  G: "[eb4,ab4] ~ [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab5 Ab
  H: "[d4,f4] ~ [d4,f4,ab4] ~@3 [d4,f4,ab4] ~ [d4,f4,ab4] ~ [d4,f4,ab4] ~@3 [d4,f4] ~", // Dm Ddim Dm
  I: "[bb3,eb4] ~ [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ bb3 ~ [g3,c4,eb4] ~", // Eb5 Eb Bb Cm
  J: "[d4,f4] ~ [d4,f4,ab4] ~@3 [d4,f4,ab4] ~ [d4,f4,ab4] ~ [d4,f4,ab4] ~@3 [db4,f4,ab4] ~", // Dm Ddim Db
  K: "[db4,f4,ab4] ~ [db4,f4,ab4] ~@3 [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ f4 ~ [db4,f4,ab4] ~", // Db
  L: "[c4,eb4,ab4] ~ [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ eb4 ~ [bb3,eb4,f4] ~", // Ab Bbsus4
  M: "[eb4,f4] ~ [bb3,eb4,f4] ~@3 [bb3,eb4,f4] ~ [bb3,eb4,f4] ~ [bb3,eb4,f4] ~@3 [bb3,eb4,f4] ~", // Ebsus2 Bbsus4
  N: "bb3 ~ [bb3,eb4,g4,eb6] ~ [bb3,eb5] ~ [bb3,eb4,g4,eb5] ~ [bb3,eb4,g4,eb6] ~ [bb3,db4,f4,eb5] ~ [bb3,db4,f4,eb5] ~ [bb3,db4,eb4,eb6] ~", // Eb Eb5 Eb Bbm Eb7
  O: "[c4,g4] ~ [c4,eb4,g4] ~@3 [d4,f4,ab4] ~ [d4,f4,ab4] ~ [d4,f4,ab4] ~@3 [c4,eb4,g4] ~", // C5 Cm Ddim Cm
})).s("gm_electric_guitar_jazz").gain(0.25)

// bass · synth bass 1 · "Sintetitzador baixos"
const bass = note(`<
  A B A C A B A C A B A C A B A D E@2 F G H I A J A K F G H I A J L@2 M N O P Q N R S T U A C A B A C A V F G H I A J A
  K F G H I A J L@2 M N O P Q N R S W X M N O P Q N R S T U A D A B A C A Y
>`.pickRestart({
  A: "[f1,f2] ~ [f1,f2] ~ [ab1,ab2] ~ [f1,f2] ~ [bb1,bb2] ~ [bb1,bb2] ~ [d2,d3] ~ [bb1,bb2] ~", // F Ab F Bb D Bb
  B: "[eb1,eb2] ~ [eb1,eb2] ~ [g1,g2] ~ [eb1,eb2] ~@3 [db1,db2]@3 ~@3", // Eb G Eb Db
  C: "[eb1,eb2] ~ [eb1,eb2] ~ [g1,g2] ~ [eb1,eb2] ~@9", // Eb G Eb
  D: "[eb1,eb2] ~ [eb1,eb2] ~ [g1,g2] ~ [eb1,eb2] ~@3 [g1,g2] ~ [eb1,eb2] ~ [e1,e2] ~", // Eb G Eb G Eb E
  E: "[[f1,f2] ~ [f1,f2] ~ [ab1,ab2] ~ [f1,f2] ~ [bb1,bb2] ~ [bb1,bb2] ~ [d2,d3] ~ [eb1,eb2]@6 ~@2 [eb1,eb2]@2 ~@2 [db1,db2] ~ [db1,db2]@2 ~@2]/2", // F Ab F Bb D Eb Db
  F: "[f1,f2] ~ [f1,f2]@2 ~@2 [f1,f2] ~ [bb1,bb2] ~ [bb1,bb2]@2 ~@2 [bb1,bb2] ~", // F Bb
  G: "[eb1,eb2] ~ [eb1,eb2]@2 ~@2 [eb1,eb2]@2 ~@2 [eb1,eb2] ~ [eb1,eb2] ~ [e1,e2] ~", // Eb E
  H: "[f1,f2] ~ [f1,f2] ~ [ab1,ab2] ~ [f1,f2] ~ [bb1,bb2] ~ [bb1,bb2]@2 ~@2 [bb1,bb2] ~", // F Ab F Bb
  I: "[eb1,eb2] ~ [eb1,eb2]@2 ~@2 [eb1,eb2] ~ [eb1,eb2] ~ [db1,db2] ~ [db1,db2]@2 ~@2", // Eb Db
  J: "[eb1,eb2] ~ [eb1,eb2] ~ [g1,g2] ~ [eb1,eb2]@2 ~@4 [eb1,eb2] ~ [e1,e2] ~", // Eb G Eb E
  K: "[eb1,eb2] ~ [eb1,eb2]@2 ~@2 [eb1,eb2]@3 ~ [db1,db2] ~ [db1,db2]@4", // Eb Db
  L: "[[f1,f2] ~ [f1,f2] ~ [ab1,ab2] ~ [f1,f2] ~ [bb1,bb2] ~ [bb1,bb2] ~ [d2,d3] ~ [db2,db3]@8 [db2,db3]@3 ~ [db2,db3] ~ [db2,db3]@4]/2", // F Ab F Bb D Db
  M: "[c1,c2] ~ [c1,c2]@2 ~@2 [c1,c2] ~ [c1,c2] ~ [c1,c2] ~ [d1,d2] ~ [eb1,eb2] ~", // C D Eb
  N: "[f1,f2] ~ [f1,f2] ~ [ab1,ab2] ~ [f1,f2] ~ [f1,f2] ~ [f1,f2] ~ [ab1,ab2] ~ [f1,f2] ~", // F Ab F Ab F
  O: "[bb1,bb2] ~ [bb1,bb2] ~ [d2,d3] ~ [bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2] ~ [d2,d3] ~ [bb1,bb2] ~", // Bb D Bb D Bb
  P: "[eb1,eb2] ~ [eb1,eb2] ~ [eb2,eb3] ~ [eb1,eb2] ~ [d1,d2] ~ [d1,d2] ~ [d2,d3] ~ [d1,d2] ~", // Eb D
  Q: "[c1,c2] ~ [c1,c2] ~ [c2,c3] ~ [c1,c2] ~ [c1,c2] ~ [c1,c2] ~ [d1,d2] ~ [eb1,eb2] ~", // C D Eb
  R: "[bb1,bb2] ~ [bb1,bb2] ~ [d2,d3] ~ [bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2]@2 ~@2 [eb1,eb2]@2", // Bb D Bb Eb
  S: "~@2 [eb1,eb2] ~ [eb1,eb2] ~ [eb2,eb3] ~ [eb1,eb2] ~ [eb1,eb2]@2 ~@2 [eb1,eb2] ~", // Eb
  T: "[ab1,ab2] ~ [ab1,ab2]@2 ~@2 [ab1,ab2]@2 ~@2 [ab1,ab2] ~ [ab1,ab2]@2 ~@2", // Ab
  U: "[bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2]@4 [bb0,bb1]@4 ~@4", V: "[eb1,eb2] ~@2 [db1,db2]@3 [db1,db2] ~",
  W: "[ab1,ab2] ~ [ab1,ab2]@2 ~@2 [ab1,ab2] ~ [ab1,ab2] ~ [ab1,ab2]@2 ~@2 [ab1,ab2] ~", // Ab
  X: "[bb0,bb1] ~ [bb0,bb1]@2 ~@2 [bb0,bb1] ~ [b0,b1] ~ [b0,b1]@2 ~@2 [b0,b1] ~", Y: "[eb1,eb2] ~@7",
})).s("gm_synth_bass_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@2 A@7 B A@15 B A@25 B A@43 ~>".pickRestart({
  A: "x!2", B: "x ~ x!2",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@2 [~ x ~ x]!93 ~>").gain(0.3)

// drums · clap
const clap = s("cp").struct("<~ A B@7 C B@15 C B@25 C B@43 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~ x ~@2 x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@34 [x!8]!10 ~@34 [x!8]!9 [x!7 ~] ~@8>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~ A ~@7 B ~@7 A ~@7 B ~@7 A ~@17 B ~@15 A ~@19 A ~@8>".pickRestart({
  A: "~@3 x", B: "~@4 x ~@2 x",
})).gain(0.3)

stack(
  electric_guitar_clean, synth_brass_2, synth_brass_1, pad_new_age, electric_guitar_jazz, bass, kick, snare, clap,
  hihat, crash
)