Strudelify

Sent From Up Above

Mariah Carey

KeyA minorTempo103 bpm
0:00/0:00
// Sent From Up Above — Mariah Carey
// 103 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(103/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 · sitar
const sitar = note(`<
  A B C@2 D E F@3 ~@15 A B G@2 D H I@3 ~@15 A B J@2 D E I@3 A B C@2 D H I@3 ~@9 A B C@2 K H L@3 B C@2 M H N@3 B C@2 D H
  O@3 ~
>`.pickRestart({
  A: "~@4 a4 b4 c5 d5", B: "[c5,e5]@5 ~@5 c5@2 ~ d5@2 ~",
  C: "[[d4,g4,b4]@5 ~@3 [b4,d5]@4 a5 ~@3 c5@11 ~@5, ~@8 g5@3 ~@3 e5@16 ~@2]/2", D: "~@8 a4 ~ b4 ~ c5 ~ d5 ~",
  E: "[c5,e5]@6 ~@4 c5@2 ~ d5@2 ~, d5 ~@15", // C
  F: "[[g4,b4]@5 ~@3 e4@3 ~ g4@2 ~@2 a4@4 a4@16 ~@12, d4@11 ~@3 g4@5 ~@29, ~@16 [c4,e4]@27 ~@5]/3", // G C
  G: "[[d4,g4,b4]@5 ~@3 g5@3 ~ a5 ~@3 c5@11 ~@5, ~@4 [b4,d5]@3 e5@8 ~]/2", H: "[c5,e5]@5 ~@5 c5@2 ~ d5@2 ~, d5 ~@15",
  I: "[[g4,b4]@5 ~@3 e4@3 ~ g4 ~@3 a4@4 a4@16 ~@12, d4@11 ~@3 g4@5 ~@29, ~@16 [c4,e4]@27 ~@5]/3", // G C
  J: "[[d4,g4,b4]@5 ~@3 [b4,d5]@4 a5@2 ~@2 c5@11 ~@5, ~@8 g5@3 ~@3 e5@16 ~@2]/2", K: "~@8 a4 ~ b4 ~ c5@2 d5 ~",
  L: "[[g4,b4]@5 ~@3 e4@3 ~ g4 ~@3 a4@4 a4@16 ~@4 a4@2 b4@2 c5@2 d5@2, d4@11 ~@3 g4@6 ~@28, ~@16 [c4,e4]@27 ~@5]/3", // G C
  M: "~@8 a4@2 b4@2 c5 ~ d5@2",
  N: "[[g4,b4]@5 ~@3 e4@3 ~ g4 ~@3 a4@4 a4@16 ~@4 a4@2 b4@2 c5@2 d5@2, d4@11 ~@3 g4@5 ~@29, ~@16 [c4,e4]@27 ~@5]/3", // G C
  O: "[[g4,b4]@6 ~@2 e4@3 ~ g4 ~@3 a4@4 a4@16 ~@12, d4@11 ~@3 g4@5 ~@29, ~@16 [c4,e4]@27 ~@5]/3", // G C
})).s("gm_sitar").gain(0.6)

