Strudelify
One for You, One for Me cover art

Italo Disco Kings

One for You, One for Me

La Bionda

KeyB♭ majorTempo115 bpm
0:00/0:00
// One for You, One for Me — La Bionda
// 115 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 2 "FINGERDBAS" Harmo Pan -> pad warm
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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.

// bass · pad warm · "FINGERDBAS"
const bass = note(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D C D A B A B A B A B A
  B A B A B E B F G H I J K L M L M L M L M L M L M L M L N
>`.pickRestart({
  A: "[bb1,bb2]@2 ~ [bb1,bb2] [f1,f2]@2 [g1,g2] ~ [bb1,bb2]@2 ~ [bb1,bb2] [g1,g2]@2 [f1,f2]@2", // Bb F G Bb G F
  B: "[eb1,eb2]@2 ~ [eb1,eb2] [bb0,bb1]@2 [c1,c2]@2 [eb1,eb2]@2 ~ [eb1,eb2] [c1,c2]@2 [bb0,bb1]@2", // Eb Bb C Eb C Bb
  C: "[bb0,bb1]@11 ~ [f0,f1]@4", D: "[eb0,eb1]@11 ~ [f0,f1]@4",
  E: "[bb1,bb2]@2 ~ [bb1,bb2] [f1,f2]@2 [g1,g2] ~ [bb1,bb2]@2 ~ [bb1,bb2] ~@2 [g1,g2]@2, ~@3 [f1,f2]", // Bb F G Bb G F
  F: "[f1,f2]@2 ~ [f1,f2] [c1,c2]@2 [d1,d2] ~ [f1,f2]@2 ~ [f1,f2] [d1,d2]@2 [c1,c2]@2", // F C D F D C
  G: "[g1,g2]@2 ~ [g1,g2] [d1,d2]@2 [f1,f2]@2 [g1,g2]@2 ~ [g1,g2] [f1,f2]@2 [d1,d2]@2", // G D F G F D
  H: "[f1,f2]@2 ~ [f1,f2] [c1,c2]@2 [d1,d2] ~ [f1,f2]@2 ~ [f1,f2] [c1,c2]@2 [d1,d2]@2", // F C D F C D
  I: "[g1,g2]@2 ~ [g1,g2] [d1,d2]@2 [d1,d2]@2 [eb1,eb2]@2 ~ [eb1,eb2] [c1,c2]@2 [bb0,bb1]@2", // G D Eb C Bb
  J: "[eb1,eb2]@2 ~ [eb1,eb2] [bb0,bb1]@2 [c1,c2] ~ [eb1,eb2]@2 ~ [eb1,eb2] [c1,c2]@2 [bb0,bb1]@2", // Eb Bb C Eb C Bb
  K: "[eb1,eb2]@2 ~ [eb1,eb2] [bb0,bb1]@2 [c1,c2]@2 [bb1,bb2]@2 ~ [bb1,bb2] [f1,f2]@2 [g1,g2] ~", // Eb Bb C Bb F G
  L: "[bb1,bb2]@2 ~ [bb1,bb2] [g1,g2]@2 [f1,f2]@2 [eb1,eb2]@2 ~ [eb1,eb2] [bb0,bb1]@2 [c1,c2]@2", // Bb G F Eb Bb C
  M: "[eb1,eb2]@2 ~ [eb1,eb2] [c1,c2]@2 [bb0,bb1]@2 [bb1,bb2]@2 ~ [bb1,bb2] [f1,f2]@2 [g1,g2] ~", // Eb C Bb F G
  N: "[eb1,eb2]@2 ~ [eb1,eb2] [c1,c2]@2 [bb0,bb1]@2 [bb0,bb1,bb2]@8", // Eb C Bb
})).s("gm_pad_warm").gain(0.4)

// chords · trombone
const trombone = note("<~@23 A ~@3 B C D C D ~@3 E ~@3 A C D C D ~@31 F@4 ~@7 G H G H G I G J>".pickRestart({
  A: "[g4,c5] ~ [f4,bb4] ~ [f4,bb4] ~ [eb4,g4] ~ [g4,c5]@3 ~ [f4,bb4] ~@3", // C5 Bb5 Eb C5 Bb5
  B: "[g4,c5] ~ [f4,bb4] ~ [f4,bb4] ~ [eb4,g4] ~ [g4,c5]@4 [f4,bb4] ~@3", C: "[bb4,d5,f5]!2 ~ [bb4,d5,f5] ~@12",
  D: "[bb4,eb5,g5]!2 ~ [bb4,eb5,g5] ~@12", E: "[g4,c5] ~ [f4,bb4] ~ [f4,bb4] ~ [eb4,g4] ~ [g4,c5]@4 [f4,bb4]@2 ~@2",
  F: "[~@8 eb5@2 [bb3,d4,f4,bb5] ~@5, ~@4 [eb3,eb4]@15 ~@13, ~@16 g4@23 ~@25, ~@3 bb4@2 bb4@2 ~]/4", // Bb Eb
  G: "~@8 d5 db5 c5 bb4@3 g4 ~", H: "d5 db5 c5 bb4@2 ~ g4 ~@9", I: "d5 db5 c5 bb4@3 g4 ~@9",
  J: "d5 db5 c5 bb4@2 ~ g4 ~ [f4,bb4,d5]@7 ~", // Bb
})).s("gm_trombone").gain(0.4)

// chords · trombone
const trombone_2 = note("<~@23 A ~@3 B C D C D ~@3 E ~@3 A C D C D ~@31 F@4 ~@7 G H G H G I G J>".pickRestart({
  A: "[g5,c6] ~ [f5,bb5] ~ [f5,bb5] ~ [eb5,g5] ~ [g5,c6]@3 ~ [f5,bb5] ~@3", // C5 Bb5 Eb C5 Bb5
  B: "[g5,c6] ~ [f5,bb5] ~ [f5,bb5] ~ [eb5,g5] ~ [g5,c6]@4 [f5,bb5] ~@3", C: "[bb5,d6,f6]!2 ~ [bb5,d6,f6] ~@12",
  D: "[bb5,eb6,g6]!2 ~ [bb5,eb6,g6] ~@12", E: "[g5,c6] ~ [f5,bb5] ~ [f5,bb5] ~ [eb5,g5] ~ [g5,c6]@4 [f5,bb5]@2 ~@2",
  F: "[~@8 eb6@2 [bb4,d5,f5,bb6] ~@5, ~@4 [eb4,eb5]@15 ~@13, ~@16 g5@23 ~@25, ~@3 bb5@2 bb5@2 ~]/4", // Bb Eb
  G: "~@8 d6 db6 c6 bb5@3 g5 ~", H: "d6 db6 c6 bb5@2 ~ g5 ~@9", I: "d6 db6 c6 bb5@3 g5 ~@9",
  J: "d6 db6 c6 bb5@2 ~ g5 ~ [f5,bb5,d6]@7 ~", // Bb
})).s("gm_trombone").gain(0.32)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@4 A@4 ~@11 B C@3 D@4 ~@4 E F@2 G E H@3 ~@15 I J ~@38>".pickRestart({
  A: "[bb2,bb3,bb4,bb5]/4", B: "~@7 [f4,f5]",
  C: "[f6@22 [g5,g6] ~ [d5,d6] [db5,db6] [c5,c6]@2 [bb4,bb5]@2 [g4,g5] [bb4,bb5]@3 [bb4,bb5] ~@13, f5 ~@23]/3", // G D Db C Bb G Bb
  D: "[~@11 [f4,f5]@4 f6@22 ~ [g5,g6] ~ [d5,d6] [db5,db6] [c5,c6]@2 [bb4,bb5]@2 [g4,g5] [bb4,bb5]@2 ~ [bb4,bb5] ~@13, ~@15 f5@4 ~@45]/4", // F G D Db C Bb G Bb
  E: "~@3 [f4,f5]", F: "[f6@22 [g5,g6] ~ [d5,d6] [db5,db6] [c5,c6]@2 [bb4,bb5]@2 ~ [g4,g5], f5 ~@7]/2",
  G: "[bb4,bb5]!2 ~@6", // Bb
  H: "[f6@22 [g5,g6] ~ [d5,d6] [db5,db6] [c5,c6] ~ [bb4,bb5]@2 [g4,g5] [bb4,bb5]@2 ~ [bb4,bb5] ~@13, f5 ~@11]/3", // G D Db C Bb G Bb
  I: "~ [f3,f4] [bb3,bb4] [d4,d5]", J: "[eb4,eb5]@2 [d4,d5] [bb3,bb4]",
})).s("gm_string_ensemble_1").gain(0.26)

// other · slap bass 2 · "STRINGS"
const slap_bass_2 = note("<~@72 A B A C@3 ~@16>".pickRestart({
  A: "[f3,f4]", B: "[g3,g4]", C: "[[g3,g4]@8 [eb3,eb4]@32 [bb3,bb4]@5 ~@3]/3",
})).s("gm_slap_bass_2").gain(0.29)

// other · slap bass 1 · "STRINGS"
const slap_bass_1 = note("<~@85 A B C B C B D B E>".pickRestart({
  A: "~@8 [g4,g5] ~ [f4,f5]!2 ~ [d4,d5] [g4,g5] ~", B: "~@8 d6 db6 c6 bb5@3 g5 ~",
  C: "d6 db6 c6 bb5@2 ~ g5 ~ [g4,g5] ~ [f4,f5]!2 ~ [d4,d5] [g4,g5] ~", // G F D G
  D: "d6 db6 c6 bb5@3 g5 ~ [g4,g5] ~ [f4,f5]!2 ~ [d4,d5] [g4,g5] ~", E: "d6 db6 c6 bb5@2 ~ g5 ~@9",
})).s("gm_lead_8_bass_lead").gain(0.37)

// other · vibraphone
const vibraphone = note(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@4 A B A B A B A
  B A B A B A B A B ~@5 C D E D E D E D E D E D E D E D F
>`.pickRestart({
  A: "d5@2 f4@2 ~ bb4 f4 bb4 d5 f4 bb4 d5 ~ f4 bb4@2", B: "eb5@2 g4@2 ~ bb4 g4 bb4 eb5 g4 bb4 eb5 ~ g4 bb4 ~",
  C: "~@8 d5@2 f4@2 ~ bb4 f4 bb4", D: "d5 f4 bb4 d5 ~ f4 bb4@2 eb5@2 g4@2 ~ bb4 g4 bb4",
  E: "eb5 g4 bb4 eb5 ~ g4 bb4 ~ d5@2 f4@2 ~ bb4 f4 bb4", F: "eb5 g4 bb4 eb5 ~ g4 bb4 ~@9",
})).s("gm_vibraphone").gain(0.28)

