Strudelify

lane boy

Alex Voss

KeyD majorTempo160 bpm
0:00/0:00
// lane boy — Alex Voss
// 160 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 9 "Metallic Synthesizer" pad metallic (copy of ch 1 "Bass Guitar" electric bass pick); ch 11 "Bowed Synthesizer" pad bowed (copy of ch 1 "Bass Guitar" electric bass pick); ch 12 "Poly Synthesizer" pad poly (copy of ch 1 "Bass Guitar" electric bass pick)
// note: Transcription provider: pdmx. https://musescore.com/score/2673511; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  ~@8 A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C ~@3 D A B@2 C A B C A B@2 C ~@3 E F G@2 H F G@2 H F G H I@3 D A
  B@2 C A B@2 C A B@2 C A B@2 C J@16 K@7 L K@9 M N O P M N O Q M N O Q M N O Q M N O Q M N O ~ R B@2 C R B@2 C ~ S T U V
  S T U V S T U V S T U V
>`.pickRestart({
  A: "[d2,d3]@3 [d2,d3]@3 [e2,e3]@2", B: "[a1,a2]@3 [a1,a2]@2 ~@3", C: "[c2,c3] [a1,a2] [a1,a2]@2 [a1,a2]@2 [g1,g2]@2",
  D: "~ a2 a2@2 a2@2 g2@2", E: "c4 b3!2 a3 b3@2 a3@2", F: "d2@2 d3!2 d3@2 e3@2", G: "a2@3 a2@2 ~@3",
  H: "c3 a2 a2@2 a2@2 g2@2", I: "[a2 a1@2 a1@2 a1]/3", J: "[[d2,d3]@3 [d2,d3]@3 [d2,d3]@4 [d2,d3]@3 [d2,d3]@3]/2",
  K: "[d2,d3]@3 [d2,d3]@3 [f2,f3]@2", L: "c2 b1!2 a1 b1@2 a1@2", M: "[a1,a2]@3 [a1,a2]@3 [a1,a2]@2",
  N: "[c2,c3]@3 [c2,c3]@3 [c2,c3]@2", O: "[b1,b2]@3 [b1,b2]@3 [b1,b2]@2", P: "[d2,d3]@3 [d2,d3]@3 [d2,d3]@2",
  Q: "[d2,d3]@3 [d2,d3]@3 [c2,c3]@2", R: "~@2 [d2,d3]!2 [d2,d3]@2 [e2,e3]@2", S: "[d2,d3]", T: "[a1,a2]", U: "[c2,c3]",
  V: "[b1,b2]", // B
})).s("gm_electric_bass_pick").gain(0.3)

// chords · viola
const viola = note(`<
  A B@3 A B@2 C D E F G H E I G J K L M N O P Q R S T U V W X Y Z AA AB AC AD@3 AE D F G H E I G AF AG@3 AH AI@3 AH AI@3
  AH AI@2 AJ AK AL AM D E F AN H E I AN D AO AP G H E I G AQ AR@2 G AQ AR@2 G AS@8 AT@7 ~ AU@4 AV AW AX AY AV AZ BA BB
  AV AZ BA BC BD E F G BE E I G BE AO AP G BE E I G ~ BF B@3 A B@3 ~ BG BH BI BJ BG BH BK BL BG BH BK BL BG BH BK BL
