Strudelify

Faccio I Conti Con Te

Carboni

KeyB minorTempo81 bpm
0:00/0:00
// Faccio I Conti Con Te — Carboni
// 81 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "BASSO" electric guitar muted (copy of ch 9 "BASSO 2" acoustic bass)
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(81/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 warm · "TAPPETO"
const pad_warm = note(`<
  A B@3 A C@3 A C@3 A C@3 D@4 E F A B@3 A C@3 A C@3 A C@3 G@4 E F H@4 I J I F ~@2 A C@3 K C@3 A C@3 L@4 E F H@4 I J I F
  I J M
>`.pickRestart({
  A: "d4 e4, [b3,g4]", B: "[[d4,f#4] c4 g3 [f#3,d#4] [d3,g3]@2, a3 b3@2, ~ e4@2 ~@3]/3",
  C: "[[d4,f#4] c4 [g3,b3] [f#3,d#4] [d3,g3]@2, a3@2 ~ b3@3, ~ e4@2 ~@3]/3", // D G D#m G5
  D: "[d4@2 c#4@2 [b3,d4]@3 [c#4,e4] d4@2 c#4@2 [b3,d4]@2 [c#4,e4]@2, f#4@7 ~ f#4@8, a3@4 ~@3 a3@5 ~@4]/4", // Bm C#m Bm C#m
  E: "[g3,b3,d4,e4]", F: "[a3,c#4,e4]",
  G: "[d4@2 c#4@2 [g3,b3,d4]@3 [c#4,e4] d4@2 c#4@2 [g3,b3,d4]@2 [c#4,e4]@2, f#4@7 ~ f#4@8, a3@4 ~@3 a3@5 ~@4]/4", // G C#m G C#m
  H: "[[b3,d4] [a3,c#4] ~@2 [g3,b3]@2 [a3,c#4]@2, f#4@5 e4@2 d4@5 ~@4, ~@2 [g3,b3] [f#3,a3] e4@4]/4", I: "[g3,b3,d4]",
  J: "e4@3 f#4, [a3,c#4]", K: "d4@8 e4@7 ~, [b3,g4]@15 ~",
  L: "[d4@2 c#4@2 [b3,d4]@3 [c#4,e4] d4@2 c#4@2 [g3,b3,d4]@2 [c#4,e4]@2, f#4@28 a3@19 ~@17, a3 g3 f#4@2]/4", // Bm C#m G C#m
  M: "~ [f#4,a4,d5] ~@6", // D
})).s("gm_pad_warm").gain(0.17).pan(0.3)

// other · electric guitar clean · "CLEAN GT"
const electric_guitar_clean = note("<~@54 A@4 B@4 C@2 ~ D@5 E@6 ~@7>".pickRestart({
  A: "[~@4 b3 b3@3 g3@4 b3 g3@2 a3@5 ~@2 d3@2 c4@4 b3 a3@2 g3@2 f#3@2 e3@2 ~ e3@2 d#3@4 ~ d#3@2 b2@8 ~@5 b3 a3 g3 f#3]/4",
  B: "[g3@2 ~@2 b3 b3@2 g3@5 b3 g3@2 a3@6 ~ d3@2 c4@4 b3 a3@2 g3@2 f#3@2 e3@2 ~ e3@2 d#3@4 ~ d#3@2 b2@10 ~@3 b3 a3 g3 f#3]/4",
  C: "[g3@3 ~ b3 b3@3 g3@4 b3 g3@2 a3@7 ~@10]/2",
  D: "[~@12 b3 c#4@2 d4@9 c#4 b3@2 a3@2 f#3 ~ b3@10 ~@3 b3 c#4@2 d4@9 c#4 b3@2 a3@2 f#3 ~ b3@9 a3 g3@2 f#3@2 d3@2 g3]/5",
  E: "[~@8 g3 f#3@2 e3@2 f#3@2 e3@10 ~@3 [b3,d4] [c#4,e4]@2 [d4,f#4]@6 ~ [d4,f#4]@2 [c#4,e4] [b3,d4]@2 a3@2 [f#3,a3]@2 [b3,d4]@9 [a3,c#4] [g3,b3]@2 f#3@2 [d3,f#3]@2 [g3,b3]@8 ~ [g3,b3] [f#3,a3]@2 [e3,g3]@2 [f#3,a3]@2 [e3,a3]@9 ~@8, ~@43 c#4@4 ~@12 a3@4 ~@33]/6", // Bm C#m D C#m Bm F#m Bm A …
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.6)

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  A B C@3 B D E A B D E A B D E F G H@2 I J A B D E A B D E A B D E A B D E ~@16 A B D E A B K E A B D E ~@16 L
>`.pickRestart({
  A: "d4 e4, [b3,g4]", B: "[f#3,d4] [e3,c4], a3", C: "[[g3,e4] [d#3,f#3] [d3,g3]@2 d4 e4, b3, ~@2 g4]/3",
  D: "[g3,e4] [d#3,f#3], b3", E: "[d3,g3,b3]", F: "d4 c#4, [f#4,a4]", G: "[b3,d4,f#4]",
  H: "[d4 c#4 [b3,d4] [b3,e4], f#4@3 ~, a4 ~]/2", I: "[b3,d4,g4]", J: "[a3,c#4,e4]", K: "[g3,b3,e4] [d#3,f#3,b3]",
  L: "~ [f#4,a4,d5] ~@6", // D
})).s("gm_epiano1").gain(0.19).pan(0.6)

// other · banjo
const banjo = note("<~@4 A@2 ~@16 B ~@7 C ~@17 D E D E F G ~@4 C ~@17 D E D E D E ~>".pickRestart({
  A: "[~@2 b2 a2 ~ b2 a2 g2@2 ~ d3 g2@2 d3 f#2@4 ~@14]/2", B: "~@2 b2 a2 ~ b2 a2@2 ~@8",
  C: "~@2 b2 a2 g2 b2 a2 g2@3 d3 g2 ~ d3 f#2@2", D: "~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~",
  E: "~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~", F: "~@2 d2@2 ~ d2 ~@2 d2 ~@2 d2 ~ d2 d3@2", G: "~@2 d2@2 ~ d2@2 ~@9",
})).s("gm_banjo").gain(0.27).pan(0.4)

// other · pad new age · "FANTASIA"
const pad_new_age = note("<~@30 A ~@13 B@4 ~@35>".pickRestart({
  A: "~@2 [b5,b6] [a5,a6] [g5,g6] [b5,b6] [a5,a6] [g5,g6]@3 [d6,d7] [g5,g6] ~ [d6,d7] [f#5,f#6]@2", // B A G B A G D G …
  B: "[~@8 c#6@2 b5 a5@2 f#5@2 b5@7 ~@2 a5@2 g5 f#5@2 d5@2 g5@7 ~@2 g5@2 f#5 e5@2 f#5@2 e5@5 ~@12]/4",
})).s("gm_pad_new_age").gain(0.24).pan(0.6)

// chords · pad metallic · "TAPPETO 2"
const pad_metallic = note("<~@38 A B C@3 D E@2 F@2 G H G I ~@14 A B C@3 D E@2 F@2 G H G I G H ~>".pickRestart({
  A: "d5@4 c#5@3 ~, [a4,f#5]@15 ~", B: "[g4,b4,f#5]@7 ~",
  C: "[d5@8 c#5@7 ~ g4@7 ~ [a4,e5]@8 [g4,d5]@16, f#5@11 ~@13, a4@15 ~ b4@32]/3", D: "[a4,c#5,e5]@7 ~",
  E: "[[b4,d5]@8 [a4,c#5]@8 [g4,b4]@7 ~ e5@4 d5@4, f#5@22 ~@2 [f#4,a4]@7 ~]/2", // Bm A G F#m
  F: "[[g4,b4]@16 [a4,c#5]@15 ~, e5@31 ~]/2", G: "[d4,b4]@15 ~", H: "[e4,c#5]@3 ~", I: "[e4,c#5]@11 ~@5",
})).s("gm_pad_metallic").gain(0.25).pan(0.6)

// bass · acoustic bass · "BASSO 2"
const bass = note(`<
  A B C D A E F G A E F G A E F G H I J K L M A B C D A E F G A E F G A E F G H I J K L N O P Q R S T U V ~@2 A E F G A
  E F G A E F G H I J K L N O P Q R S T U V S T W
>`.pickRestart({
  A: "~@3 g1 e2@2 d2@2 ~@4 b1@2 ~@2", B: "~@3 g1 a1@2 b1@2 ~@4 e1@2 ~@2", C: "~@3 e1 g1@2 g1@2 ~@4 b1@2 ~@2",
  D: "~@2 g1 a1 ~@2 b1 ~", E: "~@3 g1 a1@2 b1@2 ~@4 a1@3 ~", F: "~@3 f1 g1@2 a1@2 ~@4 b1@3 ~",
  G: "~@3 g1 a1@2 g1@2 ~@4 g1@2 a1@2", H: "~@3 a1 e2@2 d2@2 ~@4 a1@3 ~", I: "~@3 f#1 a1@2 b1@2 ~@4 b1@2 g1@2",
  J: "~@3 a1 e2@2 d2@2 ~@4 b1@2 a1@2", K: "~@3 f#1 a1@2 b1@2 ~@4 a1@2 ~@2", L: "~@3 e1 g1@2 g1@2 ~@4 g1@2 e1@2",
  M: "~@3 e1 g1@2 a1@2 ~@4 f#1@2 ~@2", N: "~@3 e1 g1@2 a1@2 ~@4 f#1@2 a1@2", O: "~@3 a1 b1@2 a1@2 ~@4 a1 ~ b1@2",
  P: "~@3 f#1 a1 ~ b1@2 ~@4 a1@2 f#1@2", Q: "~@3 e1 f#1 ~ g1@2 ~@4 f#1@2 g1@2", R: "~@4 a1 ~ b1@2 ~@3 a1 b1@2 ~@2",
  S: "~@4 g1 ~ a1@2 ~@3 g1 b1@2 ~@2", T: "~@3 f#1 a1 ~ b1@2 ~@3 f#1 b1@2 a1@2", U: "~@3 g1 a1 ~ g1@2 ~@4 b1@2 ~@2",
  V: "~@3 f#1 a1 ~ b1@2 ~@4 b1@2 a1@2", W: "~ d1 ~@6",
})).s("gm_acoustic_bass").gain(0.42).pan(0.6)

// chords · electric guitar muted · "MUTED GT"
const electric_guitar_muted = note(`<
  ~@7 A ~@3 A ~@5 B ~@7 A ~@3 A ~ C ~ D ~@3 A ~ B ~@17 A ~ C ~ D ~@3 A ~ B ~@15
>`.pickRestart({
  A: "~@2 [d4,g4]!2 ~@12", B: "~@2 [f#3,b3]!2 ~@12", C: "~@2 [a3,d4]!2 ~@2 [a3,d4] ~@9",
  D: "~@2 [d4,g4]!2 ~@6 [d4,g4]!2 ~@4", // G5
})).s("gm_electric_guitar_muted").gain(0.23).pan(0.6)

// drums · kick
const kick = s("bd").struct("<[x!4]!53 [x!2 ~@2] [x!4]!28 [~ x ~@6]>").gain(0.5)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!53 [~ x ~@2] [~ x ~ x]!28 ~>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!53
  [~@2 x!2 ~@12]
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!28
  ~
>`).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@54 x ~@21 [~@3 x!2 ~@11] ~@6>").gain(0.2)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  ~@7 A ~@2 B C ~ D@2 E ~ F G H@2 I J K L M E L@2 N ~@2 B I@3 ~ I ~ O H@3 I ~ H@2 P H I ~ H@2 ~ E L@2 Q ~@2 B I@3 ~ R ~
  H I H P I ~ H@4 I ~ H@2 I ~
>`.pickRestart({
  A: "~@9 x ~@4 x!2", B: "~@3 x ~@4", C: "~@5 x ~@8 x!2", D: "~@5 x ~@10", E: "~@9 x ~@6", F: "~@3 x",
  G: "~@9 x ~@3 x ~@2", H: "~@11 x ~ x ~@2", I: "~@11 x ~@4", J: "~@2 x!2 ~ x ~@4 x ~@5", K: "~ x ~@14",
  L: "~ x ~@3 x ~@3 x ~@6", M: "~ x ~@3 x ~@5 x ~@2 x ~", N: "~ x!2 ~@8 x ~@4", O: "~@12 x!2 ~@2", P: "~@13 x ~@2",
  Q: "~ x ~@9 x ~@4", R: "~@3 x ~@7 x ~@4",
})).gain(0.65)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@3 A ~@3 B ~@2 C B ~ D ~ E ~ F G H I J K L M N L C O P ~@2 C P Q ~@2 R ~ S T U V J ~ W T U X J ~ Y Z ~ L O L AA ~@2 C
  P Q ~@2 AB ~ Y Z AC AD AE ~ W Q AC I J ~ W X J ~
>`.pickRestart({
  A: "~@11 x ~@2 x ~", B: "~@11 x ~@4", C: "~@3 x ~@12", D: "~ x ~@6", E: "~@5 x ~@6 x ~@3", F: "~@11 x ~@2 x!2",
  G: "~@11 x!2 ~@3", H: "~@2 x ~@4 x ~@8", I: "~@7 x ~@4 x ~@3", J: "~@7 x ~ x ~@4 x ~", K: "~ x ~@2 x ~@4 x ~@2 x ~@3",
  L: "~@2 x!2 ~@6 x ~@5", M: "~@2 x ~@7 x!2 ~@4", N: "~@2 x!2 ~@5 x ~@2 x ~@3", O: "~ x ~@3 x ~@2",
  P: "~@3 x ~@5 x ~@2 x ~@3", Q: "~@9 x ~@6", R: "~ x ~ x ~@5 x ~@2 x ~@3", S: "~@9 x ~ x ~@4", T: "~@2 x ~@6 x ~@6",
  U: "~@2 x ~@4 x ~@4 x ~@3", V: "~@7 x!2 ~@3 x ~@3", W: "~@9 x ~@2 x ~@3", X: "~@7 x ~ x ~@6", Y: "~@9 x ~@5 x",
  Z: "~@2 x ~@6 x ~@2 x ~@3", AA: "~@2 x ~@6 x ~@2 x ~@2 x", AB: "~ x ~@7 x ~@6", AC: "~@2 x ~@4 x ~ x ~@2 x ~@3",
  AD: "~@7 x ~ x ~@2 x ~@3", AE: "~@7 x ~@6 x ~",
})).gain(0.95)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@3 A ~@3 B ~@3 A ~@2 C D ~ E ~ F G H I J K I ~ L K M ~@3 N ~ O ~ P ~ N B G N H ~ N B Q R H ~ S ~ C ~ K I T ~@3 M ~ O
  ~ R ~ S U N V W ~ N X N G H ~ P R H ~
>`.pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "~@3 x", C: "~ x ~@6", D: "~@2 x ~@8 x ~@4", E: "~@9 x ~@3 x ~@2", F: "~@9 x ~@2 x ~ x!2",
  G: "~@9 x ~@4 x!2", H: "~@13 x ~ x", I: "~@3 x ~@4", J: "~@11 x ~@4", K: "~@3 x ~@2 x ~@9", L: "~ x ~ x ~ x ~@2",
  M: "~@7 x", N: "~@14 x!2", O: "~@9 x ~@6", P: "~@15 x", Q: "~@9 x!2 ~@3 x!2", R: "~@12 x ~ x!2", S: "~@6 x!2",
  T: "~@3 x ~@10 x ~", U: "~@13 x ~@2", V: "~@11 x ~@2 x!2", W: "~@9 x ~@3 x ~ x", X: "~ x ~@10 x ~@3",
})).gain(0.95)

// drums · congas
const congas_3 = s("conga:33").struct("<~@15 A ~@7 B ~@5 C ~@7 D ~@23 C ~@17 D ~@3>".pickRestart({
  A: "~@14 x!2", B: "~@3 x ~@4", C: "~@15 x", D: "~@7 x",
})).gain(0.95)

// drums · ht
const ht = s("ht").struct("<~@53 [~@7 x!3 ~@6] ~@21 [~@11 x!2 ~@3] ~@7>").gain(0.3)

// drums · mt
const mt = s("mt").struct("<~@53 [~@11 x!2 ~ x ~] ~@21 [~@2 x ~@2 x ~@10] ~@7>").gain(0.35)

// drums · shaker
const shaker = s("sh").struct("<[x!16]!53 [x!5 ~@11] [x!16]!28 ~>").gain(0.2)

// drums · claves
const claves = s("clave:2").struct("<~@6 A ~@7 A ~ A@6 ~@6 A ~@7 A ~ A@15 B ~@2 A ~@3 A ~@3 A ~ A@16 ~>".pickRestart({
  A: "~@2 x ~@2 x ~@10", B: "~ x ~@6",
})).gain(0.97)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
  ~@6 A ~@3 A ~@3 A ~ A@6 ~@6 A ~@3 A ~@3 A ~ A@15 B ~@2 A ~@3 A ~@3 A ~ A@16 ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~@10", B: "~ x ~@6",
})).gain(0.36)

stack(
  pad_warm, electric_guitar_clean, epiano1, banjo, pad_new_age, pad_metallic, bass, electric_guitar_muted, kick, rim,
  hihat, crash, bongos, congas, congas_2, congas_3, ht, mt, shaker, claves, woodblocks
)

More by Carboni