Future Jazz Geometry
written by agoston nagy
Since being engaged with digital art differs from other modes of artistic communication (walking through physical gallery spaces, listening to streaming sounds, reading books & articles), I find it inspiring to define some of the characteristics or question some components of software based, digital artworks. In fact, there are no two truly identical devices and/or environmental contexts we watch and listen to these pieces with, so the overall scope of a generative token reminds me of the ways performances and different sorts of community events affect the spatiotemporal conditions of an audience.
Slowly evolving pixel based automata unfolding their ways towards endless entropy, constrained interactions of a single touch or click on the surface, procedural sounds synthesised directly while the code executes start to find their role in my ongoing research and language, of which I have no Idea where it will go. I hope some aspects of my recent concepts and inspirations can serve as useful directives for the rapidly evolving community around fxhash, other digital platforms and generative art in general.
Strategic Pixels
Pixels are the smallest addressable elements in an all points addressable display device; so they are the smallest controllable element of a picture represented on the screen. I like to think of these as very simple living entities whose lives depend on simple (or more complex) set of rules. Originally, cellular automata or a-life systems are great philosophical concepts regarding to this view, where the umwelt of a pixel is defined by some initial settings and its corresponding environment.
In k3rnel, there are three types of self organizing pixel strategies present. In the first system, the bright pixels are switching their positions, trying to move downwards with random speed, until they hit another bright pixel. Each cell has a run() method, which performs actions based on the cell's surroundings. Cells run one at a time (to avoid conflicts like wanting to move to the same space) and in random order. In the second system, each pixel-cell has a convolution matrix attached to it. Convolution is the process of adding each element of the image to its local neighbours, weighted by the kernel. The values of a given pixel in the output image are calculated by multiplying each kernel value by the corresponding input image pixel values. This method is usually used for blurring, sharpening, embossing, edge detection within images. In the third system, pixels try to reconfigure their vertical order, based on their brightness value. This algorithm is called pixel sorting.
Initially, all the pixel arrays are filled with random values (which is a semi-random Perlin noise field in the case of the last, sorting algorithm) and then the corresponding algorithm is run over the pixels ad infinitum.
Recursive neighbourhoods
I had several ideas on how to introduce the different self-organizing pixel methods in one artwork. Then I stumbled in the concept of neighbourhoods: spatial units for the larger groups, where face-to-face social interactions occur in human society. Neighbourhoods consist of likeminded people, which is a similar analogy for the pixel strategies, presented above. So I started to play with simple grid systems, where each cell on the grid can be occupied by a pixel coordination strategy, or just a plain, raw strong colour area, just like on the paintings from the artists of De Stijl and Bauhaus movements.
Dynamic grids using recursion are useful for dividing the space into ever-smaller elements, where the shifts between the depths of recursions define visually compelling differences between each iterations. This way, the artwork became resolution-agnostic, it works on different shapes of devices with different screen aspect ratios.
Testing
With software and dynamic media there is always the need for testing within different contexts, on different devices, displays and hardware setups. In fact it is a challenge for blockchain based works to be able to be tested and optimized accordingly. With regular web development, there is always a chance to modify the code afterwards, when unintended, hidden errors might arise even after deployment. Lately, there were several interesting cases when it turned out that a generative, code based artwork didn’t work properly on different devices, after minting. If we use code to generate art, there will be a need to solve the issues of updating the code and software libraries that define the body of a work, since our browsers, operating systems are changing so rapidly, we won’t be able to interpret a work in the same ways as we do today.
Since the number and variety of my available hardware for testing is limited, I also made some software tests on the machines in my local copy & printing store, to see how it will work on older machines and different operating systems. Some browser based debug tools also come handy while investigating the performance of different offscreen canvases and graphical elements.
Future-jazz
Finally, apart of fast graphics, in recent years, audio also became manageable thanks to new web based tools and browser implementations. Since I came from a visual programming background, I like to think about sound as a continuous flow of material through digital signal processing (DSP) components, where synthesised sources are travelling over different filters and effect components before hitting their destination, aka the speakers. I develop my own webaudio components, that consist of generators and modifiers that can be easily chained together. Just like in any dynamic, cybernetic environment, events and time affect the behaviour of the audio engine. If the user does something, an ADSR envelope might be triggered, or when a state changes based on some time that elapsed, a filter coefficient or a delay time might be set to another range. This is really similar to building sounds and music for games, where game states are affecting the outcome.
Why jazz? Well, we can think of jazz as combinations of propulsive syncopated rhythms, polyphonic ensemble playing, varying degrees of improvisation, and often deliberate distortions of pitch and timbre. The term here is not intended to refer to the music genre, but borrows the structure and ways of jazz for constructing sonic architecture. Chance, probability, randomness, the speed of the devices and the quality of the speakers that the pieces are listened on are all active components within the formation of these nonlinear, self modifying open systems.