[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: syntax helper for ly:music-property
From: |
Nicolas Sceaux |
Subject: |
Re: syntax helper for ly:music-property |
Date: |
Sun, 13 Jun 2004 19:05:08 +0200 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) |
Nicolas Sceaux <address@hidden> writes:
> Hello,
>
> Manipulating music expressions makes me impatient and lazy (don't know
> about hubris). Here is a little utility which can be used as a
> shortcut for ly:music-property :
>
hm, this was not enough.
(define (read-dotted-expression chr port)
(define (gen-music-prop-expr music prop . rest)
(let ((result-expr (if (number? prop)
`(list-ref ,music ,prop)
`(ly:music-property ,music ',prop))))
(if (null? rest)
result-expr
(apply gen-music-prop-expr result-expr rest))))
(let ((tokens (map (lambda (token)
(or (string->number token)
(string->symbol token)))
(string-split (symbol->string (read port)) #\.))))
(apply gen-music-prop-expr tokens)))
(read-hash-extend #\@ read-dotted-expression)
guile> (define titi #{ \notes { c d e } #})
guile> (mus:display titi)
(make-music 'SequentialMusic
'elements (
(make-music 'SequentialMusic
'elements (
(make-music 'EventChord
'elements (
(make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch -1 0 0))))
(make-music 'EventChord
'elements (
(make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch -1 1 0))))
(make-music 'EventChord
'elements (
(make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch -1 2 0))))))))
guile> (set! address@hidden (ly:make-pitch -1 4 0))
guile> (mus:display titi)
(make-music 'SequentialMusic
'elements (
(make-music 'SequentialMusic
'elements (
(make-music 'EventChord
'elements (
(make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch -1 0 0))))
(make-music 'EventChord
'elements (
(make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch -1 1 0))))
(make-music 'EventChord
'elements (
(make-music 'NoteEvent
'duration (ly:make-duration 2 0 1 1)
'pitch (ly:make-pitch -1 4 0))))))))
- syntax helper for ly:music-property, Nicolas Sceaux, 2004/06/13
- Re: syntax helper for ly:music-property,
Nicolas Sceaux <=
- Re: syntax helper for ly:music-property, Han-Wen Nienhuys, 2004/06/18
- Re: syntax helper for ly:music-property, Nicolas Sceaux, 2004/06/19
- Re: syntax helper for ly:music-property, Jan Nieuwenhuizen, 2004/06/19
- Re: syntax helper for ly:music-property, Han-Wen Nienhuys, 2004/06/19
- Re: syntax helper for ly:music-property, Jan Nieuwenhuizen, 2004/06/19
- Re: syntax helper for ly:music-property, Nicolas Sceaux, 2004/06/19