Strudelify

Brave Margot

Brassens Georges

KeyC majorTempo125 bpm
0:00/0:00
// Brave Margot — Brassens Georges
// 125 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24.
setcpm(125/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 · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C@2 D E F G D E H I J@3 K J@3 L D C M C F G C N D C M C F G C O D E F G D E H I J@3 K J@3 L D C M C F G C N D C M
  C F G C O D E F G D E H I J@3 K J@3 L D C M C F G C N D C M C F G C P Q R@2
>`.pickRestart({
  A: "c4@8 c#4@7 ~", B: "d4@3 c4 b3@2 a3 ~ g3@2 f3@2 e3 ~ d3@2",
  C: "c3@3 ~ g2@2 [c4,e4]@2 c3@2 [g3,c4,e4]@2 g2@2 [g3,c4,e4]@2", // C
  D: "d3 [b3,f4] g2 [g3,b3,f4] d3 [g3,b3,f4] g2 [g3,b3,f4]", E: "d3 [g3,b3,f4] ~ [g3,b3,f4] c3 e4 g2 [c4,e4], ~ g2 ~@2",
  F: "~ [g3,c4,e4] g2 [g3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4], c3 ~ a2 e3", // C Am
  G: "d3 [a3,d4,f#4] ~ [a3,d4,f#4] ~ [g3,b3,f4] ~ [g3,b3,f4], ~ a2 g2 d3", // D G7
  H: "a2 [a3,c4,e4] ~ [a3,c4,e4] g2 [f3,b3] g2 [d3,f3,b3], ~ e3 ~@2", // Am Fdim Bdim
  I: "c3@2 [g3,c4,e4]@2 g2@2 [g3,c4,e4]@2 c3@3 ~ [c3,g3,c4,e4]@4", // C
  J: "a2 [a3,c4,e4] a2 [a3,c4,e4] e2 [g3,b3,e4] ~ [g3,b3,e4], ~@3 e2", // Am Em
  K: "a2 [a3,c4,e4] e2 [a3,c4,e4] a2 [a3,c4,e4] e2 [a3,c4,e4]", // Am
  L: "d3@2 [a3,c4,f#4]@2 ~@2 [a3,c4,f#4]@2 [g2,g3,b3,f4]@3 [g2,g3,b3,f4]@5, ~ a2 ~@2", // F#dim G7
  M: "c3 [g3,c4,e4] c3 [c4,e4] d3 [a3,d4,f#4] d3 [a3,d4,f#4]", // C D
  N: "g#2 [c4,d#4,g#4] d#2 [d#4,g#4] g#2 [c4,d#4,g#4] d#2 [c4,d#4,g#4]", // G# G#5 G#
  O: "g#2 [c4,d#4,g#4] d#2 [d#4,g#4] c3 [g3,c4,e4] g2 [g3,c4,e4]", // G# G#5 C
  P: "g#2 [c4,d#4,g#4] ~ [d#4,g#4] g#2 [d#4,g#4] ~ [c4,d#4,g#4], ~ d#3 ~ d#3", // G# G#5 G#
  Q: "~ [c4,e4,g4] ~ [c4,e4,g4] g#2 [d#4,g#4] g#2 [c4,d#4,g#4], c3 g2 ~@2", // C G#5 G#
  R: "[[c3,g3,c4,e4]@3 ~ [g2,d4]@3 ~ [g3,c4,e4]@23 ~, ~@4 [g3,b3]@2 ~ c3@23 ~@2]/2", // C G5 C G
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@2 A@2 B C ~@2 B C D ~@9 B A E A ~@2 A F B A E A ~@2 A F B C ~@2 B C D ~@9 B A E A ~@2 A F B A E A ~@2 A F B C ~@2 B
  C D ~@9 B A E A ~@2 A F B A E A ~@2 A G H ~@2
>`.pickRestart({
  A: "~ [g3,c4,e4] ~ g3 ~@4", B: "~ g3 ~@6", C: "~@5 [g3,c4] ~ g3", D: "~@5 d3 ~@2", E: "~@3 g3 ~@4", F: "~@3 c4 ~@4",
  G: "~@6 c4@2 ~@2 c4@3 ~@3", H: "~@5 c4 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.16)

// bass · acoustic bass
const bass = note(`<
  ~@2 A B C D E F G H I J K L@2 M N O P Q R S T U V W X Y R S Z U AA AB S Y C D E F G H I J K L@2 M N O P Q R S T U V W
  X Y R S Z U AA AB S Y C D E F G H I J K L@2 M N O P Q R S T U V W X Y R S Z U AA AB AC AD AE AF@2
>`.pickRestart({
  A: "c2@4 g2@3 ~ c2@3 ~ g2@3 ~", B: "c2@3 ~ g2@3 ~ c2@4 g2@3 ~", C: "d2@2 ~@2 g2@3 ~ d2@4 g2@3 ~",
  D: "d2@4 g2@3 ~ c2@3 ~ g2@3 ~", E: "c3@3 ~ g2@3 ~ e2@3 ~ a2@3 ~", F: "d2@3 ~ a2@3 ~ g2@3 ~ d2@3 ~",
  G: "f2@2 ~@2 g2@3 ~ d2@3 ~ g2@3 ~", H: "d2@3 ~ g2@3 ~ c2@3 ~ c3@3 ~", I: "a2@3 ~ a2@3 ~ d2@3 ~ g2@3 ~",
  J: "c3@3 ~ g2@3 ~ c2@4 c3@4", K: "a2@2 ~@2 a2@3 ~ e2@7 ~", L: "a2@3 ~ a2@3 ~ e2@7 ~", M: "a2 ~ e2 ~ a2 ~ e2 ~",
  N: "a2@3 ~ a2@2 ~@2 e2@6 e2 ~", O: "a2@3 ~ a2@3 ~ e2@6 e2 ~", P: "a2@3 ~ a2@3 ~ e2@3 ~ e2@3 ~",
  Q: "d2@2 f2 ~ g2 ~ a2@2 b2@3 ~ g2@3 ~", R: "d2@2 ~@2 g2@3 ~ d2@3 ~ g2@3 ~", S: "c2@3 ~ g2@3 ~ c2@3 ~ g2@3 ~",
  T: "c2@2 ~@2 c2@3 ~ d2@3 ~ d2@2 d#2@2", U: "e2@3 ~ c2@3 ~ e2@3 ~ g2@3 ~", V: "c3@3 ~ c3@3 ~ a2@3 ~ a2@3 ~",
  W: "d2@3 ~ d2@3 ~ g2 ~ f2@2 e2@2 d2@2", X: "c2@3 ~ c2@3 ~ c2@3 ~ g2@3 ~", Y: "g#2@3 ~ g#2@3 ~ c2@3 ~ g2@3 ~",
  Z: "c2@3 ~ e2@3 ~ d2@3 ~ d#2@3 ~", AA: "c2@3 ~ c2@3 ~ a2@3 ~ a2@3 ~", AB: "d2@3 ~ d2@3 ~ g2@2 f2@2 e2@2 d2@2",
  AC: "c2@3 ~ g2@3 ~ g2@3 ~ g2@3 ~", AD: "g#2@3 ~ g#2@3 ~ g#2@3 ~ g#2@3 ~", AE: "c2@3 ~ c2@3 ~ g#2@3 ~ g#2@3 ~",
  AF: "[c2@3 ~ g1@3 ~ c2@22 ~@2]/2",
})).s("gm_acoustic_bass").gain(0.48)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon_3 = note(`<
  ~@4 A B ~ C A B D E F@2 G ~ F@2 G H A ~ I ~@2 J K L A ~ I ~@2 J K ~ A B ~ C A B D E F@2 G ~ F@2 G H A ~ I ~@2 J K L A
  ~ I ~@2 J K ~ A B ~ C A B D E F@2 G ~ F@2 G H A ~ I ~@2 J K L A ~ I ~@2 J K L M ~@2
>`.pickRestart({
  A: "~@2 d3 ~@3 d3 ~@3 d3 ~@3 d3 ~", B: "~@2 d3 ~@3 d3 ~@9", C: "~@6 c#4 ~@3 d3 ~@3 d3 ~",
  D: "~@2 g3 ~@7 g3 ~ d2@2 g3 ~", E: "~@9 g2@7, ~@7 c2@9, ~ [e3,g3]", F: "~@4 e4@3 ~ g3@5 ~@3",
  G: "~@4 c4@5 ~@3 b3@4, e3@3 ~@5", H: "~@2 d4@2 d3@2 d4 ~ d4@3 ~ [g2,g3,b3,d4]@4", I: "~@12 a2@3 ~",
  J: "~@10 d3 ~@3 d3 ~", K: "~@2 b3 ~@13", L: "~@8 c3@2 [e3,g3] ~ g2@2 [e3,g3] ~", M: "~@12 d#2@3 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

stack(acoustic_guitar_nylon, acoustic_guitar_nylon_2, bass, acoustic_guitar_nylon_3)

More by Brassens Georges