Strudelify

I Show You Secrets

Pharao

KeyG♯ minorTempo120 bpm
0:00/0:00
// I Show You Secrets — Pharao
// 120 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 129 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.

// bass · lead 2 sawtooth · "SAW WAVE"
const bass = note(`<
  ~@13 A@4 B@2 C B A@4 B@2 C B A@4 B@2 C B ~@4 A@20 B@2 C B A@4 B@2 C B ~@4 A@20 B@2 C B A@4 B@2 C B ~@4 A@4 B@2 C B A@4
  B@2 C D
>`.pickRestart({
  A: "~@2 g#2@2 ~@2 [g#1,g#2]@2 ~@2 [g#1,g#2]@2 ~@2 [g#1,g#2] ~, g#1 ~@3", // G#
  B: "~@2 f#2@2 ~@2 [f#1,f#2]@2 ~@2 [f#1,f#2]@2 ~@2 [f#1,f#2] ~, f#1 ~@3", // F#
  C: "~@2 e2@2 ~@2 [e1,e2]@2 ~@2 [e1,e2]@2 ~@2 [e1,e2] ~, e1 ~@3", D: "f#1 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.4)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@5 A B A B C D E D A B A B C D E D F G F G H I J I F G F G H I J I ~@20 F G F G H I J I F G F G H I J I ~@20 F G F G
  H I J I F G F G H I J I ~@4 A B A B C D E D F G F G H I J ~
>`.pickRestart({
  A: "g#3!2 b3 d#4 e4 d#4 b3 g#3", B: "g#3!2 b3 d#4 e4 d#4 b3 f#4", C: "f#3!2 a#3 c#4 d#4 c#4 a#3 f#3",
  D: "f#3!2 a#3 c#4 d#4 c#4 a#3 f#4", E: "e3!2 g#3 b3 c#4 b3 g#3 e3", F: "~@2 b3 d#4 e4 d#4 b3 ~",
  G: "~@2 b3 d#4 e4 d#4 b3 f#4", H: "~@2 a#3 c#4 d#4 c#4 a#3 ~", I: "~@2 a#3 c#4 d#4 c#4 a#3 f#4",
  J: "~@2 g#3 b3 c#4 b3 g#3 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// other · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@21 A B A B C D E D A B A B C D E D ~@20 A B A B C D E D A B A B C D E D ~@20 A B A B C D E D A B A B C D E D ~@12 A
  B A B C D E F
>`.pickRestart({
  A: "g#3!2 ~@5 g#3", B: "g#3!2 ~@6", C: "f#3!2 ~@5 f#3", D: "f#3!2 ~@6", E: "e3!2 ~@5 e3", F: "f#3 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// other · pad warm · "WARM PAD"
const pad_warm = note(`<
  A@5 B@6 C@2 D@4 E@2 F G D@4 E@2 F G D@4 E@2 F G ~@20 D@4 E@2 F G D@4 E@2 F G ~@20 D@4 E@2 F G D@4 E@2 F G ~@12 D@4 E@2
  F G
>`.pickRestart({
  A: "[~@4 g#3@5 ~@11 g#3@5 ~@11 g#3@4, [f1,g#1]]/5", // Fm
  B: "[~@4 g#3@5 ~@3 g#3@5 ~@3 g#3@5 ~@11 g#3@5 ~@7, f1@5 ~, [g#1,g#2]@2 [f#1,f#2]]/6", // G# F#
  C: "[~ [f#1,f#2], [e1,e2] ~, ~@4 g#3@5 ~@7]/2", D: "[g#1,g#2]/4", E: "[f#1,f#2]/2", F: "[e1,e2]", G: "[f#1,f#2]",
})).s("gm_pad_warm").gain(0.47)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@5 A@6 B C A@6 B C D@6 E F D@6 E F ~@12 G@8 D@6 E F D@6 E F ~@12 G@8 D@6 E F D@6 E F ~@4 A@6 B C D@6 E F
>`.pickRestart({
  A: "[g#3 ~ [a#3,c#4], [b3,d#4]@2 ~, ~ f#3@2]/6", B: "[e3,g#3,b3]", C: "[f#3,a#3,c#4]",
  D: "[g#3 ~ [a#3,c#4,c#6], [b3,d#4,d#6]@2 ~, ~ f#3@2]/6", E: "[e3,g#3,b3,e6]", F: "[f#3,a#3,c#4,f#6]",
  G: "[d#4@2 ~ [f#3,a#3], g#3, b3@3 ~, ~ c#4]/4", // F#
})).s("gm_string_ensemble_2").gain(0.1)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@21 A@2 B@2 C@2 D E A@2 B@2 C@2 D E F G@2 H ~@16 A@2 B@2 C@2 D E A@2 B@2 C@2 D E F G@2 H ~@16 A@2 B@2 C@2 D E A@2 B@2
  C@2 D E F G@2 H ~@8 A@2 B@2 C@2 D ~
>`.pickRestart({
  A: "~@2 g#6 ~ d#6 ~ g#6 ~ d#6 ~ g#6 ~ b6@2 g#6 ~", B: "~@2 b6 ~ f#6 ~ b6 ~ f#6 ~ b6 ~ d#7@2 b6 ~",
  C: "~@2 f#6 ~ c#6 ~ f#6 ~ c#6 ~ f#6 ~ a#6@2 f#6 ~", D: "~@2 g#6 ~ e6 ~ g#6 ~ e6 ~ g#6 ~ b6@2 g#6 ~",
  E: "~@2 g#6 ~ f#6 ~ g#6 ~ f#6 ~ a#6 ~ b6@2 c#7 ~", F: "~@2 g#5 ~ d#5 ~ g#5 ~ d#5 ~ g#5 ~ b5@2 g#5 ~",
  G: "b5@2 g#5 ~ b5@2 g#5 ~ d#5 ~ g#5 ~ b5@2 g#5 ~, ~@4 d#5 ~@11", H: "b5@2 g#5 ~ b5@2 g#5 ~@9",
})).s("gm_synth_brass_1").gain(0.33).pan(0.6)

// bass · synth bass 2 · "SYN BASS 2"
const bass_2 = note(`<
  ~@37
  [g#2 g#3 g#2 g#3 g#2@2 g#3!3 ~@7, ~@4 g#3 ~@11]!4
  ~@32
  [g#2 g#3 g#2 g#3 g#2@2 g#3!3 ~@7, ~@4 g#3 ~@11]!4
  ~@32
  [g#2 g#3 g#2 g#3 g#2@2 g#3!3 ~@7, ~@4 g#3 ~@11]!4
  ~@16
>`).s("gm_synth_bass_2").gain(0.27)

// bass · synth bass 2 · "SYN BASS 2" · soft notes
const bass_soft = note(`<
  ~@37
  [~@8 g#2@2 g#3!2 g#2@2 ~@2, ~@12 g#3 ~@3]!4
  ~@32
  [~@8 g#2@2 g#3!2 g#2@2 ~@2, ~@12 g#3 ~@3]!4
  ~@32
  [~@8 g#2@2 g#3!2 g#2@2 ~@2, ~@12 g#3 ~@3]!4
  ~@16
>`).s("gm_synth_bass_2").gain(0.13)

// other · synth drum
const synth_drum = note("<~@13 A@7 B A@15 B ~@3 B A@15 B A@15 B ~@3 B A@15 B A@15 B ~@4 A@7 B A@7 C>".pickRestart({
  A: "d#1 ~@3 d#1 ~@3 d#1 ~@3 d#1 ~@3", B: "d#1 ~@3 d#1 ~@3 d#1 ~@7", C: "d#1 ~@15",
})).s("gm_synth_drum").gain(0.5)

// chords · whistle
const whistle = note(`<
  A@2 B@10 ~@8 C@2 ~@14 C@2 ~ C@2 ~@15 C@2 ~@14 C@2 ~ C@2 ~@15 C@2 ~@14 C@2 ~ C@2 ~@7 D ~@8
>`.pickRestart({
  A: "[c#8 c8!2 e8!2 [d8,g8] c8 d8 d#6@16 ~@8, [b7,e8,a8] ~@7, ~ d#7@11 ~@4]/2", B: "[~ d#6@2 ~]/2",
  C: "[~@8 e8@13 ~@11]/2", D: "~ e8",
})).s("gm_whistle").gain(0.05)

// chords · whistle · soft notes
const whistle_soft = note("<[~@8 c8 d8 d#8 e8 ~@4] ~@128>").s("gm_whistle").gain(0.03)

// chords · steel drums · "STEEL DRUM"
const steel_drums = note("<A@8 B ~ B ~@118>".pickRestart({
  A: "[f0@3 ~@5 [g#0,g#1]@10 ~@14, ~@3 c1@13 ~@16]/2", B: "f0@3 c1@13",
})).s("gm_steel_drums").gain(0.6)

// drums · kick
const kick = s("bd").struct("<~@13 A@7 B A@15 B ~@3 B A@15 B A@15 B ~@3 B A@15 B A@15 B ~@4 A@7 B A@7 ~>".pickRestart({
  A: "x!4", B: "x!3 ~",
})).gain(0.67)

// drums · clap
const clap = s("cp").struct("<~@21 A@16 ~@4 A@32 ~@4 A@32 ~@4 A@15 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.33)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@21 A@16 ~@20 A@16 ~@20 A@16 ~@12 A@7 ~>".pickRestart({
  A: "~@9 x ~@6",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A@11 B A@15 B A@3 B A@15 B A@15 B A@3 B A@15 B A@15 B A@3 B A@7 B A@7 ~
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x ~@7",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@9 A@11 B A@15 B A@3 B A@15 B A@15 B A@3 B A@15 B A@15 B A@3 B A@7 B A@7 ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.33)

// drums · bongos
const bongos = s("bongo:4").struct("<~@45 [~@9 x ~@2 x ~@3]!12 ~@24 [~@9 x ~@2 x ~@3]!12 ~@20 [~@9 x ~@2 x ~@3]!8 ~@8>")
  .gain(0.88)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@45 [~ x]!12 ~@24 [~ x]!12 ~@20 [~ x]!8 ~@8>").gain(0.88)

// drums · shaker
const shaker = s("sh").struct("<~@21 A@16 ~@8 A@28 ~@8 A@28 ~@4 A@14 B ~>".pickRestart({
  A: "x!16", B: "x!15 ~",
})).gain(0.2)

stack(
  bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, pad_warm, string_ensemble_2, synth_brass_1, bass_2, bass_soft,
  synth_drum, whistle, whistle_soft, steel_drums, kick, clap, clap_soft, hihat, open_hat, bongos, bongos_2, shaker
)

More by Pharao