Strudelify

Que Sera Mi Vida (If You Should Go)

Gibson Brothers

KeyF majorTempo120 bpm
0:00/0:00
// Que Sera Mi Vida (If You Should Go) — Gibson Brothers
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 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(`<
  ~@5 A B A B A B A B C D E F G H B I J K L M N M B I J K L M N A B A B A B A B A B M N A B A B A B A B F G H B I J K L
  M N M B I J K L M N A B A B A B A B A B M N A B A B A B A B C D E F G O ~@6 P M B I J K L M N M B I J K L M N ~
>`.pickRestart({
  A: "f1@2 f2!2 f1@2 f2@2 f1@2 f2@2 f1@2 f2@2", B: "f1@2 f2@2 f1@2 f2@2 f1@2 f2@2 f1@2 f2 ~",
  C: "g1@2 g2!2 g1@2 g2@2 g1@2 g2@2 g1@2 g2@2", D: "a1@2 a2!2 a1@2 a2@2 a1@2 a2@2 a1@2 a2@2",
  E: "bb1@2 bb2!2 bb1@2 bb2@2 bb1@2 bb2@2 bb1@2 bb2@2", F: "c2 c3 c2 c3 c2 c3 c2 c3",
  G: "c2@2 c3@2 c2@2 c3@2 c2@2 c3@2 c2 [bb1,b1] [gb1,g1,ab1] [eb1,e1,f1]", // Bmaj7
  H: "f1@2 f2@2 f1@2 f2@2 f1@2 f2!2 f1@2 f2@2, d1 ~@15", I: "a1 a2 a1 a2 a1 a2 a1 a2",
  J: "a1@2 a2@2 a1@2 a2@2 a1@2 a2!2 a1@2 a2 ~", K: "g1 g2 g1 g2 g1 g2 g1 g2",
  L: "g1@2 g2@2 g1@2 g2@2 g1@2 g2@2 g1@2 g2 ~", M: "f1@2 f2@2 f1@2 f2@2 f1@2 f2!2 f1@2 f2@2",
  N: "f1@2 f2@2 g1@2 g2@2 ab1@2 ab2@2 a1@2 a2 ~", O: "d1 ~@15", P: "~@12 f2@2 [d2,e2] [b1,c2]",
})).s("gm_synth_bass_2").gain(0.39)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B A B A B A B A B A B C D E F G H I J K L M H I H I J K L M H I N O P Q R S N O P Q R S A B A B A B A B F G H I J
  K L M H I H I J K L M H I N O P Q R S N O P Q R S A B A B A B A B C D E F G ~@8 H I J K L M H I H I J K L M H I ~
