Strudelify

Le Petit Cheval

Brassens Georges

KeyC majorTempo190 bpm
0:00/0:00
// Le Petit Cheval — Brassens Georges
// 190 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(190/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 · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B C D E@2 F G H I@3 J K F G H I@3 L M N G O I P Q R F@2 G H I@3 J K F G H I@3 L M N G O I P Q R F@2 G H I@3 J K F G
  H I@3 L M N G O I P Q R F@2 G H I@3 J K F G H I@3 L M N G O I P Q R F@2 G H I@3 J K F G H I@3 L M N G O I P Q R F S T
  U V@3 W X S T U V@3 Y Z AA T AB V AC AD AE AF@2 AG@2 AH@2
>`.pickRestart({
  A: "c3 ~ c4 ~ c3 ~ c4 ~", B: "c3 ~ c4 ~ c3 ~ [c4,g4,e5] ~, [e4,c5] ~",
  C: "c3 ~ c4 ~ [c3,g4,e5] ~ [c4,e4,c5] ~, [c5,g5]@3 ~@5", D: "g2 ~ g3 ~ g2 ~ g3 ~, [g4,e5]@7 ~ [f4,d5]@6 ~@2",
  E: "[c2 ~ c3 ~ c2 ~ c3 ~ c2 ~ c3 ~ c2 ~ g3 ~, [e4,c5]@23 ~@9]/2", F: "c3@4 [c4,e4,g4]@3 ~ c3@4 [c4,e4,g4]@3 ~",
  G: "c3@4 [c4,g4,c5]@3 ~ c3@4 [c4,g4,c5]@3 ~", H: "f3@4 [c4,c5,f5]@3 ~ f3@4 [c4,c5,f5]@3 ~",
  I: "c3@4 [c4,c5,e5]@3 ~ c3@4 [c4,c5,e5]@3 ~", J: "g3@4 [e4,g4,c5]@2 ~@2 g3@4 [e4,g4,c5]@3 ~",
  K: "[g3,d5]@3 ~ [f4,a4]@4 [g4,b4]@4 [f4,d5]@3 ~", L: "c3@4 [c4,g4,c5]@3 ~ c3@4 [c4,c5,e5]@2 ~@2",
  M: "g3@3 ~ [d4,f4,b4]@4 [c4,f4,a4]@4 [b3,f4,g4]@3 ~", N: "[c3,c5]@4 [c4,e4,g4]@3 ~ [c3,e5]@4 [c4,g4,c5]@3 ~",
  O: "c3@4 [c4,c5,f5]@3 ~ c3@4 [c4,c5,f5]@3 ~", P: "c3@4 [c4,c5,e5]@3 ~ e3@4 [c4,c5,e5]@3 ~",
  Q: "f3@4 [c4,f4,a4,c5]@3 ~ d3@4 [c4,f4,a4,c5]@3 ~", R: "g3@4 [c4,f4,a4,c5]@3 ~ g2@4 [g3,f4,b4]@3 ~",
  S: "c#3@4 [c#4,f4,g#4]@3 ~ c#3@4 [c#4,f4,g#4]@3 ~", T: "c#3@4 [c#4,g#4,c#5]@3 ~ c#3@4 [c#4,g#4,c#5]@3 ~",
  U: "f#3@4 [c#4,c#5,f#5]@3 ~ f#3@4 [c#4,c#5,f#5]@3 ~", V: "c#3@4 [c#4,c#5,f5]@3 ~ c#3@4 [c#4,c#5,f5]@3 ~",
  W: "g#3@4 [f4,g#4,c#5]@2 ~@2 g#3@4 [f4,g#4,c#5]@3 ~", X: "[g#3,d#5]@3 ~ [f#4,a#4]@4 [g#4,c5]@4 [f#4,d#5]@3 ~",
  Y: "c#3@4 [c#4,g#4,c#5]@3 ~ c#3@4 [c#4,c#5,f5]@2 ~@2", Z: "g#3@3 ~ [d#4,f#4,c5]@4 [c#4,f#4,a#4]@4 [c4,f#4,g#4]@3 ~",
  AA: "[c#3,c#5]@4 [c#4,f4,g#4]@3 ~ [c#3,f5]@4 [c#4,g#4,c#5]@3 ~", // C# C#5
  AB: "c#3@4 [c#4,c#5,f#5]@3 ~ c#3@4 [c#4,c#5,f#5]@3 ~", AC: "c#3@4 [c#4,c#5,f5]@3 ~ f3@4 [c#4,c#5,f5]@3 ~",
  AD: "f#3@4 [c#4,f#4,a#4,c#5]@3 ~ d#3@4 [c#4,f#4,a#4,c#5]@3 ~", // F#
  AE: "g#3@4 [c#4,f#4,a#4,c#5]@3 ~ g#2@4 [g#3,f#4,c5]@3 ~", AF: "f3 [c#4,f4,g#4,c#5] f3 [c#4,f4,g#4,c#5]",
  AG: "e3 [c#4,e4,g#4,c#5] e3 [c#4,e4,g#4,c#5]", AH: "[~ g#4@11 ~@4, f3@3 ~, ~ b3@23 ~@8]/2",
})).s("gm_electric_guitar_jazz").gain(0.2)

// chords · reed organ
const reed_organ = note(`<
  ~@30 A@2 B A@2 C A D A C E C A C A D A C E C A F G H A@2 B A@2 C A D A C E C A C A D A C E C A F G H ~@48 I@2 J I@2 K
  I L I K M K I K I L I K M K I N O P@2 Q@2 R@2
