Diferencia entre revisiones de «Teoría musical/Introducción a la notación y el solfeo/La escritura de la música»

Contenido eliminado Contenido añadido
Yayopoint (discusión | contribs.)
Yayopoint (discusión | contribs.)
Línea 383:
 
Existen dos tipos de notación polifónica: notación abierta y notación cerrada. A lo largo de este libro se describirán ambas formas.
 
== Ejercicios ==
 
'''Ejercicio 1'''
 
Escribe figuras musicales en las líneas de la siguiente pauta:
 
[[Archivo:Long-music-staff.svg|800px]]
 
'''Ejercicio 2'''
 
Escribe figuras musicales en los espacios de la siguiente pauta
 
[[Archivo:Long-music-staff.svg|800px]]
 
Reescribe
 
'''Ejercicio 3'''
 
Escribe figuras musicales en las líneas y espacios adicionales de la siguiente pauta
 
 
 
 
[[Archivo:Long-music-staff.svg|800px]]
 
 
 
 
'''Ejercicio 4'''
 
Copia la siguiente partitura y corrige las posiciones de las plicas y las cabezas
 
<score raw="1">\version "2.18.2"
\header {
tagline = ##f
}
 
#(define (inverted-flag grob)
(let* ((stem-grob (ly:grob-parent grob X))
(dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
(flag (retrieve-glyph-flag "" dir "" grob))
(line-thickness (ly:staff-symbol-line-thickness grob))
(stem-thickness (ly:grob-property stem-grob 'thickness))
(stem-width (* line-thickness stem-thickness))
(stroke-style (ly:grob-property grob 'stroke-style))
(stencil (if (null? stroke-style)
flag
(add-stroke-glyph flag stem-grob dir stroke-style "")))
(rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
(ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0))))
 
#(define ((shift offsets) grob)
"Defines how NoteHeads should be moved according to the given list of offsets."
(let* (
;; NoteHeads
;; Get the NoteHeads of the NoteColumn
(note-heads (ly:grob-array->list (ly:grob-object grob 'note-heads)))
;; Get their durations
(nh-duration-log
(map
(lambda (note-head-grobs)
(ly:grob-property note-head-grobs 'duration-log))
note-heads))
;; Get the stencils of the NoteHeads
(nh-stencils
(map
(lambda (note-head-grobs)
(ly:grob-property note-head-grobs 'stencil))
note-heads))
;; Get their length in X-axis-direction
(stencils-x-lengths
(map
(lambda (x)
(let* ((stencil (ly:grob-property x 'stencil))
(stencil-X-exts (ly:stencil-extent stencil X))
(stencil-lengths (interval-length stencil-X-exts)))
stencil-lengths))
note-heads))
;; Stem
(stem (ly:grob-object grob 'stem))
(stem-thick (ly:grob-property stem 'thickness 1.3))
(stem-stil (ly:grob-property stem 'stencil))
(stem-x-width (if (ly:stencil? stem-stil)
(interval-length (ly:stencil-extent stem-stil X))
;; if no stem-stencil use 'thickness-property
(/ stem-thick 10)))
(stem-dir (ly:grob-property stem 'direction))
;; Calculate a value to compensate the stem-extension
(stem-x-corr
(map
(lambda (q)
;; TODO better coding if (<= log 0)
(cond ((and (= q 0) (= stem-dir 1))
(* -1 (+ 2 (* -4 stem-x-width))))
((and (< q 0) (= stem-dir 1))
(* -1 (+ 2 (* -1 stem-x-width))))
((< q 0)
(* 2 stem-x-width))
(else (/ stem-x-width 2))))
nh-duration-log)))
;; Final Calculation for moving the NoteHeads
(for-each
(lambda (nh nh-x-length off x-corr)
(if (= off 0)
#f
(ly:grob-translate-axis! nh (* off (- nh-x-length x-corr)) X)))
note-heads stencils-x-lengths offsets stem-x-corr)))
 
displaceHeads =
#(define-music-function (parser location offsets) (list?)
"
Moves the NoteHeads, using (shift offsets)
"
#{
\once \override NoteColumn.before-line-breaking = #(shift offsets)
#})
adjustStem =
#(define-music-function (parser location val)(pair?)
"
Adjust 'stem-attachment via
adding multiples of the stem-width to the x-default (car val)
and multiplying the y-default with (cdr val).
"
#{
\once \override NoteHead.before-line-breaking =
#(lambda (grob)
(let* ((stem-at (ly:grob-property grob 'stem-attachment))
(stem (ly:grob-object grob 'stem))
(stem-x-width (interval-length (ly:grob-property stem 'X-extent))))
(ly:grob-set-property!
grob
'stem-attachment
(cons (+ (car stem-at) (* stem-x-width (car val))) (* (cdr val) (cdr stem-at)))
)))
#})
setOtherScriptParent =
#(define-music-function (parser location which-note-head)(integer?)
"
If the parent-NoteHead of a Script is moved, another parent from the
NoteColumn could be chosen.
The NoteHeads are numbered 1 2 3 ...
not 0 1 2 ...
"
#{
%% Let "staccato" be centered on NoteHead, if Stem 'direction is forced
%% with \stemUp, \stemDown, \voiceOne, \voiceTwo etc
\once \override Script.toward-stem-shift = #0
\once \override Script.after-line-breaking =
#(lambda (grob)
(let* ((note-head (ly:grob-parent grob X))
(note-column (ly:grob-parent note-head X))
(note-heads-list
(ly:grob-array->list
(ly:grob-object note-column 'note-heads)))
(count-note-heads (length note-heads-list)))
(if (> which-note-head count-note-heads)
(ly:warning "Can't find specified note-head - ignoring")
(set! (ly:grob-parent grob X)
(list-ref note-heads-list (- which-note-head 1))))))
#})
 
\relative c'' {
\displaceHeads #'(-1)
\adjustStem #'(0.75 . -1)
c4
d8 e
\stemUp g4 e |
\displaceHeads #'(1)
\adjustStem #'(0.75 . 1)
d
\stemNeutral
\once \override Beam.positions = #'(3 . -3)
g,8 \stemDown a b4 a8 g |
\stemNeutral
\displaceHeads #'(1)
\adjustStem #'(0.75 . 1)
f4 r8
\override Flag.stencil = #inverted-flag
a8 r c
\revert Flag.stencil
\stemDown
\displaceHeads #'(-1)
\adjustStem #'(0.75 . -1)
a4 |
\once \override Beam.positions = #'(2 . -4)
\stemUp
g8[ \stemDown f]
g a
\stemUp
\displaceHeads #'(1)
\adjustStem #'(0.75 . 1)
c4
\stemNeutral
b |
c1
\bar "|."
}
</score>
 
 
[[Archivo:Long-music-staff.svg|800px]]