17th October 2012
ChromaComposer project
The ChromaComposer project has now been written and submitted as a thesis as part of the requirement for an MSc in Computer Science at the University of Bristol.
Once the project has been marked then all the code for the ChromaComposer and its supporting documentation can be released (apologies for the delay but it is so the markers don't think I copied the project or code). This is expected to be at the end of November 2012.
A video of the ChromaComposer and the music it can make will be posted in the near future.
The ChromaComposer operating instructions will also be released shortly, so anyone who is itching to try out a ChromaComposer can prepare their computer ahead of the code release. The ChromaComposer uses just the Processing environment (and not Max/MSP as stated in the post on 26th June 2012) for music generation. The music is produced using a General MIDI synthesiser and so users are encouraged to use the best synthesiser they can, such as Ableton Live (if this doesn't make sense to you at the moment, don't worry it will all be explained in the operating instructions).
The ChromaComposer has been tested on Windows (Windows 7 and XP) and Linux (Ubuntu 12.04). I haven't tested the ChromaComposer on Mac OS as of yet, but since it runs on Processing this shouldn't be a problem.
If you have any further questions please do not hesitate to get in touch by emailing: chromacomposer@gmail.com
28th August 2012
Prototype ChromaComposer photos
Some photos of the ChromaComposer prototype are shown below:
Currently the ChromaComposer splits the world into 11 colours. These colours are red, orange, yellow, yellow-green, green, blue-green, blue, violet, purple, white and black. A colour mat is used for easy interaction, but the ChromaComposer can be used on objects in your surroundings, but will put the object into one of the colour categories listed above.
Three LED's are used on the ChromaComposer to assist with colour detection in all lighting conditions.
6th July 2012
Help shape the ChromaComposer
A core aim of the ChromaComposer project is to widen participation in algorithmic music systems. To do this the music generated by the ChromaComposer must appeal to a wide audience. I have designed a questionnaire, available here to aid in the development of the ChromaComposer.
If you would like to help shape the ChromaComposer please download a copy of the questionnaire:
complete the questionnaire and send it back to chromacomposer@gmail.com
Thank you very much for all your help.
26th June 2012
Project test tone
Currently the ChromaComposer project is in its development phase. Over the past week Processing has been used to provide the image processing capabilities for gathering the average Red, Green and Blue (or RGB) content from a web cam image. The web camera I am using for the project is a Texet WCM-183, which is a low cost web cam. The average RGB colour values (ranging from 0 to 255) are then passed to Max/MSP as MIDI information, using the javax.sound.midi library available in Java and Processing. As I am using Windows 7 for my operating system I had to use MIDI Yoke to allow MIDI channels to be available for both input and output (Windows restricts the creation of MIDI channels; Apple Mac OS users are not subject to the same constraint and if using Max/MSP on Mac OS a “to Max/MSP 1” virtual port should be visible).
Once the average RGB values are in Max/MSP the average Red value (0 to 255) is multiplied by 8 and added to a static value of 2000Hz. The static 2000Hz plus the 8*average Red value provides the frequency of the test tone. The average Green value is divided by 50 to provide a scale factor for the overall amplitude of the test tone. Currently the average Blue value for the image seen by the web cam is unused. So if the image contains a lot of green then the test tone will be loud (amplitude increase). If the image contains a lot of red the frequency of the test tone will increase (frequency / pitch increase). If the image contains a lot of blue, the average Blue value is unused, so the test tone will be approximately 2000Hz (static or base value) and the amplitude will be the base value of 1. A combination of the three RGB values produces various frequencies and amplitudes, as can be heard in the video above.
Initially there were some problems if the framerate or number of times per second the web cam captures some data was too high. A framerate of 30Hz (30 times a second) was used initially. This produced some problems with the Receiver having data backed up (see javax.sound.midi library for more information on Receivers). The framerate for the test tone is set to 2Hz, which seems more than adequate to provide a real time sense of colour capture.