Strudelify

whats new scooby doo

Rich Dickerson

KeyD♭ majorTempo162 bpm
0:00/0:00
// whats new scooby doo — Rich Dickerson
// 162 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6322802; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(162/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 · piccolo
const piccolo = note("<A B C@2 D B E F@2 G H@3 G I J@2 ~@3 K ~@2 L@2 M N@2 O@2 P Q@2 R S@3 R E T ~>".pickRestart({
  A: "~@4 eb6 f6 eb6 f6", B: "db6@2 ~ db6 eb6 f6 eb6 db6", C: "[c6@2 ~ c6 db6 eb6@2 f6@3 f6@2 eb6 db6@2 db6]/2",
  D: "bb5@2 ~ bb5 eb6 f6 eb6 f6", E: "c6@2 ~@2 eb6 f6 eb6 f6", F: "[db6@2 db6@10 gb6 ab6 gb6 ab6]/2",
  G: "gb6@2 ~ gb6!2 ab6 gb6 f6", H: "[eb6@2 ~ eb6 f6 gb6@2 ab6@3 ab6@2 gb6 f6@2 f6@3 ~ gb6!2 ab6 gb6 ab6]/3",
  I: "eb6@2 ~@2 gb6 ab6 gb6 ab6", J: "[f6 f6@7]/2", K: "~ ab6@3", L: "[~@4 gb6 gb6@2 ab6@3 ~@6]/2", M: "gb6!2 ~@6",
  N: "ab6!2 ~@6", O: "bb5!2 ~@6", P: "c6!2 ~@6", Q: "[f6@2 f6@10 eb6 f6 eb6 f6]/2", R: "db6@2 ~@2 eb6 f6 eb6 db6",
  S: "[c6@2 ~@2 db6 eb6@2 f6@3 f6@2 eb6 db6@2 ~ bb5@2 ~@2 eb6 f6 eb6 f6, ~@5 db6 ~@2]/3", T: "f6 f6@3",
})).s("gm_piccolo").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<A B C@2 D B E F@2 B G@3 B E H@2 ~@3 I ~@2 J@2 K L M@2 K L N@2 O P@3 O E Q ~>".pickRestart({
  A: "~@4 eb5 f5 eb5 f5", B: "db5@2 ~ db5 eb5 f5 eb5 db5", C: "[c5@2 ~ c5 db5 eb5@2 f5@3 f5@2 eb5 db5@2 db5]/2",
  D: "bb4@2 ~ bb4 eb5 f5 eb5 f5", E: "c5@2 ~@2 eb5 f5 eb5 f5", F: "[[db5,f5]@2 [db5,f5]@10 eb5 f5 eb5 f5]/2",
  G: "[c5@2 ~ c5 db5 eb5@2 f5@3 f5@2 eb5 db5@2 db5@3 ~ bb4 eb5 f5 eb5 f5]/3", H: "[db5 db5@7]/2", I: "~ [db5,f5]@3",
  J: "[~@4 [gb5,bb5] [gb5,bb5]@2 [ab5,c6]@3 ~@6]/2", K: "[gb4,db5]!2 ~@6", L: "[ab4,eb5]!2 ~@6", M: "[db5,f5]!2 ~@6",
  N: "[[ab4,db5]@2 [ab4,db5]@10 eb5 f5 eb5 f5]/2", O: "db5@2 ~@2 eb5 f5 eb5 db5",
  P: "[c5@2 ~@2 db5 eb5@2 f5@3 f5@2 eb5 db5@2 ~ bb4@2 ~@2 eb5 f5 eb5 f5, ~@5 db5 ~@2]/3", Q: "[ab4,db5] [ab4,db5]@3",
})).s("gm_clarinet").gain(0.4)

