Strudelify
I Give You My Heart cover art

1996 · We See The Same Sun

I Give You My Heart

Mr. President

KeyE majorTempo120 bpm
0:00/0:00
// I Give You My Heart — Mr. President
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · piano · "IGIVEYOU"
const piano = note(`<
  ~ A@2 B C A@2 B C ~@24 A@2 B C A@2 B C A@2 B C A@2 B C ~@24 A@2 B C A@2 B C A@2 B C A@2 B C ~@4 A@2 B C A@2 B C A@2 B
  C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~
>`.pickRestart({
  A: "[b3 c#4, [e4,g#4]]/2", B: "[g#3,b3,d#4]", C: "[a3,c#4,e4] [b3,d#4,f#4]",
})).s("gm_piano").gain(0.04)

// other · synth drum
const synth_drum = note("<~@32 A ~@39 A ~@39 A ~@15 B@2>".pickRestart({
  A: "[c1,c2]@7 ~", B: "[~@7 [c1,c2]@4 ~@5]/2",
})).s("gm_synth_drum").gain(0.37)

// chords · ocarina
const ocarina = note("<~@20 A B ~@2 A B ~@34 A B ~@2 A B ~@64>".pickRestart({
  A: "~@12 [d#5,f#5]@3 ~", B: "[e5,g#5]@3 ~@13",
})).s("gm_ocarina").gain(0.22)

// bass · synth bass 2
const bass = note(`<
  ~@9 A B C D A B C ~ A B C D A B C D A B C D A B C ~ A B C D A B C D A B C D A B C E A B C D A B C ~ A B C D A B C D A
  B C D A B C ~ A B C D A B C D A B C D A B C F A B C D A B C E ~@16 A B C D A B C E A B C D A B C E ~
>`.pickRestart({
  A: "e1 ~ e2 ~ e1 ~ e2 ~ e1 ~ e2 ~ e1 ~ e2 ~", B: "c#1 ~ c#2 ~ c#1 ~ c#2 ~ c#1 ~ c#2 ~ c#1 ~ c#2 ~",
  C: "g#0 ~ g#1 ~ g#0 ~ g#1 ~ g#0 ~ g#1 ~ g#0 ~ g#1 ~", D: "a0 ~ a1 ~ a0 ~ a1 ~ a0 ~ a1 ~ b0 ~ b1 ~",
  E: "a0 ~ a1 ~ a0 ~ a1 ~ a0 ~ a1 ~ a0 ~ a1 ~", F: "a0 ~ a1 ~ a0 ~ a1 ~ a0 ~ a1 ~@5",
})).s("gm_synth_bass_2").gain(0.59)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A B C D A B C D A B C D A B C E ~@8 F G H I F G H ~ J@2 K L J@2 K L M@2 N O M@2 N O A B C D A B C E ~@8 F G H I F G
  H ~ J@2 K L J@2 K L M@2 N O M@2 N O A B C D P Q R ~ S@2 T U S@2 T U S@2 T U S@2 T ~ V@2 W X V@2 W X V@2 W X V@2 W X ~
>`.pickRestart({
  A: "[e4,g#4]", B: "[e4,b4]", C: "[b3,f#4]", D: "[a3,e4] [b3,f#4]", E: "[a3,e4] ~", F: "g#4", G: "b4", H: "f#4",
  I: "e4", J: "[[b3,g#5,g#6] [b4,b5,b6], [e4,g#4]]/2", K: "[b3,d#4,f#4,f#5,f#6]",
  L: "[a3,c#4,e4]@3 [b3,d#4,f#4], [e5,e6]", M: "[g#6 b6, [e4,g#4]]/2", N: "[d#4,f#4,f#6]",
  O: "[c#4,e4]@3 [d#4,f#4], e6", P: "[e4,g#4,g#6]", Q: "[b4,b6]", R: "[f#4,f#6]",
  S: "[[e2,e3,b3] [c#2,c#3,c#4], [e4,g#4]]/2", T: "[g#1,g#2,f#3,b3,d#4]", U: "[a1,a2,a3,c#4,e4]@3 [b1,b2,b3,d#4,f#4]",
  V: "[e4,g#4]/2", W: "[d#4,f#4]", X: "[c#4,e4]@3 [d#4,f#4]",
})).s("gm_synth_strings_1").gain(0.14)

// other · lead 1 square
const lead_1_square = note(`<
  ~@9 A@2 B C A@2 B C ~@4 D E F G ~@24 A@2 B C A@2 B C ~@4 D E F G ~@24 A@2 B C ~@28 A@2 B C A@2 B C ~
