[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: In octaves
From: |
Jay Anderson |
Subject: |
Re: In octaves |
Date: |
Sun, 27 Apr 2008 21:00:33 -0700 |
Use the following for the octave-up function. It should also now work
correctly in \relative sections (but not outside unfortunately).
#(define (octave-up m t)
(let* ((octave (if (> t 0) 0 -2))
(new-note (ly:music-deep-copy m))
(new-pitch (ly:make-pitch
octave
(ly:pitch-notename (ly:music-property m 'pitch))
(ly:pitch-alteration (ly:music-property m 'pitch)))))
(set! (ly:music-property new-note 'pitch) new-pitch)
new-note))
Let me know how it works!
-----Jay
On Sun, Apr 27, 2008 at 8:34 PM, Jonathan Kulp <address@hidden> wrote:
> Hey guys,
>
> Just discovered another issue with the octaves command and wondered whether
> you could see an easy way out of it. When I use a cautionary accidental
> inside one of these octaves blocks, it only prints the accidental on the
> lower note of the 8ve pair. Any way to get it to show the accidental on
> both notes of the pair? Best,
>
> Jon
>
>
>
> Valentin Villenave wrote:
>
>
> > Hi Jonathan, here's the function I proposed earlier. it takes a number
> > as an argument: if you want to add upper octaves, specify #1, if you
> > want lower octaves, type #-1. Its very dirty and it suffers from the
> > same bug (i.e. it's probably a bad idea to use it inside a \relative
> > block when you have to use commas and single quotes), but hopefully
> > someone will clean the code and address the issue.
> >
> > #(define (octave-up m t)
> > (make-music 'NoteEvent
> > 'duration (ly:music-property m 'duration)
> > 'pitch (ly:make-pitch (+ t (ly:pitch-octave
> > (ly:music-property m 'pitch)))
> > (ly:pitch-notename (ly:music-property m 'pitch))
> > (ly:pitch-alteration (ly:music-property m
> 'pitch)))))
> >
> > #(define (octavize-chord elements t)
> > (cond ((null? elements) elements)
> > ((eq? (ly:music-property (car elements) 'name) 'NoteEvent)
> > (cons (car elements)
> > (cons (octave-up (car elements) t)
> > (octavize-chord (cdr elements) t))))
> > (else (cons (car elements) (octavize-chord (cdr elements ) t)))))
> >
> > #(define (octavize music t)
> > (let* ((es (ly:music-property music 'elements))
> > (e (ly:music-property music 'element))
> > (name (ly:music-property music 'name)))
> > (cond ((eq? name 'EventChord)
> > (ly:music-set-property! music 'elements (octavize-chord es t)))
> > ((pair? es)
> > (for-each (lambda(x) (octavize x t)) es))
> > ((ly:music? e)
> > (octavize e))))
> > music)
> >
> > octaves = #(define-music-function (parser location arg mus) (integer?
> ly:music?)
> > (if (> arg 0) (octavize mus 1) (octavize mus -1)))
> >
> > \relative { c d e \octaves #-1 { f g c }}
> >
> >
> > Cheers,
> > Valentin
> >
> >
>
>
> --
> Jonathan Kulp
> http://www.jonathankulp.com
>
- Re: In octaves, (continued)
- Re: In octaves, Valentin Villenave, 2008/04/24
- Re: In octaves, Jonathan Kulp, 2008/04/24
- Message not available
- Re: In octaves, Valentin Villenave, 2008/04/24
- Re: In octaves, Jonathan Kulp, 2008/04/24
- Re: In octaves, Valentin Villenave, 2008/04/24
- Re: In octaves, Jonathan Kulp, 2008/04/24
- Re: In octaves, Jay Anderson, 2008/04/24
- Re: In octaves, Valentin Villenave, 2008/04/25
- Re: In octaves, Jonathan Kulp, 2008/04/27
- Re: In octaves,
Jay Anderson <=
- Re: In octaves, Jay Anderson, 2008/04/28
- Re: In octaves, Jonathan Kulp, 2008/04/28