Strudelify

Alternative Baby

Reel Big Fish

KeyE♭ majorTempo107 bpm
0:00/0:00
// Alternative Baby — Reel Big Fish
// 107 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 78 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 · [...]/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 · distortion guitar · "TabIt MIDI - Track 1"
const distortion_guitar = note(`<
  A@3 B@2 ~@18 C D@4 E ~@14 C D@4 F G@2 H@2 ~@3 I ~@3 I J K L M N O N P A@7 Q@2
>`.pickRestart({
  A: "[eb3,bb3,eb4]@3 ~ [c3,g3,c4]@2 ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] [ab2,eb3,ab3]@3 ~", // Eb5 C5 Db5 Ab5
  B: "[[eb3,bb3,eb4]@4 [c3,g3,c4]@3 [ab2,eb3,ab3]@17 ~@8]/2", C: "~@4 [bb2,f3,bb3] ~ [bb2,f3,bb3] ~",
  D: "[[d3,a3,d4] [d3,a3,d4]@2 [c3,g3,c4]@2 [d3,a3,d4] [d3,a3,d4]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [bb2,f3,bb3]!3 [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb3,bb3,eb4]@2 g3 f3 g3@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [bb2,f3,bb3]!3 [eb3,bb3,eb4]@2 [eb3,bb3,eb4]!2 c4@2 bb3 g3@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [bb2,f3,bb3]!3 [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb3,bb3,eb4]@2 g3 f3 g3@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!6]/4", // D5 C5 D5 Ab5 Bb5 Eb5 Ab5 Bb5 …
  E: "[bb2,f3,bb3]!8 ~@8", F: "[bb2,f3,bb3]!8 [eb3,bb3,eb4]@3 ~ [c3,g3,c4]@2 ~ [db3,ab3,db4]",
  G: "~ [db3,ab3,db4] ~ [db3,ab3,db4] [ab2,eb3,ab3]@3 ~ [eb3,bb3,eb4]@3 ~ [c3,g3,c4]@2 ~ [db3,ab3,db4]", // Db5 Ab5 Eb5 C5 Db5
  H: "[~ [db3,ab3,db4] ~ [db3,ab3,db4] [ab2,eb3,ab3]@3 ~ [eb3,bb3,eb4]@4 [c3,g3,c4]@3 [ab2,eb3,ab3]@17]/2", // Db5 Ab5 Eb5 C5 Ab5
  I: "~@7 [g3,g4] [ab3,ab4] [g3,g4] [ab3,ab4]@2 [bb3,bb4]@4", // G Ab G Ab Bb
  J: "~@2 [f4,ab4,c5] ~@3 [f4,ab4,c5] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", // Fm Bb
  K: "~@2 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~@3 [eb4,g4,c5] ~@3 [eb4,g4,c5] ~", // Eb Cm
  L: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  M: "[bb2,f3,bb3]@2 ~@2 [bb2,f3,bb3]@2 ~@2 [d3,a3,d4] [d3,a3,d4]@2 [c3,g3,c4]@2 [d3,a3,d4] [d3,a3,d4]@2", // Bb5 D5 C5 D5
  N: "[ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [bb2,f3,bb3]!3 [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb3,bb3,eb4]@2 g3 f3 g3@2", // Ab5 Bb5 Eb5
  O: "[ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [bb2,f3,bb3]!3 [eb3,bb3,eb4]@2 [eb3,bb3,eb4]!2 c4@2 bb3 g3@2", // Ab5 Bb5 Eb5
  P: "[ab2,eb3,ab3]@2 [ab2,eb3,ab3]!6 [bb2,f3,bb3]!8", // Ab5 Bb5
  Q: "[[eb3,bb3,eb4]@4 [c3,g3,c4]@3 [ab2,eb3,ab3]@17 [eb3,bb3,eb4]@2 ~@6]/2", // Eb5 C5 Ab5 Eb5
})).s("gm_distortion_guitar").gain(0.27)

