Strudelify

gurenge

Artist: LiSA

KeyG majorTempo130 bpm
0:00/0:00
// gurenge — Artist: LiSA
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 8/4 at bar 51) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5769462; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · viola · "Альт"
const viola = note(`<
  A B C@2 D E F@3 G H@2 I@2 J@4 K L M N O@2 D P Q@2 R@2 S T U A V W X Y Z X AA A V AB AC AD AE AF F@3 G
>`.pickRestart({
  A: "e3", B: "g3", C: "[c3@6 ~ f#3@9]/2", D: "c3", E: "d3", F: "e3@2 e3 d3@3 e3@3 e3 d3@2 e3@2 g3@2",
  G: "e3@3 d3@3 e3@4 g3@2 a3@2 b3@2", H: "[e3@3 g3@3 b3@4 g3@2 e3@2 d3@8 g3@2 a3@2 g3!2 a3@2 c4@2]/2",
  I: "[b3@3 e3@15 d3@2 e3 g3@2 b3@3 a3@2 b3@2 d4@2]/2",
  J: "[e3@3 g3@3 b3@4 g3@2 e3@2 d3@5 f#3@3 a3@4 f#3@2 e3@2 c3@5 e3@3 g3@4 e3@2 c3@2 d3@16 ~@2]/4",
  K: "e3@3 g3@3 b3@4 g3@2 e3@2 d3@2", L: "~@2 a3@2 a3@2 a3@2 a3@3 b3@3 ~@2", M: "c3@3 e3@3 g3@4 e3@2 c3@2 d3@2",
  N: "~@2 a3@2 a3@2 a3@2 a3@3 g3@3 ~@2", O: "[e3@3 g3@3 b3@4 g3@2 e3@2 d3@5 f#3@3 a3@4 f#3@2 e3@4]/2",
  P: "d3 ~@2 d3 ~@2 d3 ~ d3@2 ~@2 c3@2 d3@2", Q: "g3@3 f#3@3 g3@8 d3@2",
  R: "[g3@3 f#3@3 e3@6 d3@2 d3@10 ~@2 b3@4 d4@2]/2", S: "e4@4 ~ e4@2 g4", T: "a4@4 ~ g4@2 a4",
  U: "b4@2 ~@2 b3 d4 e4 d4", V: "c3 e3 g3 b3", W: "d3 f#3 a3 c4", X: "b3 d4 f#4 a4", Y: "d3@4 c3@4 d#3@3 d3@2 c#3@3",
  Z: "a3 c4 e4 g4", AA: "e3 f#3 g3 f#3 g3 a3 b3 a3", AB: "d3 f#3 a3 e3", AC: "b3 d4 f#4 b4",
  AD: "f#4@2 d4@2 b3@2 a3 g3", AE: "a3 c4 e4@4 ~ b3", AF: "d4 f#4@6 ~",
})).s("gm_viola").gain(0.4)

