Strudelify

I Should Have Been True

The Mavericks

KeyC majorTempo95 bpm
0:00/0:00
// I Should Have Been True — The Mavericks
// 95 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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 · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B@2 C@2 B@2 D@2 ~@65 A E@2 F@2 G@2 H@2 ~@24 A B@2 I@2 J@2 K@2 J@2 L@2 ~@2
>`.pickRestart({
  A: "~@7 c3", B: "[e3@3 g3 g3@11 c3]/2", C: "[e3@3 a3 a3@11 c3]/2", D: "[e3@3 a3 a3@10 ~@2]/2",
  E: "[e3@6 g3@2 g3@21 ~ c3@2]/2", F: "[e3@3 a3 a3@11 e3]/2", G: "[f3@6 a3 ~ a3@19 ~ a3@3 ~]/2", H: "[b3@3 ~]/2",
  I: "[e3@6 a3 ~ a3@22 c3@2]/2", J: "[e3@6 g3 ~ g3@22 c3@2]/2", K: "[e3@6 a3 ~ a3@21 ~ c3@2]/2",
  L: "[e3@6 a3 ~ a3@22 ~@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.61)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@2 A B C D A B C D A B C D E F G H A B C D E F G H A B A B I J K L A B C D E F L M L A B C D E F G H A B C D E F G H
  A B A B I J M N A B C D E F O M N A B C D E F G H A B A B I J M@2 A B C D E F K N A B C D E F O N L P Q R S P T U V Q
  P V@2 Q ~
>`.pickRestart({
  A: "c2@6 g2 ~ g2@5 ~ g2 ~", B: "c2@5 ~ g2 ~ g2@5 ~ g2@2", C: "a1@6 e2 ~ e2@5 ~ e2 ~", D: "a1@5 ~ e2 ~ e2@5 ~ e2@2",
  E: "d2@6 a2 ~ a2@5 ~ a2 ~", F: "d2@5 ~ a2 ~ a2@5 ~ a2@2", G: "g2@6 d3 ~ d3@5 ~ d3 ~", H: "g2@5 ~ d3 ~ d3@5 ~ d3@2",
  I: "f2@6 c3 ~ c3@5 ~ c3 ~", J: "f2@5 ~ c3 ~ c3@5 ~ c3@2", K: "g2@6 d3 ~ g3 ~ g3 ~ g2@3 ~",
  L: "g2@2 ~@2 g2@3 ~ d3 ~ d3 ~ d3@3 ~", M: "g2@5 ~ g2 ~ d3 ~ d3 ~ d2@3 ~", N: "g2@5 ~ d3 ~ d3@5 ~ d3 ~",
  O: "g2@5 ~ d3 ~ g3 ~ g3 ~ d3@3 ~", P: "c2@5 ~ g2 ~ g2@5 ~ g2 ~", Q: "c2@5 ~ c2 ~ g2 ~ g2 ~ g1@3 ~",
  R: "a1@5 ~ e2 ~ e2@5 ~ e2 ~", S: "a1@2 ~@2 a1@3 ~ e2 ~ e2 ~ e2@3 ~", T: "c2@5 ~ g2 ~ c3 ~ c3 ~ g2@3 ~",
  U: "a1@6 e2 ~ a2 ~ a2 ~ a1@3 ~", V: "a1@5 ~ a1 ~ e2 ~ e2 ~ e1@3 ~",
})).s("gm_acoustic_bass").gain(0.38)

