Strudelify

Elle etait si jolie

Alain Barriere

KeyC minorTempo100 bpm
0:00/0:00
// Elle etait si jolie — Alain Barriere
// 100 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// other · rock organ · "Elect.organ"
const rock_organ = note(`<
  A B C D@2 E F G H I J A K L M E N G O P Q R S T U V W X Y Z AA AB AC AD AE AF Q ~@16 E F G H I J A K L M E N G O P Q G
  AG AH AI AJ
>`.pickRestart({
  A: "bb3 eb4 g4 bb4 bb3 eb4 g4 bb4", B: "b3 f4 g4 b4 b3 f4 g4 b4", C: "c4 eb4 g4 c5 c4 eb4 g4 c5",
  D: "[d4 f4 g4 d5 d4 f4 g4@6 ~@4]/2", E: "g3 bb3 eb4 g4 g3 bb3 eb4 g4", F: "g3 b3 f4 g4 g3 b3 f4 g4",
  G: "g3 c4 eb4 g4 g3 c4 eb4 g4", H: "f3 c4 f4 g4 g3 c4 eb4 g4", I: "c4 eb4 ab4 c5 bb3 eb4 ab4 bb4",
  J: "bb3 eb4 ab4 bb4 bb3 d4 ab4 bb4", K: "b3 f4 g4 b4 bb3 f4 g4 bb4", L: "g3 d4 f4 g4 g3 d4 eb4 g4",
  M: "ab3 c4 eb4 bb4 ab3 c4 d4 ab4", N: "g3 d4 f4 g4 g3 d4 f4 g4", O: "f3 c4 d4 f4 f3 c4 f4 g4",
  P: "g3 c4 eb4 g4 ab3 c4 d4 f4", Q: "[c4,eb4,g4,c5] ~@3",
  R: "[g5,bb5,eb6,g6] [c5,eb5,g5,c6] [g4,bb4,eb5,g5] [eb4,g4,bb4,eb5]", S: "[c4,f4,ab4,c5] [b3,f4,g4,b4]",
  T: "[d5,f5,g5,d6] [c5,eb5,g5,c6] [g4,c5,eb5,g5] [eb4,g4,c5,eb5]", U: "[d4,f4,g4,d5] [c4,eb4,g4,d5]",
  V: "[c5,eb5,ab5,c6] [ab4,c5,eb5,ab5] [eb4,ab4,c5,eb5] [c4,eb4,ab4,c5]", W: "[d4,g4,bb4,d5] [d4,gb4,bb4,d5]",
  X: "[d5,g5,bb5,d6]@3 [bb4,d5,g5,bb5]@3 [g4,bb4,d5,g5]@2 [d4,g4,bb4,d5]@2 [bb3,d4,g4,bb4]@2", Y: "[b3,f4,g4,b4]",
  Z: "d5 f5 g5 d6 g5 f5 c5 eb5 g5 c6 g5 eb5", AA: "c5 eb5 ab5 bb5 ab5 eb5 bb4 d5 ab5 bb5 ab5 d5",
  AB: "bb4 eb5 g5 bb5 g5 eb5 g4 bb4 eb5 g5 eb5 bb4", AC: "f4 ab4 c5 f5 c5 ab4 f4 g4 b4 f5 bb4 g4",
  AD: "~ g4 c5 eb5 c5 g4 [g4,d5,g5]@6", AE: "~ f4 c5 f5 c5 f4 [f4,f5]@6", AF: "~ g3 c4 eb4 c4 g3 ~ ab3 c4 f4 c4 ab3",
  AG: "f3 c4 d4 f4 f3 c4 f4@2", AH: "g3 c4 eb4 g4 d4 f4 g4 d5", AI: "eb4 ab4 c5 eb5 f4 ab4 c5 eb5", AJ: "[g4,c5,d5,g5]",
})).s("gm_rock_organ").gain(0.5).pan(0.6)

