Strudelify
T'innamorerai cover art

Collezione

T'innamorerai

Masini

KeyA majorTempo70 bpm
0:00/0:00
// T'innamorerai — Masini
// 70 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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.

// chords · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~@6 A ~@7 B C@2 D E D F G@2 D F G@2 D H I@2 J H I@2 J H I@2 J K L M N M N O P@2 D F G@2 D H I@2 J H I@2 J H I@2 J ~@19
>`.pickRestart({
  A: "[a3,a4,b4,e5] ~", B: "[a3,b3,c#4,e4] [g#3,c#4,e4]", C: "[[f#3,a3,d4] [g#3,e4] [a3,c#4] [g#3,c#4], ~ b3@2 ~]/2",
  D: "[f#3,a3,d4] [b3,e4]", E: "[a3,c#4] [g#3,c#4]", F: "[a3,b3,c#4,e4,a4] [g#3,c#4,e4]",
  G: "[[f#3,a3,d4] [g#3,e4] [a3,c#4,a4] [g#3,c#4], ~ b3@2 ~]/2", H: "c5 b4, g4@15 ~", I: "[[f4,a4] d4 c5 b4, ~ g4@3]/2",
  J: "[f4,a4] [d4,g4]", K: "[b3,c#4,e4] [c#4,e4]", L: "[a3,d4] [g#3,b3,e4]", M: "c#4!2", N: "[a3,d4] [b3,e4]",
  O: "[b3,c#4,e4,a4] [c#4,e4]", P: "[[a3,d4] [g#3,e4] [a3,c#4,a4] [g#3,c#4], ~ b3@2 ~]/2",
})).s("gm_pad_halo").gain(0.2)

// chords · pad halo · "HALO PAD" · soft notes
const pad_halo_soft = note("<~@16 A B A B ~@2 A B ~@2 A B ~@15 B A B ~@2 A B ~@2 A B ~@31>".pickRestart({
  A: "e4", B: "~ g#3",
})).s("gm_pad_halo").gain(0.08)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F E ~@6 F G F H F E F I F I F I F E J K L M N K L M O K L M F I F I F E F I F I F I F E J K L M N K L M O
  K L M P@2 B C D E B C D E B C D E B C D Q@2
>`.pickRestart({
  A: "~@3 e2", B: "a1@5 e1 a1 b1 c#2 e2 c#2@6", C: "d2@2 e1 e2", D: "a1@7 b1 c#2@6 c#2@2", E: "d2@2 e2 e1", F: "a1 c#2",
  G: "d2 e1", H: "d2@8 e1@5 ~ e1@2", I: "d2 e2", J: "c2@7 d2 e2 g2 e2@3 ~ e1 ~", K: "f1 g1", L: "c2@8 e1@6 e1 ~",
  M: "f1@2 g1 g2", N: "c2@7 d2 e2 g2 e2@4 e1@2", O: "c2@7 d2 e2 g2 e2@3 ~ e1@2", P: "[f1@2 ~ f1@2 ~ f1@2 ~ f1@23]/2",
  Q: "[d2@8 e2@4 e1@2 a1@11 ~@7]/2",
})).s("gm_fretless_bass").gain(0.46)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A@5 ~@21 B@3 ~ C D E F C G@3 H@3 ~ I J I J I J K L@3 B@3 ~ C D E F C G@3 M@2 N@5 O@8 P@4
>`.pickRestart({
  A: "[~@4 [c#4,c#5,c#6] [d4,d5,d6] [e4,e5,e6] [c#4,c#5,c#6] [b3,b4,b5]@4 [b3,b4,b5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [a3,a4,a5] [g#3,g#4,g#5]@4 [g#3,g#4,g#5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [f#4,f#5,f#6] [e4,e5,e6]@12 [f#3,f#4,f#5] [g#3,g#4,g#5] [a3,a4,a5] [d4,d5,d6] [c#4,c#5,c#6]@3 ~ [c#4,c#5,c#6]@2 [a3,a4,a5]@8 ~@10]/5", // C# D E C# B A B C# …
  B: "[~@12 [d4,d5,d6]@2 [c4,c5,c6]@7 ~@7 [b3,b4,b5]@2 [c4,c5,c6]@6 ~@12]/3", // D C B C
  C: "~@4 [e4,e5,e6] [f4,f5,f6] [g4,g5,g6] [e4,e5,e6] [d4,d5,d6]@5 ~@3", // E F G E D
  D: "~@4 [c4,c5,c6] [d4,d5,d6] [e4,e5,e6] [c4,c5,c6] [b3,b4,b5]@7 ~", // C D E C B
  E: "~@4 [c4,c5,c6] [d4,d5,d6] [e4,e5,e6] [a4,a5,a6] [g4,g5,g6]@7 ~", // C D E A G
  F: "~@4 [a3,a4,a5] [b3,b4,b5] [c4,c5,c6] [f4,f5,f6] [e4,e5,e6]@7 ~", // A B C F E
  G: "[~@4 [a3,a4,a5] [b3,b4,b5] [c4,c5,c6] [f4,f5,f6] [e4,e5,e6]@4 [e4,e5,e6]@2 [c4,c5,c6]@9 ~@5 [e4,e5,e6]@2 [c4,c5,c6]@15 ~@3]/3", // A B C F E C E C
  H: "[~@6 [b4,b5] [a4,a5]@3 ~@4 [g#4,g#5] [a4,a5]@3 ~@6]/3", // B A G# A
  I: "~@4 [c#4,c#5,c#6] [d4,d5,d6] [e4,e5,e6] [c#4,c#5,c#6] [b3,b4,b5]@6 ~@2", // C# D E C# B
  J: "~@4 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [a3,a4,a5] [g#3,g#4,g#5]@6 ~@2", // A B C# A G#
  K: "~@4 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [f#4,f#5,f#6] [e4,e5,e6]@8", // A B C# F# E
  L: "[~@4 [f#3,f#4,f#5] [g#3,g#4,g#5] [a3,a4,a5] [d4,d5,d6] [c#4,c#5,c#6]@4 [c#4,c#5,c#6]@2 [a3,a4,a5]@13 ~ [c#4,c#5,c#6]@2 [a3,a4,a5]@17 ~]/3", // F# G# A D C# A C# A
  M: "[f3,f4,c5,g5,c6]/2", // Fsus2
  N: "[~@4 [c#4,c#5,c#6] [d4,d5,d6] [e4,e5,e6] [c#4,c#5,c#6] [b3,b4,b5]@4 [b3,b4,b5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [a3,a4,a5] [g#3,g#4,g#5]@4 [g#3,g#4,g#5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [f#4,f#5,f#6] [e4,e5,e6]@12 [f#3,f#4,f#5] [g#3,g#4,g#5] [a3,a4,a5] [d4,d5,d6] [c#4,c#5,c#6]@3 ~ [c#4,c#5,c#6]@2 ~@6 [c#4,c#5,c#6] [d4,d5,d6] [e4,e5,e6] [c#4,c#5,c#6] [b3,b4,b5]@4 [b3,b4,b5]@2 [a3,a4,a5]@2, ~@31 [a3,a4,a5]@4 ~@5]/5", // C# D E C# B A B C# …
  O: "[~@4 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [a3,a4,a5] [g#3,g#4,g#5]@4 [g#3,g#4,g#5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [f#4,f#5,f#6] [e4,e5,e6]@12 [f#3,f#4,f#5] [g#3,g#4,g#5] [a3,a4,a5] [d4,d5,d6] [c#4,c#5,c#6]@3 ~ [c#4,c#5,c#6]@2 ~@6 [c#4,c#5,c#6] [d4,d5,d6] [e4,e5,e6] [c#4,c#5,c#6] [b3,b4,b5]@4 [b3,b4,b5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [a3,a4,a5] [g#3,g#4,g#5]@4 [g#3,g#4,g#5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [f#4,f#5,f#6] [e4,e5,e6]@12 [f#3,f#4,f#5] [g#3,g#4,g#5] [a3,a4,a5] [d4,d5,d6] [c#4,c#5,c#6]@3 ~ [c#4,c#5,c#6]@2 ~@6 [c#4,c#5,c#6] [d4,d5,d6] [e4,e5,e6] [c#4,c#5,c#6] [b3,b4,b5]@4 [b3,b4,b5]@2 [a3,a4,a5]@2, ~@23 [a3,a4,a5]@4 ~@28 [a3,a4,a5]@4 ~@5]/8", // A B C# A G# A B C# …
  P: "[~@4 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [a3,a4,a5] [g#3,g#4,g#5]@4 [g#3,g#4,g#5]@2 [a3,a4,a5]@6 [a3,a4,a5] [b3,b4,b5] [c#4,c#5,c#6] [f#4,f#5,f#6] [e4,e5,e6]@12 [f#3,f#4,f#5] [g#3,g#4,g#5] [a3,a4,a5] [d4,d5,d6] [c#4,c#5,c#6]@3 ~ [c#4,c#5,c#6]@2 [a3,a4,a5]@11 ~@7]/4", // A B C# A G# A B C# …
})).s("gm_string_ensemble_1").gain(0.35)

// other · string ensemble 2 · "SLOW STRIN"
const string_ensemble_2 = note(`<
  ~@2 A B A B C ~@7 A B A B A B A B A B A B A B D E D E D E D E D E D E A B A B A B A B A B A B A B D E D E D E D E D E
  D E ~@2 A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "[a3,a4] [g#3,g#4]", B: "[f#3,f#4] [e3,e4]", C: "a3@3 ~@5", D: "[c4,c5] [b3,b4]", E: "[a3,a4] [g3,g4]",
})).s("gm_string_ensemble_2").gain(0.19)

