Jump to content

AM

Members
  • Posts

    792
  • Joined

  • Last visited

Everything posted by AM

  1. AM

    maxmsp and lisp?

    i received the following message from julien vincenot for maxmsp+lisp greetings andré
  2. it could work like this... because of the RANGE of the "chromatic mapping of your gen-sin", you have to set :root d3, otherwise you will get pitches like "a-1", which is not possible. so you have to shift your root to d3. (tonality-map '(phrygian :root d3) pitchvec) i never used <tonality-map> before, i just read the documentation of the function - so it's quiet simple greetings andré
  3. you could do it like this, check the function TONALITY-MAP (pitch-transpose 2 (tonality-map '(phrygian :map step) pitchvec)) but mapping on (other) tonalities could be musically a bit tricky - perhaps you have to "eliminate some pitch repetitions" (has to do with quantification), or sometimes you have some troubles with the ambitus (that's the reason why i added <pitch-transpose>)... but perhaps there are some other solutions...? greetings andré
  4. a speculation... example 1: because the SUM is 0!! so it will never go up to 'e6 example 2: sum is 1, it will work
  5. ;;; ...an idea ;;; how to import some TEXT and translate it to integer-sequences to use this data ;;; for LIVE-CODING. also possible without .txt, but i tried to IMPORT it. perhaps ;;; in your live-coding session a friend of you is writing the text in a different ;;; location and you could share it (the path) via CLOUD :-D ;;; i know, this kind of data... is not very smart, but a little bit steam-punky :-) (defparameter *map-integer1* '(((a à á â ã ä å æ ą) 0) (b 1) ((c ç ć) 2) (d 3) ((e è é ê ë ę) 4) (f 5) (g 6) (h 7) ((i ì î ï) 8) (j 9) (k 10) ((l ł) 11) (m 12) ((n ñ ń) 13) ((o ò ó ô õ ö) 14) (p 15) (q 16) (r 17) ((s ś ß) 18) (t 19) ((u ù ú û ü) 20) (v 21) (w 22) (x 23) ((y ý ÿ) 24) ((z ż ź) 25))) ;;; 1) open/write a .txt-file ;;; 2) define your path (inside the loop) ;;; 3) start the loop ;;; 4) write/change your .txt, and SAVE it ;;; => every 2 seconds it will be read by the code (loop repeat 60 do (progn (print (progn (setf x (string-to-list (let ((in (open "/Users/meierandre/Desktop/test.txt"))) ;; use your own path!! (read-line in)))) (text-map *map-integer1* (loop for i in x append (explode i))))) (print x)) do (sleep 2)) ;;; every 2 seconds the loop is reading your .txt, change variable x and PRINT it for this example i used PRINT (so you see what is happening), but you could also "rewrite" a variable inside your sound-live-coding-CODE/FUNCTION Bildschirmvideo aufnehmen 2019-11-02 um 23.16.58.mov
  6. LISP... any solution? i want to DIVIDE a seq into sublists -> when it's asc into a list, "rest" into single-listed values - thanx a lot for some help ;;; input (divide* '(14 12 3 13 15 8 4 10 17 2 16 0 1 6 7 5 11 9)) ;;; output => ((14) (12) (3 13 15) (8) (4 10 17) (2 16) (0 1 6 7) (5 11) (9))
  7. thanks, torsten! i know hanspeter kyburz (i almost studied with him - and because of him i started working with algorithms) and i know some of his works (CELLS / PARTS / ....). if you have the article of ERES HOLZ as pdf, would be nice (the link seems to be dead)... only some short thoughts - not on an scientific research level isn't it - in general - a question about complexity and information? and complexity/information changes when you are changing/crossing the MEDIA. that means: from algorithms/code/mathematics to sound/music or visuals... also the complexity itself changes, it's like transforming... "the complexities" are different - the manifestation of it. so it's quite simple - and you feel so important and intelligent and "arty" - when you TAKE a really advanced mathematical/algorithmic grammar/process as a TOOL, ...but in accoustic perception the result could be quite "noise", because the musical complexity is different and depends - in my opinion - a lot on "how you map these things", on which musical parameters and objects, in which dimensions... of course, it's also interesting to use such things - like algorithms - in a way of "creative misunderstanding" (as i think ferneyhough once mentioned in different context), but we should be aware of the GAPS: algorithmic complexity - effective complexity. what do you think? greetings andré HEINZ VON FöRSTER had some really good thoughts on such things - in an abstract way... here is an article.... disorder:order.pdf and an article from DAVID GALANTER... Galanter_2003_What is Generative Art Complexity theory as a context for art theory.pdf
  8. thanks! a. p.s. ... that's why i have some other solutions for my needs...
  9. thank you, torsten! (at the moment, I'm thinking about what the GAP is between visual visual l-systems (images, you see the whole "gestalt") and acoustic ones (which more has to do with the PROCESS in time, musical grammar...). the handling / perception / .... is a completely different one)
  10. my colleagues from the computermusic laboratory advised me not to steer external things via internal SLEEP, but also to control the TIME / delay via OSC. perhaps also has to do with the fact that for me different things must be controlled in parallel and synchronized. i don't know...
  11. the NUMBER is precise, but ... ...but the great thing is, you are very flexible (and open) in OPMO/lisp... and you can trigger also other software/externals from OPMO/lisp via OSC, i LOVE IT
  12. but SLEEP is not very precise - would be nic to have in OPMO a real precise trigger, like with OSC (for external players...)
  13. it's not necessary for me, just an idea
  14. ;;; a little extension for lsystems, i needed all generations, not only the final one. i think for in-time-processes it's more interesting, because you will hear/see the way of "growing/developing" ;;; perhaps JANUSZ could extended the original OPMO-function. keep attention about stack-overflow if you have LARGE DEPth :-) ;;; function (defun all-gen-lsystem (ls &key depth ) (loop repeat (1+ depth) for i from 0 to depth collect (rewrite-lsystem ls :depth i))) ;;; setup (defclass sieve_1 (l-system) ((axiom :initform '(1)) (depth :initform 10))) (defmethod l-productions ((ls sieve_1)) (choose-production ls (1 (--> 2 1)) (2 (--> 4)) (4 (--> 2 6)) (6 (--> 1)))) ;;; example ; new => all gen (all-gen-lsystem 'sieve_1 :depth 3) => ((1) (2 1) (4 2 1) (2 6 4 2 1)) ; original => only last gen (rewrite-lsystem 'sieve_1 :depth 3) => (2 6 4 2 1)
  15. because in such a fast "basic tempo" they were too close to "17" and "23" i think in slower tempo it makes sense to work with numbers they are close/closer to each other. then the perception compares the tempi, when the GAPS are to large it's only "SLOW/FAST".... depends on your ideas... THANKS FOR THE HINT, i will look at it!! andré
  16. polytemporal fall - algorithmic study [with tempo relations 3:5:7:11:17:23:29] https://soundcloud.com/andr-meier-1/algorithmic-study-polytemporal-fall this is a small example: i coordinate and play MIDIs (in this case this are simple scales) in OPMO via OSC -> maxmsp_player. you can here how precise you can coordinate simple [but polytemporal] scales => all the MIDIs coincide (?) - 30000ms after the evaluation of the code - in an unsiono pitch!!! in that way you can coordinate different scores/midi's (which have individual tempos (!)) very precise. with OSC/maxmsp_player you can change/manipulate the tempi of the midi's (directly from OPMO) so you can be variable with pre-produced midis (perhaps produced in OPMO)... greetings a.
  17. dear janusz when will be the next update (with midi-to-omn)? and it would be also nice to GET from midi: bpm duration (of the whole midi, as a result of tempo/bpm and the lengths/rests) ...if possible... thanx a.
  18. "What you are doing Andre is quite bad and unsafe" very friendly, your answer ...and i knew that, but i didn't found some hints (jn the tutorials) how to extract OMN from def-score. of course it is not good, but it took me only 2 minutes to briefly the problem for my specific application. i have not written any official opusmodus-function (which can do anything) but a simple solution which helps me.
  19. oh, this was simple here is a small program, it works... (defun get-pitch-from-midi (midipath) (loop for i in (flatten (compile-score (midi-to-score midipath) :output :score)) when (or (chordp i) (pitchp i)) collect i)) (get-pitch-from-midi "path/filename") also with length?! (defun get-length-from-midi (midipath) (loop for i in (flatten (compile-score (midi-to-score midipath) :output :score)) when (and (lengthp i) (not (integerp i))) collect i)) (get-length-from-midi "path/filename") but will not work with more then one voice / its not necessary for MY needs, so i coded only this simple solution - perhaps janusz will do it?
  20. dear all is there a quick way to import (or filter) only pitches and chords from a midi-file? if i only use these (nothing else from midi/xml) thanx for a hint andré
  21. for me usage it has to be "by OSC". i have to be able to control two programs (conducting/display + e-player/samples) simultaneously and in a coordinated way. so i can send DATA for both software-applications well coordinated...
  22. dear all here is a setup for playing midi-files/scores in polytempi / follow the instructions and have fun! just ask if you have some questions... greetings andré - personally i will use it for exact sample/e-player perfomance with my pieces which are working with "Technology-Assisted Conducting" http://polytempo.zhdk.ch ... in future i will do it all directly from OPMO or lisp - "live score generating" + polytempo-conducting + e-player) - i have already done this with my piece MODULAR FORM but not all controlled by LISP/OPMO, so next step is doing it all in OPMO/LISP ...some explanations about the piece.... andré meier - trompete | komposition - modular form WWW.ANDREMEIER.ORG greetings andré Polytempo - Wikipedia EN.WIKIPEDIA.ORG ;;; POLYTEMPO-PLAY ;;; with a MAX-patch (from my friend thomas peter) and some OSC-send i can play the same/different midis (up to 30) ;;; in different tempos in parallel - any combination, with precise coordination ;;; also possible: change global velocity (means: change velocity inside midi) ;;; time-delay (start) in ms ;;; 1) OSC-send functions: (defparameter *out-socket* (make-socket :type :datagram)) (defparameter *remote-host* "127.0.0.1") (defparameter *remote-port* 7500) (defun udpsend (&rest args) (let ((message (apply' osc::encode-message args))) (send-to *out-socket* message (length message) :remote-host *remote-host* :remote-port *remote-port*))) ;;; 2) a) put the MAX-player-folder on desktop ;;; b) start midiplayer.maxpat ;;; c) midiplayer: define your output source in [midiout@name "from MAX 1"] ;;; d) the MIDIS must be placed in the midi-folder (inside MAX-player-folder) ;;; 3) generate SCORE (here a nonsense example) (setf omn (make-omn :pitch (setf pitches (filter-repeat 1 (flatten (gen-sort (rnd-air :type :pitch :seed 45) :step 5 :sort '> :seed 123)))) :length (gen-length '(1) 1/32) :velocity (pitch-to-velocity 'p 'mf pitches :type :float) :span :pitch)) (def-score sorted-whitenoise (:title "sorted-whitenoise" :key-signature 'atonal :time-signature '(4 4) :tempo 60 :layout (grand-layout 'inst)) (inst :omn omn :port 0 :channel 1 :sound 'gm :program 'acoustic-grand-piano)) ;;; 4) COMPILE that score into your Max-Player/midi-folder => PATH+NAME!!! (compile-score 'sorted-whitenoise :file "your-path/sorted-whitenoise") ;;; 5) play it by evaluate UPSEND -> some examples ;;; /eplayer / midi-name / tempo-factor / velocity factor / time-delay in ms (udpsend "/eplayer" "sorted-whitenoise" 1.0 0.5 0) ;; originaltempo, velocity 0.5 (udpsend "/eplayer" "sorted-whitenoise" 2.3 1.0 0) ;; (* tempo 2.3) etc... (udpsend "/eplayer" "sorted-whitenoise" 0.375 1.0 2000) ;; (* tempo 0.375 with startdelay 2000ms) (udpsend "/eplayer" "stop") ; you can stop with that ;;; a tempo-relations => 23:17:13:9:3:2 -> a complex example with time-delays ;;; also possible with every and different midis you like (progn (udpsend "/eplayer" "sorted-whitenoise" 2.3 1.0 0) (udpsend "/eplayer" "sorted-whitenoise" 0.3 0.8 0) (udpsend "/eplayer" "sorted-whitenoise" 0.2 0.4 0) (udpsend "/eplayer" "sorted-whitenoise" 1.3 1.0 10000) (udpsend "/eplayer" "sorted-whitenoise" 1.7 0.9 16000) (udpsend "/eplayer" "sorted-whitenoise" 0.9 0.7 20000)) (udpsend "/eplayer" "stop") ; you can stop with that Max_Player_19-08-23.zip example.aiff goldberg_13_11.aiff example_11_7_5_3_2.aiff
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy