Strudelify

its a beautiful day

Michael Bublé

KeyD♭ majorTempo150 bpm
0:00/0:00
// its a beautiful day — Michael Bublé
// 150 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5905852; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// other · flute
const flute = note("<~@4 A@3 B C D E@2 F G H B I@2 J@2 ~@8 K@2 L@2 M N M O@4 P@2 N M Q@4 R@2 N S T ~>".pickRestart({
  A: "[~@12 db5@3 ~ eb5@2 f5@3 ~ ab5@11 ~ ab5@2 bb5@3 ~ c6@6 db6@8 c6@3 ~ bb5@6 ab5@2 f5@6]/3",
  B: "gb5@3 ~ ab5@2 f5@3 ~ gb5@6 ab5@2 bb5@6", C: "ab5@9 ~ db5@2 db5@3 ~ eb5@2 f5@6",
  D: "eb5@9 ~ db5@2 db5@3 ~ eb5@2 f5@3 ~ ab5@2", E: "[f5@6 db5@3 ~ bb4@8 f5@3 ~ eb5@8 db5@3 ~ ab4@11 ~@3]/2",
  F: "~@3 eb6!3", G: "c6@9 ~ c6@2 bb5@3 ~ c6@2 bb5@3 ~ c6@2", H: "db6@6 c6@3 ~ bb5@6 ab5@2 f5@3 ~ f5@2",
  I: "[ab5@9 ~ db5@2 db5@3 ~ eb5@2 f5@3 ~ eb5@14 db5@3 ~ eb5@2 f5@3 ~ ab5@2]/2",
  J: "[f5@6 db5@3 ~ bb4@8 f5@3 ~ eb5@8 db5@3 ~ ab4@8 ~@6]/2", K: "[[gb4,bb4]@23 ~]/2", L: "[[eb4,c5]@23 ~]/2",
  M: "db6@23 ~", N: "c6@23 ~", O: "[~@4 ab5@2 bb5@3 ~ db6@2 ~@4 ab5@2 bb5@3 ~ db6@25 ~]/2",
  P: "[~@4 ab5@2 bb5@3 ~ db6@6 eb6@2 ~@4 db6@25 ~]/2",
  Q: "[~@4 ab5@2 bb5@3 ~ db6@2 ~@4 ab5@2 bb5@3 ~ db6@19 ~ eb6@3 ~ db6@8 eb6@3 ~ f6@8 db6@3 ~ gb6@25 ~]/4",
  R: "[~@4 f6@2 gb6@3 ~ ab6@8 f6@3 ~ db6@25 ~]/2", S: "db6@11 ~ f5@11 ~", T: "eb5@23 ~",
})).s("gm_flute").gain(0.3)

// chords · piano
const piano = note("<~@20 A@2 B C A@2 B C D@2 E@2 F@2 G H@4 I F@2 G H@2 J K L@2 ~@4>".pickRestart({
  A: "[bb2,bb3]@23 ~", B: "[a2,a3]@23 ~", C: "[f2,f3]@23 ~", D: "[gb4,bb4,db5]!4", E: "[ab4,c5,eb5]!4",
  F: "[~@6 [f4,ab4,db5]@3 ~ [f4,ab4,db5]@2 [f4,ab4,db5]@3 ~ [f4,ab4,db5]@2 [f4,ab4,db5]@3 ~ [eb4,ab4,c5]@25 ~]/2", // Db Ab
  G: "[f4,bb4,db5]@23 ~", H: "[~@4 ab4@2 bb4@3 ~ db5@2 ~@4 ab4@2 bb4@3 ~ db5@25 ~]/2",
  I: "~@4 ab4@2 bb4@3 ~ db5@6 eb5@2 ~@4 db5@2", J: "~@3 f5, ~@6 ab4@17 ~, ~@12 db5@11 ~", K: "[bb4,db5,gb5]@23 ~",
  L: "[~@4 f5@2 gb5@3 ~ ab5@8 f5@3 ~ db5@25 ~]/2",
})).s("gm_piano").gain(0.3)

