
Content Count
544 
Joined

Last visited
Posts posted by AM


another example/experiment  you hear 4 times the same "brownianphrase" but mapped on different tonalities...
a) diatonic/major
b) bluesheptatonic
c) chromatic
d) messiaenmodus
greetings
andré
JulioHerrlein and opmo reacted to this 
thanx, but just a project/coding sketch  nothing serious



you could add it!

perhaps you have some better ideas  ...perhaps with range/ambitus... sometimes in trouble  but i only use it for my current work, and so it's no problem
could be nice if you could do the addsystem also with an external list input > not fibonacci or primes or sum, but perhaps also with any integer or float list. so MODIFYfunction could be done with any DATA...
and perhaps it could be also nice for LENGTH and DYNAMICS, i would like that (allinone)

generate some examples...
;;; evaluate shiftcmde (progn ;gen a sieve (setf sieve (gensieve '((c0 c5) (c3 c6) (c4 c8)) '((14 1 2) (5 5 1 2) (6 2 1)) :type :pitch)) ; gen a line inside the sieve (setf sample (append (genrotate (random 8) (picksamplefromcenter sieve (rndpick '(7 11)))) )) (pitchlistplot (list ; gen modified loines with "compr/expandmelody" (setf line1 sample) (setf line2 (compr/expandmelody sample sieve :type 'add :n 1 :shift 5)) (setf line3 (compr/expandmelody sample sieve :type 'add :n 2 :shift 8)) (setf line4 (compr/expandmelody sample sieve :type 'add :n 3 :shift 11))) :joinpoints t) (setf chordseq (loop for i in line1 for j in line2 for k in line3 for l in line4 append (chordize (list i j k l))))) ;;; ecvaluate with command2 (setf omn (list 's chordseq)) (setf omn (flatten (list 't line1 'h 't line2 'h 't line3 'h 't line4)))

greetings
andré
;;; MODIFY THE PITCH CONTOUR inside a pitchfield or tonality ;;; please evaluate the example and have a look to the contours ;;; subfunction (defun positionitems (items alist) (loop for item in items append (positionitem item alist))) ;;; function (defun compr/expandmelody (melody field &key (type 'add) (n 1) (shift 0)) (let* ((ints (loop for i in (difference (positionitems (pitchtomidi melody) (pitchtomidi field))) collect (cond ((equal type 'add) (cond ((<= i 1) ( i n)) ((>= i 1) (+ i n)) (t i))) ((equal type 'fibonacci) (cond ((>= i 1) (+ i (fibonacci i))) ((<= i 1) ( i (fibonacci (abs i)))) (t i))) ((equal type 'summativ) (cond ((>= i 1) (+ i (+ i n))) ((<= i 1) ( i (+ (abs i) n))) (t i))))))) (positionfilter (x+b (intervaltointeger ints :start (car (positionitems melody field))) shift) field))) ;;; expand 1a (progn (setf seed (random 100)) (pitchlistplot (list (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 1) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 2) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 3) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 5) (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed)) :joinpoints t)) ;;; expand 1b => using shift (changed startposition) (progn (setf seed (random 100)) (pitchlistplot (list (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 1 :shift 1) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 2 :shift 2) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 3 :shift 3) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 5 :shift 4) (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed)) :joinpoints t)) ;;; compress (progn (setf seed (random 100)) (pitchlistplot (list (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 1) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 2) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'add :n 3) (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed)) :joinpoints t)) ;;; expand 2 with fibonacci (progn (setf seed (random 100)) (pitchlistplot (list (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'fibonacci) (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed)) :joinpoints t)) ;;; expand 3 summativ (progn (setf seed (random 100)) (pitchlistplot (list (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'summativ :n 1) (compr/expandmelody (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed) (gensieve '(c1 c9) '(2 1 1) :type :pitch) :type 'summativ :n 2) (rndsample 7 (gensieve '(c4 c5) '(2 1 1) :type :pitch) :seed seed)) :joinpoints t))
some evaluations > different melodic contours (rnd / in a sieve) and its expansions

yesterday we tried to implement/start maxlispj on MAX 8
http://sites.music.columbia.edu/brad/maxlispj/
maxlispj is from 2011, it works more or less in MAX 8 / MOJAVE, but not stable enough. perhaps there will a be some better solutiuons in the future...
greetings
andré
Stephane Boussuge reacted to this 
Clozure CL => the new COMMON LISP version works with MOJAVE now have a look at apple's appstore

