Strudelify

Stagioni

Nomadi

KeyG majorTempo58 bpm
0:00/0:00
// Stagioni — Nomadi
// 58 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Piano" named as a piano, played on piano (its acoustic guitar nylon patch is not one)
// note: Full arrangement: all 42 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(58/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 · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~ A@4 B C@4 D@4 E F G H I@4 J K L@3 K M@3 N@2 O@2 H P@6>".pickRestart({
  A: "[[g2,g4]@15 [b2,f#4]@16 ~@33 a3@15 c3@17 [g2,b3,d4]@28 ~@4, [d4,b4]@31 a4@49 ~@48, ~@32 [c4,e4]@63 ~@33, ~@32 a2@46 ~ g4@45 ~@4]/4", // G B5 G C
  B: "g4@15 ~ f#4@16, [d4,b4]", C: "[a4@48 ~@16 b3@28 ~@19 f#4@16 ~, [c4,e4]@64 d4@63 ~, ~@48 g4@63 ~@17, ~@3 b4]/4",
  D: "[a4@47 ~@17 [b3,d4]@31 ~ f2@16 [a2,e4]@16, [c4,e4]@63 ~@32 [a3,c4]@30 ~@3, ~@48 g4@47 f4@16 ~@17]/4", // Bm A5 C Am
  E: "[g2,b3,d4,g4]", F: "[f2,a3,c4,f4]@15 ~ [e2,g3]@16, ~@15 [b3,e4]@16 ~",
  G: "d2@15 ~ a2@16, [a3,d4,f#4]@31 ~, ~@15 a4@16 ~", H: "[g2,g4] [b2,f#4], [d4,b4]",
  I: "[[a2,a4]@48 c3@16 [g2,b3,d4]@31 ~ [f2,a3,c4]@16 [e2,g3,b3,e4]@16, [c4,e4]@63 ~@32 f4@17 ~@16, ~@3 g4@3 ~@2]/4", // A G F Em C
  J: "~ d3, [d2,a3,d4,f#4]", K: "g4@14 ~@2 f#4@15 ~, [d4,b4]",
  L: "[a4@24 ~@8 [b3,d4]@15 ~, [c4,e4]@63 ~ g2@24 ~@8, ~@48 g4@47 ~]/3", // Bm C
  M: "[a4@48 c3@16 [g2,b3,d4]@31 ~, [c4,e4]@31 ~@17, ~@24 g4@23 ~]/3", // G C
  N: "[[f2,f4]@16 a2@16 ~@4 d4@27 ~, [a3,c4]@31 ~ [g2,g3,b3]@32, ~@16 e4@21 ~@27]/2", // F Am G
  O: "[[f2,a3,c4,f4]@16 [e2,g3,b3,e4]@15 ~@17 a4@16, ~@31 [d4,f#4]@31 ~@2, ~ [d2,a3]]/2", // F Em D D5
  P: "[[a2,a4]@48 c3@15 [g2,b3,d4]@32 ~ [f2,a3,c4,f4]@16 [e2,g3,b3,e4]@15 ~@33 g3@15 ~@17, [c4,e4]@62 ~@65 d4@33 ~@32, ~@48 g4@49 ~@31 [d3,a3,f#4]@34 ~@30, ~@136 a4@27 ~@29]/6", // A G F Em C D
})).s("gm_string_ensemble_2").gain(0.34)