// chords · acoustic guitar steel · "guitar 2"
const acoustic_guitar_steel = note(`<
  ~ A B C D E B F G H I J K L M N O H P Q R S M T U A B C D E B F G V P Q K W M N O H P X R L Y Z U A B C D E B F G U A
  B C D E B F G ~@9 O A B C D E B F AA A B C D E B F AA A B C D E B F G ~
>`.pickRestart({
  A: "[f4,a4,c5]@2 ~ [f4,a4] [f4,a4,c5]@2 c4!2 [f4,a4,c5]@2 ~ [f4,a4] [f4,a4,c5]@3 ~", // F
  B: "[e4,g4,b4]@2 ~ [e4,g4] [e4,g4,b4]@3 ~ [e4,g4,b4]@2 ~ [e4,g4] [e4,g4,b4]@3 ~", // Em
  C: "[e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@2 [e4,a4,c5] ~ [e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@2 [e4,a4,c5] ~", // Am
  D: "[e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@3 ~ [e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@2 [a4,c5] ~", // Am
  E: "[d4,f4,a4]@2 ~ [d4,f4,a4]!5 [d4,f4,a4]@2 ~ [d4,f4,a4] [d4,f4,a4]@3 ~", // Dm
  F: "[e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@3 ~ [e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@2 [e4,a4,c5] ~", // Am
  G: "[e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@3 ~ [e4,a4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@3 ~", // Am
  H: "[e4,g4,c5]!3 ~@2 [e4,g4,c5]!4 ~@3 [e4,g4,c5]!3 ~", // C
  I: "~ [e4,g4,c5]!4 ~@3 [e4,g4,c5]!2 [e4,g4,c5]@2 ~ [e4,g4,c5]!3", // C
  J: "[d4,f#4,a4] ~@3 [d4,f#4,a4]!2 [d4,f#4,a4]@2 ~ [d4,f#4,a4]!3 [d4,f#4,a4]@2 ~@2", // D
  K: "[d4,f#4,a4]!3 ~@2 [d4,f#4,a4]!3 [d4,f#4,a4]@2 ~@6", L: "[d4,f4,a4]!3 ~@2 [d4,f4,a4]!4 ~@3 [d4,f4,a4]!3 ~",
  M: "~ [c4,f4,a4]!4 ~@3 [c4,f4,a4]!2 [f4,a4]@2 ~ [c4,f4,a4]!3", // F
  N: "[c4,f4,b4] ~@3 [c4,f4,b4] ~ [f4,b4] ~@2 [c4,f4,b4]!4 ~@3, ~@5 [c4,f4]@2 ~@9", // F Fdim F F5
  O: "[e4,g#4,b4]!2 [e4,g#4,b4]@2 ~ [e4,g#4,b4]!4 ~@7", P: "~ [e4,g4,c5]!4 ~@3 [e4,g4,c5]!3 ~@2 [e4,g4,c5]!3",
  Q: "[d4,f#4,a4] ~@3 [d4,f#4,a4]!3 ~@2 [d4,f#4,a4]!4 ~@3", R: "[d4,f#4,a4]!3 ~@2 [d4,f#4,a4]!4 ~@7",
  S: "[d4,f4,a4]!3 ~@2 [d4,f4,a4]!3 [d4,f4,a4]@2 ~@2 [d4,f4,a4]!3 ~", // Dm
  T: "[c4,f4,b4]@2 ~@2 [c4,f4,b4] [c4,f4] [f4,b4] ~@2 [c4,f4,b4]!4 ~@3", U: "[e4,g#4,b4]!3 ~@2 [e4,g#4,b4]!4 ~@7",
  V: "[e4,g4,c5]!3 ~@2 [e4,g4,c5]!4 ~@3 [e4,g4,c5]!2 [e4,g4,c5]@2", // C
  W: "[d4,f4,a4]!3 ~@2 [d4,f4,a4]!4 ~@3 [d4,f4,a4]!2 [d4,f4,a4]@2", // Dm
  X: "[d4,f#4,a4] ~@3 [d4,f#4,a4]!3 ~@2 [d4,f#4,a4]!3 [d4,f#4,a4]@2 ~@2", // D
  Y: "~ [c4,f4,a4]!4 ~@3 [c4,f4,a4]!2 [f4,a4] ~@2 [c4,f4,a4]!3", // F
  Z: "[c4,f4,b4] ~@3 [c4,f4,b4] [c4,f4] [f4,b4] ~@2 [c4,f4,b4]!3 [c4,f4,b4]@2 ~@2", // F F5 Fdim F
  AA: "[e4,g#4,a4,b4,c5] [e4,g#4,b4]!2 [e4,a4,c5] e4 [e4,g#4,b4]!3 [e4,g#4,a4,b4,c5]@2 ~ [e4,a4,c5] [e4,a4,c5]@3 ~, ~@4 [a4,c5]@3 ~@9", // E Am E Am
})).s("gm_acoustic_guitar_steel").gain(0.3)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~ A B C@2 D B E@2 F G H I J K L M N G H I J O P Q R S T U V W X Y N G Z AA J AB P M AC G H AA J K P Q R S X U V W AD
  AE Q R AF AG U V W X Y X AH ~@4 AI AJ AC Q R S X U AK AL X AM R S X U V W X AM R AF X U V W X Y ~
