Strudelify

Brainiac Maniac

Laura Shigihara

KeyA majorTempo120 bpm
0:00/0:00
// Brainiac Maniac — Laura Shigihara
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 11 "Trumpet 3" named as a brass, played on trumpet (its electric bass finger patch is not one); ch 13 "Trumpet 4" named as a brass, played on trumpet (its tremolo strings patch is not one); ch 15 "Trombone 1" named as a brass, played on trombone (its slap bass 2 patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5849112; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · trombone · "Alto Sax 1"
const trombone = note(`<
  ~@4 A B C D E B C F ~@4 G H I J G H I K ~@3 L M N M O P Q R S P Q T U V@2 W X Y Z Y AA AB AC ~@4 A B C D E B C F ~@4 G
  H I J G H I K ~@3 L M N M O P Q R S P Q T U V@2 W X Y Z Y AA AB AC AD
>`.pickRestart({
  A: "a2 ~ a2 ~ g2 ~@2 a2 ~ a2 ~ a2 g2 ~@3", B: "c3 ~ c3 ~ c3 ~@2 c3 ~ c3 ~ c3!2 ~@3",
  C: "d3 ~ d3 ~ d3 ~@2 d3 ~ d3 ~ d3!2 ~@3", D: "f3 ~ f3 ~ f3 ~@2 g3 ~ g3 ~ g3!2 ~ [f3,f#3,g3] [c3,c#3,d3,d#3,e3]",
  E: "[a2,a#2,b2] ~ a2 ~ g2 ~@2 a2 ~ a2 ~ a2 g2 ~@3", F: "f3 ~ f3 ~ f3 ~@2 g3 ~ g3 ~ g3!2 ~@3",
  G: "a2 ~ a2 ~ g2 ~@2 a2 ~ [a2,d5] c5 [a2,d5] [g2,b4] c5 b4 g4, e5 ~", // D5 G
  H: "e4@2 [a2,a4] ~ [g2,a4] g4 ~ a2 ~ a2 ~ a2 g2 ~ b4 c5, a2 ~@6 a4@5 ~@4", // A Gsus2
  I: "c5@2 c3 ~ c3 ~@2 d3 ~ d3 c5 d3!2 a4 g4@2, c3 ~@2 d5@3 e5@2 b4@2 ~ b4@2 ~@3",
  J: "d3 ~ d3 ~ d3 ~@2 d3 ~ d3 ~ d3!2 ~@3, a4", K: "d5 ~", L: "~@14 a4 g4",
  M: "a4 g4@2 a4@2 g4 a4 g4 b4 a4@2 b4@2 c5 d5 b4", N: "c5@2 ~ b4@2 ~ a4@2 ~ g4@2 ~ e4@2 g4@2", O: "c5 ~@7",
  P: "e5@5 e5 d5 c5", Q: "b4@2 c5 b4@2 g4@2 e4 g4@4 ~@2 a4 b4", R: "c5@3 b4@3 a4@2 g4@4 d4@4", S: "e4", T: "c5 d5",
  U: "e5@3 d5", V: "e5/2", W: "c3 d3", X: "e3@3 d3", Y: "~ a4 e5 a4 d5 a4 e5 a4 ~ a4 e5 a4 d5 a4 g5 f5, c3 d3",
  Z: "e5 c5 b4 [d3,g4], e3@3 ~", AA: "e5@2 ~ d5@2 ~ c5@2 ~ b4@2 ~ a4@2 g4@2, e3@3 d3",
  AB: "~ a4 e5 a4 d5 a4 e5 a4 ~ a4 e5 a4 d5 a4 e5 a4, c3 d3", AC: "c5 b4@2 c5@2 d5 e5 d5 c5 b4@2 c5@2 b4 a4 g4, e3",
  AD: "[a2,a4]@3 ~@13", // A
})).s("gm_trombone").gain(0.4)

// chords · trombone · "Alto Sax 1" · soft notes
const trombone_soft = note("<~@24 A B C D E F E G ~@42 A B C D E F E G ~@19>".pickRestart({
  A: "a4 g4@2 a4@2 g4 a4 g4 b4 a4@2 b4@2 c5 d5 b4, c3 d3", B: "c5@2 ~ b4@2 ~ a4@2 ~ g4@2 ~ e4@2 g4@2, e3@3 d3",
  C: "a4 g4@2 a4@2 g4 a4 g4 b4 a4@2 b4@2 a4 b4 a4, c3 d3",
  D: "c5 b4@2 c5@2 d5 e5 d5 c5 b4@2 ~@2 b4 ~@2, e3@11 c5@2 ~@3, ~@3 d3", E: "c3 d3", F: "e3@3 d3", G: "e3 ~@7",
})).s("gm_trombone").gain(0.15)

// other · tenor sax · "Tenor Sax 1"
const tenor_sax = note(`<
  ~@4 A B C D A B C D ~@4 E F G H E F G I J K J K J K J L ~@3 M ~@6 J K J K J K J N ~@4 A B C D A B C D ~@4 E F G H E F
  G I J K J K J K J L ~@3 M ~@6 J K J K J K J N O
>`.pickRestart({
  A: "c3", B: "e3", C: "f3", D: "a3 b3", E: "c4@8 ~ b3 c4 b3 f4 g4 f4 d4", F: "a3@2 c4 ~ c4 d4 ~ c4@5 ~@2 e4 d4",
  G: "e4@3 g4@3 e4@2 d4@2 c4 d4@2 a3 e4@2", H: "d4", I: "g4 ~", J: "c4 d4", K: "e4@4 e4 b3 d4 e4", L: "e4 ~@7",
  M: "~@6 c3 d3@2 c3 d3@2 e3@2 g3@2", N: "e4", O: "a3@3 ~@13",
})).s("gm_tenor_sax").gain(0.3)

// other · tenor sax · "Tenor Sax 2"
const tenor_sax_2 = note(`<
  ~@4 A B C D A B C D ~@4 E F G H E F G I J K J K J K J L ~@10 J K J K J K J A ~@4 A B C D A B C D ~@4 E F G H E F G I J
  K J K J K J L ~@10 J K J K J K J A M
>`.pickRestart({
  A: "a3", B: "c4", C: "d4", D: "f4 g4", E: "a3@8 ~ d4 c4 d4 b3 c4 b3 g3", F: "e3@2 a3 ~ a3 g3 ~ a3@5 ~@2 b3 c4",
  G: "c4@3 d4@3 e4@2 b3@2 c4 b3@2 a3 g3@2", H: "g3@3 f#3@5", I: "a3 ~", J: "f3 g3", K: "a3@4 c4 b3 g3 a3", L: "a3 ~@7",
  M: "a3@3 ~@13",
})).s("gm_tenor_sax").gain(0.3)

// other · trumpet · "Trumpet 1"
const trumpet = note(`<
  ~@3 A B C ~@3 D E F C ~@3 G@2 H I J@2 K ~@19 L M L N L M O P ~@3 A B C ~@3 D E F C ~@3 G@2 H I J@2 K ~@19 L M L N L M
  O P Q
>`.pickRestart({
  A: "~@9 e4 g4 a4 c5 b4 a4 g4", B: "a4@2 ~@7 e4 g4 a4 c5 b4 a4 g4", C: "a4 ~@7", D: "~@9 e4 ~ g4 ~ a4 ~ c5",
  E: "c5@2 d5 ~ d5@2 c5 e5 ~ d5 ~ c5 ~ d5 ~ c5", F: "e5@2 c5@2 a4@2 c5 e5 ~ e5 c5@2 a4 g4@3",
  G: "~@2 e5 ~ e5 ~@2 e5 ~@8", H: "~@6 f5 ~ g5 ~@7", I: "~@2 g5 ~ g5 ~@2 f#5 ~ f#5 ~ f#5 ~@4",
  J: "~@2 a5 ~ a5 ~@2 a5 ~@8", K: "~@6 a5 ~ b5 ~@7", L: "~ a4 e5 a4 d5 a4 e5 a4 ~ a4 e5 a4 d5 a4 g5 f5",
  M: "e5@2 ~ d5@2 ~ c5@2 ~ b4@2 ~ a4@2 g4@2", N: "e5 c5 b4 g4", O: "~ a4 e5 a4 d5 a4 e5 a4 ~ a4 e5 a4 d5 a4 e5 a4",
  P: "c5 b4@2 c5@2 d5 e5 d5 c5 b4@2 c5@2 b4 a4 g4", Q: "a4@3 ~@13",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
  ~@3 A B C ~@3 D E F C ~@3 G@2 H I J@2 K ~@22 L M N O P ~@3 A B C ~@3 D E F C ~@3 G@2 H I J@2 K ~@22 L M N O P Q
>`.pickRestart({
  A: "~@9 e4 g4 a4 c5 b4 a4 g4", B: "a4@2 ~@7 e4 g4 a4 c5 b4 a4 g4", C: "a4 ~@7", D: "~@9 e4 ~ g4 ~ a4 ~ c5",
  E: "c5@2 d5 ~ d5@2 c5 e5 ~ d5 ~ c5 ~ d5 ~ c5", F: "e5@2 c5@2 a4@2 c5 e5 ~ e5 c5@2 a4 g4@3",
  G: "~@2 a4 ~ a4 ~@2 a4 ~@8", H: "~@6 c5 ~ d5 ~@7", I: "~@2 a4 ~ a4 ~@2 a4 ~ a4 ~ a4 ~@4", J: "~@2 e5 ~ e5 ~@2 e5 ~@8",
  K: "~@6 f5 ~ g5 ~@7", L: "e5 c5 b4 g4", M: "~ a4 e5 a4 d5 a4 e5 a4 ~ a4 e5 a4 d5 a4 g5 f5",
  N: "e5@2 ~ d5@2 ~ c5@2 ~ b4@2 ~ a4@2 g4@2", O: "~ a4 e5 a4 d5 a4 e5 a4 ~ a4 e5 a4 d5 a4 e5 a4",
  P: "c5 b4@2 c5@2 d5 e5 d5 c5 b4@2 c5@2 b4 a4 g4", Q: "a4@3 ~@13",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trumpet 3"
const trumpet_3 = note(`<
  ~@4 A B C D E F G H A ~@2 I J K L@2 M N O@2 ~@3 P Q R Q S T U V W T U X Y Z AA H AB H AC AD AE AD AF ~@4 A B C D E F G
  H A ~@2 I J K L@2 M N O@2 ~@3 P Q R Q S T U V W T U X Y Z AA H AB H AC AD AE AD AF AG
>`.pickRestart({
  A: "a1", B: "~@9 e4 ~ g4 ~ a4 ~ c5, c2", C: "c5@2 d5 ~ d5@2 c5 d5 ~ d5 ~ c5 ~ d5 ~ c5, d2",
  D: "e5@2 c5@2 a4@2 c5 e5 ~ e5 c5@2 a4 g4@3, f2 g2", E: "a4@2 ~@7 e4 g4 a4 c5 b4 a4 g4, a1", F: "c2, a4 ~@7", G: "d2",
  H: "f2 g2", I: "~@14 [d#2,e2] [b1,c2,c#2,d2]", J: "a#1 ~ c5 ~ e2@2 g2 a2@2 g2@2 e2@2 c2@2 b1, a1@4 c5 ~@2 c5 ~@8",
  K: "~ a1 c5 a1 [a1,c5] e2 b2 a2@5 g2 e2 c2 g1, ~@7 c5 ~@8", // Am
  L: "[f1@2 f1@2 c2 ~ a4 a1 g1@2 b2@2 g2@2 d2@4 [g2,d5] ~ d5 g2@2 d2@2 [f#2,d5] a2 [d3,d5] a2 ~ [c#2,d2] [b1,c2], ~@5 b1@2 ~ b4 ~@10 a2@2 ~@2 d5 ~@8]/2", // G5 D Dmaj7 Cmaj7
  M: "a#1 ~ a4 ~ e2@2 g2 a2@2 g2@2 e2@2 c2@2 b1, a1@4 a4 ~@2 a4 ~@8",
  N: "~ a1 a4 a1 [a1,a4] e2 b2 a2@5 g2 e2 c2 g1, ~@7 a4 ~@8", // A
  O: "[f1@2 f1@2 c2 ~ c5 a1 g1@2 b2@2 g2@2 d2@4 g2 a2@2 g2@2 d2@9, ~@5 b1@2 ~ d5 ~@23]/2",
  P: "~@9 d2 e1 f1 g1 a1 b1 c2", Q: "f1 g1", R: "a1@3 g1", S: "a1 ~@7", T: "f2@5 f2@3", U: "e2@4 e2 b1 e1@2",
  V: "d2 g1", W: "c2@6 c2 d2@2 c2 d2@2 e2@2 g2@2", X: "d2 e1", Y: "f1@3 c2@3 f2@2 g2@2 f2@2 c2@4",
  Z: "e1@4 b1@4 a1@3 b1@3 a1@2", AA: "e1@3 b1@3 d2@2 e2@8", AB: "a2@3 g2", AC: "a2@8 a2 d2 e1 f1 g1 a1 b1 c2",
  AD: "[f1,c4] [g1,d4]", AE: "e4@4 e4 b3 d4 e4, a1@3 g1", AF: "[a1,e4]", AG: "[a1,a4]@3 ~@13",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trumpet 4"
const trumpet_4 = note("<~@5 A B C D E ~@10 F@2 G ~@23 H I H J ~@5 A B C D E ~@10 F@2 G ~@23 H I H J K>".pickRestart({
  A: "~@9 e4 ~ g4 ~ a4 ~ c5", B: "c5@2 d5 ~ d5@2 c5 d5 ~ d5 ~ c5 ~ d5 ~ c5",
  C: "e5@2 c5@2 a4@2 c5 e5 ~ e5 c5@2 a4 g4@3", D: "a4@2 ~@7 e4 g4 a4 c5 b4 a4 g4", E: "a4 ~@7",
  F: "~@2 c5 ~ c5 ~@2 c5 ~@8", G: "~@6 a4 ~ b4 ~@7", H: "f3 g3", I: "a3@4 c4 b3 g3 a3", J: "a3", K: "a4@3 ~@13",
})).s("gm_trumpet").gain(0.3)

// other · trombone · "Trombone 1"
const trombone_2 = note("<~@42 A B A B A B A B ~@42 A B A B A B A B C>".pickRestart({
  A: "f3 g3", B: "a3@3 g3", C: "a3@3 ~@13",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Trombone 1" · soft notes
const trombone_soft_2 = note("<~@24 A B A B A B A C ~@42 A B A B A B A C ~@19>".pickRestart({
  A: "f3 g3", B: "a3@3 g3", C: "a3 ~@7",
})).s("gm_trombone").gain(0.2)

// other · trombone · "Trombone 2"
const trombone_3 = note(`<
  ~@24 A B C D A B A E ~@10 F G F H F G I D ~@24 A B C D A B A E ~@10 F G F H F G I D J
>`.pickRestart({
  A: "a3 g3@2 a3@2 g3 a3 g3 b3 a3@2 b3@2 c4 d4 b3", B: "c4@2 ~ b3@2 ~ a3@2 ~ g3@2 ~ e3@2 g3@2",
  C: "a3 g3@2 a3@2 g3 a3 g3 b3 a3@2 b3@2 a3 b3 a3", D: "c4 b3@2 c4@2 d4 e4 d4 c4 b3@2 c4@2 b3 a3 g3", E: "c4 ~@7",
  F: "~ a3 e4 a3 d4 a3 e4 a3 ~ a3 e4 a3 d4 a3 g4 f4", G: "e4@2 ~ d4@2 ~ c4@2 ~ b3@2 ~ a3@2 g3@2", H: "e4 c4 b3 g3",
  I: "~ a3 e4 a3 d4 a3 e4 a3 ~ a3 e4 a3 d4 a3 e4 a3", J: "a3@3 ~@13",
})).s("gm_trombone").gain(0.3)

// other · epiano1 · "Piano"
const epiano1 = note(`<
  A B A B C D E F C D E F A B A G B@2 H I B@2 H I ~@4 J K J L M N O P M N Q R S@2 ~@4 T U T V A B A B C D E F C D E F A
  B A G B@2 H I B@2 H I ~@4 J K J L M N O P M N Q R S@2 ~@4 T U T V ~
>`.pickRestart({
  A: "a4 a5 d5 e5 g5 d5 e5 a5 ~ a5 d5 e5 g5 d5 e5@2", B: "a4 a5 d5 e5 g5 d5 e5 a5 ~ a5 d5 e5 g5 d5 e5 a5",
  C: "a4 a5 d5 e5 g5 d5 e5 a5 ~ a5 d5 e5 g5 d5 e5@2, [a1,a2]@15 ~", // A
  D: "a4 a5 d5 e5 g5 d5 e5 a5 ~ a5 d5 e5 g5 d5 e5 a5, [c2,c3]@15 ~", // C
  E: "a4 a5 d5 e5 g5 d5 e5 a5 ~ a5 d5 e5 g5 d5 e5@2, [d2,d3]@15 ~", // D
  F: "a4 a5 d5 e5 g5 d5 e5 a5 ~ a5 d5 e5 g5 d5 e5 a5, [f2,f3] [g2,g3]", G: "a4 a5 d5 e5 g5 d5 e5 [a4,a5] ~@8",
  H: "f5 a4 c5 f5 f4 a4 f4 c5 b4 g4 d5 g4 d4 g4 b4 g4", I: "d4 g4 a4 d5 d4 g4 a4 d5 d4 f#4 a4 d5 f#5 d5 a4 f#4",
  J: "a5 f5 c5 a4 f4 f5 c5 a4 g5 d5 b4 g4 d4 b4 g4 b4", K: "e5 c5 a4 e4 c4 e4 a4 e5@2 a4 e4 c5 b4 g4 b4 d5",
  L: "e5 c5 a4@3 a4@3 a4@3 a4@3 a4@2", M: "[f4,a4,c5,e5]@9 ~ e5@2 d5@2 c5@2, ~@5 [f4,a4]@3",
  N: "b4@2 c5 b4@2 g4@2 e4 [e4,g4]@4 ~@2 a4 b4, [e4,g4]@3 ~@5", O: "c5@3 b4@3 a4@2 [b3,d4,g4]@4 d4@4, [d4,f4] ~",
  P: "[g3,c4,e4]@15 ~", Q: "[f4,a4,c5] [g4,b4,d5]", R: "e5@11 ~ d5@4, [a4,c5]@15 ~",
  S: "[[a4,b4]@15 ~ [g#4,b4]@15 ~, e5@15 ~]/2", T: "a5 f5 c5 a4 f4 f5 c5 a4 g5 d5 b4 g4 d4 b4 g4 b4, [f1,f2] [g1,g2]",
  U: "e5 c5 a4 e4 c4 e4 a4 e5@2 a4 e4 c5 b4 g4 b4 d5, [a1,a2]@11 ~ [g1,g2]@4", // A G
  V: "e5 c5 a4@3 a4@3 a4@3 a4@3 a4@2, [a1,a2]@15 ~", // A
})).s("gm_epiano1").gain(0.64)

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

// drums · rim
const rim = s("rim").struct("<~@4 A@11 B A@7 ~ A@7 ~ C@9 D A@7 ~@5 A@11 B A@7 ~ A@7 ~ C@9 D A@7 ~ E>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~ x", D: "~@2 x!2", E: "x",
})).gain(0.3)

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

// drums · congas
const congas = s("conga:13").struct(`<
  ~ A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@3 B ~ B ~ B ~@13 B ~ B ~ B ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@3 B ~
  B ~ B ~@13 B ~ B ~ B ~@2 C
>`.pickRestart({
  A: "~@7 x", B: "~@2 x ~@4 x", C: "x",
})).gain(0.95)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  A@3 B A@11 B A@2 C A@3 C B D E D E D E D ~@11 D E D E D E D ~ A@3 B A@11 B A@2 C A@3 C B D E D E D E D ~@11 D E D E D
  E D ~@2
>`.pickRestart({
  A: "x ~ x ~@4 x ~ x ~ x ~@4", B: "x!2 ~@6", C: "~@8 x ~@2 x ~@2 x!2", D: "~@7 x ~ x!2 ~@3 x ~", E: "~@3 x",
})).gain(0.95)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  A@3 B A@11 B A@2 C A@3 C D E F E F E F E G ~@10 E F E F E F E G A@3 B A@11 B A@2 C A@3 C D E F E F E F E G ~@10 E F E
  F E F E G ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@8", C: "x ~@2 x ~@2 x!2 ~@8", D: "~ x ~@2", E: "x ~ x ~@2 x ~@10",
  F: "x ~ x ~@3 x!2 ~ x!2 ~@5", G: "x",
})).gain(0.95)

stack(
  trombone, trombone_soft, tenor_sax, tenor_sax_2, trumpet, trumpet_2, trumpet_3, trumpet_4, trombone_2,
  trombone_soft_2, trombone_3, epiano1, kick, rim, hihat, congas, congas_2, congas_3
)