// chords · piano
const piano = note("<~ A@3 B@8 C@4 D@7 E@7 C@4 F@7 G>".pickRestart({
  A: "[~@27 e4@2 ~@6 e4@2 ~@10 g4, g2@10 a4@8 f#3@8 a4@8 e3@12 e4@4 e3@10 a4@9 ~ c5@10 c3@10 b4@5 ~, ~ d3@5 g4@4 b3@4 g4@5 c5@3 a4@4 a3@5 e4@2 e3@5 a4@4 c4@4 a4@2, ~@4 g3@10 d4@7 ~ b4@10 a2@10 b4@12 c5@10 a2@10 b4@8 g3@12 ~@2, ~@6 b4@10 b2@14 d4@6 a3@12 a2@10 b4@10 a3@10 e4@8 c5@9 ~]/3",
  B: "[~@28 d4@2 ~@46 c4@2 ~@56 b3@2 ~@4 b3@2 ~@30 b4 ~@31 c4@2 ~@46 e4@2 g4@2, g2@10 a4@10 g3@4 g4@4 b4@8 ~@2 d4@4 g3@6 ~@2 f#3@12 f#4@8 c4@4 a3@12 e4@2 a2@2 e3@4 e4@8 c4@5 ~ a3@4 ~@2 g3@10 e4@5 ~@3 g3@4 d4@5 ~@3 d3@4 g4@14 d3@12 g4@12 b3@6 ~@2 e3@11 ~@3 e3@2 b4@18 a3@4 e4@4 c4@6 ~@2 c4@4 g4@4 ~@4, ~@2 d3@10 g4@6 d3@10 ~@2 g4@6 g3@4 g4@4 d4@8 b3@4 f#4@4 d4@8 a3@4 e4@5 ~ c5@14 a3@7 ~ a3@6 e3@4 c4@5 ~ c4@4 g4@5 ~ g4@15 ~ b4@28 g3@6 ~@2 f#3@13 ~ a2@12 ~@2 a2@6 a4@17 ~ c4@4 a3@6 ~@2 g3@12 ~@2, ~@4 g3@10 d4@2 g2@12 ~@4 g2@14 ~@2 b2@14 ~@2 a2@12 ~@2 a2@4 b4@13 ~@3 e3@5 ~ e4@12 ~@2 e4@4 c4@4 ~@4 d3@12 g2@4 a4@18 g3@2 d4@2 g4@4 d4@8 b3@2 d4@2 f#4@4 d4@8 a3@4 e4@5 ~ c5@18 a2@12 ~@4 c3@14 ~@2, ~@6 b4@16 d4@4 g3@8 d3@12 g4@7 ~ d4@4 b3@6 ~@2 e3@11 ~@3 e3@4 a4@12 a2@13 ~@3 c3@14 ~@2 g2@10 g3@12 d4@2 g2@2 d3@2 g3@2 d4@2 g2@13 ~@3 b2@14 f#4@8 c4@4 a3@12 e4@2 a2@2 e3@2 a3@2 e4@4 e3@11 ~ e4@6 ~@2 e4@4 c4@4 ~@2]/8",
  C: "[~@3 d4 ~@2 d4 ~@52 b3 ~@3 e4, g2@10 g3@12 d4@2 g2@2 d3@2 g3@2 d4@2 f2@12 c4@8 a3@4 e4@4 c4@8 g3@4 d4@5 ~ b4@20 c3@12 f4@12 e3@6, ~@2 d3@12 g2@4 a4@18 f3@4 f4@5 ~ f4@8 c4@4 a3@6 ~@2 d3@11 g2@5 a4@18 f3@4 f4@4 c4@8 e3@4 e4@4 b3@4, ~@4 g3@4 g4@5 ~ b4@20 c3@13 ~ a2@14 ~@2 g2@12 b3@2 ~@2 d3@4 g4@18 c4@4 f3@8 b2@12 ~@2, ~@16 d3@4 g4@18 c4@4 f3@7 ~ e3@12 e4@8 b3@4 g3@12 d4@2 g2@2 d3@2 g3@2 d4@2 f2@14 ~@2 e2@14 ~@2]/4",
  D: "[~@3 e3 f#3 a3 d4 e4 f#4 g4 a4 ~@2 g4 a4 ~@5 d4 ~@17 c4 ~@31 b3 ~@28 e3 f#3 a3 d4 e4 f#4 g4 a4 ~@2 g4 a4 b4, d2@29 ~@7 g3@2 b3@4 g3@7 ~ f#3@10 d4@6 e3@11 ~@3 e3@4 a4@14 e3@12 e4@6 ~@2 e4@4 c4@4 g4@12 g3@12 d4@2 g2@2 d3@2 g3@2 d4@2 f2@14 ~@2 e2@12 b3@8 d3@19 ~ d3@5 ~@3, ~@2 a2@28 ~@2 g2@12 d4@4 b2@13 ~ f#4@6 a3@2 c4@2 e4@5 ~ c5@22 a3@4 e4@4 c4@7 ~ c4@4 g4@4 e4@4 ~@4 g3@2 b3@2 d4@5 ~ b4@20 c3@12 f4@10 e4@5 ~ e4@7 ~@17 b4@5 ~@5, ~@4 d3@18 b4@5 ~@3 b4@44 a3@12 e4@2 a2@2 e3@2 a3@2 e4@2 a2@13 ~@3 c3@14 ~@2 g2@12 ~@2 g2@4 a4@18 f3@2 c4@4 f3@7 ~ b2@12 ~@2 d2@29 ~@3, ~@24 d3@8 ~@2 d3@12 f4@4 ~@2 b3@2 d4@2 f#4@2 b3@6 a2@12 ~@2 a2@4 b4@19 ~ c4@4 a3@6 ~@2 g3@12 ~@4 d3@12 ~@2 d3@4 g4@20 f4@4 c4@8 e3@2 b3@4 e3@7 ~ a2@27 ~@3]/7",
  E: "[~@44 c4@2 ~@56 b3@2 ~@4 b3@2 ~@30 b4 ~@31 c4@2 ~@46 e4@2 g4@2, g2@14 ~@2 b2@14 ~@2 a2@12 ~@2 a2@4 b4@12 e4@8 c4@5 ~ a3@4 ~@2 g3@10 e4@5 ~@3 g3@4 d4@5 ~@3 d3@4 g4@14 d3@12 g4@12 b3@6 ~@2 e3@11 ~@3 e3@2 b4@18 a3@4 e4@4 c4@6 ~@2 c4@4 g4@4 ~@4, ~@2 d3@12 g4@7 ~ d4@4 b3@6 ~@2 e3@11 ~@3 e3@4 a4@12 ~@2 e3@5 ~ e4@12 ~@2 e4@4 c4@4 ~@4 d3@12 g2@4 a4@18 g3@2 d4@2 g4@4 d4@8 b3@2 d4@2 f#4@4 d4@8 a3@4 e4@5 ~ c5@18 a2@12 ~@4 c3@14 ~@2, ~@4 g3@4 g4@4 d4@8 b3@4 f#4@4 d4@8 a3@4 e4@5 ~ c5@12 e3@5 ~ a2@13 ~@3 c3@14 ~@2 g2@10 g3@12 d4@2 g2@2 d3@2 g3@2 d4@2 g2@13 ~@3 b2@14 f#4@8 c4@4 a3@12 e4@2 a2@2 e3@2 a3@2 e4@4 e3@11 ~ e4@6 ~@2 e4@4 c4@4 ~@2, ~@6 d4@4 g3@6 ~@2 f#3@12 f#4@8 c4@4 a3@12 e4@2 a2@4 a3@7 ~ a3@6 e3@4 c4@5 ~ c4@4 g4@5 ~ g4@15 ~ b4@28 g3@6 ~@2 f#3@13 ~ a2@12 ~@2 a2@6 a4@17 ~ c4@4 a3@6 ~@2 g3@12 ~@2]/7",
  F: "[~@3 e3 f#3 a3 d4 e4 f#4 g4 a4 ~@2 g4 a4 ~@5 d4 ~@17 c4 ~@31 b3 ~@28 e3 f#3 a3 d4 e4 f#4 g4 a4 ~@2 g4 a4 ~, d2@29 ~@7 g3@2 b3@4 g3@7 ~ f#3@10 d4@6 e3@11 ~@3 e3@4 a4@14 e3@12 e4@6 ~@2 e4@4 c4@4 g4@12 g3@12 d4@2 g2@2 d3@2 g3@2 d4@2 f2@14 ~@2 e2@12 b3@8 d3@19 ~ d3@5 ~@3, ~@2 a2@28 ~@2 g2@12 d4@4 b2@13 ~ f#4@6 a3@2 c4@2 e4@5 ~ c5@22 a3@4 e4@4 c4@7 ~ c4@4 g4@4 e4@4 ~@4 g3@2 b3@2 d4@5 ~ b4@20 c3@12 f4@10 e4@5 ~ e4@7 ~@17 b4@5 ~@5, ~@4 d3@18 b4@5 ~@3 b4@44 a3@12 e4@2 a2@2 e3@2 a3@2 e4@2 a2@13 ~@3 c3@14 ~@2 g2@12 ~@2 g2@4 a4@18 f3@2 c4@4 f3@7 ~ b2@12 ~@2 d2@29 ~@3, ~@24 d3@8 ~@2 d3@12 f4@4 ~@2 b3@2 d4@2 f#4@2 b3@6 a2@12 ~@2 a2@4 b4@19 ~ c4@4 a3@6 ~@2 g3@12 ~@4 d3@12 ~@2 d3@4 g4@20 f4@4 c4@8 e3@2 b3@4 e3@7 ~ a2@27 ~@3]/7",
  G: "~@2 g4@17 ~@13, [g2,d3]@17 ~@15, ~ [g3,b3,d4]@17 ~@14", // G5 G
})).s("gm_piano").gain(0.46)