>`.pickRestart({
  A: "c3 [c4,e4] g2 [c4,e4]", B: "f2@2 [c4,f4]@2 ~ [c4,f4] ~ [c4,f4], ~@2 c3!2",
  C: "c3@2 [c4,e4]@2 ~ [c4,e4] ~ [c4,e4], ~@2 g2 c3", D: "d3 [b3,d4] g2 [b3,d4]", E: "f2 [c4,f4] c3 [c4,f4]",
  F: "d3 [d4,f4] a2 [d4,f4]", G: "d3@6 ~@2 [b3,d4]@7 ~", H: "[g3,c4,e4]@7 ~", I: "c#3 [c#4,f4] g#2 [c#4,f4]",
  J: "f#2@2 [c#4,f#4]@2 ~ [c#4,f#4] ~ [c#4,f#4], ~@2 c#3!2", K: "c#3@2 [c#4,f4]@2 ~ [c#4,f4] ~ [c#4,f4], ~@2 g#2 c#3",
  L: "d#3 [c4,d#4] g#2 [c4,d#4]", M: "f#2 [c#4,f#4] c#3 [c#4,f#4]", N: "d#3 [d#4,f#4] a#2 [d#4,f#4]",
  O: "d#3@6 ~@2 [c4,d#4]@7 ~", P: "[[c#4,f4]@7 ~, g#4 ~]/2", Q: "[[g#3,e4]@7 ~, g#4 ~]/2", R: "[[c#4,f4,a#4]@3 ~]/2",
})).s("gm_reed_organ").gain(0.15).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note("<~@54 A@2 B A@4 C A@2 D@2 A@2 E@2 A@2 B A@2 F G H ~@77>".pickRestart({
  A: "[c3,e4,g4,c5]", B: "[f3,f4,a4,c5]", C: "[g3,d4,g4,b4]", D: "[[f3,f4,a4] [c3,e4,g4], c5@31 ~]/2",
  E: "[[c3,e4,c5] [g3,d4,b4], g4@31 ~]/2", F: "[g2,g3,d4,g4]", G: "~ [g2,d4,f4]", H: "[c3,e4,c5]@3 ~",
})).s("gm_synth_strings_1").gain(0.26)

// other · violin
const violin = note(`<
  ~@78 A B C D A B E F A B C D A G E H A I J K L M N O A B C D A B E F A B C D A G E H A I J K L M N O ~@29
>`.pickRestart({
  A: "c5@2 ~@2 c5@2 d5@2 e5@3 ~ c5@2 d5@2", B: "e5@3 ~ c5@2 d5@2 e5@4 c5@2 ~@2", C: "a5@3 f5", D: "g5 ~ e5@2 c5@2 ~@2",
  E: "e5@3 g5", F: "d5 ~ b4@2 g4@2 ~@2", G: "e5@3 ~ c5@2 d5@2 e5@3 ~ e5@2 ~@2", H: "d5 ~ b4 g4 b4 d5 b4 d5",
  I: "e5@6 c5 ~", J: "f5 c5 a4 f4 c5@4", K: "g4@4 e4@3 ~", L: "c5!2", M: "e5", N: "~ d5", O: "c5",
})).s("gm_violin").gain(0.15).pan(0.6)

// other · flute
const flute = note("<~@102 A B C D A E F G A B H D A I J G A B K D L M N O ~@29>".pickRestart({
  A: "e5@2 ~@2 e5@2 d5@2 c5@3 ~ e5@2 d5@2", B: "c5@3 ~@3 e5@2", C: "a5@6 f5 a5", D: "g5 ~ e5@2 c5@3 ~",
  E: "c5@3 ~@3 e5 ~", F: "e5@3 g5", G: "d5 ~ d5 b4 g4@3 ~", H: "a5@3 ~ a5 ~ f5 a5", I: "c5@3 ~@3 c5@2",
  J: "e5@7 ~ g5@7 ~", K: "a5@4 ~ a5 f5 a5", L: "c5!2", M: "e5", N: "~ d5", O: "c5",
})).s("gm_flute").gain(0.2).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@54 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B ~@29
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3",
})).gain(0.26)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@54 [~ x ~ x]!72 ~@29>").gain(0.26)

stack(electric_guitar_jazz, reed_organ, synth_strings_1, violin, flute, kick, pedal_hat)

More by Brassens Georges