Following my studies in the Coursera Course: Creative Programming for Digital Media and Mobile Apps, I have developed my final project – Word Synth.
WordSynth generates tones and beats, triggered by characters and whole words in a piece of text.
There are two versions: the original has major performance problems rendering the spinning text, and this badly affects the audio, so there is an alternative version that replaces falling text with boxes so you can get the full audio experience. Both are show here.
While they are running, click anywhere in the sketch to change the text.
WordSynth – Alternative version for better performance
WordSynth – Original version, with falling text, but with performance issues affecting audio
A full description of the project is below.
Code can be downloaded here: wordSynthFinal4.pde
This project, WordSynth combines some ideas of my own, with some of the course concepts of audioplayers, waveform synth and visualisation.
The idea is that a synth for tones, and drum samples for beats are triggered by a some words/text. The individual characters trigger drum sounds (depending on whether the character is upper, lower, vowel, digit or other) and the pitch of the synth tone is set by characteristics of the word (such as length and number of vowels).
The characters have to pass a hotbar to trigger a drum sound. The whole word must scroll past a drop-point, and the falling word will trigger a synth tone. There are visual effects to complement the audio.
It is therefore a predetermined music player in that you use patterns of words/letters to get prescribed sequence of notes/beats.
But the aim is for it to be non-deterministic and that any sequence of text will trigger it. There is another element: as a falling word drops off the screen it is added to the scrolling text again. Because different length words will drop after different lengths of time, the sequence and spacing of words shifts. Words layer upon words giving a richer “music” effect.
The text is pre-defined in the code, as I did not have the time to think how to get a user-defined string in an elegant way.
There are text variations in the code. A mouse click in the running sketch will change to the next in the sequence so you can see how different sequences of words and characters affect the sounds.
A note about performance.
The most visually interesting element is the falling, spinning words. However the rendering of text in large sizes, and at angles seems to kill performance and the sound samples really suffer.
Therefore there is a second variation in the links so you can see the performance challenged original, and the alternative simply using falling squares.
DJW. July 2013