-
Posts
800 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by AM
-
in german... https://www.amazon.de/Programmieren-COMMON-LISP-Otto-Mayer/dp/3860257102 (but without LOOP) https://www.tutorialspoint.com/lisp/index.htm https://lisptips.com https://www.youtube.com/channel/UCMV8p6Lb-bd6UZtTc_QD4zA
-
you're welcome!! i think for specific solutions it helps a lot to learn some LISP-basics (loops/conditionals/car/cons/...), then you have the possibility to make your own additional functions/libraries in OPMO. and OPMO is really great for such things!! greetings andré
-
like that..?... some code... greetings andré (defun replace-velocities-in-a-seq (omn-list &key pitch velocity-list) (flatten (loop with cnt = 0 for i in (single-events omn-list) when (equal (cadr i) pitch) collect (omn-replace :velocity (nth cnt velocity-list) i) and do (incf cnt) else collect i when (> cnt (length velocity-list)) do (setf cnt 0)))) (replace-velocities-in-a-seq '(e c4 ppppp d4 d4 e4 f4 d4 d4 g4 b4 d4 d4 d4 d4) :pitch 'd4 :velocity-list '(p mp mf f ff)) ;=> (e c4 ppppp e d4 p e d4 mp e e4 ppppp e f4 ppppp e d4 mf e d4 f e g4 ppppp e b4 ppppp e d4 ff e d4 ppppp e d4 p e d4 mp) ;; if there are more 'd4's then velocity-values, -> it starts again with first velocity-value (= cycle)
-
okay, then it seems to be a AUDULUS- or MOD-SYNTH-"problem". (audulus is only for simulation, real mod-synth for live) thanks!
-
dear janusz at the moment i'm working with AUDULUS 3 and OPMO, work's fine. but there are some problems with the articulation. is it possible that in ord. there is a little "overlapping" between two notes? in this case AUDULUS don't "recognize" a change of velocity etc... with stacc it works fine (but with a gap). is there a "non-overlapping"-articulation with almost no gap between the notes? thanks andré
-
reduce note lengths in a list programmatically?
AM replied to etu's topic in Support & Troubleshooting
(setf scale '(c4 d4 e4 f4 g4 a4)) (setf scale (omn-replace :length 'e scale)) ;; or (make-omn :pitch '(c4 d4 e4 f4 g4 a4) :length '(e q e e s t)) -
reduce note lengths in a list programmatically?
AM replied to etu's topic in Support & Troubleshooting
you could use LENGTH-MODIFY "LENGTH-MODIFY will modify a series of lengths by adding, subtracting, multiplying or dividing them with a list of duration values. If the count argument is not given to LENGTH-MODIFY then the count is chosen at random." -
for my needs it's not necessary to use opusmodus in MAX. for me it's just easier to code LISP then in other languages (i need no library) i will not do algorithmic comp... there, i will simply manage my "real-time/virtual-conducting/modular-form THING" from the POLYTEMPO-NETWORK in ONE language (lisp)... (i also found a solution for me without MAX, lisp only. a bit steam-punky, but works will be my next ensemble piece) thanx to you! andré
-
i received the following message from julien vincenot for maxmsp+lisp greetings andré
-
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é
-
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é
-
Bizarre hanging on function gen-sieve (probably loop)
AM replied to JulioHerrlein's topic in Function Examples
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 -
;;; ...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
-
good approaches, thank you!!
-
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))
-
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
-
Triggering event - anonymous functions (like in Javascript)
AM replied to Frederic's topic in Support & Troubleshooting
thanks! a. p.s. ... that's why i have some other solutions for my needs... -
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)
-
Triggering event - anonymous functions (like in Javascript)
AM replied to Frederic's topic in Support & Troubleshooting
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... -
Triggering event - anonymous functions (like in Javascript)
AM replied to Frederic's topic in Support & Troubleshooting
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 -
Triggering event - anonymous functions (like in Javascript)
AM replied to Frederic's topic in Support & Troubleshooting
but SLEEP is not very precise - would be nic to have in OPMO a real precise trigger, like with OSC (for external players...) -
it's not necessary for me, just an idea
-
;;; 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)