Strudelify

Scrivi il tuo nome

Battisti

KeyG majorTempo120 bpm
0:00/0:00
// Scrivi il tuo nome — Battisti
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · piano
const piano = note(`<
  ~@10 A@12 B C B C B C D E F@2 A@12 B C B C B C D E F@2 ~@12 B C B C B C D E F@2 G H@2
>`.pickRestart({
  A: "~ [g4,b4]@3 ~ [f#4,a4]@3", B: "[g4,b4] [a4,c5]", C: "[c5,e5] [b4,d5]", D: "[g4,b4]@3 [a4,c5]", E: "[b4,d#5]",
  F: "[f4,b4,d#5]/2", G: "[g4,b4] [f#4,a4]", H: "[[e4,g4] [a3,e4,a4]@3]/2",
})).s("gm_piano").gain(0.08)

// chords · epiano2 · "Synth."
const epiano2 = note(`<
  ~ A B A B A B A B C ~@12 D E D E D E F G ~@14 D E D E D E F G ~@2 H@4 I@8 D E D E D E F G ~@2 J K@2
>`.pickRestart({
  A: "a5 a6 c6 ~@5", B: "a5 a6 f6 ~@5", C: "a5 a6 c6 ~ a5 ~ f5 ~", D: "[g4,b4] [a4,c5]", E: "[c5,e5] [b4,d5]",
  F: "[g4,b4]@3 [a4,c5]", G: "[b4,d#5]", H: "[d4,f4,a4,c5]/4", I: "[[d4,f#4,a4,c5]@47 [e3,g4,c5]@17]/8",
  J: "[g4,b4] [f#4,a4]", K: "[[e4,g4] [a3,e4,a4]@3]/2",
})).s("gm_epiano2").gain(0.64)

// other · electric bass finger · "Basso"
const electric_bass_finger = note("<~ A@8 ~ B@12 C@6 D E F@2 B@12 C@6 D E F@2 ~@12 C@6 D E F@2 G@3>".pickRestart({
  A: "f3/8", B: "e3/2", C: "g3/2", D: "g3@3 a3", E: "b3", F: "b3/2", G: "[e3 a3]/3",
})).s("gm_electric_bass_finger").gain(0.21)

// chords · string ensemble 1 · "Orch."
const string_ensemble_1 = note("<~@54 A B@2 C ~@2 D B@2 E@3 ~@13>".pickRestart({
  A: "[d5,a5] [e5,b5] [d5,a5]@2 ~@2 [a4,d5] [b4,e5]", // D5 E5 D5 E5
  B: "[[a4,d5]@2 ~@2 [d4,a4]@2 [d4,a4] [d4,a4]@3 [e4,b4] [e4,b4]@5]/2", C: "[g4,d5]@4 [a4,e5]@3 ~",
  D: "~@2 [d5,a5] [e5,b5] [d5,a5]@2 [a4,d5] [b4,e5]", E: "[[a4,d5]@3 [b4,e5]@4 e5@17]/3",
})).s("gm_string_ensemble_1").gain(0.64)

// drums · congas
const congas = s("conga:13").struct("<[~ x ~ x ~ x ~ x] ~@78>").gain(2.05)

// drums · congas
const congas_2 = s("conga:33").struct("<~ [x!8]!9 ~@69>").gain(2.05)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<[x!4] ~@78>").gain(4.08)

stack(piano, epiano2, electric_bass_finger, string_ensemble_1, congas, congas_2, agogo_bells)

More by Battisti