Strudelify

the birdwatcher

Vulfpeck

KeyB♭ majorTempo128 bpm
0:00/0:00
// the birdwatcher — Vulfpeck
// 128 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "T. basso" named as a bass, played on electric bass finger (its trombone patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5850737; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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.

// chords · trumpet · "Trumpet 1-2-3-4"
const trumpet = note(`<
  A B@2 C@2 D@2 E A B@2 F@2 D@2 G@2 H I H J H I K L M B@2 C@2 D@2 E A B@2 F@2 D@2 G@2 H I H J H I K L N ~@16 O@6 ~@2 O@6
  P@2 Q
>`.pickRestart({
  A: "~@7 bb4", B: "[d5 [d5,eb5]!3 bb4@2 ~@2 bb4@2 ~@4 g4@4 c5 ~ c5@2 ~@2 c5@2 bb4 ~@3 bb4@2, ~@4 eb5 ~@27]/2",
  C: "[d5 [d5,eb5]!3 bb4@2 ~@2 bb4@2 ~@4 g5@4 g5 ~ f5 ~ g5 ~ f5@2 ~@4 bb4@2, ~@4 eb5 ~@27]/2", // Ebmaj7
  D: "[d5 [d5,eb5]!3 bb4@2 ~@2 bb4@2 ~@4 g4@4 c5 ~ c5@2 ~@2 c5@2 bb4 ~@5, ~@4 eb5 ~@27]/2", E: "ab5 ~ ab5 ~@2 ab5 ~ g5",
  F: "[d5 [d5,eb5]!3 bb4@2 ~@2 bb4@2 ~@4 g5@4 g5 ~ f5 ~@2 g5 f5@2 ~@4 bb4@2, ~@4 eb5 ~@27]/2", // Ebmaj7
  G: "[ab5@2 ~@2 ab5@2 ~@2 g5 ~ g5 ~@3 [bb3,e4,bb4]@6 [bb3,e4,bb4]@2 ~@2 [bb3,e4,bb4]@2 ~@2 [bb3,e4,bb4]@2 ~@2]/2", // Bbdim
  H: "[bb3,eb4,bb4] ~ [bb3,eb4,bb4] ~ [bb3,eb4,bb4] ~ [bb3,eb4,bb4] ~", // Eb5
  I: "[bb3,d4,bb4] ~ [bb3,d4,bb4] ~ [bb3,d4,bb4] ~ [bb3,d4,bb4] ~", // Bb
  J: "[bb3,f4,bb4] ~ [bb3,f4,bb4] ~ [bb3,f4,bb4] ~ [bb3,f4,bb4] ~", // Bb5
  K: "[bb3,db4,bb4] ~ [bb3,db4,bb4] ~ [bb3,db4,bb4] ~ [bb3,db4,bb4] ~", // Bbm
  L: "[c4,f4,c5] ~ [c4,eb4,c5] ~ [c4,eb4,c5] ~ [c4,eb4,c5] ~ [c4,eb4,c5] ~ [c4,eb4,c5] ~ [c4,eb4,c5] ~ [c4,eb4,c5] ~", // F5 Cm
  M: "[c4,f4,c5] ~@13 bb4@2", N: "[c4,f4,c5] ~@15", O: "~@2 [f5,bb5] ~ [f5,bb5]@2 ~@2 [f5,bb5] ~ [f5,bb5] ~@5",
  P: "[~@7 [f5,bb5]@3 ~@6]/2", Q: "~ [f5,bb5]@3 [f5,bb5]@3 [f5,bb5]",
})).s("gm_trumpet").gain(0.3)

