Strudelify

Ending Ai no Kusabi 1992

canalyaoibrasil (twitter)

KeyE♭ majorTempo75 bpm
0:00/0:00
// Ending Ai no Kusabi 1992 — canalyaoibrasil (twitter)
// 75 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piano" named as a piano, played on piano (its synth brass 2 patch is not one); ch 8 "Glockenspiel" named as a mallet, played on glockenspiel (its timpani patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5779500; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF ~@8 AG AH AI AJ AK AL AM AN AO AP AQ@2 AR@2 AS
  AT AU AV AW AX AY AZ BA BB BC@2
>`.pickRestart({
  A: "eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5, c3@2 g3@2 d4@2 eb4@9 ~",
  B: "d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5, bb2@2 f3@2 c4@2 d4@9 ~",
  C: "d5 c5 g4 d5 c5 g4 d5 c5 g4 d5 c5 f4 d5 c5 f4 d5, ab2@2 eb3@2 bb3@2 c4@9 ~",
  D: "c5 bb4 f4 c5 bb4 f4 c5 bb4 f4 c5 bb4 eb4 c5 bb4 eb4 c5, g2@2 d3@2 a3@2 bb3@9 ~",
  E: "bb4 ab4 eb4 bb4 ab4 eb4 bb4 ab4 eb4 bb4 ab4 db4 bb4 ab4 db4 bb4, f2@2 c3@2 g3@2 ab3@9 ~",
  F: "ab4 g4 d4 ab4 g4 d4 ab4 g4 d4 ab4 g4 c4 ab4 g4 c4 ab4, eb2@2 bb2@2 f3@2 g3@9 ~",
  G: "g4 f4 c4 g4 f4 c4 g4 f4 c4 g4 f4 c4 g4 f4 c4 g4, d2 a2 e3 f3 g3@4",
  H: "ab2 eb3 ab3 bb3 c4 eb4@3 bb2 f3 bb3 c4 ~ f4@3, eb4@5 ~@3 d4@4 d4@4",
  I: "eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5, c5@15 ~",
  J: "d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5 g4 eb5 d5, bb4@15 ~",
  K: "d5 c5 f4 d5 c5 f4 d5 c5 f4 d5 c5 f4 d5 c5 f4 d5, ab4@15 ~",
  L: "c5 bb4 f4 c5 bb4 f4 c5 bb4 f4 c5 bb4 eb4 c5 bb4 eb4 c5, g4@15 ~",
  M: "bb4 ab4 eb4 bb4 ab4 eb4 bb4 ab4 eb4 bb4 ab4 d4 bb4 ab4 d4 bb4, f4@15 ~",
  N: "ab4 g4 d4 ab4 g4 d4 ab4 g4 d4 ab4 g4 c4 ab4 g4 c4 ab4, eb4@15 ~",
  O: "g4 f4 c4 g4 f4 c4 g4 f4 c4 g4 f4 c4 g4 f4 c4 g4, ab3@15 ~", P: "f4 d4 c4 f4 d4 c4 f4 c4 b3@8, g3@15 ~",
  Q: "c3 g3 d4 c5@2 g4@2 eb4, d5@3 eb4@4 ~", R: "bb2@2 f3@2 c4@2 ~@2 c4@6 c4 [d4,eb4], d4@6 d4@9 ~",
  S: "ab2 eb3 bb3 ~ c5@4, g4 ~, f4 ~@5 c4@9 ~", T: "g2 d3 a3 f4@2 eb4@2 bb3, bb4@3 bb3@4 ~",
  U: "f2 c3 g3 ~ ab4@4, ab3@6 ab3@9 ~", V: "eb2 bb2 f3 f4@2 eb4@3, g4@6 g3@9 ~", W: "d2 a2 e3 ~ d4@4, c4 ~, ~@6 f3@9 ~",
  X: "ab2 eb3 ab3 bb3 c4 eb4@3 bb2 f3 bb3 c4 d4 f4@3, eb4@5 ~@3 f4@4 bb4@4",
  Y: "c3 g3 d4 [c5,c6]@2 [g4,g5]@2 eb5, [d5,d6]@6 eb4@9 ~", Z: "bb2@2 f3@2 c4@2 ~@2 c5@6 c5 [d5,eb5], d5 ~, ~@6 d4@9 ~",
  AA: "ab2 eb3 bb3 ~ [f5,c6]@4, g5 ~, f5 ~@5 c4@9 ~", AB: "g2 d3 a3 f5@2 eb5@2 bb4, [f5,bb5]@6 bb3@9 ~",
  AC: "f2 c3 g3 ~ [ab4,db5,ab5]@4, [c4,eb4,ab4] ~, ab3@6 ab3@9 ~", // Db5 Ab
  AD: "~ bb2 f3 f5@2 eb5@3, [g4,bb4]@6 g3@9 ~, eb2 ~@7, ~ [d5,g5]@5 ~@10", AE: "d2@2 a2@2 e3@2 f3@9 ~",
  AF: "ab2 eb3 ab3 bb3 c4 eb4@3 bb2 f3 bb3 c4 d4 f4@3", AG: "[c3,eb3,g3,eb5] [d3,f3,bb3,d5]",
  AH: "[eb3,g3,c4,c5] [d3,f3,bb3,bb4]", AI: "g4@4 f4@2 ~ f3, eb3@3 bb4", AJ: "g4 f4, [c3,d3,f3]@15 ~",
  AK: "[c3,eb3,g3,eb5,eb6] [d2,f3,bb3,d5,d6]", AL: "[eb3,g3,c4,c5,c6] [d3,f3,bb3,bb4,bb5]",
  AM: "[c3,eb3,g4,g5] [f3,f4,f5]", AN: "[f3,bb3,bb4,bb5] [f3,bb3,f4,f5,f6]",
  AO: "[f3,ab3,c4,f4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4]!2", AP: "[f3,ab3,c4,f4]!4",
  AQ: "[eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]!2", // Eb
  AR: "[eb3,f3,a3,eb4]@2 [eb3,f3,a3,eb4]@2 [eb3,f3,a3,eb4]@2 [eb3,f3,a3,eb4]!2", // F7
  AS: "[d3,g3,c4]@2 [d3,g3,c4]@2 [d3,g3,c4]@2 [d3,g3,c4]!2", AT: "[d3,g3,b3] [g2,g3], [b4,b5]@15 ~",
  AU: "c3@2 g3@2 d4@2 ~@2 [eb3,g3,c4]@4 c4@2 ~ [d4,eb4], g4@13 ~ c4@2, eb4@3 eb4@3 [g3,eb4]@2", // Cm Ebmaj7 Cm
  AV: "bb2@2 g3@2 d4@2 eb4@2 [eb3,g3,c4]@4 g4!2 g4@2, g4@11 ~@5, f4 ~@11 [g3,c4,eb4]@4", // Cm
  AW: "ab2@2 eb3@2 bb3@2 c4@2 [c3,eb3,ab3]@4 bb4!2 bb4@2, g4@11 ~ [f3,ab3,bb3,f4]@4", // Ab Bb7
  AX: "g2 d3 a3 bb3 [eb3,eb4,bb4,eb5]@2 [bb2,bb3,f4,bb4]@2, [bb4,f5] ~", // Eb5 Bb5
  AY: "f2 c3 g3 ~@3 [db3,f3,bb3]@2, [eb4,ab4,eb5] [db4,db5], ~@3 ab3@3 ~@2", // Bbm Ab5 Db
  AZ: "eb2 bb2 f3 ~@3 [c3,eb3,g3]@2, [d4,g4,d5] [c4,c5], ~@3 g3@3 ~@2", // Cm G5 C
  BA: "d2 a2 e3 ~@3 [g2,d3,g3]@2, [d4,f4,d5] [g4,c5,d5,g5], ~@3 f3@3 ~@2", // G5 Dm Gsus4
  BB: "ab2 eb3 ab3 bb3 c4 eb4@3 bb2 f3 bb3 c4 d4 f4@3, [ab4,eb5,ab5] [bb4,f5,bb5]", BC: "[[c2,c3,c5,f5,g5,c6]@15 ~]/2",
})).s("gm_piano").gain(0.3)

// other · violin · "Violino I"
const violin = note("<~@16 A B C D E F G H I J K L M N O P ~@23 Q R S@2 T U V W X ~@2>".pickRestart({
  A: "d5@3 c5@2 g4@2 eb4", B: "d4@8 c4@6 c4 [d4,eb4]", C: "g4 c5, f4 ~@15", D: "bb4@3 f4@2 eb4@2 bb3", E: "ab3 ab4",
  F: "g4@3 f4@2 eb4@2 bb3", G: "c4 d4", H: "eb4@2 f4 bb4", I: "d5@3 c5@2 g4@2 eb5", J: "d5@8 c5@6 c5 [d5,eb5]",
  K: "g5 [f5,c6], f5 ~@15", L: "[f5,bb5]@3 f5@2 eb5@2 bb4", M: "[eb4,ab4] [db5,ab5]", N: "[d5,g5]@3 f5@2 eb5@2 bb4",
  O: "c5 d5", P: "eb5 f5", Q: "b5", R: "g4@7 c4", S: "[g4@28 bb4!2 bb4@2]/2", T: "f5@2 eb5 bb4",
  U: "[ab4,eb5] [db4,db5]", V: "[g4,d5] [c4,c5]", W: "[f4,d5] [d5,g5]", X: "[eb5,ab5] [f5,bb5]",
})).s("gm_violin").gain(0.3)

// other · cello · "Viola"
const cello = note("<~@24 A B C D E F G ~@24 H I J K L M N O P ~@2>".pickRestart({
  A: "c3 g3 d4 eb4@5", B: "bb2 f3 c4 d4@5", C: "ab2 eb3 bb3 c4@5", D: "g2 d3 a3 bb3@5",
  E: "f2 c3 g3 ~ ab4@4, ab3@3 ab3@5", F: "eb2 bb2 f3 g3@5, g4@3 ~@5", G: "d2 a2 e3 f3@5", H: "[d3,g3,b3] [g2,g3]",
  I: "c3", J: "bb2@2 eb3 g3", K: "ab2 eb3 bb3 c4 c3@2 f3@2", L: "g2 d3 a3 bb3 eb3@2 bb2@2",
  M: "f2 c3 g3 ~@3 db3@2, eb4 db4, ~@3 ab3@3 ~@2", N: "eb2 bb2 f3 ~@3 c3@2, d4 c4, ~@3 g3@3 ~@2",
  O: "d2 a2 e3 ~@3 g2@2, d4 g4, ~@3 f3@3 ~@2", P: "[ab2,ab4] [bb2,bb4]",
})).s("gm_cello").gain(0.3)

// other · synth brass 1 · "Sintetizador de Metais"
const synth_brass_1 = note("<~@26 A B C D ~@18 E@4 F G H I ~@2 J K L M N ~@3>".pickRestart({
  A: "c6", B: "bb5", C: "~ ab5", D: "g5 ~", E: "[[c5,c6]@6 [bb4,bb5] [eb5,eb6]@6 [g4,g5] [ab4,ab5] [bb4,bb5]]/4",
  F: "[a4,a5]", G: "[f5,f6] [eb5,eb6]", H: "[d5,d6]@3 [c5,c6]", I: "[b4,b5]", J: "g4@12 bb4!2 bb4@2",
  K: "[bb4,f5]@2 [bb4,eb5] [f4,bb4]", L: "[eb4,ab4,eb5] [db4,db5]", M: "[d4,g4,d5] [c4,c5]",
  N: "[d4,f4,d5] [g4,c5,d5,g5]", // Dm Gsus4
})).s("gm_synth_brass_1").gain(0.4)

// chords · trumpet · "Trompete em B♭"
const trumpet = note("<~@32 A B C D E F G H ~@8 I@2 J@4 K L M N O D P Q R S ~@2>".pickRestart({
  A: "c5 g4", B: "d5 g4", C: "eb5 bb4", D: "f5@2 eb5 bb4", E: "ab4@3 bb4", F: "g4 c4", G: "f4 c4", H: "d4",
  I: "[c4,f4]@4 [c4,f4]@4 [c4,f4]@4 [c4,f4]@2 [c4,f4]!2", // F5
  J: "[bb3,eb4]@4 [bb3,eb4]@4 [bb3,eb4]@4 [bb3,eb4]@2 [bb3,eb4]!2", // Eb5
  K: "[g3,c4]@4 [g3,c4]@4 [g3,c4]@4 [g3,c4]@2 [g3,c4]!2", L: "b4", M: "g4@14 c4 [d4,eb4]",
  N: "g4@12 g4!2 g4@2, f4 ~@15", O: "g4@12 bb4!2 bb4@2", P: "eb5 db5", Q: "d5 c5", R: "f4 d5", S: "eb5 f5",
})).s("gm_trumpet").gain(0.3)

// bass · tuba
const bass = note("<~@35 A B C D E ~@8 F G H@4 ~ I ~@2 J K L M N O ~@2>".pickRestart({
  A: "g2 d3 a3 bb3@5", B: "f2 c3 g3 ab3@5", C: "eb2 bb2 f3 g3@5", D: "d2 a2 e3 f3@5", E: "g2 d3 a3 d3@3 g3@2",
  F: "f3@2 f3@2 f3@2 f3!2", G: "f3!4", H: "eb3@2 eb3@2 eb3@2 eb3!2", I: "~@7 [g2,g3]",
  J: "ab2 eb3 bb3 ~ [c3,eb3,ab3]@2 [f3,ab3,bb3]@2", K: "g2 d3 a3 bb3 eb3@2 [bb2,bb3]@2",
  L: "f2 c3 g3 ab3@3 [db3,f3,bb3]@2", M: "eb2 bb2 f3 g3@3 [c3,eb3,g3]@2", N: "d2 a2 e3 f3@3 [g2,d3,g3]@2", O: "ab2 bb2",
})).s("gm_tuba").gain(0.3)

// other · glockenspiel
const glockenspiel = note("<~@44 A B C D E ~@10 F G H@2 I ~@2>".pickRestart({
  A: "eb7 d7 g6 eb7 d7 g6 eb7 d7 g6 eb7 d7 g6 eb7 d7 g6 eb7", B: "d7 g6 eb7 d7 g6 eb7 d7 g6 eb7 d7 g6 eb7 d7 g6 eb7 d7",
  C: "d7 c7 f6 d7 c7 f6 d7 c7 f6 d7 c7 f6 d7 c7 f6 d7",
  D: "[bb2,c7] [bb2,bb6] [bb2,f6] [bb2,c7] [bb2,bb6] [bb2,f6] [bb2,c7] [bb2,bb6] [bb2,f6] [bb2,c7] [bb2,bb6] [bb2,eb6] [bb2,c7] [bb2,bb6] [bb2,eb6] [bb2,c7]", // Bbsus2 Bb Bb5 Bbsus2 Bb Bb5 Bbsus2 Bb …
  E: "bb2 ~@15", F: "~@2 eb7 bb6", G: "bb6 ~", H: "d7 ~", I: "ab7 bb7",
})).s("gm_glockenspiel").gain(0.2)

stack(piano, violin, cello, synth_brass_1, trumpet, bass, glockenspiel)