// chords · electric guitar clean · "TabIt MIDI - Track 1"
const electric_guitar_clean = note(`<
  ~@4 A B C D E B C D F G H G I J K J L H G M ~@4 A B C D F G H G I J K J L H G M ~@9 N O N P N O N P ~@17
>`.pickRestart({
  A: "~@8 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]", // Eb
  B: "~ [bb3,eb4,g4] ~ [bb3,eb4,g4] [ab3,c4,eb4]@2 [bb3,d4,f4]@2 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]", // Eb Ab Bb Eb
  C: "~ [ab3,c4,eb4]@3 [bb3,d4,f4] ~@3 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]", // Ab Bb Eb
  D: "~ [bb3,eb4,g4] ~ [bb3,eb4,g4] [ab3,c4,eb4]@2 [bb3,d4,f4]@2 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [g3,g4]", // Eb Ab Bb Eb G
  E: "[ab3,ab4] [g3,g4] [ab3,ab4]@2 [bb3,bb4]@4 [bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]", // Ab G Ab Bb Eb
  F: "[ab3,ab4] [g3,g4] [ab3,ab4]@2 [bb3,bb4]@4 ~@2 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~", // Ab G Ab Bb Eb
  G: "~@2 [eb4,g4,c5] ~@3 [eb4,g4,c5] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Cm Ab
  H: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~", // Bb Eb
  I: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@2 [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4]", // Bb Eb
  J: "~ [eb4,g4,c5] ~ [eb4,g4,c5] ~ [eb4,g4,c5] ~ [eb4,g4,c5] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4]", // Cm Ab
  K: "~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4]", // Bb Eb
  L: "~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~@2 [f4,ab4,c5] ~@3 [f4,ab4,c5] ~", // Bb Fm
  M: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@9", // Ab
  N: "[bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] [ab3,c4,eb4]@2 [bb3,d4,f4]@2", // Eb Ab Bb
  O: "[bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [ab3,c4,eb4]@3 [bb3,d4,f4] ~@3", // Eb Ab Bb
  P: "[bb3,eb4,g4]!2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@10", // Eb
})).s("gm_electric_guitar_clean").gain(0.27)

