[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re :Re: Transpositions sérielles
From: |
Jean Abou Samra |
Subject: |
Re: Re :Re: Transpositions sérielles |
Date: |
Sun, 24 Apr 2022 21:07:49 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 |
Le 21/04/2022 à 15:07, xtof pno a écrit :
Bonjour,
Merci pour cette info.
Pour l'instant, n'ayant que la matrice, \accidentalStyle dodecaphonic,
a l'air de suffire.
Par contre, je peine pour la mise en forme.
Je souhaite seulement établir une liste de la série de base avec pour
chaque transpo au demi-ton supérieur son renversement en miroir. Soit
24 lignes l'une sous l'autre.
Je crois que je vais les écrire à la main.
Merci pour vos références.
Cordialement.
Christophe
Bonjour Christophe,
Désolé pour le délai de réponse (beaucoup de choses en ce moment…).
En tous cas, il est tout à fait faisable de générer les 24 lignes à partir
de la série. Est-ce que le code ci-dessous correspond à peu près à ce
que tu attends ?
\version "2.22.2"
tableau =
#(define-void-function (série) (ly:music?)
(let ((notes (make-hash-table)))
(for-some-music
(lambda (m)
(let ((p (ly:music-property m 'pitch #f)))
(if p
(hashv-set! notes
(modulo (ly:pitch-semitones p)
12)
p)))
#f)
série)
(let* ((first-pitch (car (music-pitches série)))
(inverted (inversion
first-pitch
first-pitch
(ly:music-deep-copy série))))
(for-each
(lambda (i)
(let ((copy (ly:music-deep-copy série))
(inv-copy (ly:music-deep-copy inverted)))
(define (set-transposition! music)
(for-some-music
(lambda (m)
(let ((p (ly:music-property m 'pitch #f)))
(if p
(let* ((t (ly:pitch-transpose
p
(ly:make-pitch 0 0 (* 1/2 i))))
(t-n (hashv-ref
notes
(modulo
(ly:pitch-semitones t)
12))))
(ly:music-set-property! m
'pitch
t-n))))
#f)
music))
(define (scorify! music inv)
(set-transposition! music)
(add-score
#{
\score {
\layout {
indent = 40
}
\new Staff \with {
instrumentName =
\markup \center-column {
\line { Transposition #(number->string i) }
#(if inv "(miroir)" "")
}
} {
\accidentalStyle forget
\cadenzaOn
#music
\bar "||"
}
}
#}))
(scorify! copy #f)
(scorify! inv-copy #t)))
(iota 12)))))
série = \fixed c' { g b ees ais a cis f c gis d e fis }
\tableau \série
Cordialement,
Jean