// chords · acoustic guitar nylon · "Классическая гитара (табулатура)"
const acoustic_guitar_nylon = note(`<
  A B C D C E F@4 A E C E A E C E A E C E A E C E A B C D C E G A H E D A H D I A H E D A C E F@3 A
>`.pickRestart({
  A: "[e2,b2,e3,g3,b3,e4]", B: "[g2,b2,d3,g3,b3,g4]", C: "[c3,e3,g3,c4,e4]", D: "[b2,f#3,b3,d4,f#4]",
  E: "[d3,a3,d4,f#4]", F: "[e2,b2,e3,g3,b3,e4]@2 [e2,b2,e3,g3,b3,e4] [e2,b2,e3,g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@10",
  G: "[e2,b2,e3,g3,b3,e4]!6 [e2,b2,e3,g3,b3,e4]@2", H: "[a2,e3,a3,c4,e4]", I: "[e2,b2,e3,g3,b3,e4]!4",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · piano · "Фортепиано"
const piano = note(`<
  A B C@2 D E F G H I J K L M N@3 O P Q R S P T U V W X Y@2 Z AA AB AC AD AE AF AG AH@3 AI AJ AK AL@2 AM@2 AN G H AO
>`.pickRestart({
  A: "[e2,b4,e5,g5]@3 [e3,f#5]@3 g3@2 b3@4 ~@4, ~@6 g5@9 ~", B: "[g1,b4,d5,g5]@3 [g2,f#5]@3 b2@2 d3@4 ~@4, ~@6 g5@9 ~",
  C: "[[c2,c5,e5,g5]@3 [c3,f#5]@3 e3@2 ~@2 d5@4 ~@2 b1@3 b2@3 d3@2 ~@2 b4@4 d5@2, ~@6 e5@4 ~@4 d5@9 ~@9, ~@2 g3 ~ d4@2 f#3 ~]/2", // C Cdim
  D: "e2@3 e3@3 g3@2 ~@2 e5@4 g5@2, [e4,e5]@2 b3 ~", E: "d2@3 d3@3 f#3@2 ~@2 g5@4 a5@2, [a4,a5]@2 a3 ~",
  F: "e3@2 e2 d3@3 e3@3 e2 d3@2 e3@2 g3@2, [b4,b5] ~", G: "e3@2 e2 d3@3 e3@3 e2 d3@2 e3@2 g3@2",
  H: "[e3,e5]@2 [e2,e5] [d3,d5]@3 [e3,e5]@3 e2 [d3,d5]@2 [e3,e5]@2 [g3,g5]@2", // E D E D E G
  I: "[e3,e5,e6]@3 [d3,d5,d6]@3 [e3,e5,e6]@4 [g3,g5,g6]@2 [a3,a5,a6]@2 [b3,b5,b6]@2", // E D E G A B
  J: "[e2,e5]@3 [g2,g5]@3 b2@2 ~@2 d5@2 [b2,e5]@2 [g2,d5]@2, ~@3 f#5@2 ~@3, ~@2 e3 ~", // E G E5 G5
  K: "d2@3 f#2@3 [a2,g4]@2 a4@2 g4!2 [a2,a4]@2 [f#2,c5]@2, ~@2 d3 ~", // A7 A F#dim
  L: "[c2,b4]@3 e2@3 g2@2 c3@4 g2@2 e2@2, ~@3 e4@12 ~", // Cmaj7
  M: "~@2 d4@2 e4 g4@2 b4@3 a4@2 b4@2 d5@2, d2, ~ [f#2,a2]@15, ~ d3@7", // F#m
  N: "[[e2,e5]@3 [g2,g5]@3 b2@2 ~@2 d5@2 [b2,e5]@2 g2@2 d2@3 f#2@3 [a2,d5]@2 b5 a5 b5 a5 [a2,b5]@2 c6 ~ c2@2 ~ e2@3 g2@2 c3@4 g2@2 [e2,g5]@2, ~@6 f#5@4 ~@4 d5@6 ~@11 b5@3 g5@9 ~@5, ~@4 e3@2 ~@6 d3@2 ~ f#2 ~@8]/3", // E G E5 D5 Asus2 Em
  O: "~@3 f#5@3 g5@2 a5@4 ~@2 g4@2, d2, f#5 d3@7, ~ [f#2,a2]@15", // F#m
  P: "[e2,a4]@3 [g2,g4]@3 b2@2 ~@2 g4@2 [b2,b4]@2 [g2,a4]@2, ~@3 e4@2 ~@3, ~@2 e3 ~", // A5 G B Gsus2
  Q: "~@2 [d2,a2,d3,d5,f#5,a5]@2 [d2,a2,d3,d5,f#5,a5]@2 [d2,a2,d3,d5,f#5,a5]@2 [d5,f#5,a5]@3 [d5,f#5,b5] ~@2 g4@2, ~ [d2,a2,d3]", // D Bm D5
  R: "[c2,a4]@3 [e2,g4]@3 g2@2 ~@2 g4@2 g2@2 e2@2, ~@3 e4@2 ~ d5@2, ~@2 c3 ~", // F Em
  S: "~@2 [d2,a2,d3,d5,f#5,a5]@2 [d2,a2,d3,d5,f#5,a5]@2 [d2,a2,d3,d5,f#5,a5]@2 [d5,f#5,a5]@3 [d5,g5] ~@2 g4@2, ~ [d2,a2,d3]", // D G5 D5
  T: "d2@3 ~ a4@2 [a2,b4]@2 a4@2 b4@2 [a2,d5]@2 [f#2,b4]@2, ~@3 f#2@3 ~@2 d3@4 ~@4", // Asus2 D5 B5
  U: "[a2,a4]@3 c3@3 e3@2 a3@4 e3@2 [c3,g4]@2, ~@3 g4@9 ~@4", // A C5
  V: "[d2,f#4]@3 [f#2,f#4]@3 [a2,g4]@2 [d3,a4]@4 a2@2 f#2@2", W: "[g4,e5]@3 [f#4,e6]@3 g6@2 b6@4 ~@2 d4@2, ~@3 g4@4 ~",
  X: "g4@3 [f#4,g5]@3 b5@2 d6@4 ~@2 d4@2, ~@3 g4@4 ~", // Gmaj7
  Y: "[[g4,c5]@3 [f#4,c6]@3 e6@2 g6@4 d4@2 ~@2 b4@3 b5@3 d6@2 ~@2 b3@4 d4@2, ~@6 e4@6 ~@2 d4@9 ~ f#6@4 ~@4]/2", // C5 F#dim
  Z: "e5@3 e6@3 g6@2 ~@2 e4@4 g4@2, e4@2 b6 ~", AA: "d5@3 d6@3 f#6@2 ~@2 g4@4 a4@2, a4@2 a6 ~",
  AB: "[b3,b4]@8 [e3,e4,e5]@2 e2 ~ [g4,g5]@2 [e3,f#4,f#5]@2, [f#5,b5]@3 ~@7 [f#4,f#5]@2 ~@4, ~@11 d3@3 ~@2", // B E G Esus2 B5 F#
  AC: "~ d4!2 b4, e2, ~ [g2,b2]@15, ~ e3@7", // G
  AD: "[c2,g2,c3,c4,e4,a4]@2 b4@2 [c2,g2,c3,d5]@2 b4@2 [c2,g2,c3,a4]@2 b4 ~ [c2,g2,c3]@2 g4@2, ~@11 b4@3 ~@2", // Am7 Csus2 Am7 C5
  AE: "[d2,a2,d3,a4]@2 b4@2 [d2,a2,d3,d5]@2 b4@2 [d2,a2,d3,a4]@2 b4 ~ [d2,a2,d3]@2 d4@2, ~@11 b4@3 ~@2", // D5
  AF: "[b1,f#2,b2,d4]@2 g4 ~ [b1,f#2,b2]@2 d4@2 [b1,f#2,b2,d4]@2 g4@2 [b1,f#2,b2,a4]@2 g4@2, ~@3 g4@3 ~@10", // Bm B5 Bm B7
  AG: "[d2,d3,d5]@4 [e3,g3,b3,c5]@4 [d#2,d#3,b4]@3 [d2,d3,a4]@2 [c#2,c#3,g4]@3", // D Cmaj7 G#m D5 C#dim
  AH: "[[a2,e3,a3]@2 ~@2 [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2 a4@2 [a2,e3,a3,b4]@2 ~@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3,a4]@2 ~@2 [b2,f#3,b3]@2 b4@2 [b2,f#3,b3,d5]@2 ~@2 [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~@2 [b2,e3]@7, g4@6 g4@4 ~@4 a4@4 ~@4 a4@4 ~@4 [b3,f#4,b4]@9 ~ e2@8]/3", // A5 Asus2 B5 B7 B5 Bm E5 B5
  AI: "e3 f#3 g3 f#3 g3 a3 b3 a3, ~ d4!2 b4",
  AJ: "[c2,g2,c3,c4,e4,a4]@2 b4@2 [c2,g2,c3,d5]@2 b4@2 [c2,g2,c3,a4]@2 b4 ~ [c2,g2,c3]@2 g4!2, ~@11 b4@3 ~@2", // Am7 Csus2 Am7 C5
  AK: "[d2,a2,d3,a4]@2 b4@2 [d2,a2,d3,d5]@2 b4@2 [d2,a2,d3,a4]@2 b4 ~ [d2,a2,d3]@2 g4@2, ~@11 g4@3 ~@2", // D5
  AL: "[[b1,f#2,b2] ~ [b1,f#2,b2,a4] ~ [b1,f#2,b2] b4 [b1,f#2,b2,g5] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3,a4] g4, g4@2 ~ b4@2 ~@2 f#5@3 d5@2 b4@2 ~@2]/2", // B5 B7 B5 Gmaj7 E5 Esus4
  AM: "[[c2,g2,c3] ~ [c2,g2,c3] ~ [c2,g2,c3] a4 [c2,g2,c3,b4] ~ [d2,a2,d3] ~ [d2,a2,d3] a4 [d2,a2,d3] ~ [d2,a2,d3] ~, [c4,e4,g4]@3 g4@2 ~@2 [a3,a4]@4 ~ a4@2 a4@2]/2", // C5 Cmaj7 D5 C A
  AN: "e3@2 e2 d3@3 e3@3 e2 d3@2 e3@2 g3@2, [b3,b4] ~", // B
  AO: "[e3,e5,e6]@3 [d3,d5,d6]@3 [e3,e5,e6]@4 [g3,e5,e6]@2 [a3,a5,a6]@2 [b3,b5,b6]@2", // E D E C A B
})).s("gm_piano").gain(0.45)

// bass · electric bass pick · "Бас-гитара (табулатура)"
const bass = note(`<
  A B C D C E A@5 E C E A E C E A E C E A E C E A B C D C E A@2 C E D ~ F D G ~ C E D@2 F E D@4
>`.pickRestart({
  A: "e2 g2 b2 g2", B: "g1 b1 d2 b1", C: "c2 e2 g2 e2", D: "b1 d2 f#2 d2", E: "d2 f#2 a2 f#2", F: "a1 c2 e2 c2",
  G: "[e1,e2]", // E
})).s("gm_electric_bass_pick").gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<A@4 B@2 C@4 D@9 ~ D ~ D@10 E ~ F@3 G F@2 ~@2 F@6 C@4>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~ x ~@3", B: "x ~@2 x ~@2 x ~@5 x ~ x ~", C: "x ~ x!2 ~@2 x ~ x ~ x ~ x ~ x ~",
  D: "x ~@2 x ~@2 x ~ x ~@3 x ~ x ~", E: "x!5 ~@3", F: "x ~ x ~ x ~ x ~ x ~ x!2 ~@2 x ~", G: "x!4",
})).gain(0.5)

stack(viola, acoustic_guitar_nylon, piano, bass, high_tom)