Strudelify

Fim de Semana

Rick

KeyC majorTempo127 bpm
0:00/0:00
// Fim de Semana — Rick
// 127 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 28.
setcpm(127/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 · brass section
const brass_section = note(`<
  ~@4 A@2 B@2 A@2 C@2 ~@8 D E ~ E ~ E F E D E ~ E ~ E F E G@2 A@2 B@2 A@2 C@2 ~@8 D E ~ E ~ E F E D E ~ E ~ E F E G@2
  A@2 B@2 A@2 C@2 ~@8 D E ~ E ~ E F E D E ~ E ~ E F E ~ E F E G@2 A@2 B@2 A@2 C@2 H
>`.pickRestart({
  A: "[[c5,e5]@3 ~ [e4,g4] ~ e4 ~ f4 ~ [f4,a4] ~ [a4,c5] ~ [g4,b4]@4 ~@4 [g4,b4] ~ [a4,c5] ~ [b4,d5]@2 ~@2 [c5,e5]@2]/2", // C Em F Am G Am Bm C
  B: "[~ [e5,g5] ~ [d5,f5] ~ [c5,e5] ~ [b4,d5]@4 ~@5]/2", C: "[~ [e5,g5] ~ [d5,f5] ~ [f5,a5] ~ [b4,g5]@6 ~@3]/2",
  D: "~@4 [e4,g4] ~@5 [f4,a4] ~@5", E: "~@2 [g4,b4] ~ [b4,d5] ~ [d5,g5] ~ [c5,f5]@2 e5 ~@5",
  F: "[c5,e5] ~@5 e4 ~ f4 ~ g4 ~ [a4,c5] ~ [g4,b4]@2", G: "[~@6 e4 ~ f4 ~ g4 ~ [a4,c5] ~ [g4,b4]@12 ~@6]/2",
  H: "[c5,c6] ~ [c5,c6] ~ [c5,c6] ~@11", // C
})).s("gm_brass_section").gain(0.64)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B C D E D E D E D C D E D E D E D E D E D E D E D E D E D E D E D E D C D E D E D E D C D E D E D E D E D E D E D
  E D E D E D E D E D E D C D E D E D E D C D E D E D E D E D E D E D E D E D E D E D E D E D E D E D C D E D E D E D C
  F
>`.pickRestart({
  A: "[[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4] ~ [c3,f3,a3,c4,f4]@4 [c3,f3,a3,c4,f4]@2 [c3,f3,a3,c4,f4] ~ [d3,g3,b3,d4,g4]@4 [d3,g3,b3,d4,g4]@2 [d3,g3,b3,d4,g4] ~ [c3,f3,a3,c4,f4]@4 [c3,f3,a3,c4,f4]@2 [c3,f3,a3,c4,f4] ~ [c3,e3,g3,c4,e4]@2]/2", // C F G F C
  B: "[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4] ~ [c3,f3,a3,c4,f4]@4 [c3,f3,a3,c4,f4]@2 [c3,f3,a3,c4,f4] ~@3", // C F
  C: "~ [d3,g3,b3,d4,g4]!5 [d3,g3,b3,d4,g4]@2", // G
  D: "[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4] ~ [c3,f3,a3,c4,f4]@4 [c3,f3,a3,c4,f4]@2 [c3,f3,a3,c4,f4] ~", // C F
  E: "[d3,g3,b3,d4,g4]@4 [d3,g3,b3,d4,g4]@2 [d3,g3,b3,d4,g4] ~ [c3,f3,a3,c4,f4]@4 [c3,f3,a3,c4,f4]@2 [c3,f3,a3,c4,f4] ~", // G F
  F: "[c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4] ~@11", // C
})).s("gm_acoustic_guitar_steel").gain(0.19)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A B C B C B C B A B C B C B C B C B C B C B C B C B C B C B C B C B A B C B C B C B A B C B C B C B C B C B C B C
  B C B C B C B C B C B A B C B C B C B A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B A B C B C B C B A D
>`.pickRestart({
  A: "~@2 [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // G
  B: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // C F
  C: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", D: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~@11",
})).s("gm_electric_guitar_clean").gain(0.28)