// chords · piano · "A.PIANO"
const piano = note(`<
  A B A B A B A B A B A B A B A B A B A B ~@24 A B A B A B A B A B A B A B A B A B A B ~@8 C D C E F G H G H G H G H G H
  G H G H G H ~
>`.pickRestart({
  A: "[bb2,bb3,d4,f4] ~", B: "[eb3,bb3,eb4,g4] ~", C: "[f3,a3,c4]", D: "[g3,bb3,d4]", E: "[g3,bb3,d4] [eb3,g3,bb3]",
  F: "[eb3,g3,bb3]", G: "~ [bb2,bb3,d4,f4]", H: "~ [eb3,bb3,eb4,g4]",
})).s("gm_piano").gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@7 [~@13 x!2 ~] ~@47 [~@13 x!3] ~@38>").gain(0.46)

// drums · kick
const kick = s("bd").struct("<[x!4]!93 [x!2 ~@2]>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@8 [~ x ~ x]!44 ~@4 [~ x ~ x]!37 [~ x ~@2]>").gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@7 B ~@3 B ~@7 B ~@3 B ~@7 A ~@19 B ~@5 C ~@7 D ~@7 C>".pickRestart({
  A: "~@8 x!7 ~", B: "~@8 x!6 ~ x", C: "x!6 ~ x ~@8", D: "x!8 ~@8",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@7 A B C@43 ~@3 A B C@3 B C@32 D>".pickRestart({
  A: "~@8 x!5 ~@3", B: "~ x!15", C: "x!16", D: "x!8 ~@8",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@8 x ~@47 x ~@3 x ~@33>").gain(0.46)

// drums · bongos
const bongos = s("bongo:4").struct("<~@20 A ~@7 A ~@3 A ~@7 A ~@3 A ~@7 A ~@11 A ~@7 A ~@4 B ~@7 B ~@7 B>".pickRestart({
  A: "x", B: "~ x",
})).gain(1.35)

stack(
  bass, trombone, trombone_2, string_ensemble_1, slap_bass_2, slap_bass_1, vibraphone, piano, rim, kick, snare, low_tom,
  hihat, crash, bongos
)