;;; ...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
One interesting thing that could be implemented as a function could be a form of generating Negative Harmony.
In the video below, there are some explanation of what it is and the origin in the Levy book.
It was a trendy topic due to the Jacob Collier interview. And there are a lot of fun videos making versions of pop tunes using negative harmony.
The way I understand it, it is simply a kind of mapping notes in relation to an axis, like in the figure below.
So we need a function that could map a note in any register to another note in the closest register to the first on.
So, any C note will be mapped to G, all Db to F#, all D to F, all, Eb to E, all B to Ab, all Bb to A.
It´s also possible to generate other mappings as well.
I think that replace map or substitute map can do the job, but I´m not sure (I will try), but I find interesting to post it here to explore the idea.
All the best,
It´s kind of funny to sse in this por versions how every is upside down and how you can generate an entirely new song from exactly the same material.
POP TUNES with negative harmony:
;;; 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)