Strudelify
Mama Leone cover art

Emozioni

Mama Leone

Bino

KeyG majorTempo92 bpm
0:00/0:00
// Mama Leone — Bino
// 92 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 65 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@3 A B C D E D F G H I J K L M N O P B C D E D F G H I J K L M N Q R B C D L M N O P B C D E D F G H I J K L M N O P
  B C B C S
>`.pickRestart({
  A: "~@20 g2 f#2 f2 [d#2,e2] d2@2 d#2@2 e2@4", B: "g2@7 d2 g2 ~ g2@4 d2 e2", C: "g1@4 g2@3 d2 g2 ~ g2@4 c2 c#2",
  D: "d2@7 a2 d3 ~ d3@4 f#2 a2", E: "d2@7 a1 d2 ~ d2@4 a1 c2", F: "d2@7 a1 d2 ~ d2@4 c2 d2",
  G: "g1@7 d2 g2 ~ g2@4 d2 e2", H: "g2@11 ~ e3@2 d3@2 e3@2 d3@2 b2@3 ~ a2@4 b2@4, ~@12 d3 ~@19",
  I: "g2@7 d2 g2 ~ g2@4 b2 a2", J: "f2@7 b1 f2 ~ f2@4 e2 d2", K: "c2@7 g2 a2 g2 a2@2 c3@2 a2 g2",
  L: "c2@7 g2 c3 ~ c3@4 e2 f#2", M: "g2@7 d2 g2 ~ g2@4 c2 c#2", N: "d2@5 d2 f#2 a2 d2@8",
  O: "g2@4 g3 ~ e3@4 d3@2 b2@2 a2@2", P: "g2@4 e2 ~ d2@4 b1@4 a1@2", Q: "g2@7 d2 g2 ~ g2@5 e3",
  R: "g3 e3 d3 e3@2 d3 b2 d3", S: "g1@15 ~",
})).s("gm_fretless_bass").gain(0.42)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@20 A@2 B@4 A@2 C@2 D@2 E F A@4 G@2 E F ~@2 H@2 I@4 H@2 J@2 K@2 L M H@6 N
>`.pickRestart({
  A: "[g4,b4]/2", B: "[a4,c5]/2", C: "[g4 d5, b4]/2", D: "[c5,e5]/2", E: "[b4,d5]", F: "[a4,c5]@5 ~@3",
  G: "[a4 g4, c5]/2", H: "[g4,b4,d6]/2", I: "[a4,c5,c6]/2", J: "[g4 d5, [b4,d6]]/2", K: "[c5,e5,e6]/2", L: "[b4,d5,d6]",
  M: "[a4,c5,c6]@5 ~@3", N: "[g4,b4,d6]@15 ~",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.6)

// chords · piano · "A.PIANO 1"
const piano = note("<~@20 A B C D C D A B A B ~@14 A B C D C D A B A B ~@6 A B A B ~>".pickRestart({
  A: "~@24 [g4,c5,e5] ~ [g4,c5,e5]@4 g4 ~", B: "[b4,d5] ~@3 [g4,b4,d5]@7 ~@21, g4 ~@15",
  C: "~@24 [d4,g4,b4] ~ [d4,g4,b4]@4 d4 ~", D: "[f#4,a4] ~@3 [d4,f#4,a4]@7 ~@21, d4 ~@15",
})).s("gm_piano").gain(0.32).pan(0.4)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<~@20 A ~ B ~ B ~ A ~ A ~@15 A ~ B ~ B ~ A ~ A ~@7 A ~ A ~@2>".pickRestart({
  A: "~@22 g4 ~@9", B: "~@22 d4 ~@9",
})).s("gm_piano").gain(0.16).pan(0.4)

// other · french horn · "FR.HORN"
const french_horn = note(`<
  ~ A B@2 A C D E D F A C A C G H ~@4 A C D E D F A C A C G H ~@12 A C D E D F A C A C G H ~@4 A C A C ~
>`.pickRestart({
  A: "~@3 g3", B: "[g4@3 ~]/2", C: "g4@7 ~", D: "~@3 a3", E: "a4@7 ~", F: "f#4@7 ~", G: "~@3 c4", H: "c5@7 ~",
})).s("gm_french_horn").gain(0.32).pan(0.4)