// chords · trombone · "Trombone 1-3"
const trombone = note(`<
  ~ A@2 B@2 C@2 D E A@2 B@2 C@2 F@8 G@2 H A@2 B@2 C@2 I E A@2 B@2 C@2 J K@7 G@2 H L M N O P Q R S T U V W X Y Z AA A@2
  B@2 C@2 AB E A@2 B@2 C@2 AC AD AE
>`.pickRestart({
  A: "[~@4 [db3,f4]@2 ~@4 [c3,ab4] ~@3 [bb2,g4]@4 [bb2,g4] ~@13]/2", // Db Fm Eb
  B: "[~@4 [db3,f4]@2 ~@4 [c3,ab4] ~@3 [bb2,g4]@4 [bb2,g4] ~@9 [db3,bb4]@2 ~@2]/2", // Db Fm Eb Gb
  C: "[~@4 [bb2,f4]@2 ~@4 [ab2,f4] ~@3 [bb2,g4]@4 [bb2,g4] ~@13]/2", // Bb5 Db Eb
  D: "[ab3,db4]@2 ~@2 [ab3,db4]@2 ~@4 [ab3,db4] ~@3 [f3,c4] ~", E: "~@4 eb4 ~ ab4 ~ eb4 ~ bb3 ~ f4@2 ~@2",
  F: "[[ab3,db4]@2 ~@2 [ab3,db4]@2 ~@2 [f3,db4] ~ [f3,db4] ~@3 [e3,bb3]@16 [eb3,bb3]@16 [d3,bb3]@16 [eb3,bb3]@16 [f3,f4]@16 [eb3,eb4]@16 [d3,d4]@16 [db3,db4]@2]/8", // Db5 Db Edim Eb5 Gm Eb5 F Eb …
  G: "[~@7 [eb3,c4]@9]/2", H: "~@2 f4 ~ eb4 ~@3 eb4 ~ eb4 ~@3 db4 ~",
  I: "[ab2,db4]@2 ~@2 [ab2,db4]@2 ~@4 [ab2,db4] ~@3 [g2,c4] ~", // Db5 C5
  J: "[ab2,db4]@2 ~@2 [ab2,db4]@2 ~@2 [f3,db4] ~ [f3,db4] ~@3 [e3,bb3]@2", // Db5 Db Edim
  K: "[e3@7 [eb3,bb3]@8 [d3,bb3]@8 [eb3,bb3]@8 [f3,f4]@8 [eb3,eb4]@8 [d3,d4]@8 [db3,db4]]/7", // Eb5 Gm Eb5 F Eb D Db
  L: "[bb1,f2] [b1,gb2] [c2,g2] [db2,ab2]", M: "[d2,a2] [eb2,bb2] [e2,b2] [f2,c3]", N: "[gb2,db3] [g2,d3]@3",
  O: "[ab2,eb3] [a2,e3]@3", P: "[bb2,f3] gb3 g3@2, ~ b2@3", Q: "[c3,ab3] [db3,a3]@3", R: "[d3,bb3]",
  S: "[eb3,b3] [e3,c4]@3", T: "[f3,db4] [gb3,d4]@3", U: "[g3,eb4]", V: "[ab3,e4]", W: "[a3,f4] [bb3,gb4]@3",
  X: "[b3,g4]", Y: "[c4,ab4]", Z: "[db4,a4]",
  AA: "[d4,bb4] [eb4,b4] c5 [e4,db5] [f4,d5] [e4,db5] c5 [eb4,b4] [d4,bb4]@8", // Gm Abm Dbm Dm Dbm Abm Gm
  AB: "[bb3,ab4]@2 ~@2 [bb3,ab4]@2 ~@4 [bb3,ab4] ~@3 [g3,g4] ~", // Bb7 G
  AC: "[bb3,ab4]@2 ~@2 [bb3,ab4]@2 ~@2 [a3,f4] ~ [a3,f4] ~@5", AD: "[bb3,bb4] ~ [c3,bb4] ~ [c3,bb3,bb4] ~ [bb3,bb4] ~",
  AE: "[bb3,bb4]@2 ~@2 [bb3,bb4]@2 ~@2 [bb3,bb4] ~ [bb3,bb4] ~@3 [bb3,bb4]@2", // Bb
})).s("gm_trombone").gain(0.3)

