Strudelify
Vamos A La Playa cover art

Vamos a la Playa

Vamos A La Playa

Righeira

KeyA minorTempo120 bpm
0:00/0:00
// Vamos A La Playa — Righeira
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@3 A ~@3 B C D E F G H I J K L M N O P O Q R@7 S G H I J K L M N R@7 S G H I J K L M N O P O T U@3 V R@3 W K N K X M
  N M N R@7 S Y Z AA J Y Z AA J O P O AB K AC K AD Y Z AA J Y Z AA J Y Z AA J Y Z AA AE
>`.pickRestart({
  A: "~@5 a1 ~@2", B: "~@7 e2", C: "a1 ~ a1@2 b1@3 ~ c2@3 ~@5", D: "~@2 d2@2 g1@2 ~@2 g1@3 ~@5",
  E: "a1 ~ a1@2 b1@3 ~ c2@3 ~ c#2@2 d2@2", F: "~ g1 ~ g1 ~@4", G: "f2 ~ f1@2 g1@3 ~ a1@3 ~@5",
  H: "~@2 d2@2 g1@3 ~ g1@3 ~@5", I: "f2 ~ f1@2 g1@3 ~ a1@3 ~ d2@3 ~", J: "g1 ~ g1@2 a1@3 ~ b1@2 c2@2 c#2@2 d2@2",
  K: "f1 ~ f1@2 g1@3 ~ a1@3 ~@5", L: "~@2 d2@2 g1@3 ~ g1@3 ~@3 g1@2", M: "f1 ~ f1@2 g1@3 ~ a1@3 ~ d2@3 ~",
  N: "~@2 g1@2 a1@3 ~ b1@2 c2@2 c#2@2 d2@2", O: "a1@3 ~@13", P: "~@7 g1", Q: "~@5 a2 e2@2",
  R: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", S: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ g1@2 f#1@2 f1@2",
  T: "~@7 a2 c3 ~ b2 ~ a2@3 ~", U: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", V: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@3 ~",
  W: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 g1@2", X: "~@3 g2 ~ f2 ~ d2", Y: "f1 ~ f1@2 g1@3 ~ a1@3 ~@3 d2@2",
  Z: "~@2 g1@2 g1@3 ~ g1@3 ~@3 g1@2", AA: "f1 ~ f1@2 g1@3 ~ a1@3 ~@3 a1@2", AB: "~@2 a1 ~ b1 ~ c2 d2", AC: "~@7 d2",
  AD: "~@2 g2@2 ~@2 g2@9 ~", AE: "g1 ~ g1@2 a1@3 ~ b1@2 c2@2 c#2@2 ~@2",
})).s("gm_synth_bass_2").gain(0.63)

// chords · music box
const music_box = note(`<
  ~@4 A B A B A B A B C D C D C D C D E F E G ~@8 C D C D C D C D ~@8 C D C D C D C D E F E G ~@8 C D C D C D C D ~@8 C
  D C D C D C D A B A B A B A B C D C D C D C D C D C D C D C D
