[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Detecting double accidentals
From: |
David Kastrup |
Subject: |
Re: Detecting double accidentals |
Date: |
Tue, 21 Jan 2020 21:50:20 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
SK <address@hidden> 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