// bass · electric bass finger · "TabIt MIDI - Track 2"
const bass = note(`<
  A@3 B@2 C D E F C D E G@2 H@6 I J K L M@4 N C D E O@2 H@6 I J K L M@4 P@5 Q R Q S Q R Q S T U V W X Y X Z A@7 AA@2
>`.pickRestart({
  A: "eb2 ~ eb2!2 c2 ~ c2 db2@2 db2@2 db2 ab1@2 bb1@2", B: "[eb2@4 c2@3 ab1@17 eb2!2 ~ bb2 ~ g2 ~ ab2]/2",
  C: "~ eb2 ~ ab1 ab1@2 bb1@2 eb2!2 ~ g2 ~ ab2 ~ bb2", D: "~ ab1@3 bb1 ~@3 eb2!2 ~ bb2 ~ g2 ~ ab2",
  E: "~ eb2 ~ ab1 ab1@2 bb1@2 eb2!2 ~ g2 ~ ab2 ~ g1", F: "ab1 g1 ab1@2 bb1@4 eb2!2 ~ bb2 ~ g2 ~ ab2",
  G: "[ab1 g1 ab1@2 bb1@4 eb2!2 ~ g2@2 bb2@2 c3@2 c2@2 c2 c3@2 c3@2 ab1!2 ~ eb2 ~ ab1 ~ ab1]/2",
  H: "[bb1!4 ab1@2 bb1@2 eb2!2 ~ g2@2 bb2@2 c3@2 c2@2 c2 c3@2 c3@2 ab1!2 ~ eb2 ~ ab1 ~ ab1]/2",
  I: "bb1!4 ab1@2 bb1@2 ~@2 f2@2 c3 bb2 ab2@2", J: "bb1 ~ bb1 ~ bb2 ab2 g2@2 eb2 ~ eb2 ~ bb2@2 eb2 ~",
  K: "~@2 c2 ~ g2@2 c2 ~ ab1@2 ab1@2 ab1!2 ab1@2", L: "ab1@2 ab1@2 ab1!4 bb1@2 ~@2 bb1@2 ~@2",
  M: "[d2 d2@2 c2@2 d2 d2@2 ab1@2 ab1!2 bb1!3 eb2@2 eb2 eb2@2 g2 f2 g2@2 ab1@2 ab1!2 bb1!3 eb2@2 eb2!2 c3@2 bb2 g2@2 ab1@2 ab1!2 bb1!3 eb2@2 eb2 eb2@2 g2 f2 g2@2 ab1@2 ab1!6]/4",
  N: "bb1!8 eb2!2 ~ bb2 ~ g2 ~ ab2",
  O: "[ab1 g1 ab1@2 bb1@3 ~ eb2!2 ~ g2@2 bb2@2 c3@2 c2@2 c2 c3@2 c3@2 ab1!2 ~ eb2 ~ ab1 ~ ab1]/2",
  P: "[bb1!8 eb2 ~ eb2!2 c2 ~ c2 db2@2 db2@2 db2 ab1@2 bb1@2 eb2 ~ eb2!2 c2 ~ c2 db2@2 db2@2 db2 ab1@2 bb1@2 eb2 ~ eb2!2 c2 ~ c2 db2@2 db2@2 db2 ab1@2 bb1@2 eb2@4 c2@3 ab1@17]/5",
  Q: "eb2!2 ~ bb2 ~ g2 ~ ab2 ~ eb2 ~ ab1 ab1@2 bb1@2", R: "eb2!2 ~ g2 ~ ab2 ~ bb2 ~ ab1@3 bb1 ~@3",
  S: "eb2!2 ~ g2 ~ ab2 ~ g1 ab1 g1 ab1@2 bb1@4", T: "~@2 f2@2 c3 bb2 ab2@2 bb1 ~ bb1 ~ bb2 ab2 g2@2",
  U: "eb2 ~ eb2 ~ bb2@2 eb2 ~@3 c2 ~ g2@2 c2 ~", V: "ab1@2 ab1@2 ab1!2 ab1@2 ab1@2 ab1@2 ab1!4",
  W: "bb1@2 ~@2 bb1@2 ~@2 d2 d2@2 c2@2 d2 d2@2", X: "ab1@2 ab1!2 bb1!3 eb2@2 eb2 eb2@2 g2 f2 g2@2",
  Y: "ab1@2 ab1!2 bb1!3 eb2@2 eb2!2 c3@2 bb2 g2@2", Z: "ab1@2 ab1!6 bb1!8", AA: "[eb2@4 c2@3 ab1@17 eb2@2 ~@6]/2",
})).s("gm_electric_bass_finger").gain(0.54)