// bass · electric bass finger · "T. basso"
const bass = note(`<
  A B C D E F G H ~ I J@3 K@2 L M N O P Q N R S T U V W X Y Z@2 H AA AB AC@3 AD AE AF M N O P Q N R S T AG ~@16 AH AI@5
  AJ AK AL AM AN AO AP@2 AQ AR AS
>`.pickRestart({
  A: "~@14 a1 ~", B: "bb1 ~ bb1 ~@3 f2 g2 bb2 g2 bb2 ~@5", C: "~ bb2 eb2@2 ~@2 g2@2 ~@2 ab2@2 ~ ab2 g2 c3",
  D: "bb2@2 ~@2 bb2 g2 f2 bb1@3 f2@2 e2@2 eb2@2",
  E: "[eb2,e2,f2,gb2] [g2,ab2,a2,bb2,b2,c3,db3] [d3,eb3,e3] ~ e3@2 eb3@2 ~@2 eb4!2 db4 eb4 ~ bb3, ~ f3 ~@6",
  F: "d4@2 bb3 ~@3 bb2@2 ~@2 f2@2 gb2@2 g2@2", G: "~ d2!3 bb1@2 a1@2 ~@2 bb2 a2 g2@4", H: "gb2 ~ gb2 ~@2 gb2 ~ f2",
  I: "bb1@2 bb1@2 ~ bb1 ~@2 bb2 g2 f2 bb2 ~@2 bb2 g2",
  J: "[eb2 ~ eb2 ~ eb3!2 g2@2 ~@2 ab2@2 ~ c3 bb2@6 ~ g2 f2 bb1@2 ~ f2@2 e2@2 eb2@4 f3@2 e3@2 eb3@2 ~ eb3 eb2@2 ~ a1 ~@2]/3",
  K: "[bb1@2 bb1@2 ~@2 f2 bb2 f2 bb2 f2@2 gb2@2 g2@10 a3 ab3 g3 d3 bb2 a2 g2 ~]/2",
  L: "gb2@2 ~@2 gb2@2 ~@2 f2 ~ f2 ~@3 e2 ~", M: "~@10 e2 ~@3 eb2 ~", N: "~@10 f2 ~ eb2 ~ d2 ~",
  O: "~@10 d2 ~ f2 ~ eb2 ~", P: "~@4 eb2 ~ f2 ~ gb2 ~ ab2 ~ gb2 ~ f2 ~", Q: "~@10 gb2 ~ f2 ~ eb2 ~",
  R: "~@6 f2 ~@3 eb2 ~ d2 ~ db2 ~", S: "~@6 f2 ~@3 eb2 ~ db2 ~ c2 ~", T: "~@2 c2 ~ d2 ~ d2 ~ eb2 ~ eb2 ~ e2 ~ e2 ~",
  U: "f2@2 ~@12 a1 bb1", V: "a1 bb1 ~@4 f2 g2 bb2 g2 f2 bb2 ~@4", W: "~ eb3 eb2 ~@2 a2 g2 ~ ab2!3 ~ ab2!3 c3",
  X: "bb2@4 bb2 g2 f2 bb1@2 ~ f2@2 e2@2 eb2@2", Y: "eb2 bb1!2 c2 eb2 ~@2 eb2 bb1 c2 eb2@2 ~ a1 ~@2",
  Z: "[bb1@2 bb1@2 ~ bb2 g2 f2 c3@2 bb2@2 gb2@2 g2@10 bb2 a2 g2@2 ~@2 a2 g2]/2", AA: "~@14 a1 bb1",
  AB: "a1 bb1 ~@6 c3 bb2 g2!2 bb2@2 ~@2",
  AC: "[~ eb3 g2@2 ~ g2 ab2@2 ~ ab2 a2@2 ~ c3!2 bb2@3 ~@2 bb2 g2 f2 bb1@3 f2@2 e2@2 eb2@4 f3@2 e3@2 eb3@2 ~ bb2 eb3 bb2 eb3 bb2 f2 db2]/3",
  AD: "d2 f2 bb2@3 f2 gb2 g2", AE: "g2@2 bb1@2 bb1@2 [d2,eb2] [e2,f2] g2@2 ~@2 g2@4, ~@8 gb2 ~@7",
  AF: "gb2 ~ gb2 ~ f2!2 ~ e2", AG: "f2 ~@7", AH: "~@2 bb1 ~ bb1 ~@2 eb2",
  AI: "[bb2 g2 ~@4 ab2@2 ~@2 a2@2 ~ c3 bb2@6 bb2 g2 f2 bb1@2 ~ f2@2 e2@2 eb2@4 bb3 ab3 bb3 ab3 bb3 ab3 bb3 ab3 bb3 ab3 eb4 ~ db4 db4@3 bb2!2 ~@2 bb3!2 ~@2 f3 ~ gb3 ~ g3@9 d3 g3 d3 g3@6, ~@47 eb4 ~@32]/5",
  AJ: "gb3@2 ~@2 gb3@2 ~@4 gb3 ~@3 f3 ~", AK: "~@2 f2 c2 a1 ~@2 c2 f2 c2 f2 ~ a1 ~ a1@2",
  AL: "bb1 ~@2 bb1!3 bb1@2 ~ f2 g2 bb2 g2@2 bb2@2", AM: "eb2 g2@2 ab2@2 a2@2 c3",
  AN: "~ bb2@3 c3@3 bb2 f2 d2 bb1@2 f2@2 eb2@2",
  AO: "[eb2,e2] [f2,gb2,g2,ab2] [a2,bb2,b2,c3] [db3,d3,eb3,e3] [f3,gb3] ~@3 eb4 db4 eb4 f4 db4@2 bb3@2, ~ g3 ~@2", // Emaj7 Gbmaj7
  AP: "[bb2 ~ bb2 ~ bb3!2 bb2 ~ bb2 ~ f2!2 gb2 ~ g2@4 f3 gb3 g3 ~ f2 gb2 g2 ~ f3 gb3 g3@2 ~@2]/2",
  AQ: "gb2 ~ gb2 ~ f2 a1 bb1 b1", AR: "c2!2 d2!2 eb2!2 e2!2", AS: "f2!2 g2!2 ab2!2 a2 bb2",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · tuba
const bass_2 = note(`<
  ~ A@2 B@2 C@2 D E A@2 F@2 G@2 H I J K L M J N O P Q A@2 R@2 S@2 D T A@2 U@2 G@2 H I J K L M J N O P Q V W V X V W Y ~
  V W V Z V W Y ~ AA@2 AB@2 AC@2 AD AE AF@2 AG@2 AH@2 AI P AJ
>`.pickRestart({
  A: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@6 eb2 ~ eb3 ~ eb2@2 ~@2 f2@2 ~@2]/2",
  B: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@6 eb2@2 ~@2 g2 ~ bb2 ~ c3@4]/2",
  C: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ g2@6 g2 ~ g2!2 bb1 ~ d2 ~ g2 ~ d2 ~]/2",
  D: "gb2@2 ~@2 gb2@2 ~@4 gb2 ~@3 f2 ~", E: "~@6 bb2 ~ f2 ~ g2 ~ bb2 ~ g2 ~",
  F: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@6 eb2 ~ eb3 ~ eb3 ~ db3 ~ eb3 ~ db3 [db3,eb3]]/2", // Dbsus2
  G: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ g2@6 g2 ~ g2!2 bb1 ~ d2 ~ f2 ~ g2 ~]/2",
  H: "gb2@2 ~@2 gb2@2 ~@2 f2 ~ f2 ~@3 e2@2", I: "~@10 e2 ~@3 eb2@2", J: "~@10 f2 ~ eb2 ~ d2@2",
  K: "~@10 d2 ~ f2 ~ eb2@2", L: "~@4 eb2 ~ f2 ~ gb2 ~ ab2 ~ gb2 ~ f2@2", M: "~@10 gb2 ~ f2 ~ eb2@2",
  N: "~@6 f2@2 ~@2 eb2 ~ d2 ~ db2@2", O: "~@6 f2@2 ~@2 eb2 ~ db2 ~ c2 ~", P: "~@2 d2 ~ eb2 ~ e2 ~", Q: "f2 ~@7",
  R: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@6 eb2@2 ~@2 g2 ~ bb2 ~ c3@2 g2@2]/2",
  S: "[bb2@2 ~@2 bb1 ~ db2@2 d2 ~ f2 ~ bb2 ~ g2@6 g2 ~ g2!2 bb1 ~ d2 ~ f2 ~ g2 ~]/2",
  T: "~@2 c3 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 c3 ~",
  U: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@4 e3 ~ e3 ~ eb2 ~ db3@2 ~@2 bb2@2 ~@2]/2",
  V: "bb1 ~ c2 ~ db2 ~ d2@2 ~@8", W: "~@8 eb2 ~ e2 ~ f2@2 ~@2", X: "~@2 eb2 ~ e2 ~ f2@2 ~@8",
  Y: "bb1 ~ c2 ~ db2 ~ d2@2 ~@2 eb2 ~ e2 ~ f2@2", Z: "~@2 eb2 ~ e2 ~ f2@2 ~@4 f1!2 ~@2",
  AA: "[~@4 bb1 ~ db2 ~ d2 ~ f2 ~ bb2 ~ eb2@6 eb2 ~ bb1 ~ eb2@2 ~@2 f2@2 ~@2]/2",
  AB: "[bb1@2 ~@2 bb1 ~ db2 ~ d2 ~ f2 ~ bb2 ~ eb2@6 eb2 ~ eb2 ~ g2@2 bb2 ~ c3@2 ~@2]/2",
  AC: "[bb1@2 ~@2 bb1 ~ db2 ~ d2 ~ f2 ~ bb2 ~ g2@6 ~@2 d2 ~ bb1 ~ d2 ~ f2 ~ g2 ~]/2", AD: "gb2 ~ gb2 ~@2 gb2 ~ f2",
  AE: "~@2 f2 ~ ab1 ~ bb1 ~ d2@2 f2 ~ g2@2 bb2 ~",
  AF: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@6 eb2@2 ~@2 eb3@2 db3!2 eb3@2 db3!2]/2",
  AG: "[bb1@2 ~@2 bb2 ~ db2@2 d2 ~ f2 ~ bb2 ~ eb2@6 eb3!2 ~@2 db3!2 ~@2 bb2!2 ~@2]/2",
  AH: "[bb1@2 ~@2 bb1 ~ db2 ~ d2 ~ f2 ~ bb2 ~ g2@6 g2 ~ g2 ~ bb1 ~ d2 ~ f2 ~ g2 ~]/2",
  AI: "gb2@2 ~@2 gb2@2 ~@2 f2 ~ f2 ~@3 c2@2", AJ: "f2 ~ g2 ~ ab2 ~ ab2 bb2",
})).s("gm_tuba").gain(0.3)

stack(trumpet, trombone, bass, bass_2)

More by Vulfpeck