This was a great New Year! There was a local event for New Year’s Eve near where I live and the whole community was there. It was quite inspiring to see everyone party together. For my part, I decided to present one of the projects I have been working on: a Fluxus projection while I was mixing music.
I have to tell you that mixing music and doing visual at the same time was a bit too much, but still it was fun. Fluxus is a live coding platform that has been created for live visual events, but is also a term used to describe an intermedia art current. From Wikipedia:
Fluxus—a name taken from a Latin word meaning “to flow”—is an international network of artists, composers and designers noted for blending different artistic media and disciplines in the 1960s. They have been active in Neo-Dada noise music and visual art as well as literature, urban planning, architecture, and design. Fluxus is sometimes described as intermedia.
It describes itself as: A 3D game engine for livecoding worlds into existence. Let’s just say that I haven’t used Fluxus to its maximum potential (that is, live coding reality into existence), but I used some coding to add to my DJ performance. I had planned to use an OSC controlled sketch to help me change the visual from my Nintendo DS using DSMI, so that I could simply play with my NDS while mixing. But because of a lack of time, I didn’t get the proper setting in place. I am almost there for the OSC, so I left it in the code that you can find in this article. Hopefully in the next live presentation, I’ll be able to use it.
While mixing some songs I got to display some visuals and I tried to do some live coding, but it takes more than an untrained mind that is focused on mixing music to do live coding in public. Even if the presentation wasn’t the greatest, I am quite happy with the results. Next time I will rely more on other devices, and will probably leave the live coding for when I am not mixing!
Entering the world of Fluxus is really nice and addictive. The community that has built Fluxus is also quite supportive and helpful. The code I created is a really simple recursion (a part of the code that calls itself in a loop) but it becomes quite interesting. If you watch the whole animation, it starts with a line of spheres that swirl into themselves until they create shapes like DNA and all sorts of swirls. As if it was an explanation of how the universe came into existence, something like a linear universe that spins into itself. 😉
Here is a short video of the event ~ we don’t have much footage of the whole event, but it gives you an idea of what was going on! Underneath you can see the code I used for the visual. You can copy it and try it for yourself ! Fluxus runs on every platform.
(clear)
; (define obj (build-cube)) ; create a cube to lock camera too
; (osc-source “9000”)
; defining all the osc source 3 slider and a kaos xy
(define oscR 1)
(define oscG 1)
(define oscB 1)
(define oscY 1)
(define oscX 1)
(define evolve 0)
;(lock-camera obj) ; locking the camera that will be used by osc
;(camera-lag 0.1)
(texture (load-texture “egg3.png”))
(gain 0.1)
(define (animate)
(with-primitive obj
(identity)
; loading the osc data into the variables
(display (mouse-wheel))
(when (osc-msg “/ds/kaos/y”)
(set! oscY (* 1000 (osc 0))))
(when (osc-msg “/ds/kaos/x”)
(set! oscX (* 1000 (osc 0))))
(when (osc-msg “/ds/slider1”)
(set! oscR (* 1000 (osc 0))))
(when (osc-msg “/ds/slider2”)
(set! oscG (* 10 (osc 0))))
(when (osc-msg “/ds/slider3”)
(set! oscB (* 100 (osc 0))))
;applying the osc data
(rotate (vector oscX oscY oscR))
;(scale (vector oscB oscB oscB))
)
)
; My main recursion
(define (play count)
(cond
((not (zero? count))
(rotate (vector (time) 0 0)) ; keeping it moving
; getting the sphere to react to audio input
;(colour (vector (+ 10 (* 100 (gh 1))) (* 100 (gh 1)) (* 100 (gh 1))))
(scale (vector (+ 1 (gh 1)) (+ 1 (gh 1)) (+ 1 (gh 1))))
(draw-sphere)
(with-state
(rotate (vector 0 0 (* 10 (time))))
(translate (vector 3 3 3))
(scale (vector .6 .6 .6))
(draw-sphere)
(rotate (vector 0 0 (* 100 (time))))
(translate (vector 2 2 2))
(scale (vector .6 .6 .6))
(draw-sphere)
(rotate (vector 0 0 (* 100 (time))))
(translate (vector 2 2 2))
(scale (vector .6 .6 .6))
(draw-sphere))
(translate (vector 1 2 3))
(play (- count 1)))))
(every-frame(begin
; (animate)
;mouse wheel to increase the number of recursion
(set! evolve (+ evolve (mouse-wheel)))
(play evolve)))