>`.pickRestart({
  A: "[a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~", // F
  B: "[b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5]@3 ~", // G
  C: "[a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~", // Am
  D: "[b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~", // Bm
  E: "[c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~ [c5,f5] ~", // F5
  F: "[d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5]@3 ~", // G5
  G: "[d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~@3 [d5,g5]@3 ~", // G5
})).s("gm_music_box").gain(0.2)

// chords · brass section · "BRASS 1"
const brass_section = note("<~@3 A ~@3 B ~@3 B ~@11 B ~@35 B ~@56>".pickRestart({
  A: "~@14 [a4,c5,e5] ~", B: "~@5 [a3,g4,a4,c5,e5] ~@2",
})).s("gm_brass_section").gain(0.41)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@12 A B A B A B A B A B A C ~@8 A B A B A B A B ~@8 A B A B A B A B ~@12 A B A B A B A B ~@8 A B A B A B A B A B A B
  A B A D E B E B E B E B E B E B E B E B
>`.pickRestart({
  A: "~@2 [a3,c4,f4] ~@3 [a3,c4,e4] ~@3 [f3,a3,d4] ~@3 [f3,a3,c4] ~", // F Am Dm F
  B: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G
  C: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@7 [g3,b3,d4] ~", D: "~@2 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@5",
  E: "~@6 [a3,c4,e4] ~@3 [f3,a3,d4] ~@3 [f3,a3,c4] ~", // Am Dm F
})).s("gm_pad_poly").gain(0.56).pan(0.4)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  A B A C A B A C A B A C ~@8 A B A C ~@32 A B A C ~@8 D@2 ~@22 E F E G E F E G ~@8 E F E G E F E G
>`.pickRestart({
  A: "a3 ~ a4 ~ a4 ~ a3 ~ a3@2 ~@2 a4 ~ a3@2", B: "~@2 e4 ~ d4 ~ c4 ~ d4 ~ a3 ~ a3@2 ~@2", C: "~@2 e4 ~ d4 ~ c4@2 ~@8",
  D: "[a5@3 ~]/2", E: "f4 ~ f5 ~ f5 ~ f4 ~ f4@2 ~@2 f5 ~ g4@2", F: "~@2 e5 ~ d5 ~ c5 ~ b4 ~ c5 ~ d5 ~@3",
  G: "~@2 e5 ~ d5 ~ c5 ~ d5 ~@7",
})).s("gm_synth_brass_1").gain(0.51).pan(0.3)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1_2 = note(`<
  ~@12 A B A C A B A C ~@11 D@2 ~@3 A B A C ~@7 E@2 ~@3 A B A C ~@12 A B A C A B A C ~@7 E@2 ~@3 A B A C ~@8 A B A C A B
  A C A B A C A B A C