// chords · piano
const piano = note(`<
  ~@2 A B C@2 D@2 E@2 D@2 C@2 F G H@2 D@2 E@2 I@2 J K A B L@2 M N O P A B C@2 F G Q R@2 A B E@2 F G H@2 A B C@2 I@2 J K
  D@2 S T M N U P A B C@2 F G V W@2 A B C@2 I@2 H@2 A B L@2 X@2 Y Z AA@2 C@2 AB@2 V W A B AC AD F G AE AF W AG AH AI AJ
  AH AG AI@2 AG AK AL ~@3
>`.pickRestart({
  A: "c3@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~", B: "[g3,c4,e4]@4 ~@2 [g3,c4,e4]@4 g3@2 ~@2 [g3,c4,e4] ~, c3@3 ~@5",
  C: "[a2@4 ~@6 e3 ~@3 e3 ~ a2@3 ~@3 e3@2 ~@2 e4@2 ~@2 [e3,c4] ~, ~@4 [a3,c4,e4]@18 ~@4 e3 ~@5]/2", // C Am
  D: "[c3@4 g3@6 g3@4 ~@2 c3@3 ~@3 g3@2 ~@2 g4@2 ~@2 [g3,e4] ~, ~@2 [c4,e4]@9 ~@5, ~@14 g3@8 ~@4 g3 ~@5]/2", // C
  E: "[a2@7 ~@3 e3 ~@3 e3@2 a2@10 e3 ~@3 e3 ~, [a3,c4,e4]@15 ~]/2", F: "d3@2 [a3,d4,f4]@2 ~ [a3,d4,f4]@2 ~",
  G: "[a3,d4,f4]@4 ~@2 [a3,d4,f4]@4 a3@2 ~@2 [a3,d4,f4] ~, d3@3 ~@5", // Dm
  H: "[g2@4 b3@6 b3@4 ~@2 g2@3 ~@3 b3@2 ~@2 b4@2 ~@2 [b3,g4] ~, ~@2 [g3,d4]@9 ~@5, ~@14 b3@8 ~@4 b3 ~@5]/2", // Em G5
  I: "[d3@4 a3@6 a3@4 ~@2 d3@3 ~@3 a3@2 ~@2 a4@2 ~@2 [a3,f4] ~, ~@2 [d4,f4]@9 ~@5, ~@14 a3@8 ~@4 a3 ~@5]/2", // Dm
  J: "g2@2 [g3,b3,d4]@2 ~ [g3,b3,d4]@2 ~", K: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 b3@2 ~@2 [g3,b3,d4] ~, g2@3 ~@5",
  L: "[c3@4 g#3@6 g#3@4 ~@2 c3@3 ~@3 g#3@2 ~@2 g#4@2 ~@2 [g#3,e4] ~, ~@2 [c4,e4]@9 ~@5, ~@14 g#3@8 ~@4 g#3 ~@5]/2", // C#m C
  M: "f2@2 [a3,c4,f4]@2 ~ [a3,c4,f4]@2 ~", N: "[a3,c4,f4]@4 ~@2 [a3,c4,f4]@4 a3@2 ~@2 [a3,c4,f4] ~, f2@3 ~@5",
  O: "g2@9 ~ a3 ~@3 a3@2, [c4,d4,f4,a4]", P: "~@2 [b3,d4,f4,g4]@2 ~ [b3,d4,f4,g4]@3",
  Q: "~@2 [g3,c4,d4]@2 ~ [g3,c4,d4]@3", R: "~@2 [g3,b3,d4]@2 ~ [g3,b3,d4]@3", S: "c3@2 [g#3,c4,e4]@2 ~ [g#3,c4,e4]@2 ~",
  T: "[g#3,c4,e4]@4 ~@2 [g#3,c4,e4]@4 g#3@2 ~@2 [g#3,c4,e4] ~, c3@3 ~@5", // G#aug
  U: "g2@2 [c4,d4,f4,a4]@2 ~ [a3,a4] f4 d4, ~@14 a3 ~", V: "g2@2 [g3,c4,d4]@2 ~ [c4,c5] c5 g4, ~@14 c4 ~",
  W: "g2@2 [g3,b3,d4]@2 ~ [b3,b4] b4 g4, ~@14 b3 ~", // G B
  X: "[f2@4 a3@6 a3@4 ~@2 f2@3 ~@3 a3@2 ~@2 a4@2 ~@2 [a3,f4] ~, ~@2 [c4,f4]@9 ~@5, ~@14 a3@8 ~@4 a3 ~@5]/2", // Dm F5
  Y: "~@2 [c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4]@3", Z: "g2@2 [b3,d4,f4,g4]@2 ~ [g3,g4] f4 d4, ~@14 g3 ~",
  AA: "[g3@10 g3@4 ~@2 c3@10 g3@4 g3 ~, [c4,e4]@15 ~, c3@7 ~@7 g3@12 ~@6]/2", // C
  AB: "[a3@10 a3@4 ~@2 d3@10 a3@4 a3 ~, [d4,f4]@15 ~, d3@7 ~@7 a3@12 ~@6]/2", AC: "a2@2 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~",
  AD: "[a3,c4,e4]@4 ~@2 [a3,c4,e4]@4 e3@2 ~@2 [a3,c4,e4] ~, a2@3 ~@5", AE: "[g2,c4]@5 c4@2 c4, [g3,d4]",
  AF: "[g2,b3]@5 b3@2 b3, [g3,d4]", AG: "c3@2 [g3,c4,e4]@2 ~ [g3,g4] g4 e4, ~@14 g3 ~",
  AH: "~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@3", AI: "a2@2 [a3,c4,e4]@2 ~ [e3,e4] e4 c4, ~@14 e3 ~",
  AJ: "~@2 [a3,c4,e4]@2 ~ [a3,c4,e4]@3", AK: "[c3,g3]@5 g3@2 g3, [c4,e4]", AL: "a2@2 [a3,c4,e4]@2 ~ [e3,e4] ~@2",
})).s("gm_piano").gain(0.38)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C D A B C D A B C D E F G H A B C D E F G H A B I J E F K L A B C D E F M H G A B C D E F G H A B C D E F G H
  A B I J E F K N A B C D E F M O G A B C D E F G H A B I J E F K N A B C D E F M H A B C D E F M H G B A D C B A P C B
  A D Q ~@2