>`.pickRestart({
  A: "f#4 g#4 e4 b3 ~ b3 e4 b3", B: "f#4 g#4 d#4 b3 ~ b3 d#4 b3", C: "c#4 e4 d#4 f#4 e4 g#4 f#4 d#4",
  D: "e4 ~@3 e4 ~@2 e4!2 ~ e4 ~ e5 ~ b4 ~", E: "e4 ~@3 e4 ~@2 e4!4 ~ e5 ~ b4 ~",
  F: "e4 ~@3 d#4 ~@2 d#4!2 ~ d#4 ~ d#5 ~ b4 ~", G: "d#4 ~@3 e4 ~@2 e4!4 ~ e5 ~ b4 ~",
})).s("gm_lead_1_square").gain(0.45).pan(0.7)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@33 A B C D E F C D A B C D E F C G A B C D E F C ~@17 A B C D E F C D A B C D E F C G A B C D ~@20 A B C D E F C H A
  B C D E F C I ~
>`.pickRestart({
  A: "e3 ~ e4 ~ e3 ~ e4 ~@3 e4 ~@3 e4 ~", B: "c#3 ~ c#4 ~ c#3 ~ c#4 ~@3 c#4 ~ c#3 ~ c#4 ~",
  C: "g#3 ~ g#4 ~@3 g#4 ~@3 g#4 ~@3 g#4 ~", D: "a3 ~ a4 ~ a3 ~ a4 ~ a3 ~ a4 ~ b3 ~ b4 ~",
  E: "e3 ~ e4 ~@3 e4 ~@3 e4 ~@3 e4 ~", F: "c#3 ~ c#4 ~ c#3 ~ c#4 ~@3 c#4 ~@3 c#4 ~", G: "a3 ~ a4 ~ a3 ~ a4 ~@9",
  H: "a3 ~ a4 ~ a3 ~ a4 ~ a3 ~ a4 ~ a3 ~ a4 ~", I: "a3 ~ a4 ~ a3 ~ a4 ~ a3 ~ a4 ~ a3 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.33).pan(0.3)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@33 A B C ~ D E C ~ A B C ~ D E C ~ A B C ~ D E C ~@17 A B C ~ D E C ~ A B C ~ D E C ~ A B C ~@21 A B C ~ D E C ~ A B
  C ~ D E C ~@2
>`.pickRestart({
  A: "~@8 e3 ~@3 e3 ~@3", B: "~@8 c#3 ~@7", C: "~@4 g#3 ~@3 g#3 ~@3 g#3 ~@3", D: "~@4 e3 ~@3 e3 ~@3 e3 ~@3",
  E: "~@8 c#3 ~@3 c#3 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.22).pan(0.3)

// other · oboe
const oboe = note("<~@41 A B C D A B C D ~@32 A B C D A B C D ~@32 A B C D A B C D ~>".pickRestart({
  A: "~ b4!3", B: "b4@3 ~@13", C: "~@2 b4!4 c#5@2", D: "b4 ~@3",
})).s("gm_oboe").gain(0.37)

// bass · slap bass 1
const bass_2 = note("<~@16 A B C D E F G H@2 ~@32 I J K L M N O P ~@65>".pickRestart({
  A: "~@14 b3 ~", B: "e3@2 ~@6 e3 ~ e3 ~ e3 ~ e3 ~", C: "e3 ~ e3 ~ e3@2 ~@2 e3 ~ e3 ~ e3 ~ e3 ~",
  D: "b3 ~ b3 ~ b3@2 ~@2 e3 ~ e3 ~ e3@2 ~@2", E: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~@3",
  F: "b3@2 b3 ~ b3 ~ e3@2 e3 ~ e3 ~ e3@2 ~@2", G: "e3!2 ~ e3@2 ~@3 e3 ~ e3 ~ e3@2 ~@2",
  H: "[e4 ~ e4@2 b3 ~ b3 ~ e3 ~ e3 ~ e3 ~ e3 e3@2 ~ e3 ~ e3 ~ e3@2 e3 ~@7]/2",
  I: "b3@2 ~@2 e3@2 ~@2 e3 ~ e3 ~ e3@2 ~ e3", J: "b3 ~ e3 ~ e3 ~ e3 ~ g#3 ~ g#3 ~ e3@2 ~@2",
  K: "b3@2 ~@2 g#3 ~ g#3@2 g#3 ~ a3 ~ a#3@2 ~@2", L: "a3 ~ a#3 ~ b3 ~ e3 ~ e3 ~ e3 ~ e3 ~@3",
  M: "b3 ~ e3 ~ e3 ~ e3 ~ g#3 ~ e3 ~ g#3 ~ e3 ~", N: "b3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ g#3 ~ g#3 ~",
  O: "b3 ~ e3 e3@2 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~", P: "g#3 ~ e3 ~ g#3 ~ g#3 ~ e3 ~@7",
})).s("gm_slap_bass_1").gain(0.37)

// chords · lead 2 sawtooth
const lead_2_sawtooth_2 = note(`<
  ~ A B C D A B C D A B C D A B E F ~@8 G H I J G H I ~ A B C D A B C D A B C D A B C D ~@4 A K E L ~@8 G H I J G H I ~
  A B C D A B C D A B C D A B C D ~@4 G H I J ~@8 A B C D A B C M A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "[b3,e4,g#4] ~@3 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~", // E
  B: "[c#4,e4,g#4,b4] ~@3 [c#4,e4,g#4] ~@5 [c#4,e4,g#4] ~@3 [c#4,e4,g#4] ~", // C#m7 C#m
  C: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // B
  D: "[a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [b3,d#4,f#4] ~@3", // A B
  E: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~, e6 ~@3", F: "e2@3 ~@5",
  G: "e3 ~ e4 ~ e3 ~ e4 ~ e3 ~ e4 ~ e3 ~ e4 ~", H: "c#3 ~ c#4 ~ c#3 ~ c#4 ~ c#3 ~ c#4 ~ c#3 ~ c#4 ~",
  I: "g#3 ~ g#4 ~ g#3 ~ g#4 ~ g#3 ~ g#4 ~ g#3 ~ g#4 ~", J: "a3 ~ a4 ~ a3 ~ a4 ~ a3 ~ a4 ~ b3 ~ b4 ~",
  K: "[c#4,e4,g#4] ~@3 [c#4,e4,g#4] ~@5 [c#4,e4,g#4] ~@3 [c#4,e4,g#4] ~", // C#m
  L: "[a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [b3,d#4,f#4] ~@3, e2@3 ~@5", M: "[c#4,e4] ~@15",
})).s("gm_lead_2_sawtooth").gain(0.29).pan(0.7)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@101 A B A@3 B A@3 B A C ~@17>".pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x",
})).gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A@7 B A@6 C ~ A@7 D A@7 B ~@8 A@7 B A@6 D ~ A@7 D A@7 B A@3 E A@2 B ~@17 A@7 F A@8 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@2 x ~@3 x!2", D: "~@4 x ~@3 x ~ x!6", E: "~@4 x ~@3 x ~ x!3 ~ x ~",
  F: "~@4 x ~@6 x!2 ~ x!2",
})).gain(0.37)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@17 A@7 B A@6 C ~ A@15 ~@9 A@7 B A@7 ~ A@15 ~ A@3 D ~@2 E ~@34>".pickRestart({
  A: "~@7 x ~@8", B: "~@10 x!3 ~@3", C: "~@7 x!2 ~ x!2 ~ x ~ x", D: "~@3 x ~@4", E: "~@3 x",
})).gain(0.16)

