Strudelify
Frida oum papa cover art

1994 · Les Plus Grands Succès d'Annie Cordy

Frida oum papa

Annie Cordy

KeyF majorTempo130 bpm
0:00/0:00
// Frida oum papa — Annie Cordy
// 130 bpm, 2/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 2) are rendered on a constant 2/4 grid of one bar per cycle
// note: Full arrangement: all 240 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/2)

// 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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C D E F G@2 H I@2 E@4 J I K I E@4 L M@3 N I O I P Q R S T E U I V M@3 N I O I P Q R S T E U I W X Y Z AA AB G AB
  AC AB AC F AD F AE F AF F AG AH Y G@3 AC G AI AJ@2 AK B C D E F G AL AB G AB AC AB AC F AD F AE F AF F AG AH Y G@3 AC
  G AI AJ@2 AK B C D E F G@2 H I@2 E@4 J I K I E@4 L M@3 N I O I P Q@2 S T E U I V M@3 N I O I P Q R S T E U I W X Y Z
  AA AB G@2 AC AB AC F AD F AE F AF F AE AH Y G@3 AC G AI AJ@2 AM B C D E F G AL AB G AN AC AB AC F AD F AE F AF F AG AH
  Y G@3 AC G AI AJ@3 B C D E F G AO
>`.pickRestart({
  A: "bb2@3 ~ [bb3,d4,f4]@2 ~@2 f2@4 [bb3,d4,f4]@3 ~", B: "[c2,c3]@2 [g3,bb3,c4,e4] ~ g2@2 [g3,bb3,c4,e4] ~",
  C: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c2@3 ~ [a3,c4,f4]@3 ~", // F
  D: "[d2,d3]@3 ~ [c4,d4,gb4,a4]@2 ~@2 a2@3 ~ [c4,d4,gb4,a4]@3 ~", // D D7
  E: "[g2,g3]@3 ~ [b3,d4,f4,g4]@2 ~@2 d3@3 ~ [b3,d4,f4,g4]@2 ~@2", // G G7
  F: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@2 ~@2 g2@3 ~ [bb3,c4,e4,g4]@2 ~@2", // C C7
  G: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@2 ~@2", H: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 g2@3 ~ [g3,c4,e4]@2 ~@2",
  I: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 g2@3 ~ [g3,c4,e4]@2 ~@2", J: "[c2,c3]@4 [g3,c4,e4]@3 ~ g1@3 ~ [g3,c4,e4]@2 ~@2",
  K: "[c2,c3]@4 [g3,c4,e4]@3 ~ e2@3 ~ [g3,c4,e4]@2 ~@2", L: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 [c2,c3,g3,c4,e4,g4]@3 ~@5",
  M: "[g1,g2]@3 ~ [b3,d4,f4]@2 ~@2 d2@3 ~ [b3,d4,f4]@2 ~@2", N: "[g1,g2]@3 ~ [b3,d4,f4]@2 ~ b1@4 ~ [d2,b3,d4,f4]@3 ~",
  O: "[c2,c3]@3 ~ [g3,c4,e4]@3 ~ e2@3 ~ [g3,c4,e4]@3 ~", // C
  P: "[c2,c3]@3 ~ [g3,c4,e4]@2 ~@2 eb2@3 ~ [eb3,gb3,c4,eb4]@2 ~@2", Q: "[g1,g2]@2 [b3,d4,f4,g4] ~ d2@2 [b3,d4,f4,g4] ~",
  R: "[g1,g2]@3 ~ [b3,d4,f4,g4]@2 ~@2 d2@4 [b3,d4,f4,g4]@3 ~", // G G7
  S: "[g1,g2]@3 ~ [b3,d4,f4,g4]@2 ~@2 b1@3 ~ [b3,d4,f4,g4]@2 ~@2", // G G7
  T: "[d2,d3]@3 ~ [a3,d4,f4,a4]@3 ~ f2@4 [a3,d4,f4,a4]@3 ~", // D Dm
  U: "[g2,g3]@3 ~ [b3,d4,f4,a4]@3 ~ b2@3 ~ [b3,d4,f4,a4]@3 ~", V: "[c2,c3]@4 [g3,c4,e4]@2 ~@2 ab2@4 [eb3,gb3,c4]@3 ~",
  W: "[c2,c3,c4] ~@3, [g3,e4] ~@7", X: "[f2,f3]@3 ~ [a3,c4,f4]@3 ~ d3@3 ~ [a3,c4,f4]@3 ~",
  Y: "c3@4 [a3,c4,f4]@2 ~@2 a2@3 ~ [a3,c4,f4]@2 ~@2", Z: "[f1,f2]@3 ~ [a3,c4,f4]@3 ~ d2@3 ~ [a3,c4,f4]@3 ~",
  AA: "c2@4 [a3,c4,f4]@2 ~@2 a1@3 ~ [a3,c4,f4]@2 ~@2", AB: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@3 ~",
  AC: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 a2@3 ~ [a3,c4,f4]@2 ~@2", AD: "[c2,c3]@4 [bb3,c4,e4,g4]@3 ~ g2@3 ~ [bb3,c4,e4]@3 ~",
  AE: "[c2,c3]@4 [bb3,c4,e4,g4]@2 ~@2 e2@3 ~ [bb3,c4,e4,g4]@3 ~", // C C7
  AF: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@2 ~@2 g2@4 [bb3,c4,e4,g4]@2 ~@2", // C C7
  AG: "[c2,c3]@3 ~ [bb3,c4,e4,g4]@3 ~ e2@3 ~ [bb3,c4,e4,g4]@2 ~@2", // C C7
  AH: "[f2,f3]@4 [a3,c4,f4]@2 ~@2 d3@3 ~ [a3,c4,f4]@2 ~@2", // F
  AI: "[f2,f3]@3 ~ [c4,eb4,f4,a4]@2 ~@2 c3@3 ~ [c4,eb4,f4,a4]@2 ~@2", // F F7
  AJ: "[bb1,bb2]@3 ~ [bb3,d4,f4]@3 ~ f2@3 ~ [bb3,d4,f4]@3 ~", // Bb
  AK: "[bb1,bb2]@3 ~ [bb3,d4,f4]@2 ~@2 f2@4 [bb3,d4,f4]@3 ~", AL: "[f2,f3]@2 [a3,c4,f4] ~ [c2,c3]@2 [g3,c4,e4] ~",
  AM: "[bb1,bb2]@3 ~ [bb3,d4,f4]@3 ~ f2@3 ~ [bb3,d4,f4]@2 ~@2", // Bb
  AN: "[f2,f3]@3 ~ [a3,c4,f4]@2 ~@2 c3@3 ~ [a3,c4,f4]@2 ~@2", AO: "[f2,f3,a3,c4,f4] ~@7",
})).s("gm_piano").gain(0.17)

// bass · electric bass finger
const bass = note(`<
  A B C D E B C F B@3 G@2 H G B@2 I B G@2 J K L G@3 M B N O P Q E G E G R S@2 G@3 M B N O P Q E G E G R T@2 U V W V C@5
  X B@7 Y Z AA C AB C@4 AC@3 B C D E B C F C@5 X B@7 Y Z AA C AB C@4 AC@3 B C D E B C F B@3 G@2 H G B@2 I B G@2 J K L
  G@3 M B N O P Q E G E G R S@2 G@3 M B N O P Q E G E G R T@2 U V W V C@5 X B@7 Y Z AA C AB C@4 AC@3 B C D E B C F C@5 X
  B@7 Y Z AA C AB C@4 AC@3 B C D E B C AD