// bass · acoustic bass · "Basso"
const bass = note("<~@13 A B C D E F G H I J K L M N O P Q R S T U V W X Y@2 Z AA AB>".pickRestart({
  A: "f2@13 ~ f2@2 a2@13 ~ a2!2", B: "g2@13 ~ g2 ~ g2@13 ~ g2!2, ~@15 a2", C: "f2@13 ~ f2@2 e2@13 ~ e2@2",
  D: "d2@5 ~ d2 ~ d2@20 ~@4", E: "g2@13 ~ g2 a2 b2@13 ~ b2@2", F: "a2@13 a3@4 g3@3 e3@2 d3@10",
  G: "a2@6 a2 ~ a2@8 c3@14 d3 c3", H: "g2@5 ~ g2 ~ g2@22 [a2,b2] ~, b2 ~@31", I: "f2@13 ~ f2@2 e2@13 e2 ~ g2",
  J: "d3@6 d3@2 d3@21 ~ d3@2", K: "g2@5 ~ g2 ~ g2@6 g2@2 b2@5 ~ b2 ~ b2@8", L: "a2@6 a2@2 a2@13 ~ a2@2 a2@6 g2@2",
  M: "a2@5 ~ a2@2 a2@8 c3@10 d3@2 e3@2 d3@2", N: "g2@5 ~ g2@2 g2@22 d2 f2", O: "g2@6 g2 ~ g2@8 b2@5 ~ b2@2 b2@8",
  P: "a2@5 ~ a2 ~ a2@6 a3@4 g3@2 e3@2 d3@2 a2@6 a2 ~", Q: "a2@14 g2 a2 c3@5 ~ c3@2 d3@2 c3@6",
  R: "g2@5 ~ g2 ~ g2@16 b2@4 a2@4", S: "f2@6 f2 ~ f2@14 [a2,b2] ~ a2@8", T: "g2@5 ~ g2 ~ g2@8 g2@6 g2@2 g2@8",
  U: "f2@6 f2 ~ f2@8 e2@5 ~ e2 ~ e2@8", V: "d2@5 ~ d2 ~ d2@8 d3@4 c3@2 b2@4 a2@2 g2@3 ~", W: "g2@2 b2!2",
  X: "a2@5 ~ a2 ~ a2@5 e3@4 d3@3 c3@2 b2@5 a2@5",
  Y: "[a2@13 ~ g2 a2 c3@5 ~ c3@2 d3@2 c3@2 b2@2 g2@7 ~ g2 ~ g2@22 [a2,b2] ~]/2", // Asus2
  Z: "g2@2 f2@12 ~ g2 f2@2 e2@12 ~ f2, ~@7 a2 ~@7 g2", AA: "e2@2 d2 d2@2 a2@2 d3 a3@2 d3 a2@2 g2@2 a2", AB: "g2@5 ~@3",
})).s("gm_acoustic_bass").gain(0.23)