// other · rock organ · "Elect.organ" · soft notes
const rock_organ_soft = note("<~@37 A B C D E F G H I J K L M N O P ~@21>".pickRestart({
  A: "[g5,bb5,eb6,g6] [c5,eb5,g5,c6] [g4,bb4,eb5,g5] [eb4,g4,bb4,eb5]", B: "[c4,f4,ab4,c5] [b3,f4,g4,b4]",
  C: "[d5,f5,g5,d6] [c5,eb5,g5,c6] [g4,c5,eb5,g5] [eb4,g4,c5,eb5]", D: "[d4,f4,g4,d5] [c4,eb4,g4,d5]",
  E: "[c5,eb5,ab5,c6] [ab4,c5,eb5,ab5] [eb4,ab4,c5,eb5] [c4,eb4,ab4,c5]", F: "[d4,g4,bb4,d5] [d4,gb4,bb4,d5]",
  G: "[d5,g5,bb5,d6]@3 [bb4,d5,g5,bb5]@3 [g4,bb4,d5,g5]@2 [d4,g4,bb4,d5]@2 [bb3,d4,g4,bb4]@2", H: "[b3,f4,g4,b4]",
  I: "d5 f5 g5 d6 g5 f5 c5 eb5 g5 c6 g5 eb5", J: "c5 eb5 ab5 bb5 ab5 eb5 bb4 d5 ab5 bb5 ab5 d5",
  K: "bb4 eb5 g5 bb5 g5 eb5 g4 bb4 eb5 g5 eb5 bb4", L: "f4 ab4 c5 f5 c5 ab4 f4 g4 b4 f5 bb4 g4",
  M: "~ g4 c5 eb5 c5 g4 [g4,d5,g5]@6", N: "~ f4 c5 f5 c5 f4 [f4,f5]@6", O: "~ g3 c4 eb4 c4 g3 ~ ab3 c4 f4 c4 ab3",
  P: "[c4,eb4,g4,c5] ~@3", // Cm
})).s("gm_rock_organ").gain(0.29).pan(0.6)

// bass · acoustic bass · "Basse"
const bass = note(`<
  A B C D@2 E F G H I J A K L M E B N O P Q R K S T U V W K X Y Z K AA AB P Q R K S T U V W K X Y Z K AA AB P Q E F G H
  I J A K L M E B N O P Q AA AB G AC C
>`.pickRestart({
  A: "eb2", B: "d2", C: "c2", D: "[b1@3 ~]/2", E: "eb2!2", F: "d2 eb2", G: "c3 bb2", H: "ab2 g2", I: "f2!2",
  J: "bb1 bb2", K: "d2 g2", L: "c2 g2", M: "f2 bb1", N: "[c2,c3]", O: "[c2,c3] ~", P: "c2 f2", Q: "c2 ~@3",
  R: "eb2 bb2 g3 bb2 eb2 bb2 g3 bb2", S: "c2 g2 eb3 g2 c2 g2 eb3 g2", T: "c2 c3", U: "f2 c3 ab3 c3 f2 ab2 ab3 c3",
  V: "bb2 bb1", W: "eb2@2 bb2 eb2", X: "c2@2 g2 eb3@3 c2@2 g2 eb3@2 c2", Y: "f2@2 c3 ab3@3 bb1@2 f2 d3@2 f2",
  Z: "eb2@2 bb2 g3@3 eb2@2 bb2 g3@2 eb2", AA: "[c2,c3] [bb1,bb2]", AB: "[ab1,ab2] [g1,g2]", AC: "ab2 f2",
})).s("gm_acoustic_bass").gain(0.5)

// other · violin · "Violon"
const violin = note("<~@21 A@2 B C D@2 E F G@2 E H I@2 B J A@2 B C D@2 E F G@2 E H I@2 B J ~@16 I@2 B@3>".pickRestart({
  A: "[g4@12 eb4@18 f4@3 f4@3 f4@4 g4@4 f4@4]/2", B: "c4", C: "~@6 g4@3 g4@3 g4@4 eb4@4 g4@4",
  D: "[c5@12 bb4@18 bb4@3 bb4@3 bb4@4 c5@4 bb4@4]/2", E: "bb4", F: "~@6 d5@3 d5@3 d5@4 eb5@4 d5@4",
  G: "[d5@12 c5@18 bb4@3 bb4@3 bb4@4 f4@4 ab4@4]/2", H: "~@6 f4@3 f4@3 f4@4 g4@4 f4@4",
  I: "[c4@12 g4@18 f4@3 f4@3 f4@4 g4@4 f4@4]/2", J: "~@6 c4@3 c4@3 c4@4 g4@4 f4@4",
})).s("gm_violin").gain(0.5).pan(0.3)

