Strudelify

Frog-I-More Rag

Morton Jelly Roll

KeyC majorTempo192 bpm
0:00/0:00
// Frog-I-More Rag — Morton Jelly Roll
// 192 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(192/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 · "Frog-I-Mo"
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 AG AH AI AJ AK AL AM@3 AN@2 ~ AO AP@2 AQ@3 AR@6
  AS@2 AT@2 AU AV AW AX@4 AY AZ@2 BA BB BC@2 BD@2 BE@6 ~
>`.pickRestart({
  A: "[a#5,a#6] d6 f6 [a5,a6]@2 d6 [e4,a#4,c#5,g5,g6]@2, [f4,a#4,d5]@2 ~ [e4,a#4,c#5]@3 ~@2", // A# A Edim A# A#dim
  B: "[d#4,a4,c5,f5,f6]@4 ~@2 [c6,d6] d#6 f6@2 f5@2 ~@2 d5@2, ~@8 e6 ~@7", C: "[a#4,a#5] d5 f5 [a4,a5]@2 d5 [g4,g5]@2",
  D: "[f4,f5] ~ [f4,a4,f5] ~", E: "[a#3,d4,f4] [a#3,d4,f4]@3 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]",
  F: "[c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4] [c#4,f4,g#4] [c#4,f4,g#4]@2 [c#4,f4,g#4]", // C C#
  G: "[d4,f#4,a4] [d4,f#4,a4]@2 [d4,f#4,a4] [d#4,g4,a#4] [d#4,g4,a#4]@2 [d#4,g4,a#4]", // D D#
  H: "[e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4] [f4,a4,c5]@2 ~@2", // E F
  I: "~ [a#4,d5] [g4,c#5]@2 g4 g4@2 ~, ~@4 a#4@3 ~, ~@2 d5 ~", // A# Gdim
  J: "~ d5 c5 [f4,a4,c5,f5]@2 d5 c5 a#4, ~ [f4,a4]@2 ~@2 [f4,a4]@2 ~", K: "c5 a#4 f4 d4 c#4 d4 a4 g4, [d4,f4] ~@2 e4",
  L: "[a3,d#4,g4] [d#4,g4] [a3,d#4,f#4] [a3,d#4,f4]@2 [a3,d#4,f4]@2 d#4, ~@2 a3 ~@13", // Am7b5 D# D#dim F7
  M: "f4 g4 ~ f4 [d4,a#4]@4 f#4 g#4 ~ f#4 [d#4,b4]@4, [a#3,d4] ~ [b3,d#4] ~", // Gm G#m A# B
  N: "g4 a4 ~ g4 e4@4 g#4 a#4 ~ g#4 f4@4, [c4,e4] ~ f4 ~", O: "a4 b4 ~ a4 f#4@4 a#4 c5 ~ a#4 g4@4, f#4 ~ g4 ~",
  P: "b4 c#5 ~ b4 g#4@4 c5 d5 ~ c5 a4@4, g#4 ~ a4 ~",
  Q: "~@2 [d4,e4]@4 [g4,a#4,e5,g5]@6 ~@2 c5 [d5,e5], [g4,a#4,d5]@3 ~@5", // Dsus2 Edim Dsus2 Gm
  R: "f5@2 e5@2 d#5@2 g4 ~ [a4,d5]@2 c5@2 a4@2 g4@2", // D5
  S: "[f4,a#4]@3 ~ [f4,c5]@2 [f4,d5]@2 [f4,a4,d#5]@2 [f4,f5]@2 [g4,g5]@2 [a4,a5]@2", // A#5 F5 Dm F7 F G A
  T: "[a#4,d5,a#5] ~ [g#4,d5,g5] [g#4,d5,g5]@2 [g#4,d5,g5]@2 [g#4,f5]", U: "[a4,d#5,g5] ~ g5@2 d#5 ~ [a4,d#5]@4 ~@6",
  V: "~ [g4,c#5,g5]@2 [c#5,g5] [g4,c#5,g5]@2 [g4,c#5,g5]@2, ~@6 g4 ~@9", // Gdim C#dim Gdim
  W: "[g4,d5,g5]@2 ~ [f4,a#4,d5]@2 [f4,a#4,d5]@3", // G5 A#
  X: "~@2 [f4,b4,g5]@3 ~ [f4,f5]@2 [f4,b4,c#5]@3 ~ [f4,b4,d5]@3 ~, ~@6 b4 ~@9", Y: "[e4,a#4,d5]@2 ~ [g4,a#4,e5]@4 ~",
  Z: "~@2 [a4,c#5]@2 [f4,a4,d5]@2 [f4,a4,d5]@3 ~ [f4,a4,d5]@2 [g4,c5]@3 ~, ~@2 f4 ~@13", // A Dm C5
  AA: "[d4,f4,a#4]@4 [c#5,a#5,c#6]@4 [d5,d6]@3 ~ [c#5,a#5,c#6]@2 [d5,d6]@2", // A# F# D F# D
  AB: "~@2 [c#5,a#5,c#6]@2 [d5,d6]@2 [a#4,a#5]@4 [a#4,a#5]@2 [g4,g5]@3 ~", // F# D A# G
  AC: "[g4,c5,g5]@2 [f#4,f#5]@2 [g4,c5,g5]@3 ~ [f4,a4,f5]@6 ~@2", // C5 F# C5 F
  AD: "~@4 [a4,d#5,a5]@2 [g#4,d#5,g#5]@3 ~ [g#4,d#5,g#5]@2 [a4,d#5,a5]@4", // Adim G#5 Adim
  AE: "[g4,d5,g5]@4 ~@2 d5@2 [f4,f5]@2 c#5@2 [f4,d5]@3 ~", // G5 F Dm
  AF: "[g4,b4,d5]@2 [g4,b4,g5]@3 ~ a4@2 [g4,b4,f5]@3 ~ [g4,b4,d5]@3 ~", // G G7 G
  AG: "[e4,a#4,d5] d5 c#5 [e4,a#4,c5]@2 [d#4,a#4,d5] ~@2, ~ [e4,a#4]@2 ~@5", // Em7b5 C7 D#maj7 Edim
  AH: "~@2 [f4,a4,d5]@2 [f4,a4,c#5]@2 [f4,a4,d5]@3 ~ [f4,a4,d5]@2 [g4,c5]@3 ~", // Dm Faug Dm C5
  AI: "~@2 [f4,a#4,f5]@2 ~ [f4,a#4,f5]@2 ~", AJ: "[f4,a#4,f5]@2 ~ [f4,a#4,f5] ~ [d#5,d#6]@2 c6",
  AK: "[d#5,a5,d#6]@4 ~@4 [c5,a5,c6]@2 [g#4,g#5]@2 [a4,d#5,a5]@3 ~", // D#dim F G# Adim
  AL: "[g4,d#5,g5]@4 [g#4,d#5,g#5]@2 [a4,d#5,a5]@3 ~@3 [g4,g5]@3 f4, ~@5 [f4,f5] ~@2, ~@11 d5@3 ~@2", // Cm G#5 Adim G F
  AM: "[[d5,f5] ~ [a#4,d5,a#5]@4 [f4,f5] [a#4,d5,a#5]@4 [a#4,d5,a#5]@4 [b4,f5,b5]@4 ~@2 [g4,d5] ~ [a4,d5]@2 [g4,b4]@2 [f4,a#4]@3 ~ e4@2 d5@2 [g4,c#5]@2 [g4,a#4,c5]@6 ~@5, ~@33 a#4 ~ a#4 ~@12]/3", // Dm A# F A# Bdim G5 D5 G …
  AN: "[~ [f4,a4,c#5]@2 d5@2 [f4,a4,c5,f5]@4 [f4,f5]@2 [g4,d#5,g5]@3 c#5 [a#4,d5,a#5]@4 ~@13]/2", // Faug F Cm A#
  AO: "[g#4,g#5] [a4,d#5,a5]@2 [f4,a4,c5,f5]@4 ~", // G# Adim F
  AP: "[[g#4,d#5,g#5]@4 [a4,d#5,a5] ~ [g#4,d#5,g#5]@2 [a4,a5] ~ [g4,d#5,g5]@2 [a4,a5] ~ [d5,g5]@4 ~@3 d5@2 ~@2 f5@2 ~ d5 [g4,d5]@3, ~@13 g4@4 ~@3 c#5@2 ~@2 g4@4 ~@4, ~@12 g5 ~@3]/2", // G#5 Adim G#5 A Cm A G5
  AQ: "[~ [f4,b4,f5]@2 [f4,b4,f5]@3 ~ f4@3 ~ f4@2 [e4,a#4,d5]@2 d5@2 c#5@2 [g4,a#4,c5]@6 ~@4 [d5,f5]@2 e5@2 d#5@2 ~@2 [a4,d5]@2 c5@2 a4@2 g4@2 [f4,a#4]@3, ~@15 [e4,a#4]@4 ~@16 f4@4 ~@9]/3", // Fdim Em7b5 C7 Dm D5 A#5 Edim
  AR: "[[f4,c5]@2 ~@2 [d#4,a4,d#5]@2 ~@2 [g4,g5]@2 ~@2 [a#4,d5,a#5] ~ d5 ~ [a4,d5,a5]@4 [g4,d5,g5]@4 [f4,d5,f5]@4 [a3,d#4,g4]@2 [a3,d#4,g4]@4 d#4@2 [e4,g#4]@2 ~@2 e4@4 [f4,a4]@2 ~@2 f4@4 f#4@4 f#4@4 [c#4,g4]@2 ~@2 g4@3 ~ g#4@2 ~ g#4@4 [d#4,a4]@2 ~@2 a4@4 d5 ~ d5@2 [e4,a#4,c#5]@4 [e4,a#4,d5]@2 c5@3, ~@3 d5@2 ~@2 [f4,f5]@2 ~@2 [a4,f5,a5]@2 ~ a#4@2 ~@20 a#3@7 ~ b3@7 ~ [c4,a#4]@7 ~@3 c#4@5 d4@2 ~ d4@5 ~@2 d#4@5 ~ [e4,a#4]@4 ~@9, ~@15 a#5@2 ~@21 g#4@5 ~@3 a4@5 ~@9 b4@7 ~ c5@7 c#5@7 ~@14]/6", // F5 D#dim G A# D5 G5 Dm Am7b5 …
  AS: "[~ [g4,e5,g5]@6 ~@6 [b4,c5] c#5 d5@2 [f4,a4,d5]@4 [f4,a4,c5]@3 ~ a#4@2 [d4,f4,c5] ~ [d4,f4,c5]@3]/2", // C Cmaj7 Dm F Dm7
  AT: "[~ f4 ~ d4@3 [a#3,e4]@2 ~ [a3,d#4,g4]@4 [a3,d#4] [a3,d#4,f#4]@4 [a3,d#4,f4]@4 [a3,d#4,g4]@3 ~ a3@2 a3@2 [d#4,g4]@2, ~ [d4,a#4]@2 ~@23 [d#4,g4]@4 ~@2, ~@2 [f4,a4]@3 ~ g4 ~@6 g4@2 ~@17]/2", // A#dim Am7b5 Adim D#dim F7 Am7b5 D# Gm …
  AU: "a3 [a#3,e4,g#4] a#3 e4 a#3 [f4,a4] ~ [f4,a4], ~@6 g#4@4 b3 ~ b3@4", // A#m7b5 F
  AV: "[b3,f4,a4] ~ c4@2 ~@2 [f#4,a#4] ~ [c4,f#4,a#4] ~ c#4@2 ~@2 [g4,b4] ~, ~ [f#4,a#4]@2 ~@2 [g4,b4]@2 ~, ~ c4 ~ c#4", // Bm7b5 F# Cm7b5 G F# G
  AW: "[g4,b4] ~ [d4,g#4]@2 ~ [g#4,c5]@2 ~@2 d#4@2 ~@2 [a4,c#5] ~@2, ~ c5@3 d4@4 [d4,g#4,c5]@2 ~ d#4@4 ~, ~@9 [a4,c#5]@4 ~@3", // G Ddim G# A Dm7b5 A
  AX: "[[d#4,a4,c#5] e4@2 ~@2 [a#4,d5] ~ [e4,a#4,c#5] ~ [e4,a#4,d5] ~ [e4,a#4]@2 c5 ~ [g4,e5,g5]@6 ~@2 [c5,d5] e5 f5@2 e5@2 d#5@2 ~@2 [a4,d5]@2 c5@2 a4@2 g4@2 [f4,a#4]@3 ~ [f4,c5]@2 ~@2 d#4@2 ~ [g4,d#5,g5]@2 ~ d5 [a#4,d5,a#5] ~@2 [a#4,d5,a#5] [g4,c5,d#5,g5]@4, ~ [a#4,d5]@4 ~@6 d5 ~@36 d#5@2 ~@14, ~@3 e4@4 ~@24 f4@4 ~@12 [f4,d5]@2 ~@2 [f4,f5]@2 ~@2 [a4,a5]@2 ~@7]/4", // D#m7b5 A# A#dim Em7b5 Edim C Csus2 D5 …
  AY: "[a#4,d5,a#5]@3 ~ a#5 c6 a#5 c6 a#5 c6 a#5 [a#5,c6] c6 a#5 c6 a#5, ~ [f4,g#4]", // A# A#sus2 Fm
  AZ: "[c6 a#5 [a#5,c6] c6 a#5 c6 a#5 c6 [f4,g#4]@4 ~ g5 a5 a#5 ~@3 a#4@3 ~ [a#4,g5]@8 [a4,d#5,f#5], [e4,g4]@8 ~@7 c6@8 ~@9]/2", // A#sus2 Fm D# D#dim Em
  BA: "~ [a#4,d#5,g5]@4 [d5,a5,d6]@8 ~ a5@2, ~@14 c6 ~", BB: "~ a5@3 [c5,g#5,c6]@8 ~@2 [a#4,g#5,a#5] ~, [d5,d6] ~@3",
  BC: "[[c5,g#5,c6]@4 [c5,d#5,g5]@8 ~ [a#4,d5,f5]@2 ~ g5@3 a#4@5 ~ a#4@3 ~@4, ~@15 [a#4,d5]@4 [c#5,f5]@8 ~@5]/2", // Fm Cm A# C#
  BD: "[~@3 d-1@5 ~@12 c-1@3 ~@5 c-1@4, ~ c-1@11 ~@7 b4@4 c-1@5 ~@4, ~@3 g5@24 ~@5, ~@25 d#-1@5 ~@2]/2",
  BE: "[~ c-1@2 c-1@3 ~@6 c-1@2 [d-1,f4,d#5]@5 ~@2 c-1@5 c-1@5 c-1@4 c-1@2 ~@7 c-1@3 d-1@3 [d-1,c#5]@5 ~@8 c-1@7 c-1@5 c-1@4 c-1@3 ~@5 c-1@2 c-1@3 [c-1,d-1,f4,d#5]@4, ~@3 a#4@22 ~@6 g5@3 ~@14, ~@7 [c-1,c#-1,d-1,c#6]@5 ~@2 c-1@6 ~@17 c-1@5 e5@5 [f4,d#5]@5 ~@33 [c#-1,d-1,e-1]@5 ~@6, ~@10 c#4@5 ~@5 c5@29 ~@13 d5@22 ~@8 d5 ~@3, ~@40 [c#-1,d-1]@5 ~@2 c-1@16 ~@19 c-1@5 f#0@5 ~@4]/6", // Dm Dmaj7 Dm7 F7 C#m Dmaj7
})).s("gm_piano").gain(0.48).pan(0.6)

stack(piano)

More by Morton Jelly Roll