Strudelify
One More Try cover art

Faith

One More Try

Michael George

KeyF majorTempo40 bpm
0:00/0:00
// One More Try — Michael George
// 40 bpm, 4/4, key F 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 57 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(40/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 · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@3 A B C D@4 E@3 F G@4 H@3 I C J@2 K@2 L@3 M@3 N O P@4 Q@3 R S T U B V W@2 X Y Z@2 AA@3
>`.pickRestart({
  A: "~@24 [c3,e5]@3 [d3,f5]@2 [e3,g5]@3", B: "[f5,a5] [e5,g5], c5", C: "d5@16 ~@13 eb5@3, a4, f5@29 ~@3, ~ c5",
  D: "[[bb4,d5]@16 a4@16 ~@29 bb5@3 [f5,a5]@16 ~@16 [db5,bb5]@16 [d5,f5,a5]@8 [c5,eb5,g5]@8, f5@4 [d5,g5]@3 c5@5 ~@4, ~@2 c5@4 bb4@2 ~@3 e5@3 ~@2, ~@7 e5 ~@2 g5@4 ~@2]/4", // Bb F Gb Dm Cm G5
  E: "[[bb4,d5]@2 a4@2 ~@2 bb4 [e5,a5] f5@2 [e5,g5]@2, f5@4 [d5,g5]@3 a4@3 ~@2, ~@2 c5@4 ~ c5@5]/3", // Bb A5 Em G5
  F: "d5@16 c5@13 eb5@3, a4, f5@29 ~@3",
  G: "[[f4,bb4,d5]@16 ~@13 a5@3 g4@8 g5@8 ~@8 e5@8 f5@16 ~@16 bb5@7 ~ bb5@3 ~@2 db5@2 ~ d5@8 eb5@5 [a4,c5]@3, ~@16 c5@32 bb4@16 ~@16 e5@32 [a4,c5]@13 ~@3, ~@16 [a4,f5]@16 d5@24 c5@40 db5@11 a5@5 ~@16, ~@29 ab5 ~@18 a5@48 g5@16 ~@16]/4", // Bb Am Dm
  H: "[[bb4,d5]@16 [a4,c5]@16 b4@16 bb4@13 [bb4,d5]@2 ~ [a4,c5]@13 [f4,a4,c5]@3 [d4,f4,bb4]@8 [c4,e4,g4]@8, f5@61 f5@15 ~@20, ~@32 d5@29 ~@35]/3", // Bb Am Bb Am F Bb C
  I: "[f5,a5]@16 e5@11 ~@2 e5@3, c5, ~ g5, ~@27 c6@4 ~", // F
  J: "[[bb4,d5]@16 ~@11 g5@2 a5@3 ~@27 a5@2 bb5@3, f5@27 ~@5 g5@27 ~@5, ~ c5@2 bb4, ~@2 a4@2 d5@3 [c5,e5]]/2", // Bb C
  K: "[[f5,a5,c6]@16 [c5,g5]@15 [ab5,a5] [db5,bb5]@15 a5 [d5,f5,a5]@8 ~@3 c6 ~ a5@3, ~@16 e5@32 g5 ~@7 [c5,eb5,g5]@8]/2", // F C5 Amaj7 Gb Dm Cm
  L: "[[bb4,d5]@2 a4@2 g5@2 a5 [e5,g5] [f5,a5]@2 [e5,g5]@2, f5@4 d5@3 c6@5, ~ c5@2 bb4 ~@2]/3", // Bb Em F Em
  M: "[d5@16 c5@16 [bb4,d5]@16 a4@16 ~@24 g5@3 a5@2 bb5@3, f5@8 [d5,g5]@3 [c5,e5], a4@2 ~ c5@2 bb4]/3", // Bb G5 C
  N: "[f5,a5]@5 f5@3 a5@3 ~@2 [g5,a5]@2 bb5 ~@8 g6@5 ~ g6 [c6,e6], c5@16 [e5,g5,c6]@15 ~, ~@11 f5@6 ~@2 e6@11 ~@2", // F Gsus2 C
  O: "[bb4,db5,e5]@2 [f4,d5] [c5,eb5], g5 ~@15 a4@16", // Bbdim Dm Cm
  P: "[[bb4,d5]@16 [a4,c5]@16 b4@16 bb4@16 [a4,c5]@13 [f4,a4,c5]@3 [f4,bb4,d5]@8 [e5,g5]@8 [f5,a5]@16 [e5,g5]@16, f5@77 ~@51, ~@4 d5@4 ~@3 c5@5]/4", // Bb Am F Bb Em F Em
  Q: "[d5@16 c5@11 ~@2 eb5@3 bb4@16 ~@13 a5@3 g5@16 [bb4,d5]@8 ~@3 a5@2 bb5@3, [a4,f5]@32 f5@31 ~ f5@24 ~@8, ~@27 d5@21 c5@32 ~@16, ~@48 a4@17 ~@23 [bb4,c5,e5]@8]/3", // Bb Dm C7
  R: "[f5,a5]@16 g5@8 a5@3 bb5@2 c6@3, c5, ~ e5", // F
  S: "~@8 bb5@8 [d5,f5,a5]@8 ~@5 [f5,a5]@3, [db5,e5,g5]@2 ~ [c5,eb5,g5]", // Dm F Dbdim Cm
  T: "[bb4,d5]@16 ~@3 c6@8 a5@2 f5@3, f5@29 ~@3, ~ [a4,c5]", // Bb Am
  U: "[g4,d5]@8 g5@8 [d5,a5]@8 [bb4,c5,e5,a5]@3 [f6,g6,a6,b6] [g5,a5,b5,c6,d6,e6] [b4,c5,d5,e5,f5] [d4,e4,f4,g4,a4] [b3,c4], c5 ~, ~ bb4@2 ~", // G5 D5 Am G7 Cmaj7 Bdim Dm Cmaj7
  V: "d5@16 ~@11 g5@2 a5@3, a4, f5@27 ~@5, ~ c5",
  W: "[[bb4,d5]@16 a4@16 ~@27 a5@2 bb5@3, f4@32 g5@27 ~@5, ~ c5@2 bb4, ~@4 d5@3 [c5,e5]]/2", // Bb C
  X: "[f5,a5]@16 ~@3 e6@8 d6@5, c6, ~ [e5,g5]", Y: "[db5,e5,g5,bb5]@16 [d5,f5,a5]@8 g5@3 c6@2 a5@3, ~@3 [c5,e5]",
  Z: "[f5@13 g5@3 f4@8 ~@8 b4@16 bb4@16, [bb4,d5] [a4,c5] d5@2, ~@3 f5@5]/2", // Bb Am
  AA: "[c5@8 ~@5 [e4,g4]@3 [bb3,d4,f4]@13 [e4,g4]@3 [f4,a4]@13 [e4,g4]@3 [bb3,d4,f4]@13 [e4,g4]@3 ~ [f4,a4]@24 ~@7, [f4,a4]@7 ~@41, ~@8 c4@8 ~@13 c4@19 ~@13 c4@27 ~@8]/3", // Em Bb Em F Em Bb Em F
})).s("gm_percussive_organ").gain(0.22)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B C D E F C G H I J K L M J N O P Q R S T U J V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO Y AP AQ M J
  AR AS AT AU
>`.pickRestart({
  A: "f2 e2", B: "d2@16 c2@13 b1@3", C: "bb1@14 g1 ab1 a1@15 ab1", D: "g1@15 b1 c2@8 e1@8", E: "f1@8 f2@7 f2 e2@16",
  F: "db2@14 ~ db2 d2@8 c2 ~@2 f2 ~ f1@3", G: "g1@2 ~ g1@2 g1@3 g2@3 g1@2 g1@3 c2@8 c3@2 ~ e1@2 e1@3",
  H: "f1@8 f2@8 e2@15 e2", I: "d2@15 a1 c2@13 b1@3", J: "bb1@14 g1 ab1 a1@16", K: "g1@7 ~ g2@7 g1 c2@8 e1@8",
  L: "f1 f2 e2@2", M: "db2@15 db2 d2@8 c2 ~@2 f2 ~ f1@3", N: "b1@16 bb1@8 d2@3 f2@2 g2@3",
  O: "f2@8 f1@5 f1@2 ~ f1@2 ~ f1@2 f1@2 ~ f1@2 ~ f1@2 f1@3", P: "f2@15 g2 e2@14 c2 db2, ~@16 f2 ~@15",
  Q: "d2@15 a1 c2@12 a1 b1@3", R: "bb1@14 g1 ab1 a1@15 a1", S: "g1@14 g1 a1 c2@6 g1 f1 e1@8",
  T: "f1@8 f2@6 g2 f2 e2@16", U: "db2@15 db2 d2@8 c2@3 f2@2 f1@3",
  V: "g1@2 ~ g1@2 g2@3 g1@2 ~ g1@2 g1@3 c2@3 g2@2 c3@3 [g3,c4]@3 e1@2 e1@3", W: "f1@8 f2@8 e2@14 c2 db2",
  X: "d2@15 a1 c2@7 e2 f2@5 f1@3", Y: "bb1@14 g1 ab1 a1@15 f1", Z: "g1@7 g1 g2@6 bb1 b1 c2@7 c2 e1@2 ~ f1@2 g1@2 ~",
  AA: "f1@15 f2 e2@8 g2@3 [e3,g3]@4 ~", AB: "db2@8 db3@7 db2 d2@8 c2@2 ~ f2@2 f1@3", AC: "bb1@14 g1!2 a1@14 ~ a1",
  AD: "b1@15 a1 bb1@15 e1", AE: "f1@8 f1@5 f1@2 ~ f1@2 ~ f1@2 f1@2 ~ f1@2 ~ f1@2 f1@3", AF: "f2@7 f1 f2@8 e2@16",
  AG: "d2@16 c2@12 a1 b1@3", AH: "bb1@8 bb1@6 g1 ab1 a1@15 ab1", AI: "g1@16 c2@7 ~ c2@3 d2@2 e2@3",
  AJ: "f2@14 g2 f2 e2@16", AK: "db2@15 db2 d2@7 a1 c2@3 f2 ~ f1@3", AL: "bb1@12 f1 g1@2 ab1 a1@15 g2",
  AM: "bb2 g2 g3 ~ d2 g2@2 ~ g1@3 d2@2 g2@3 c2@3 g2@2 c3@2 ~ c3@3 e1@2 e1@3, ~@3 g2@2 ~@27",
  AN: "f2@7 e1 f1@2 ~@5 f2 e2@16", AO: "d2@15 a1 c2@13 a1@3", AP: "g1@7 g1 g2@7 g1 c2@7 g1 c2@3 d2@2 e2@3",
  AQ: "f2@7 e1 f1 ~@6 f2 e2@16", AR: "b1 bb1", AS: "f1@8 f1@7 ~ f1@7 f1 f2@5 f1@2 ~", AT: "f1@15 f1 f1@8 ~@5 e1@3",
  AU: "~ f1@23 ~@8",
})).s("gm_fretless_bass").gain(0.44)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B@2 C D B@2 C E@2 F G@2 H I@3 J K@4 L@2 M N@2 O@2 A B@2 P Q R S@4 T U V W X Y Z A AA@3 D AB Y AC@4
>`.pickRestart({
  A: "[f3,f4,a4] [e3,e4,g4], c4", B: "[[d3,d4] [c3,c4] [bb2,bb3,d4] [a2,a3,c4], f4, a3 ~]/2",
  C: "[g2,c4]@2 ~ e4, g4, d4@3 ~, ~ [c3,bb3]", D: "[f3,a3,c4,f4] [e3,c4,e4,g4]",
  E: "[[f3,a3,c4,f4]@2 c4@2 db4@2 [d3,d4,f4] [c3,c4,eb4], ~ [e3,e4,g4]@2 a3]/2", F: "[bb2,bb3,d4] [a2,a3,c4], f4",
  G: "[[g2,c4,g4]@2 f4 e4 [f3,a3,f4]@2 [e3,c4,e4,g4]@2, d4@3 c4@3 ~@2, ~ [c3,bb3] ~@2]/2", // C5 F C C7
  H: "[d3,d4]@16 ~@13 eb4@3, a3, f4@29 ~@3, ~ [c3,c4]", // D C
  I: "[[bb2,bb3,d4]@2 [a2,a3]@2 [g3,d4] [c4,g4] f4 e4 [f3,f4]@2 [e3,e4]@2, f4@2 g2 [c3,bb3] a3@2, ~@2 c4@3 d4@2 c4@5]/3", // Bb A G5 C5 F E C7
  J: "[db3,bb3,e4,g4]@2 [d3,d4,f4] [c3,c4,eb4], ~ a3", // Dbdim Dm Cm
  K: "[[bb2,bb3,d4]@16 [a2,a3,c4]@16 [b2,b3]@16 [bb2,bb3]@16 a3@13 [g3,e4]@3 [bb3,d4]@8 [g3,c4]@8 [a4,f5]@16 [e3,g4,e5]@16, f4@77 ~@19 c4@32, ~@2 d4@2 [f3,c4] f3@2 ~]/4", // Bb Am B Bb C Bb C5 Dm …
  L: "[[d3,d5] [c3,c5] [bb2,bb3,d5] [a2,a3,c5], f4, a3 ~]/2", M: "[g2,c4,g4,d5]@2 d4 e4, ~ [c3,bb3,g5]",
  N: "[[f3,a4,f5]@2 e3@2 [db3,bb3]@2 [d3,d4,a4,f5] [c3,c4,g4,eb5], c4 ~, ~ [g4,e5]@2 ~]/2", // F Gb Dm Cm C
  O: "[[bb2,d4,bb4]@2 [a2,a4]@2 [g2,g4]@2 a4 [e4,c5], f5@4 d5@3 ~, ~ c4@2 [c3,bb3]]/2", // Bb A G C C7
  P: "[g2,c4]@2 ~ [c4,e4], [d4,g4]@3 ~, ~ [c3,bb3]", Q: "[f3,c4,f4,a4]@2 [g4,c5] [c5,g5], ~ [e3,e4]",
  R: "[db3,g4,bb4,e5]@2 [d3,d4,a4,f5] [c3,c4,g4,eb5]", // Dbdim Dm Cm
  S: "[[bb2,bb3,d5]@16 [a2,a3,c5]@16 [b2,d4,b4]@16 [bb2,bb3,d4]@16 [a3,c4]@13 [c4,a4]@3 [d4,bb4]@8 [e4,g4,c5]@8 [f4,a5]@16 [e3,e4,g5]@16, f4@48 f4@29 f4@11 ~@8 c5@32, ~@4 f3@3 ~]/4", // Bb Am Bm Bb Am F Gm C …
  T: "[d3,d4]@16 ~@11 g5@2 a5@3, a4, f5@27 ~@5, ~ [c3,c4]", U: "[bb2,d4,bb4] [a2,c4,a4], f5",
  V: "[g2,d4,c5]@16 d5@8 ~@3 a5@2 bb5@3, g5@27 ~@5, ~ [c3,bb3], ~@3 e5", W: "[f3,a4,f5] [e3,g4,e5], c6",
  X: "[db3,bb3,g4,e5]@2 [d3,d4,a4,f5] [c3,c4,g4,eb5]", Y: "[bb2,bb3,d5] [a2,a3,c5], f4",
  Z: "[g2,c4,g4,d5]@2 [d4,a4] [e4,g4], ~ [c3,bb3]", // Gsus4 D5 Em C7
  AA: "[[d3,d4]@2 [c3,c4]@2 [bb2,bb3,d4]@2 c4 f4 [g2,d4,g4]@2 ~ g4, f4@7 c5@4 ~, a3@2 ~ [a2,a3] ~ [c3,bb3,e4]]/3", // D C Bb G5 A C7
  AB: "[db3,e4,bb4,g5]@2 [d3,d4,a4,f5] [c3,c4,g4,eb5]", // Dbdim Dm Cm
  AC: "[[b2,b4]@16 [bb2,bb4]@16 [c4,a4]@13 [e4,g4,c5]@3 [d4,f4,bb4]@13 [e4,g4]@3 [f4,a4]@13 [e4,g4,c5]@3 [d4,f4,bb4]@13 [g3,e4]@3 ~ [f2,a3,f4]@23 ~@8, f5@45 ~@16 c4@16 ~@16 c4@27 ~@8, d4@32 f3@65 ~@31]/4", // B Bb F C Bb Em F C …
})).s("gm_string_ensemble_1").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@4 [x ~@15 x ~@12 x ~@2]!52 [~ x ~@30]>").gain(0.49)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!52 ~>").gain(0.49)

// drums · ride
const ride = s("rd").struct("<~@4 [~@3 x!3 ~@5 x!3 ~@5 x!3 ~@5 x!3 ~@2]!52 [~ x ~@30]>").gain(0.27)

stack(percussive_organ, bass, string_ensemble_1, kick, snare, ride)

More by Michael George