>`.pickRestart({
  A: "f2@11 ~@5", B: "e2@11 ~@5", C: "a2@11 ~@5", D: "d2@11 ~@5", E: "[a2@27 ~@3 g2 ~, ~@27 a2@5]/2",
  F: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 ~ a2 ~ c3@2", G: "a2@3 ~ a2@2 ~ a2 e3@3 ~ d3 c3 a2 g2",
  H: "a2@3 ~ g2@2 ~ g2 a2 ~ g2 ~ a2 ~ c3 ~", I: "a2@3 ~ a2@2 ~ g2 a2@2 ~ g2 a2@2 g2 e2",
  J: "d2@3 ~ d2@2 ~ c2 d2@4 ~@2 d2 e2", K: "f2@3 ~ f2@2 ~ e2 f2 ~ f2@3 ~ f2 ~",
  L: "e2@3 ~ e2@2 ~ d2 e2@2 d2 ~ e2 ~ d2 ~", M: "e2@3 ~ e2@2 ~ d2 e2@3 ~@2 g#2@2 ~",
  N: "a2@3 ~ a2@2 ~ g2 a2@2 g2 ~ a2 ~ c3 ~", O: "f2@3 ~ f2@2 ~ e2 f2 ~ f2@3 ~ f2@2",
  P: "e2@3 ~ e2@2 ~ d2 e2 ~ d2 ~ e2 ~ d2 ~", Q: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~", R: "f2@3 ~ f2@2 ~ e2 f2@3 ~@3 f2 ~",
  S: "e2@3 ~ e2@2 ~ d2 e2 ~ d2 ~ e2 ~ g2 ~", T: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 ~ a2@2 g2 ~",
  U: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 a2@2 ~ a2 ~", V: "d2@3 ~ d2@2 ~ c2 d2 ~ d2@3 ~ d2!2",
  W: "e2@3 ~ e2@2 ~ d2 e2 ~ e2@3 ~ e2 g2", X: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 ~ a2 ~ g2 ~",
  Y: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 a2 ~ c3 d3 e3", Z: "a2@3 ~ g2@2 ~ g2 a2 ~ g2 ~ a2 ~ c3@2",
  AA: "a2@3 ~ a2@2 ~ g2 a2@2 ~ g2 a2 ~ g2 e2", AB: "f2@3 ~ f2@2 ~ e2 f2@2 f2@3 ~ f2 ~",
  AC: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 ~ a2 ~ c3 ~", AD: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 ~ a2 ~ g2@2",
  AE: "a2@3 ~ a2@2 ~ g2 a2@2 g2 a2 ~ c3 d3 e3", AF: "e2@3 ~ e2@2 ~ d2 e2 ~ d2 ~ e2@2 g2 ~",
  AG: "a2@3 ~ a2@2 ~ g2 a2 ~ g2@2 a2 ~ g2 ~", AH: "a2@3 ~ a2@2 ~ g2 a2 ~ g2 a2 ~ c2 d2 e2",
  AI: "d2@3 ~ d2@2 ~ c2 d2 ~@5 d2!2", AJ: "e2@3 ~ e2@2 ~ e2 ~@2 e2 ~@3 g2 ~", AK: "d2@3 ~ d2@2 ~ c2 d2@2 d2@3 ~ d2!2",
  AL: "e2@3 ~ e2@2 ~ d2 e2@2 e2@3 ~ e2 g2", AM: "[e2,a2]@3 ~ [e2,a2]@3 g2 e2@2 g2 a2 ~ c3 d3 e3, ~@8 a2 ~@3 e2@3 ~",
})).s("gm_electric_bass_finger").gain(0.71)

// chords · pad warm · "sinth"
const pad_warm = note(`<
  ~ A B C@2 D B C@2 ~@16 A B C@2 D B C@2 ~@16 A B C@2 D B C@2 ~ A B C@2 D B C@2 ~@10 A B C@2 D B C@2 A B C@2 D B C@2 A B
  C@2 D B C@2 ~
