Jump to content

AM

core_group_3
  • Content Count

    471
  • Joined

  • Last visited

  • Days Won

    101

Everything posted by AM

  1. AM

    velocity-to-dynamic limitation

    you are brilliant! will it be part of the "official OM", or should i integrate it in my USER LIBRARY? regards andré
  2. AM

    step-to-pitch

    here is a little "sketched" function STEP-TO-PITCH , perhaps OM could further develop the function... ;;; FUNCTION (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 (> pos (length pitches)) do (setf pos (+ 0 i)) collect (nth pos pitches))))) ;;; EXAMPLES (step-to-pitch :steps '(1 1 -1 2 2 -1) :pitches '(c4 d4 e4 f4 g4 a4) :start 'c4) ;; => (c4 d4 e4 d4 f4 a4 g4) (step-to-pitch :steps '(1 1 -1 2 2 -1) :pitches (expand-tonality '(c4 chromatic)) :start 'c4) ;; => (c4 cs4 d4 cs4 ds4 f4 e4) (step-to-pitch :steps '(1 1 -1 2 2 -1 5) :pitches (expand-tonality '(c4 messiaen-mode6)) :start 'c4) ;; => (c4 d4 e4 d4 f4 gs4 fs4 gs4)
  3. the "STEP-TO"-idea could be used more common... with other parameters...welcome to extend/develop it... for mulidimensional/multiparametrical rnd-walks (first example)? :-) ;;; FUNCTION -> same as step-to-pitch (defun reading-list-by-steps (&key steps values start) (let ((pos (car (position-item start values)))) (append (list (nth pos values)) (loop for i in steps do (setf pos (+ pos i)) when (> pos (length values)) do (setf pos (+ 0 i)) collect (nth pos values))))) ;;; EXAMPLES ;;; rnd-walk all parameters (make-omn :length (reading-list-by-steps :steps (gen-walk 4 :start 1) :values '(1/32 2/32 3/32 4/32 5/32 6/32) :start 3/32) :pitch (reading-list-by-steps :steps (gen-walk 4 :start 2) :values (expand-tonality '(b3 messiaen-mode6)) :start 'ds4) :velocity (reading-list-by-steps :steps (gen-walk 4 :start 1) :values '(pppp ppp pp p mp mf f ff fff ffff) :start 'ppp) :articulation (reading-list-by-steps :steps (gen-walk 4 :start 1) :values '(ponte tasto spicc ord pizz snap) :start 'tasto)) ;;;; separeted examples (reading-list-by-steps :steps (gen-walk 4 :start 1) :values '(pppp ppp pp p mp mf f ff fff ffff) :start 'ppp) ;; => depends on rnd-walk values (reading-list-by-steps :steps '(1 1 -1 2 2 -1 1) :values '(a b c d e f g) :start 'b) ;; => (b c d c e g f g) (reading-list-by-steps :steps '(1 1 -1 2 2 -1 1) :values '(1/32 2/32 3/32 4/32 5/32 6/32) :start 3/32) ;; => (3/32 1/8 5/32 1/8 3/16 3/32 1/16 3/32) (reading-list-by-steps :steps '(1 1 -1 2 -1) :values '(ponte tasto spicc ord pizz snap) :start 'tasto) ;; => (tasto spicc ord spicc pizz ord)
  4. AM

    step-to-pitch

    is it also possible to start at a specific pitch? (tonality-step '(c4 d4 e4 g4 a4 f4) '(1 1 -1 2 2 -1) :start 'e4)
  5. AM

    step-to-pitch

    extended idea: would be nice to do it with chords => instead of a scale, a sequence with chords... thanx a lot for such a quick developing/implementation!!
  6. short question... is there a function in OM to map an interval-list directly on a TONALITY or a SIEVE? in a way that the intervals are like steps? ..i coded that alreday for myself, but perhaps there is an OM-solution for such things? nonsense-example: (setf intervallist '(1 1 0 -2)) (setf pitches '(c4 e4 g4 b4)) => :start 'c4 => result: '(c4 e4 g4 g4 c4) thanx andré
  7. AM

    mapping intervals as steps

    STEP-TO-PITCH - function ...perhaps OM could implement such a STEP-TO-PITCH function (in a more professional programming way)? ...in that way it's simple to map any/same GESTALT(S) on any/different (pitch-)MEDIAS (like pitchfields/spectral/whatelse). ...would be the shortest way to "project" (certainly in varèse-way) for example ALL MY DUCKS to whole-tone-/minor/messiane-x or on a inclined plane "pseudo-code" for this non-sense-example: -> (setf intervals (pitch-to-interval pitches-all-my-ducks)) -> (step-to-pitch intervals :tonality 'messiaen5) added 3 minutes later @stephane but - as i know - with tonality-map there sometimes "strange results" because it don't works by steps... -> look at: (tonality-map '(major) '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 as4 b4)) => (c4 c4 d4 d4 e4 f4 f4 g4 a4 a4 a4 b4) the GESTALT-transformation makes more sense by this STEP-concept
  8. AM

    mapping intervals as steps

    this is probably a misunderstanding... intervals in a sense of STEPS, not as second/third/... as steps in a predefined/organized pitch/frequency-space... ;;; like that (defun interval-projection-on-pitchfield (&key pitchfield intervals (base 0)) (let ((integers (pitch-to-integer (interval-to-pitch intervals))) (base-0-integers) (centering) (pos)) (setq base-0-integers (loop for i in integers collect (+ (abs (find-min integers)) i))) (setq centering (if (evenp (find-max base-0-integers)) (/ (find-max base-0-integers) 2) (/ (1+ (find-max base-0-integers)) 2))) (loop for i in base-0-integers do (setq pos (+ i (* -1 centering) base)) when (< pos 0) do (setq pos 0) when (> pos (1- (length pitchfield))) do (setq pos (1- (length pitchfield))) collect (nth pos pitchfield)))) (interval-projection-on-pitchfield :pitchfield (expand-tonality '(c3 chromatic)) :intervals '(1 -1 2 -1 -1 -1) :base 4) ;;; => (ds3 e3 ds3 f3 e3 ds3 d3) (interval-projection-on-pitchfield :pitchfield (expand-tonality '(c3 whole-tone)) :intervals '(1 -1 2 -1 -1 -1) :base 4) ;;; => (fs3 gs3 fs3 as3 gs3 fs3 e3) (interval-projection-on-pitchfield :pitchfield (expand-tonality '(c3 major)) :intervals '(1 -1 2 -1 -1 -1) :base 4) ;;; => (f3 g3 f3 a3 g3 f3 e3) (interval-projection-on-pitchfield :pitchfield (expand-tonality '(c3 chromatic-permuted-diatonic-dorian-mixed)) :intervals '(1 -1 2 -1 -1 -1) :base 4) ;;; => (e3 f3 e3 g3 f3 e3 d3)
  9. AM

    mapping intervals as steps

    i'm not sure -> but interval-to-pitch works on "chromatic" only!? and not on other TONALITIES...?
  10. AM

    OMN processing function creation example

    my wish for SINGLE-EVENTS would be to add user-defined "informations" to an event -> like voice-number, oder instrument, or....
  11. AM

    OMN processing function creation example

    an other solution... same result... greetings andré ;;; by using SINGLE-EVENTS -> my preferred tool (defun alt-add-3rd-quarter (omn-list) (loop for i in (single-events omn-list) when (equal (first i) 'q) append (omn-replace :pitch (chord-interval-add '(4) (list (second i))) i) else append i)) (alt-add-3rd-quarter '(e c4 p d4 q e4 f stacc e f4 p a4 q g4 f stacc)) => (e c4 p e d4 p q e4gs4 f stacc e f4 p e a4 p q g4b4 f stacc)
  12. AM

    Need more open windows/frames

    for me also... would be nice "to split screens" (composer, score etc...) to work/see it on different windows/screens regards andré
  13. AM

    xml-bug

    i see, it was a bad example... but perhaps it will be possible to display grace notes in a tuplets in the future?
  14. AM

    xml-bug

    dear janusz this XML-layout is strange - when i try to inserting appoggiaturas or acciaccaturas in sequences with tuplets example: '(5q fs3 pppp ord -5d.q 5q d4 ppp ord -q 5h g4 ff ord (app e e4 fs4 gs4 f4) 5q e4 ppp ord -5q 5q b4 ff ord 5q a4 ff ord -5d.. 5q fs4 ppp ord (app e e4 fs4 gs4 f4) 5q e4 ppp ord -5ddq 5q fs4 ppp ord -5w.. 5q gs4 ppp ord -5h 5q f4 ff ord 5q eb4 ff ord -5h. 5q g4 ff ord -5w -5q 5w e5 pppp ord) also like that with 1/12 etc... thanx andré
  15. AM

    xml-bug

    i see, it's okay for THIS case! but for other rnd-generated-rhythm-structures it don't work... ...to insert something like (app - gs4) ... in cases like '(w_5h. f5 pppp ord (app - gs4) 5q g5 ppp ord) the (app - ...)-solution also don't work properly but thanx andré
  16. AM

    OMN Symbol VOICE

    great thing! for me it's important to have the voice-symbol also in (single-events omn-list), and to read it like (omn :voice omn-list), and (voicep omn-list) greetings andré
  17. bad code-style, but modify/use it... ;;; FUNCTION ;;; expands (merges) length-values in the order of the substructure-list ;;; by inverting immediate following length-rests. ;;; (defun gen-legato-substructure (omn-list substructure-list) (loop repeat (length (single-events omn-list)) with event-list = (single-events omn-list) with sub-cnt = 0 for cnt = 0 then (incf cnt) when (and (equal (car (cond ((lengthp (car substructure-list)) (omn :length (nth cnt event-list))) ((pitchp (car substructure-list)) (omn :pitch (nth cnt event-list))) ((velocityp (car substructure-list)) (omn :velocity (nth cnt event-list))) ((articulationp (car substructure-list)) (omn :articulation (nth cnt event-list))))) (nth sub-cnt substructure-list)) (length-restp (car (nth (1+ cnt) event-list)))) collect (omn-replace :length (+ (car (omn :length (nth cnt event-list))) (abs (car (omn :length (nth (1+ cnt) event-list))))) (nth cnt event-list)) and do (incf cnt) and do (incf sub-cnt) else collect (nth cnt event-list) when (= sub-cnt (length substructure-list)) do (setf sub-cnt 0))) ;;; generating something like noise (setf mat (flatten (make-omn :pitch (loop repeat 100 collect (rnd-pick '(c4 d4 e4 f4 g4 a4 b4 c5))) :length (loop repeat 100 collect '(1/16 -13/16)) :velocity (loop repeat 100 collect (rnd-pick '(p mp mf f))) :articulation (loop repeat 100 collect (rnd-pick '(ord flaut ponte)))))) ;;; EXAMPLES: ;;; makes a "LEGATO" on this seq '(c4 d4 b4 f4) (setf omn (gen-legato-substructure mat '(c4 d4 b4 f4))) ;;; makes a "LEGATO" on this seq '(ponte ord flaut) ;(setf omn (gen-legato-substructure mat '(ponte ord flaut))) (def-score example (:title "example" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instr :omn omn :channel 1 :sound 'gm :program 'acoustic-grand-piano))
  18. AM

    Remove stems?

    perhaps you could also add :space-notation to your todo list? greetings andré
  19. AM

    Opusmodus 1.2.21420

    single-events => an important function for many things - great, that it's implemented now!
  20. AM

    replace/map & datastructure

    thanx a lot for that "professional approach"! herzlichen dank für diese lösung, viel smarter :-)
  21. first question i would like to replace the dynamics of all "tasto"-sounds in an OMN-sequence, is there a function for that? for example '(e. c4 pppp tasto d4 ponte e4) -> replace only the dynamic of the TASTO result should be: '(e. c4 f tasto d4 ppp ponte e4) second question (if i want to code it for myself) ...is there always a constant dataset/stream (events) in the "background"? like : '((e. c4 pppp tasto) (e. d4 pppp ponte) (e. e4 pppp ponte))? which function shows me this, so called, EVENTS. for some coding this format is a lot more usefull then seperat lists of each parameter thanks for help and HAPPY CHRISTMAS andré
  22. AM

    replace/map & datastructure

    here is a solution - because i didn't know how it works in pure OM/OMN greetings andré ;;; SUB (defun gen-events-from-lists (&key durations pitches (velocities 'nil) (articulations 'nil) (optional_data1 'nil) (optional_data2 'nil) (optional_data3 'nil)) (loop repeat (length durations) with cnt1 = 0 with cnt2 = 0 with event-cnt = 0 when (> (nth cnt1 durations) 0) collect (list (nth cnt1 durations) (nth cnt2 pitches) (nth cnt2 velocities) (nth cnt2 articulations) (nth cnt2 optional_data1) (nth cnt2 optional_data2) (nth cnt2 optional_data3) event-cnt) and do (incf cnt1) and do (incf cnt2) else collect (list (nth cnt1 durations) nil nil nil nil nil nil event-cnt) and do (incf cnt1) do (incf event-cnt))) (defun gen-omn-from-events (event-stream) (length-rest-merge (loop for i in event-stream append (loop for j in (butlast i) when (not (equal j 'nil)) collect j)))) ;;; MAIN (defun replace-velocity-of-a-technique (omn-list technique velocity) (gen-omn-from-events (loop for i in (gen-events-from-lists :durations (flatten (omn :length omn-list)) :pitches (flatten (omn :pitch omn-list)) :velocities (flatten (omn :velocity omn-list)) :articulations (flatten (omn :articulation omn-list))) collect (pattern-map (list (list (list '? technique) (list velocity technique))) i)))) ;;; EXAMPLE (replace-velocity-of-a-technique '(e. c4 pppp tasto d4 ponte e4) 'tasto 'fff) => (e. c4 fff tasto d4 pppp ponte e4 -)
  23. AM

    replace/map & datastructure

    thanx, but the rest of the sequence should be/stay "pppp"
  24. AM

    replace/map & datastructure

    i tried, but it didn't work... why, where is my mistake? (pattern-map '((pppp tasto) (ff tasto)) '(e. c4 pppp tasto d4 ponte e4) :type :velocity)
×