./../../src/music-xml.lsp

## sc/music-xml [ Modules ]

[ Top ] [ Modules ]

## music-xml/xml-get-mark [ Functions ]

[ Top ] [ music-xml ] [ Functions ]

DESCRIPTION

     xml-get-mark:
     Translation function for music-xml marks (dynamics, accents, etc.). Not
     generally called by the user but the list of symbols that can be used will
     be useful. If <silent> then non-existing marks will not produce
     warnings/errors (but we'll return nil).
     default to the config setting

SYNOPSIS

                      ;; if returns a string then xml-articulation will be called,
                      ;; otherwise (dir ...) (tech ...)
                      ;; also possible: (art "accent" "below") or a list of
                      ;; strings, in which case there'll be 2+ xml-articulation
                      (a "accent")       ; accent
                      (s "staccato")
                      (as '("accent" "staccato"))
                      (at '("accent" "tenuto"))
                      (ts "detached-legato")
                      (te "tenuto")
                      ;; tech means xml-technical will be called; see bottom of
                      ;; this function
                      (lhp '(tech "stopped" a))
                      (bartok '(tech "snap-pizzicato" a))
                      ;; todo: could also add the <sound> tag here to change
                      ;; midi-programme (see MozartTrio.xml for e.g.)
                      ;; dir means xml-direction will be called
                      (pizz '(wds "pizz." a))
                      (ord '(wds "ord."))
                      (pizzp '(wds "(pizz.)"))
                      (clb '(wds "clb"))
                      (cl '(wds "cl"))
                      (col-legno '(wds "col legno"))
                      (clt '(wds "clt"))
                      (arco '(wds "arco"))
                      (batt '(wds "batt"))
                      (spe '(wds "spe"))
                      (sp '(wds "sul pont."))
                      (st '(wds "sul tasto"))
                      (mv '(wds "molto vib"))
                      (sv '(wds "senza vib"))
                      (poco-crini '(wds "poco crini"))
                      (nail '(tech "fingernails" a))
                      (stopped (no-xml-mark 'stopped))
                      ;; so unmeasured tremolo is implicit
                      (t3 '(orn "tremolo" nil 3))
                      (flag '(tech "harmonic" a))
                      ;; MDE Fri Dec  7 18:11:29 2018 -- dorico still doesn't handle
                      ;; the little circles to start/end a hairpin
                      (niente '(wds "niente"))
                      (pppp  '(dyn "pppp"))
                      (ppp  '(dyn "ppp"))
                      (pp  '(dyn "pp"))
                      (p  '(dyn "p"))
                      (mp  '(dyn "mp"))
                      (mf  '(dyn "mf"))
                      (f  '(dyn "f"))
                      (ff  '(dyn "ff"))
                      (fff  '(dyn "fff"))
                      (ffff  '(dyn "ffff"))
                      ;; todo: find out how to put dynamics in parentheses; for now
                      ;; just put in the dynamic without
                      (pppp-p '(dyn "pppp"))
                      (ppp-p '(dyn "ppp"))
                      (pp-p '(dyn "pp"))
                      (p-p '(dyn "p"))
                      (mp-p '(dyn "mp"))
                      (mf-p '(dyn "mf"))
                      (f-p '(dyn "f"))
                      (ff-p '(dyn "ff"))
                      (fff-p '(dyn "fff"))
                      (ffff-p '(dyn "ffff"))
                      (sfz '(dyn "sfz"))
                      (downbow '(tech "down-bow" a))
                      (upbow '(tech "up-bow" a))
                      (open '(tech "fingering" a 0))
                      (I '(wds "I"))
                      (II '(wds "II"))
                      (III '(wds "III"))
                      (IV '(wds "IV"))
                      ;; guitar string numbers; todo: find a way of circling them
                      (c1 "1")
                      (c2 "2")
                      (c3 "3")
                      (c4 "4")
                      (c5 "5")
                      (c6 "6")
                      ;; music xml doesn't seem to have separate slur and phrase
                      ;; marks so we'll simply use the slur tag with number=1 for
                      ;; slurs and number=2 for phrases
                      (beg-sl '(not "slur" "number=\"1\" type=\"start\""))
                      (end-sl '(not "slur" "number=\"1\" type=\"stop\""))
                      (beg-phrase '(not "slur" "number=\"2\" type=\"start\""))
                      (end-phrase '(not "slur" "number=\"2\" type=\"stop\""))
                      (beg-gliss '(not "glissando" "number=\"1\" type=\"start\" line-type=\"solid\""))
                      (end-gliss '(not "glissando" "number=\"1\" type=\"stop\" line-type=\"solid\""))
                      (beg-8va '(dir "octave-shift"
                                 ;; it really is down, probably because what's
                                 ;; notated is an 8ve lower than sounding
                                 "dash-length=\"7.5\" size=\"8\" space-length=\"7.5\" type=\"down\""))
                      (end-8va '(dir "octave-shift" "size=\"8\" type=\"stop\""))
                      (beg-8vb '(dir "octave-shift"
                                 "dash-length=\"7.5\" size=\"-8\" space-length=\"7.5\" type=\"up\""))
                      (end-8vb '(dir "octave-shift" "size=\"-8\" type=\"stop\""))
                      (beg-15ma '(dir "octave-shift"
                                  "dash-length=\"7.5\" size=\"15\" space-length=\"7.5\" type=\"down\""))
                      (end-15ma '(dir "octave-shift" "size=\"15\" type=\"stop\""))
                      (beg-15mb '(dir "octave-shift"
                                  "dash-length=\"7.5\" size=\"-15\" space-length=\"7.5\" type=\"up\""))
                      (end-15mb '(dir "octave-shift" "size=\"-15\" type=\"stop\""))
                      ;; note heads
                      (circled-x '(hd "circle-x"))
                      (x-head '(hd "x"))
                      (triangle '(hd "triangle"))
                      (triangle-up '(hd "inverted triangle"))
                      (airy-head (no-xml-mark 'airy-head))
                      (none '(hd "none"))
                      ;; the On and Off versions were for lilypond; here we only
                      ;; need the On version (or preferably, just improv but for
                      ;; compatibility...)
                      (improvOn '(hd "slash"))
                      (improvOff nil)
                      (wedge '(hd "fa"))
                      (square '(hd "la"))
                      ;; todo: look at xml doc for harmonic and sort out a way of
                      ;; representing artificial harms in xml
                      (flag-head '(hd "diamond"))
                      (flag-dots-on (no-xml-mark 'flag-dots-on))
                      (flag-dots-off (no-xml-mark 'flag-dots-off))
                      (trill-f (no-xml-mark 'trill-f))
                      (trill-n (no-xml-mark 'trill-n))
                      (trill-s (no-xml-mark 'trill-s))
                      (beg-trill-a (xml-beg-trill stream))
                      (end-trill-a (xml-end-trill stream))
                      (slash (no-xml-mark 'slash))
                      (arp '(not "arpeggiate" "default-x=\"-12\"  number=\"1\""))
                      (arrow-up (no-xml-mark 'arrow-up))
                      (arrow-down (no-xml-mark 'arrow-down))
                      (cresc-beg '(dir "wedge" nil
                                   "spread=\"0\" type=\"crescendo\"" b))
                      (cresc-end '(dir "wedge" nil
                                   "spread=\"15\" type=\"stop\"" b))
                      (dim-beg '(dir "wedge" nil
                                 "spread=\"15\" type=\"diminuendo\"" b))
                      (dim-end '(dir "wedge" nil
                                 "spread=\"0\" type=\"stop\"" b))
                      (<< (no-xml-mark '<<))
                      (>> (no-xml-mark '>>))
                      ;; we could faff around with lexical variables and manipulate
                      ;; the niente property of "wedge" but as this would be
                      ;; post-gen anyway we can do it in the notation software
                      (hairpin0 (no-xml-mark 'hairpin0))
                      (pause (xml-pause stream))
                      ;; seems there is a fermata-shape element but damned if I can
                      ;; find out where it could go and be interpreted correctly.
                      ;; MDE Mon Mar 27 13:09:50 2017 -- see xml-pause above
                      (long-pause (xml-pause stream)); "lunga"))
                      (short-pause (xml-pause stream)); "breva"))
                      (aeolian-light (no-xml-mark 'aeolianLight))
                      (aeolian-dark (no-xml-mark 'aeolianDark))
                      ;; this one uses the graphic for close bracket
                      (bracket-end (no-xml-mark 'bracketEnd))
                      (mphonic (no-xml-mark 'mphonic))
                      (mphonic-arr (no-xml-mark 'mphoniArr))
                      (mphonic-cons (no-xml-mark 'mphonicCons))
                      (mphonic-diss (no-xml-mark 'mphonicDiss))
                      (mphonic-cluster (no-xml-mark 'mphonicCluster))
                      (sing (no-xml-mark 'sing))
                      (high-sine (no-xml-mark 'high-sine))
                      (noise (no-xml-mark 'noise))
                      (focus (no-xml-mark 'focus))
                      (balance (no-xml-mark 'balance))
                      (alternate (no-xml-mark 'alternate))
                      (sing-arr (no-xml-mark 'singArr))
                      (arrow-up-down (no-xml-mark 'arrowUpDown))
                      ;; no need to fiddle with these: can do in notation software,
                      ;; no?
                      (start-arrow (no-xml-mark 'start-arrow))
                      (end-arrow (no-xml-mark 'end-arrow))
                      (harm '(tech "harmonic" a "<natural />"))
                      (sost '(wds "sost."))
                      (sost-up '(wds "sost.*"))
                      (sost^ (no-xml-mark 'sost^)) ;"\\sostenutoOff\\sostenutoOn ")
                      (ped '(dir "pedal" nil "line=\"yes\" type=\"start\""))
                      (ped^ '(dir "pedal" nil "line=\"yes\" type=\"change\""))
                      (ped-up '(dir "pedal" nil "line=\"yes\" type=\"stop\""))
                      (uc '(wds "una corda" nil b))
                      (tc '(wds "tre corde" nil b))