Drawing a Breath
The programme brings together the idea of the growth of a flower and of a drawing and making art. A wire flower is blown causing it to spin around and trigger a piezo sensor with each spin. The data from this feeds first into a water-like ripple on the surface of a drawing, next into the growth of visually contrasting cells and bacterial forms textured with an image of a painting, and finally into the growth and development of a dandelion-type L-system flower.
By: Laura Traver
The programme is partly inspired by flowers and nature, and partly by drawings of my own. A flower sensor is blown around and the data from this feeds into the graphics of three scenes. Ink uses the ofxFX addon to create ripples over the surface of a drawing, and alter the appearance of the drawing whilst also bringing the art together with the idea of growth and water. The speed of this and how far the ripples reach and affect the surface is influenced by the sensor. Following this, Growing Art and Organised Art were created using a mesh on which spheres with image textures of a painting of mine are drawn and, again, bring together growth and organic matter with art. Readings from the sensor impact how far each of the forms grow before they disappear. The two forms are visually contrasting and I think of one as bacterial and one as cell-like. The L-system flower ends the programme by growing from the center of a white screen and reflects an old black line drawing of mine which is the visual and conceptual inspiration behind the programme. The readings from the sensor alter the growth of the flower.
Concept and background research
The concept behind the piece began with the idea of breathing which is inspired by line drawings of mine made using very fine technical pens. On one hand, the drawings are precise and controlled and could appear to be mechanical, however, on the other hand they are not at all as the lines are organic and wobble and change in response to me breathing and moving. One of these drawings, Parallel Thoughts, forms the background to the Ink sketch for this reason. For a period of time when I was returning to the studio after some time away, I would often start my day in the studio making this drawing and thinking about my work and so it also fit in with the concept of developing art and being at the beginning. The ripple effect of ofxFX also contributes the idea of water and growth to Ink. Originally, the water ripples were intended to actually be ink or liquid which swirled over the screen, however, I preferred the visual effect of using my art and I was also drawn to the possibilty of abstracting originally physical pieces of art further using computing as the ripples break the surface of the drawing up and alter it.
An imagined flower drawing of mine, seen below, from several years ago inspired the graphics and direction of the programme and the idea of using a flower sensor. The L-system flower that grows at the end is based on this flower drawing. The bacterial and cell spherical meshes were developed to combine the idea of the growth of a flower or organic matter with my own art. I had been playing with texturising spheres with my art, such as in this example, and making some kind of swarm-type behaviour from this, however, I liked the effect that a mesh provided, such as in this example and this one. The bacterial and cell forms also serve as a visual contrast, as the bacterial form vibrates and moves in a more organic fashion using noise, and the cellular form is organised and grows from the center of the screen to create a pattern out of my art. This was partly also the result of me wanting to learn about how a mesh could work.
For the sensor I used a flat piezo sensor to detect vibrations as I wanted something simple, thin and light which could then be knocked by the spinning flower. The flower itself is made from aluminium wire for lightness and tissue paper. It is based on a pinwheel design, and the end of the aluminium wire sticks into a balsa wood stem to which the piezo is also attached. The flower knocks the piezo sensor once each spin and this is translated into analog data as the vibration generates an electric charge and readings between 0-1023. The values are sent to the serial port to be picked up by openFrameworks. Having never worked between Arduino and openFrameworks, it was challenging to set this communication up initially, however, the main issue was the high-speed at which the piezo detected vibrations and the rapid jumps in readings from the sensor which created a jumping movement in the openFrameworks sketch. I considered slowing down the speed at which readings were sent to the serial port, however, I still wanted a good level of reactiveness between the sensor and the sketch, but without the jumps in data, so an array was used to keep a running average of 10 readings at any one time. Once in openFrameworks, the serial data was smoothed further by taking fractions of the readings.
For Ink I originally wanted to have ink swirl across the screen, I also wanted to explore addons and shaders. The ofxFX addon provided exactly the fluid effect I was looking for by taking the difference between pixels around a center point and offsetting this in ofxRipples and displacing the image in ofxBounce. For the cell and bacterial art forms, I used a mesh because it provided the effect I wanted and was also new for me to try. I experimented with a few different ways to create forms and the behaviour that can be achieved such as this which draws a vector of spheres at random points on a mesh which then move in response to the location of my mouse. I also explored what a mesh could do such in this sketch here in which I was exploring the behaviour of the spheres using noise and random. The Organised Art cell form emerged in opposition to the experiments feeding noise into the position for the bacterial form and developed basically through my exploration of what a mesh can do and how far it can go, such as in the video below.
The L-system flower developed as I wanted to draw a flower at the end and was looking into mathematical systems to do this and the L-system provided a really interesting, logical way to draw. I also looked at animating fractals, such as in this sketch, but preferred the really organic look of the L-system. The challenge was to understand the relationship between the rules and how they could be changed. The final flower was the result of a process of experimentation, such as in this example in which I used bezier lines and random, or this example which has slightly altered variables and alpha. I used a bezier curve instead of a line to create a more fluid movement, I also used sine and data from the piezo sensor to develop the form and soften the movement and changes of the flower.
I want to continue to combine physical pieces of my fine art with computing further and see what develops from that as I am really intrigued by the possible abstractions or animations that could be made from inanimate art using a computer after exploring it for this project. A liquid that somehow holds images of art and rolls across the screen like paint could be quite striking and is a conceptual inversion of making art by returning it to paint.
Using more advanced graphics is a direction to take this programme too by using shaders and meshes and other techniques. The idea of blowing ink across the screen and having a simple, black flower develop as ink begins to stick to bits of the screen is something I wanted to do, for example. A responsive swarm or particle system into which holes can be blown or types of liquid or gelatinous movement created is another scene that would suit the programme. Making the cell and bacterial art more complicated by altering their behaviour more, or having the bacteria grow over the screen could also be a good addition.
I would also like to make a field of L-system flowers. It would be interesting to have flowers pick up different data from the sensor and react slightly differently in their development or movement. Generally, I really like L-systems and the variety of things that can be made using them. I assume that 3D L-systems exist, exploring that could be a route of future development. Having a flower-like form or organic L-system form grow really slowly (over days) based on data from a sensor is something that could also be done.
Someone in the proposal feedback suggested having a field of physical sensors, which again would be a nice way to develop the complexity of the project. Generally, using the sensor data in more diverse ways so that more random or dynamic behaviour and graphics is achieved would be a good direction. It would also be interesting to develop the use of the sensor in a different way, rather than having the sensor working with the programme and the user in compliance, having resistance appear in the sensor itself or developing the idea of a lack of cooperation in some way between the sensor and the user would be a different direction to develop the sensor itself or the idea of a sensor.
I enjoyed this project quite a lot probably because I am more familiar with openFrameworks now (and even simple things such as where to find information or sources online) and experimented more. Visually, I like my project overall. I wanted to bring my art into a programme and I wanted to explore what I could do more with the graphics, and so I achieved what I set out to do. Visually, I could develop this a lot more as my experience grows. The L-system flower at the end I really like because it is delicate and simple, but it could be really interesting to grow more or have a field develop or alter the behaviour and movement of the flower by having wind. Ink worked effectively, though I do not quite like the movement of the ripple over the screen. The sine wave is nice on the one hand, but it is a bit too regular a curve and needs to be interfered with using random or some kind of external gravity or wind force.
The piezo sensor was a good sensor to be used for this project as it was simple and small and gave a good stream of data. I used a serial connection rather than wireless because I wanted to understand the basics of communicating between an Arduino and oF, though a wireless connection would be less physically restrictive. The spinning flower itself worked well with the piezo. In terms of the use of the stream of data from the piezo, I would have liked to use the information in more diverse ways such as having a counter of the total data and using this to trigger events, or having certain levels of data trigger certain graphic events. It would also have been good to control the sketch based on events within the sketch rather than time.
I wanted to learn about meshes for this project, which I achieved and I was really impressed by how powerful the graphics produced can be and the weird and beautiful things that could be done with it. Visually I like the effect of the bacterial and cell forms though I would have liked to do more with them. I would have liked to have the bacterial form grow over the screen when the spheres are only a few pixels wide as this creates a glittering effect, unfortunately, I ran out of time to quite work out how to do that effectively. I am sure there are many more things I could do with a mesh.
1) Joshua Noble, Ch 8, http://phylab.fudan.edu.cn/lib/exe/fetch.php?media=yuandi:arduino:programming_interactivity.pdf
2) Understanding bytes - https://www.thethingsnetwork.org/docs/devices/bytes.html
3) Reducing jumps in sensor data - Damien Clarke, http://damienclarke.me/code/posts/writing-a-better-noise-reducing-analogread
4) Smoothing sensor data - Chris Ruppel, https://chrisruppel.com/blog/arduino-analog-signal-input-smoothing//
5) Smoothing sensor data - http://forum.arduino.cc/index.php?topic=13359.0
6) Smoothing sensor readings in oF - https://forum.openframeworks.cc/t/cleaning-up-arduino-getanalog-input-data/3055/2
1) Water Ripples, ofxFX example
2) Abe Pazos, https://www.funprogramming.org/46-Create-beautiful-curves-with-lots-of-sin-calls.html
3) Term 1 project, Programming for Artists, https://youtu.be/NlzcTQRA0XY
1) L-systems class work example
2) Daan van Hasselt, https://github.com/daanvanhasselt/snippets/tree/master/LSystem