Strudelify
Popcorn cover art

28 Big Ones

Popcorn

Hot Butter

KeyB minorTempo132 bpm
0:00/0:00
// Popcorn — Hot Butter
// 132 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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 · lead 1 square
const lead_1_square = note(`<
  ~@3 A B C D E B C D F G H I J G H I K L M N O L M P Q R S T U R S V W ~@15 A L M N O L M P Q R S T U R S V W ~@3 A L M
  N O L M P Q R S T U R S V W ~@15 A L M N O L M P Q R S T U R S V W ~@8 X
>`.pickRestart({
  A: "~@12 b5 ~ a5 ~", B: "b5 ~ f#5 ~ d5 ~ f#5 ~ b4 ~@3 b5 ~ a5 ~", C: "b5 ~ f#5 ~ d5 ~ f#5 ~ b4 ~@3 b5 ~ c#6 ~",
  D: "d6 ~ c#6 ~ d6 ~ b5 ~ c#6 ~ b5 ~ c#6 ~ a5 ~", E: "b5 ~ a5 ~ b5 ~ g5 ~ b5 ~@3 b5 ~ a5 ~",
  F: "b5 ~ a5 ~ b5 ~ c#6 ~ d6 ~@3 f#6 ~ e6 ~", G: "f#6 ~ d6 ~ a5 ~ d6 ~ f#5 ~@3 f#6 ~ e6 ~",
  H: "f#6 ~ d6 ~ a5 ~ d6 ~ f#5 ~@3 f#6 ~ g#6 ~", I: "a6 ~ g#6 ~ a6 ~ f#6 ~ g#6 ~ f#6 ~ g#6 ~ e6 ~",
  J: "f#6 ~ e6 ~ f#6 ~ d6 ~ f#6 ~@3 f#6 ~ e6 ~", K: "f#6 ~ e6 ~ f#6 ~ d6 ~ f#6 ~@3 b5 ~ a5 ~",
  L: "b5 ~ f#5 ~ d5 f#5 ~ b4 ~@4 b5 ~ a5 ~", M: "b5 ~ f#5 ~ d5 f#5 ~ b4 ~@4 b5 ~ c#6 ~",
  N: "d6 ~ c#6 d6 ~ d6 b5@2 c#6 ~ b5 c#6 ~ c#6 a5@2", O: "b5 ~ a5 b5 ~ b5 g5 ~ b5 ~@3 b5 ~ a5 ~",
  P: "d6 ~ c#6 d6 ~ d6 b5 ~ c#6 ~ b5 c#6 ~ c#6 a5@2", Q: "b5 ~ a5 b5 ~ b5 c#6 ~ d6 ~@3 f#6 ~ e6 ~",
  R: "f#6 ~ d6 ~ a5 d6 ~ f#5 ~@4 f#6 ~ e6 ~", S: "f#6 ~ d6 ~ a5 d6 ~ f#5 ~@4 f#6 ~ g#6 ~",
  T: "a6 ~ g#6 a6 ~ a6 f#6@2 g#6 ~ f#6 g#6 ~ g#6 e6@2", U: "f#6 ~ e6 f#6 ~ f#6 d6 ~ f#6 ~@3 f#6 ~ e6 ~",
  V: "a6 ~ g#6 a6 ~ a6 f#6 ~ g#6 ~ f#6 g#6 ~ g#6 e6 ~", W: "f#6 ~ e6 f#6 ~ f#6 d6 ~ f#6 ~@7", X: "b5 ~@7",
})).s("gm_lead_1_square").gain(0.43).pan(0.6)

// other · marimba · "Arpegio"
const marimba = note("<~@36 A@2 B C A@2 B D E@2 F G H I J K ~@36 A@2 B C A@2 B D E@2 F G H I J K ~@25>".pickRestart({
  A: "~@2 b5 d6 b6 f#6 d6 b5 ~@2 b5 d6 b6 f#6 d6 b5", B: "~@2 b5 d6 b6 f#6 d6 b5 ~@2 a5 c#6 a6 e6 c#6 a5",
  C: "~@2 g5 b5 g6 d6 b5 g5 ~@2 f#5 ~ f#6 d6 b5 f#5, ~@11 b5@2 ~@3",
  D: "~@2 g5 b5 g6 d6 b5 g5 ~@3 b5 f#6 d6 b5 f#5, ~@5 f#5 ~@2", E: "~@2 d6 f#6 d7 a6 f#6 d6 ~@2 d6 f#6 d7 a6 f#6 d6",
  F: "~@2 a5 c#6 f#6 c#6 ~ c#6 ~@2 e5 g#5 b5 g#5 e5 g#5, ~@3 a5 ~@4",
  G: "~@2 d5 f#5 a5 f#5 d5 f#5 ~@2 d5 f#5 a5 f#5 d5 f#5", H: "~@2 d6 f#6 a6 f#6 d6 f#6 ~@2 d6 f#6 d7 a6 f#6 a6",
  I: "~@2 d6 f#6 d7 a6 f#6 a6 ~@2 d6 f#6 d7 a6 f#6 d6", J: "~@2 d6 f#6 a6 f#6 c#6 f#6 ~@2 b5 e6 g#6 e6 b5 e6",
  K: "~@2 a5 d6 f#6 d6 a5 d6 ~@2 a5 d6 f#6 d6 a5 d6",
})).s("gm_marimba").gain(0.36)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@20 A@2 B C A@2 B C D E F G D E F G A@2 B C A@2 B C D E F G D E F G A@2 B C A@2 B C D E F G D E F G A@6 B C A@2 B C D
  E F G D E F G A@2 B C A@2 B C D E F G D E F G A@2 B C A@2 B C D E F G D E F G A@8 H