>`.pickRestart({
  A: "[g3,e4] ~@3 [g3,e4] ~@3 [g3,e4] ~ [g3,e4] ~ [g3,e4] ~@3", // C
  B: "[g3,e4] ~ [g3,e4] ~ [g3,e4] ~ [g3,e4] ~ [g3,e4] ~@3 [g3,e4] ~@3", // C
  C: "[e3,c4] ~@3 [e3,c4] ~@3 [e3,c4] ~ [e3,c4] ~ [e3,c4] ~@3", // C
  D: "[e3,c4] ~ [e3,c4] ~ [e3,c4] ~ [e3,c4] ~ [e3,c4] ~@3 [e3,c4] ~@3", // C
  E: "[a3,f4] ~@3 [a3,f4] ~@3 [a3,f4] ~ [a3,f4] ~ [a3,f4] ~@3", // Dm
  F: "[a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~ [a3,f4] ~@3 [a3,f4] ~@3", // Dm
  G: "[b3,g4] ~@3 [b3,g4] ~@3 [b3,g4] ~ [b3,g4] ~ [b3,g4] ~@3", // Em
  H: "[b3,g4] ~ [b3,g4] ~ [b3,g4] ~ [b3,g4] ~ [b3,g4] ~@3 [b3,g4] ~@3", // Em
  I: "[g#3,e4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~ [g#3,e4] ~ [g#3,e4] ~@3", // C#m
  J: "[g#3,e4] ~ [g#3,e4] ~ [g#3,e4] ~ [g#3,e4] ~ [g#3,e4] ~@3 [g#3,e4] ~@3", // C#m
  K: "[c4,f4] ~@3 [c4,f4] ~@3 [c4,f4] ~ [c4,f4] ~ [c4,f4] ~@3", // F5
  L: "[b3,f4] ~ [b3,f4] ~ [b3,f4] ~ [b3,f4] ~ [b3,f4] ~@3 [b3,f4] ~@3", // Bdim
  M: "[c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~ [c4,g4] ~ [c4,g4] ~@3", // C5
  N: "[b3,f4] ~ [b3,f4] ~ [b3,f4] ~ [b3,f4] ~ [b3,f4] ~ g4@2 f4@2 d4@2", // Bdim
  O: "[b3,g4] ~ [b3,g4] ~ [b3,g4] ~ [b3,g4] ~ [b3,g4] ~ b4@2 g4@2 d4@2", // Em
  P: "[e3,c4] ~ [e3,c4] ~ [e3,c4] ~ [e3,c4] ~ [e3,c4] ~ e4@2 c4@2 a3@2", Q: "[e3,c4] ~@3 [e3,c4] ~@11",
})).s("gm_acoustic_guitar_steel").gain(0.38)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@26 A@4 B@2 C D A@2 E@2 F@2 G@3 ~@16 A@4 B@2 C D A@2 E@2 F@2 G@3 A@2 E@2 F@2 H@2 A@4 B@2 C D A@2 E@2 F@2 G@2 A@2 E@2
  F@2 G@3 I@2 J@2 I@2 J@2 I@2 J@2 ~@2
>`.pickRestart({
  A: "[e4,c5]/2", B: "[f4,c5]/2", C: "[f4,c5]", D: "[f4,b4]", E: "[c4,a4]/2", F: "[f4,d5]/2", G: "[g4,d5]",
  H: "[g4,d5]/2", I: "[e4,c5]", J: "[c4,a4]",
})).s("gm_string_ensemble_1").gain(0.2)

// chords · piano
const piano_2 = note("<~@18 A@4 B@5 ~@24 C@2 D@7 ~@63>".pickRestart({
  A: "[~@16 g5@18 ~@14 g5 ~@15, ~@15 [c5,e5]@19 ~@12 c5@17 ~, ~@47 [e5,a5]@17]/4", // C A5
  B: "[~@16 a5@22 ~@10 b5@17 ~@15, ~@14 d5@23 ~@9 d5@19 ~@15, ~@15 f5@23 ~@9 g5@19 ~@14]/5",
  C: "[~ g5, ~@7 c5@9, ~@15 e5@17, ~@16 a5 ~@15]/2",
  D: "[~@16 a5@21 ~@11 a5@25 ~@6 b5@26 ~@7, ~@14 c5@23 ~@9 d5@26 ~@6 [d5,g5]@28 ~@6, ~@15 e5@22 ~@10 f5@25 ~@40, ~@16 g5 ~@95]/7", // G5
})).s("gm_piano").gain(0.52)

