Strudelify

Right In The Night

Jam & Spoon

KeyC minorTempo135 bpm
0:00/0:00
// Right In The Night — Jam & Spoon
// 135 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 167 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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.

// other · lead 8 bass lead · "BASS&LEAD"
const lead_8_bass_lead = note(`<
  ~@40 A B C D E F@2 G B@3 H E I J G ~@94 K L K L K L M L K L M N K N M N ~
>`.pickRestart({
  A: "c2 ~ c2@3 ~ c2@2 ~@2 c2@3 ~ c2 ~", B: "c2 ~ c2@2 ~@2 c2@2 ~@2 c2@3 ~ c2 ~", C: "c2 ~ c2@2 ~@2 c2@3 ~ c2@3 ~ c2 ~",
  D: "c2 ~ c2@3 ~ d2@2 ~@2 eb2@3 ~ eb2@2", E: "ab1@2 ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~ ab1 ~",
  F: "ab1 ~ ab1@2 ~@2 ab1@2 ~@2 ab1@3 ~ ab1 ~", G: "ab1 ~ ab1@2 ~@2 ab1 ~ bb1 ~ bb1@2 ~@2 bb1 ~",
  H: "c2 ~ c2@3 ~ d2@3 ~ eb2@3 ~ eb2@2", I: "ab1 ~ ab1@3 ~ ab1@2 ~@2 ab1@3 ~ ab1 ~",
  J: "ab1 ~ ab1@2 ~@2 ab1@3 ~ ab1@3 ~ ab1 ~", K: "d5!2 eb5 c4 c5 c4 d5 c4 g5 ~ c4 eb5 ~ c4 d5 ~",
  L: "d5!2 eb5 c4 c5 ~ d5 c4 g5 ~ d5 eb5 ~ c4 d5 ~", M: "d5!2 eb5 c4 c5 ~ d5 c4 g5 ~ c4 eb5 ~ c4 d5 ~",
  N: "d5!2 eb5 c4 c5 c4 d5 c4 g5 ~ d5 eb5 ~ c4 d5 ~",
})).s("gm_lead_8_bass_lead").gain(0.27)