// other · string ensemble 1 · "String"
const string_ensemble_1 = note("<~@37 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Q AA ~@9>".pickRestart({
  A: "[g5,bb5,eb6,g6] [c5,eb5,g5,c6] [g4,bb4,eb5,g5] [eb4,g4,bb4,eb5]", B: "[c4,f4,ab4,c5] [b3,f4,g4,b4]",
  C: "[d5,f5,g5,d6] [c5,eb5,g5,c6] [g4,c5,eb5,g5] [eb4,g4,c5,eb5]", D: "[d4,f4,g4,d5] [c4,eb4,g4,d5]",
  E: "[c5,eb5,ab5,c6] [ab4,c5,eb5,ab5] [eb4,ab4,c5,eb5] [c4,eb4,ab4,c5]", F: "[d4,g4,bb4,d5] [d4,gb4,bb4,d5]",
  G: "[d5,g5,bb5,d6]@3 [bb4,d5,g5,bb5]@3 [g4,bb4,d5,g5]@2 [d4,g4,bb4,d5]@2 [bb3,d4,g4,bb4]@2", H: "[b3,f4,g4,b4]",
  I: "d5 f5 g5 d6 g5 f5 c5 eb5 g5 c6 g5 eb5", J: "c5 eb5 ab5 bb5 ab5 eb5 bb4 d5 ab5 bb5 ab5 d5",
  K: "bb4 eb5 g5 bb5 g5 eb5 g4 bb4 eb5 g5 eb5 bb4", L: "f4 ab4 c5 f5 c5 ab4 f4 g4 b4 f5 bb4 g4",
  M: "~ g4 c5 eb5 c5 g4 [g4,d5,g5]@6", N: "~ f4 c5 f5 c5 f4 [f4,f5]@6", O: "~ g3 c4 eb4 c4 g3 ~ ab3 c4 f4 c4 ab3",
  P: "[c4,eb4,g4,c5] ~@3", Q: "g3 bb3 eb4 g4 g3 bb3 eb4 g4", R: "g3 b3 f4 g4 g3 b3 f4 g4",
  S: "g3 c4 eb4 g4 g3 c4 eb4 g4", T: "f3 c4 f4 g4 g3 c4 eb4 g4", U: "c4 eb4 ab4 c5 bb3 eb4 ab4 bb4",
  V: "bb3 eb4 ab4 bb4 bb3 d4 ab4 bb4", W: "bb3 eb4 g4 bb4 bb3 eb4 g4 bb4", X: "b3 f4 g4 b4 bb3 f4 g4 bb4",
  Y: "g3 d4 f4 g4 g3 d4 eb4 g4", Z: "ab3 c4 eb4 bb4 ab3 c4 d4 ab4", AA: "g3 d4 f4 g4 g3 d4 f4 g4",
})).s("gm_string_ensemble_1").gain(0.43).pan(0.6)

// other · string ensemble 1 · "String"
const string_ensemble_1_2 = note(`<
  ~@21 A@2 B C D@2 E F G@2 E H I@2 B J A@2 B C D@2 E F G@2 E H I@2 B J A@2 B C D@2 E F G@2 E K I@2 B J I@2 B@3
>`.pickRestart({
  A: "[g4@12 eb4@18 f4@3 f4@3 f4@4 g4@4 f4@4]/2", B: "c4", C: "~@6 g4@3 g4@3 g4@4 eb4@4 g4@4",
  D: "[c5@12 bb4@18 bb4@3 bb4@3 bb4@4 c5@4 bb4@4]/2", E: "bb4", F: "~@6 d5@3 d5@3 d5@4 eb5@4 d5@4",
  G: "[d5@12 c5@18 bb4@3 bb4@3 bb4@4 f4@4 ab4@4]/2", H: "~@6 f4@3 f4@3 f4@4 g4@4 f4@4",
  I: "[c4@12 g4@18 f4@3 f4@3 f4@4 g4@4 f4@4]/2", J: "~@6 c4@3 c4@3 c4@4 g4@4 f4@4", K: "f4@6 f4@3 f4@3 f4@4 g4@4 f4@4",
})).s("gm_string_ensemble_1").gain(0.5).pan(0.6)

stack(rock_organ, rock_organ_soft, bass, violin, string_ensemble_1, string_ensemble_1_2)

More by Alain Barriere