Geometry Synthesizer

Summer 2017 // Creative Technology Intern


Geometry Synthesizer provides an interactive environment to explore 3D motion graphics.  The project draws inspiration from modular synthesizers in the audio industry.  Modular synthesizers consist of many discrete modules which each modify one parameter of an audio signal. By patching different modules together using cables, musicians were able to construct and experiment with new sounds. Geometry Synthesizer seeks to replicate this process to create and modify 3D visuals instead of audio.

The system contains several discrete physical interfaces consisting of an Arduino Pro Mini and a variable number of inputs, each assigned a function. Users then connect a chain of modules together.  Input values for each module in the chain, as well as the order, are then passed to Unity which renders the graphics.  The design ensures the system is truly modular and reconfigurable.  This way, several complex behaviors emerge from the same set of modules allowing for a very large number of 'compositions'.  The number and length of chains is decided only by the number of modules that are available.  Each module's function can be easily changed by re-flashing the Arduino, and new types of modules can be added by writing Arduino/Unity code.

Module functions include:

- Create: Creates a shape as the base geometry  Currently the shapes are regular polyhedra.

- Rotate: Rotate geometry 0-360° around x-, y-, and/or z-axis

- Color: Set RGB values

- Scale: Expand or shrink geometry in x, y, and/or z direction

- Translate: Translate along x, y, and/or z

- Array: Creates copies of geometry in the x, y, and/or z direction

- Wave: Oscillates the previous module's value(s) sinusoidally

- Camera/Lights: Rotates camera and adds lighting

The design and build of this project was done in the summer of 2017 with Aaron Westre of Artificial Natures, funded by the Pomona College Internship Program (PCIP).  Aaron supervised the entire project and is responsible for the Unity code.  I handled the Arduino communication protocols and fabrication, with help from Aaron. 

Check out the code on github.

Thanks to Aaron for the photos!