Jump to content

Featured Replies

Posted

The functions omn and make-omn are powerful tools to construct and deconstruct scores of multiple parameters. However, beyond the parameter keywords that are well-documented (:length, :pitch, :velocity, and :articulation) it seems there are other keywords that represent important parameters of the score that should not be omitted (e.g., when we are transforming scores, and do not want to loose important characteristics).

 

Here is an example. When the following melodic line is deconstructed, then beyond the well-documented parameter keywords it also shows the parameters :duration and :leg. If the :leg parameter would be omitted in the construction of the (possibly transformed) score, then all legato information would be stripped from the original music.

 

(omn nil '((-3h fs4 pp leg g4 leg) (h a4) (-q cs5 mp< ord) (q c5 f stacc -) (-5h - c5 pp leg e5 < leg f5 < leg) (h gs4 pp)))

 

(:length ((-1/6 1/6 1/6) (1/2) (-1/4 1/4) (1/4 -1/4) (-1/10 -1/10 1/10 1/10 1/10) (1/2)) 
 :pitch ((fs4 g4) (a4) (cs5) (c5) (c5 e5 f5) (gs4)) 
 :velocity ((pp pp) (pp) (mp<) (f) (pp < <) (pp)) 
 :duration ((1/6 1/6) (1/2) (1/4) (1/4) (1/10 1/10 1/10) (1/2)) 
 :articulation ((- -) (-) (ord) (stacc) (- - -) (-)) 
 :leg ((2) (-) (-) (-) (3) (-)))

 

Now, my questions are as follows.

 

(1) Do there exist more than the two additional parameters :duration and :leg shown above? For example, have other special articulations their own OMN keywords?

 

(2) Where are all these parameters documented?

 

(3) Are these parameters stable, or will they possibly change in future?

 

Janusz, in your process-omn function we recently discussed, you used (omn-plist :attribute <my-sequence>) instead of (omn :articulation <my-sequence>). Should omn-plist perhaps be used instead for more stable transformation functions when deconstructing scores? If so, it would be helpful to have that function also documented :)

 

Thanks a lot! 

 

Best,

Torsten

The OMN-PLIST and OMN-PROCESS function is not documented because is a not part of the release yet. (work in progress).

 I have created the new function in order to get all the attributes and articulations symbols into one list:

:leg
:ped :ped1 :half-ped :half-ped1 :sost-ped :sost-ped1 :una-corda :una-corda1
:15mb :15ma :8vb :8va
:kgliss-ch :kgliss :gliss4 :gliss3 :gliss2 :gliss

 

The OMN function will stay as it is for now.

The OMN-PLIST function has 5 types: length, pitch, velocity, duration and articulation.

The NIL will return all types.

(setf omn '((-3h fs4 pp leg g4 leg) (h a4) (-q cs5 mp< ord)
            (q c5 f stacc -) (-5h - c5 pp leg e5 < leg f5 < leg) (h gs4 pp)))

(omn-plist nil omn)
=> (:length ((-1/6 1/6 1/6) (1/2) (-1/4 1/4) (1/4 -1/4) (-1/10 -1/10 1/10 1/10 1/10) (1/2))
    :pitch ((fs4 g4) (a4) (cs5) (c5) (c5 e5 f5) (gs4))
    :velocity ((pp pp) (pp) (mp<) (f) (pp < <) (pp))
    :articulation ((leg leg) (-) (ord) (stacc) (leg leg leg) (-)))

 

grace-note will produce :duration parameters

(setf omn2 '((-3h fs4 pp leg g4 leg) (h a4) (-q cs5 mp< ord s c4 app e cs5)
            (q c5 f stacc -) (-5h - c5 pp leg e5 < leg f5 < leg) (h gs4 pp)))

(omn-plist nil omn2)
=> (:length ((-1/6 1/6 1/6) (1/2) (-1/4 1/4 0 1/8) (1/4 -1/4) (-1/10 -1/10 1/10 1/10 1/10) (1/2))
    :pitch ((fs4 g4) (a4) (cs5 c4 cs5) (c5) (c5 e5 f5) (gs4))
    :velocity ((pp pp) (pp) (mp< mf mf) (f) (pp < <) (pp))
    :duration ((1/6 1/6) (1/2) (1/4 1/16 1/8) (1/4) (1/10 1/10 1/10) (1/2))
    :articulation ((leg leg) (-) (ord app -) (stacc) (leg leg leg) (-)))

 

Test:

(setf plist (omn-plist nil omn))
(apply #'make-omn plist)
=> ((-3h fs4 pp leg g4 leg) (h a4 pp) (-q cs5 mp< ord)
    (q c5 f stacc -) (-5h - c5 pp leg e5 < leg f5 < leg) (h gs4 pp))

 

The OMN-PROCESS function still needs more work.

 

  • Author

So, I understand that using OMN-PLIST is the way to go for transforming OMN expressions by a deconstruction-transformation-construction-function, once that is finalised.

 

Thanks!

 

Best,

Torsten

Create an account or sign in to comment


Copyright © 2014-2025 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Important Information

Terms of Use Privacy Policy