Strudelify
KeyD majorTempo175 bpm
0:00/0:00
// Bidon — Alain Souchon
// 175 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 piano (copy of ch 4 string ensemble 2); ch 5 trombone (copy of ch 4 string ensemble 2)
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(175/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 E F G H I J K L M B N O I J K L M P C Q R K R K R S M B C O I J K L M B C O I J K L M B C Q R K R K R S I T
  U@2 V U W X W X U@2 V U W X W Y Z AA@2 AB I J K L M B C O I J K L M B C Q R K R K R S I T U@2 V U W X W X U@2 V U W X
  W Y U@2 V U W X W AC AD
>`.pickRestart({
  A: "~@12 a2@3 ~", B: "g#2@9 ~@3 g#2@3 ~", C: "f#2@9 ~@3 f#2@3 ~", D: "e2@9 ~@3 e2@3 ~",
  E: "a2@5 ~ a2@2 a2@3 ~ a2@3 ~", F: "g#2@5 ~ g#2@2 g#2@3 ~ g#2@3 ~", G: "f#2@5 ~ f#2@2 f#2@3 ~ f#2@3 ~",
  H: "e2@5 ~ e2@2 e2@6 ~@2", I: "a2@5 ~ a2@2 a2@3 ~@5", J: "g#2@5 ~ g#2@2 g#2@3 ~@5", K: "f#2@5 ~ f#2@2 f#2@3 ~@5",
  L: "e2@5 ~ e2@2 e2@3 ~@5", M: "a2@9 ~@3 a2@3 ~", N: "f#2@10 ~@2 f#2@3 ~", O: "e2@3 ~ e2@3 ~", P: "g#2@10 ~@2 g#2@3 ~",
  Q: "f#2@3 ~ b1@3 ~", R: "b2@5 ~ b2@2 b2@3 ~@5", S: "b2@3 ~@5 b2@3 ~@5", T: "c#3@5 ~ c#3@2 c#3@3 ~@5",
  U: "d2@3 ~@5 d2@3 ~@5", V: "d2@3 ~@5 f#2@3 ~@5", W: "g1@3 ~ b1@3 ~ d2@3 ~ e2@3 ~", X: "f2@3 ~ e2@3 ~ d2@3 ~ b1@3 ~",
  Y: "f2@3 ~ e2@3 ~ d2@6 ~@2", Z: "c3@5 ~ g2@2 c3@3 ~@5", AA: "[c3@3 ~ c3@3 ~@5 e2@7 ~@13]/2",
  AB: "e2@5 ~ e2@2 e2@3 ~ e2@3 ~", AC: "d2@3 ~ d2@3 ~ e2@3 ~ f#2@3 ~", AD: "g2@3 ~@5 g2@6 ~@2",
})).s("gm_acoustic_bass").gain(0.16)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@8 B C D E F@4 B C D E G@4 H I J I H K F@4 B C D E F@4 B C D E G@4 H I J I H K L M N@2 O@2 P Q P Q N@2 O@2 P Q P R S
  T@2 U B C D E F@4 B C D E G@4 H I J I H K L M N@2 O@2 P Q P Q N@2 O@2 P Q P R N@2 O@2 P Q V W X
>`.pickRestart({
  A: "[~@8 a4@2 b4@12 ~@2 e5@2 c#5@12 ~@2 a4@2 b4@12 ~@2 c#5@3 ~ e4@10 ~@2 a4@2 b4@12 ~@2 e5@2 c#5@12 ~@2 a4@2 b4@12 ~@2 e4@6 ~@2]/8",
  B: "a4@13 ~@3", C: "g#4@13 ~@3", D: "f#4@13 ~@3", E: "e4@13 ~@3",
  F: "[e4@6 ~@2 a4@2 b4@12 ~@2 e5@2 c#5@12 ~@2 a4@2 b4@12 ~@2 c#5@2 e4@5 ~]/4",
  G: "[e4@6 ~@2 a4@2 b4@12 ~@2 e5@2 c#5@12 ~@2 a4@2 f#4@12 ~@2 e4@2 d4@5 ~]/4", H: "[f#4,b4,d5]@3 ~@9 [f#4,b4,d5]@3 ~",
  I: "[e4,a#4,c#5]@3 ~@9 [e4,a#4,c#5]@3 ~", J: "[d4,f#4,b4]@3 ~@9 [d4,f#4,b4]@3 ~",
  K: "[a4,c#5]@3 ~ [d#4,b4]@3 ~ [d#4,a4]@3 ~ [d#4,f#4]@3 ~", L: "[e4,a4,c#5]@3 ~ [e4,a4,c#5]@3 ~",
  M: "[e4,g#4,c#5]@3 ~ [e4,g#4,c#5]@3 ~", N: "[f#4,a4,d5]@3 ~@5 [f#4,a4,d5]@3 ~@5",
  O: "[f#4,c5,d5]@3 ~@5 [f#4,c5,d5]@3 ~@5", P: "[g4,b4,d5]@2 [g4,b4,d5]@5 ~@9", Q: "~@7 d5", R: "~@5 d5 e5 d5",
  S: "e5@2 f5@2 e5@2 d5@2 [e4,g4,c5]@3 ~ e5@2 f5@2", // C
  T: "[e5@2 d5@2 [e4,g4,c5]@3 ~ d5@3 ~ [g#4,d5,e5]@7 ~ [d#4,d#5]@3 ~ [d4,d5]@3 ~ [c#4,c#5]@3 ~]/2", // C E7 D# D C#
  U: "[e4,g#4,b4,d5]@3 ~@5", V: "[g4,b4,d5]@2 [g4,b4,d5]@5 ~@7 [d4,d5]@2",
  W: "[d4,d5]@3 ~ [d4,d5]@3 ~ [e4,e5]@3 ~ [f#4,f#5]@3 ~", X: "[g4,g5]@3 ~@5 [g3,g4]@6 ~@2",
})).s("gm_string_ensemble_2").gain(0.17)

// bass · vibraphone
const bass_2 = note("<~@62 A B A B ~@4 A B A C ~@33 B A B D ~@3 A B A C D ~@3 E@2 F G H>".pickRestart({
  A: "g1@3 ~ b1@3 ~ d2@3 ~ e2@3 ~", B: "f2@3 ~ e2@3 ~ d2@3 ~ b1@3 ~", C: "f2@3 ~ e2@3 ~ d2@6 ~@2",
  D: "d2@3 ~@5 d2@3 ~@5", E: "[g1@3 b1@3 ~ d2@3 ~@2 e2@3 f2@3 ~@2 e2@3 d2@3 ~ b1@3 ~@2]/2",
  F: "g1@3 ~ b1@3 d2@3 ~ e2@3 ~@2", G: "d2@3 ~ d2@3 ~ e2@3 ~ f#2@3 ~", H: "g2@3 ~@5 g2@6 ~@2",
})).s("gm_electric_bass_finger").gain(0.5)

stack(bass, string_ensemble_2, bass_2)

More by Alain Souchon