// drums · kick
const kick = s("bd").struct("<~@23 [x ~@6 x!2 ~@5 x ~]!17 x ~>").gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@27 [~ x ~ x]!3 [~ x ~@2] ~@11>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@30 [~@12 x ~@2 x] [~ x ~ x]!3 [~@4 x ~@5 x ~ x!3 ~] [~@3 x]!4 ~@3>").gain(0.45)

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

// drums · low tom
const low_tom = s("lt").struct("<~@30 [~ x] ~@11>").gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@30
  [~@7 x ~@3 x!3 ~@2]
  ~
  [~@14 x ~@7 x ~ x ~@2 x ~@4]
  [~@15 x]
  [~@9 x ~@6 x ~ x ~@13]
  ~@7
>`).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@22 [~@7 x] [~ x ~@3 x ~ x ~ x ~@3 x ~ x]!17 ~ [~@4 x!7 ~@21]>").gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@30 [~@6 x ~@8 x] ~ [~@4 x ~@2 x] ~ [x ~@3 x ~@2 x ~@8] ~@7>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@30 A B ~ B A B ~@3 C B ~>".pickRestart({
  A: "~@7 x", B: "x", C: "x!2",
})).gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<~@23 [~ x ~ x]!17 ~@2>").gain(0.45)

stack(string_ensemble_2, piano, bass, kick, rim, snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash, tambourine)

More by Nomadi