// other · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@9 A B ~@23 C D C E ~@29 C F C D ~@21 C D C D ~@4 C D C G@2 ~@18>".pickRestart({
  A: "e5 d5 c5 a4", B: "g4", C: "g5@3 e5@3 d5@2", D: "c5@15 ~", E: "c5@3 ~", F: "c5", G: "[c5@19 ~@13]/2",
})).s("gm_electric_guitar_jazz").gain(0.72)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1_2 = note("<~@76 A@2 B@2 C@3 D E@2 ~@37>".pickRestart({
  A: "[[g4,c5]@27 ~@2 b4 a4 b4, ~@14 c5 ~]/2", B: "[[a4,c5]@28 c5 b4 a4 b4]/2",
  C: "[[a4,c5]@28 ~ b4 a4 ~ g4@16, ~@28 c5@2 ~ b4@17]/3", D: "[g4,b4] [f4,a4] [e4,g4] [d4,f4]", E: "[[c4,e4]@5 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@2 A@2 B@2 A@2 B@3 A@2 B@2 A B@5 A@3 B@20 A@2 B A@3 B@3 A B A@3 B@63 C ~>".pickRestart({
  A: "x ~@2 x!3 ~ x", B: "x ~@2 x!2 ~@2 x", C: "x",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct(`<
  A B@3 C D B@2 C ~ C B@2 D C B C D C D C B@3 C ~@18 C B@2 D B@3 D C D B D B@3 ~@65
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x ~ x ~ x!3 ~", D: "x!5 ~ x ~",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@13 [~@14 x!2] ~@36 [~@14 x!2] ~@3 [~@14 x!2] ~@68>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@2 B C A@2 B D B A@3 B A B C B C B A@3 B@5 A@3 B@2 A@3 B@2 A@2 B@2 A@3 C A@4 B C A@5 D A@2 B@4 A B A B@4 A@2 B@6
  A B@4 A B@2 A B@3 A B@3 A B@4 A@3 B@3 A B@2 A@3 B@2 A@3 B@3 E ~
>`.pickRestart({
  A: "x!7 ~", B: "x!8", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", D: "x!4", E: "x!3 ~@5",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A ~@23 B ~@3 B ~@8 A ~@3 A ~@19 B ~@12 B ~@3 B ~@31>".pickRestart({
  A: "~@10 x ~@2 x ~@2", B: "~@3 x",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A@2 ~@2 A@2 ~ A ~ A@3 ~ A ~@5 A@3 ~@5 A@3 ~@2 A@3 ~@2 A@2 ~@2 A@3 ~ A@4 ~@2 A@8 ~@4 A ~ A ~@4 A@2 ~@6 A ~@4 A ~@2
  A ~@3 A ~@3 A ~@4 A@3 ~@3 A ~@2 A@3 ~@2 A@3 ~@5
>`.pickRestart({
  A: "~@7 x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@9 A ~@3 B ~@23 C ~@3 C D ~@7 B ~@3 B ~@3 A ~@15 C D ~@7 D ~@3 C ~@3 C ~@31
>`.pickRestart({
  A: "~@10 x ~@2 x ~@2", B: "~@3 x", C: "~@5 x ~@2", D: "~@10 x!3 ~ x ~",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@43 x ~@79>").gain(0.35)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@9 A ~@15 A@2 B A@5 B A@3 B A@3 B A ~@15 A@4 B A B A B A B A B A@3 B A@2 B A B A B A@5 B A B A B A B A B A B A B A@5
  B A@3 B A@3 B A@5 B A C ~
>`.pickRestart({
  A: "x ~ x ~ x!3 ~", B: "x!5 ~ x ~", C: "x!3 ~@5",
})).gain(0.4)

// drums · congas
const congas = s("conga:13").struct("<~@42 [~@5 x!2 ~] ~@32 [~@5 x!2 ~] ~@7 [~@5 x!2 ~] ~@39>").gain(0.95)

stack(
  acoustic_guitar_steel, bass, piano, acoustic_guitar_steel_2, string_ensemble_1, piano_2, electric_guitar_jazz,
  string_ensemble_1_2, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, cowbell, congas
)

More by The Mavericks