Strudelify
Cotton Eye Joe cover art

1995 · Sex & Violins

Cotton Eye Joe

Rednex

KeyA majorTempo138 bpm
0:00/0:00
// Cotton Eye Joe — Rednex
// 138 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 "DISTORTION" distortion guitar (copy of ch 1 "DISTORTION" distortion guitar)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(138/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.

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@4 A@2 B C A@2 B ~@23 B D ~@8 A B E F A B E F A@2 B C A@2 B G ~@12 A@2 B C ~@6 B D ~@8 A@2 B C A@2 B C A@2 B ~
>`.pickRestart({
  A: "a2!10 a2@2 a2!2 a2@2", B: "d3!10 d3@2 d3!2 d3@2", C: "e3!8 d3!2 d3@2 b2!2 b2@2", D: "e3!8 ~@8",
  E: "b2!10 b2@2 b2!2 b2@2", F: "e3!10 e3@2 e3!2 e3@2", G: "e3!8 d3@2 ~@6",
})).s("gm_distortion_guitar").gain(0.38).pan(0.7)

// bass · synth bass 1 · "SYNBASS 1"
const bass = note(`<
  ~@12 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 ~@2 A@2 B C A@2 B C A B D E A B D E A@2 B C A@2 ~@2 A@2 B C A@2 B C
  A@2 B C F@2 G H ~@8 A@2 B C A@2 B C A@2 B C A@2 B C ~@4