// chords · alto sax · "Alto Saxophone"
const alto_sax = note("<~ A B C D A B E@2 F G H I F G J@2 K@4 L@4 M N@3 M O P@2 Q R@3 S T U ~>".pickRestart({
  A: "gb4 ~@3", B: "ab4 ~@3", C: "f4 ~@3", D: "f4!2 ~ f4!3 ~ f4", E: "[[db4,f4] [db4,f4]@7]/2", F: "[db4,gb4] ~@3",
  G: "[eb4,ab4] ~@3", H: "[f4,ab4] ~@3", I: "[f4,bb4]!2 ~ [f4,bb4] [f4,c5]!2 ~ [f4,c5]", J: "[[db4,ab4] [db4,ab4]@7]/2",
  K: "[~@4 [bb3,db4] [c4,eb4]@2 [c4,eb4]@5 [c4,eb4] [eb4,gb4]@2 [gb4,bb4]@3 [gb4,bb4]@2 [gb4,bb4] [gb4,bb4]@2 [f4,ab4]@3 ~@6]/4", // Bbm Cm Ebm Gb Fm
  L: "[~@3 [ab3,c4] [bb3,db4] [c4,eb4]@2 [c4,eb4]@5 [c4,eb4] [eb4,gb4]@2 [gb4,bb4]@3 [gb4,bb4]@2 [gb4,bb4] [gb4,bb4]@2 [ab4,c5]@3 ~@6]/4", // Ab Bbm Cm Ebm Gb Ab
  M: "gb4!2 ~@6", N: "[c5!2 ~ eb4 f4 gb4@2 ab4@3 ab4@2 gb4 f4@2 f4@3 ~@6]/3", O: "c5!2 ~@2 eb4 f4 eb4 f4",
  P: "[[db4,f4]@2 [db4,f4]@10 eb4 f4 eb4 f4]/2", Q: "db4@2 ~@2 eb4 f4 eb4 db4",
  R: "[c4@4 ~@4 db4@2 eb4@4 f4@6 f4@4 eb4@2 db4@4 ~@2 bb3@4 ~@4 gb3 bb3 c4 db4 eb4 f4 gb4 ab4, ~@5 db4 ~@2]/3",
  S: "bb4", T: "c5", U: "[f4,db5] [f4,db5]@3",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~ A B C D C E F@2 G E B H G E I@2 J K@2 L J M@3 N O@2 P N Q R@2 S J T U S J V C>".pickRestart({
  A: "gb3 ~@3", B: "ab3 ~@3", C: "db4 ~@3", D: "bb3!2 ~ bb3 c4!2 ~ c4", E: "c4 ~@3", F: "[db4 db4@7]/2", G: "bb3 ~@3",
  H: "f3!2 ~ f3!3 ~ f3", I: "[f3 f3@4 db4 c4 bb3]/2", J: "ab3",
  K: "[ab3@2 ab3 f3 ab3 bb3 db4 db4@3 db4@2 db4 db4@2 ~]/2", L: "~ db4 c4 bb3",
  M: "[ab3@2 ab3 f3 ab3 bb3 db4 db4@3 db4@2 db4 db4@2 eb4@3 ~@2 eb4 f4 eb4 f4]/3", N: "db4@2 ~ db4 eb4 f4 eb4 db4",
  O: "[c4@2 ~ c4 db4 eb4@2 f4@3 f4@2 eb4 db4@2 db4]/2", P: "bb3@2 ~ bb3 eb4 f4 eb4 f4", Q: "c4@2 ~@2 eb4 f4 eb4 f4",
  R: "[db4@2 db4@8 db3!4 eb3 f3]/2", S: "gb3", T: "db3", U: "f3", V: "f3@4 f3@10 ab3 bb3",
})).s("gm_tenor_sax").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A B C@2 D B E F@2 G H@3 G I J@2 ~@3 K ~@2 L@2 M N O@2 M P Q@2 R S@3 R I T ~>".pickRestart({
  A: "~@4 eb4 f4 eb4 f4", B: "db4@2 ~ db4 eb4 f4 eb4 db4", C: "[c4@2 ~ c4 db4 eb4@2 f4@3 f4@2 eb4 db4@2 db4]/2",
  D: "bb3@2 ~ bb3 eb4 f4 eb4 f4", E: "c4@2 ~@2 eb4 f4 eb4 f4", F: "[[db4,f4]@2 [db4,f4]@10 eb5 f5 eb5 f5]/2",
  G: "db5@2 ~ db5 eb5 f5 eb5 db5", H: "[c5@2 ~ c5 db5 eb5@2 f5@3 f5@2 eb5 db5@2 db5@3 ~ bb4 eb5 f5 eb5 f5]/3",
  I: "c5@2 ~@2 eb5 f5 eb5 f5", J: "[[ab4,db5] [ab4,db5]@7]/2", K: "~ [db5,f5]@3",
  L: "[~@4 [gb4,bb4] [gb4,bb4]@2 [ab4,c5]@3 ~@6]/2", M: "[gb4,db5]!2 ~@6", N: "[ab4,eb5]!2 ~@6", O: "[db5,f5]!2 ~@6",
  P: "[ab4,eb5]!2 ~@2 eb5 f5 eb5 f5", Q: "[[ab4,db5]@2 [ab4,db5]@10 eb5 f5 eb5 f5]/2", R: "db5@2 ~@2 eb5 f5 eb5 db5",
  S: "[c5@4 ~@4 db5@2 eb5@4 f5@6 eb5 f5@3 eb5@2 db5@4 ~@2 bb4@4 ~@4 eb5@2 f5@2 eb5@2 f5@2, ~@5 db5 ~@2]/3",
  T: "[f4,ab4] [f4,ab4]@3", // Fm
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Horn in F"
const french_horn = note("<~ A B C D A B E@2 F G@2 H F I J@2 K@4 L@4 M N@3 M O E@2 P Q@3 R S T ~>".pickRestart({
  A: "gb4 ~@3", B: "ab4 ~@3", C: "f4 ~@3", D: "f4!2 ~ f4!3 ~ f4", E: "[[f4,db5]@2 [f4,db5]@10 eb4 f4 eb4 f4]/2",
  F: "db4@2 ~ db4 eb4 f4 eb4 db4", G: "[c4@2 ~ c4 db4 eb4@2 f4@3 f4@2 eb4 db4@2 db4]/2", H: "bb3@2 ~ bb3 eb4 f4 eb4 f4",
  I: "c4@2 ~@2 eb4 f4 eb4 f4", J: "[db4 db4@7]/2",
  K: "[~@4 [bb3,db4] [c4,eb4]@2 [c4,eb4]@5 [c4,eb4] [eb4,gb4]@2 [gb4,bb4]@3 [gb4,bb4]@2 [gb4,bb4] [gb4,bb4]@2 [f4,ab4]@3 ~@6]/4", // Bbm Cm Ebm Gb Fm
  L: "[~@3 [ab3,c4] [bb3,db4] [c4,eb4]@2 [c4,eb4]@5 [c4,eb4] [eb4,gb4]@2 [gb4,bb4]@3 [gb4,bb4]@2 [gb4,bb4] [gb4,bb4]@2 [ab4,c5]@3 ~@6]/4", // Ab Bbm Cm Ebm Gb Ab
  M: "gb4!2 ~@6", N: "[c5!2 ~ eb4 f4 gb4@2 ab4@3 ab4@2 gb4 f4@2 f4@3 ~@6]/3", O: "c5!2 ~@2 eb4 f4 eb4 f4",
  P: "db4@2 ~@2 eb4 f4 eb4 db4",
  Q: "[c4@4 ~@4 db4@2 eb4@4 f4@6 eb4 f4@3 eb4@2 db4@4 ~@2 bb3@4 ~@4 gb3 bb3 c4 db4 eb4 f4 gb4 ab4, ~@5 db4 ~@2]/3",
  R: "bb4", S: "c5", T: "[f4,db5] [f4,db5]@3",
})).s("gm_french_horn").gain(0.45)