>`.pickRestart({
  A: "g1@7 ~ bb1@7 ~", B: "c2@3 ~ g1@3 ~", C: "f2@3 ~ c2@3 ~", D: "d2@7 ~ a1@6 ~@2", E: "g1@8 d2@7 ~", F: "f1@5 ~@11",
  G: "g2@3 ~ d2@3 ~", H: "g2@3 ~ b1@3 ~", I: "c2@6 ~@2 e2@3 ~ g2@3 ~", J: "g2@3 ~ g1@3 ~", K: "d2@3 ~ g1@3 ~",
  L: "c2@3 ~@5", M: "g2@7 ~ d2@4 b1@4", N: "c2@2 g1 b1", O: "c2@7 ~ g1@7 ~", P: "c2@2 eb2 ~", Q: "g2@7 ~ d2@8",
  R: "b1@7 ~ d2@7 ~", S: "[c2@7 g1@8 c2@5 ~@4 ab1@6 ~@2]/2", T: "[c2@7 g1@8 c2@5 ~@12]/2", U: "f2@6 ~@3 d2@5 ~@2",
  V: "c2@7 ~ a1@5 ~@3", W: "f2@5 ~@3 d2@6 ~@2", X: "f2@6 ~@2 a1@7 ~", Y: "c2@6 ~@2 e2@7 ~", Z: "f2@8 d2@7 ~",
  AA: "c2@8 a1@7 ~", AB: "f1@6 ~@2 c2@7 ~", AC: "bb1@7 ~ f1@8", AD: "f1 ~@7",
})).s("gm_electric_bass_finger").gain(0.21)

// other · trumpet
const trumpet = note(`<
  A@2 B C D@2 E ~@49 F G F G H@2 I@2 J K L@3 M@4 N O@2 P Q@3 R S T@2 A@2 B C D@2 E ~ H@2 I@2 J K L@3 M@4 N O@2 P Q@3 R S
  T@2 A@2 B C D@2 E ~@49 F G F G H@2 I@2 J K L@3 M@4 N O@2 P Q@3 R S T@2 A@2 B C D@2 E ~ H@2 I@2 J K L@3 M@4 N O@2 P Q@3
  R S T@2 A@2 B C D@2 E U
