Strudelify

The Indian National Anthem

Roshni Dave

KeyC majorTempo100 bpm
0:00/0:00
// The Indian National Anthem — Roshni Dave
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5112251; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 29 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · clarinet · "B♭ Clarinet"
const clarinet = note("<~@9 A B ~ C D C E B F G H I J K L M N@4>".pickRestart({
  A: "~ f4", B: "e4 d4", C: "e4", D: "d4 f4@2 ~", E: "g4 e4@2 ~", F: "d4 e4@3", G: "e4 g3", H: "g3 e4", I: "f4@6 f4 e4",
  J: "d4@2 e4@4 e4 d4", K: "e4@6 d5 c5", L: "b3@6 c5 a4", M: "c4@3 ~", N: "[c4@9 b3@9 c4@9 b3@4 c4@4 ~ c4@18 ~@10]/4",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<A B C D A@2 E F G H ~ I ~@17>".pickRestart({
  A: "e4", B: "e4@2 d4 f4", C: "e4 f4", D: "d4 c4@3", E: "f4@7 e4", F: "d4 f4 e4@4 ~@2", G: "c4", H: "e4 ~",
  I: "d4 g3@2 ~",
})).s("gm_clarinet").gain(0.15)

// other · cello · "Violoncello"
const cello = note("<A B@2 C D E F G H I J ~@5 J K L M N O P Q R S T@3>".pickRestart({
  A: "e3 g3", B: "g3 f3", C: "d3@2 e3!2", D: "c3", E: "c3 g2", F: "a2!2", G: "f2@2 g2 ~", H: "g2", I: "c3 a2",
  J: "g2 f2", K: "d3 e3@3", L: "c3 b2", M: "a#2 g2", N: "a2", O: "f2@6 e3 d3", P: "c3 e2 g2 c3 e3 g3 ~@2",
  Q: "g2 b2 d3 g3 b3 d4 ~@2", R: "f2 a2 c3 f3 a3 c4 ~@2", S: "c3@4 c3@4 ~ b2@4 b2@3",
  T: "[~@2 a2@4 g2@4 ~ f2@4 c3@4 ~ f2@18 ~@10]/3",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<~@11 [e3@2 e3 ~] [e3 g2] [f2 g2 a2@4 ~@2] [g2@4 c3 b2!2 a2] [g2 g2@2 ~] ~@13>")
  .s("gm_cello").gain(0.15)

stack(clarinet, clarinet_soft, cello, cello_soft)