opmo

Administrators
  • Content count

    935
  • Joined

  • Last visited

  • Days Won

    108

opmo last won the day on March 26

opmo had the most liked content!

2 Followers

About opmo

Contact Methods

  • Website URL
    https://opusmodus.com
  • Skype
    opusmodus

Profile Information

  • Gender
    Male

Recent Profile Visitors

2,049 profile views
  1. Dear Torsten,

     

    I moved two of your topics to the new location: 'Bug Report'.

     

    best,

    Janusz

  2. Here is the final function. The VELOCITY-INTERMEDIATE will be part (keyword :join t) of the VELOCITY-TO-DYNAMIC function. Source code: (defvar *cresc-dynamic-symbol* '(< cresc cresc-molto cresc-poco cresc-poco-poco ppppp< pppp< ppp< pp< p< mp< mf< f< ff< fff< ffff< fffff<)) (defvar *dim-dynamic-symbol* '(> dim dim-molto dim-poco dim-poco-poco fffff> ffff> fff> ff> f> mf> mp> p> pp> ppp> pppp> ppppp>)) (defun cresc-p (x) (memq x *cresc-dynamic-symbol*)) (defun dim-p (x) (memq x *dim-dynamic-symbol*)) (defun velocity-intermediate (velocity &key end (flatten t) section exclude) (do-verbose ("velocity-intermediate") (labels ((velocity-intermediate-l (velocity &key end (flatten t)) (let ((dyn (velocity-to-dynamic velocity :end end :flatten flatten))) (append (list (first dyn)) (loop for (v1 v2) on dyn when (and v1 v2) collect (cond ((and (cresc-p v1) (cresc-p v2)) '<) ((and (dim-p v1) (dim-p v2)) '>) (t v2)))))) (%velocity-intermediate (velocity &key end (flatten t)) (if (listsp velocity) (loop for v in velocity collect (velocity-intermediate-l v :end end :flatten flatten)) (velocity-intermediate-l velocity :end end :flatten flatten))) (velocity-intermediate* (velocity &key end (flatten t)) (if (and (listsp velocity) flatten) (gen-divide (get-count velocity) (%velocity-intermediate (flatten velocity) :end end :flatten flatten)) (%velocity-intermediate velocity :end end :flatten flatten)))) (disassembling-omn ((velocity plist) velocity :velocity) (let ((velocity (remove-nils velocity))) (maybe-section (lambda (x) (velocity-intermediate* x :end end :flatten flatten)) velocity section exclude)))))) #| (velocity-intermediate '(p pppp f p pp ppp mp ff)) => (p> pppp< f> > > ppp< < ff) (velocity-intermediate '((e c4 f cs5 f d4 f ds5 p f4 p fs5 p c5 p pp) (e cs4 p f d4 f eb5 p f4 p eb4 f d3 p ppppp))) => ((e c4 f> cs5 > d4 > ds5 > f4 > fs5 > c5 > pp<) (e cs4 < f> d4 > eb5 p< f4 < eb4 f> d3 > ppppp)) (velocity-intermediate '(p pp ppp pppp f ff fff p pp ppp f ff fff ffff f p pp ppp mp ff)) => (p> > > pppp< < < fff> > > ppp< < < < ffff> > > > ppp< < ff) (velocity-intermediate '((p pp ppp pppp f ff fff p pp ppp f ff) (fff ffff f p pp ppp mp ff))) => ((p> > > pppp< < < fff> > > > pppp< ff) (p> pppp< f> > > ppp< < ff)) (velocity-intermediate '(ppppp< pppp< ppp< < < < mf> > > p f< ff< fff< ffff< fffff)) => (ppppp< < < < < < mf> > > p< < < < < fffff) |#
  3. As we all like the idea of the intermediate velocities I therefore have written a function which will work with both, velocity and dynamic symbols. Example: (velocity-intermediate '(p pppp f p pp ppp mp ff)) => (p> pppp< f> > > ppp< < ff) (velocity-intermediate '((p pp ppp pppp f ff fff p pp ppp pppp ff) (p pppp f p pp ppp mp ff))) => ((p> > > pppp< < < fff> > > > pppp< ff) (p> pppp< f> > > ppp< < ff)) (velocity-intermediate '(ppppp< pppp< ppp< < < < mf> > > p f< ff< fff< ffff< fffff)) => (ppppp< < < < < < mf> > > p< < < < < fffff)
  4. Other thing you need is to omit the one-note dynamic symbols for the process. Here the 0<mp>0 symbol is gone: (simplify-dynamics '(p< mp< < < f> p> > 0<mp>0 mf< f> >)) => (p< < < < > > > < < f> >) This will help: *one-note-dynamic-symbol* Example: (memq x *one-note-dynamic-symbol*)
  5. Small bug: (simplify-dynamics '(p< < < < f> p> pp> ppp> pppp)) => (p< < < < > > > > pppp) I think we should get here: (p< < < < f> > > > pppp)
  6. OK, I can make it work with nested list. Well done.
  7. Have a go, I don't think it would be to difficult - especially with a vector values - to create < only with ascending series.
  8. Just to let you know the TONALITY-MAP with :map 'shift is doing the same thing already (tonality-step '(c4 messiaen-mode6) '(1 1 -1 (2 2 -1) 5 3 (2 3 -2) -2 1 1)) => (c4 d4 e4 d4 f4gs4fs4 d5 fs5 bb5d6b5 gs5 bb5 b5) (tonality-map '(messiaen-mode6 :map shift) (interval-to-pitch '(1 1 -1 (2 2 -1) 5 3 (2 3 -2) -2 1 1))) => (c4 d4 e4 d4 f4gs4fs4 d5 fs5 bb5d6b5 gs5 bb5 b5)
  9. I will have a look. Note: Opusmodus and not Opus Modus
  10. If you like to write the documentation for the new function TONALITY-STEP you could have a go if you wish.
    I could send you a few examples and the format page for it. As you will see the keywords are easy to understand. Of course you would need the new app to make the tests etc...

     

    Please feel free to say 'I don't have a time for it'.

     

     

    1. torstenanders

      torstenanders

      Thanks for coming back about this. In principal I am still interested, but at this stage the hours of the rest my academic year are pretty tight (e.g., two deadlines within the next month on top of regular teaching).

       

      I would understand if you want to first get an idea about the documentation quality I would produce before committing to any job order for me. In that case, could we do that in the summer, some time between June to August? Thanks!

       

      Best,

      Torsten

    2. opmo

      opmo

      I agree, lets do that.

    3. torstenanders

      torstenanders

      Thanks, just let me know when it is convenient for you. My preference would be some time in June.

       

      Torsten

  11. Example with start: (tonality-step '(c4d4e4f4g4a4) '(1 1 -1 2 2 -1) :start -2) => (g3 a3 c4 a3 d4 f4 e4)
  12. The scale can be anything even omn bar: (tonality-step '(h fs5a5b3 e4b3) '(1 1 -1 2 2 -1)) => (b3 b3 e4 b3 fs5 b4 a5) (tonality-step '(h fs5a5b3 e4b3) '(1 1 -1 2 2 -1) :sort nil) => (fs5 a5 b3 a5 e4 fs6 b3)
  13. Will be part of the next update.
  14. The definition you can find with the Navigator Search tool:
  15. The SLAP like TASTO, PONTE etc... is sticky attribute. To stop it, use ORD. ((e g4 mp slap) (-e) (s e5 p ord+stacc g5 stacc) (3h fs4 mp slap 3q slap))