More selected projects

The (Computational) Spinning Wheel

This interactive installation 'weaves' and controls patterns dependent on the position and speed of a spinning wheel. It is designed to be used as a performative VJ tool / instrument or as a playful 'hands-on' installation for exhibitions. I was inspired by a traditional spinning wheel and other spinning machines used to create things, such as a lathe and a potter's wheel. I was also inspired by bicycles and cycling, as this has been a big part of my life (I got my first bike about 50 years ago). 

produced by: Chris Newth

Concept / Visual

In this project, I wanted to experiment with iPhone accelerometer values transmitted via OSC to create 2D and 3D circular or cyclic patterns. I chose to focus on greyscale rather than colour, as I like this aesthetic and it also linked in with the simplicity of a wheel - One of our first inventions. I wanted a variety of patterns, so that the spinning wheel could be used a VJ tool, with the VJ changing patterns through a sideways force on the wheel. It was really important for me that the artist and the machine, were working as one, as would be the case for a spinner, a potter or a lathe turner. It was important that the shapes were of circular or cyclical form, so I chose speed dependent circles, fractal circles, spirals (which produced a mosiac pattern), 3D icospheres and a 3D mesh that displayed the wireframe (reminded me of the wheel spokes) and the faces. I envisaged these patterns being used in a VJ performance, to tracks such as Tour de France by Kraftwerk (as seen in the video and linking in with the theme of cycling). Manipulating alpha (transparency) values was important, to make the greyscale patterns more interesting and engaging. 

Technical / Self-evaluation

All images were created by openframeworks/C++. 
I created the images scene by scene, initially experimenting in Processing before porting the code into Open Frameworks. However, after a while, I gained the confidence and skills to work with Open Frameworks from the outset. At first I created a timer using millis() to trigger pattern changes, but I realised that was not ideal if 'spinning wheel' was to be used as a VJ tool. So I had to think of a way to change the patterns, but without using any other sensors / inputs / interactions (only one allowed for this project).  I did this by using sideways Z acceleration values rather than the X acceleration values that were being used to draw and control the patterns. I made a wooden frame for the wheel, with a stable base, so pushing it sideways worked well and also added performance value. I wanted a variety of 2D and 3D patterns, which would be dependent on speed, phase or movement of the wheel. This took lots of experimentation, working out what values were being sent from the iPhone (lots of printing to the console needed at this stage) and working out a way to measure speed from a constantly changing acceleration value (that was sinusoidal, due to 360 degree spinning). I managed to do this by storing the last 200 values in a deque and averaging them, taking the absolute value if necessary to get round the problem of polarity. This also acted as a kind of filter, to get smoother results and responses. To give the patterns a cool / edgy / old fashioned feel I opted for greyscale but with alpha values to add interest and detail. I did experiment with HSB colours, but didn't like the results as much. I also noticed that lots of VJ images are greyscale, so took inspiration and confidence from that. Due to coronavirus lockdown, our 3D class didn't run so I had to self study 3D in order to get the icoSphere and mesh patterns. I found this quite challenging as I was unfamiliar with 3D and how to use lighting and camera angles effectively. After lots of experimentation, I was happy with the results, especially with the 3D mesh (which changes from drawing wireframe to faces, when a lateral force is applied to the wheel).  Whilst the patterns look good on my Mac, I'm not sure how they'd look if they were projected. Some of the detail might be lost? I was unable to test this due to lack of equipment during coronavirus lockdown. I experimented with a number of addons, such as ofxMaxim and ofxGrafica, but the results didn't add value (in fact, things were often worse). So, although I was keen to showcase my skills in using addons, I felt that 'less is more' in this case and resisted the temptation to over-engineer my work. 


Future development

I would like to test the installation on a large screen (projected) to see how it looked and to iron out any issues. As mentioned above, I was unable to do this due to lack of resources during coronavirus lockdown. I would also like to add code so I could stretch the vertices of the 3D shapes using the wheel. At the moment the wheel controls position, rotation and lighting, but stretching would add more interest. I ran out of time to do this. There are a few occasional glitches that I'd like to iron out. For example, a rigorous spin of the wheel can trigger the next pattern when not intended (as the lateral acceleration values can reach their threshold). I could increase the threshold, but this could make pattern changes more difficult (more force needed). As long as the user is aware of this 'feature' it's fine and I quite like the fact you have to become a bit of an expert in order to use the machine effectively (like you do to become a skilled spinner, potter or turner). Although I like the greyscale effect, I'd like to experiment further with colour; maybe neon or retro colours often used in the VJ world. I'd also like to experiment with ofxMaxim, to produce electronic sounds as well as patterns. I did do this for pattern 1 (speed dependent circles), creating a pulsing sound when three circles appear (at high speed). It sounded ok, but a clicking noise could be heard as the sound was turned on and off. 



Theo Papatheodorou, Workshops In Creative Coding, Term 2
Fractals workshop, 3D workshop, OSC Messaging workshop and example code
Shiffman, D., 2012. The Nature Of The Code. [S.l.]: D. Shiffman, pp.112-115. (Oscillations)
Email correspondence with Balandino Di Donato dated 04/05/202 (advice about smoothing / filtering accelerometer values)

Also inspired by
VJ Images seen in the Netflix Series 'Unorthodox' (Episode 3, Night Club Scene). 
A previous Creative Coding Term 2 Project - Expansion, by Teodora Fartan

Kraftwerk, 1983. Tour De France. [vinyl] Kling Klang.