dear all
conTimbrelibrary works (in the next update) perfect with TUNING (midipitchbend) and PAN now. thanx to thomas hummel and janusz!
here are some simple sound examples...
opmo and torstenanders reacted to this 
"then there is a bug in conTimbre midi listener"... okay i will tell thomas hummel
thanks

dear all
is there a possibility to change the PAN in every EVENT?
1)
like '((q c4 mp pan30) (e c3 pp pan100))
would be interesting for LIVECODING
is there something predifined? like it will come up with microtonality/tuning
2)
and why does it work with simplemidisound (a list in :pan) and not with a player like conTimbre (there is something i don't understand with midi/players/etc)?
thanx for a hint
andré
an example: (setf omn '((5q c4 5q 5q 5q 5q 5q 5q 5q) (q) (e e e e e) (q) (7q 7q) (3q 3q) (q) (5q 5q 5q) (7q 7q) (3q 3q 3q 3q) (e e) (q) (3q 3q 3q 3q 3q) (e e e e e))) ;;; (defscore signature (:title "signature" :keysignature 'atonal :timesignature '(4 4) :tempo 60) (instr ;:port 0 :omn (omnreplace :velocity (picknorepeat 100 '(pppp ppppp ppp ppp pp p)) (lengthdiminution 4 (genrepeat 10 omn))) :tuning (genwhitenoise 100 :scale 0.1) :pan '(1 1 1 1 1 1 1 1 10 30 1 1 1 100 100 80 77 15 100 100 100) :channel 1 :sound 'gmtrumpet))

