Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by AM

  1. ;;; THIS FUNCTION DOING SYMM TRANSPOSITIONS TO CONRACT (OR EXPAND, depends on INTERVAL) A CHORD or PITCH-SEQ ;;; default setting: it changes in every generation the highest and lowest pitch by an OCTAVE ;;; by changing :position (see examples) you could change which position should be changed/transposed ;;; default interval is 12 ;;; FUNCTION (defun chord-contraction/expansion (n pitchlist &key (position nil) (interval 12) (chord nil)) (let* ((pitchlist (if (chordp (car pitchlist)) (melodize pitchlist) pitchlist))
  2. often helpful in PATTERN MATCH things... (like in OPMO pattern-match-functions) here is a short IDEA for an octave-independent PITCH-PATTERN-MATCHP with possible WILDCARD, perhaps could help you... ;;;-------------------------------------------------------------- ;;; PITCH PATTERN-MATCHP octave-independent ;;;-------------------------------------------------------------- ;;; SUB (defun convert-pitch (pitches) (loop for i in pitches when (pitchp i) collect (compress (butlast (explode i))) else collect i)) ;;; MAIN (defun pitch-pattern-matchp (pitchlist
  3. a kind of MERGE-SORT -> sorry for bad coding i didn't find a better solution -> perhaps a new SORT for GEN-SORT... (defun kind-of-merge-sort (alist) (progn (setf alist (mcflatten (loop repeat 30 do (setf alist (loop for i in (gen-divide 2 alist) collect (sort-asc (flatten i)))) collect alist))) (loop repeat (length alist) for cnt = 0 then (incf cnt) when (not (equal (nth cnt alist) (nth (1+ cnt) alist))) collect
  4. thanx stephane! ...but when you have a look on the output... (gen-retrograde durations1 :omn t) => ((t s t) (t 13/96 3q) (5h = 3/35 7q = = = = 3/35 5h =) (3q 13/96 t) (t s t)) or with FLATTEN: (gen-retrograde (flatten durations1) :omn t) => (t s t 3q 13/96 t 5h = 3/35 7q = = = = 3/35 5h = t 13/96 3q t s t) the "original notation" with no troubles => ((t s t) (3q 3e_s. t) (5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) (t s._3e 3q) (t s t))
  5. for some score-display it would be very very useful if when EVAL etc... (or use any of the OPMO-functions) OMN-notation would be displayed and not changing to RATIOS... have a look to this example: it's written like that, because then the display is very smart. when i use "rnd-pick" or other functions it changes from OMN to RATIO... very ugly then. is there an internal solution for that or another trick? thanx for help a. ;; NICE DISPLAY BY CMD3 (setf durations1 (list '(t s t) '(3q 3e_s. t) '(5h 5h 5q_7
  6. with BAR and BEAT? that's great JANUSZ, you are always two steps ahead or "MILES AHEAD" (trumpeter's joke :-)) but WHEN will be the RELEASE?
  7. thanx for the span-ignore-pause-HINT! ...but it makes no sense to me - when you are working with EVENTS (by numbering it) - to ignore some of them the idea behind this concept is, that you could work with a (finished) score by changing some parameters or enlarge rests - like a kind of "post-production". in this way it's not necessary to go deep inside you generating-algorithms, you can only change things a little bit like in a notation-software (i think it's on that level). some months ago i had the idea to do such changes (post...) by positions with BARS/BEATS - but at the moment i thi
  8. to use the function which works on event-numbers, first you have to number it (the score), so that you could work with this afterwards... ;;; ADD numbers to text attributes (can do that in your setup), then ADD number to events ;;; have a look to the example. after that, easy to use REPLACE-ON-EVENT-NUMBER etc... (defun add-numbers-to-text-attributes (a b) (loop for i from a to b append (add-text-attributes (list (compress (list 'nr i)) (write-to-string i))))) (add-numbers-to-text-attributes 0 100) (defun add-num-to-events (omnlist) (loop for x in (single-events omn
  9. the same idea with INSERT/REPLACE (defun replace-on-event-number (omn-list &key position/list (type 'replace) (output nil)) (progn (setf omn-list (loop for i in (single-events omn-list) for cnt = 0 then (incf cnt) with position-list = (loop for x in position/list collect (car x)) with list = (loop for y in position/list collect (rest y)) with cnt2 = 0 when (= cnt (nth cnt2 position-list))
  10. it's not a common solution, only a specific for my project... 1) it should also work with chords - because it's made for EVENTS it's always one chord = one event 2) of course, you have to decide/check if you like to merge rests or not => because i'm filtering the texture by a binary-seq (binaries from a jpeg, like a sieve) it's not the idea to merge the rests, but you could do that in a seperate step. but in my case every note/event (before filtering) is numbered, so with/when BINARY-FILTER/SIEVE you will keep the numbering concise.
  11. what you could do with it? a precise "projection on a curve" of a generated OMN (in this example: a 12-tone-row, which is been permuted (by a SORTING-algorithm) from start to end, till it's a symmetrical scale)
  12. greetings andré ;;; --------------------------------------------------------------------------------------------------- ;;; because i'm working with numbered-events (to have some more control) i has to code ;;; a specific tranposition-function, which is transposing on specific spans/positions ;;; --------------------------------------------------------------------------------------------------- ;;; SUB (defun and-span (n a b) (and (>= n a) (<= n b))) ;;; MAIN (defun transpose-on-event-number (omn-list &key positions/transpose-list) (loop for i in (
  13. i think it's good and important to see that opusmodus is not a notation software (like sibelius/finale/dorico...). the potential is rightly in another area and i believe that it is important to keep the basic idea of opusmodus in focus (it's important to have restrictions/limitations) - and i think the development team is very aware of that . you can not have everything, but what is possible should be very very smart in its kind. the longer i work with opusmodus, the more i realize, for what i can use it ...and when I have to switch to another platform. and because it is
  14. i coded a new/alternative version of LENGTH-INVERT. i used it for a so called BINARY-FILTER (for events) - have a look to the example and you see the reason. in some cases you will have a much better DISPLAY/SCORE, is there an OPMO version for that? greetings andré ;;; -------------------------------------------------------- ;;; VERSION WITH OPMO length-invert ;;; -------------------------------------------------------- (defun binary-filter-old (alist bin-list) (let ((event-list (cond ((omn-formp alist) (single-events alist))
  15. ;;; FUNCTION: for some coding-cases i needed THIS function, to keep the OMN-notation ;;; and not to change to RATIO (otherwise i got strange results in NOTATION because the "ties are gone") (defun length-invert** (length-val) (append (compress (list '- length-val)))) ;;; EXAMPLES ;;; new => keeps OMN (length-invert** (car '(q e4 mp))) => -q ; in this case i wanted to keep the format with tie (length-invert** (car '(3q_q e4 mp))) => -3q_q ;;; original => changes to ratio (length-invert (car '(q e4 mp))) => -1/4 ; no tie here! i was in trouble :-) (length-invert (car '
  16. i get an error... when i evaluate this (setf with-ch1 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow1 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) > Error: OMN Parse Error: fail > While executing: omn-to-ast, in process Listener-2(13). > Type cmd-. to abort, cmd-\ for a list of availabl
  17. okay... i think CT is also working on this problem?!
  18. OVERWRITE FUNCTION: first time i'm working with this function (i coded it a year ago)... to overwrite the output/score => INSERTS.... - and it's very useful, perhaps JANUSZ could code an official OPMO-version of this which works perfect? greetings andré ;;; OVERWRITE!! ---------------------------------------------- (defun memberp (n liste) (not (equal 'nil (member n liste)))) (defun get-resolution2 (be) (cond ((memberp (cadr be) '(3 6 12 24 48)) 1/24) ((memberp (cadr be) '(1 2 4 8 16 32)) 1/16) ((memberp (cadr be) '(5 10 20 4
  19. short information about this from CT: "Currently, only the VST plugin does the pitch bend correctly, there was some reason why I did not fix the problem with the Max version, but I'll take it now. In the short term, you can also solve it by sending the pitchbend value immediately after each noteon. Pitchbend + - tritone." https://www.contimbre.com/en/ but how to how to send "the pitchbend value immediately after each noteon. Pitchbend + - tritone." ...i have no idea, i will wait for the UPDATE
  20. another EXAMPLE, with mapped pitches/cents ;;; ----------------------------------------------------------------------------------------- ;;; MAPPED CENTS/PITCHES ;;; ----------------------------------------------------------------------------------------- ;(setf pitches (rnd-repeat 100 '(d1 c2 g3 c4 d4 e4 f4 g4 gs4 bb4 c5 d5 e5 f5 g5 gs5 bb5))) (setf pitches (rnd-repeat 100 '(e4 f4 g4 gs4 bb4 c5 d5 e5 f5 g5 gs5 bb5))) (setf centlist (replace-map '(((bb4 bb5) -31ct) ((c4 c5 c2) 0ct) ((d1 d4 d5) 2ct)
  21. EXAMPLE, very easy to use... ;;; EXAMPLE HOW TO USE <get-tuning-from-omn*> (setf centlist (add-cents-tuning-to-text-atrributes :type :float)) ;;; generating a omn-seq with mictronoes (by using articulation-SLOT (setf omn-seq (make-omn :length (quantize (gen-white-noise 50) '(2 3 5) :scale 1.4 :tolerance 0.02) :pitch (filter-repeat 1 (vector-to-pitch '(c2 b6) (gen-white-noise 50))) :span :pitch :velocity (vector-to-velocity 0.1 0.99 (gen-white-noise 50)) :articulation (rnd-repeat 50 '(0ct 7ct -5
  22. dear torsten, i get no ERROR!? but here would be the newer/complete version.. p.s. i think it should be GET-TUNING and not GET-RUNING
  23. piano-layout + merge-voices (no idea about the stems, use notation software for layouting?)
  • Create New...

Important Information

Terms of Use Privacy Policy