Strudelify
Happy Family cover art

Il Mucchio

Happy Family

Biagio Antonacci

KeyB majorTempo177 bpm
0:00/0:00
// Happy Family — Biagio Antonacci
// 177 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 distortion guitar (copy of ch 8 distortion guitar); ch 9 electric guitar jazz (copy of ch 6 electric guitar jazz)
// note: Full arrangement: all 165 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(177/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.

// bass · electric bass finger
const bass = note(`<
  ~@8 A@11 B A@7 C D E F G H I E J K@2 L@2 M@2 N@2 D E F G H I E@3 J D O P Q D R E S D T F U A V D E F W E@3 J D@7 X K@2
  L@2 M@2 N@2 K@2 L@2 M@2 N@2 D E F G H I E@3 J D O P Q D R E S D T F U A V D E F W E@4 Y@2 Z@2 AA@4 X@2 AB@2 AC AD AE E
  P AF K@2 L@2 AG@2 A AH@2 AI AJ@2 AK@2 AL
>`.pickRestart({
  A: "b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", B: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ g#1@2 a1@2 a#1@2",
  C: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1@2 a#1@2", D: "g#1@2 g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~",
  E: "f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", F: "e1@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  G: "d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1@2", H: "c#1@2 c#1 ~ c#1 ~ c#1 ~ c#1 ~ c#1 ~ c#1 ~ c#1 ~",
  I: "c#1 ~ c#1 ~ c#1 ~ c#1 ~ c#1 ~ c#1 ~ d#1 ~ g#1@2", J: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2 f#2@4",
  K: "[b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ e1@4 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2]/2",
  L: "[b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ e1@4 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ g#1 ~ a#1@2]/2",
  M: "[b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ e1@4 e1 ~ e1 ~ e1 ~ e1 ~ d#1 ~ e1 ~ f#1@2]/2",
  N: "[g#1@2 g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ f#1 ~ e1@4 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ f#1@2]/2",
  O: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 c#2@2 d#2@2", P: "e2!8", Q: "e2 ~ e2@2 e2@2 e2 ~ e2@2 g#1 ~ b1@4",
  R: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 b1@4", S: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2 f#1@2 f1@2",
  T: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ a#1@2 b1@2 f#1@2", U: "e1 ~ e1@2 e1@2 e1@2 d#2@2 e2@2 d#2@2 f#2@2",
  V: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1@2 a#1 ~ a#1 ~", W: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2 g#1@2 e1@2", X: "g#1",
  Y: "e1/2", Z: "e2/2", AA: "[f#1@3 ~@3 f#1@25 ~]/2", AB: "a#1", AC: "e1@7 ~ e1@6 ~@2", AD: "e1@3 ~ e1@4",
  AE: "f#1@4 f#1!4", AF: "e2 ~ e2@2 e2@2 e2 ~ e2@4 e2@4",
  AG: "[b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ e1@4 e1 ~ e1 ~ e1 ~ e1 ~ d#1 ~ b2@4]/2", AH: "a#1 b1!7",
  AI: "a#1 b1!5 e2 f#2", AJ: "[b2@3 f#2@3 a2@3 e2@3 d#2@2 g#2@2]/2", AK: "[f#2@3 c#2@3 e2@3 b1@3 a1@2 c#2@2]/2",
  AL: "b0@4 ~@2 b0@5 ~@5",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@12 A B A B A B A B A B A B A B A B ~@4 C D E F G@6 H@2 I ~@3 C D E F J K ~@30 G@6 H@2 L@2 G@4 H@2 I ~@3 C D E F J K
  ~@22 M@4 N@4 O@2 P@2 Q R J S T S G@6 ~@9
>`.pickRestart({
  A: "[a#2,f3]@2 [b2,f#3]@3 ~ [b2,f#3]@2 ~@2 [b2,f#3]@3 ~ [b2,f#3]@2", B: "~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3]",
  C: "[f#2,g#3] ~ [f#2,g#3] ~ [f#2,g#3,d#4] ~ e4@2 d#4@2 [f#2,g#3,c#4] ~ g#3@2 g#3 ~", // F#sus2 G#7 F#sus2
  D: "[f#2,g#3,d#4] ~ [f#2,e4]@2 [f#2,d#4]@2 [g#3,c#4]@2 g#3@2 [f#2,g#3] ~ [f#2,g#3,c#4] ~@3", // G#7 F#7 D#m C#5 F#sus2
  E: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~", // F#5
  F: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@4", // F#5
  G: "[[a#2,f3]@2 [b2,f#3]@3 ~ [b2,f#3]@2 ~@2 [b2,f#3]@3 ~ [e2,b2,e3]@7 ~ [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2]/2", // A#5 B5 E5
  H: "[[d#3,g#3]@2 [d#3,g#3]@2 [d#3,g#3]@2 [d#3,g#3]@2 ~@2 [f#2,c#3,f#3]@2 ~@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@3 [c#2,d2,d#2,g#2,a2,a#2], g#2@9 ~@23]/2", // G#5 F#5 E5
  I: "[a1,a#1,b1,c2,e2,f2,f#2,g2] [f#1,g1,g#1,c#2,d2,d#2] ~@14", J: "[f#2,c#3,f#3]!5 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]",
  K: "[f#2,c#3,f#3]!4 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2", // F#5
  L: "[[a1,a#1,b1,c2,e2,f2,f#2,g2,a#2,f3] [f#1,g1,g#1,c#2,d2,d#2] [b2,f#3]@3 ~ [b2,f#3]@2 ~@2 [b2,f#3]@3 ~ [e2,b2,e3]@7 ~ [b2,e3]@2 ~@2 [b2,e3]@2 ~@2 [b2,e3]@2]/2", // Am7 B5 E5
  M: "[e2@14 [g#3,c#4,f#4] [g#3,c#4,f#4]@17]/4", N: "[~@7 [c#4,e4,f#4]@8 ~, f#3@61 ~@3]/4",
  O: "[~@6 e4@5 ~ b3@6 e4@5 ~ b3@8, g#2]/2",
  P: "[c#4@6 ~@21 f#4@3 ~@2, a#2@31 ~, ~@6 e4@12 c#4@13 ~, ~@12 f#4@12 e4@7 ~]/2",
  Q: "[e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~", // E5
  R: "[e2,b2,e3] ~ [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@4", S: "[f#2,c#3,f#3]!8",
  T: "[f#2,c#3,f#3] [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!5", // F#5
})).s("gm_distortion_guitar").gain(0.36)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@28 A B C D E@2 ~@10 A B C D E@2 ~@50 A B C D E@2 ~@59>".pickRestart({
  A: "~@12 b3@3 ~, g#3@15 ~, ~@4 b3@7 ~@5, ~@3 d#4@5", B: "~@3 b3, f#3@15 ~, ~@4 b3@7 ~@5, ~@3 d#4@5",
  C: "~@3 b3, e3@7 ~, ~@4 b3@7 ~@5, ~@6 d#4@9 ~", D: "~@3 b3, d#3, ~@4 b3@7 ~@5, ~@6 d#4@9 ~",
  E: "[[c#3,c#4]@29 ~@3]/2", // C#
})).s("gm_electric_guitar_jazz").gain(0.26).pan(0.8)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  A B A B A C A D A C A D ~@40 E@2 F@2 G H I F J K I F L H M N O P Q@2 R S T U V@6 W X ~@24 E@2 F@2 G H I F J K I F L H
  M N O P Q@2 R S T Y ~@24 Z AA@2 AB AC@2 AD@2 AE
>`.pickRestart({
  A: "[a#2,f3]@2 [b2,f#3]@3 ~ [b2,f#3]@2 ~@2 [b2,f#3]@3 ~ [b2,f#3]@2", B: "~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3]",
  C: "~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3]!3", D: "~@2 [b2,f#3]@2 ~@2 [f#2,c#3] ~ [b2,f#3]@2 ~@2 [b2,f#3]@2 ~@2",
  E: "[~@7 [e4,b4,e5]@2 [e4,b4,e5]!6 ~]/2", F: "[g#2,d#3,g#3]@15 ~", G: "[e2,b2,e3]@14 [e2,b2,e3] ~",
  H: "[e2,b2,e3]@15 ~", I: "[g#2,d#3,g#3]@14 [g#2,d#3,g#3] ~",
  J: "f#2 ~ f#2 ~ [c#4,f#4] ~ [f#2,c#4,f#4] ~ [c#4,f#4] ~ f#2 ~ f#2 ~ f#2 ~", // F#5
  K: "[f#2,c#4,f#4] ~ f#2 ~ f#2 ~ [f#2,c#4,f#4] ~ f#2 ~ [f#2,c#4,f#4] ~ [f#2,c#4,f#4]@2 f#2 ~", // F#5
  L: "[e2,b2,e3]@14 [e2,b2,e3]!2", M: "b2 ~ b2 ~ [b2,d#4,f#4] ~ b2 ~ b2 ~ b2 ~ [b2,d#4,f#4] ~ b2 ~",
  N: "a#2 ~ a#2 ~ [a#2,c#4,f#4] ~ a#2 ~ a#2 ~ a#2 ~ [a#2,c#4,f#4] ~ a#2 ~", // F#
  O: "g#2 ~ g#2 ~ [g#2,b3,d#4] ~ g#2 ~ g#2 ~ g#2 ~ [g#2,b3,d#4] ~ g#2 ~", // G#m
  P: "f#2 ~ f#2 ~ [f#2,a#3,c#4] ~ f#2 ~ f#2 ~ f#2 ~ [f#2,a#3,c#4] ~ f#2 ~", // F#
  Q: "e2 ~ e2 ~ [e2,g#3,b3] ~ e2 ~ e2 ~ e2 ~ [e2,g#3,b3] ~ e2 ~", // E
  R: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~", // F#5
  S: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@4", // F#5
  T: "[f#2,c#3,f#3]!5 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]", // F#5
  U: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@4 d#4 e4 [f4,f#4] g4, ~@3 f#2", // F#5 F#maj7
  V: "[~@6 d#4@6 ~@12 g#4@4 d#4 e4 [f4,f#4] g4, c5@7 ~, g#4@11 ~ g#4@11 ~@9, ~@9 d#4@4 ~@3]/2", // F#maj7
  W: "~@3 d#4@3 g#4@2, c5, g#4@11 ~@5", X: "[a2,e3,a3]", Y: "[f#2,c#3,f#3]!4 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2",
  Z: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", AA: "a#2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  AB: "a#2 ~ b2 ~ b2 ~ b2@2 b2 ~ b2@2 ~@4", AC: "[b4@3 f#4@3 a4@3 e4@3 d#4@2 g#4@2]/2",
  AD: "[f#4@3 c#4@3 e4@3 b3@3 a3@2 c#4@2]/2", AE: "[b2,f#3]@5 ~ [b2,f#3]@6 ~@4",
})).s("gm_distortion_guitar").gain(0.26).pan(0.8)

// other · guitar harmonics
const guitar_harmonics = note("<~@3 A@5 ~@157>".pickRestart({
  A: "[~@3 b2@17]/5",
})).s("gm_guitar_harmonics").gain(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@3 C B@15 C B@7 C B@17 D B@7 C B@12 E F B@7 G B@17 H@3 B@5 D B@7 C B@12 I B J ~ J@2 ~@3 J@7 B@2 D K B@6 L@4 M J
  N G O
>`.pickRestart({
  A: "~ x ~@2 x ~ x ~", B: "~ x ~ x", C: "~@4 x ~@5 x!3 ~ x!2", D: "~@2 x ~ x!3 ~ x ~@2 x!2 ~ x ~", E: "~@2 x ~@2 x!3",
  F: "x!7 ~", G: "x", H: "~@3 x ~@2 x ~", I: "~ x ~@2 x ~@2 x", J: "~@3 x", K: "x!3 ~ x!12", L: "~@2 x!2 ~@2 x ~",
  M: "~@3 x!2 ~ x ~@9", N: "x ~@3 x ~ x ~@5 x ~@2 x", O: "x ~@2 x ~@4",
})).gain(0.69)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@53 A ~@55 A ~@38 B ~@11 C D E F ~>".pickRestart({
  A: "~@10 x ~@4 x", B: "~@5 x ~@2", C: "~@8 x!8", D: "x!12 ~@2 x!2", E: "~@2 x!2 ~@4 x!4 ~@2 x ~", F: "~@2 x!14",
})).gain(0.23)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A B A C ~@124 D E D@4 E@8 F@3 ~@7 G@4 ~ H ~ H ~>".pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", B: "x!8", C: "x", D: "~@2 x!2 ~@2 x ~", E: "~@2 x!2 ~@4", F: "x ~@3 x!2 ~@2",
  G: "x ~ x!2 ~@2 x ~", H: "~@2 x ~@5 x ~@2 x ~@4",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A@16 ~@8 B C B C D C D E A@8 ~@32 B C B C D C D E B C B C D C D E ~@46 A@4 ~@15
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "~ x!7", D: "x!7 ~", E: "~ x!5 ~@2",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A B A C ~@124 B@4 D@3 E D B@8 ~@7 F@4 G H I J ~>".pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", B: "x!8", C: "x", D: "x!2 ~@2 x!4", E: "x!2 ~@2 x!3 ~", F: "~ x!7",
  G: "~@12 x ~@2 x", H: "~@5 x ~@8 x ~", I: "~@3 x ~@8 x ~@2 x", J: "~@5 x ~@10",
})).gain(0.23)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A B@2 C ~@16 A B@6 D E ~ E ~ F ~ F G ~@8 H I J B@6 D J B@13 A B@6 ~ E ~ E ~ F ~ F G E ~ E ~ F ~ F G ~@4 B@4 H I J
  B@6 D J B@12 K ~@18 B A B A B L ~@9
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!5 ~@3", D: "x!5 ~ x!2", E: "~@6 x!2", F: "~@7 x", G: "~@3 x", H: "x!4", I: "x",
  J: "~ x!3", K: "x!7 ~", L: "~ x!6 ~",
})).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@133 A ~@2 B C B C@2 ~@19 D ~ E ~@2>".pickRestart({
  A: "~@3 x", B: "~@2 x!2 ~@2 x ~", C: "~@2 x!2 ~@4", D: "~@9 x ~@6", E: "x ~@5 x ~@2 x ~@6",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A B ~@19 B ~@7 C ~ D ~ D ~ D ~ B ~@9 B ~@7 B ~@13 B ~@7 C ~ D ~ D ~ D ~ C ~ D ~ D ~ D ~ B ~@3 B ~@5 B ~@7 B ~@9 B
  ~ E F B ~@17 C ~ D ~ D ~ B ~@3 B ~@3 G
>`.pickRestart({
  A: "~ x ~@2 x ~ x ~", B: "x", C: "x ~@6 x", D: "~@7 x", E: "~ x ~@2 x ~@2 x", F: "~ x ~ x", G: "x ~@2 x ~@2 x ~@9",
})).gain(0.46)

// drums · ride
const ride = s("rd").struct("<~@55 A@7 B A@13 ~@24 C@4 ~@7 A@7 B A@13 ~@33>".pickRestart({
  A: "x!4", B: "~ x!3", C: "x!8",
})).gain(0.46)

stack(
  bass, distortion_guitar, electric_guitar_jazz, distortion_guitar_2, guitar_harmonics, kick, snare, snare_soft,
  low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Biagio Antonacci