Jump to content

AM

core_group_3
  • Content Count

    509
  • Joined

  • Last visited

  • Days Won

    105

Everything posted by AM

  1. AM

    tutorial guide

    thanks, janusz, for this great TUTORIAL GUIDE! https://opusmodus.com/forums/tutorials/tutorial-guide/
  2. AM

    Quantisation?

    great! merry christmas
  3. AM

    Length-Legato opposite function

    it was necessary to re-organize "OMN with ties" by "omn-merge-ties" first... and find a solution if staccato-length = length ... added 2 minutes later you're welcome... it's a bit like "BRAINFOOD" solving such things... but TORSTEN is the "code-master" for the complicated things!! :-) so, i have to compose now, the real hard work
  4. AM

    Length-Legato opposite function

    the solution... (defun length-staccato (n alist) (let ((newlengths) (new-omn (omn-merge-ties (flatten alist))) (time-sign (get-time-signature alist))) (progn (setf newlengths (loop for i in (omn :length new-omn) when (> i 0) append (if (= n i) (list i) (list n (* -1 (abs (- i n))))) else collect i)) (if (omn-formp alist) (omn-to-time-signature (make-omn :length newlengths :pitch (omn :pitch new-omn) :velocity (omn :velocity new-omn) :articulation (omn :articulation new-omn)) time-sign) newlengths)))) (length-staccato 1/16 '(q -q q q)) (length-staccato 1/16 '(q e4 mp q tasto q -q q q)) (length-staccato 1/16 '((e. c4 eb4 fs4 a4 tie) (s a4 e. cs4 e4 g4 e bb4 tie) (e bb4 e. d4 f4 gs4 s b4)))
  5. AM

    Length-Legato opposite function

    dear julio i don't know if there is a solution in the om-library... coded quickly one for your problem... the basic-rhythms (denominator) should stay constant like in your examples, then it works... first value has to be your "stacc-length", second your omn-list or a length-list, have a look to the example... greetings andré (defun length-staccato (n alist) (let ((newlengths (loop for i in (omn :length alist) when (> i 0) append (list n (* -1 (abs (- i n)))) else collect i))) (if (omn-formp alist) (make-omn :length newlengths :pitch (omn :pitch alist) :velocity (omn :velocity alist) :articulation (omn :articulation alist)) newlengths))) (length-staccato 1/16 '(q e4 mp q tasto q -q q q))
  6. polytempo-discussion in OM (years ago) https://opusmodus.com/forums/topic/353-how-to-write-a-polytempo-score/?tab=comments#comment-910 --- technology for live realisation (how to conduct it) by real musicians -> by polytempo-network: https://www.facebook.com/Philippe-Kocher-Composer-31442199213/ http://philippekocher.ch/#109 http://polytempo.zhdk.ch i used this technology already for 2 pieces... also for my next work. greetings andré
  7. AM

    Midi In Collect

    to wishlist: xml-import
  8. i didn't find a OM-library-solution for this kind of thing, so i coded it... if you want to REPLACE the articulation of some specific pitches. perhaps all 'd4 sould be PONTE... you could use this. it was necessary to code it like that, because otherwise you get in trouble with the empty parameter-slots... should work fine greetings andré ;;; SUBFUNCTIONS (defun eliminate-nil (alist) (loop for i in alist when (not (null i)) collect i)) (defun complete-event-slots (omn-list) (let ((omn-art (omn :articulation (single-events (flatten omn-list))))) (single-events (omn-replace :articulation (flatten (eliminate-nil (loop for i in omn-art for cnt = 0 then (incf cnt) when (equal (car i) '-) collect (nth (1- cnt) omn-art) else collect i))) omn-list)))) ;(complete-event-slots '(5q a4 ff pizz 5q e3 -e 5q a4 f)) ;;; MAIN FUNCTION (defun replace-articulation-of-a-pitch (omn-list &key pitches articulation (chance 1.0)) (loop for i in (complete-event-slots (flatten omn-list)) when (and (member (car (omn :pitch i)) pitches) (prob? chance)) append (omn-component-replace i (list articulation)) else append i)) ;;; EXAMPLE (replace-articulation-of-a-pitch '(5q a4 ff pizz 5q e3 p -q 5q d4 pizz) :pitches '(a4 d4) :articulation 'ponte :chance 1.0) -> (5q a4 ff ponte 5q e3 p pizz -q 5q d4 p ponte)
  9. okay, but the "evaluation"-process (perhaps transpose note 2 octaves down and add pitch in a disctance of a fourth) must/could be done in LISP!?
  10. hi all does anybody already coded a FUNCTION to replace string-pitches by natural or artificial harmonics? is the specific notehead in OM (for the artificials)? would/could be very practical... perhaps if you have fast phrases in a large ambitus... the function - if it would be very well coded - could search for the nearest/closest fingering... greetings andré
  11. yes, i know - i love to code a lot of things myself, and at the moment i'm not very virtuous in it. but I have found a solution - without rebuilding my big programs. with (pprint-last-score) i can read and save the OMN, after evaluating and exporting xml/midi. so you were right, janusz, the solution was in the SYSTEM FUNCTIONS thanx for help - torsten, stéphane & janusz
  12. hi all is there a possibility to SAVE my output - the OMN-lists - (rnd-generated structures) in a seperate file? that by EVALUATION the OMN-lists will be written in a sepeart/new-generated file? ...so that i have not to re-import it via MIDI (makes a lot of strange rhythms) thanks for help andré
  13. thank you, torsten - the problem is, that i'm working with my own random/pick-functions which don't work with SEED - so, that's my fault/problem
  14. AM

    Midi In Collect

    very interested in version 2.0 - features/release?
  15. AM

    Midi In Collect

    like this?
  16. AM

    Infinity-series applied to scales/modes

    hi brian, i modified shortly the code, now you could do what you want... "step-to-pitch" will test now what the tonality-input is ... if tonality = pitches -> then use this scale, othwerwise -> "expand the scale" (defun map-infinity-series (&key seq start tonality) (step-to-pitch :steps (integer-to-interval (reset-seq seq)) :pitches (if (pitchp (car tonality)) tonality (multiple-expand-tonality :startpitch 'c0 :octaves 7 :tonality tonality)) :start start)) (map-infinity-series :seq '(0 -1 3 2 1 2 -1) :start 'fs4 :tonality (make-scale 'c2 49 :alt '(1 2 1 1))) (map-infinity-series :seq '(0 -1 3 2 1 2 -1 2 2 3 3 1 -1 1 -1 2 2) :start 'g4 :tonality '(major)) (map-infinity-series :seq '(0 -1 3 2 1 2 -1 2 2 3 3 1 -1 1 -1 2 2) :start 'fs4 :tonality '(messiaen-mode1 messiaen-mode2 messiaen-mode3)) 1) do it with library... like '(major) or (messiaen-mode1) or what else 2) do ith with a pitch-sequence like your '(make-scale 'c2 49 :alt '(1 2 1 1)) -> just REPLACE map-infinity-series by the new function-version -> ...the only thing you have to look at it: your start-pitch has to be part of your scale!
  17. AM

    Infinity-series applied to scales/modes

    janusz, is this possible directly via "infinity-series"? greetings andré
  18. AM

    Infinity-series applied to scales/modes

    violà... bit more organized... a) now you could copy the SUBFUNCTIONS+MAINFUNCTION into: extensions -> user library. in that way all the functions will be loaded automatically, and it is not necessary to EVALUATE them before using... but it's useful to document it... b) otherwise... all this functions in your workspace/opmo-file... (like you are donig it wright now) ;;; SUBFUNCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun step-to-pitch (&key steps pitches start) (let ((pos (car (position-item start pitches)))) (append (list (nth pos pitches)) (loop for i in steps ;; setting pos by add the step to pos do (setf pos (+ pos i)) ;; when pitch-range to small then reset to lowest pitch+step ;; could be a more intelligent solution when (or (>= pos (length pitches)) (< pos 0)) do (setf pos 0);(+ 0 i)) collect (nth pos pitches))))) (defun multiple-expand-tonality (&key startpitch octaves tonality) (remove-duplicates ;remove is for "cutting" if there are too much pitches (OMN loops last octave!) (loop repeat octaves with pitch = startpitch with cnt = 0 when (= cnt (length tonality)) do (setq cnt 0) append (expand-tonality (list pitch (nth cnt tonality))) do (incf cnt) do (setq pitch (car (pitch-transpose 12 (list pitch))))))) (defun reset-seq (seq) (let ((n (abs (find-min seq)))) (loop for i in seq collect (+ n i)))) ;;; MAINFUNCTION (defun map-infinity-series (&key seq start tonality) (step-to-pitch :steps (integer-to-interval (reset-seq seq)) :pitches (multiple-expand-tonality :startpitch 'c0 :octaves 7 :tonality tonality) :start start)) ;;; EXAMPLES OF USE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setf inf-list (infinity-series 128 '(1 0))) (map-infinity-series :seq inf-list :start 'g4 :tonality '(major)) (map-infinity-series :seq inf-list :start 'gs3 :tonality '(messiaen-mode6))
  19. AM

    Infinity-series applied to scales/modes

    i will write you a "merged"-function, takes not a lot of time, then it looks smarter :-) do you know how to use USER LIBRARY? very usefull - take a look... then you could import and use it like an ordinary OPMO-function
  20. AM

    Infinity-series applied to scales/modes

    is this correct? i think it is - not smart-coded but it works - you could merge the functions into ONE (sorry for my english). perhaps there is an OPMO-library-solution, but i don't know it... greetings (defun step-to-pitch (&key steps pitches start) (let ((pos (car (position-item start pitches)))) (append (list (nth pos pitches)) (loop for i in steps ;; setting pos by add the step to pos do (setf pos (+ pos i)) ;; when pitch-range to small then reset to lowest pitch+step ;; could be a more intelligent solution when (or (>= pos (length pitches)) (< pos 0)) do (setf pos 0);(+ 0 i)) collect (nth pos pitches))))) (defun multiple-expand-tonality (&key startpitch octaves tonality) (remove-duplicates ;remove is for "cutting" if there are too much pitches (OMN loops last octave!) (loop repeat octaves with pitch = startpitch with cnt = 0 when (= cnt (length tonality)) do (setq cnt 0) append (expand-tonality (list pitch (nth cnt tonality))) do (incf cnt) do (setq pitch (car (pitch-transpose 12 (list pitch))))))) (defun reset-seq (seq) (let ((n (abs (find-min seq)))) (loop for i in seq collect (+ n i)))) (step-to-pitch :steps (integer-to-interval (reset-seq '(0 1 -1 2 1 0 -2 3 -1 2 0 1 2 -1 -3 4 1 0 -2 3 0 1 -1 2 -2 3 1 0 3 -2 -4 5 -1 2 0 1 2 -1 -3 4 0 1 -1 2 1 0 -2 3 2 -1 -3 4 -1 2 0 1 -3 4 2 -1 4 -3 -5 6))) :pitches (multiple-expand-tonality :startpitch 'c0 :octaves 7 :tonality '(major)) :start 'g4)
  21. AM

    Infinity-series applied to scales/modes

    but YOUR steps are not the same from the web-archive-example -> in the web-example it's from G in C-major, steps are -> 1 -2 -> YOU are starting with steps -> 0 1 -1 2 ... ??? but, i have no idea about this infinity-things, i only MAP your SEQ to MAJOR-scale... in the way you asked for (i think), so perhaps you have to rethink the MAIN-thing? best wishes andré added 6 minutes later you have to think different - these are NOT steps, these is a INTEGER-TO-PITCH thing... perhaps mixed with tonality-map - but haven't time for that at the moment, sorry
  22. AM

    Infinity-series applied to scales/modes

    dear brian your pitch-range is too small for the step-sum... if you want to use it you have to enlarge your pitch-range. i've now done a small change - so you don' t have an error -> step-stack will now be set to 0, if pitches are lower or higher then your pitch-range, but in this case you don't have exact results mapping the STEPS so, enlarge your pitch-range -> perhaps with my "multiple-expand..."-function -> EXAMPLE 2 (defun step-to-pitch (&key steps pitches start) (let ((pos (car (position-item start pitches)))) (append (list (nth pos pitches)) (loop for i in steps ;; setting pos by add the step to pos do (setf pos (+ pos i)) ;; when pitch-range to small then reset to lowest pitch+step ;; could be a more intelligent solution when (or (>= pos (length pitches)) (< pos 0)) do (setf pos 0);(+ 0 i)) collect (nth pos pitches))))) ;;; EXAMPLE 1 (step-to-pitch :steps '(0 1 -1 2 1 0 -2 3 -1 2 0 1 2 -1 -3 4 1 0 -2 3 0 1 -1 2 -2 3 1 0 3 -2 -4 5 -1 2 0 1 2 -1 -3 4 0 1 -1 2 1 0 -2 3 2 -1 -3 4 -1 2 0 1 -3 4 2 -1 4 -3 -5 6) :pitches '(c3 d3 e3 f3 g3 a3 b3 c4 d4 e4 f4 g4 a4 b4 c5 d5 e5 f5 g5 a5 b5 c6) :start 'g4) ;;; here a function which enlarges TONALITIES OVER X-ocavtes ;;; so, that's easier then to type :-9 (defun multiple-expand-tonality (&key startpitch octaves tonality) (remove-duplicates ;remove is for "cutting" if there are too much pitches (OMN loops last octave!) (loop repeat octaves with pitch = startpitch with cnt = 0 when (= cnt (length tonality)) do (setq cnt 0) append (expand-tonality (list pitch (nth cnt tonality))) do (incf cnt) do (setq pitch (car (pitch-transpose 12 (list pitch))))))) (multiple-expand-tonality :startpitch 'c1 :octaves 6 :tonality '(major)) ;;; EXAMPLE 2 (step-to-pitch :steps '(0 1 -1 2 1 0 -2 3 -1 2 0 1 2 -1 -3 4 1 0 -2 3 0 1 -1 2 -2 3 1 0 3 -2 -4 5 -1 2 0 1 2 -1 -3 4 0 1 -1 2 1 0 -2 3 2 -1 -3 4 -1 2 0 1 -3 4 2 -1 4 -3 -5 6) :pitches (multiple-expand-tonality :startpitch 'c0 :octaves 7 :tonality '(major)) :start 'g4)
  23. AM

    Infinity-series applied to scales/modes

    here are some solutions: user- or OPMO-defined greetings andré
  24. AM

    Opusmodus on a Windows Machine (using VMWare)

    evaluate this, and check out the midi-destinations-function -> shows you the ports (midi-destinations)
  25. AM

    Argument Question (simple problem)

    But in this way: (setf binrow '(0 2 5 7 8 11)) (gen-binary-row 12 '(binrow)) What am I missing ? just do it like that: (setf binrow '(0 2 5 7 8 11)) (gen-binary-row 12 binrow) ;; your "binrow" is now a variable with a LIST as value ;; when you are writing '(binrow) it will be a LIST with the VALUE binrow (and not the values of "binrow")
×