-
Posts
816 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by AM
-
would be interesting. it has quite some (distant?) aspects of LACHENMANN's "strukturnetz", and could be nice to work in such an direction...
-
dear ole i have no "preseted" soundsets for my work... in my current "sketch" i'm using/something something like this.. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-text-attributes '(e-bow "e-bow") '(harm-I "harm-1") '(harm-II "harm-II") '(harm-III "harm-III") '(harm-IV "harm-IV") '(harm-V "harm-V") '(harm-VI "harm-VI")) (def-sound-set gm-guitar :programs (:group guitar ord 0 bartok-pizz 1 tap 2 ponte 3 harm-I 4 harm-II 5 harm-III 6 harm-IV 7 harm-V 8 harm-VI 9)) (def-sound-set gm-vibraphone :programs (:group vibraphone ord 0 tap 2)) (def-sound-set gm-piano :programs (:group piano ord 0 e-bow 1)) for this CT-setup... git vibra pno.cePlayerOrc
-
or... (loop for x from 7 downto 1 for y from 1 to 7 collect (list x 3 y))
-
i have been working with conTimbre for a long time and it is exactly what i was looking for. playing techniques can easily be done by OPMO or SIBELIUS (vst3) via program changes. it has a great many different playing techniques. I always found IRCAM_LIB to be very inadequate, as there were not enough playing techniques etc. / you can also control CT via OSC (and as standalone or via MAXMSP). when I wrote for ensemble with additional e-player, CT-live always worked very well. (The only negative point I could say is that there are a few SAMPLES that weren't played / recorded very well. But with the size of the library, that's okay with me)
-
Dear all Today I dealt briefly how to control PROCESSING (software and programming language) by Midi. There is a great interface for this: "rwmidi" by Giuseppe Torre. You can download and install it, it works fine! A short Video (no Sound) with a very simple Processing Example movie.mov I think this is a good combination if you want to visualize your midi output (or just use de midi-data in realtime) or if you want to program a separate VISUAL track in OPMO. Here is a small example (I can't program usable in PROCESSING yet, sorry :-)) Downloads etc. are here ... https://processing.org https://gitlab.com/giuseppetorre/rwmidi-revival-master here's a video, how to install etc... https://www.youtube.com/watch?v=7iFUenT5B68&feature=youtu.be and as an attachm. my "sketch" in processing sketch_Processing_from_Midi.pde Greetings André P.S. I think there ist also a way to send data by OSC
-
generating realtime score / sending data from OPMO to POLYTEMPO NETWORK by OSC
AM replied to AM's topic in Function Examples
thanks... i will post the CODE and some videos etc. when i have finished the work - premiere will be in november... greetings andré -
dear all here's an example (from my current work)... this little video shows how i generate/display SCORE (instrumental parts) on a screen + virtual conductor (piano part). the example is "nonsense", but shows how it looks/works... you see the bars (generating), the cue, beat... and the arrow (that shows you where to read/play) ...also you hear some bad (sry) sound-simulation of the setup. in this way i can generate a whole piece in realtime on STAGE (all musicians will read their part from their own screen). this one will be for 5 instruments, ePlayer and modular synthesizer. during the performance an algorithm (or some data-streams) will generate the piece in OPMO. with OSC i can send all datas (score, beat, tempo..) from OPMO to POLYTEMPO-NETWORK (https://polytempo.zhdk.ch) and work and coordinate different independent tempo layers, conducting etc... for more POLYTEMPO informations... have a look here: https://polytempo.zhdk.ch greetings andré IMG_0083.MOV
-
here is a sketch for an alternative "binary-(or element-)layer-FUNCTION (defun element-layer (lists &key (rnd nil)) (let ((lists (if (null rnd) lists (rnd-order lists :list t)))) (car (last (loop for x in (rest lists) with list = (car lists) collect (setf list (loop for i in list with cnt = 0 when (equal i 0) collect (nth cnt x) and do (incf cnt) else collect i))))))) (element-layer (list '(1 0 0 1 1 0 0 1 0 0 0 0) '(0 2 3 0 4 5 0 6 0 7 8 0) '(11 12 13 14 15 16 17)) :rnd nil) => (1 11 2 1 1 3 12 1 4 5 13 6) ;;; hierarchic: every 0's will be replaced by the values from the next/sub-list...
-
testing videoplayer in OPMO.mov whitenoise.mov
-
- testing
- videoplayer
-
(and 2 more)
Tagged with:
-
you want to map some integers (in your case pc..) to attributes? like that? (position-filter '(0 1 2 3 4 5) '(pizz arco ponte molto-ponte stacc stacc+pizz ten+arco ten+molto-ponte)) => (pizz arco ponte molto-ponte stacc stacc+pizz) (position-filter (pcs '6-Z10) '(pizz arco ponte molto-ponte stacc stacc+pizz ten+arco ten+molto-ponte)) => (pizz arco molto-ponte stacc stacc+pizz ten+molto-ponte) or in pure CCL (loop for i in '(0 1 2 3 4 5) with attr-list = '(pizz arco ponte molto-ponte stacc stacc+pizz ten+arco ten+molto-ponte) collect (nth i attr-list)) => (pizz arco ponte molto-ponte stacc stacc+pizz)
-
Patrick Mimran. Extension folder , user function question
AM replied to PatrickMimran's topic in Support & Troubleshooting
i've made different user folders... named: user editing user pattern matching .... ...or you could put all in the same... (i realized for my work, that most of the time i'm using a "coded function" only for a specific project/work. so i stopped it to put all special functions into my user library. now, i have the functions only in my project workspace...) -
Patrick Mimran. Extension folder , user function question
AM replied to PatrickMimran's topic in Support & Troubleshooting
-
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