// chords · electric guitar clean · "CLEAN GT"
const electric_guitar_clean = note(`<
  ~@6 A@2 B@20 C D E F C D E F C D E F B@4 G@4 B@6 C D E F C D E F C D E F ~@19
>`.pickRestart({
  A: "[~@3 a3 ~@11 e3, a3@3 ~ g#3@3 g#3@2 a3@5 c#4@2, ~@2 c#4@6 ~@2 c#4@10 d4@11 ~, ~@2 e4@2 ~@2 e4@5 ~ e3 g#3@3, ~@16 f#3@6 f#3@9 ~]/2",
  B: "[~@3 a3 ~@7 f#3 ~@3 e3, a3@6 ~@2 g#3@6 g#3@9 ~ e3@6 ~@2, ~@2 c#4@6 ~@2 c#4@13 ~@5 c#4@4, ~ e4@2 e4 f#3 d4 ~@2, ~@9 a3@3 ~ g#3@3]/2",
  C: "~@6 c4 ~@7 b3 ~, c4@2 g4@3 e4@3, ~ e4@3 b3@3 ~, ~@3 g4", D: "~@6 a3 ~@7 g3 ~, a3@2 f4@2 ~ b3@3, ~ c4@3 g3@2 d4@2",
  E: "~@6 c4@2 ~@6 b3 ~, c4@2 g4@3 e4@3, ~ e4@3 b3@2 g4@2",
  F: "~@6 a3 ~@7 g3@2, a3@6 ~@2 g3@5 ~@3, ~ c4@3 ~ b3@3, ~ f4 ~ d4",
  G: "[~@3 a3 ~@7 f#3 ~@7 a3 ~@11 e3, a3@6 ~@2 g#3@6 g#3@9 ~ e3@6 e3@9 ~@9 f#3@2 a3@10 c#4@4, ~@2 c#4@6 ~@2 c#4@13 ~@5 c#4@4 ~@2 c#4@6 ~@2 c#4@10 d4@11 ~, ~@2 e4@4 e4@2 f#3@2 d4@2 ~@6 e4@2 ~@2 e4@5 ~ e3 g#3@3, ~@18 a3@6 ~@2 g#3@6 a3@6 ~@2 g#3@6 g#3@8 f#3@9 ~]/4",
})).s("gm_electric_guitar_clean").gain(0.27)

