Strudelify

jack and sallys song

Danny Elfman

KeyB♭ majorTempo95 bpm
0:00/0:00
// jack and sallys song — Danny Elfman
// 95 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (2/4 at bar 1, 4/4 at bar 1, 2/4 at bar 5, 4/4 at bar 5, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5889980; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 24 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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 · trumpet · "B♭ Trumpet"
const trumpet = note("<~@7 A@7 B C D ~@2 E ~@4>".pickRestart({
  A: "[~@19 c5@8 c5@8 db5@8 eb5@8 ab4@8 bb4@8 c5@8 db5@24 bb5@8 ~ c6@9 db6@10 db6@20 c6@61 ~@16]/7", B: "~ db5 c5@6",
  C: "bb4 ab4", D: "bb4", E: "~ ab4 ab5 g5 f5@3 f5",
})).s("gm_trumpet").gain(0.17)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@20 A B@3>".pickRestart({
  A: "e5 f5 g5 ab5", B: "f5/3",
})).s("gm_trumpet").gain(0.1)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<~@7 A@7 B C D E F G H ~ I@2>".pickRestart({
  A: "[~@19 g4@8 ab4@8 bb4@16 ab4@16 c5@8 bb4@32 ~ g5@9 ab5@10 f5@81 ~@16]/7", B: "~ db5 c5 bb4 ab4@2 g4@2",
  C: "db4 ab4", D: "gb4", E: "~ bb4 ab4 g4 ab4 bb4 ab4 bb4", F: "c5", G: "db5", H: "e4 f4 g4 ab4", I: "c5/2",
})).s("gm_trumpet").gain(0.15)

// other · trumpet · "B♭ Trumpet"
const trumpet_3 = note("<~@7 A@7 B C D E F G ~@4>".pickRestart({
  A: "[~@19 f4@8 f4@8 g4@8 ab4@8 eb4@16 eb4@8 gb4@32 ~ g4@9 db5@10 c5@81 ~@16]/7", B: "~ db5 c5 bb4 ab4 g4 f4 eb4",
  C: "db4 ab4", D: "db4", E: "~ g4 f4 e4 f4 g4 f4 g4", F: "e4", G: "bb4",
})).s("gm_trumpet").gain(0.16)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft_2 = note("<~@20 A ~ B@2>".pickRestart({
  A: "g4 f4 e4@2", B: "c5/2",
})).s("gm_trumpet").gain(0.12)

// other · french horn · "Mellophone"
const french_horn = note("<A@2 B@2 C@4 D@6 ~ E F G H I J ~ K@2>".pickRestart({
  A: "[~@2 f4@18 ab4@18 bb4@18 ~ c5@7]/2", B: "[~@2 f4@9 ab4@13 f4@5 gb4@27 gb4@8]/2",
  C: "[~ bb4@9 c5@9 bb4@9 g4@9 e4@9 db4@9 f4@68 f4@5]/4",
  D: "[~@3 c5@40 ~@4 c5@4 bb4@4 ab4@4 bb4@16 ~ c5@9 db5@10 c5@81 ~@16]/6", E: "ab4 g4 f4 eb4 db4@4", F: "~ db4 f4 gb4",
  G: "f4@3 f4", H: "e4 c4@3", I: "db4", J: "c4", K: "ab4/2",
})).s("gm_french_horn").gain(0.25)

// chords · french horn · "Baritone Horn"
const french_horn_2 = note("<A@4 B@3 C@7 D E F G H I ~@2 J@2>".pickRestart({
  A: "[~@2 f3@18 ab3@18 bb3@18 ~ [f3,ab3]@36 f3@18 gb3@17, ~@93 db4@35]/4", // Fm
  B: "[~ [gb3,db4]@18 [bb3,db4]@18 ab3@9 g3@9 [g3,c4]@36 ~@5, ~@37 c4@18 ~@41]/3", // Gb5 Bbm C5
  C: "[~@19 bb3@4 ab3@4 g3@4 f3@4 eb3@4 db3@4 ab3@24 c4@8 c4@12 db4@2 c4@2 bb3@16 ~ bb3@9 g3@5 ab3@5 c4@81 ~@16, ~@43 eb3@32 ~@149]/7",
  D: "~ [e3,g3] [f3,ab3] [g3,bb3]", E: "bb3 ab3, f3", F: "[eb3,gb3] [f3,ab3] [gb3,bb3] [ab3,c4] [bb3,db4]@12",
  G: "[f3,c4]@3 f3", H: "e3 f3 g3 ab3", I: "f3", J: "[c4,e4]/2",
})).s("gm_french_horn").gain(0.24)

// bass · tuba · "Euphonium"
const bass = note("<A@7 B@7 ~ C D E F G ~@2 H@2>".pickRestart({
  A: "[~@2 f3@18 f3@18 g3@18 ~ f3@36 db3@54 g3@18 g3@9 ab3@5 bb3@4 ab3@36 ~@5]/7",
  B: "[~@27 eb3@4 db3@4 c3@4 bb2@4 eb3@32 db3@32 ~ g3@4 f3@4 ~ eb3@5 db3@5 c3@81 ~@16]/7",
  C: "ab3 g3 f3 eb3 db3 c3 bb2 ab2", D: "gb2", E: "c3@3 f2", F: "e2 f2 g2 ab2", G: "bb2", H: "f3/2",
})).s("gm_tuba").gain(0.25)

// bass · tuba · "B♭ Tuba"
const bass_2 = note("<~ A@6 ~ B@6 C D E F G D ~@2 H@2>".pickRestart({
  A: "[~@25 c3@36 gb2@36 db3@4 c3@5 bb2@5 ab2@4 g2@18 e2@18 f2@36 ~@5]/6",
  B: "[~@3 bb2@8 ab2@32 gb2@32 ~ [c2,c3]@4 [bb1,bb2]@4 ~ [ab1,ab2]@5 [g1,g2]@5 [f1,f2]@81 ~@16]/6", C: "~ c2", D: "db2",
  E: "gb1", F: "f2", G: "e2 f2 g2 ab2", H: "[f1,f2]/2",
})).s("gm_tuba").gain(0.2)

stack(trumpet, trumpet_soft, trumpet_2, trumpet_3, trumpet_soft_2, french_horn, french_horn_2, bass, bass_2)

More by Danny Elfman