// bass · electric bass finger
const bass = note(`<
  ~@3 A B C B C B C B A B C B C B C B C B C B C B C B C B C B C B C B C B A B C B C B C B A B C B C B C B C B C B C B C
  B C B C B C B C B C B A B C B C B C B A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B A B C B C B C B A D
>`.pickRestart({
  A: "~@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", B: "c2@4 ~@2 c2 ~ f2@4 ~@2 f2 ~", C: "g2@4 ~@2 g2 ~ f2@4 ~@2 f2 ~",
  D: "c2 ~ c2 ~ c2 ~@11",
})).s("gm_electric_bass_finger").gain(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@4 A B A B 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 B A C A B A B 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 B A C A B A B 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 B A B A B A C A B A B A B A C ~
>`.pickRestart({
  A: "[g3,c4,e4] [a3,c4,f4]", B: "[b3,d4,g4] [a3,c4,f4]", C: "[b3,d4,g4]",
})).s("gm_synth_strings_1").gain(0.19)

// chords · marimba
const marimba = note(`<
  ~@2 A ~@9 B C B C B C B C B C B C B C B C B C B C B C B C B ~@9 B C B C B C B C B C B C B C B C B C B C B C B C B ~@9
  B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~@10
>`.pickRestart({
  A: "e4 [e4,g4]!6 ~ [f4,a4] ~ [f4,a4] ~ [a4,c5] ~@3", // Em F Am
  B: "[e4,g4] ~@3 [e4,g4] ~ [e4,g4] ~ [f4,a4] ~@3 [f4,a4] ~ [f4,a4] ~", // Em F
  C: "[g4,b4] ~@3 [g4,b4] ~ [g4,b4] ~ [f4,a4] ~@3 [f4,a4] ~ [f4,a4] ~", // G F
})).s("gm_marimba").gain(0.35)

// other · electric guitar clean
const electric_guitar_clean_2 = note("<~@14 A@2 ~@2 B@2 ~@28 A@2 ~@2 B@2 ~@28 A@2 ~@2 B@2 ~@31>".pickRestart({
  A: "[~@4 f4 e4 [c3,c4] [d3,d4]@2 [a2,a3]@2 [g2,g3]@5, ~@2 f3 ~@5, ~@5 e3@2 ~@9]/2", // C D A G
  B: "[~@8 [f3,f4]@2 [e3,e4]@2 [c3,c4]@2 [d3,d4]@7 ~@11]/2", // F E C D
})).s("gm_electric_guitar_clean").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@4 A@7 B A@25 B A@7 B A@25 B A@7 B A@29 B A@7 B C>".pickRestart({
  A: "x!4", B: "x", C: "x!3 ~@5",
})).gain(0.8)

// drums · clap
const clap = s("cp").struct("<A@4 ~@7 A ~@25 A ~@7 A ~@25 A ~@7 A ~@29 A ~@7 A ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@7 A B@15 C B@9 A B@7 A B@15 C B@9 A B@7 A B@15 C B@7 C B@5 A B@7 A D
>`.pickRestart({
  A: "~ x ~@2 x ~@2 x", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "x!3 ~@5",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@7 B A@25 B A@7 B A@25 B A@7 B A@29 B A@7 B ~>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 A@7 ~ A@25 ~ A@7 ~ A@25 ~ A@7 ~ A@29 ~ A@7 ~@2>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@7 A ~@25 A ~@7 A ~@25 A ~@7 A ~@29 A ~@7 A ~>".pickRestart({
  A: "~@3 x",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@2 B ~@3 B A ~@2 B ~@22 A ~@2 B ~@3 B A ~@2 B ~@22 A ~@2 B ~@3 B A ~@2 B ~@26 A ~@2 B ~@3 B A ~
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "~ x ~ x ~ x ~ x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~@3 B ~@3 A ~@3 B ~@21 A ~@3 B ~@3 A ~@3 B ~@21 A ~@3 B ~@3 A ~@3 B ~@25 A ~@3 B ~@3 A ~
>`.pickRestart({
  A: "~ x ~@2", B: "~@7 x",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@7 ~ A@25 ~ A@7 ~ A@25 ~ A@7 ~ A@29 ~ A@7 ~@2>".pickRestart({
  A: "~ x ~ x",
})).gain(0.64)

// drums · cowbell
const cowbell = s("cb").struct("<[x!2]!118 ~>").gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@2 B ~@8 A ~@6 B ~@9 B A ~@3 A ~@2 B ~@8 A ~@6 B ~@9 B A ~@3 A ~@2 B ~@8 A ~@6 B ~@7 B ~@5 B A ~@3 A ~@4
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.48)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@4 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 B A ~ 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 B A ~ 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 B A B A B A ~ A B A B A B A ~@2
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
})).gain(0.48)

// drums · guiro
const guiro = s("guiro:0").struct("<[~@2 x!2 ~@2 x!2]!118 ~>").gain(11.83)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<[x!2]!118 ~>").gain(11.83)

stack(
  brass_section, acoustic_guitar_steel, electric_guitar_clean, bass, synth_strings_1, marimba, electric_guitar_clean_2,
  kick, clap, snare, hihat, hihat_soft, low_tom, mid_tom, high_tom, tambourine, cowbell, crash, shaker, guiro, guiro_2
)

More by Rick