// chords · percussive organ · "ORGANO 2"
const percussive_organ = note(`<
  ~@2 A B A C ~@16 D E F@2 G@2 H I@2 J H I@2 J H I@2 K L ~@7 D E F@2 G@2 H I@2 J H I@2 J H I@2 J M@2 N B A B A B A B A B
  A B A B A O@2
>`.pickRestart({
  A: "[a4,c#5] g#4, [b4,e5]", B: "[f#4,a4,d5] [g#4,b4,e5]", C: "[f#4,a4,d5] [g#4,b4,e5], a#4 ~@7 a#4 ~@7", D: "c#6",
  E: "d6@2 c#6 b5", F: "e6/2", G: "[[a5,b5] b5 a5@2, e6, c#6 ~]/2", H: "[c5,d5] b4, [e5,g5]",
  I: "[[a4,c5,f5] b4 c5 b4, ~ g5@3, ~ d5@2 ~, ~ e5]/2", J: "[a4,c5,f5] [b4,d5,g5]",
  K: "[a4,c5,f5]@8 ~@4 a3 [b3,c4,d4] [e4,f4,g4,a4,b4,c5] [d5,e5,f5,g5], ~@4 [b4,d5,g5]@3 ~", L: "[a5,b5,c#6]@15 ~",
  M: "[[f5,c6]@29 [g5,a5] [c5,d5,e5,f5] [e4,f4,g4,a4,b4], [g5,a5]@7 ~]/2", N: "[a4,c#5] g#4, [b4,e5], [c4,d4] ~@15",
  O: "[[f#4,a4,d5]@8 [g#4,b4,e5]@4 ~@2 [a3,a4,b4,e5]@11 ~@7]/2", // D E Asus2
})).s("gm_percussive_organ").gain(0.2)

