In a previous post (link below) there is a great description on how to configure old vsl gig versions.
There is a place where you can configure the relation between the OMN articulation command with the correspondent keyswitch.
1) Let´s say I invent a new articulation in a custom sample library, for example "nail-scrape" for indicating the violin player to scrape the string with his/her nail. In this case, I need this OMN expression to: a) apear in the score notation and b) change the corresponding keyswitch.
2) In the case of the OMN expression "long", I configured it to change to the crescendo/diminuendo long samples in VSL, but this does not appear in the notation. This is great, because I don´t need it to be specified in the notation, since the long note values are enough, I just need the keyswitch.
So there is the two scenarios:
1) CASE 1: OMN change keyswitch AND appear on the score
1) CASE 1: OMN change keyswitch AND DO NOT appear on the score
The articulation expression syntax is a kind of yellow/brown word in the OMN code. Only articulation related words appear as an assignable articulation for this kind of use.
FINALLY, THE GREAT QUESTION:
How can I create my CUSTOM articulation OMN expression, like the "nail-scrape" example, so that this articulation can be customized also as appearing or not appearing in the score ?
This can be really useful for expanded techniques in special scores with special sample libraries or even with scores based on customized samples, or new instruments.
All the best !
:group omn stacc (:key c1 :key c1 cc1 40) stacs (:key c1 :key c1 cc1 25) ord (:key eb1 cc1 5) portato (:key cs1 cc1 5) sfz (:key e1 :key e1 cc1 25) cres (:key f1 :key f1 cc1 25) marc (:key e1 cc1 64) spicc (:key c1 cc1 120) leg (:key d1 :key d1 cc1 40) tasto (:key cs2 :key cs1 cc1 40) leg+tasto (:key cs2 :key cs1 cc1 40) tasto+leg (:key cs2 :key cs1 cc1 40)
By Stephane Boussuge
i've made this function for my own usage.
Sharing here if it can be useful for some others.
It is a function who replace articulation by a given one on repeated notes.
;;; OMN-REPLACE-ARTICULATION-IF-REPEAT (defun omn-replace-articulation-if-repeat (new-art omn-sequence) (do-verbose ("omn-replace-articulation-if-repeat") (let ((spn '()) (res '()) ) (progn (setf spn (get-span omn-sequence)) (setf res (loop for i from 0 to (- (length (flatten-sublist (single-events omn-sequence))) 1) collect (if (or (eq (second (nth i (flatten-sublist (single-events omn-sequence)))) (second (nth (+ 1 i) (flatten-sublist (single-events omn-sequence))))) (if (> i 0) (eq (second (nth i (flatten-sublist (single-events omn-sequence)))) (second (nth (- i 1) (flatten-sublist (single-events omn-sequence))))) ) ) (omn-replace :articulation new-art (nth i (flatten-sublist (single-events omn-sequence)))) (nth i (flatten-sublist (single-events omn-sequence))) ))) (length-span spn (flatten res)))))) ;;; EXEMPLE #| (setf mat '((s c4 p leg d4 leg e4 leg f4 q g4 f marc)(s a4 mp leg g4 leg leg f4 leg e4 leg leg leg d4 q c4 mf marc))) (omn-replace-articulation-if-repeat '(stacc) mat) => '((s c4 p leg d4 leg e4 leg f4 q g4 f marc) (s a4 mp leg g4 stacc g4 stacc f4 leg e4 stacc e4 stacc e4 stacc d4 q c4 mf marc)) |#
if you like to change the articulation of specific lengths
(defun replace-articulation-of-a-length (omnseq length/articulation-map) (loop for i in (single-events (flatten omnseq)) when (length-restp (car i)) collect i else append (omn-replace :articulation (cadr (assoc (car (omn :length i)) length/articulation-map)) i))) (setf omn-seq '(s c4 ffff ord e ord e ord s ord e. ord s ord q ord q q q q)) (replace-articulation-of-a-length omn-seq '((1/16 mute) (2/16 pizz) (3/16 arco))) => (s c4 ffff mute e c4 ffff pizz e c4 ffff pizz s c4 ffff mute e. c4 ffff arco s c4 ffff mute q c4 ffff ord q c4 ffff q c4 ffff q c4 ffff q c4 ffff)