// chords · trombone
const trombone = note("<~ A B C D A B E@2 A B F D A B G@2 H@3 I J@4 K L@2 M K N O@2 P Q R S P Q T U>".pickRestart({
  A: "[gb3,db4] ~@3", B: "[ab3,eb4] ~@3", C: "[f3,db4] ~@3", D: "[f3,bb3]!2 ~ [f3,bb3] [f3,c4]!2 ~ [f3,c4]",
  E: "[[db3,ab3] [db3,ab3]@7]/2", F: "[f3,ab3] ~@3", G: "[[db3,f3] [ab3,db4]@4 db4 c4 bb3]/2",
  H: "[ab3@4 bb3 c4@2 c4@5 c4 eb3@2 gb3@3 gb3@2 gb3 gb3@2 ~]/3", I: "~ db4 c4 bb3",
  J: "[~@3 ab3 bb3 c4@2 c4@5 c4 eb3@2 gb3@3 gb3@2 gb3 gb3@2 ab3@3 ~@2 eb4 f4 eb4 f4]/4",
  K: "db4@2 ~ db4 eb4 f4 eb4 db4", L: "[c4@2 ~ c4 db4 eb4@2 f4@3 f4@2 eb4 db4@2 db4]/2", M: "bb3@2 ~ bb3 eb4 f4 eb4 f4",
  N: "c4@2 ~@2 eb4 f4 eb4 f4", O: "[[ab3,db4] [ab3,db4]@7]/2", P: "[gb3,db4]", Q: "[ab3,eb4]", R: "[f3,ab3]",
  S: "[f3,bb3]", T: "[db3,ab3] [db3,ab3]@3", U: "ab3 ~@3",
})).s("gm_trombone").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_2 = note(`<
  ~ A B C D A B E@2 A B F D A B G@2 H I@2 J K L@3 M N@2 O M P E@2 Q R K S Q R T U
>`.pickRestart({
  A: "bb3 ~@3", B: "c4 ~@3", C: "ab3 ~@3", D: "f3!2 ~ f3!3 ~ f3", E: "[f3 f3@7]/2", F: "db3 ~@3",
  G: "[f3 f3@4 db4 c4 f3]/2", H: "eb3", I: "[ab3@2 ab3 f3 ab3 bb3 db4 db4@3 db4@2 db4 db4@2 ~]/2", J: "~ db4 c4 bb3",
  K: "ab3", L: "[ab3@2 ab3 f3 ab3 bb3 db4 db4@3 db4@2 db4 db4@2 eb4@3 ~@2 eb4 f4 eb4 f4]/3",
  M: "db4@2 ~ db4 eb4 f4 eb4 db4", N: "[c4@2 ~ c4 db4 eb4@2 f4@3 f4@2 eb4 db4@2 db4]/2", O: "bb3@2 ~ bb3 eb4 f4 eb4 f4",
  P: "c4@2 ~@2 eb4 f4 eb4 f4", Q: "bb3", R: "c4", S: "f3", T: "f3@4 f3@10 ab3 bb3", U: "db4 ~@3",
})).s("gm_french_horn").gain(0.3)