>`.pickRestart({
  A: "d4@2 ~@2 d4@2 f4 a4 d5@2 ~@2 g3@2 ~@2", B: "a3@2 ~@2 a3@2 c4 e4 a4@2 ~@2 g3@2 ~@2",
  C: "a3@2 ~@2 a3@2 c4 e4 a4@2 ~@6", D: "~@2 [d4,f4,a4,d5]!4 [c4,e4,g4,c5]@2", E: "[a3,c4,e4,a4]@3 [a3,c4,e4,a4]@2 ~@3",
  F: "[a3,c4,e4,a4]@3 [a3,c4,e4,a4]@2 ~@2 a4", G: "c5 b4!2 a4 b4@2 a4@2", H: "~@2 [d4,f4,a4,d5]!4 [c4,e4,g4,c5]!2",
  I: "[a3,c4,e4,a4]@6 [a3,c4,e4,a4]@4 ~@4 e4 a4", J: "~@2 d5!4 c5!2", K: "a4@3 a4@2 e4!3", L: "a4@3 a4@2 a4!3",
  M: "c5 b4 b4@2 b4!3 a4", N: "b4@3 a4@3 b4 c5", O: "b4@3 a4@2 a4!3", P: "c5!2 b4@3 a4!3",
  Q: "c5@4 c5@2 c5@2 b4@6 e4 a4", R: "b4!3 a4 b4 a4 b4@2", S: "b4@6 a4@2 b4@2 a4@4 e4 a4", T: "b4!3 a4 b4 a4 b4!2",
  U: "b4@2 b4@2 b4@2 e4 a4 b4@2 a4@4 a4@2", V: "b4 a4@3 b4!3 a4", W: "b4 a4 b4 a4 b4 a4@2 a4", X: "b4!3 a4 b4 a4!2 c5",
  Y: "b4!3 a4 b4 a4@3", Z: "b4@2 a4@4 e4 a4 b4@2 b4@2 b4@2 a4@2", AA: "b4!3 a4 b4 a4 b4 a4",
  AB: "b4@2 a4@2 b4@2 a4@2 b4@2 a4@2 b4@2 e4 a4", AC: "b4!3 a4 b4 a4!3", AD: "b4 a4!3 b4 a4!3",
  AE: "b4@2 a4@2 a4@2 e4 a4 b4@2 a4@2 a4@4", AF: "d5@2 ~@2 d5@2 f5 a5 d6@2 ~@2 g4@2 ~@2",
  AG: "a4@2 ~@2 a4@2 c5 e5 a5@2 ~@2 g4@2 ~@2", AH: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~",
  AI: "~@2 [a3,c4,e4] ~@3 [a3,c4,e4] ~", AJ: "b4 a4 b4 a4 b4 a4 b4 a4", AK: "b4 a4@3 ~@3 a4",
  AL: "b4 a4 b4 a4 b4 a4 b4 c5", AM: "b4 a4 b4 a4 b4 a4@3", AN: "c5 b4!2 c5 b4@2 a4@2",
  AO: "[e4,a4,e5] d5@2 [c4,e4,c5] a4@2 ~@2", AP: "[e4,a4,e5] d5@2 [c4,e4,c5] a4@2 ~ a4", AQ: "[d5,d6]", AR: "[a4,a5]/2",
  AS: "d4@3 d4@3 d4@3 d4@3 d4@2 d4@2",
  AT: "[a3,d4] [a3,d4]@2 [a3,d4] [a3,d4]@2 [a3,d4]@2 [a3,d4] [a3,d4]@2 [a3,d4] [a3,d4]@2 [a3,d4]@2", // D5
  AU: "[d4,f4,a4,d5]@3 [d4,f4,a4,d5]@3 [d4,f4,a4,d5]@3 [d4,f4,a4,d5]@3 [d4,f4,a4,d5]@2 [d4,f4,a4,d5]@2", // Dm
  AV: "[g4,b4,d5,g5]@3 [g4,b4,d5,g5]@3 [g4,b4,d5,g5]@3 [g4,b4,d5,g5]@3 [g4,b4,d5,g5]@2 [g4,b4,d5,g5]@2", // G
  AW: "[a4,d5,f5,a5]@3 [a4,d5,f5,a5]@3 [a4,d5,f5,a5]@3 [a4,d5,f5,a5]@3 [a4,d5,f5,a5]@2 [a4,d5,f5,a5]@2", // Dm
  AX: "[c5,f5,a5,c6]@3 [c5,f5,a5,c6]@3 [c5,f5,a5,c6]@3 [c5,f5,a5,c6]@3 [c5,f5,a5,c6]@2 [c5,f5,a5,c6]@2", // F
  AY: "[b4,d5,f5,b5]@3 [b4,d5,f5,b5]@3 [b4,d5,f5,b5]@3 [b4,d5,f5,b5]@3 [b4,d5,f5,b5]@2 [b4,d5,f5,b5]@2", // Bdim
  AZ: "[a4,c5,e5,a5]@3 [a4,c5,e5,a5]@3 [a4,c5,e5,a5]@3 [a4,c5,e5,a5]@3 [a4,c5,e5,a5]@2 [a4,c5,e5,a5]@2", // Am
  BA: "[c5,e5,g5,c6]@3 [c5,e5,g5,c6]@3 [c5,e5,g5,c6]@3 [c5,e5,g5,c6]@3 [c5,e5,g5,c6]@2 [c5,e5,g5,c6]@2", // C
  BB: "[b4,d5,g5,b5]@3 [b4,d5,g5,b5]@3 [b4,d5,g5,b5]@3 [b4,d5,g5,b5]@3 [b4,d5,g5,b5]@2 [b4,d5,g5,b5]@2", // G
  BC: "[b4,d5,g5,b5]@3 [b4,d5,g5,b5]@3 [b4,d5,g5,b5]@2 ~@8", BD: "a3 ~ [d4,f4,a4,d5]!4 [c4,e4,g4,c5]@2",
  BE: "[d4,f4,a4]@2 [d4,f4,a4,d5]!4 [c4,e4,g4,c5]@2", BF: "~@2 d4!2 d4@2 e4@2", BG: "[g3,d4,g4]", BH: "[a3,e4,a4]",
  BI: "[c4,e4,a4]", BJ: "[b3,d4,g4]", BK: "[c4,e4,c5]", BL: "[b3,d4,b4]",
})).s("gm_viola").gain(0.5)

stack(bass, viola)

More by Alex Voss