>`.pickRestart({
  A: "a1!16", B: "d2!16", C: "e2!8 d2!4 b1!4", D: "b1!16", E: "e2!16", F: "a2!16", G: "d3!16", H: "e3!8 d3!4 b2!4",
})).s("gm_synth_bass_1").gain(0.22)

// other · banjo
const banjo = note("<~@28 A B A C A B ~@10 D E F G D E F G ~@52>".pickRestart({
  A: "a3 ~ a3 e4@2 a3!2 c4@2 a3 c4@2 b3 a3 ~ a3", B: "a3 ~ a3 e4@2 ~ a3 c4@2 a3 c4@2 b3 a3 ~ a3",
  C: "a3 ~ a3 e4@2 ~ a3 c4@2 a3 c4@2 b3 a3 g#3 a3", D: "a3@2 g3 a3@2 g3 [g3,a3] c#4 e4 c#4 a3 ~ c#4@2 a3@2",
  E: "d4@2 c#4 d4@2 c#4 d4 e4 d4 c#4 b3 ~ d4@2 c#4@2", F: "b3@2 a#3 b3@2 a#3 b3 c#4 d#4 c#4 b3 ~ d#4@2 b3@2",
  G: "e4!2 d#4 e4@2 d#4 e4 f#4 [e4,f#4] d4 c#4 ~ e4 d4 c#4 b3", // Esus2
})).s("gm_banjo").gain(0.48)

// other · banjo · soft notes
const banjo_soft = note(`<
  ~@28
  [~@14 g#3 ~]
  [~@5 a3 ~@8 g#3 ~]
  [~@14 g#3 ~]
  [~@5 a3 ~@10]
  [~@14 g#3 ~]
  [~@5 a3 ~@8 g#3 ~]
  ~@70
>`).s("gm_banjo").gain(0.27)

// other · clavinet
const clavinet = note(`<
  A B C D A B C D ~@4 A B C D A B C D ~@8 E F G H I J K L A B C D A B C D ~@8 E F G H I J K L A B C D A B C D ~@16 A B C
  D A B C D ~@8 A B C D
>`.pickRestart({
  A: "c#4 e4 ~ c#4 e4 ~ c#4 e4 ~ e4 c#4 ~ b3 c#4@2 ~", B: "e4 ~ c#4 ~ b3@2 a3 ~ a3 ~ a3!2 f#3@3 ~",
  C: "d3!2 ~ f#3 a3 ~ f#3 ~ a3!2 ~ a3 d4@2 ~@2", D: "e4 c#4 ~ c#4 b3@2 a3@2 c#4!2 a3@2 f#3 e3@3",
  E: "a4@3 ~ a4@2 g4@2 a4@3 ~ a4@2 g4@2", F: "a4@2 g4 ~ a4@2 c5@6 ~@2 g4@2", G: "a4@3 ~ a4@2 g4@2 a4@4 a4@2 b4 ~",
  H: "c5@2 b4 ~ a4@2 a4@6 ~@2 a4@2", I: "e5@3 ~ a4@2 g4@2 a4@3 ~ a4@2 g4@2", J: "a4!2 g4 c5@3 ~ g4",
  K: "a4@3 ~ a4@2 g4@2 a4@3 ~ a4@2 b4 ~", L: "c5@2 b4@2 a4@3 ~ a4@4 ~@4",
})).s("gm_clavinet").gain(0.45)

// chords · fiddle
const fiddle = note(`<
  ~@8 A B A C D@2 E F D@2 E F A B A C A B A C ~@8 D@2 E F D@2 E F ~@16 D@2 E F D@2 E F A B A C G H G H A B A C G H G I
  D@2 E J D@2 E J A B A C G H G I ~@4
>`.pickRestart({
  A: "c#5 e5@2 e5 e5@3 e5@2 f#5 e5@2 b4 c#5@2 e5", B: "c#5 b4 a4 c#5 b4 a4 e4 ~ a4 b4 a4 f#4 e4@2 a4!2, ~@7 f#4@2 ~@7",
  C: "c#5 b4 a4 c#5 b4 a4 e4 ~ a4 b4 a4 f#4 e4 f#4 e4 c#4, ~@7 f#4@2 ~@7",
  D: "~@2 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~", // A
  E: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // D
  F: "~@2 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // E D
  G: "a3 c#4 e4 a4 g4 a4!4 c#5 a4 c#5 b4 a4 b4 a4", H: "a3 c#4 e4 a4 g4 a4!2 b4 a4 f#4 e4 a4 e4 f#4 e4 c#4",
  I: "a3 c#4 e4 a4 g4 a4!2 b4 a4 f#4 e4 a4 [d#4,e4] f#4 e4 c#4", // Emaj7
  J: "~@2 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // E D
})).s("gm_fiddle").gain(0.41).pan(0.4)

// other · fiddle
const fiddle_2 = note(`<
  ~@8 A@2 B@2 ~@8 A@2 B@2 A@2 B@2 ~@40 A@2 B@2 C D C D A@2 B@2 C D C D ~@8 A@2 B@2 C D C D ~@4
>`.pickRestart({
  A: "[f#5@4 f#5@4 f#5@4 f#5@3 f#5@4 ~ f#5@2 b4!2 [b4,f#5]@2 b4!2 b4@2 f#5!2]/2", // B5
  B: "[f#5@4 f#5@4 f#5@4 f#5@3 f#5@2 ~ [b4,f#5] f#5 b4@2 b4!2 b4@2 b4!2 b4@2 b4!2, ~@24 f#5 ~@7]/2", C: "b4!16",
  D: "b4!12 c#4 d#4 c#4 d#4",
})).s("gm_fiddle").gain(0.41).pan(0.6)

// other · lead 1 square · "+SINE WAVE"
const lead_1_square = note("<~@52 [a5 ~ e6!2 ~ a5!2 c6@2 a5 c6@2 b5 a5 ~ a5]!7 [a5 ~ e6!2 ~ a5!2 c6@2 ~@7] ~@44>")
  .s("gm_lead_1_square").gain(0.41)

// other · lead 1 square · "+SINE WAVE" · soft notes
const lead_1_square_soft = note("<~@52 [~ a5 ~@14]!8 ~@44>").s("gm_lead_1_square").gain(0.27)

// other · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@12 A@2 B C A@2 B C A@2 B C A@2 B C ~@8 A@2 B C A@2 B C ~@16 A@2 B C A@2 B C A@2 B C ~@12 D E F G D E F G D E F G D E
  F G ~@4
>`.pickRestart({
  A: "a2!2 ~ a2 ~@2 c#3@2 a2@2 c#3@2 a2@2 c#3@2", B: "d3!2 ~ d3 ~@2 d3@2 a2@2 d3@2 a2@2 d3@2",
  C: "e3!2 ~ e3 ~@2 e3@2 b2@2 e3@2 b2@2 d3@2", D: "[a2,e3,a3]@2 [g2,d3,g3]@2 a2@2 ~ a2@2 a2!3 a2@2 g2@2",
  E: "a2@2 g2@2 a2@2 ~ a2@2 a2!3 a2@2 g2@2", F: "d3@2 c3@2 d3@2 ~ d3@2 d3!3 d3@2 c3@2",
  G: "e3@2 d3@2 e3@2 ~ d3@2 d3!3 b2@2 b2@2",
})).s("gm_distortion_guitar").gain(0.41).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A C A B A B A B A B A B A B A B A B A B A B A B A D A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A
  B A B A B A B A B A B A B A B A B A D A B A B A B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x", D: "x!2 ~@2",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A B C D A B C D A B C D A B C D A B C D A B C E A B C D A B C D A B C D A B C D A B C D A B C F A B C D A B C D A
  B C D A B C D G@3 H G@3 I A B C D A B C D A B C D A B C D ~@4
>`.pickRestart({
  A: "~@4 x ~@7 x ~@2 x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@2 x ~@4 x ~@2 x", D: "~@2 x ~ x!3 ~@3 x ~ x!4",
  E: "~@2 x ~ x!3 ~@9", F: "~ x ~@2", G: "x ~ x ~ x ~@2 x ~ x ~ x!2 ~ x!2", H: "x ~ x ~ x!4 ~ x!7",
  I: "x ~ x ~ x!4 ~@8",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@76 [~ x ~ x ~ x!2 ~ x ~ x ~@2 x ~ x]!7 [~ x ~ x ~@12] ~@20>").gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<~@12 A@23 B A@23 B A@23 B A@18 ~@2>".pickRestart({
  A: "x!16", B: "x!8 ~@8",
})).gain(0.24)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@12 A@23 B A@23 B A@23 B A@19 C>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x",
})).gain(0.08)

// drums · open hat
const open_hat = s("oh").struct("<~@12 A@23 B A@23 B A@23 B A@19 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@4 A@7 B A@23 C A@23 C A@16 ~@4 A@3 C A@18 ~@2>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!6", B: "x", C: "x ~ x!3 ~ x!2 ~@8",
})).gain(0.24)

// drums · splash
const splash = s("cr").struct("<~@12 A@16 ~@8 A@8 ~@16 A@12 ~@4 A@7 B A@19 ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4",
})).gain(0.32)

// drums · triangle
const triangle = s("triangles:30").struct("<~@8 A@3 ~@21 A@3 B ~@12 A@4 ~@4 A@3 B ~@12 A@4 ~@8 A@8 ~@12>".pickRestart({
  A: "~@8 x ~@4 x ~@2", B: "~@7 x ~@8",
})).gain(2.09)

// drums · triangle
const triangle_2 = s("triangles:35").struct(`<
  ~@8 A@3 B ~@20 A@3 C ~@12 A@4 ~@4 A@3 C ~@12 A@4 ~@8 A@8 ~@12
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~ x ~ x!2 ~ x ~ x ~", B: "x", C: "x!2 ~@2 x!2 ~@10",
})).gain(2.09)

stack(
  distortion_guitar, bass, banjo, banjo_soft, clavinet, fiddle, fiddle_2, lead_1_square, lead_1_square_soft,
  distortion_guitar_2, kick, snare, snare_soft, hihat, hihat_soft, open_hat, ride, splash, triangle, triangle_2
)

More by Rednex