// bass · tuba
const bass = note("<A B C D E B C F@2 B C D E B C G@2 H@2 I J H@2 K@2 L M N O L M P@2 B C D E B C Q R>".pickRestart({
  A: "db3 c3 bb2 ab2 gb2 f2 eb2 db2", B: "gb2", C: "ab2", D: "db2", E: "f2", F: "[db2 db2@7]/2",
  G: "[db2 db2@4 db2 c2 bb1]/2", H: "ab1!4", I: "gb1@2 gb1@2 gb1 gb1@2 ~", J: "~ db2 c2 bb1",
  K: "[gb1@2 gb1@2 gb1 gb1@2 ab1@3 ~@6]/2", L: "gb2!2 ~@6", M: "ab2!2 ~@6", N: "db2!2 ~@6", O: "f2!2 ~@6",
  P: "[db2@2 db2@8 db2!4 eb2 f2]/2", Q: "db2 db2@3", R: "db2 ~@3",
})).s("gm_tuba").gain(0.4)

// drums · kick
const kick = s("bd").struct("<A@8 B A@7 C@4 D C@3 E F@3 G F@2 A B@8 H>".pickRestart({
  A: "x ~@3 x ~@2 x!2 ~ x ~ x ~@3", B: "x!4", C: "x ~ x ~ x!4", D: "~@2 x ~ x!4", E: "~ x!4 ~ x ~", F: "x!3 ~@2 x!2 ~",
  G: "x!3 ~@2 x!3", H: "x",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<A@4 B A@3 C A@3 B A@3 D E@3 ~ E@3 F A@7 C G@6 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!4", C: "x!16", D: "x!4 ~@12", E: "~@5 x ~ x", F: "~@2 x ~@3 x ~ x!4 ~@4", G: "x!8",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@7 x] ~@12>").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 [~@8 x!8] ~@3 [~@8 x!8] ~@3 [~ x ~@2] ~@16>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@8 A B@2 ~ A B@2 ~@8 A C@6 A ~>".pickRestart({
  A: "x!4", B: "~@2 x!2", C: "~ x ~ x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@16 A ~@3 A ~@3 B ~@3 C ~@12>".pickRestart({
  A: "~@4 x!4 ~@8", B: "~@12 x!4", C: "~@5 x ~@2",
})).gain(0.3)

stack(
  piccolo, clarinet, alto_sax, tenor_sax, trumpet, french_horn, trombone, french_horn_2, bass, kick, snare, low_tom,
  mid_tom, crash, high_tom
)