>`.pickRestart({
  A: "~ f4@2 f4 ~ f4 ~ f4 ~ f4!2 ~ f4@2 ~ f4", B: "~ f4 ~ f4 f4@2 ~ f4 ~ f4!3 f4@2 ~ f4",
  C: "~ g4@2 g4 ~ g4 ~ g4 ~ g4!2 ~ g4@2 ~ g4", D: "~ a4 ~ a4 a4@2 ~ a4 ~ a4!3 a4@2 ~ a4",
  E: "~ bb4@2 bb4 ~ bb4 ~ bb4 ~ bb4!2 ~ bb4@2 ~ bb4", F: "~ c5 ~ c5 c5@2 ~ c5 ~ c5!3 c5@2 ~ c5",
  G: "~ c5 ~ c5 c5@2 ~ c5 ~ c5!3 c5@2 ~@2", H: "f4@2 ~ c4 ~@2 f4@2 ~ f4 ~@2 f4 ~@3",
  I: "f4@2 ~ f4 ~@2 f4@2 ~ f4 ~@2 f4 ~ f4 ~", J: "a4@2 ~ e4 ~@2 a4@2 ~ a4 ~@2 a4 ~@3",
  K: "a4@2 ~ a4 ~@2 a4@2 ~ a4 ~@2 a4 ~ a4 ~", L: "g4@2 ~ d4 ~@2 g4@2 ~ g4 ~@2 g4 ~@3",
  M: "g4@2 ~ g4 ~@2 g4@2 ~ g4 ~@2 g4 ~ g4 ~", N: "[d4,f4]@2 ~ [d4,f4] ~@2 [d4,f4]@2 ~ [d4,f4] ~ b3 [d4,f4] ~ [d4,f4] ~",
  O: "[d4,f4]@2 ~ [d4,f4] ~@2 [d4,f4]@2 ~ [d4,f4] ~ b3 [d4,f4] b3 [d4,f4] ~", // Dm
  P: "[db4,f4]@2 ~ [db4,f4] ~@2 [db4,f4]@2 ~ [db4,f4] ~ bb3 [db4,f4] ~ [db4,f4] ~", // Db
  Q: "[db4,f4]@2 ~ [db4,f4] ~@2 [db4,f4]@2 ~ [db4,f4] ~ bb3 [db4,f4] bb3 [db4,f4] ~", // Db
  R: "[c4,f4]@2 ~ [c4,f4] ~@2 [c4,f4]@2 ~ [c4,f4] ~ a3 [c4,f4] ~ [c4,f4] ~", // F5
  S: "[c4,f4]@2 ~ [c4,f4] ~@2 [c4,f4]@2 ~ [c4,f4] ~ a3 [c4,f4] a3 [c4,f4] ~", // F5
})).s("gm_electric_guitar_muted").gain(0.05)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~ A B A B A B A B A B A B C D E F G ~@28 A B A B A B A B ~ G ~@28 A B A B A B A B C D E F G ~@25
>`.pickRestart({
  A: "~@2 [f3,bb3,d4] ~ [f3,a3,c4] ~@2 [f3,bb3,d4]", // Bb F Bb
  B: "~@2 [f3,bb3,d4]@2 ~@2 [f3,bb3,d4] ~ [f3,a3,c4]@2 ~@2 [f3,c4]@2 ~@2, ~@12 a3 ~@3", C: "[bb3,d4,g4]@3 ~",
  D: "[c4,e4,a4]@3 ~", E: "[d4,f4,bb4]@13 ~@3", F: "[f4,g4,c5]@15 ~", G: "[f4,g4,c5]@3 ~",
})).s("gm_piano").gain(0.35)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@13 A@2 B@3 ~@7 C D@4 E F G H I@2 J@2 K@2 I@2 J@2 K@2 ~@8 L@2 I@2 M@4 N O D@4 E F G H I@2 J@2 K@2 I@2 J@2 K@2 ~@8 A@2
  B@3 ~@8 I@2 M@4 N O D@4 E F G H ~
>`.pickRestart({
  A: "[[d4,g5]@15 [e4,a5]@17]/2", B: "[[f4,d6]@15 ~@16 c5@13 ~@4, ~@5 [g4,c6]@10 ~]/3", C: "~@13 c6 d6 f6", D: "a6/4",
  E: "d6", F: "db6", G: "c6@2 c5 d5 f5 g5 f5 ~@3 c5 d5 f5 g5 f5 ~", H: "~@2 c5 d5 f5 g5 f5@9 ~", I: "f5/2", J: "c6/2",
  K: "[f5@26 c5 d5 f5 g5 f5 d5]/2", L: "[~@15 c5@13 ~@4]/2", M: "[e5@32 d5@15 db5@15 c5@2]/4",
  N: "~@2 c6 d6 f6 g6 f6 ~@3 c6 d6 f6 g6 f6 ~", O: "~@2 c6 d6 f6 g6 f6 ~@6 c6 d6 f6",
})).s("gm_string_ensemble_1").gain(0.11)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@13 A B C D@2 ~ E@3 F@2 ~@3 E@3 F@2 ~ G ~@20 H@2 ~ E@3 F@2 ~@3 E@3 F@2 ~ G ~@20 A B C D@2 ~@9 E@3 F@2 ~@3 I@3 J@2 ~ G
  ~
>`.pickRestart({
  A: "d4", B: "e4", C: "f4",
  D: "[~@14 d5 [ab4,a4,bb4,f5,g5] [c5,c6]@12 [g4,c6] [bb4,bb5] [g4,a4,c5,g5] ~, [f4,g4]@7 ~, ~@16 [b4,bb5] ~@11 c5@2 ~@2]/2", // C C5 Bb Am7 Fsus2 Bmaj7
  E: "[~@2 [f4,a4,f5] ~ [f4,a4,d5]@2 c5 ~ [f4,a4,d5]@4 c5 ~ [e4,a4,c5]@21 ~ a4 g4 a4@6 ab4@4]/3", // F Dm Am
  F: "[d4@16 db4@15 ~, [bb3,g4]@31 ~]/2", G: "~@3 [f2,f3,c4,f4]@5",
  H: "[~@14 d5 [ab4,a4,bb4,f5,g5] [c5,c6]@12 [g4,c6] [bb4,bb5] [g4,a4,c5,g5] ~, f4@7 ~, ~@16 [b4,bb5] ~@11 c5@2 ~@2]/2", // C C5 Bb Am7 Bmaj7
  I: "[~@2 [f4,a4,f5,f6] ~ [f4,a4,d5,d6]@2 [c5,c6] ~ [f4,a4,d5,d6]@4 [c5,c6] ~ [e4,a4,c5,c6]@21 ~ [a4,a5] [g4,g5] [a4,a5]@6 [ab4,ab5]@4]/3", // F Dm C Dm C Am A G …
  J: "[d4@16 db4@15 ~, [bb3,g4,g5]@31 ~]/2", // Eb
})).s("gm_brass_section").gain(0.21)