// other · lead 8 bass lead · "BASS&LEAD" · soft notes
const lead_8_bass_lead_soft = note("<~@150 A B A B A B@3 A B@2 A@3 B A ~>".pickRestart({
  A: "c4 ~@8 g4 ~@2 g4 ~@2 g4", B: "c4 ~@4 c4 ~@3 g4 ~@2 g4 ~@2 g4",
})).s("gm_lead_8_bass_lead").gain(0.17)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@40 A@8 B@4 C@4 D@2 ~@28 A@8 B@4 C@4 ~@8 A@8 ~@16 A@8 B@4 C@4 A@8 B@4 C@4 ~
>`.pickRestart({
  A: "[c5@4 bb4@2 d5 eb5 c5@6 d5 [bb2,eb5], [eb4,g4], c3@8 ab2@7 ~]/8", B: "[c5@32 bb4@16 d5@8 eb5@7 ~, c3]/4",
  C: "[c5@6 d5 [bb2,eb5], ab2@7 ~]/4", D: "[[c3,c5]@31 ~]/2",
})).s("gm_synth_strings_1").gain(0.24).pan(0.4)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C@2 D E F@2 G H I@2 J@2 K@2 L M@2 N M@3 N A B O@2 A B C@2 A B C@2 A B C@2 ~@62 A B O@2 A B C@2 A B C@2 A B C@2
  ~@49
>`.pickRestart({
  A: "c3 g3@2 c3 ~ c3@2 c3 ~ c3@2 c3@2 c3 ~ c3", B: "c3 g3@2 c3 ~ c3@2 c3@2 c3@2 c3@2 c3@2 c3",
  C: "[~ g3@2 c3@2 c3 ~ c3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3 ~ c3 ~ c3@2 c3 ~ c3@2 c3 ~ c3, c3@3 ~@29]/2",
  D: "c3 g3@2 c3@2 c3 ~ c3@2 c3@2 c3 ~ c3@2 c3", E: "c3 g3@2 c3@2 c3@2 c3@2 c3@2 c3 ~ c3 ~ c3",
  F: "[c3 g3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3 ~ c3@2 c3 ~ c3 ~ c3@2 c3 ~ c3 ~ c3]/2",
  G: "c3 g3@2 c3@2 c3 ~ c3@2 c3 ~ c3@2 c3 ~ c3", H: "c3 g3@2 c3@2 c3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3",
  I: "[c3 g3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2 c3@2 c3 ~ c3 ~ c3 ~ c3@2 c3 ~ c3 ~ c3 ~ c3]/2",
  J: "c3 g3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3",
  K: "[c3 g3@2 c3@2 c3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3@2 c3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3@2 c3 ~ c3]/2",
  L: "bb2 f3@2 bb2@2 bb2 ~ bb2 ~ bb2 ~ bb2@2 bb2 ~ bb2", M: "bb2 f3@2 bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2",
  N: "~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2",
  O: "[c3 g3@2 c3@2 c3 ~ c3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3 ~ c3 ~ c3@2 c3 ~ c3@2 c3 ~ c3]/2",
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.3)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A@2 B C A D B C E@2 F G E@2 F H I@3 J K@2 I L B@3 M B@3 M B@3 M B@3 M ~@62 B@3 M B@3 M B@3 M B@3 M ~@49
>`.pickRestart({
  A: "~@2 g4 ~ ab4 ~ f4 ~ g4 ~ eb4 ~ f4@2 d4 ~", B: "~@2 g4 ~ ab4 ~ f4 ~ g4 ~ eb4 ~ f4 ~ d4 ~",
  C: "eb4 ~ c4 ~ d4 ~ b3 ~ c4 ~ g3 ~ ab3@2 f3 ~", D: "~@2 g4 ~ ab4 ~ f4 ~ g4 ~ eb4 ~ f4 ~ d4@2",
  E: "~@2 c5 ~ db5 ~ bb4 ~ c5 ~ ab4 ~ bb4@2 g4 ~", F: "~@2 c5 ~ db5 ~ bb4 ~ c5 ~ ab4 ~ bb4 ~ g4 ~",
  G: "ab4@2 f4@2 g4 ~ e4 ~ f4 ~ c4 ~ db4@2 bb3 ~", H: "ab4 ~ f4 ~ g4 ~ e4 ~ f4 ~ c4 ~ db4@2 bb3 ~",
  I: "~@2 bb4 ~ b4 ~ ab4 ~ bb4 ~ gb4 ~ ab4 ~ f4 ~", J: "gb4 ~ eb4 ~ f4 ~ d4 ~ eb4 ~ bb3 ~ b3@2 ab3 ~",
  K: "~@2 bb4 ~ b4 ~ ab4 ~ bb4 ~ gb4 ~ ab4@2 f4 ~", L: "gb4 ~ eb4 ~ f4 ~ d4 ~ eb4 ~ bb3 ~ b3 ~ ab3 ~",
  M: "eb4 ~ c4 ~ d4 ~ b3 ~ c4 ~ g3 ~ ab3 ~ f3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.54).pan(0.7)

// other · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~@40 A@2 B C D@3 E A@2 B C D@3 E F@2 ~@28 A@2 B C D@3 E A@2 B C D@3 E ~@8 A@2 B C D@3 E ~@16 A@2 B C D@3 E A@2 B C D@3
  E A@2 B C D@3 E A@2 B C D@3 E ~
>`.pickRestart({
  A: "c4/2", B: "bb3", C: "d4@8 eb4@7 ~", D: "c4/3", E: "d4 eb4", F: "[c4@31 ~]/2",
})).s("gm_pad_warm").gain(0.43)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@32 A@3 B C@3 D A@3 B C@3 D A@3 B C@3 D ~@2 E@3 F G@3 H E@3 F G@3 H I@3 J K@3 L I@7 J K@3 L I@3 J K@2 M L I@3 J K@3 L
  I N I J K@3 L E@3 F G@2 O H E@3 F G@3 H I@3 J K@3 L I@3 J K@3 L I@3 J K@3 L I@3 J K@3 L ~
