Strudelify

Sans toi, ma mie

Salvatore Adamo

KeyC majorTempo118 bpm
0:00/0:00
// Sans toi, ma mie — Salvatore Adamo
// 118 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 acoustic guitar nylon (copy of ch 4 acoustic guitar steel)
// note: Full arrangement: all 82 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · acoustic bass
const bass = note(`<
  ~ A B C D C E F G H@2 I C I J K L M@2 N O P Q R S T U V W X Y Z AA A B C D C E F G H@2 I C I J K L M@2 N O P Q AB S A
  B C D C E F G H@2 I C I J K L AC@2 AD N E G A B AE
>`.pickRestart({
  A: "c2@6 ~@2 e2@4 g2@3 ~", B: "c2@15 ~ g2@6 ~@2 g2@7 ~", C: "d2@14 ~@2 f2@7 ~ a2@7 ~", D: "d2@15 ~ f2@7 ~ a2@6 ~@2",
  E: "d2@15 ~ f2@8 a2@8", F: "g2@15 ~ d2@7 ~ d2@8", G: "g2@5 ~@27", H: "c2@13 ~@3 e2@7 ~ g2@6 ~@2",
  I: "d2@15 ~ f2@7 ~ a2@7 ~", J: "d2@14 ~@2 f2@8 a2@7 ~", K: "g2@16 d2@7 ~ d2@7 ~",
  L: "g2@10 ~@2 g2@2 ~@2 b2@7 ~ d3@4 b2@3 ~", M: "[c2@14 ~@2 e2@7 ~ g2@7 c2@16 e2@8 ~ g2@6 ~@2]/2",
  N: "a2@13 ~@2 c3@15 ~@2", O: "c2@8 ~@8 g2@6 ~ e2@6 ~@3", P: "f2@13 ~@3 a2@6 ~@2 c3@7 ~", Q: "f2@15 ~ a2@7 ~ c3@8",
  R: "f2@14 ~@2 f2@7 ~ f2@7 ~", S: "g2 ~@7", T: "c2@15 ~ e2@7 ~ g2@7 ~", U: "c2@14 ~@2 e2@8 g2@5 ~@3",
  V: "a2@16 c2@8 e2@7 ~", W: "a2@16 c2@7 ~ e2@7 ~", X: "d2@16 f2@8 a2@7 ~", Y: "g2@16 b1@7 ~ d2@7 ~",
  Z: "c2@16 e2@8 g2@7 ~", AA: "c2@7 ~@25", AB: "f2@14 ~@2 d2@7 ~ d2@7 ~",
  AC: "[c2@14 ~@2 e2@7 ~ g2@7 c2@16 e2@8 g2@6 ~@3]/2", AD: "a1@13 ~@2 c2@15 ~@2", AE: "c2@3 ~@5",
})).s("gm_acoustic_bass").gain(0.39)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A@2 B C B D E F A@2 B D B D E G H@2 I J K@3 L M N O P Q R L ~ A@2 S C S D E F A@2 S D S D E G H@2 T J K@3 L A@2 S U
  V W X F A@2 V W V W X@2 Y N Z AA AB ~ AC A ~
