Strudelify

Jack-Ass

Beck

KeyA majorTempo107 bpm
0:00/0:00
// Jack-Ass — Beck
// 107 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(107/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
const acoustic_guitar_steel = note(`<
  A@3 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@8
  A@2 B@2 A@2 B@2 ~@33
>`.pickRestart({
  A: "a3@6 a3@6 e3 ~ g3 ~", B: "d3@6 d3@6 e3 ~ d3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.23)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B
  C D A B C D A B C D A B C D E@2 F@2 E@2 F@2 E@2 F@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 I
>`.pickRestart({
  A: "[e2,a2,e3,a3,c#4,e4]@3 [e2,a2,e3,a3,c#4,e4]@2 [e2,a2,e3,a3,c#4,e4]!3", // A
  B: "[e2,a2,e3,a3,c#4,e4]@2 [e2,a2,e3,a3,c#4,e4]!6", C: "[a2,d3,a3,d4,f#4]@3 [a2,d3,b3,d4,f#4]@4 [a2,d3,b3,d4,f#4]",
  D: "[a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4]@2 [a2,d3,b3,d4,f#4]!4", E: "[e2,a2,e3,a3,c#4,e4]", F: "[a2,d3,a3,d4,f#4]",
  G: "[e2,a2,e3,a3,c#4,e4]@3 [e2,a2,e3,a3,c#4,e4]@3 [e2,a2,e3,a3,c#4,e4]@2", // A
  H: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2", I: "[e2,a2,e3,a3,c#4,e4] ~",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// other · piano
const piano = note(`<
  ~@9 A B C@2 D E F@2 G@2 H@3 I@2 ~@8 J A K L@2 A M N O P@2 Q@3 R@2 ~@9 A B C@2 D E F@2 G@2 H@3 I@2 ~@34
>`.pickRestart({
  A: "e5@3 c#5@3 ~@2", B: "d5!2 e5 d5@3 c#5 a4", C: "[b4@4 b4 c#5@2 a4@5 ~@4]/2", D: "e5@3 c#5@5",
  E: "d5 ~ d5@2 e5@2 d5@6 c#5@2 a4@2", F: "[b4@6 ~@2 b4@2 c#5@4 a4@9 ~@3 a5 ~ a5 ~ a5@2]/2",
  G: "[~ e5!4 f#5 g5 g5@2 ~@4 a4 d5 e5]/2",
  H: "[g5@2 f#5@2 ~ d5@6 ~ e5@2 d5@4 ~@4 a4@2 d5@2 ~ d5 ~@2 d5@4 c#5@8 ~@2 c#5@2 d5@2, ~@2 e5 ~@10 e5 ~@10]/3",
  I: "[e5@4 d5@2 c#5 b4@2 a4@3 ~@4]/2", J: "~@6 c#5 e5", K: "d5!2 e5 d5@2 c#5@2 a4", L: "[b4@3 c#5@3 a4@8 ~ a4]/2",
  M: "d5@3 d5@2 e5@3 d5@3 c#5@2 a4@3", N: "b4@3 a4@5", O: "~@6 a5!2", P: "[a5 e5!2 e5@2 f#5 g5 g5@6 ~ d5 e5]/2",
  Q: "[g5 f#5 e5 d5@2 a4 e5 d5@3 ~ a4 d5 e5 d5 d5@2 c#5@3 ~@2 c#5 d5]/3", R: "[e5@2 e5@2 d5@2 c#5 b4@2 a4@3 ~@4]/2",
})).s("gm_piano").gain(0.42)

// other · synth bass 1 · "Aaron Ackerson"
const synth_bass_1 = note("<~@25 A B C D E F G D ~@15 H A B C I E F G D ~@49>".pickRestart({
  A: "c#4", B: "e4", C: "e4@3 d4@5", D: "a4 ~@2 b4 ~@2 a4@2", E: "g4", F: "e4@11 f#4 g4@4", G: "c#4 d4@15",
  H: "~@3 b4 ~@2 a4@2", I: "a4 ~@2 b4 ~@2 [e4,a4]@2",
})).s("gm_lead_8_bass_lead").gain(0.6).pan(0.2)

// other · glockenspiel
const glockenspiel = note(`<
  ~@3 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@10 A
  B ~@2 A B ~@33
>`.pickRestart({
  A: "~ a4@3", B: "d4 f#4 a4 d4 f#4 a4 e4@2",
})).s("gm_glockenspiel").gain(0.3)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@8
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "a2@4 d3@2 d3 e3", B: "a2@3 d3@2 d#3 ~ e3", C: "d3@3 a2@3 b2 a2", D: "d3@3 d3@3 e3@2",
})).s("gm_acoustic_bass").gain(0.3)

// other · distortion guitar
const distortion_guitar = note("<~@74 A B C D E F G H@2 I J K L M N O P@3 Q R S T U V W X Y Z ~@3>".pickRestart({
  A: "g3 e3@13 e3@2", B: "g3@15 g3", C: "a3 g#3 a3 c#3@5 a2@2 b2@4 b2 ~", D: "d3@4 c#3@10 a3 ~", E: "a3@2 a3@2 b3 a3@3",
  F: "f#3", G: "f#3@3 f#3@2 b3@3 b3@3 b3@2 c#4@3", H: "c#4@8 g4@3 g4@2 g4@3", I: "g4 f#4@5 e4@10",
  J: "d4 e4 d4@4 c#4@6 a3@4", K: "b3@11 g4 g4@2 g4@2", L: "g4@5 g#4@3 g4@3 g#4@2 g4@3", M: "a4 ~@7 b3@3 b3@2 b3@3",
  N: "c4@6 g3@2 g3@2 a3@2 a3 ~ a3@2", O: "a3@3 b3@2 b3@3 b3@8",
  P: "[~@3 f#3@2 g3@3 g3@4 ~@6 d4@4 e4@6 d4@2 e4@4 d4@2 e4@4 d4@2 e4@3 d4@3, ~@3 f#3@2 ~@7]/3",
  Q: "c5 ~@2 b4@2 c5@3 b4@5 b4@3", R: "~@5 b3@3, c#5@7 ~", S: "c#4@3 e4@2 e4@3 e4@4 ~ b4@3",
  T: "c5 b4 c5 b4 c5 b4 c5 b4", U: "c#4 b3 c#4 b3 c#4 b3 c#4 b3!2 c#4 b3 c#4 b3 c#4 b3 c#4",
  V: "b3 c#4 ~ b3 f#4@2 e4@2 c#5@5 a4 c#5@2", W: "a4@3 c#5@2 a4@3 e5@2 a4@2 a3@4",
  X: "g#4 a4 a3 ~ a3 c#4 e3 ~@5 c#4 d4@3", Y: "e4@2 d#4@2 ~@4 e3 ~ d3@4 b2@2, ~@9 f#3@2 ~@5",
  Z: "e3@3 f#3@2 d3 ~ d3 d3@2 d3@4 a2@2",
})).s("gm_distortion_guitar").gain(0.45)

// chords · harmonica
const harmonica = note("<~@77 A@2 B C D E F G H I J K L M N@2 O@2 P Q R S T U V W X Y ~>".pickRestart({
  A: "[~@4 c#6@15 d6@2 a#5@2 a5 c6 d5 d5@2 d5@4]/2", B: "e5@14 ~ f#5, ~@7 e5", C: "f#5@3 e5 d5@3 d5 c#5@4 c5@2 a4@2",
  D: "~@5 a4 e5 d5", E: "e5@6 e5@2 e5@3 e5@2 e5@3", F: "e5 b4 a4 ~@12 d5, ~@7 c#5",
  G: "g5@3 f#5@2 e5@3 e5@3 d5@2 c#5@3", H: "c#5@6 d5@2 e5@6 d5 b4", I: "c#5@2 d5@3 e5@2 d5",
  J: "e5@3 e5@2 d5@3 c#5@3 d5@2 g4@3", K: "d5@2 c#5@3 d5 a4@2 d5 ~ d5@2 [e5,f#5]@4",
  L: "a4 ~ [a4,d5]!3 ~ [a4,d5]!3 ~ [a4,d5]!4 [e4,g4]@2", // D5 Em
  M: "[a4,d5] ~ [a4,d5] ~@3 [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5]@4", // D5
  N: "[a4,d5] ~ [a4,d5] ~@3 [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5]@2 ~@2", // D5
  O: "[[c#5,e5]@12 ~@2 c#5@4 d5@2 ~@2 c#5 d5 g5@3 c#5@2 e5@3]/2", P: "~@6 e5 d5 e5 ~@2 e5@2 ~ e5 ~",
  Q: "e5 ~@2 e5@2 ~ e5 d5!2 ~ [d5,e5] ~ c#5@2 ~@2", // Dsus2
  R: "~ [c#5,e5] ~ c#5!2 e5 c#5 [c#5,e5]!2 ~ [b4,c#5]@5 ~, ~@2 e5@2 ~@6 e5 ~@5", // C#m Bsus2
  S: "~ [c#5,e5] ~ [c#5,e5] ~ [c#5,e5]!2 ~ [c#5,e5] [c#5,e5]@4 ~@3", T: "~@2 g5@4 d5@2 e5@5 d5@3",
  U: "e5 ~@2 e5 ~ e5 ~@2 e5@3 d5@3 c#5 ~", V: "e5@3 ~@2 d5 ~ d5", W: "[a4,b4]@2 ~@6 e5@3 d5@2 c#5@3, ~@8 c#5 ~@7",
  X: "a4@2 ~@6 a4 ~@7", Y: "e5@6 ~@2 e5 b5@7, c#5 ~@8 a5 ~@6",
})).s("gm_harmonica").gain(0.21).pan(0.7)

// other · flute
const flute = note(`<
  ~ A B C D A B C D ~@8 A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D A B C D ~@8 A B C D A B C D ~@33
>`.pickRestart({
  A: "c#5 b4 f#4 c#5 b4 f#4 c#5 b4", B: "f#4 c#5 b4 f#4 c#5 b4 f#4 c#5", C: "g4 f#4 a3 g4 f#4 a3 g4 f#4",
  D: "a3 g4 f#4 a3 g4 f#4 a3@2",
})).s("gm_flute").gain(0.11).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@73 [x!2 ~@3 x ~@2]!32 ~>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@73 [~ x ~ x]!32 ~>").gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@73 [~ x]!32 ~>").gain(0.64)

// drums · guiro
const guiro = s("guiro:0").struct("<[x!8]!57 ~@8 [x!8]!8 ~@33>").gain(13.52)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, piano, synth_bass_1, glockenspiel, bass, distortion_guitar, harmonica,
  flute, kick, snare, pedal_hat, guiro
)

More by Beck