Since I haven’t been making much progress on my circuit, I moved my attention toward coding. While I’m waiting on my circuit completion in order to create the wave output and the actual generative art, I’ve been playing around in Processing and doing research on libraries and techniques for creating the generative art.
The header image is a picture of an optogenetically altered hippocampus’s (area in the temporal lobe involved in memory) cells. I really like the textural feel of this image!
Random inputs are often included in the creation of generative art, so I’ve been looking around and playing with the two different kinds on Processing, which are called random() and noise().
The random() function chooses a random number, and can be limited to choose from a certain range. When implemented to change the y position of a line, it looks like this:
Noise() on the other hand is based off of Perlin noise, a random sequence generator that acts as a natural sort of number generator. When implemented in the same way as the random() function, it looks like this:
It’s much smoother, calmer, and more natural than random().
I think noise() will be more useful as I move forward in implementing various random aspects of the generative art. I tried the same principle of applying both of the functions to a program and seeing the difference, but in this case I used a sphere as the affected entity. I’m planning to use a sphere as my central focus, but there will be more on that later. Here were the results (click to view):
It’s very obvious how the different functions affect movement.
This is another gif, taken from the Inscapes animation film designed specifically for children in MRI scanners. We actually use this video during the MRI sessions we do at the lab I work at, so I get to see this video all the time. I really like the sphere central focus, with particles and protrusions, and I’m hoping to incorporate it in my final product.
I’ve found a library in Processing called G4P, which is basically a GUI design tool for programs. It’s neat in that you can open up a workspace to drag and drop the elements you want (buttons, sliders, labels, etc.), and then the library will process your placement, size, and other features of the elements and convert it into code, which takes out a lot of the guess and check methods that come along with graphics in programs. While I don’t see very much use for that aspect of G4P, I’ve implemented one of its features, which is having multiple windows within one program. This way, I can have my three windows (waves, prompts, and art) open all together when I tell the program to run. It’s a really neat feature, and it’s proving very useful, too.
I’ve been doing a lot of searching into text animation libraries for Processing, because I want the prompts interface to be dynamic and exciting. I found the perfect library, too! It’s called NextText, and I makes animating and design type and word prompts in Processing really easy and fun. The only problem is it’s not compatible with the new versions of Processing :(. I don’t think downgrading Processing is the best idea, but I’m looking into the possibility more in depth. The NextText website is pretty abandoned, and the last time an update was released for the library was back in 2010. I’ll have to cross-reference any other libraries I want to implement, including a few 3D graphics libraries I’m planning to use for the art section, and I’ll have to try and look for reports on what changed between different Processing updates. I’m doing my research, though, and I’ll figure it out soon enough!