[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Répétition «octave en accord»
From: |
Gilles Thibault |
Subject: |
Re: Répétition «octave en accord» |
Date: |
Mon, 16 Jul 2018 17:18:02 +0200 |
User-agent: |
Webmail Free/1.3.3 |
makeOctaves = #(define-music-function (parser location arg mus)
(integer? ly:music?)
(make-simultaneous-music (list
mus
(ly:music-transpose (ly:music-deep-copy mus)
(ly:make-pitch arg 0 0)))))
2 dernières choses.
1- la fonction ci-dessus copie en double les textes : ce n'est pas bien
!
music = \relative { c'4-. d-. r g( f^"coucou" e f g) <e g c>1-> }
\new Voice \makeOctaves #1 \music
\new Voice \makeOctaves #-1 \music
Le "coucou" est en double...
Il ne faudrait pas copier les TextScript
2- La fonction \makeOctaves du snippet
http://lsr.di.unimi.it/LSR/Item?id=445 ne marche pas pour moi avec
l'exemple ci-dessus !
J'ai du changer la fonction (octave-up m t) pour que ça fonctionne :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define (octave-up m t)
(let* ((old-pitch (ly:music-property m 'pitch))
(new-pitch (ly:make-pitch
(+ (ly:pitch-octave old-pitch) t)
(ly:pitch-notename old-pitch)
(ly:pitch-alteration old-pitch)))
(new-note (ly:music-deep-copy m)))
(set! (ly:music-property new-note 'pitch) new-pitch)
new-note))
#(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)
(if (eq? (ly:music-property music 'name) 'EventChord)
(ly:music-set-property! music 'elements (octavize-chord
(ly:music-property music 'elements) t)))
music)
makeOctaves = #(define-music-function (parser location arg mus)
(integer? ly:music?)
(music-map (lambda (x) (octavize x arg)) (event-chord-wrap! mus)))
music = \relative { c'4-. d-. r g( f^"coucou" e f g) <e g c>1-> }
\new Voice \makeOctaves #1 \music
\new Voice \makeOctaves #-1 \music
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--
Gilles