The visual presentation of our William Morris project hinges on our ability to translate the sounds in the environment into moving visual patterns. To this end I have put together a simple program in Max SP.

 

The Visualiser 1

The way this patcher works is by taking a video – I decided to set it to 300 frames at 60 FPS – of a pattern going from nothing to full complexity in a linear progression and maps this progression to different sound levels. This creates an effect of the pattern reacting to the sound environment while fading to nothing in complete silence.

This is done by feeding the sound from microphone input (1) into the patcher and outputting a value in decibels (3). The virtual scale needle (2) is a helpful visual aid  used for debugging. The value is then mapped to the individual frames of the video (4) via a Zmap. The frame $1 message (5) then forces the video to jump to the output frame.

This is the more direct method. Alternatively, Instead of mapping directly to frame, the Zmap maps the sound values to a number from -5 to 5 (6). these numbers are then added to an integer which is capped at 1-300, corresponding to the frames of the video. This method creates a more fluid, gradual movement of the patter although this does come at the cost of reduced responsiveness.

The video player is the simplest possible configuration available in Max. The metro 16 function (7) outputs one frame of the video every 16 miliseconds, which locks the video to 60 FPS. The read message allows me to change the video file without needing to rewrite the program.

Additional controls (8) include a framerate indicator and a popup window which can be entered into full screen mode by pressing ESC.

The visualiser also supports audio playback, mixing pre-recorded audio files with real-time microphone input (9).