// chords · trombone
const trombone = note("<~@20 A B C D C D A B A E F G ~@2 H B ~@8 A B C D C D A B A E F G ~@4 A B A B ~>".pickRestart({
  A: "~@15 d3", B: "g3 ~@3 [d3,g3]@23 ~@5", C: "~@15 a2", D: "d3 ~@3 [a2,d3]@23 ~@5", E: "f3 ~@3 [d3,f3]@23 ~@5",
  F: "~@15 g3", G: "c3 ~@3 [g2,c3]@23 ~@5", H: "g2@15 d3",
})).s("gm_trombone").gain(0.42).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@4 A@2 B@2 C@2 ~@2 D@2 E@2 ~@2 F@2 A@2 B@2 C@2 ~@2 D@2 E@2 ~@2 F@2 A@2 G@2 ~@2 F@2 A@2 B@2 C@2 ~@2 D@2 E@2 ~@2 F@2
  A@4 H
>`.pickRestart({
  A: "[~@7 d4 ~@2 d4@3 ~ g3 ~ g3@4 ~@12, g3@4 g4@4 d4@4 g3@4 ~@2 g3@6 ~@6 d4@5 ~@29, ~@2 d4@4 g3@4 a4@6 b4@4 ~@6 g4@5 ~@33]/2",
  B: "[~@6 a3@2 ~@30 d4@5 ~@21, ~@8 e4@14 ~@4 d4@4 a3@5 ~ a3@7 ~@21, ~@10 a3@4 f#4@4 d4@4 a3@6 e4@6 f#4@9 ~@21, ~@12 d4@4 a3@4 a4@11 ~ d4@4 ~@28]/2",
  C: "[~@2 d4 ~@8 d4 ~@9 e4@2 ~@9, e4@6 a4@3 ~@9 a4@3 ~@11, ~@2 a3@4 f#4@10 ~@2 e4@5 ~ f#4@6 e4@8 ~@26, ~@8 a3@5 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@8 ~@18, ~@10 d4@4 ~@2 d4@5 ~@7 d4@5 ~ d4@5 ~ d4@6 ~@18]/2",
  D: "[~@30 g3@5 ~@29, ~@16 g4@4 d4@4 g3@4 b4@7 ~@29, ~@9 g3@2 a4@2 d4@2 ~@17]/2",
  E: "[~@14 g3 ~@5 g3@2 ~@2 g3@2 d4@2 ~@2 d4@2 g3@5 ~ g3@2 e4@6 ~@18, ~@8 e4@3 g4@3 ~@18, ~@9 d4@2 ~@3 e4@5 ~@13]/2",
  F: "[~@6 d4@2 ~@4 d4@6 g3@2 d4@2 ~@4 d4@2 ~@2 d4@2 ~@2 d4@2 ~@14 g3@2 e4@2 d4@2 g3@2 a3@2 g3@3 ~, ~@4 g3@4 g4@7 ~@7 g4@6 e4@7 ~ g4@4 d4@4 g3@5 ~@15, ~@10 g3@6 ~@8 g3@4 ~@4 g3@5 ~ g3@4 e4@4 d4@7 ~@11]/2",
  G: "[~@6 a3@2 ~@24 g3@5 ~ g3@2 e4@6 ~@18, ~@8 e4@14 ~@4 d4@4 a3@5 ~@29, ~@5 a3@2 f#4@2 d4@2 a3@3 e4@3 ~@15, ~@12 d4@4 a3@4 a4@11 ~@33]/2",
  H: "g3 ~@15",
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0.9)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A@6 B@4 A@3 C D@2 A E A@4 B@4 A@3 C D@2 A E A@4 B D A E A@4 B@4 A@3 C D@2 A E A@6 F
>`.pickRestart({
  A: "[b2,d3,g3,b3]@4 [b2,d3,g3,b3]@3 [b2,d3,g3,b3] [b2,d3,g3,b3]@2 [b2,d3,g3,b3]@2 [b2,d3,g3,b3,g4] [b2,d3,g3,b3,g4]@2 [b2,d3,g3], g4@2 g4 ~", // G
  B: "[a2,d3,a3,d4]@4 [a2,d3,a3,d4]@3 [a2,d3,a3,d4] [a2,d3,a3,d4]@2 [a2,d3,a3,d4]@2 [a2,d3,a3,d4,f#4] [a2,d3,a3,d4,f#4]@2 [a2,d3,a3], f#4@2 f#4 ~", // D5 D D5
  C: "[b2,d3,g3,b3]@4 [b2,d3,g3,b3]@3 [b2,d3,g3,b3] [b2,d3,g3,b3]@2 [b2,d3,g3,b3]@2 [b2,d3,g3,b3,f4] [b2,d3,g3,b3,f4]@2 [b2,d3,g3], f4@2 f4 ~", // G G7 G
  D: "[c3,e3,g3,c4]@4 [c3,e3,g3,c4]@3 [c3,e3,g3,c4] [c3,e3,g3,c4]@2 [c3,e3,g3,c4]@2 [c3,e3,g3,c4,e4] [c3,e3,g3,c4,e4]@2 [c3,e3,g3], e4@2 e4 ~", // C
  E: "[a2,d3,a3,d4]@4 [a2,d3,a3,d4]@3 [a2,d3,a3,d4] [a2,d3,a3,d4,f#4]@7 ~, f#4 ~", F: "[b2,d3,g3,b3,g4]@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_3 = note(`<
  ~@2 A@4 B@4 A@3 C D@2 A E A@4 B@4 A@3 C D@2 A E A@4 B D A E A@4 B@4 A@3 C D@2 A E A@6 F
>`.pickRestart({
  A: "[b2,d3,g3,b3,g4]@4 [b2,d3,g3,b3,g4]@4 [b2,d3,g3,b3,g4]@3 [d3,g3,b3] [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2, ~@3 b2", // G
  B: "[a2,d3,a3,d4,f#4]@4 [a2,d3,a3,d4,f#4]@4 [a2,d3,a3,d4,f#4]@3 [d3,a3,d4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2, ~@3 a2", // D D5 D
  C: "[b2,d3,g3,b3,f4]@4 [b2,d3,g3,b3,f4]@4 [b2,d3,g3,b3,f4]@3 [d3,g3,b3] [d3,g3,b3,f4]@2 [d3,g3,b3,f4]@2, ~@3 b2", // G7 G G7
  D: "[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@3 [e3,g3,c4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2, ~@3 c3", // C
  E: "[a2,d3,a3,d4,f#4]@4 [a2,d3,a3,d4,f#4]@4 [a2,d3,a3,d4,f#4]@7 ~", F: "[b2,d3,g3,b3,g4]@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.2)

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

// drums · clap
const clap = s("cp").struct("<[~@16 x!3 ~ x!3 ~@9]!64 ~>").gain(0.22)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<[~@19 x ~@3 x ~@8]!64 ~>").gain(0.15)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@10 x ~@2 x ~@2] ~@31 [~@7 x] ~@27 [~@12 x ~ x!2] ~>").gain(0.44)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@13 B ~ C ~@13 B ~ D ~@5 B ~ E ~@11 F ~ G ~ H ~@3 I ~>".pickRestart({
  A: "~@6 x!2", B: "~@13 x ~@2", C: "~@6 x ~@2 x!2 ~ x ~ x ~", D: "~@12 x!2 ~@2", E: "x!3 ~@3 x ~@2 x!2 ~ x ~ x ~",
  F: "~@14 x!2", G: "~@13 x!2 ~", H: "~@4 x ~ x ~@2 x!2 ~ x ~ x ~", I: "~@6 x ~@2 x!2 ~@5",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A ~@15 B ~@7 A ~@15 A ~@3 A ~>".pickRestart({
  A: "~ x", B: "~@7 x",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@12 B A@3 ~@12 B A ~ A ~@4 B C ~ A ~@7 A ~@3 A B A@3 ~ A@3>".pickRestart({
  A: "x", B: "~ x", C: "x ~@6 x",
})).gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B A B A B A B A B A B A B ~@2 A B A B A B A B A B A B A B ~@2 A B A B A B ~@2 A B A B A B A B A B A B A B ~@2 A
  B ~@3
>`.pickRestart({
  A: "~@24 x!8", B: "x!2 ~@30",
})).gain(0.22)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3
>`.pickRestart({
  A: "~ x ~@14",
})).gain(0.07)

// drums · rim
const rim = s("rim").struct("<[~@16 x!7 ~@9]!64 ~>").gain(0.22)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<[~@23 x ~@8]!64 ~>").gain(0.15)

stack(
  bass, string_ensemble_1, piano, piano_soft, french_horn, trombone, acoustic_guitar_steel, acoustic_guitar_steel_2,
  acoustic_guitar_steel_3, kick, clap, clap_soft, snare, hihat, low_tom, mid_tom, open_hat, crash, tambourine,
  tambourine_soft, rim, rim_soft
)