Jump to content

opmo

Administrators
  • Posts

    2,894
  • Joined

  • Last visited

Everything posted by opmo

  1. Fix to INTERGER-TO-INTERVAL: (integer-to-interval '((-12) ((2 4) 5 19 -12 (2 4) 5 19))) => ((nil) ((14 2) 1 14 -31 (14 2) 1 14)) Test (interval-to-integer '((nil) ((14 2) 1 14 -31 (14 2) 1 14)) :start -12) => ((-12) ((2 4) 5 19 -12 (2 4) 5 19)) (interval-to-pitch '((nil) ((14 2) 1 14 -31 (14 2) 1 14)) :start -12) => ((c3) (d4e4 f4 g5 c3 d4e4 f4 g5))
  2. New release: Fix to rest and ttrem positions in notation display.
  3. NEW: MODUS is working with omn-form lists now. (modus '((q c6 cs4 e a4 e3 d6 f4) (q b4 gs3 e bb4 eb4 g5 fs6))) => ((0 1 9 4 2 5) (11 8 10 3 7 6)) MOTIF-MAP function name has change to PATTERN-MAP with additional functionality. (setf omn '((s c4 d4 e4 f4 g4 a4 b4 c5) (5q c4 d4 e4 f4 g4 g4 f4 e4 d4 c4))) (pattern-map '(((c4 d4 e4) (cs4 ds4 f4)) ((f4 g4) (eb4 fs4))) omn :type :pitch) => ((s cs4 ds4 f4 eb4 fs4 a4 b4 c5) (5q cs4 ds4 f4 eb4 fs4 g4 f4 e4 d4 c4)) (pattern-map '(((c4 d4 e4) (cs4 ds4 f4)) ((f4 g4) (eb4 fs4))) omn :type :pitch :loop t) => ((s cs4 ds4 f4 f4 g4 a4 b4 c5) (5q c4 d4 e4 eb4 fs4 g4 f4 e4 d4 c4)) (setf mat '((q c6 cs4 a4 e3 d6 f4) (q b4 gs3 bb4 eb4 g5 fs6))) (modus mat) => ((0 1 9 4 2 5) (11 8 10 3 7 6)) (pattern-map '(((0 1 9 4 2 5) (0 4 2 1 9 5)) ((11 8 10 3 7 6) (10 8 11 3 7 6))) mat :type :pitch :pcs t) => ((q c6 e4 d4 cs3 a6 f4) (q bb4 gs3 b4 eb4 g5 fs6)) (pattern-map '(((0 1 9) (10 8 11)) ((11 8 10) (0 1 9))) mat :type :pitch :pcs t :loop t) => ((q bb6 gs4 b4 e3 d6 f4) (q c4 cs3 a4 eb4 g5 fs6))
  4. With time you will find a way how to control all this without the need to close/restart the app. I don't remember doing this, but I do remember to have the same problems you have describe above.
  5. (setf a 100) a => 100 (makunbound 'a) a => > Error: Unbound variable: a The simples way is to give the variable 'a new value. You can't clear and should not play with memory there are lots of variables which are part of the system. It is a good practise to give a more meaningful name to a variable then just a one character.
  6. Do you mean "Return To Top Level"? You find few commands in the Tools menu. There is never need to quit the app in order to continue.
  7. The function OMN-COMPONENT-REPLACE in a real OMN world will return errors with a complex attributes (articulations): ttrem, app, gliss etc... Anyway, bellow you will find few example how to manipulate algorithmically the OMN plists: (setf sequence '(q c4 pp e d4 mp e4 s f4 f> fs4 > g4 > gs4 pp)) (disassembling-omn ((pitch plist) sequence :pitch :flat nil :span :length) (let ((pitch (remove nil pitch))) (pitch-transpose -12 pitch))) (disassembling-omn ((length plist) sequence :length :flat nil :span :length) '(s s s s)) (disassembling-omn ((length plist) sequence :length :flat nil :span :pitch) '(s s s s)) (disassembling-omn ((velocity plist) sequence :velocity :flat nil :span :length) '(f f p p f f)) And now a complete function example with DISASSEMBLING-OMN macro: (defun length-rational-quantize (sequence &key (round 1/4) (type :extend) section exclude omn) (do-verbose ("length-rational-quantize") (labels ((length-rational-quantize-1 (length round) (let* ((sum (sum (abs! length))) (out (- (find-length-base sum round) sum))) (remove 0 (append length (list (neg! out)))))) (length-rational-quantize-l (list round &key (type :extend)) (let ((group (lists! (split-lengths list :type type)))) (flatten (loop for i in group collect (length-rational-quantize-1 i round))))) (length-rational-quantize-ls (list round &key (type :extend)) (let* ((len (length list)) (round (gen-trim* len (list! round)))) (loop for i in list for x in round collect (length-rational-quantize-l i x :type type)))) (length-rational-quantize* (list round &key (type :extend)) (if (listsp list) (length-rational-quantize-ls list round :type type) (length-rational-quantize-l list round :type type)))) (disassembling-omn ((sequence plist) sequence :length :span :length) (let ((len (length sequence))) (maybe-omn-decode omn (if exclude (maybe-section (lambda (x) (length-rational-quantize* x round :type type)) sequence (num-exclude len exclude)) (maybe-section (lambda (x) (length-rational-quantize* x round :type type)) sequence section)))))))) Note: Please don't distribute or share any of the code from the Source Code forum section.
  8. New: Improvement to tuplet brackets placement. MUSICXML-TO-EDITOR function. musicxml-to-editor file-name &key application identifier [Function] Arguments and Values: file-name a string. application a string. The default is "Sibelius". identifier a string. Description: The MUSICXML-TO-EDITOR function opens musicxml score files in any musicxml editor, like Sibelius, Finale etc... Examples: First, you need to create a musicxml file from your score: (compile-score 'file-name :output :musicxml :file "file-name") Next: (musicxml-to-editor "file-name") To open the file in Finale: (musicxml-to-editor "file-name" :application "Finale") If the application name is not working you can use the identifier keyword with the bundle-identifier. For example the Sibelius 7.5 version identifier is "com.avid.Sibelius75" (musicxml-to-editor "file-name" :identifier "com.avid.Sibelius75")
  9. Next week I will show you how to do all this in Opusmodus with build in functions especially for omn plists manipulation.
  10. The OSC library is build in version 1.2.20424, therefore there is no need to load the library with QUICKLISP anymore. About OSC library: https://github.com/zzkt/osc
  11. The ITERATE library is build in version 1.2.20405, therefore there is no need to load the library with QUICKLISP anymore. About ITERATE library: https://common-lisp.net/project/iterate/
  12. Maybe you should try to add the library to OM package and not the other way round.
  13. Fix to SPLIT-LENGTHS and LENGTH-RATIONAL-QUANTIZE.
  14. (ql:quickload "screamer") Thats all. For checking the code, tests etc... you can download the Screamer source and put anywhere you like. You could drop it to the Navigator for quick access to the example and the source.
  15. With SEED: (defun rnd-division (n &key (sum 1.0) seed) (do-verbose ("rnd-division") (rnd-seed seed) (let ((values (loop repeat (- n 1) with a = sum with b collect (setf b (random* a :seed (seed))) do (setf a (- a b))))) (append values (list (- sum (sum values))))))) (rnd-division 5 :seed 5) => (0.0052785673 0.09165209 0.06036401 0.65849 0.1842153) (rnd-division 3 :sum 9.8 :seed 87) => (3.9023237 0.8761092 5.0215673) To add seed to the function use RANDOM* OM function.
  16. The DISPLAY-MUSICXML is now in the package :-)
  17. NEW: GEN-BINARY-INTERVAL BINARY-LAYER INSERT-BAR REMOVE-BAR GET-COUNT (edited, please check the document) COUNT-REPEAT OMN-TIE-BARS function name changed to TIE-BARS more work on notation (dynamic and length rewrite)
  18. Will be part of the next update.
  19. if you need this function I would be happy to create one :-)
  20. New in 1.2.20286: LOAD-INSTRUMENT (Please read the document to see how to setup and use the function) more options in LENGTH-LEGATO (was length-reduce) MODIFY-TIME-SIGNATURE more options in SPLIT-LENGTHS (was split-tuplet-lengths) GEN-TRANSFORM LENGTH-RATIONAL-QUANTIZE more options in GET-TIME-SIGNATURE Fix to one length-symbol conversion and more general optimisation. I like to thank especially Andre Meier for his contribution to the new function set.
  21. Final name and functionality: (gen-transform '(0 0 0 0 0 0 0 0 0 0) :interval '(4 12 7) :prob 0.5) (gen-transform '(1/4 1/4 1/4 1/4 1/4) :interval '(-1/32 1/32) :prob 0.5) (gen-transform '(c1 c2 c3 c4 c5 c6) :interval '(1 -1) :prob 0.7) (gen-transform '((c1 c2 c3) (c4 c5 c6)) :interval '(1 -1) :prob 0.7) (gen-transform '((c1 c2 c3) (c4 c5 c6)) :interval '((1 -1) (-13 11)) :prob '(0.7 0.8))
  22. opmo

    rotate OMN ?

    There is no error. The GEN-RATOTE is not working with OMN form list now. What you see above is what you will get with the next update. Here, the function is working fine already.
  23. opmo

    rotate OMN ?

    Do you mean the omn events <length pitch velocity and articulation>? Like that: OMN form rotation: (setf omn '(q c4 p ten e d4 mp trem s e4 f stacc)) (gen-rotate 1 omn) => (s e4 f stacc q c4 p ten e d4 mp trem) (gen-rotate 2 omn) => (e d4 mp trem s e4 f stacc q c4 p ten)
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy