Strudelify

Impulse

Carlos Ogando

KeyG majorTempo110 bpm
0:00/0:00
// Impulse — Carlos Ogando
// 110 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/6304747; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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(`<
  ~@11 A B C D A B C E A E F E G E F H A B I A B C D A B C J A K C L ~ A B C D A B C E A E F E G E F H A B M ~ N O N O P
  N@4 O N O P N@4 O N O P N@3 Q R S T Q R S T ~ U V W V X V W Y Z AA AB
>`.pickRestart({
  A: "[e3,g3,b3]@2 [e3,g3,b3] [e3,g3,b3]@2 [e3,g3,b3] [e3,g3,b3]@2", // Em
  B: "[e3,g3,b3]@4 [e3,g3,b3]@3 [e3,g3,b3]@3 [e3,g3,b3]@2 [e3,g3,b3]@4", // Em
  C: "[b3,d4,g4]@2 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4] [b3,d4,g4]@2", // G
  D: "[b3,d4,g4]@4 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 [b3,d4,g4]@4", // G
  E: "[d3,f#3,a3]@4 [d3,f#3,a3]@3 [d3,f#3,a3]@3 [d3,f#3,a3]@2 [d3,f#3,a3]@4", // D
  F: "[g3,c4,e4]@2 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4] [g3,c4,e4]@2", // C
  G: "[g3,b3,e4]@2 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4] [g3,b3,e4]@2", // Em
  H: "[d3,f#3,d4]@4 [d3,f#3,d4]@3 [d3,f#3,d4]@3 [d3,f#3,d4]@2 [d3,f#3,d4]@4", // D
  I: "[g3,b3,d4]@2 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4] [g3,b3,d4]@2", // G
  J: "[f#3,a3,c4]@4 [f#3,a3,c4]@3 [f#3,a3,c4]@3 [f#3,a3,c4]@2 [d#3,g3,b3]@4", // F#dim D#aug
  K: "[e3,g3,b3] [e3,g3,b3]@2 [e3,g3,b3]@3 [e3,g3,b3]@2", L: "~ [b3,d4,g4]@2 [b3,d4,g4]@3 [d#3,g3,b3]@2",
  M: "[g3,b3,d4]@15 ~", N: "g4@3 d5@2 b4@3", O: "g4@3 d5@2 b4@2 f#4", P: "g4@3 d5@2 b4@2 a4",
  Q: "g5@3 g5@3 g5@4 e5@4 f5@2", R: "f#5@3 f#5@3 f#5@4 d5@2 e5@2 d5@2", S: "e5@3 e5@3 e5@4 e5@4 d5@2",
  T: "e5@3 e5@3 e5@4 f#5@6",
  U: "e4 g4 [e3,g3,b3,e4] g4 e4 [e3,g3,b3,g4] b4 e4, [e3,g3,b3]@2 ~ [e3,g3,b3]@2 ~ [e3,g3,b3]@2", // Em
  V: "d4@2 f#4@2 [d3,f#3,a3,d4]@3 [d3,f#3,a3,f#4]@3 [d3,f#3,a3,d4]@2 f#4@2 a4@2, [d3,f#3,a3] ~@2 [d3,f#3,a3]", // D
  W: "g4 c5 [g3,c4,e4,g4] c5 g4 [g3,c4,e4,c5] e5 c5, [g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4]@2", // C
  X: "g4 b4 [g3,b3,e4,e5] b4 g4 [g3,b3,e4,b4] e5 b4, [g3,b3,e4]@2 ~ [g3,b3,e4]@2 ~ [g3,b3,e4]@2", // Em
  Y: "~@2 f#4@2 [d3,f#3,d4]@3 [d3,f#3,d4,f#4]@3 [d3,f#3,d4]@2 f#4@2 d5@2, [d3,f#3,d4] ~@2 [d3,f#3,d4]", // D
  Z: "e4 g4 [e3,g3,b3,e4] g4 e4 [e3,g3,b3,g4] b4 g4, [e3,g3,b3]@2 ~ [e3,g3,b3]@2 ~ [e3,g3,b3]@2", // Em
  AA: "e4@2 g4@2 [e3,g3,b3,e4]@3 [e3,g3,b3,g4]@3 [e3,g3,b3,e4]@2 g4@2 b4@2, [e3,g3,b3] ~@2 [e3,g3,b3]", // Em
  AB: "[g3,b3,d4,g4,b4,d5]@15 ~", // G
})).s("gm_piano").gain(0.3)

stack(piano)