Strudelify

Scatman's World

John Larkin Antonio Catania

KeyE majorTempo147 bpm
0:00/0:00
// Scatman's World — John Larkin Antonio Catania
// 147 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5665384; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 25 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(147/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trumpet · "B♭ Trumpet"
const trumpet = note("<A@2 B C B C@3 D E@2 F G H@2 I@2 E@2 F G H@2 J@2>".pickRestart({
  A: "[~@15 d5@4 a4@3 d5@4 a4@2 d5!2 e5@2]/2", B: "f#5@3 g5@3 f#5@4 e5@2 d5!2 e5@2", C: "d5@3 a4@3 d5@4 a4@2 d5!2 e5@2",
  D: "f#5@3 g5@3 f#5@4 e5@2 d5!2 a4@2", E: "[d5!4 e5@2 f#5@4 ~@5 g4]/2", F: "b4!4 c#5@2 d5@2", G: "f#4@4 ~ b4 b4@2",
  H: "d5 b4 a4 d5 ~ a4 b4 a4", I: "[d5 b4 a4 d5 ~ d5 e5 f#5@2 g5@2 e5@2 ~@2 a4]/2",
  J: "[d5 b4 a4 d5 ~ d5 e5 f#5@2 g5@2 e5@2 ~@3]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note("<A@2 B C B C@3 B D E D F G H G I D E D F G H G I>".pickRestart({
  A: "[~@15 d4@4 a3@3 d4@4 a3@2 d4!2 e4@2]/2", B: "f#4@3 g4@3 f#4@4 e4@2 d4!2 e4@2", C: "d4@3 a3@3 d4@4 a3@2 d4!2 e4@2",
  D: "f#4", E: "e4@2 a4 g4", F: "c#4 e4", G: "d4", H: "d4@2 d4!2", I: "f#4 e4",
})).s("gm_trumpet").gain(0.3)

// other · alto sax · "Alto Saxophone 2"
const alto_sax = note("<A@2 B C D E F E G C B C D E F E G C B C D E F E G>".pickRestart({
  A: "[~@15 d4@17]/2", B: "c#4", C: "d4", D: "a3", E: "g3", F: "f#3@2 f#3 a3", G: "f#3 a3",
})).s("gm_alto_sax").gain(0.3)

// other · trombone
const trombone = note("<A@2 B C D E F G B F B C D E F G B F B C D E F G ~>".pickRestart({
  A: "[~@15 d3@2 ~@2 d3@2 ~ d3@2 ~@2 d3@2 ~@2 d3@2]/2", B: "a2@2 ~ a2@2 ~ a2@2 ~@2 a2@2 ~@2 a2@2",
  C: "b2@2 ~ b2@2 ~ b2@2 ~@2 b2@2 ~@2 b2@2", D: "f#2@2 ~ f#2@2 ~ f#2@2 ~@2 f#2@2 ~@2 f#2@2",
  E: "g2@2 ~ g2@2 ~ g2@2 ~@2 g2@2 ~@2 g2@2", F: "d3@2 ~ d3@2 ~ d3@2 ~@2 d3@2 ~@2 d3@2",
  G: "e3@2 ~ e3@2 ~ e3@2 ~@2 e3@2 ~@2 e3@2",
})).s("gm_trombone").gain(0.3)

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

// drums · snare
const snare = s("sd").struct("<~@8 [~@4 x ~ x ~@3 x ~ x!4] [~ x ~ x]!15 ~>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[~@15 x] [x!2 ~ x!13] [x!16]!6 ~ [x!16]!16>").gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x ~@4 x ~@3 x ~@3 x ~] [~ x ~ x ~ x ~ x]!6 ~ [~ x ~ x ~ x ~ x]!16>").gain(0.3)

stack(trumpet, trumpet_2, alto_sax, trombone, kick, snare, hihat, tambourine)