>`.pickRestart({
  A: "[g4@3 a4@4 ~ bb4@3 c5@4 e5@10 ~@2 d5@4 ~]/2", B: "d5 c5@3", C: "~@4 c5@3 b4@4 ~ c5@4", D: "[d5@15 e5@17]/2",
  E: "f5", F: "~@4 [a4,f5]@2 ~@6 [f4,c5] ~@3", G: "~@4 [f4,c5] ~@7 [f4,c5] ~@3", H: "[c5@14 ~ c5@11 ~@2 b4@3 ~]/2",
  I: "[c5@4 d5@21 ~@7]/2", J: "c5@4 d5@5 ~@3 c5@2 ~@2", K: "d5@2 c5@3 ~ b4@2", L: "[bb4@22 ~@9 d5@15 ~@2]/3",
  M: "[d5@12 db5@3 d5@4 ~ e5@20 ~@7 d5@4 e5@5 ~@3 d5@3 ~@2]/4", N: "e5@3 ~ d5@7 db5@4 ~", O: "[c5@3 ~]/2", P: "c5@7 ~",
  Q: "[c5@12 b4@3 c5@4 ~ d5@24 ~@4]/3", R: "c5@4 d5@7 ~ c5@3 ~", S: "d5@4 c5@7 ~ a4@4", T: "[d5@11 ~@5]/2", U: "f5 ~@7",
})).s("gm_trumpet").gain(0.22).pan(0.4)

// other · tenor sax
const tenor_sax = note(`<
  A B C D E F G ~@49 H I H I J K@4 L M@2 N@4 O@2 G ~ J P@3 Q R F ~ A B C D E F G ~ J K@4 L M@2 N@4 O@2 G ~ J P@3 Q R F ~
  A B C D E F G ~@49 H I H I J K@4 L M@2 N@4 O@2 G ~ J P@3 Q R F ~ A B C D E F G ~ J K@4 L M@2 N@4 O@2 G ~ J P@3 Q R F ~
  A B C D E F G S