// drums · clap
const clap = s("cp").struct(`<
  ~@17 A@7 B A@6 B ~ A@7 B A@7 B ~@8 A@7 B A@6 B ~ A@7 B A@7 B A@3 B A@2 B ~@17 A@7 B A@8 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.32)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@101 [~@4 x ~@2 x ~@4 x ~@3]!4 ~@25>").gain(0.05)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@23 ~ A@15 B A@7 ~ A@15 ~ A@15 C A@7 ~@17 A@15 C ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~ x ~ x ~ x ~@2",
})).gain(0.53)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@97 [x!16]!15 ~@18>").gain(0.16)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@9 A@7 ~ B@15 ~ B@15 C A@7 ~ B@15 ~ B@15 D A@4 B@3 ~@17 B@16 ~>".pickRestart({
  A: "x!16", B: "x!8", C: "x!4 ~@4", D: "x!6 ~@2",
})).gain(0.32)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@17 A@15 ~ A@15 B ~@8 A@15 ~ A@15 C ~@4 A@3 ~@17 A@15 D ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~@8", C: "~ x ~ x ~ x ~ x ~ x ~ x ~@4",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
})).gain(0.16)

stack(
  piano, synth_drum, ocarina, bass, synth_strings_1, lead_1_square, lead_2_sawtooth, lead_2_sawtooth_soft, oboe, bass_2,
  lead_2_sawtooth_2, kick, kick_soft, snare, snare_soft, clap, clap_soft, hihat, hihat_soft, crash, tambourine,
  tambourine_soft
)

More by Mr. President