\version "2.19.65"

    myscale.sharp = #(make-semitone->pitch
                      (music-pitches #{ c cis d dis e f fis g gis a ais b #}))
    myscale.flat = #(make-semitone->pitch
                     (music-pitches #{ c des d es e f ges g as a bes b #}))

    sequence =
    #(define-music-function (start end step scale)
      (ly:pitch? ly:pitch? number? symbol?)
      #{ $@(map #{ \myscale.#scale #}
                (iota (1+ (/ (modulo (- (ly:pitch-semitones end)
                                        (ly:pitch-semitones start))
                                     (if (negative? step) -12 12))
                             step))
                      (ly:pitch-semitones start)
                      step))
          #})

    \displayLilyMusic \sequence a g 1 sharp
    \displayLilyMusic \sequence f a -2 flat