Fri Oct 30, 2015
This is a semi-automated backup of my old Tumblr account.
Slowly decaying and color-changing composition.
10/28/2015
The streets of Berlin are full of leafs now. Yesterday I picked up some of them. In Inkscape I created a Voronoi design which was later laser cut on black carton board. I cut the leafs by hand and glued them to the back of the carton board. Finally I placed the composition in a frame.
I assume the colors will slowly change day by day, making it a living composition, and a one-time performance.
Polyphylla fractal inspired synth
10/22/2015
An awesome additive synthesizer for Ableton Live was released today and is featured in their home page. The demo video includes some effects I programmed in Processing.
Since rendering those effects was quite slow, I made the program multithreaded. That means that it uses all available cores at 100% and provides an 8x speedup in my computer. Processing is not really designed for multithreaded operation, so I had to tweak some things. For instance, I could not use the built-in noise() function nor color mode conversions (some of the errors can be seen in this video), so I used alternative thread-safe implementations.
Q: What would be a good way to find out more about multi-threading processing? A: There used to be a page about threads in the old processing.org wiki, but it’s now gone. Threads can be a complex topic. Java offers a ton of threading options, but you only need to know a few. The trick is to learn just enough without having to read a book on threading… I found this and this containing some useful comments and ideas. I don’t really know good resources for the topic. I think one thing to consider is that Processing has many global variables holding the current state (like the stroke or fill colors), which are a source for trouble when threading. Because of that, it’s good if each thread operates on a separate PGraphics, so each one contains its own stroke and fill colors, as well as other drawing properties. Explaining all the possible glitches and gotchas in such a short answer is not possible. I can just say that there are operations that will fail in strange and hard to debug ways. For instance I had to replace noise() by the Perlin noise that comes with Toxiclibs, because that way I can create a new instance of noise for each thread and avoid strange results. If your threads are just going to do lots of calculations without drawing anything, then it should be much easier to get right.
Shader learning session at Lacuna Lab
10/14/2015
Shader learning session at @lacunalab with @p5art, Jerry and Dimitar. We followed The Book Of Shaders and I used Raphël de Courville’s awesome Shader Live Coding Processing sketch.
Gridmorphism
10/05/2015
Quantized spirals
10/01/2015
Tracking a point that spirals out, motion allowed only in 6 directions.