// bass · lead 8 bass lead · "BASS&LEAD"
const bass_2 = note(`<
  ~@24 A B ~@6 A B ~@4 A B ~@4 A B ~@16 A B ~@6 A B ~@4 A B ~@4 A B ~@11 C D E ~@13 A B ~@6 A B ~
>`.pickRestart({
  A: "f2!16", B: "f2!13 ~@3", C: "c2!16", D: "c3 d3 f3 g3 c3 d3 f3 g3 c3 d3 f3 g3 c3 d3 f3 g3",
  E: "c3 d3 [f3,c4] [g3,d4] [c3,f4] [d3,g4] [f3,c4] [g3,d4] c3 d3 f3 g3 c3 ~@3", // F5 G5 F5 G5 F5 G5
})).s("gm_lead_8_bass_lead").gain(0.09)

// bass · lead 8 bass lead · "BASS&LEAD" · soft notes
const bass_soft = note("<~@25 A ~@7 A ~@5 A ~@5 A ~@17 A ~@7 A ~@5 A ~@5 A ~@13 B C D ~@12 A ~@7 A ~>".pickRestart({
  A: "~@13 f2!2 ~", B: "~@8 f4 g4 c4 d4 f4 [d3,g4] [f3,c4] [g3,d4]",
  C: "[c3,f4] [d3,g4] [f3,c4] [g3,d4] [c3,f4] [d3,g4] [f3,c4] [g3,d4] f4 g4 c4 d4 f4 g4 c4 d4", D: "f4 ~@15",
})).s("gm_lead_8_bass_lead").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~ A@16 B A@37 B A@40 B A@24 ~>".pickRestart({
  A: "x!4", B: "x ~@2 x!4 ~",
})).gain(0.52)

// drums · clap
const clap = s("cp").struct("<~ A@16 B A@37 B A@40 B A@24 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~",
})).gain(0.46)

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

// drums · hihat
const hihat = s("hh").struct("<~ A@16 B A@37 B A@40 B A@24 ~>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.33)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B A B A B A B A B A B A@4 ~ A@17 B A B A B A B A B A B A B A B A B A B A ~ A@17 B A B A B A B A B A B A B A B A B
  A B A@4 ~ A@24 ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2",
})).gain(0.33)

// drums · crash
const crash = s("cr").struct("<~ A ~@11 A@4 ~@37 A ~@37 A@4 ~@26>".pickRestart({
  A: "x",
})).gain(0.33)

// drums · tambourine
const tambourine = s("tb").struct("<~@18 [x!16]!37 [x!13 ~@3] [x!16]!40 [x!13 ~@3] ~@8 [x!16]!16 ~>").gain(0.26)

// drums · cowbell
const cowbell = s("cb").struct("<~@97 [x!4]!8 ~@17>").gain(0.46)

// drums · bongos
const bongos = s("bongo:4").struct("<~@103 [x!2 ~@2 x!2 ~ x ~ x ~ x ~@4]!2 ~@17>").gain(1.04)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@103 [~@2 x!2 ~@2 x ~@5 x ~ x ~]!2 ~@17>").gain(1.04)

// drums · congas
const congas = s("conga:18").struct("<~@101 [x ~ x ~ x!2 ~ x ~ x ~@6]!4 ~@17>").gain(1.47)

// drums · congas
const congas_2 = s("conga:33").struct("<~@101 [~@11 x!2 ~ x ~]!4 ~@17>").gain(1.47)

// drums · shaker
const shaker = s("sh").struct("<~@99 [x!16]!6 ~@17>").gain(0.33)

stack(
  bass, electric_guitar_muted, piano, string_ensemble_1, brass_section, bass_2, bass_soft, kick, clap, snare, hihat,
  open_hat, crash, tambourine, cowbell, bongos, bongos_2, congas, congas_2, shaker
)

More by Gibson Brothers