I got a trial version of the new conTimbreplayermaxpatch (from thomas hummel), now the opusmodustuning also works well in conTimbre.
I think it will be in the next update ...
...i like it more in cents then in float...
(defun centstotuning (centlist) (a*x 0.01 centlist)) (centstotuning '(14 +50 5)) => (0.14 0.5 0.049999997)

(ambitusoctaves 'c3 2 (closestpath '(b3eb5g3 cs6e7gs3 b4f5g6 f7e5c2 d4f7e4 gs7e2a8))) => (g3b3eb4 gs3cs4e4 b3g3f4 c4f3e4 d4e4f3 e4gs3a3)
or you could put this two FUNCTIONS into ONE => (closestpath*...
just take all the values/arguments from the basic version and add the octavething?
greetings
andré
JulioHerrlein reacted to this 
i already did that
(defun addrnddust (omnseq &key (span '(0.1)) (seed nil) (quantize '(1 2 3 4 5 6 7 8 9)) (scale 1.0) (tolerance 0.05)) (let ((rhy (omn :length omnseq)) (sp)) (progn (setf rhy (loop with cnt = 0 for i in rhy do (setf sp (nth cnt span)) when (not (null seed)) do (incf seed) when (> i 0) collect (+ i (car (rndnumber 1 0.0 (* i sp) :seed seed))) else collect ( i (car (rndnumber 1 0.0 (* i sp) :seed seed))) when (< cnt (1 (length span))) do (incf cnt))) (makeomn :length (quantize (floattoratio rhy :ratio 1/1) quantize :scale scale :tolerance tolerance) :pitch (omn :pitch omnseq) :velocity (omn :velocity omnseq) :articulation (omn :articulation omnseq)))))

an example:
this is the BASICversion (without "dust"):
all mapped in 1/32  retrograde sorting processes (with GENSORT):
pitchprocess from chromatic to 12tonerow (by sort) and from sorted lengthvalues (all 1/32,
then all 1/16 etc... to more complex/mixed pattern (by sort))
with this setup:
the result with some "dust":
if you you have a look to the spanlist above (compare with the new score) you will see:
no change at the beginning, then more and more randomized (or made flexible).

@janusz: if you try the function a few times (without seed) , you will see (by cmd1), that sometimes the last TIE isn't there. i think QUANTIZE is doing this little bug... (but perhaps only a xmldisplaything?)

;;; ADDRNDDUST TO LENGTHS ;;; this function adding RANDOMLY some "dust" to the LENGTHS, so it will be like a little rubato, ;;; or "humanizing"effect. the ADDSPAN is in percent (0.1 = 10%) on each lengthvalue. (defun addrnddust (omnseq &key (span '(0.1)) (seed nil) (quantize '(1 2 3 4 5 6 7 8 9))) (let ((rhy (omn :length omnseq)) (sp)) (progn (setf rhy (loop with cnt = 0 for i in rhy do (setf sp (nth cnt span)) when (not (null seed)) do (incf seed) when (> i 0) collect (+ i (car (rndnumber 1 0.0 (* i sp) :seed seed))) else collect ( i (car (rndnumber 1 0.0 (* i sp) :seed seed))) when (< cnt (1 (length span))) do (incf cnt))) (makeomn :length (quantize (floattoratio rhy :ratio 1/1) quantize) :pitch (omn :pitch omnseq) :velocity (omn :velocity omnseq) :articulation (omn :articulation omnseq))))) ;;; EXAMPLE (addrnddust '(h c3 h. d3 h q. f3 q g3) :span '(0.5 0.3 0.2 0.1) :quantize '(1 2 3 4 8) :seed 123) => (ht c3 h.s. d3 e q t e.._3h f3 3q_q g3) (addrnddust '(q c3 q d3 q e3 q f3 q g3) ;;possible addspan per value (1 = 100% of the value, 0.5 = 50% etc.) ;;if it's a list, it will stay on the last value of the spanlist :span '(0.4 0.3 0 0 2) ;;how to quantize new lengths :quantize '(1 2 4 8) :seed 123) => (q c3 qt d3 q e3 f3 hs. g3) (addrnddust '(h c3 h. d3 h e3 q. f3 q g3) :span '(0.5) ;; = every value maxadd 50% :quantize '(1 2 3 4 8) :seed 2999) => (hs. c3 wt d3 3w.e e3 3wq. f3 q g3) (addrnddust '(q c3 q d3 q e3 q f3 q g3) :span '(0.4 0.3 0 0 2) :quantize '(1 2 4 8) :seed 1111) => (qt c3 qs d3 q e3 f3 q... g3) (addrnddust '(h c3 h d3 h e3 h f3 h g3) :span '(0.3 0.2 0.1 0 0.2) :quantize '(1 2 4 3 5) :seed 2999) => (5dh. c3 5dhq. d3 h e3 f3 he g3)

the only problem seems to be, that it only works with CCL 1.12 on mojave... but this is not the official actual version in apple's appstore. so it don't work with 1.11....
does anyone know how to fix this problem?

dear all
does anyone have experience with an implementation of LISP in maxmsp?
i'm looking for: "Max handling real time input, output, timing and control, letting Lisp handle variable handling and of course the processing of large amounts of data"
does anyone tested this?
thealexgraham/lisper
GITHUB.COMLisper is an easy to use interface between Max/MSP and Common Lisp  thealexgraham/lisperthanx for a hint
andré

"My focus is on the everchanging relationship that composers have with rules and procedures."
some ideas/names...?
=> MOZART https://en.wikipedia.org/wiki/Musikalisches_Würfelspiel
=> the LIGETIanalysis of BOULEZ's STRUCTURES ?
=> MESSIAEN in general: https://monoskop.org/File:Messiaen_Olivier_The_Technique_of_My_Musical_Language.pdf, or specific "MODE DE VALEURS ET D'INTENSITÉS"
=> GOTTFRIED MICHAEL KöNIG
=> XENAKIS (the "ST"pieces?)
=> HAUER https://de.wikipedia.org/wiki/Zwölftonspiel
JulioHerrlein reacted to this 
i took the old one  it worked well

1 hour ago, JulioHerrlein said:Thanks a lot, André !
I´m trying to use your famous loops !
All the Best !
Happy 2019 !
Julio
i know, LOOPS are not very LISPian! but for me the most simple way "to think such processes" (more intuitive then recursion/iteration). and when the function/code is not to large it's not that important...
JulioHerrlein reacted to this
brownian bridges  algorithmic study
in Made In Opusmodus
Posted
too much code and too complicated to post  I do not have the time to write a manual.
it's a "machine" that creates multiple "brownian bridges" combined with "pitchcontour" and "addrnddust". it's an allinONE tool/machine/bot...
I'm interested in repetition/difference in other contexts than traditional ones; but "brownian bridges" then resemble ornaments. when the sequences are short  brownian bridges are "rndprocesses" between 2 fixed points  then you will keep ornamental sequences between this 2 points/pitches...
(I did not work with a score, just coding and listening  it's only sketching/testing, not composing. and all the examples are "rndgenerated"/notcomposed by the machine, you could produce more and more...)
some links:
Brownian bridge  Wikipedia
> in OPMO