// other · clarinet · "TabIt MIDI - Track 4"
const clarinet = note(`<
  ~@12 A@3 B C D E F G H@2 I J@4 K ~@3 A@3 B C D E F G H@2 I J@4 K ~@12 L@2 M N O P Q R ~@9
>`.pickRestart({
  A: "[~@10 [bb3,bb4]@2 [bb3,bb4]@3 [c4,c5]@2 [bb3,bb4]@2 [g3,g4]@2 [f3,f4] [eb3,eb4]@4 [c4,c5]@2 [c4,c5] [c4,c5]@2 [c4,c5]@2 [bb3,bb4]@2 [g3,g4]@2 ~@2 [g3,g4] [bb3,bb4] [bb3,bb4]@2 [bb3,bb4]@2 [g3,g4]@3]/3", // Bb C Bb G F Eb C Bb …
  B: "~@4 [c4,c5] [bb3,bb4]@2 [c4,c5]@2 ~@7", C: "~@7 [bb3,bb4]!9", D: "[eb4,eb5]!16",
  E: "[eb4,eb5]!2 [c4,c5]@2 [bb3,bb4] [g3,g4] [f3,f4] [g3,g4]@2 [eb3,eb4]@2 ~@5", // Eb C Bb G F G Eb
  F: "~@3 [g3,g4] [ab3,ab4]!2 [g3,g4] [ab3,ab4]@2 ~@7", G: "~@10 [ab3,ab4]!2 [ab3,ab4]@2 [ab3,ab4]!2",
  H: "[[ab3,ab4]@2 [g3,g4] [f3,f4]@2 [eb3,eb4]!2 [g3,g4]@2 [g3,g4]@2 [ab3,ab4]@2 [g3,g4]@2 [ab3,ab4]@2 [g3,g4]@2 [f3,f4]@2 [eb3,eb4] ~@4 [ab3,ab4]!3 ~@3]/2", // Ab G F Eb G Ab G Ab …
  I: "[ab3,ab4]!3 [eb3,eb4]@3 [g3,g4]@2 [f3,f4]@2 ~@6", // Ab Eb G F
  J: "[~@8 [eb3,eb4]@4 [g3,g4]!3 [eb3,eb4]@2 [eb3,eb4]!2 [eb3,eb4]@2 ~@3 [eb3,eb4]!4 [d3,d4] [d3,d4]@2 [bb2,bb3]@2 ~@6 [eb3,eb4] [eb3,eb4]@2 [eb3,eb4]@2 [eb3,eb4] [eb3,eb4]@2 [g3,bb4]@2 [g3,bb4]@2 [f3,ab4]@2 [eb3,g4]!4 [c3,eb4]@2 [bb2,c4]@2 ~@2 [bb2,c4]]/4", // Eb G Eb D Bb Eb Gm Fm …
  K: "[g3,bb4] [g3,bb4]@2 [f3,ab4]@2 [eb3,g4] [eb3,g4]@2 ~@8", // Gm Fm Eb
  L: "[~@2 [ab3,ab4]!2 [ab3,ab4]@2 [ab3,ab4]!2 [ab3,ab4]@2 [g3,g4] [f3,f4]@2 [eb3,eb4]!2 [g3,g4]@2 [g3,g4]@2 [ab3,ab4]@2 [g3,g4]@2 [ab3,ab4]@2 [g3,g4]@2 [f3,f4] [eb3,eb4]@2 ~@2]/2", // Ab G F Eb G Ab G Ab …
  M: "~@2 [ab3,ab4]!3 ~@3 [ab3,ab4]!3 [eb3,eb4]@3 [g3,g4]@2", N: "[f3,f4] ~@7",
  O: "[eb3,eb4]@4 [g3,g4]!3 [eb3,eb4]@2 [eb3,eb4]!2 [eb3,eb4]@2 ~@3", // Eb G Eb
  P: "[eb3,eb4]!4 [d3,d4] [d3,d4]@2 [bb2,bb3]@2 ~@6 [eb3,eb4]", // Eb D Bb Eb
  Q: "[eb3,eb4]@2 [eb3,eb4]@2 [eb3,eb4] [eb3,eb4]@2 [g3,bb4]@2 [g3,bb4]@2 [f3,ab4]@2 [eb3,g4]!3", // Eb Gm Fm Eb
  R: "[eb3,g4] [c3,eb4]@2 [bb2,c4]@2 ~@2 [bb2,c4] [g3,bb4] [g3,bb4]@2 [f3,ab4]@2 [eb3,g4] [eb3,g4]@2", // Eb Cm Bbsus2 Gm Fm Eb
})).s("gm_clarinet").gain(0.39)

stack(distortion_guitar, electric_guitar_clean, bass, clarinet)

More by Reel Big Fish