>`.pickRestart({
  A: "~@4 c4@2 ~ g4@3 ~@2 e4@2 ~@2 c5@2 ~@2 g4@2 ~@2 e4@3 ~ g4@2 ~@2, ~@3 e4 ~@12",
  B: "~@6 d4@2 f4@3 ~@2 d4@2 a4@3 ~@2 f4@2 ~@2 d4@3 ~ f4@3 ~, ~@5 a3@3 ~@24",
  C: "a3@2 ~@2 a3@2 ~ f4@3 ~@2 d4@2 ~@2 a4@3 f4@3 ~@2 d4@3 f4@2 ~@3, ~@3 d4 ~@12",
  D: "~@4 a3@2 ~ f4@3 ~@2 d4@2 ~@2 a4@3 f4@3 ~@2 d4@3 f4@2 ~@3, ~@3 d4 ~@12",
  E: "~@7 g4@2 ~@3 d4@3 ~ b4@2 ~@2 d4@2 ~ b3@3 ~ d4@2 ~@3, ~@5 b3@2 ~@25, ~@3 d4 ~@12", F: "g3 ~@15",
  G: "g3@2 ~@5 g4@2 ~@3 d4@3 ~ b4@2 ~@2 d4@2 ~ b3@3 ~ d4@2 ~@3, ~@5 b3@2 ~@25, ~@3 d4 ~@12",
  H: "~@5 e4@2 g4@2 ~@2 e4@2 ~@3 c5@2 ~@2 g4@2 ~@2 g4@5 ~@3, ~@2 c4 ~@13",
  I: "~@6 e4 g4@2 ~@2 e4@2 ~@2 c5@3 ~@2 g4@2 ~@2 g4@5 ~@3, ~@5 c4@2 ~@25",
  J: "~@5 c4@2 ~ a#4@2 ~@2 e4@2 ~@2 c5@2 ~ g4@2 ~@3 g4@5 ~@3, ~@7 e4@2 ~@23",
  K: "~@5 c4@2 f4@2 ~@3 c4 ~@2 a4@2 ~@2 f4@2 ~@11, ~@2 a3 ~@13", L: "g4 ~@15",
  M: "~@4 c4@2 ~ g4@2 ~@3 e4 ~@3 c5@2 ~@2 g4@2 ~@2 e4 ~@3 g4 ~@3, ~@3 e4 ~@12",
  N: "~@5 e4@2 g4@2 ~@3 e4 ~@3 c5@2 ~@2 g4 ~@3 e4 ~@7, ~@2 c4 ~@13",
  O: "~@6 c4 e4@2 ~@3 c4 ~@2 a4@3 ~@2 e4 ~@3 c4 ~@3 e4 ~@3, ~@5 a3@2 ~@25",
  P: "~@6 e4@2 ~@4 c4 ~@3 a4@2 ~@2 e4 ~@3 c4@2 ~ e4 ~@4, ~@2 a3 ~@13, ~@5 c4@2 ~@25",
  Q: "~@4 a3@2 ~ f4@2 ~@2 d4@2 ~@3 a4@3 ~ f4@2 ~@2 d4@2 ~@2 f4@2 ~@2, ~@3 d4 ~@12",
  R: "~@7 g4@2 ~@3 d4@2 ~@2 b4@2 ~@2 g4@2 ~@2 d4@2 ~ g4@2 ~@3, ~@5 b3@2 ~@25, ~@3 d4 ~@12",
  S: "~@4 a3@2 d4@2 f4@3 ~ d4@3 a4@3 ~@2 f4@2 ~@2 d4@3 f4@3 ~@2",
  T: "~@6 e4 g4@2 ~@2 e4@2 ~@2 c5@3 ~ g4@2 ~@3 g4@5 ~@3, ~@5 c4@2 ~@25",
  U: "a3@2 ~@3 d4@2 f4@3 ~@2 d4@2 ~@2 a4@3 f4@3 ~@2 d4@3 f4@2 ~@3, ~@2 a3 ~@13",
  V: "~@4 a3@2 ~ f4@3 ~@2 d4@3 a4@3 ~@2 f4@2 ~@2 d4@3 f4@3 ~@2, ~@3 d4 ~@12",
  W: "~@5 d4@2 f4@3 ~@2 d4@2 ~@2 a4@3 f4@3 ~@2 d4@3 f4@2 ~@3, ~@2 a3 ~@13",
  X: "~@7 g4@2 ~@3 d4@3 ~ b4@2 ~ d4@2 ~@2 b3@3 ~ d4@2 ~@3, ~@5 b3@2 ~@25, ~@3 d4 ~@12",
  Y: "~@4 c4@2 ~ g4@2 ~@3 e4 ~@3 c5@2 ~@2 g4@2 ~@2 e4 ~@2 g4 ~@4, ~@3 e4 ~@12",
  Z: "~@4 a3@2 c4 e4@2 ~@3 c4 ~@2 a4@3 ~@2 e4 ~@3 c4 ~@2 e4 ~@4",
  AA: "~@3 a3@2 ~ e4@2 ~@3 c4 ~@3 a4@2 ~@2 e4 ~@4 c4@2 ~ e4 ~@4, ~@5 c4@2 ~@25",
  AB: "~@5 d4@2 f4@2 ~@2 d4@2 ~@3 a4@3 ~ f4@2 ~@2 d4@2 ~@2 f4@2 ~@2, ~@4 a3@3 ~@25",
  AC: "g4@2 ~@2 c4@2 ~ g4@3 ~@2 e4@2 ~@2 c5@2 ~@2 g4@2 ~@2 e4@3 ~ g4@2 ~@2, ~@3 e4 ~@12",
})).s("gm_electric_guitar_muted").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B@4 C D A@2 B@4 C@2 A@2 E F G@3 H A@2 E@2 I J K L K@2 M@4 J D K@2 M@4 J@2 K@2 N O P@3 H K@2 Q R@3 S D T@2 R@4
  S@2 T@2 U@2 R D T@2 V
>`.pickRestart({
  A: "g3@4 e4 ~ c4@5 [c4,e4] [c4,e4]@4 [g3,c4,e4]@4 [g3,c4,e4,g4]@4 [g3,c4,e4]@4 [g3,c4,e4,g4]@4, c3@19 ~@13, ~@4 [g3,g4]@7 [g3,g4]@5 ~@16, ~@2 c4 ~@13, ~@5 e4@6 ~@21", // C G
  B: "a3@4 f4 ~ d4@5 [d4,f4] [d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4,a4]@4 [a3,d4,f4]@4 [a3,d4,f4,a4]@4, d3@19 ~@13, ~@4 [a3,a4]@7 [a3,a4]@5 ~@16, ~@2 d4 ~@13, ~@5 f4@6 ~@21", // Dm A
  C: "g3@4 g4 ~ d4@5 [b3,d4,g4] d4@4 [g3,d4]@4 [g3,d4,g4,b4]@4 [g3,d4,g4]@4 [g3,d4,b4]@4, d3@19 ~@13, ~ g3@3 ~@4, ~@2 b4@3 ~@3 b4 ~@7, ~@4 d4 g4@6 ~ g4@8 ~@12", // G G5 G G5 G
  D: "[b3,d4,g4]@17 ~@15, g3@7 ~@9", // G
  E: "~@6 c4@5 [c4,e4] [c4,e4]@4 [a3,c4,e4]@4 [a3,c4,e4,a4]@4 [a3,c4,e4]@4 [a3,c4,e4,a4]@4, [a2,e3]@5 ~@3, ~@4 [a3,a4]@6 ~ a3@2 ~@19, ~@2 c4 ~@13, ~@5 e4@6 a4@4 ~@17", // C Am A5 A
  F: "g3@4 e4 ~ c4@5 [c4,e4] [c4,e4]@4 [g3,c4,e4]@4 [g3,c4,e4,a#4]@4 [g3,c4,e4]@4 [g3,c4,e4,a#4]@4, c3@19 ~@13, ~@4 [g3,a#3]@7 [g3,a#4]@5 ~@16, ~@2 c4 ~@13, ~@5 e4@6 ~@21", // C C7 C C7 Gm
  G: "a3@4 f4 ~ c4@5 [c4,f4] [c4,f4]@4 [a3,c4,f4]@4 [a3,c4,f4,a4]@4 [a3,c4,f4]@4 [a3,c4,f4,a4]@4, c3@19 ~@13, ~@4 [a3,a4]@7 [a3,a4]@5 ~@16, ~@2 c4 ~@13, ~@5 f4@6 ~@21", // F5 F A
  H: "[g3,b3,d4,g4,b4]@3 ~@13", // G
  I: "a3@4 f4 ~ d4@5 [d4,f4] [d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4,a4]@4 [a3,d4,f4]@3 ~ d4@4, d3@19 ~@13, ~@4 [a3,a4]@7 [a3,a4]@5 ~@11 [a3,f4,a4]@5, ~@2 d4 ~@13, ~@5 f4@6 ~@21", // Dm A Dm
  J: "g3@3 ~ g4 ~ d4@5 [b3,d4,g4] d4@4 [g3,d4]@4 [g3,d4,g4,b4]@4 [g3,d4,g4]@3 d4 d4@4, d3@19 ~@13, ~@3 b4@6 ~@7 b4@2 ~@14, ~@4 g3@12 ~@11 [g3,b4]@5, ~@4 d4 g4@6 ~ g4@8 ~@12", // G G5 G G5 G
  K: "g3@3 ~ e4 ~ c4@5 [c4,e4] [c4,e4]@4 [g3,c4,e4]@4 [g3,c4,e4,g4]@4 [g3,c4,e4]@3 ~ c4@4, c3@19 ~@13, ~@3 g4@6 ~@23, ~@4 g3@7 [g3,g4]@5 ~@11 [g3,e4,g4]@5, ~@4 c4 e4@6 ~@21", // C G C
  L: "[c3,g3,c4,e4,g4]@3 ~@13", // C
  M: "a3@3 ~ f4 ~ d4@5 [d4,f4] [d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4,a4]@4 [a3,d4,f4]@3 ~ d4@4, d3@19 ~@13, ~@3 a4@6 ~@23, ~@4 a3@7 [a3,a4]@5 ~@11 [a3,f4,a4]@5, ~@4 d4 f4@6 ~@21", // Dm A Dm
  N: "~@6 c4@5 [c4,e4] [c4,e4]@4 [a3,c4,e4]@4 [a3,c4,e4,a4]@4 [a3,c4,e4]@3 ~ c4@4, [a2,e3]@5 ~@3, ~@3 a4@6 ~@2 a4@4 ~@17, ~@4 a3@6 ~ a3@2 ~@14 [a3,e4,a4]@5, ~@4 c4 e4@6 ~@21", // C Am A5
  O: "g3@3 ~ e4 ~ c4@5 [c4,e4] [c4,e4]@4 [g3,c4,e4]@4 [g3,c4,e4,a#4]@4 [g3,c4,e4]@3 ~ c4@4, c3@19 ~@13, ~@3 a#3@6 ~@23, ~@4 g3@7 [g3,a#4]@5 ~@11 [g3,e4,a#4]@5, ~@4 c4 e4@6 ~@21", // C C7 C Gm Edim
  P: "a3@3 ~ f4 ~ c4@5 [c4,f4] [c4,f4]@4 [a3,c4,f4]@4 [a3,c4,f4,a4]@4 [a3,c4,f4]@3 ~ c4@4, c3@19 ~@13, ~@3 a4@6 ~@23, ~@4 a3@7 [a3,a4]@5 ~@11 [a3,f4,a4]@5, ~@4 c4 f4@6 ~@21", // F5 F A Dm
  Q: "a3@3 ~ f4 ~ d4@5 [d4,f4] [d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4,a4]@4 [a3,d4,f4]@3 [a3,d4,f4,a4]@5, d3@19 ~@13, ~@3 a4@6 ~@23, ~@4 a3@7 [a3,a4]@5 ~@16, ~@4 d4 f4@6 ~@21", // Dm A
  R: "a3@3 ~@3 d4@5 [d4,f4] [d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4,a4]@4 [a3,d4,f4]@3 [a3,d4,f4,a4]@5, d3@19 ~@13, ~@3 a4@6 ~@23, ~@3 f4 d4 f4@6 ~@21, ~@4 a3@7 [a3,a4]@5 ~@16", // Dm A
  S: "g3@3 ~@3 d4@5 [b3,d4,g4] d4@4 [g3,d4]@4 [g3,d4,g4,b4]@4 [g3,d4,g4]@3 [g3,d4,b4]@5, d3@19 ~@13, ~@3 b4@6 ~@7 b4@2 ~@14, ~@3 g4 d4 g4@6 ~ g4@8 ~@12, ~ g3@3 ~@4", // G G5 G G5 G
  T: "g3@3 ~@3 c4@5 [c4,e4] [c4,e4]@4 [g3,c4,e4]@4 [g3,c4,e4,g4]@4 [g3,c4,e4]@3 [g3,c4,e4,g4]@5, c3@19 ~@13, ~@3 g4@6 ~@23, ~@3 e4 c4 e4@6 ~@21, ~@4 g3@7 [g3,g4]@5 ~@16", // C G
  U: "~@3 c4 ~@2 c4@5 [c4,e4] [c4,e4]@4 [a3,c4,e4]@4 [a3,c4,e4,a4]@4 [a3,c4,e4]@3 [a3,c4,e4,a4]@5, [a2,e3]@5 ~@3, ~@3 a4@6 ~@2 a4@4 ~@17, ~@4 a3@6 ~ a3@2 ~@19, ~@4 c4 e4@6 ~@21", // C Am A5
  V: "[c3,g3,c4]@3 ~@5, [e4,g4]@7 ~@25", // C5 Em
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.4)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@32 A B C D E F G H I J K D L M N O ~@34>".pickRestart({
  A: "~@12 g4@4 c5@3 e5@4 ~ d5@4 c5@4", B: "g4@15 ~", C: "~@4 g4@4 f#4@3 g4@4 ~ c5@7 c5@4 ~ b4@4",
  D: "b4@7 ~ d5@3 ~ a#4@3 ~ a4@16", E: "~@11 a4@3 ~ a4@4 ~ g4@3 ~ f4@3 ~ g4@3 ~", F: "a4@15 ~",
  G: "~@7 a4@5 ~ a4@3 f5@5 ~ f5@5 e5@3 ~@2", H: "e5@12 f5@3 ~ d5@15 ~", I: "~@4 e5@7 ~ e5@3 ~ e5@5 ~ d5@5 c5@4 ~",
  J: "g4@13 ~@3", K: "~@4 e4@4 d#4@3 e4@4 ~ c5@7 c5@4 ~ b4@4", L: "~@5 a4@5 ~ a4@4 ~ a4@4 g4@4 f4@4 g4@3 ~",
  M: "a4@6 a4@9 ~", N: "~@4 a4@6 ~ a4@4 f5@5 ~ f5@5 ~ e5@4 ~", O: "e5@11 ~ d5@4 d5@16",
})).s("gm_electric_guitar_jazz").gain(0.47)

// drums · snare
const snare = s("sd").struct("<A B@7 A B@15 A B@7 A B@7 A B@15 A B@7 A B@13 A B@2 ~>".pickRestart({
  A: "~@31 x", B: "~@5 x!3 ~@3 x ~@7 x ~@7 x ~@3 x",
})).gain(0.27)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@7 ~ A@15 ~ A@7 ~ A@7 ~ A@15 ~ A@7 ~ A@13 ~ A@2 ~>".pickRestart({
  A: "~@4 x ~@10 x ~@7 x ~@8",
})).gain(0.18)

// drums · hihat
const hihat = s("hh").struct("<~ A@6 B ~ A@14 B ~ A@6 B ~ A@6 B ~ A@14 B ~ A@6 B ~ A@12 B ~ A B ~>".pickRestart({
  A: "~@23 x ~@3 x ~@4", B: "~@23 x ~@3 x ~@3 x",
})).gain(0.27)

stack(bass, electric_guitar_muted, acoustic_guitar_steel, electric_guitar_jazz, snare, snare_soft, hihat)

More by Salvatore Adamo