>`.pickRestart({
  A: "[f4,a4,c5]", B: "[e4,g4,b4]", C: "[e4,a4,c5]", D: "[f4,a4,d5]",
})).s("gm_pad_warm").gain(0.3)

// chords · synth strings 1 · "sinth 2"
const synth_strings_1 = note(`<
  ~ A B C@2 A D E@2 ~@16 A B C@2 A D E@2 ~@16 A B C@2 A D E@2 ~ A B C@2 A D E@2 ~@10 A B C@2 A D E@2 A B C@2 A D E@2 A B
  C@2 A D E@2 ~
>`.pickRestart({
  A: "[a3,c4,f4]", B: "[b3,e4,g4]", C: "[c4,e4,a4]", D: "[g3,b3,e4]", E: "[a3,c4,e4]",
})).s("gm_synth_strings_1").gain(0.45).pan(0.6)

// chords · piano · "keyboard"
const piano = note(`<
  ~@9 A@2 B@2 C@2 D E A@2 B@2 C@2 D F ~@8 A@2 G@2 C@2 D H A@2 G@2 C@2 D F ~@8 F ~@12 I@2 ~@3 J ~@7 F ~@7 F ~@9
>`.pickRestart({
  A: "[g4@3 e4]/2", B: "[[f#4,a4]@24 ~@2 d#4@3 ~@3]/2", C: "[[f4,a4,c5]@8 ~@6 [f4,a4,c5]@4 [c4,e4,a4]@11 ~@3]/2",
  D: "d4@11 ~@5", E: "[d4,g#4]@5 ~@5 a4@2 ~ c5@2 ~", F: "[d4,g#4]@5 ~@11", G: "[[f#4,a4]@24 ~@3 d#4@3 ~@2]/2",
  H: "[d4,g#4]@6 ~@4 a4@2 ~ c5@2 ~", // Ddim
  I: "[g4 ~ a4 ~ g4 e4 [e4,a4,c#5] ~ g4 ~ a4 ~ a4 ~ g4 a4@2 ~ c5@3 ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5]@3 ~]/2", // A
  J: "[d4,g#4]@3 ~@5", // Ddim
})).s("gm_piano").gain(0.38)

// drums · kick
const kick = s("bd").struct("<~@9 A@23 ~ A@23 ~ A@8 ~ A@33 ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3",
})).gain(0.66)

// drums · snare
const snare = s("sd").struct("<~@8 A B@23 A B@23 A B@8 A B@17 A B@7 A B@7 A ~>".pickRestart({
  A: "x!16", B: "~ x ~@3 x ~@2",
})).gain(0.66)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x!5 ~ x!4 ~@6]!68 ~@4 [x!5 ~ x!4 ~@6]!28 ~>").gain(0.66)

// drums · open hat
const open_hat = s("oh").struct("<A B@6 C B C@23 B C@23 B C@8 B C@2 B@4 C@27 B ~>".pickRestart({
  A: "~@5 x ~@6 x ~@3", B: "~@3 x", C: "~ x ~ x",
})).gain(0.66)

stack(sitar, acoustic_guitar_steel, bass, pad_warm, synth_strings_1, piano, kick, snare, pedal_hat, open_hat)

More by Mariah Carey