Strudelify

Day at the Beach

Joe Satriani

KeyA majorTempo116 bpm
0:00/0:00
// Day at the Beach — Joe Satriani
// 116 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 39 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar jazz · "JAZZ GUITAR"
const electric_guitar_jazz = note(`<
  A B C D A B C D E F G H I J K J I J L M N O N P Q R S T U V W X Y Z AA AB AC AD ~
>`.pickRestart({
  A: "a2@2 [a3,c#4]@2 [a4,c#5]@2 a2@2 [a3,c#4]@2 [f#4,b4]@2 a2@2 [a3,c#4]@2 [e4,a4]@2 a2@2 [a3,c#4]@2 [f#4,b4]@2 a2@2 [a3,c#4]@2 [a4,c#5]@3 ~", // A B5 A A5 A B5 A
  B: "a2@2 [a3,c#4]@2 [a4,c#5]@2 a2@2 [a3,c#4]@2 [f#4,b4]@2 a2@2 [a3,c#4]@2 [e4,a4]@2 a2@2 [a3,c#4]@2 [e4,a4]@2 a2@2 [b3,e4]@2 [e4,a4]@3 ~", // A B5 A A5 A A5 E5 A5
  C: "f#3@2 [f#4,a4]@2 [a4,c#5]@2 f#3@2 [f#4,a4]@2 [f#4,b4]@2 f#3@2 [f#4,a4]@2 [e4,a4]@2 f#3@2 [f#4,a4]@2 [f#4,b4]@2 f#3@2 [f#4,a4]@2 [a4,c#5]@3 ~", // F#m A F#m B5 F#m A5 F#m B5 …
  D: "f#3@2 [f#4,a4]@2 [a4,c#5]@2 f#3@2 [f#4,a4]@2 [f#4,b4]@2 f#3@2 [f#4,a4]@2 [e4,a4]@2 f#3@2 [f#4,a4]@2 [e4,a4]@2 e3@2 [e4,g#4]@2 [e4,a4]@3 ~", // F#m A F#m B5 F#m A5 F#m A5 …
  E: "d3@2 [d4,f#4]@2 [a4,c#5]@2 d3@2 [d4,f#4]@2 [f#4,b4]@2 d3@2 [d4,f#4]@2 [a4,c#5]@2 d3@2 [d4,f#4]@2 [b4,e5]@2 d3@2 [d4,f#4]@2 [a4,c#5]@3 ~", // D A D B5 D A D E5 …
  F: "e3@2 [e4,g#4]@2 [c#5,f#5]@2 e3@2 [e4,g#4]@2 [c#5,f#5]@2 e3@2 [e4,g#4]@2 [b4,e5]@2 e3@2 [e4,g#4]@2 [b4,e5]@2 e3@2 [e4,g#4]@2 [b4,e5]@3 ~", // E F#5 E F#5 E E5 E E5 …
  G: "d3@2 [d4,f#4]@2 [b4,e5]@2 d3@2 [d4,f#4]@2 [a4,c#5]@2 d3@2 [d4,f#4]@2 [f#4,b4]@2 d3@2 [d4,f#4]@2 [a4,c#5]@2 d3@2 [d4,f#4]@2 [b4,e5]@3 ~", // D E5 D A D B5 D A …
  H: "e3@2 [e4,g#4]@2 [c#5,f#5]@2 e3@2 [e4,g#4]@2 [c#5,f#5]@2 e3@2 [e4,g#4]@2 [b4,g#5]@2 e3@2 [e4,g#4]@2 [b4,g#5]@2 e3@2 [e4,g#4]@2 [b4,g#5]@3 ~", // E F#5 E F#5 E
  I: "a3@2 [a4,c#5]@2 [e5,a5]@2 a3@2 [a4,c#5]@2 [e5,a5]@2 a3@2 [a4,c#5]@2 [d5,b5]@2 a3@2 [a4,c#5]@2 [d5,b5]@2 a3@2 [a4,c#5]@2 [e5,c#6]@3 ~", // A A5 A A5 A G A G …
  J: "g3@2 [g4,b4]@2 [c#5,f#5]@2 g3@2 [g4,b4]@2 [c#5,f#5]@2 e3@2 [e4,g4]@2 [d5,g#5]@2 e3@2 [e4,g4]@2 [d5,g#5]@2 e3@2 [e4,g4]@2 [d5,g#5]@3 ~", // G F#5 G F#5 Em Ddim Em Ddim …
  K: "a3@2 [a4,c#5]@2 [e5,a5]@2 a3@2 [a4,c#5]@2 [e5,a5]@2 a3@2 [a4,c#5]@2 [d5,b5]@2 a3@2 [a4,c#5]@2 [d5,b5]@2 a3@2 [a4,c#5]@2 [e5,a5]@3 ~", // A A5 A A5 A G A G …
  L: "f3@2 [e4,a4]@2 [d5,g5]@2 f3@2 [e4,a4]@2 [e5,a5]@2 f3@2 [e4,a4]@2 [g5,c#6]@2 f3@2 [e4,a4]@2 [a5,d6]@2 f3@2 [e4,a4]@2 [e5,a5]@3 ~", // A5 G5 A5 Gdim A5 D5 A5
  M: "f3@2 [e4,a4]@2 [g5,c#6]@2 f3@2 [e4,a4]@2 [g5,c#6]@2 f3@2 [e4,a4]@2 [e5,a5]@2 f3@2 [e4,a4]@2 [e5,a5]@2 f3@2 [e4,a4]@2 [e5,a5]@3 ~", // A5 Gdim A5 Gdim A5
  N: "g3@2 [g4,b4]@2 [c5,e5]@2 g3@2 [g4,b4]@2 [c5,e5]@2 g3@2 [g4,b4]@2 [b4,d5]@2 g3@2 [g4,b4]@2 [b4,d5]@2 g3@2 [g4,b4]@2 [b4,d5]@3 ~", // G C G C G Bm G Bm …
  O: "e3@2 [e4,g#4]@2 [a4,c#5]@2 e3@2 [e4,g#4]@2 [a4,c#5]@2 e3@2 [e4,g#4]@2 [g#4,b4]@2 e3@2 [e4,g#4]@2 [g#4,b4]@2 e3@2 [e4,g#4]@2 [g#4,b4]@3 ~", // E A E A E G#m E G#m …
  P: "e3@2 [e4,g#4]@2 [a4,c#5]@2 ~ e3@3 [e4,g#4]@3 [a4,c#5]@3 e3@3 ~ [e4,g#4]@3 [g#4,b4]@3 e3@3 [e4,g#4]@3", // E A E A E G#m E
  Q: "[g#4,b4]@3 e3@3 ~ [e4,g#4]@3 [e4,a4]@5 ~ a2 ~ [a3,c#4] [a4,c#5] ~ a2 ~ [a3,c#4] [f#4,b4] ~ a2 ~ [a3,c#4] [e4,a4] ~ a2", // G#m E A5 A B5 A A5
  R: "~ [a3,c#4] [f#4,b4] ~ a2 ~ [a3,c#4] ~ [a4,c#5]@3 a2 ~ [a3,c#4] [a4,c#5] ~ a2 ~ [a3,c#4] [f#4,b4] ~ a2 ~ [a3,c#4] [e4,a4] ~ a2 ~ [a3,c#4] ~ [e4,a4] a2", // A B5 A B5 A A5 A A5
  S: "~ [b3,e4] ~ [e4,a4]@3 f#3 ~ [f#4,a4] [a4,c#5] ~ f#3 ~ [f#4,a4] [f#4,b4] ~ f#3 ~ [f#4,a4] ~ [e4,a4] f#3 ~ [f#4,a4] ~ [f#4,b4] f#3 ~ [f#4,a4] ~ [a4,c#5]@2", // E5 A5 F#m A F#m B5 F#m A5 …
  T: "~ f#3 ~ [f#4,a4] [a4,c#5] ~ f#3 ~ [f#4,a4] ~ [f#4,b4] f#3 ~ [f#4,a4] ~ [e4,a4] f#3 ~ [f#4,a4] ~ [e4,a4] e3 ~ [e4,g#4] ~ [e4,a4]@3 a2 ~ [a3,c#4] ~", // F#m A F#m B5 F#m A5 F#m A5 …
  U: "[a4,c#5] a2 ~ [a3,c#4] ~ [f#4,b4] a2 ~ [a3,c#4] ~ [e4,a4] a2 ~ [a3,c#4] ~ [f#4,b4] ~ a2 [a3,c#4] ~ [a4,c#5]@3 a2 ~ [a3,c#4] ~ [a4,c#5] a2 ~ [a3,c#4] ~", // A B5 A A5 A B5 A
  V: "[f#4,b4] a2 ~ [a3,c#4] ~ [e4,a4] ~ a2 [a3,c#4] ~ [e4,a4] ~ a2 [b3,e4] ~ [e4,a4]@3 f#3 ~ [f#4,a4] ~ [a4,c#5] f#3 ~ [f#4,a4] ~ [f#4,b4] ~ f#3 [f#4,a4] ~", // B5 A A5 A A5 E5 A5 F#m …
  W: "[e4,a4] ~ f#3 [f#4,a4] ~ [f#4,b4] ~ f#3 [f#4,a4] ~ [a4,c#5]@3 f#3 ~ [f#4,a4] ~ [a4,c#5] ~ f#3 [f#4,a4] ~ [f#4,b4] ~ f#3 [f#4,a4] ~ [e4,a4] ~ f#3 [f#4,a4] ~", // A5 F#m B5 F#m A F#m A F#m …
  X: "[e4,a4] ~ e3 ~ [e4,g#4] [e4,a4]@3 ~ d3 [d4,f#4] ~ [a4,c#5] ~ d3 [d4,f#4] ~ [f#4,b4] ~ d3 [d4,f#4] ~ [a4,c#5] ~ d3 ~ [d4,f#4] [b4,e5] ~ d3 ~ [d4,f#4]", // A5 E A5 D A D B5 D …
  Y: "[a4,c#5]@3 ~ e3 [e4,g#4] ~ [c#5,f#5] ~ e3 [e4,g#4] ~ [c#5,f#5] ~ e3 ~ [e4,g#4] [b4,e5] ~ e3 ~ [e4,g#4] [b4,e5] ~ e3 ~ [e4,g#4] [b4,e5]@3 ~ d3", // A E F#5 E F#5 E E5 E …
  Z: "[d4,f#4] ~ [b4,e5] ~ d3 ~ [d4,f#4] [a4,c#5] ~ d3 ~ [d4,f#4] [f#4,b4] ~ d3 ~ [d4,f#4] [a4,c#5] ~ d3 ~ [d4,f#4] [b4,e5]@3 ~ e3 ~ [e4,g#4] [c#5,f#5] ~ e3", // D E5 D A D B5 D A …
  AA: "~ [e4,g#4] [c#5,f#5] ~ e3 ~ [e4,g#4] [b4,g#5] ~ e3 ~ [e4,g#4] [b4,g#5] ~ e3 ~ [e4,g#4] ~ [b4,g#5]@3 f#3 ~ [f#4,a4] [e5,a5] ~ f#3 ~ [f#4,a4] [e5,a5] ~ f#3", // E F#5 E F#m A5 F#m A5
  AB: "~ [f#4,a4] ~ [e5,a5] f#3 ~ [f#4,a4] ~ [e5,a5] f#3 ~ [f#4,a4] ~ [c#5,f#5]@3 f#3 ~ [f#4,a4] [b4,d#5] ~ f#3 ~ [f#4,a4] ~ [b4,d#5] f#3 ~ [f#4,a4] ~ [b4,d#5] f#3", // F#m A5 F#m A5 F#m F#5 F#m B …
  AC: "~ [f#4,a4] ~ [b4,d#5] f#3 ~ [f#4,a4] ~ [b4,e5]@3 f#3 ~ [f#4,a4] ~ [e4,a4] f#3 ~ [f#4,a4] ~ [e4,a4] f#3 ~ [f#4,a4] ~ [f#4,b4] f#3 ~ [f#4,a4] ~ [f#4,b4] f#3", // F#m B F#m E5 F#m A5 F#m A5 …
  AD: "~ [f#4,a4] ~ [f#4,b4]@3 f#3 ~ f#4 ~ f#4 f#3 ~ f#4 ~ f#4 f#3 ~ f#4 ~ f#4 f#3 ~ f#4 ~ f#4 ~ e3 [e4,g#4] ~ [e4,a4]@2", // F#m B5 E A5
})).s("gm_electric_guitar_jazz").gain(0.51)

stack(electric_guitar_jazz)

More by Joe Satriani