Strudelify
Bijou cover art

Innuendo

Bijou

Queen

KeyF majorTempo74 bpm
0:00/0:00
// Bijou — Queen
// 74 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (5/4 at bar 1, 3/4 at bar 2, 5/4 at bar 2, 4/4 at bar 3, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "Electric Guitar" electric guitar jazz (copy of ch 5 "Guitar" acoustic guitar steel, 0.5 beats late)
// note: Full arrangement: all 64 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar.
setcpm(74/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 · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
  ~@11
  [~@10 g5@2 f5@2 ~ f5@2 ~@7 g5@2 f5@2 ~ f5@2 ~@7 g5@2 ~ e5@2 f5@2 ~@3, ~@7 e5 ~@6 e5 ~@5 f5 ~@3]
  [~@4 g5@2 ~ e5@2 ~@39, ~@3 f5 ~@20]
  ~@51
>`).s("gm_overdriven_guitar").gain(0.24).pan(0.1)

// other · overdriven guitar · "Electric Guitar"
const overdriven_guitar_2 = note("<A B@2 C@7 D@2 E@3 F@3 ~ G@2 H@5 ~@14 I J@2 K@3 L@2 M@3 N@2 O@4 P@7>".pickRestart({
  A: "~@23 a5, ~@45 d5@2 ~",
  B: "[~ a5@2 ~ a5@2 g5@3 a5@3 bb5@3 a5@3 g5@3 ~@2 e5@3 d5@3 e5@3 f5@3 g5@3 a5@3 bb5@3 a5@18 ~@34, e5@2 ~ f5@2 ~@16 f5@4 ~@71]/2",
  C: "[a4@6 d5@7 e5@8 f5@8 a5@12 a5@44 g5@33 ~@12 g5@28 f5@4 f5@8 eb5@8 bb4@8 d5@33 c5@30 ~@25 f5@4 g5@5 a5@4 bb5@4 c6@40 bb5@5]/7",
  D: "[~@2 g5@2 f5@3 ~@2 a5@44 ~ f5@2 e5@2 f5@3 ~@35, a5@4 ~@3 g5@4 ~@42 g5@3 ~@40]/2",
  E: "[~@30 a4@8 d5@4 e5@5 f5@4 g5@4 a5@34 g5@5 f5@4 e5@4 ~@3 e5@37 ~@2, ~@102 f5@2 f5@3 ~@37, ~@103 e5@2 ~@39]/3",
  F: "[~@5 d5@8 g5@4 a5@4 bb5@4 c6@4 d6@35 ~@7 e6@24 e6@8 e6@8 e6@8 e6@8 d6@17]/3",
  G: "[~ a4@8 ~@12 e5@5 f5@4 a5@4 a5@24 bb5@5 a5@4 g5@26 ~@3, ~@9 d5@4 d5@4 d5@4 ~@75, ~@11 a5@4 a5@4 a5@4 ~@73]/2",
  H: "[~@3 g5@4 g5@4 g5@4 g5@4 g5@4 f5@4 eb5@4 f5@4 g5@4 a5@4 g5@4 a5@4 bb5@4 a5@4 bb5@4 c6@4 db6@27 ~@4 db6@12 ~@4 db6@16 c6@36 bb5@5 ~@4 e6@25 ~@40, ~@47 c6@2 ~@6 c6@2 ~@63, ~@24 bb5 ~@3 bb5 ~@31]/5",
  I: "~@28 a4@7 d5@7 e5@6", J: "[~ f5@9 ~@5 a5@6 a5@43 g5@32, ~@5 g5@4 ~@39]/2",
  K: "[~@13 g5@33 f5@8 eb5@8 bb4@8 d5@28 eb5@3 ~@2 c5@30 ~@11, ~@101 d5@4 ~@39]/3",
  L: "[~@24 c6@3 ~@8 f5@3 ~@6 a5@3 ~@2 bb5@4 g5@5 a5@4 bb5@5 c6@17 d6@12, ~@18 c5@4 f5@4 ~ g5@4 a5@4 ~@5 g5@4 ~@52, ~@20 c6@4 ~@5 c6@4 c6@4 ~ c6@4 c6@4 ~ c6@4 ~@45]/2",
  M: "[~@2 c6@4 bb5@5 a5@4 g5@4 f5@5 ~@9 e5@64 ~@33 d5@9 c5@5, ~@24 e5@5 ~ c5@5 ~@87 a4@5 a4@5 ~@12, ~@27 d5@5 ~@92 d5@5 ~@15]/3",
  N: "[a4@4 ~@2 ab4@3 ~@4 g4@4 f4@5 e4@4 f4@5 ~@6 d4@3 ~@6 d4@3 e4@46 ~, ~@4 g4@4 ~ g4@4 ~@20 f4@4 ~@5 d4@4 ~@50, ~@11 f4@4 ~@16 e4@4 e4@4 ~ e4@4 c4@4 ~@48]/2",
  O: "[~@15 g5@17 a5@18 bb5@18 c6@18 d6@35 e6@6 e6@6 e6@6 e6@9 f6@9 d6@23 ~@12]/4",
  P: "[a4@7 d5@7 e5@7 f5@8 ~@3 a5@4 a5@22 bb5@4 a5@4 g5@16 ~@13 g5@30 g5@7 f5@8 eb5@7 bb4@7 bb5@46 ~@6 db5@3 ~@2 bb5@3 db6@59 c6@46 ~@17, ~@29 g5@5 ~@175 gb5@4 ~@123]/7",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.2)

// other · overdriven guitar · "Electric Guitar" · soft notes
const overdriven_guitar_soft = note(`<
  ~@11
  [~@20 f5@2 e5@2 f5@3 ~@7 f5@2 e5@2 f5@3 ~@5 g5@2, ~@19 g5@3 ~@11 g5@3 ~@12]
  [f5@2 e5@2 f5@3 ~@41]
  ~@51
>`).s("gm_overdriven_guitar").gain(0.06).pan(0.2)

// chords · pad warm · "Warm Pad"
const pad_warm = note("<~@26 A B C D E F G H I J K@2 L@2 ~@24>".pickRestart({
  A: "[c6,e6]", B: "[b5,d6]", C: "[a5,c6,e6]", D: "[g5,b5,d6]", E: "[c6,e6,g6]", F: "[b5,d6,g6]", G: "[c5,e5,g5]",
  H: "[c5,f5,a5]", I: "[e5,g5,c6]", J: "[f4,bb4,d5]", K: "[eb4,ab4,c5]/2", L: "[[f5,a5,c6]@7 ~]/2",
})).s("gm_pad_warm").gain(0.36).pan(0.3)

// other · pizzicato strings
const pizzicato_strings = note("<~@37 A ~@15 B@3 ~@8>".pickRestart({
  A: "~ [ab3,ab4,ab5] [bb3,bb4,bb5] [c4,c5,c6] [eb4,eb5,eb6] ~@3", // Ab Bb C Eb
  B: "[~@4 [g4,g5]@18 [a4,a5]@17 [bb4,bb5]@18 [c5,c6]@18 [d5,d6]@36 ~@33]/3", // G A Bb C D
})).s("gm_pizzicato_strings").gain(0.3).pan(0.8)

// bass · acoustic bass · "Bass"
const bass = note("<~@37 A ~@15 B@3 ~@8>".pickRestart({
  A: "~ [ab1,ab2] [bb1,bb2] [c2,c3] [eb2,eb3] ~@3", B: "[~@4 g2@18 a2@17 bb2@18 c3@18 d3@36 ~@33]/3",
})).s("gm_acoustic_bass").gain(0.48)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@2 A@6 B@3 C@7 D@8 E F G H I J K L M N O@2 P@2 Q R@3 S@6 T@6 U@8>".pickRestart({
  A: "[~@19 [f4,a4,d5]@55 f4@47 e4@39 [bb3,eb4,g4]@65 [ab3,c4,eb4]@63, ~@74 [db4,db5]@85 ~@129]/6", // Dm Eb Ab Db
  B: "[~@5 [a3,c4,f4]@89 [f4,a4,d5]@50]/3", // F Dm
  C: "[~@3 [c4,e4]@56 [f4,a4,d5]@34 [f4,a4,c5]@34 [c4,e4]@51 g4@33 ~ [f4,g4]@82 ~@42, ~@178 [bb3,d4]@115 ~@43]/7", // C Dm F C Fsus2 Bb
  D: "[~@5 [f4,a4,d5]@67 f4@33 e4@33 [bb3,eb4,g4,bb4]@63 [db4,gb4,bb4,db5]@48 [eb4,gb4,a4,c5]@48 ~@15 [c4,e4,g4,c5]@72, ~@12 [db4,db5]@11 ~@41]/8", // Dm Eb Gb Ebdim C Db
  E: "[a4,c5,e5,a5]", F: "[g4,b4,d5,g5]", G: "[e4,f4,a4,c5,f5]", H: "[e4,g4,b4,e5]", I: "[c4,e4,g4,c5]",
  J: "[b3,d4,g4,b4]", K: "[a3,c4,e4,g4]", L: "[c4,f4,a4]", M: "[c4,e4,g4]", N: "[bb3,d4,f4,bb4]",
  O: "[ab3,c4,eb4,ab4]/2", P: "[[a3,c4,f4,a4,c5]@3 ~]/2", Q: "[f4,a4,d5]",
  R: "[~@7 f4@46 e4@38 [bb3,eb4,g4]@53, ~@7 [db4,db5]@84 ~@53]/3", // Eb Db
  S: "[~@12 [ab3,c4,eb4,ab4]@69 [a3,c4,f4]@89 [f4,a4,d5]@53 [a3,c4,e4]@65]/6", // Ab F Dm Am
  T: "[~@6 [f4,a4,d5]@71 [a3,c4,e4]@53 ~@89 a4@36 ~@33, ~@65 [g3,bb3,d4]@62 ~@17, ~@148 f4@107 ~@33]/6", // Dm Am Gm
  U: "[~@20 [f4,a4,d5]@55 f4@30 e4@29 [bb3,eb4,g4]@59 [bb3,db4,gb4]@59 ~ [a3,c4,eb4,gb4,a4]@59 [g4,c5,e5,g5]@59 ~@13, ~@75 [db4,db5]@59 ~@250]/8", // Dm Eb Gb Adim C Db
})).s("gm_string_ensemble_1").gain(0.3).pan(0.9)

// other · synth strings 1 · "Synth Strings"
const synth_strings_1 = note("<~@2 A@6 B@3 C@7 D@8 E@2 F G H I J K H L M N O@2 P Q@3 R@6 S@6 T@8>".pickRestart({
  A: "[~@19 d4@55 a3@85 ~ [bb1,bb2]@65 [ab1,ab2]@63]/6", B: "[~@5 [f2,f3]@89 d4@50]/3",
  C: "[~@3 a3@56 d4@34 c4@34 a3@51 [bb1,bb2]@41 ~ [c2,c3]@8 [d2,d3]@8 [g2,g3]@57 ~@43]/7", // Bb C D G
  D: "[~@5 d4@67 a3@66 [bb1,bb2]@63 [gb2,gb3]@48 [gb2,gb3]@48 ~@15 [c2,c3]@36 [b1,b2]@36]/8", E: "a1/2", F: "f1",
  G: "e1", H: "[c1,c2]", I: "[b0,b1]", J: "[a0,a1]", K: "[f1,f2]", L: "[bb0,bb1]", M: "[ab0,ab1]", N: "[gb0,gb1]",
  O: "[[f0,f1,f2]@5 ~@3]/2", P: "d3", Q: "[~@7 a2@84 [bb0,bb1]@53]/3",
  R: "[~@12 [ab0,ab1]@69 [f1,f2]@89 d3@53 [a0,a1]@65]/6", S: "[~@6 d3@71 [a0,a1]@53 [bb0,bb1]@89 [d1,d2]@36 ~@33]/6",
  T: "[~@20 d3@55 a2@59 [bb0,bb1]@59 [gb0,gb1,gb2]@59 ~ gb2@59 c3@59 ~@13]/8", // Bb Gb
})).s("gm_synth_strings_1").gain(0.42).pan(0.4)

// other · tinkle bell · "Wind Chimes"
const tinkle_bell = note(`<
  ~@38
  [~@12 d8@2 a8 a8@2 ~ a8@2 ~ d9@2 ~ d9@2 a8 a8@2 ~ a8@2 ~ d9@2 ~@13, ~@17 f9@2 ~ a8@2 ~@7 f9@2 ~ a8@2 ~@14]
  ~@25
>`).s("gm_tinkle_bell").gain(0.39).pan(0.6)

// drums · crash
const crash = s("cr").struct("<~@34 [~@5 x!11] x [~@9 x!7] x ~ [~@4 x!4 ~@8] ~@24>").gain(0.12)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@34 [~ x ~@2] ~ [~@4 x!5 ~@7] ~@2 [x!4 ~@12] ~@24>").gain(0.06)

stack(
  overdriven_guitar, overdriven_guitar_2, overdriven_guitar_soft, pad_warm, pizzicato_strings, bass, string_ensemble_1,
  synth_strings_1, tinkle_bell, crash, crash_soft
)

More by Queen