Strudelify

Innocence Maintained

Jewel

KeyG majorTempo192 bpm
0:00/0:00
// Innocence Maintained — Jewel
// 192 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Tempo Track-4" acoustic guitar steel (copy of ch 3 "Tempo Track-3" acoustic bass)
// note: Full arrangement: all 198 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 · [...]/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 · acoustic guitar nylon · "Tempo Track-2"
const acoustic_guitar_nylon = note(`<
  A B@2 C@2 B@2 D E@2 F G H I J@2 K L M N O P Q R S@2 T U V W X@2 Y Z AA AB M AC AD@2 AE@2 AF AG AH@2 AI AJ AK AL AM@2
  AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE@2 BF B BG V W X@2 Y Z AA AB M AC AD@2 AE@2 AF AG AH@2 AI AJ AK
  AL AM@2 AN AO AP AQ AR AS AT AU AV AW BH@2 BI BJ BK BC BD BE@2 BL BD BE@2 BM BN BO BP@2 BQ@3 BR@2 BS V W X@2 Y Z AA AB
  M AC AD@2 AE@2 AF AG AH@2 AI AJ AK AL AM@2 AN AO AP AQ AR AS AT BT AK AL BU@2 AN AO AP AQ AR AS BV AU AV AW AX AY AZ
  BA BB BC BW BE@2 BF BX BE@2 BR BW BY@5
>`.pickRestart({
  A: "~@5 e4@2 c4", B: "e4@5 e4@2 c4", C: "[e4@5 ~ c4@4 e4@4 c4@12 e4@4 c4@2]/2", D: "e4@5 ~ c4@4 e4@4 a4@2",
  E: "[[f#4,a4,d5]@3 ~ [f#4,a4,d5]@2 [f#4,a4,d5]@4 c5@2 b4@2 [d4,f#4,c5]@4 [d4,f#4,b4]@4 d4@4 a4@5 ~]/2", // D D7 Bm
  F: "[d4,f#4,b4]@3 ~ [f#4,a4,d5]@3 ~ [f#4,a4,d5]@2 [f#4,a4,e5]@4 d5@2", G: "[f#4,a4,d5]@5 ~ d4@2 f#4@2 a4@5 ~",
  H: "[e4,g4,d5]@3 ~ [e4,g4,d5]@2 [e4,g4,d5]@5 ~ [e4,g4,d5]@2 [e4,g4,d5]@2", // Em7
  I: "[c4,e4,a4]@2 [c4,e4,g4]@4 [c4,e4,g4]@4 [c4,e4,g4]@2 [c4,e4,g4]@3 ~", // Am C
  J: "[~@4 [e4,g4,b4]@3 ~ [e4,g4,c5]@3 ~ b4@2 [c4,e4,g4]@7 ~ c4@4 g4@5 ~]/2", // Em C
  K: "[f#4,a4,d5]@3 ~ [f#4,a4,d5]@2 [f#4,a4,d5]@5 ~ [a4,d5,f#5]@3 ~", // D
  L: "[a4,d5,g5]@2 [a4,d5,f#5]@4 [f#4,a4,e5]@5 ~ [f#4,a4,d5]@3 ~", // Dsus4 D F#m7 D
  M: "[f#4,a4,d5]@3 ~ [f#4,a4,d5]@2 [f#4,a4,d5]@5 ~ [f#4,a4,d5]@3 ~", N: "[f#4,a4,d5]@5 ~ d4@4 a4@4 d5@2",
  O: "[g4,c5,d5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,d5]@3 ~", // Gsus4 C Gsus4
  P: "[e4,g4,d5]@2 [e4,g4,c5]@4 [e4,g4,c5]@5 ~ [e4,g4,b4]@3 ~", Q: "[e4,g4,c5]@3 ~ [c4,e4,b4]@7 ~ [c4,e4,b4]@3 ~",
  R: "[c4,e4,g4]@7 ~ [c4,e4,b4]@7 ~", S: "[[b3,d4]@11 ~ c5@2 [d4,g4,b4]@9 ~@3 b3@4 b3@2]/2", T: "c4@5 c4@2 c4",
  U: "b3@7 ~ b3@5 ~ a4@2", V: "[f#4,a4,d5]@3 ~ [f#4,a4,d5]@3 ~ [f#4,a4,d5]@3 ~ [a4,d5,f#5]@3 ~",
  W: "[a4,d5,f#5]@11 ~ [d4,f#4,a4]@3 ~", // D
  X: "[[f#4,a4,d5]@3 ~ [f#4,a4,d5]@3 ~ [f#4,a4,d5]@3 ~ [a4,d5,f#5]@2 [a4,d5,f#5]@9 ~ [a4,d5,f#5]@7 ~]/2", // D
  Y: "[g4,c5,e5]@7 ~ [e4,g4,d5]@2 [e4,g4,c5]@5 ~", Z: "[e4,g4,c5]@2 [e4,g4,b4]@5 ~ [e4,g4,c5]@2 [e4,g4,b4]@5 ~",
  AA: "[e4,g4,c5]@3 ~ [e4,g4,b4]@3 ~ [e4,g4,c5]@2 [e4,g4,b4]@5 ~", AB: "[c4,e4,g4]@11 ~ [g4,d5]@3 ~",
  AC: "[f#4,a4,d5]@3 ~ [f#4,a4,d5]@3 ~ [f#4,a4,d5]@3 ~ [f#4,a4,c5]@3 ~", // D F#dim
  AD: "[[f#4,a4,d5]@2 [f#4,a4,d5]@2 [f#4,a4,c5]@3 ~ [f#4,a4,d5]@2 [f#4,a4,c5]@4 [f#4,a4,d5]@13 ~ [f#4,a4,d5]@2 [f#4,a4,d5]@2]/2", // D F#dim D F#dim D
  AE: "[[g4,c5,d5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,d5]@2 [g4,c5,d5]@5 ~ c5@2 [c4,e4,b4]@5 ~ [c4,e4,b4]@3 ~]/2", // Gsus4 C Gsus4 Cmaj7
  AF: "[e4,g4,c5]@3 ~ [c4,e4,b4]@11 ~", AG: "[c4,e4,g4]@11 ~ [c4,e4,g4]@2 [c4,e4,g4]@2",
  AH: "[[d4,g4,c5]@3 ~ [d4,g4,b4]@7 ~ [b3,d4,g4]@11 ~@3 g4@4 b3@2]/2", AI: "c4@5 g4@2 c4",
  AJ: "b3@3 ~ [b3,d4,g4]@3 ~ [b3,d4,g4]@7 ~", AK: "~@4 [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,b4]@3 ~",
  AL: "[c4,e4,c5]@3 ~ [c4,e4,b4]@7 ~ [c4,e4,g4]@3 ~", // C Cmaj7 C
  AM: "[[g4,c5,d5]@3 ~ b4@2 d5@5 ~ b4@2 [g4,b4,d5]@9 ~ [b3,d4,a4]@3 ~ [b3,d4,a4]@3 ~]/2", // Gsus4 G Bm7
  AN: "~@4 [c4,e4,a4]@7 ~ [c4,e4,b4]@3 ~", AO: "[e4,g4,c5]@3 ~ [g4,c5,e5]@7 ~ [g4,c5,e5]@3 ~",
  AP: "[g4,c5,d5]@3 ~ [g4,c5,d5]@7 ~ b4@2 d5@2", AQ: "[g4,b4,d5]@15 ~",
  AR: "~@4 [f#4,a4,d5]@3 ~ [f#4,a4,e5]@3 ~ [a4,d5,g5]@3 ~", // D F#m7 Dsus4
  AS: "[c5,e5,g5]@3 ~ [c5,e5,g5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,d5]@3 ~", // C Gsus4
  AT: "~@4 [g4,b4,d5]@3 ~ [d4,g4,c5]@3 ~ [d4,g4,b4]@3 ~", AU: "[d4,g4,b4]@7 b4",
  AV: "[a4,c5,e5]@2 [a4,c5,e5]@2 [a4,c5,e5]@7 ~ [a4,c5,e5]@3 ~", AW: "[g4,b4,d5]@7 ~ [d4,g4,b4]@7 ~",
  AX: "[g4,c5,e5]@5 ~ d5@2 [e4,g4,c5]@5 ~ c4@2", AY: "g4@7 ~@3 [c4,e4,a4]@2 [c4,e4,a4]@3 ~",
  AZ: "[d4,f#4]@7 ~ [a4,d5,f#5]@3 ~ [a4,d5,g5]@3 ~", BA: "[c5,e5,g5]@7 ~ [c5,f#5]@2 [c5,e5,g5]@5 ~",
  BB: "~@4 [b4,e5,g5]@11 ~", BC: "[g4,b4,f#5]@3 ~ e5@3 ~ [g4,b4,d5]@3 ~ e5@3 ~", BD: "[a3,c4]@7 ~ [c4,e4,a4]@7 ~",
  BE: "[g3@7 ~ [d4,b4]@2 g4@4 [c4,e4,g4]@9 ~@3 e4@4 c4@2]/2", BF: "d4@5 e4@2 c4", BG: "d4@10 e4@2 a4@3 ~",
  BH: "[[g4,c5,e5]@7 ~ [e4,g4,c5]@3 ~ [g4,c5,e5]@11 ~@3 [c4,e4,a4]@2 [c4,e4,a4]@3 ~]/2", // C Am
  BI: "[a4,d5,f#5]@7 ~ [a4,d5,f#5]@3 ~ [a4,d5,g5]@3 ~", BJ: "[c5,e5,g5]@7 ~ [c5,e5,g5]@7 ~", BK: "[b4,e5,g5]@15 ~",
  BL: "d4@2 e4@7 ~ d4@4 c4@2", BM: "d4@2 e4@7 ~ e4@5 ~", BN: "[b4,d5,g5]@15 ~", BO: "~@4 [d5,b5]@11 ~",
  BP: "[~@4 [b4,e5,a5]@7 ~ [b4,e5,g5]@7 ~ [g4,b4,f#5]@3 ~ [g4,b4,d5]@3 ~ [g4,b4,e5]@3 ~]/2", // Esus4 Em Gmaj7 G Em
  BQ: "[[a3,c4]@7 ~ [c4,e4,a4]@2 [c4,e4,g4]@4 [b3,d4,g4]@9 ~ [b3,d4,g4]@2 [b3,d4,g4]@4 [c4,e4,g4]@9 ~@3 e4@4 c4@2]/3", // Am C G C
  BR: "e4@5 ~ c4@4 e4@4 c4@2", BS: "e4@5 ~ c4@4 e4@2 d5@3 ~", BT: "[g4,b4,d5]@7 ~ [b3,d4,g4]@3 ~ [b3,d4,g4]@3 ~",
  BU: "[[g4,c5,d5]@3 ~ b4@2 d5@2 d5@3 ~ b4@2 [g4,b4,d5]@9 ~ [b3,d4,a4]@3 ~ [b3,d4,g4]@3 ~]/2", // Gsus4 G Bm7 G
  BV: "~@4 d5@3 ~ [d4,g4,c5]@3 ~ [d4,g4,b4]@3 ~", BW: "[a3,c4]@7 ~ [c4,e4,a4]@2 [c4,e4,g4]@5 ~",
  BX: "[a3,c4]@7 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~", BY: "[g3@7 ~ [d4,a4]@2 g4@4 [c4,e4,g4]@65 ~]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.72)

// bass · acoustic bass · "Tempo Track-3"
const bass = note(`<
  A B C@2 A B C@2 D@4 C@4 D@4 C@4 E@4 D@4 C@4 D@4 C@4 E@4 A C E@2 A C E@2 D C E@2 A B C@2 D C F@2 A B C@4 D@4 C@4 D@4
  C@4 E@4 A C E@2 A C E@2 D C E@2 A B C@2 D C F@2 A B C@2 A B C@2 E G F@2 A B C@4 D@4 C@4 D@4 C@4 E@4 A C E@2 A C E@2 D
  C E@2 A C E@2 A C E@2 D C E@2 A B C@2 D C F@2 A B C@2 A B C@2 A B H@4
>`.pickRestart({
  A: "a2@3 ~ e3@3 ~ a2@3 ~ e3@3 ~", B: "b2@3 ~ d3@3 ~ b2@3 ~ d3@3 ~", C: "c3@3 ~ e3@3 ~ c3@3 ~ e3@3 ~",
  D: "d3@3 ~ f#3@3 ~ d3@3 ~ f#3@3 ~", E: "g2@3 ~ d3@3 ~ g2@3 ~ d3@3 ~", F: "e2@3 ~ e3@3 ~ e2@3 ~ e3@3 ~",
  G: "f#2@3 ~ d3@3 ~ f#2@3 ~ d3@3 ~", H: "[[c2,c3]@63 ~]/4",
})).s("gm_acoustic_bass").gain(0.72)

// other · string ensemble 2 · "Tempo Track-5"
const string_ensemble_2 = note(`<
  ~@48 A B C@2 A B C@2 D B C@2 A E B@2 D B F@2 A E B@3 ~@21 A B C@2 A B C@2 D B C@2 A E B@2 D B F@2 A E B@2 A E B@2 C G
  F@2 A E B@3 ~@21 A B C@2 A B C@2 D B C@2 A B C@2 A B C@2 D B C@2 A E B@2 D B F@2 A E B@2 A E B@2 A E H@4
>`.pickRestart({
  A: "a2@3 ~ e3@3 ~ a2@3 ~ e3@3 ~", B: "c3@3 ~ e3@3 ~ c3@3 ~ e3@3 ~", C: "g2@3 ~ d3@3 ~ g2@3 ~ d3@3 ~",
  D: "d3@3 ~ f#3@3 ~ d3@3 ~ f#3@3 ~", E: "b2@3 ~ d3@3 ~ b2@3 ~ d3@3 ~", F: "e2@3 ~ e3@3 ~ e2@3 ~ e3@3 ~",
  G: "f#2@3 ~ d3@3 ~ f#2@3 ~ d3@3 ~", H: "[[c2,c3]@63 ~]/4",
})).s("gm_string_ensemble_2").gain(0.72)

// chords · synth strings 2 · "Tempo Track-6"
const synth_strings_2 = note(`<
  ~@48 A B C@2 D E F G H I J K L M N O P Q R S T U@2 V W ~@21 A B C@2 D E F G H I J K L M X@2 Y Z AA S T U@2 AB T U@2 AC
  AD AE AF@2 AG@3 AH@2 ~@21 A B C@2 D E F G H I J AI A B AJ@2 D E F G H I AK K L M N O P Q R S AL U@2 V AM U@2 AH AL
  AN@5
>`.pickRestart({
  A: "~@4 [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,b4]@3 ~", B: "[c4,e4,c5]@3 ~ [c4,e4,b4]@7 ~ [c4,e4,g4]@3 ~",
  C: "[[g4,c5,d5]@3 ~ b4@2 d5@5 ~ b4@2 [g4,b4,d5]@9 ~ [b3,d4,a4]@3 ~ [b3,d4,a4]@3 ~]/2", // Gsus4 G Bm7
  D: "~@4 [c4,e4,a4]@7 ~ [c4,e4,b4]@3 ~", E: "[e4,g4,c5]@3 ~ [g4,c5,e5]@7 ~ [g4,c5,e5]@3 ~",
  F: "[g4,c5,d5]@3 ~ [g4,c5,d5]@7 ~ b4@2 d5@2", G: "[g4,b4,d5]@15 ~",
  H: "~@4 [f#4,a4,d5]@3 ~ [f#4,a4,e5]@3 ~ [a4,d5,g5]@3 ~", // D F#m7 Dsus4
  I: "[c5,e5,g5]@3 ~ [c5,e5,g5]@3 ~ [g4,c5,e5]@3 ~ [g4,c5,d5]@3 ~", // C Gsus4
  J: "~@4 [g4,b4,d5]@3 ~ [d4,g4,c5]@3 ~ [d4,g4,b4]@3 ~", K: "[d4,g4,b4]@7 b4",
  L: "[a4,c5,e5]@2 [a4,c5,e5]@2 [a4,c5,e5]@7 ~ [a4,c5,e5]@3 ~", M: "[g4,b4,d5]@7 ~ [d4,g4,b4]@7 ~",
  N: "[g4,c5,e5]@5 ~ d5@2 [e4,g4,c5]@5 ~ c4@2", O: "g4@7 ~@3 [c4,e4,a4]@2 [c4,e4,a4]@3 ~",
  P: "[d4,f#4]@7 ~ [a4,d5,f#5]@3 ~ [a4,d5,g5]@3 ~", Q: "[c5,e5,g5]@7 ~ [c5,f#5]@2 [c5,e5,g5]@5 ~",
  R: "~@4 [b4,e5,g5]@11 ~", S: "[g4,b4,f#5]@3 ~ e5@3 ~ [g4,b4,d5]@3 ~ e5@3 ~", T: "[a3,c4]@7 ~ [c4,e4,a4]@7 ~",
  U: "[g3@7 ~ [d4,b4]@2 g4@4 [c4,e4,g4]@9 ~@3 e4@4 c4@2]/2", V: "d4@5 e4@2 c4", W: "e4@5 e4@2 c4",
  X: "[[g4,c5,e5]@7 ~ [e4,g4,c5]@3 ~ [g4,c5,e5]@11 ~@3 [c4,e4,a4]@2 [c4,e4,a4]@3 ~]/2", // C Am
  Y: "[a4,d5,f#5]@7 ~ [a4,d5,f#5]@3 ~ [a4,d5,g5]@3 ~", Z: "[c5,e5,g5]@7 ~ [c5,e5,g5]@7 ~", AA: "[b4,e5,g5]@15 ~",
  AB: "d4@2 e4@7 ~ d4@4 c4@2", AC: "d4@2 e4@7 ~ e4@5 ~", AD: "[b4,d5,g5]@15 ~", AE: "~@4 [d5,b5]@11 ~",
  AF: "[~@4 [b4,e5,a5]@7 ~ [b4,e5,g5]@7 ~ [g4,b4,f#5]@3 ~ [g4,b4,d5]@3 ~ [g4,b4,e5]@3 ~]/2", // Esus4 Em Gmaj7 G Em
  AG: "[[a3,c4]@7 ~ [c4,e4,a4]@2 [c4,e4,g4]@4 [b3,d4,g4]@9 ~ [b3,d4,g4]@2 [b3,d4,g4]@4 [c4,e4,g4]@9 ~@3 e4@4 c4@2]/3", // Am C G C
  AH: "e4@5 ~ c4@4 e4@4 c4@2", AI: "[g4,b4,d5]@7 ~ [b3,d4,g4]@3 ~ [b3,d4,g4]@3 ~",
  AJ: "[[g4,c5,d5]@3 ~ b4@2 d5@2 d5@3 ~ b4@2 [g4,b4,d5]@9 ~ [b3,d4,a4]@3 ~ [b3,d4,g4]@3 ~]/2", // Gsus4 G Bm7 G
  AK: "~@4 d5@3 ~ [d4,g4,c5]@3 ~ [d4,g4,b4]@3 ~", AL: "[a3,c4]@7 ~ [c4,e4,a4]@2 [c4,e4,g4]@5 ~",
  AM: "[a3,c4]@7 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~", AN: "[g3@7 ~ [d4,a4]@2 g4@4 [c4,e4,g4]@65 ~]/5",
})).s("gm_synth_strings_2").gain(0.72)

stack(acoustic_guitar_nylon, bass, string_ensemble_2, synth_strings_2)

More by Jewel