// other · glockenspiel
const glockenspiel = note("<A@2 B@2 C ~@15 D E F G D E F G ~@2 H I ~@3 J@4 K@2 ~@2 L@4 M@2 ~@4>".pickRestart({
  A: "[f6@2 db7@3 f6 b6@3 f6@2 bb6@3 f6 ab6@9]/2", B: "[c6@2 ab6@3 c6 gb6@3 c6@2 f6@3 c6 eb6@9]/2", C: "db6",
  D: "[f6,bb6] f6 [f6,bb6] f6", E: "[f6,bb6]@3 f6@3 bb6@2 c7 db7@3", F: "[f6,a6] f6 [f6,a6] f6",
  G: "[eb6,a6] eb6 [eb6,a6] eb6", H: "ab7 bb7", I: "c8 ~", J: "[~@2 ab6 bb6@2 db7 ~@2 ab6 bb6@2 db7@13]/2",
  K: "[~@2 ab6 bb6@2 db7@3 eb7 ~@2 db7@13]/2",
  L: "[~@2 ab6 bb6@2 db7 ~@2 ab6 bb6@2 db7@10 eb7@2 db7@4 eb7@2 f7@4 db7@2 gb7@13]/4",
  M: "[~@2 f7 gb7@2 ab7@4 f7@2 db7@13]/2",
})).s("gm_glockenspiel").gain(0.3)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  A@2 B C A B D E A B D E A B D E A B D E F@2 G H F@2 G H E@2 B@2 I B J B E I E K I B J B E I E I E L J B ~
>`.pickRestart({
  A: "[ab2,db3,f3]!4", B: "[ab2,c3,eb3]!4", C: "[ab2,c3,eb3,gb3]!4", D: "[bb2,db3,f3]!4", E: "[gb2,bb2,db3]!4",
  F: "[db3,f3,bb3]", G: "[db3,f3,a3]", H: "[c3,eb3,a3]", I: "[f2,ab2,db3]!4", J: "[f2,bb2,db3]!4",
  K: "[f2,ab2,db3]!2 [ab2,c3,eb3]!2", L: "[f2,a2,c3,eb3]!4",
})).s("gm_acoustic_guitar_steel").gain(0.13)

// chords · string ensemble 1 · "String Synthesizer"
const string_ensemble_1 = note("<~@32 A B C B D A D E A B C B D A D A D F G B ~>".pickRestart({
  A: "[f4,ab4,db5]", B: "[ab4,c5,eb5]", C: "[f4,bb4,db5]", D: "[gb4,bb4,db5]", E: "[f4,ab4,db5] [ab4,c5,eb5]",
  F: "[f4,a4,c5,eb5]", G: "[bb4,db5,f5]",
})).s("gm_string_ensemble_1").gain(0.13)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A@2 B C D ~@2 E F G H I J K L M J K N O P Q R S T Q U V W X Y Z AA AB AC AD AE AF AE AG AA AB AC AH AI AJ AK AL AM AN
  AO B ~
>`.pickRestart({
  A: "db2/2", B: "ab1", C: "c2 eb2", D: "db2", E: "~@11 gb1", F: "db2@2 ~@9 db2", G: "ab1@2 ~@9 ab1",
  H: "bb1@2 ~@9 bb1", I: "gb1@2 ~@9 gb1", J: "db2@3 ~@2 db2 ab1@3 db2@3", K: "ab1@3 ~@2 ab1 ab1@3 ab1@3",
  L: "bb1@3 ~@2 bb1 f1@3 bb1@3", M: "gb1@3 ~@2 gb1 gb1@3 bb1@3", N: "bb1@3 ~@2 bb1 bb1@3 gb1@3",
  O: "gb1@3 ~@2 gb1 gb1@3 ab1@3", P: "bb1 db2 f1@2", Q: "bb1 db2 f2 bb1", R: "a1 db3 a2@2", S: "f2 c2", T: "f1!2",
  U: "db3 a2", V: "f2@2 db2 f1", W: "gb1!4", X: "gb1!3 bb1", Y: "ab1!4", Z: "ab1!12", AA: "db2@6 db2@5 ab1",
  AB: "ab1 bb1 c2 eb2", AC: "bb1@6 bb1@5 ab1", AD: "ab1 bb1 ab1 g1", AE: "gb1@6 gb1@5 eb2", AF: "db2 eb2 f2 gb2",
  AG: "db2@3 f2@2 db2 ab2@3 ab1@3", AH: "ab1 f2 eb2 ab1", AI: "gb1 ab1 bb1 c2", AJ: "db2 eb2 f2 db2",
  AK: "gb1@3 gb1@3 gb1@3 gb1@2 ab1", AL: "db2 eb2 e2 f2", AM: "gb2 f2 db2 gb1", AN: "f1 gb1 ab1 db2",
  AO: "bb1 c2 db2 eb2",
})).s("gm_electric_bass_finger").gain(0.3)

// drums · kick
const kick = s("bd").struct("<A@4 ~@3 B C@4 D@8 E@10 A@2 E@20 ~>".pickRestart({
  A: "x!4", B: "~@11 x", C: "x ~@10 x", D: "x ~@4 x!2 ~@5", E: "x!2",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<A B A C ~@4 D@4 E@8 F@8 E@2 B C E@20 ~>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!12", D: "~ x ~@2", E: "~ x ~ x", F: "~@3 x ~@4 x!2 ~@2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!4]!27 ~@22>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<[~ x!3] [x!4] [~ x!3] ~@50>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<x ~ x ~@29 [x!4]!20 ~>").gain(0.3)

stack(flute, piano, glockenspiel, acoustic_guitar_steel, string_ensemble_1, bass, kick, snare, hihat, open_hat, crash)

More by Michael Bublé