>`.pickRestart({
  A: "e3@4 f3@4 g3@3 ~ a3@4", B: "c4@11 bb3@3 ~@2", C: "bb3 a3@3", D: "~@5 a3@3 ab3@4 a3@3 ~", E: "b3@15 ~",
  F: "bb3@15 ~", G: "a3", H: "~@4 c5@2 ~@6 a4 ~@3", I: "~@4 a4 ~@7 a4 ~@3", J: "a3@7 ~",
  K: "[a3@10 ~ ab3@4 a3@5 bb3@21 ~@6 a3@4 ~ bb3@7 ~ a3@4]/4", L: "bb3@4 a3@7 ab3@4 ~", M: "[g3@11 ~@5]/2",
  N: "[bb3@13 ~@2 bb3@12 a3@4 bb3@3 ~ c4@20 ~@9]/4", O: "[bb3@3 ~ c4@7 bb3@3 ~ c4@4 ~ bb3@8 bb3@3 ~]/2",
  P: "[a3@10 ~ ab3@4 a3@5 bb3@21 ~@7]/3", Q: "a3@4 bb3@7 ~ a3@4", R: "bb3@2 a3@3 ~ f3@2", S: "a3 ~@7",
})).s("gm_tenor_sax").gain(0.3).pan(0.6)

// other · trombone
const trombone = note(`<
  A B@3 C D@2 ~@48 E F G H I J K@7 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C D@2 ~ S@8 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C D@2 ~@48 E
  F G H I S@8 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C D@2 ~ S@8 L M@3 N@2 O@2 P@5 Q R@2 A B@3 C D@2 T
>`.pickRestart({
  A: "g3 a3 bb3 c4", B: "[~ e4@10 d4@3 ~ d4@4 c4@16 ~@2 c4@3 b3@4 c4@4]/3", C: "g3", D: "[g3@15 c4@17]/2",
  E: "~@8 c4 ~ d4 ~ e4 ~@3", F: "f4 ~ d4 ~", G: "c4 ~ a3 ~", H: "f3 ~ d3 ~", I: "c3@5 ~@3 a2@4 ~@4", J: "c4@7 ~",
  K: "[c4@11 b3@4 c4@4 d4@25 ~@3 c4@5 d4@7 c4@4 d4@4 ~ c4@7 b3@4 bb3@19 ~@14]/7", L: "d4@9 ~@7",
  M: "[d4@11 db4@4 d4@4 e4@19 ~@10]/3", N: "[d4@4 e4@8 d4@3 e4@5 d4@7 db4@4 ~]/2", O: "[c4@23 ~@9]/2",
  P: "[c4@14 ~ c4@11 ~ b3@3 c4@5 d4@21 ~@7 c4@4 d4@8 ~ c4@3 ~]/5", Q: "d4@4 c4@7 ~ a3@4", R: "[d4@3 ~]/2",
  S: "[c4@14 ~ c4@11 ~ b3@4 c4@4 d4@25 ~@3 c4@5 d4@7 c4@4 d4@4 ~ c4@7 b3@4 bb3@19 ~@14]/8", T: "c4 ~@7",
})).s("gm_trombone").gain(0.17).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A@15 B A@8 C D A@2 C D A B A@8 C E A@2 C D A@29 B A@31 B A@7 B A@7 F A@16 C D A@2 C D A B G A@7 C D A@2 C D A B A@7 F
  A@19 B A@15 F A@15 B A@7 B A@7 F
>`.pickRestart({
  A: "x!2", B: "x ~ x!2", C: "x ~@2 x", D: "~@3 x", E: "~@2 x!2", F: "x", G: "x!3 ~",
})).gain(0.26)