>`.pickRestart({
  A: "f3@3 ~ e3@3 ~ d3@3 ~ c3@3 ~", B: "e3@3 ~ d3@6 ~@6", C: "d3@3 ~@5",
  D: "[~ a5, ~@5 e4@6 ~@5, ~@3 a4@3 ~@2, ~@7 e5@6 ~@3]/2", E: "[~ a5, ~@3 a4@3 ~@2, ~@7 e5@6 ~@3]/2",
})).s("gm_synth_brass_1").gain(0.43).pan(0.8)

// other · synth brass 1 · "SYNBRASS 1" · soft notes
const synth_brass_1_soft = note("<~@31 A@2 ~@14 B@2 ~@34 B@2 ~@31>".pickRestart({
  A: "[~@8 a3@13 ~@11, ~@3 e3@7 ~@6]/2", B: "[~@5 e4@6 ~@5, ~@3 e3@7 ~@6, ~@8 a3@13 ~@11]/2",
})).s("gm_synth_brass_1").gain(0.24).pan(0.8)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@24 A@2 ~@2 A@2 ~ B@2 ~@7 A@2 ~@2 A@2 ~ B@2 ~@7 C D@2 E ~@16 A@2 ~@2 A@2 ~ B@2 ~@14 F@2 ~@15
>`.pickRestart({
  A: "[~@5 g4@11, a2, ~ e3@15, ~ b3@7, ~@3 c4@13]/2",
  B: "[~@16 a5@11 ~@5, ~@3 e3@4 e5@3 ~@6, ~@8 a3@9 ~@15, ~@5 e4@4 ~@7, ~@12 a4@7 ~@13]/2",
  C: "~@5 [f4,a4,c5,e5] ~ [f4,a4,c5,f5] [f4,a4,c5,g5]@3 [f4,a4,c5,f5]@2 [f4,a4,c5,e5]@3", // Fmaj7 F Fmaj7
  D: "[[e4,g4,b4,e5]@3 [e4,g4,b4,d5]@2 [e4,g4,b4,c5]@3 [e4,g4,b4,c5]@3 [e4,g4,b4]@10 [f4,a4,c5,e5] ~ [f4,a4,c5,f5] [f4,a4,c5,g5]@3 [f4,a4,c5,f5]@2 [f4,a4,c5,e5]@3]/2", // Em Em7 Cmaj7 Em Fmaj7 F Fmaj7
  E: "[e4,g4,b4,e5]@3 [e4,g4,b4,d5]@2 [e4,g4,b4,c5]@3 [e4,g4,b4,c5]@3 [e4,g4,b4]@5", // Em Em7 Cmaj7 Em
  F: "[~@16 a5@11 ~@5, ~@4 d3@8 d5@7 ~@13, ~@3 g3@4 g5@3 ~@6, ~@8 d4@9 ~@15, ~@5 g4@4 ~@7]/2",
})).s("gm_electric_guitar_jazz").gain(0.17)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@3 A ~@21 B C B C B C B C ~@8 B C B C B C B C ~@28 B C B C B C B C ~@31
>`.pickRestart({
  A: "~@5 [a1,a2] ~@2", B: "~@6 [a3,e4] [e4,g4] [a4,c5]!5 ~ [g4,b4] ~", C: "[a4,c5] ~@15",
})).s("gm_electric_guitar_muted").gain(0.34)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@40 A@8 ~@12 B C@2 D E F@2 G ~@8 A@8 ~@12 H I ~@18>".pickRestart({
  A: "a5!2 e6 a5!3 e6 a5!3 e6 a5!3 e6 a5", B: "f4 a4 e4 a4 d4 a4 c4 a4",
  C: "[e4@4 d4 ~ d4@12 ~@3 d2 f2 a2 d3 ~ d3@3 ~ c3 ~]/2", D: "d3@3 ~@13", E: "c4 e4 b3 e4 a3 e4 g3 e4",
  F: "[b3@4 a3 ~ a3@12 ~@3 a2 c3 e3 a3 ~ a3@3 ~ g3 ~]/2", G: "a3@3 ~@13", H: "f4 ~ f5 ~ f5 ~ f4 ~ f4@2 ~@2 f5 ~ g4@2",
  I: "~@2 e5 ~ d5 ~ c5 ~ b4 ~ c5 ~ d5 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.22)

// chords · lead 4 chiff · "CHIFFERLD"
const lead_4_chiff = note("<~@61 A B A ~ C D E ~@48>".pickRestart({
  A: "~@4 [a4,d5,f5]@3 ~ [g4,c5,e5]@2 [a4,d5,f5]@3 ~ [g4,c5,e5]@2", B: "[a4,d5,f5] ~@3",
  C: "~@4 [e4,a4,c5]@3 ~ [d4,g4,b4]@2 [e4,a4,c5]@3 ~ [d4,g4,b4]@2", D: "[e4,a4,c5] ~@3",
  E: "~@4 [e4,a4,c5]@3 ~ [d4,g4,b4]@2 [e4,a4,c5]@3 ~@3", // Am G Am
})).s("gm_lead_4_chiff").gain(0.34)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@66 A B@2 ~@47>".pickRestart({
  A: "~@15 a0", B: "a5/2",
})).s("gm_synth_strings_1").gain(0.42)

// drums · kick
const kick = s("bd").struct("<~@4 [x!4]!112>").gain(0.6)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@3 B A B A B A B A B A B A B A@3 B A@7 B A B A B A B A B A@7 B A B A B A B A B A@3 B A@7 B A B A B A B A B A@7 B
  A B A B A B A B A@7 B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct(`<
  ~@4 A@3 B A B A B A B A B A B A B A@3 B A@7 B A B A B A B A B A@7 B A B A B A B A B A@3 B A@7 B A B A B A B A B A@7 B
  A B A B A B A B A@7 B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@12 [x!8]!104>").gain(0.3)

stack(
  bass, music_box, brass_section, pad_poly, synth_brass_1, synth_brass_1_2, synth_brass_1_soft, electric_guitar_jazz,
  electric_guitar_muted, lead_2_sawtooth, lead_4_chiff, synth_strings_1, kick, snare, clap, hihat
)