Thank you David, that works perfectly. I would have probably never found
this way, even if I understand what it does.

Sorry for the late response, didn't expect an answer that fast.

If anyone is interested in this project, the full code as well as a
quick-and-dirty documentation is available as a gist on GitHub:
https://gist.github.com/TheNothingMan/6f5daf540d55b4ad9138e3ff5d3ffbd0

Thank you, kind regards!

Am Di., 21. Jan. 2020 um 21:50 Uhr schrieb David Kastrup <d...@gnu.org>:

> SK <s.skr.k...@googlemail.com> writes:
>
> > Hello,
> >
> > I wrote a script for generating music theory worksheets for school. One
> > feature is the generation of chords that should be named by the students.
> > The way this function works is by simply transposing some predefined
> chords
> > to a new randomly generated root. To keep the difficulty controllable, I
> > would like to filter out double accidentals in some cases, e.g. to not
> > produce an augmented F# chord.
> > Does anybody know about a way to check in scheme if music has double
> > accidentals, or can think of another smart way of doing this?
> >
> > I would not want to define all possible chords manually, and I think that
> > filtering out certain root notes is quite complex, too, if you just want
> to
> > avoid double accidentals.
> >
> > Kind regards!
>
> #(define (has-doubles mus)
>    (any (lambda (p) (not (< -1 (ly:pitch-alteration p) 1)))
>          (music-pitches mus)))
>
> #(display (map has-doubles
>               (list #{ c'4 d' e' fis' g' a' b' #}
>                     #{ cisis'4 d' e' #})))
>
> --
> David Kastrup
>

Reply via email to