>`.pickRestart({
  A: "c3!3 ~@2 c3!2 ~@2 c3!2 ~@2 c3!2 ~", B: "c3!3 ~@2 d3!2 ~@2 eb3!2 ~@2 eb3!2 ~",
  C: "ab2!3 ~@2 ab2!2 ~@2 ab2!2 ~@2 ab2!2 ~", D: "ab2!3 ~@2 ab2!2 ~@2 bb2!2 ~@2 bb2!2 ~",
  E: "c2 c3 ~ c3!2 ~@2 c3!3 ~ c3!2 ~ c2 c3, ~ c2 ~ c2 ~ c2 ~@2",
  F: "c2 c3 ~ c3 d3 ~@2 d3 eb3!2 ~ eb3!2 ~ eb2 eb3, ~ c2 ~ d2 ~ eb2 ~@2",
  G: "ab1 ab2 ~ ab2!2 ~@2 ab2!3 ~ ab2!2 ~ ab1 ab2, ~ ab1 ~ ab1 ~ ab1 ~@2",
  H: "ab1 ab2 ~ ab2!2 ~ ab1 ab2 bb1 bb2 ~ bb2!2 ~ bb1 bb2, ~ ab1 ~@3 bb1 ~@2",
  I: "c2 c3 c2@2 ~ c3 c2@2 ~ c3 c2@2 ~ c3 c2 ~", J: "c2 c3 c2@2 ~ d3 d2@2 ~ eb3 eb2@2 ~ eb3 eb2 ~",
  K: "ab1 ab2 ab1@2 ~ ab2 ab1@2 ~ ab2 ab1@2 ~ ab2 ab1 ~", L: "ab1 ab2 ab1@2 ~ ab2 ab1 ~ bb1 bb2 bb1@2 ~ bb2 bb1 ~",
  M: "ab1 ab2!2 ~@2 ab2 ab1@2 ~ ab2 ab1@2 ~ ab2 ab1 ~", N: "c2 c3 c2 ~@2 c3 c2@2 ~ c3 c2@2 ~ c3 c2 ~",
  O: "ab1 ab2 ab1 ab2!2 ~@2 ab2!3 ~ ab2!2 ~ ab1 ab2, ~@3 ab1 ~ ab1 ~@2",
})).s("gm_synth_bass_1").gain(0.3).pan(0.7)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@40 A@3 B A@3 B A@3 B A@3 B ~@2 C@3 D C@3 E C@3 D C@3 E C@3 D C@3 E C@4 A@3 F A@3 B A@3 G A@3 B ~@16 C@3 D C@3 E C@3
  D C@3 E A@3 F A@3 B A@3 G A@3 B ~@17
>`.pickRestart({
  A: "~ [g4,c5]!4 ~ [g4,c5]!2 ~ [g4,c5]!4 ~ [g4,c5]!2", B: "~ [g4,d5]!4 ~ [g4,d5]!2 ~ [g4,eb5]!4 ~ [g4,eb5]!2",
  C: "~ [g4,c5] ~ [g4,c5] ~@3 [g4,c5] ~ [g4,c5] ~ [g4,c5] ~@3 [g4,c5]", // C5
  D: "~ [g4,c5] ~ [g4,c5] ~@3 [g4,d5] ~ [g4,eb5] ~ [g4,eb5] ~@3 [g4,eb5]", // C5 G5 Cm
  E: "~ [g4,d5] ~ [g4,d5] ~@3 [g4,d5] ~ [g4,eb5] ~ [g4,eb5] ~@3 [g4,eb5]", // G5 Cm
  F: "~ [g4,c5,d5] [g4,d5] [g4,c5,d5] [g4,d5] ~ [g4,d5]!2 ~ [g4,eb5]!4 ~ [g4,eb5]!2", // Gsus4 G5 Gsus4 G5 Cm
  G: "~ [g4,c5,d5] [g4,d5] [g4,c5,d5] [g4,d5] ~ [g4,d5] [g4,c5,d5] ~ [g4,c5,eb5] [g4,eb5] [g4,c5,eb5] [g4,eb5] ~ [g4,eb5] [g4,c5,eb5]", // Gsus4 G5 Gsus4 G5 Gsus4 Cm
})).s("gm_electric_guitar_muted").gain(0.08).pan(0.4)

// other · acoustic guitar steel · "+12SNR GTR"
const acoustic_guitar_steel_3 = note("<A@3 B A@3 B C@3 D C@3 D E@3 F E@3 F ~@143>".pickRestart({
  A: "~@3 g4 ~ ab4 ~ f4 ~ g4 ~ eb4 ~ f4 ~ d4", B: "~ eb4 ~ c4 ~ d4 ~ b3 ~ c4 ~ g3 ~ ab3 ~ f3",
  C: "[e4,g4,bb4,c5]@2 ~ c5 ~ db5 ~ bb4 ~ c5 ~ ab4 ~ bb4 ~ g4", D: "~ ab4 ~ f4 ~ g4 ~ e4 ~ f4 ~ c4 ~ db4 ~ bb3",
  E: "[db4,f4,bb4]@2 ~ bb4 ~ b4 ~ ab4 ~ bb4 ~ gb4 ~ ab4 ~ f4", F: "~ gb4 ~ eb4 ~ f4 ~ d4 ~ eb4 ~ bb3 ~ b3 ~ ab3",
})).s("gm_acoustic_guitar_steel").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@24 [x!4]!142 ~>").gain(0.74)

// drums · snare
const snare = s("sd").struct("<~@24 [~@2 x!5 ~@3 x!5 ~]!32 ~@2 [~@3 x ~@3 x]!108 ~>").gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~@24 A@16 B A@15 ~@18 A@28 C B@15 A@48 ~>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", B: "x!4", C: "~ x!3",
})).gain(0.37)

// drums · open hat
const open_hat = s("oh").struct("<~@24 [~ x ~ x ~ x ~ x]!32 ~@18 [~ x ~ x ~ x ~ x]!92 ~>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@40 [~ x ~ x]!16 ~@2 [~ x ~ x]!60 ~@16 [~ x ~ x]!32 ~>").gain(0.22)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@118 [~ x ~ x]!16 ~@33>").gain(0.15)

// drums · ride
const ride = s("rd").struct("<~@24 [x!16]!16 ~@18 [x!16]!108 ~>").gain(0.37)

// drums · rim
const rim = s("rim").struct(`<
  ~@7 A B@2 C A B@2 C A B@2 C A B@2 C ~@9 B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C ~@54 A B@2 C A B@2 C A C ~@48
>`.pickRestart({
  A: "~@14 x!2", B: "x ~@13 x!2", C: "x",
})).gain(0.66)

stack(
  lead_8_bass_lead, lead_8_bass_lead_soft, synth_strings_1, acoustic_guitar_steel, acoustic_guitar_steel_2, pad_warm,
  bass, electric_guitar_muted, acoustic_guitar_steel_3, kick, snare, hihat, open_hat, crash, crash_soft, ride, rim
)