Strudelify

Tu

Tozzi

KeyE majorTempo104 bpm
0:00/0:00
// Tu — Tozzi
// 104 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(104/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 · string ensemble 1
const string_ensemble_1 = note(`<
  ~@33 A B C B A D E F A B C B A D E F ~@24 A B C B A D E F A B C B A D E F ~@18
>`.pickRestart({
  A: "e4@2 ~@4 f#4!3 ~@5 e4!2", B: "e4 ~@5 e4 f#4 a4@2 g#4@2 f#4@2 g#4 ~", C: "e4 ~@5 f#4!3 ~@5 e4!2",
  D: "e4 ~@5 e4 f#4 a4@2 g#4@2 f#4@2 e4@2", E: "f#4@2 ~@4 g#4!3 ~@5 f#4!2", F: "f#4 ~@5 f#4 g#4 b4@2 a4 ~ g#4@2 f#4 ~",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.4)

// bass · slap bass 1
const bass = note(`<
  ~ A@2 B@2 C@2 D@2 ~@4 E@2 F@2 G@2 H@2 E@2 F@2 G@2 H@2 E@2 F@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 G@2 H@2
  E@2 F@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2
>`.pickRestart({
  A: "~ e2 ~ e2 ~ e2 ~ e2, e1!4", B: "~ c#2 ~ c#2 ~ c#2 ~ c#2, c#1!4", C: "~ a2 ~ a2 ~ a2 ~ a2, a1!4",
  D: "~ b2 ~ b2 ~ b2 ~ b2, b1!4", E: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~", F: "b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~",
  G: "e1@3 ~ e1@3 ~ e1@3 ~ e1@3 ~", H: "c#2@3 ~ c#2@3 ~ c#2@3 ~ c#2@3 ~",
})).s("gm_slap_bass_1").gain(0.53)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B A B A B C D E@2 F@2 G@2 H@2 E@2 F@2 G@2 H@2 I J K@2 L@2 M@2 ~@11 N O@2 P@2 A B A B A B C D E@2 F@2 L@2 M@2 A B A
  B A B C D ~@11 N O@2 P@2 A B A B A B C D A B A B A B C D A B
>`.pickRestart({
  A: "e4@4 f#4@3 ~", B: "a4@2 g#4@2 f#4@2 e4@2 f#4@4 g#4@3 ~", C: "f#4@4 g#4@3 ~",
  D: "b4@2 a4@2 g#4@2 f#4@2 e4@4 d#4@3 ~",
  E: "[~@15 b2, e2 e2, ~ b2@2 b2@2 b2@2 b2@2 b2@2 b2@2 b2@2 ~, ~ e3@2 e3@2 e3@2 e3, ~ b3 ~ b3]/2",
  F: "[~@15 g#2, c#2 c#2, ~ g#2@2 g#2@2 g#2@2 g#2@2 g#2@2 g#2@2 g#2@2 ~, ~ c#3@2 c#3@2 c#3@2 c#3, ~ g#3 ~ g#3]/2",
  G: "[~@15 e3, a2 a2, ~ e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 ~, ~ a3@2 a3@2 a3@2 a3, ~ e4 ~ e4]/2",
  H: "[~@15 f#3, b2 b2, ~ f#3@2 f#3@2 f#3@2 f#3@2 f#3@2 f#3@2 f#3@2 ~, ~ b3@2 b3@2 b3@2 b3, ~ f#4 ~ f#4]/2",
  I: "[g#3,b3,e4]!2 [g#3,b3,e4]@2 [g#3,b3,f#4]!2 [g#3,b3,f#4]@2", // E G#m7
  J: "[g#3,b3,e4] [b3,e4] [g#3,b3,e4]@2 [g#3,b3,f#4]!2 [g#3,b3,f#4]@2", // E E5 E G#m7
  K: "[g#3,c#4,e4]!2 [g#3,c#4,e4]@2 [g#3,c#4,f#4]!2 [g#3,c#4,f#4]@2", // C#m C#sus4
  L: "[a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,f#4]!2 [a3,c#4,f#4]@2", // A F#m
  M: "[b3,d#4,f#4]!2 [b3,d#4,f#4]@2 [b3,d#4,g#4]!2 [b3,d#4,g#4]@2", N: "~@14 [a3,c#4,e4]!2",
  O: "[[a3,c#4,e4]@6 [b3,c#4,e4]!2 [b3,c#4,e4]@6 [a3,c#4,e4]!2 [a3,c#4,e4]@6 [a3,c#4,e4]!2 [a3,c#4,e4]@6 [b3,d#4,f#4]!2, a2]/2", // A C#m7 A B
  P: "[[b3,d#4,f#4]@6 [b3,d#4,g#4]!2 [b3,d#4,g#4]@6 [b3,d#4,f#4]!2 [b3,d#4,f#4]@6 [b3,d#4,f#4]!2 [b3,d#4,f#4]@8, b2]/2", // B G#m B
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.4)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A@2 B@2 C@2 D@2 ~@24 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@8 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2
  D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2
>`.pickRestart({
  A: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~", B: "c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~",
  C: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", D: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
})).s("gm_electric_guitar_muted").gain(0.35).pan(1)

// other · tubular bells
const tubular_bells = note(`<
  ~ A@2 B ~ B ~ C ~@41 A@2 B ~ B ~ C ~@9 A@2 B ~ B ~ C ~@17 A@2 B ~ B ~ C ~ A@2 B ~ B ~ C ~ A@2
>`.pickRestart({
  A: "[e4@8 f#4@13 ~@11]/2", B: "e4 f#4", C: "f#4 g#4",
})).s("gm_tubular_bells").gain(0.8).pan(0.6)

// chords · harpsichord
const harpsichord = note(`<
  ~@9 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@8 E@2 F@2 G@2 H@2 ~@8 A@2 B@2 C@2 D@2 ~@16 E@2 F@2 G@2 H@2 ~@18
>`.pickRestart({
  A: "[[b3,e4,g#4] e3 [b3,e4,g#4] e3 [b3,e4,a4] e3 [b3,e4,a4] e3 [b3,e4,g#4] e3 [b3,e4,g#4] e3 [b3,e4,a4] e3 [b3,e4,g#4] e3, e2]/2", // E Esus4 E Esus4 E
  B: "[[c#4,e4,g#4] c#3 [c#4,e4,g#4] c#3 [c#4,e4,a4] c#3 [c#4,e4,a4] c#3 [c#4,e4,g#4] c#3 [c#4,e4,g#4] c#3 [c#4,e4,a4] c#3 [c#4,e4,g#4] c#3, c#2]/2", // C#m A C#m A C#m
  C: "[[c#4,e4,a4] a2 [c#4,e4,a4] a2 [c#4,e4,b4] a2 [c#4,e4,b4] a2 [c#4,e4,c#5] a2 [c#4,e4,a4] a2 [c#4,e4,b4] a2 [c#4,e4,a4] a2, a1]/2", // A C#m7 C#m A C#m7 A
  D: "[[b3,d#4,f#4] b2 [b3,d#4,f#4] b2 [b3,d#4,g#4] b2 [b3,d#4,g#4] b2 [b3,d#4,f#4] b2 [b3,d#4,f#4] b2 [b3,d#4,g#4] b2 [b3,d#4,f#4] b2, b1]/2", // B G#m B G#m B
  E: "[[e2,e3]@31 ~]/2", F: "[[c#2,c#3]@31 ~]/2", G: "[[a1,a2]@31 ~]/2", H: "[[b1,b2]@27 ~@5]/2",
})).s("gm_harpsichord").gain(0.28).pan(0.7)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@33 A B A B A C D E A B A B A C D E ~@24 A B A B A C D E A B A B A C D E ~@18
>`.pickRestart({
  A: "e3@2 ~@4 f#3!3 ~@5 e3!2", B: "e3 ~@5 e3 f#3 a3@2 g#3@2 f#3@2 g#3@2", C: "e3 ~@5 e3 f#3 a3@2 g#3@2 f#3@2 e3@2",
  D: "f#3@2 ~@4 g#3!2 g#3@2 ~@4 f#3!2", E: "f#3 ~@5 f#3 g#3 b3@2 a3@2 g#3@2 f#3 ~",
})).s("gm_string_ensemble_1").gain(0.36).pan(0.6)

// drums · kick
const kick = s("bd").struct("<[~ x!3] [x!2]!8 [x!4]!40 [x!2]!8 [x!4]!8 [x!2]!8 [x ~@2 x!2 ~@2 x]!8 [x!2]!26>")
  .gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!8 ~@16 [~ x ~ x]!32 ~@4 [~ x ~ x]!46>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C B C B C B ~@16 D@8 E D@7 E D@7 A B C B C B C B ~@4 D@4 A B C B C B C B E D@7 A B C B C B C B A B C B C B C B A
  B C B C B C B A B
>`.pickRestart({
  A: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "x ~ x ~ x ~ x ~ x!2 ~@2 x!2 ~@2", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
  D: "x!2 ~ x!3 ~ x", E: "~ x ~ x!3 ~ x",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~ A ~ A ~ A ~@41 A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@5 x ~ x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~ A ~@31 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@25 [~ x ~ x]!24 ~@12 [~ x ~ x]!4 ~@8 [~ x ~ x]!8 ~@26>").gain(0.4)

stack(
  string_ensemble_1, bass, acoustic_guitar_steel, electric_guitar_muted, tubular_bells, harpsichord,
  string_ensemble_1_2, kick, snare, hihat, open_hat, crash, tambourine
)

More by Tozzi