// drums · snare
const snare = s("sd").struct(`<
  A@2 B A C D E F A@7 G A@6 H I J H K B A@3 H A@2 B A B A B L J M J N J I J O A@6 P Q R S T U A@2 G A@4 V A@7 H A@7 W
  A@6 B X A@2 G A@4 V A@7 H A@7 W A@6 B X A@7 G A@6 H I J H K B A@3 H A@2 B A B A B L J M J N J I J Y A@6 P Q R S T U
  A@2 G A@4 Z A@7 H A@7 W A@6 B X A@2 G A@4 V A@7 H A@7 W A@6 B AA
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!3 ~ x ~", C: "x!7 ~ x!8", D: "x!2 ~ x!3 ~ x!2 ~@2 x ~ x!3", E: "x ~ x!6", F: "x!2",
  G: "~@2 x!2 ~@2 x ~", H: "~ x!3", I: "x ~@7 x!7 ~", J: "x!2 ~ x", K: "~ x ~@2", L: "x ~@3 x ~@3 x!8",
  M: "x ~@7 x!3 ~ x ~ x ~", N: "~@4 x ~@3 x!7 ~", O: "~@4 x ~@3 x ~ x ~@2 x ~ x", P: "~@4 x ~ x ~ x ~ x ~ x!2 ~@2",
  Q: "x ~@7 x!8", R: "x!11 ~ x!2 ~@2", S: "x ~ x ~ x!8 ~ x ~ x", T: "x ~@2 x ~ x ~@2 x ~@3 x!2 ~ x",
  U: "x!2 ~ x ~@3 x!9", V: "~@6 x ~ x ~@2 x!2 ~ x ~", W: "x!4", X: "x ~@7 x!3 ~ x!4", Y: "~@4 x ~@3 x ~ x ~ x!2 ~ x",
  Z: "~@5 x!2 ~ x ~@2 x!2 ~ x ~", AA: "x",
})).gain(0.19)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@5 A ~@9 B ~@10 C ~@14 D ~@5 C ~@8 E F G H I ~@6 J ~@23 C ~@7 J ~@23 C ~@7 B ~@10 C ~@14 D ~@14 E F G H I ~@30 C ~@7
  J ~@24
>`.pickRestart({
  A: "~@2 x ~@3 x ~@2 x!2 ~ x ~@3", B: "~ x", C: "~@3 x", D: "~@11 x ~ x ~ x", E: "~@11 x ~@2 x!2", F: "~ x ~ x ~@12",
  G: "~@2 x ~ x ~ x!2 ~ x!3 ~@2 x ~", H: "~@2 x ~ x!3 ~@9", I: "x", J: "~@5 x ~@10",
})).gain(0.11)

// drums · hihat
const hihat = s("hh").struct(`<
  A@7 B A@15 ~@3 A@2 C ~ A@10 ~@2 A@2 ~@2 A@9 ~ A@67 D A@15 ~ A@4 ~@2 A@25 ~@3 E@2 A@63 F
>`.pickRestart({
  A: "~ x ~ x", B: "~ x", C: "~ x ~@2", D: "~ x!2 ~", E: "x!2", F: "x",
})).gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A ~@16 B ~@3 B ~@11 B ~@3 B ~@11 C ~@34 D ~@28 D@4 ~@16 B ~@3 B ~@11 B ~@3 B ~@43 D@3 ~@25 D ~@3 D@3 ~
>`.pickRestart({
  A: "~ x", B: "x ~@2 x", C: "~ x ~@14", D: "x",
})).gain(0.26)

// drums · ride
const ride = s("rd").struct(`<
  A@4 ~@4 B A@14 C ~@2 A@2 ~@2 A@9 C ~@2 A C ~@2 A C A@6 C ~@5 A@7 C D A@6 C E A@6 ~ A@6 C ~ A@7 C D A@6 C E A@6 ~ A@6 C
  ~ B A@14 C ~@2 A@2 ~@2 A@9 C ~@2 A C ~@2 A C A@6 C ~@5 A@7 C D A@6 C E A@6 ~ A@6 C ~ A@7 C D A@6 C E A@6 ~ A@6 C ~
>`.pickRestart({
  A: "x!2", B: "~ x ~@6 x ~@7", C: "x", D: "~ x", E: "~ x ~@2 x ~@3",
})).gain(0.23)

stack(piano, bass, trumpet, tenor_sax, trombone, kick, snare, snare_soft, hihat, crash, ride)

More by Annie Cordy