>`.pickRestart({
  A: "b2 f#2 b2 f#2", B: "d3 b2 c#3 a2", C: "b2 g2 b2 f#2", D: "d3 a2 d3 a2", E: "d3@4 a2@4 d3@4 a2@3 ~",
  F: "a2 f#2 g#2 e2", G: "f#2 d2 f#2 d2", H: "b1@3 ~@13",
})).s("gm_acoustic_bass").gain(0.3).pan(0.4)

// bass · synth bass 1 · "Synthbas"
const bass_2 = note(`<
  A@4 B@2 C D B@2 C D E@2 F G E@2 F H B@2 C D B@2 C D E@2 F G E@2 F H B@2 C D B@2 C D E@2 F G E@2 F H B@2 C D B@2 C D
  E@2 F G E@2 F H B@6 C D B@2 C D E@2 F G E@2 F H B@2 C D B@2 C D E@2 F G E@2 F H B@2 C D B@2 C D E@2 F G E@2 F H B@8 I
>`.pickRestart({
  A: "b1 ~ b2 f#2 b1 ~ b2 f#2 b1 ~ b2 f#2 b1 d#2 e2 f#2", B: "b1 ~ b2 f#2 b1 ~ b2 f#2 b1 ~ b2 f#2 b1 ~ b2 f#2",
  C: "d3 ~ d3!2 f#2 c#3 d3 b2 c#3 ~ c#3!2 e2 b2 c#3 a2", D: "b2 ~ b2!2 g2 a2 b2 g2 b2 ~ f#2 b1 b2 ~ f#2 b1",
  E: "d2 ~ d3 a2 d2 ~ d3 a2 d2 ~ d3 a2 d2 ~ d3 a2", F: "a2 ~ a2!2 f#2 g#2 a2 f#2 g#2 ~ g#2!2 e2 f#2 g#2 e2",
  G: "f#2 ~ f#2!2 d2 e2 f#2 d2 f#2 ~ f#2!2 d2 f#2!2 d2", H: "f#2 ~ f#2!2 d2 e2 f#2 d2 f#2 ~ f#2!2 d2 e2 f#2 d2",
  I: "b1 ~@7",
})).s("gm_synth_bass_1").gain(0.33)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A@4 ~@16 B@2 C D@3 E F G@2 H I G@2 H I J K L J@2 K L J M N O P M Q O R B@2 C D@3 E F G@2 H I G@2 H I ~@4 B@2 C D@3 E F
  G@2 H I G@2 H I J K L J@2 K L J M N O P M Q O R B@2 C D@3 E F G@2 H I G@2 H I ~@8 S
>`.pickRestart({
  A: "[[b5,b6]@63 ~]/4", B: "[d5,f#5,b5]/2", C: "[d5,f#5,b5]@7 ~ [c#5,e5,a5]@8",
  D: "[g5 [d5,f#5]@5, b4@47 ~, e5 ~@47]/3", E: "[b4,f#5] [c#5,e5,a5], d5@3 ~@5", F: "[e5,g5]@8 [d5,f#5]@7 ~, b4@7 ~",
  G: "[[f#5,a5,d6]@31 ~]/2", H: "[f#5,a5] [b4,e5,g#5], c#5@3 ~@5", I: "a4@7 ~ b4@6 ~@2, [d5,f#5]", J: "d6",
  K: "b5@6 d6 e6", L: "f#6 e6", M: "a6", N: "f#6@6 a6 b6", O: "c#7 b6", P: "a6@15 ~", Q: "f#6@11 ~ a6@2 b6@2",
  R: "a6@13 ~@3", S: "[b1,b2,b4,d5,f#5,b5]@3 ~@13",
})).s("gm_string_ensemble_1").gain(0.13)

// chords · string ensemble 2 · "DeepStri"
const string_ensemble_2 = note(`<
  ~@72 A@2 B C@3 D E F@2 G H F@2 G H I J K I@2 J K I L M N O L P N Q A@2 B C@3 D E F@2 G H F@2 G H ~@9
>`.pickRestart({
  A: "[d3,f#3,b3]/2", B: "[d3,f#3,b3]@7 ~ [c#3,e3,a3]@8", C: "[g3 [d3,f#3]@5, b2@47 ~, e3 ~@47]/3",
  D: "[b2,f#3] [c#3,e3,a3], d3@3 ~@5", E: "[e3,g3]@8 [d3,f#3]@7 ~, b2@7 ~", F: "[[f#3,a3,d4]@31 ~]/2",
  G: "[f#3,a3] [b2,e3,g#3], c#3@3 ~@5", H: "a2@7 ~ b2@6 ~@2, [d3,f#3]", I: "d4", J: "b3@6 d4 e4", K: "f#4 e4", L: "a4",
  M: "f#4@6 a4 b4", N: "c#5 b4", O: "a4@15 ~", P: "f#4@11 ~ a4@2 b4@2", Q: "a4@13 ~@3",
})).s("gm_string_ensemble_2").gain(0.13)

// drums · kick
const kick = s("bd").struct("<~@20 [x!4]!108 x>").gain(0.28)

// drums · snare
const snare = s("sd").struct("<~@19 A B@15 A B@15 A@21 B@15 A B@15 A@25 C>".pickRestart({
  A: "x!2 ~ x!6 ~ x!6", B: "~ x ~ x", C: "x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!20 [x!2 ~ x!6 ~ x!6]!108 x>").gain(0.28)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 [x!16]!108 x>").gain(0.28)

stack(lead_1_square, marimba, bass, bass_2, string_ensemble_1, string_ensemble_2, kick, snare, hihat, tambourine)