CollideFx

Available on Github | Documentation


Introduction

CollideFx is a real-time audio effects processor that integrates the physics of real objects into the parameter space of the signal chain. Much like in a traditional signal chain, a user can choose a series of effects and offer realtime control to their various parameters. In this work, we introduce a means of creating tree-like signal graphs that dynamically change their routing in response to position changes of the unit generators. The unit generators are easily controllable using the click and drag interface and respond using familiar physics, including conservation of linear and angular momentum and friction. With little difficulty, users can design interesting effects, or alternatively, can fling a unit generator into a cluster of several others to obtain more surprising results, letting the physics engine do the decision making.


Motivation

This project was created to create an effects interface that is simple to operate and intuitive. It is functional both as a real-time physics based processor and also as an "approximate" effects unit. This means that the user can specify the different unit generators involved in the current effect and place those types of discs on the grid. By grabbing one of these discs, and throwing it across the grid--perhaps into a cluster of other unit generators--we get an effect that is not necessarily planned in detail, but does have elements that the user has chosen.


Operation

The interface is simply a menu and a grid that represents the world. The user can create new discs by dragging them from the menu and move them throughout the world. The user can right click on a disc and change more of its parameters or view its current spectrum. The signal chain is visualized by orbs that flow from one disc to the next in the chain, following the audio path. All of these operations are outlined in the opening splash screen. The interface features a green, glowing grid and a sleek, modern looking menu commonly associated with advanced technology or a digital world. The graphics of the world aim to give the impression that energy is being transferred from place to place, either between the border and the glowing grid, or from disc to disc.


System Design

The system architecture is shown in the figure below. The graphical interface was designed to be as simple as possible, featuring only mouse clicking as a means of input. The user can create any effect and control its parameters to their liking often with only a click or two. There is minimal amounts of text, excluding the splash screen at the opening. When the landscape of the world is changed, the user recieves immediate feedback as the sound transforms in respone to input. This system uses the OpenGL/GLUT libraries, RtAudio/RtMidi, and the FFT algorithm provided here. This also uses Samuel R. Buss's code to read a bitmap into OpenGl. Made my life a lot easier.


Compilation

Source code is available here. Documentation is much more in depth than at this page, including the math behind the physics engine. (Written in C++, Unix systems only).

Source Code v1.3 (1/13/14) 2.0MB
Documentation 526kB

Just type these commands into the terminal:
     make
     ./CollideFx
Please send any error reports, including compilation problems for other platforms, to me.


Thank You!

Thanks to everyone who user tested this app and thanks to Ge for acknowledging that fun is important.