Strudelify

E non mi dire che ho bevuto

Nek

KeyD minorTempo123 bpm
0:00/0:00
// E non mi dire che ho bevuto — Nek
// 123 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 4 "Piano" named as a piano, played on piano (its glockenspiel patch is not one)
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(123/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 · piano · "2°Voce"
const piano = note("<~@40 A B C D@3 ~@32 E B F G@4 ~@17 A H@2 I@2 ~@8>".pickRestart({
  A: "~@6 a5!2", B: "a5@2 g5@3 ~ g5@8 ~@2", C: "~@6 g5!2", D: "[g5@2 f5@3 ~ f5@6 ~@2 e5@8 ~@4 f5@2 e5@2 d5@8 ~@10]/3",
  E: "~@5 a5!3", F: "~@5 g5!3", G: "[g5@2 f5@3 ~ f5@6 ~@2 e5@8 ~@4 a5@35 ~@3]/4",
  H: "[a5@2 g5@3 ~ g5@20 ~@2 g5@2 g5@2]/2", I: "[g5@2 f5@3 ~ f5@6 ~@2 e5@15 ~@3]/2",
})).s("gm_piano").gain(0.36)

// other · piano
const piano_2 = note("<~@63 A B A B C D A E C D A B C F A G H@2 ~@2 I J@4 K L M ~@24>".pickRestart({
  A: "bb4@13 ~@3", B: "c5@13 ~@3", C: "d4@13 ~@3", D: "a4@13 ~@3", E: "f4@13 ~@3", F: "[a3,bb4]@13 ~@3",
  G: "[f4,c5]@13 ~@3", H: "eb5@13 ~@3", I: "d6 a5 c6 g5 a5 f5 g5 e5",
  J: "[f5@2 d5@2 e5@2 a4@4 c5@2 d5@2 g4@4 a4@2 f4@2 g4@2 e4@3 ~ f4@2 d4@4 a4@3 ~ e4@3 ~ c5@3 ~ f4@4 d5@12 ~@2]/4",
  K: "a4 d5 d5@3 ~ [g4,e5]@5 ~ [e4,c5]@3 ~, ~ [a4,f5]@4 ~@11", // C Dm
  L: "~ [c4,d4,a4] c4!2 [c4,d4] c4!2 [c4,d4,a4], ~@2 [d4,a4]@2 a4@3 ~, ~@5 d4@2 ~", M: "[c4,e4,g4,c5]@13 ~@3",
})).s("gm_piano").gain(0.39)

// bass · acoustic bass · "Basso"
const bass = note(`<
  ~@3 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 D E D F G H I J K L M N O P D Q R S T U A@2 B C A@2 B C A@2 B C A@2 B
  C A@2 D V W V X Y Z Q AA AB AC AD AE AF W AG AH AI AJ AK AL@2 B C A@2 AM AN AO AP AQ AR AS AT D AU AV AW AX AY AZ BA D
  BB BC C BC C BC C ~@2
>`.pickRestart({
  A: "[d2!2 f2 d2 a1!2 c2 g1@2 g1 bb1 g1 a1!2 c2 a1]/2", B: "d2!2 f2 d2 a1!2 c2 g1", C: "g1!2 bb1 g1 a1!2 c2 a1",
  D: "bb1!8", E: "[c1,c2]!3 [c1,e2]!2 [c1,f2] [c1,e2] [c1,c2]", F: "c2!8", G: "d1!2 f1 d1!2 d2!3",
  H: "a1!2 c2 a1 a0 a1 c2!2", I: "bb1!4 c1 bb0 bb1!2", J: "f1!3 a1 f1!4", K: "d1!2 f1 d1!5",
  L: "a0 c1 a1 c1 [a0,a1]!3 [a0,a2]", M: "bb1!7 c2", N: "c2!4 db2!3 [a1,db2]", O: "d1!2 f1 a1 d1 c2 a1 d1",
  P: "[a0,a1]!2 [a0,c2] [a0,a1] [a0,c2]!2 [a0,e2] [a0,c2]", Q: "f2!8", R: "eb2@3 ~@3 eb2@2 eb2@3 ~ eb2@3 ~",
  S: "eb2@2 eb2@2 eb2@2 eb2@2 eb2@3 ~ eb2@2 eb2@2", T: "d1!3 d2 d1@3 ~", U: "c1!3 e1 g1 c2!2 c1", V: "c3!8", W: "bb2!8",
  X: "d2!2 f2 d2 f2!2 d2 f2", Y: "a1!4 c2 bb1 a1!2", Z: "bb1!7 bb2", AA: "d2!3 f2 a2 d3 d2 d3",
  AB: "a1!2 a2 a1 c2 e2 a2 a1", AC: "bb2!2 bb1 d2 f2 bb2 bb1 bb2", AD: "c2!2 e2 g2 db3 e3 a2 db2", AE: "d2!6 f2 d2",
  AF: "a1!2 c2 a1!4 c2", AG: "c3 c2!6 c3", AH: "[eb2,eb3] eb3 [eb2,eb3] eb3 [eb2,eb3] eb3 [eb2,eb3] eb3",
  AI: "[eb2,eb3] [g2,eb3] [bb2,eb3] [eb2,eb3]!2 eb3 [eb2,eb3]!2", AJ: "d2!2 f2 d2 d3!3 f3", AK: "c3 e3 c2 e2 c3 c2!3",
  AL: "[d3 d2 f2 d2 a1!2 c2 g1@2 g1 bb1 g1 a1!2 c2 a1]/2", AM: "bb1!3 bb0 bb1 bb0 f1 bb1",
  AN: "c2@3 ~ c2@2 c2@2 c2@2 c2@2 c2@2 c2@2", AO: "d2 d1 f2 d2 d1 f1 d2 f1", AP: "a1!2 c1 e1 a1 c2 a1 a2",
  AQ: "bb1!4 d2 f2 bb1 bb0", AR: "[f1,f2]!8", AS: "[d1,f1] d2!2 [f1,d2] a1 d2 d1 d2", AT: "a1!7 bb1",
  AU: "c2!4 db2!3 a2", AV: "d2!2 f2 d2 f1 a1 d2 a1", AW: "a1!8", AX: "bb1!7 d2", AY: "c2 c1 f1 a1 c2 f2 a2 f2",
  AZ: "g2!8", BA: "g2 g1 g2 g1 g2!2 g1 g2", BB: "c2!6 e1 c2", BC: "d2!2 f2 d2 a1!2 c2 a1",
})).s("gm_acoustic_bass").gain(0.32)

// chords · electric guitar clean · "Chitarra1"
const electric_guitar_clean = note(`<
  ~ A@2 ~@4 B ~ C@2 ~@18 D E F G D E F H D E F G I@2 D J D ~ K@2 L M L M L M L M L M L M L M N O N P Q R S T U V W X Y Z
  AA AB AC AD AE AF ~@8 AG V AH AI AG AJ AH AK AG V AL T AM AN AO AF AP AQ AR AQ AS AT AU@2
>`.pickRestart({
  A: "[g4@29 ~@3]/2", B: "d5 f4@7 ~@8, ~ a4 ~@14", C: "[d5@5 ~ c5@3 ~ e5@3 ~ a5@15 ~@3]/2", D: "d4@13 ~@3",
  E: "a3@13 ~@3", F: "bb3@13 ~@3", G: "f4@13 ~@3", H: "c4@3 ~ db4@3 ~", I: "[eb4@29 ~@3]/2", J: "c4@13 ~@3",
  K: "[a4@5 ~ a5@3 ~ e5@3 ~ c5@7 ~ [f4,a4,d5]@8 ~@2]/2", L: "[d3,d4]!2 [f3,f4] [d3,e4] [a2,a3]!2 [c3,c4] [a2,g3]",
  M: "[g2,g3]!2 [bb2,bb3] [g2,g3] [a2,a3]!2 [c3,c4] [a2,a3]", N: "[bb2,d3,bb3,d4]!8", O: "[c3,e3,c4,e4]!7 ~",
  P: "[c3,e3,c4,e4]!8", Q: "[d3,f3,a3,d4,f4,a4]@13 ~@3", R: "[a2,c3,e3,a3,c4,e4]@13 ~@3",
  S: "[bb2,d3,f3,bb3,d4,f4]@13 ~@3", T: "[f3,a3]@13 ~@3", U: "[d3,f3,a3,e4]@13 ~@3", V: "[a2,c3,a3]@13 ~@3",
  W: "[bb2,d3,f3,bb3,d4]@13 ~@3", X: "[c3,e3,g3,c4]@3 ~ [a2,db3,e3,a3,db4,e4,a4]@3 ~", Y: "[d3,f3,a3,d4,f4]@13 ~@3",
  Z: "[c3,a3,c4,e4]@13 ~@3", AA: "[bb2,d3,f3,bb3,f4]@13 ~@3", AB: "[f3,a3,f4]@13 ~@3", AC: "[eb3,g3,bb3,eb4]@13 ~@3",
  AD: "eb3@13 ~@3", AE: "[d3,f3,bb3]@13 ~@3", AF: "[c3,e3,g3,c4]@13 ~@3", AG: "[d3,f3,a3]@13 ~@3",
  AH: "[bb2,f3,bb3]@13 ~@3", AI: "[c3,f3,a3]@13 ~@3", AJ: "[c3,e3,a3]@13 ~@3",
  AK: "[c3,e3,g3]@3 ~ [c3,db3,e3,a3,c4,db4]@3 ~", AL: "[f3,bb3]@13 ~@3", AM: "g4 b3 d4 ~ g4 ~ b3 d4, g3",
  AN: "[d3,g3]!2 [g3,b3] [d3,g3] [g3,b3] [d3,g3,b3] [g3,b3] [d3,g3,b3]", // G5 G G5 G
  AO: "[bb2,bb3,d4] [bb3,d4] [bb2,bb3,d4] [bb3,d4]!2 [bb2,bb3,d4] [bb3,d4] [c3,bb3,d4]", // Bb Gm
  AP: "d3@2 d3@2 d4@2 f4@2 d4@2 a4@5 ~", AQ: "[g3,bb3]@3 ~ [a3,c4]@3 ~", AR: "[d3,d4]@3 ~ [a3,c4]@3 ~",
  AS: "d3@2 ~ f3@2 a3@2 ~ c4@2 ~ e4@2 a4@2 ~", AT: "g3@2 ~ bb3@2 d4@2 ~ c4@2 ~ e4@2 a4@2 ~",
  AU: "[d3 f3 [d3,f3]@27 ~@3, ~ a3@27 ~@4]/2", // Dm
})).s("gm_electric_guitar_clean").gain(0.48)

// chords · acoustic guitar nylon · "Chitarra2"
const acoustic_guitar_nylon = note(`<
  ~@29 A B C D A B C E A B@2 D F G H I H J@2 ~ K L K L K L K L K L K L K L M N O P ~@48
>`.pickRestart({
  A: "~@2 d4@5 ~", B: "~@2 a3@5 ~", C: "~@2 bb3@5 ~", D: "~@2 f4@5 ~", E: "c4@3 ~ c4@3 ~", F: "~@2 eb4@5 ~",
  G: "eb4@13 ~@3", H: "d4@5 ~@3", I: "c4@5 ~@3", J: "d4@13 ~@3", K: "[d4,f4,a4]@3 ~ [c4,e4,a4]@3 ~",
  L: "[bb3,d4,g4]@3 ~ [a3,c4,e4]@3 ~", M: "bb3 d4 f4 bb4 d5 f5 a5 bb4", N: "c4 e4 g4 c5 e5 g5 c6 c5",
  O: "[bb3,d4,bb4,d5]!8", P: "c4 e4 g4 c5!5",
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// other · acoustic guitar steel · "Chitarra3"
const acoustic_guitar_steel = note("<~@29 A ~@19 B C D E F G H I J K L M N C O P O Q ~@48>".pickRestart({
  A: "d4 f4 ~@2 [d4,f4]@10 ~@2, ~@3 a4@11 ~@2", B: "d4!4 a3!4", C: "g4!4 a4!4", D: "d4 f4 a4 d4 a3 c4 e4 c4",
  E: "g4 bb3 bb4 g4 a4!2 c5 e5", F: "d5!2 f5 d5 a4!2 c5 a4", G: "g4!3 bb4 a4!4", H: "d4 d5 f5 d5 a3 a5 g5 a5",
  I: "f5 g5!3 a5!3 a4", J: "d4!2 f4 d5 a5!2 c5 a3", K: "d4!4 a4!2 c5 a4", L: "d5!2 f5 a5 a4!2 c5 e5",
  M: "g4!2 bb4 d5 a4!2 c5 e5", N: "d5!4 a4!4", O: "bb4!8", P: "[c4,c5]!8", Q: "c5!8",
})).s("gm_acoustic_guitar_steel").gain(0.38)

// other · bandoneon · "Organo"
const bandoneon = note(`<
  ~@3 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 F G H I J G K L M G H E N O ~ P Q A B A B A B A B A B A B A B A
  B A B R Q R Q S T U V S W U W S X Y Z AA ~@3 A B A B A B ~@26
>`.pickRestart({
  A: "d5@3 ~ a5@3 ~", B: "g5@3 ~ a5@3 ~", C: "[bb4,c6]@13 ~@3", D: "[c4,c5]@13 ~@3", E: "[bb3,bb4]@13 ~@3",
  F: "c5@13 ~@3", G: "[d4,d5]@13 ~@3", H: "[a3,a4,a5]@13 ~@3", I: "[bb3,bb4,c6]@13 ~@3", J: "[f4,f5]@13 ~@3",
  K: "[a4,bb5]@13 ~@3", L: "bb4@13 ~@3", M: "c4@3 ~ db5@3 ~", N: "f4@13 ~@3", O: "[eb4,eb5]@13 ~@3", P: "d4@13 ~@3",
  Q: "c4@13 ~@3", R: "bb3@13 ~@3", S: "[d4,f4,a4]@13 ~@3", T: "[a3,c4,e4]@13 ~@3", U: "[bb3,d4,f4]@13 ~@3",
  V: "[f4,a4]@13 ~@3", W: "[c4,e4,g4]@13 ~@3", X: "[c4,d4,f4]@13 ~@3", Y: "g4@13 ~@3", Z: "a4@13 ~@3", AA: "eb5@13 ~@3",
})).s("gm_bandoneon").gain(0.13)

// drums · kick
const kick = s("bd").struct("<~ A@47 B A@17 B A@15 B A@7 B A@16 B A@5 ~@2>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@48 A B@17 A B@15 A ~@7 A B@16 A ~@7>".pickRestart({
  A: "~@5 x ~ x", B: "x!8",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@48 A ~@17 A ~@15 A ~@7 A ~@16 A ~@7>".pickRestart({
  A: "~@4 x ~ x!2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~ A@47 B A@17 B A@15 B A@7 B A@16 B A@5 ~@2>".pickRestart({
  A: "x!8", B: "x!4 ~@4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@49 [~ x ~ x]!17 ~ [~ x ~ x]!15 ~@9 [~ x ~ x]!16 ~@8>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<A ~@47 B ~@17 B ~@15 B ~@7 B ~@16 B ~@7>".pickRestart({
  A: "~@5 x!2 ~", B: "~@7 x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@25 A ~@22 B C@17 B C@15 B ~@7 B C@16 B ~@7>".pickRestart({
  A: "x", B: "~@5 x ~ x", C: "~ x ~ x",
})).gain(0.48)

// drums · china
const china = s("cr").struct("<~@25 A ~@2 B A ~@18 C ~@17 C ~@15 C ~@7 C ~@16 C ~@4 D A ~>".pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@3 x ~ x", D: "~@7 x",
})).gain(0.48)

// drums · ride bell
const ride_bell = s("rd").struct("<~@48 A ~@17 A ~@15 A ~@7 A ~@16 A ~@5 B ~>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.48)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@28 A B ~@18 A ~@17 A ~@15 A ~@7 A ~@16 A ~@7>".pickRestart({
  A: "~@6 x!2", B: "~ x ~@6",
})).gain(5.64)

// drums · bongos
const bongos = s("bongo:4").struct("<~ A@47 B A@17 B A@15 B A@7 B A@16 B A@5 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x ~ x!2",
})).gain(1.26)

// drums · congas
const congas = s("conga:13").struct("<~@48 A ~@17 A ~@15 A ~@7 A ~@16 A ~@7>".pickRestart({
  A: "~@3 x",
})).gain(1.54)

stack(
  piano, piano_2, bass, electric_guitar_clean, acoustic_guitar_nylon, acoustic_guitar_steel, bandoneon, kick, snare,
  low_tom, hihat, mid_tom, open_hat, high_tom, china, ride_bell, vibraslap, bongos, congas
)

More by Nek