Strudelify

Asia non Asia

Pooh

KeyD majorTempo128 bpm
0:00/0:00
// Asia non Asia — Pooh
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 6/4 at bar 67, 4/4 at bar 73, 6/4 at bar 90, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 173 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 · drawbar organ
const drawbar_organ = note("<A@8 ~ A@16 B@8 C D C D E@2 F D ~@53 A@8 ~@45 G@2 H@8 G@2 I@6 J ~@7>".pickRestart({
  A: "[d3,d4,f#4,a4,d5]/8", B: "[d3,d4,d5]/8", C: "e3", D: "c3", E: "a2/2", F: "a#2", G: "[d4,f#4,a4]/2",
  H: "[[d4,f#4,d5], a4 ~@127]/8", I: "[[d4,f#4,a4]@31 ~]/2", J: "[d4,f#4,a4] ~@15",
})).s("gm_drawbar_organ").gain(0.15)

// bass · electric bass finger
const bass = note(`<
  ~@17 A@16 B C B C D@2 E C A@16 B C B F D G H I A@6 J K A@2 L M D N O P O Q@2 R S T U A@22 B C B F D G H I A@6 J K A@2
  L M D N O P O Q@2 R S T U A@32
>`.pickRestart({
  A: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", B: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  C: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", D: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  E: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~", F: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ b1 ~ a#1 ~",
  G: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a#1@2", H: "~@2 a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ c2@2",
  I: "~@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", J: "a#1@4 f2@4 a#1@3 ~ a#1@3 ~", K: "c2@3 ~ g2@4 c2@3 ~ c2@3 ~",
  L: "a#1@3 ~ f2@4 a#1@3 ~ a#1@3 ~", M: "c2@4 g2@4 c2@3 ~ c2@3 ~", N: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ g1 ~",
  O: "f1@2 f1@5 ~ g1@2 g1@6", P: "e1@4 e1@3 ~ e1@3 ~ e1@3 ~", Q: "e1", R: "c2@6 g1@2 c2@3 ~ g1@3 ~",
  S: "d2@5 ~ a1 ~ a1@4 d2@4", T: "a#1@3 ~ a#1@3 ~ a#1@3 ~ a#1@3 ~", U: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.57)

// other · lead 3 calliope
const lead_3_calliope = note(`<
  ~@9 A@2 B@2 A@2 B@2 ~@8 C D@2 ~ C E@2 ~ F G H I@6 ~@7 J K ~@2 C L@2 ~ M@2 N O P@3 Q@2 ~@5 R@3 ~ R@3 ~ S@2 T@2 U V W X
  Y@2 ~@13 J Z ~@2 C AA ~@2 AB AC N AC AB AD AE AF ~@6 R@3 ~ R@3 ~ AG@2 AH@2 U AI W X Y@2 ~@7 AJ AK AJ AL AJ AK AJ AL
  ~@16
>`.pickRestart({
  A: "[f#5 f#5@2 e5@2 d5@2 c5@2 e5@2 a4 ~@4]/2", B: "[f#5@2 f#5@4 e5@4 d5@4 c5@4 c5 ~@13]/2",
  C: "d5@2 d5@3 ~ d5@3 ~ d5@3 ~ d5@2", D: "[~@2 d5@3 ~ d5@3 ~ f#5@3 ~ f#5@4 f#5@2 ~@12]/2",
  E: "[~@2 d5@3 ~ d5@3 ~ f#5@4 f#5@4 f#5@2 ~@12]/2", F: "g5 ~ g5@3 ~ g5@3 ~ f#5@3 ~ f#5@2",
  G: "~@2 e5@2 ~@6 e5 ~ f#5 ~ g5@2", H: "~@2 g5@4 g5@4 f#5@3 ~ f#5@2",
  I: "[~@2 e5@3 ~@5 e5 ~ f#5 ~ g5@4 g5@3 ~ g5@3 ~ f#5@3 ~ f#5@4 e5@2 ~@6 e5 ~ e5 ~ e5@4 d5 ~@7 e5 ~ e5 ~ e5@4 d5@3 ~ c5@4 e5@4 d5@5 ~@13]/6",
  J: "d5 ~ d5@3 ~ d5@3 ~ d5@3 ~ d5@2", K: "~@2 d5@3 ~ d5@3 ~ f#5@4 f#5@2",
  L: "[~@2 d5@3 ~ d5@3 ~ f#5@3 ~ f#5@4 ~@14]/2", M: "[g5 ~ g5 ~ g5 ~ g5@3 ~ f#5@3 ~ f#5@4 e5@2 ~@6 e5 ~ e5 ~ f#5 ~]/2",
  N: "g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ f#5 ~ f#5@2", O: "~@2 e5@2 ~@6 e5 ~ e5 ~ f#5 ~",
  P: "[g5 ~ g5 ~ g5 ~ g5@3 ~ f#5@3 ~ f#5@4 e5@3 ~@5 e5 ~ e5 ~ e5@4 d5 ~ d5 ~ d5@3 ~ d5@3 ~ e5@2]/3",
  Q: "[~@2 e5@3 ~ e5@3 ~ d5@3 ~ d5@4 ~@14]/2", R: "[f5!3 f5@2 f5@2 g5@2 g5@2 g5@2 g5@2 g5@2 a5!2 ~@5]/3",
  S: "[f5 ~ f5 ~ f5 ~ f5 ~ g5 ~ g5@4 e5@5 ~@11 e5@2]/2", T: "[f5 ~ f5 ~ f5 ~ f5 ~ g5 ~ g5@4 e5@4 ~@14]/2",
  U: "~@12 e5 ~ e5 ~", V: "e5 ~ e5 ~ e5 ~ e5@3 ~ e5@3 ~ f#5@2", W: "~@2 f#5@3 ~@5 d5 ~ d5 ~ f5@2",
  X: "~@2 f5@3 ~ f5@3 ~ f5@3 ~ g5@2", Y: "[~@2 g5@3 ~ g5@3 ~ g5@4 a5@17 ~]/2", Z: "~@2 d5@3 ~ d5@3 ~ f#5@3 ~ f#5@2",
  AA: "~@2 d5@3 ~ d5@4 f#5@3 ~ f#5@2", AB: "g5 ~ g5 ~ g5 ~ g5@3 ~ f#5@3 ~ f#5@2", AC: "~@2 e5@3 ~@5 e5 ~ e5 ~ f#5 ~",
  AD: "~@2 e5@5 ~@3 e5 ~ e5 ~ e5@2", AE: "~@2 d5 ~ d5 ~ d5@3 ~ d5@3 ~ e5@2", AF: "~@2 e5@3 ~ e5@3 ~ d5@3 ~ d5@2",
  AG: "[f5 ~ f5 ~ f5 ~ f5 ~ g5@2 g5@4 e5@5 ~@11 e5 ~]/2", AH: "[f5 ~ f5 ~ f5 ~ f5 ~ g5 ~ g5@3 ~ e5@5 ~@13]/2",
  AI: "e5 ~ e5 ~ e5 ~ e5@2 ~@2 e5@3 ~ f#5@2", AJ: "f#5@2 f#5@3 ~ e5@3 ~ d5@3 ~ c5@2", AK: "~@2 e5@3 ~ a4@4 ~@6",
  AL: "~@2 c5 ~@13",
})).s("gm_lead_3_calliope").gain(0.25)

// other · lead 4 chiff
const lead_4_chiff = note(`<
  ~@27 A@2 ~@2 A@2 ~@8 B@2 C@2 D@2 E@2 ~@2 D@2 ~@2 D@2 ~@37 F@2 G@2 F@2 H@2 ~@2 D@2 ~@2 D@2 ~@47 B@2 C@2 D@2 E@2 B@2 C@2
  D@2 E@2
>`.pickRestart({
  A: "[~@6 d5 ~ d5@24]/2", B: "[~ a4 c5@10 a4@4]/2", C: "[~ a4 c5@14]/2", D: "[~@2 a4@2 c5@20 a4@7 ~]/2",
  E: "[~@2 a4@2 c5@27 ~]/2", F: "[~ a3 c4@10 a3@4]/2", G: "[~ a3 c4@14]/2", H: "[~@2 a3@2 c4@25 ~@3]/2",
})).s("gm_lead_4_chiff").gain(0.29)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@25 A@2 B@2 A@2 B@2 C D C D E@2 F D G@8 A@2 B@2 H I B@2 C D C D J@4 K@6 L M B@2 L M E@2 N O N P@2 Q R L M K@6 ~@8 A@2
  B@2 H I B@2 C D C D J@4 K@6 L M B@2 L M E@2 N O N P@2 Q R L M K@6 ~@10 G@16
>`.pickRestart({
  A: "[[a3,f#4] [a#3,g4], d4]/2", B: "[a3,d4,f#4]/2", C: "[b3,e4,g4]", D: "[c4,e4,g4]", E: "[a3,c#4,e4]/2",
  F: "[a#3,d4,f4]", G: "[a3,d4,f#4]/8", H: "[a3,d4,f#4]", I: "[a#3,d4,g4]",
  J: "[[a3,c#4,e4]@15 [a#3,d4,f4]@8 [c4,e4,g4]@9]/4", K: "[a3,d4,f#4]/6", L: "[f3,a#3,d4]", M: "[g3,c4,e4]",
  N: "[a3,c4,f4] [b3,d4,g4]", O: "[g#3,b3,e4]", P: "[g#3,b3,e4]/2", Q: "[e3,g3,c4]", R: "[f#3,a3,d4]",
})).s("gm_string_ensemble_2").gain(0.28)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@17 A@2 B@2 A@2 C@2 ~@16 A@2 B@2 A@2 C@2 ~@2 A@2 ~@2 C@2 ~@37 A@2 B@2 A@2 C@2 ~@2 A@2 ~@2 C@2 ~@47 A@2 B@2 A@2 C@2
  A@2 B@2 A@2 C@2
>`.pickRestart({
  A: "[~ a3 c4 e4 g4 f#4@2 c4@2 d4@2 a3@5]/2", B: "[~ a3 c4 e4 g4 f#4@2 c4@2 d4@7]/2",
  C: "[~@2 a3@2 c4@2 e4@2 g4@2 f#4@4 c4@4 d4@13 ~]/2",
})).s("gm_string_ensemble_1").gain(0.36)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@17 A@2 B@2 A@2 B@2 ~@16 A@2 B@2 A@2 B@2 ~@2 A@2 ~@2 B@2 ~@8 C@4 D C ~@17 C@4 D C A@2 B@2 A@2 B@2 ~@2 A@2 ~@2 B@2 ~@8
  C@4 D C ~@17 C@4 D C ~@10 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2
>`.pickRestart({
  A: "[~ a3 c4 e4 g4 f#4@2 c4@2 d4@2 a3@5]/2", B: "[~ a3 c4 e4 g4 f#4@2 c4@2 d4@5 ~@2]/2",
  C: "~@2 [f#3,a3,d4] ~ [f#3,a3,d4]@2 ~@4 [f#3,a3,d4] ~ [f#3,a3,d4]@2 ~@2", // D
  D: "~@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 ~@4 [f#3,a3,d4] ~ [f#3,a3,d4]@2 ~@2", // D
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.6)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@49 A B C@3 D C@2 E F G H I@2 J H ~@37 A B C@3 D C@2 E F G H I@2 J H ~@55
>`.pickRestart({
  A: "a3 ~@3 a3@2 ~@2 a3@2 ~@2 a3@2 ~@2", B: "a#3 ~@3 a#3@2 ~@2 a#3 ~@3 a#3@2 ~@2", C: "a3 ~ a3 ~ a3 ~ a3 ~",
  D: "a#3 ~ a#3 ~ a#3 ~ a#3 ~", E: "~@2 b3 ~@5", F: "~@2 c4 ~@5", G: "~@4 b3 ~@11", H: "~@4 c4 ~@11", I: "~@2 a3 ~@5",
  J: "~@4 a#3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.4)

// other · pad halo
const pad_halo = note("<~@65 A@7 ~@7 B C B D@2 ~@3 E@7 ~@24 A@7 ~@7 B C B D@2 ~@3 E@7 ~@26>".pickRestart({
  A: "[~@2 f#4 g4@2 f#4@2 g4@2 f#4@2 d4@3 f#5 g5@2 f#5@2 g5@2 f#5@2 d5@3 f#4 g4@2 f#4@2 g4@2 f#4@2 d4@3 f#5 g5@2 f#5@2 g5@2 f#5@2 d5@3 ~@6]/7",
  B: "f4 g4", C: "e4", D: "e4/2",
  E: "[~@7 f#4@3 f#4 g4@2 f#4@2 g4@2 f#4@2 d4@3 f#5 g5@2 f#5@2 g5@2 f#5@2 d5@3 f#4 g4@2 f#4@2 g4@2 f#4@2 d4@3 f#5 g5@2 f#5@2 g5@2 f#5@2 d5]/7",
})).s("gm_pad_halo").gain(0.35).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@41 A@21 B C D A@6 E@2 F@2 E@2 F@2 G F G E ~ H@2 I@2 A@6 ~@8 A@13 B C D A@6 E@2 F@2 E@2 F@2 G F G E ~ H@2 I@2 A@6
  ~@10 A@16
>`.pickRestart({
  A: "x!2", B: "x ~@3 x ~@2 x", C: "~@4 x ~@2 x", D: "~ x", E: "x", F: "x ~@3 x!2 ~@2", G: "x!2 ~@2 x!2 ~@2",
  H: "x ~@2 x!2 ~@3", I: "x!4",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@41 A@30 B C A@2 B C A@5 ~@2 A@2 D@2 A@6 ~@8 A@22 B C A@2 B C A@5 ~@2 A@2 D@2 A@6 ~@10 A@16
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!2", C: "~@4 x!2 ~@2", D: "x!4",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@41 A B@20 C@2 B A B@5 A D A B A D A B E B E ~@2 A B F@2 A B@5 ~@8 B@13 C@2 B A B@5 A D A B A D A B E B E ~@2 A B F@2
  A B@5 ~@10 A B@7 A B@7
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "~ x!5 ~ x", E: "~ x!3 ~ x!3", F: "~ x ~ x ~ x ~ x",
})).gain(0.18)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~@8 A ~@3 A ~@6 A ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8 A ~@3 A ~@6 A ~@10 A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@3 x",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@86 [~ x!3]!2 ~@51 [~ x!3]!2 ~@32>").gain(0.27)

// drums · crash
const crash = s("cr").struct(`<
  A ~@40 B ~@20 C@2 ~ B ~@5 B@3 ~ B@3 ~ D ~ D B ~ B ~ B@3 ~@26 C@2 ~ B ~@5 B@3 ~ B@3 ~ D ~ D B ~ B ~ B@3 ~@15 B ~@7 B
  ~@7
>`.pickRestart({
  A: "~@13 x ~@2", B: "x", C: "~@7 x", D: "x!2",
})).gain(0.27)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~@19 A ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@19 A ~@10 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~
>`.pickRestart({
  A: "~@9 x ~@6",
})).gain(0.94)

// drums · congas
const congas = s("conga:13").struct(`<
  ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~@19 A ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@19 A ~@10 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~
>`.pickRestart({
  A: "~@4 x!2 ~@2",
})).gain(1.15)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@17 [x!8]!24 ~@53 [x!8]!8 ~@71>").gain(1.36)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A@3 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~@17 A ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A
>`.pickRestart({
  A: "~@3 x!2 ~@3",
})).gain(0.52)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~@17 A ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@5 x!2 ~",
})).gain(0.52)

stack(
  drawbar_organ, bass, lead_3_calliope, lead_4_chiff, string_ensemble_2, string_ensemble_1, acoustic_guitar_steel,
  electric_guitar_muted, pad_halo, kick, snare, hihat, low_tom, open_hat, crash, bongos, congas, cabasa, woodblocks,
  woodblocks_2
// … 1 more lines

More by Pooh