// other · pad new age · "FANTASIA"
const pad_new_age = note("<~@2 A@3 ~@9 B@3 ~@11 C@3 ~@9 D@3 ~@11 C@3 ~@11 A@3 ~ A@3 ~ A@3 ~ A@3 ~@2>".pickRestart({
  A: "[~@12 b5 ~ a5@7 ~@7 g#5 ~ a5@7 ~@11]/3", B: "[~@12 b5 ~ a5@8 ~@6 g#5 ~ a5@8 ~@10]/3",
  C: "[~@12 d6 ~ c6@6 ~@8 b5 ~ c6@6 ~@12]/3", D: "[~@12 b5 ~ a5@6 ~@8 g#5@2 a5@6 ~@12]/3",
})).s("gm_pad_new_age").gain(0.64)

// chords · steel drums · "STEEL DRUM" · C#m B5 A5 C#m D5
const steel_drums = note(`<
  ~@40
  [~@10 [c#5,e5] ~@3 [c#5,e5] f#4]
  [a4 f#4 d5 ~@9 e4 f#4 a4 f#4]
  [[f#4,b4] e4 [f#4,b4] [e4,a4] ~@12]
  ~
  [~@10 [c#5,e5] ~@3 [c#5,e5] f#4]
  [a4 f#4 [a4,d5] ~@13]
  ~@39
>`).s("gm_steel_drums").gain(0.24)

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

// drums · rim
const rim = s("rim").struct("<~@20 A@7 B ~@12 A@5 B A@7 B ~@31>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.64)

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

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

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@19 [~@11 x ~@4] ~@46 [~@15 x] [~@7 x ~@8] ~@17>").gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@35 A ~@9 B ~@7 C ~@7 A ~@3 D E F ~@17>".pickRestart({
  A: "~@3 x", B: "~@11 x ~@4", C: "~@8 x ~@2 x!2 ~@3", D: "~@13 x ~@2", E: "~@15 x", F: "~@3 x ~@3 x!3 ~@3 x!3",
})).gain(0.48)

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

// drums · high tom
const high_tom = s("ht").struct("<~@67 [~@13 x ~@2] ~@17>").gain(0.48)

// drums · china
const china = s("cr").struct(`<
  ~@2 A B A C ~@22 A ~ A B A ~ A ~ A ~ A B A ~@13 A ~ A B A ~ A ~ A ~ A ~ D ~ A B A C A B A C A B A C A B A E ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2", D: "x ~@2 x ~@2 x ~@2 x ~@6", E: "~@2 x ~@4 x",
})).gain(0.56)

// drums · ride bell
const ride_bell = s("rd").struct("<~@2 A B C D ~@62 A B C D A B C D A B C D A B C D ~>".pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~ x!6", C: "x!8", D: "x!7 ~",
})).gain(0.48)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct("<~@2 A B ~@64 A B ~@2 A B ~@2 A B ~@2 A B ~@3>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~@6",
})).gain(0.32)

stack(
  pad_halo, pad_halo_soft, bass, string_ensemble_1, string_ensemble_2, electric_guitar_clean, percussive_organ,
  pad_new_age, steel_drums, kick, rim, snare, low_tom, low_tom_soft, hihat, mid_tom, open_hat, high_tom, china,
  ride_bell, ride_bell_soft
)

More by Masini