Smart Voicing

I designed a new algorithm for making composing great music even easier for people on time constraints. Taken from our website:

“Here’s how it works in a nutshell:

1. Load an ensemble multi, such as 4 Trumpets or 5 Saxes.
2. In the left-hand, play or write a chord. (The engine can understand hundreds of left hand voicings and inversions!)
3. In the right-hand, play a melody. (Monophonic.)

Now, with each note of the melody, Smart Voicing will create a full voice-lead harmony based on the chord you play, the melody note, and the full context of the melody you’re playing. To do this, we created a database of thousands of possible ensemble voicings which are also displayed as sheet music notation in real-time! There are multiple voicing styles available too, from simple triads, unisons, and octaves to jazzier close, drop, and open voicings These vary based on ensemble type, and we covered a large range of idiomatic jazz configurations. Additionally in the future, we will be adding many more!

With Smart Voicing, you don’t need to know how to write intricate jazz parts, or laboriously copy MIDI data across many solo instrument tracks. Just play basic chords and a melody! Keyswitches, velocity and other MIDI CCs also work perfectly, and each solo instrument can use its full set of playing techniques including legato and glissando transitions.

As an added bonus, using Kontakt’s “Send MIDI to Outside World” option, you can record the MIDI output to further edit your voice leading, and even send Smart Voicing harmonies to other plugins!”


TACT – Total Articulation Control Technology

I was responsible for designing and engineering from the ground up a completely new system of letting a composer map articulations in virtual instruments intuitively, in such a way that consumption of our development resources on a sample library project would fall dramatically. The result was an incredibly modular and scalable system that we use from now on in all of our sampled instruments.

For more information, view our blog post.

chord.js – JavaScript Chroma calculator

chord.js is a JavaScript app I developed while working as a research assistant for Drexel University’s MET-Lab. Essentially, it will take an input signal (either from a microphone or a given file URL), and invoke the WebAudio API in the HTML5 standard to perform spectral analysis frame by frame and display the current “concentration” of each musical note in the signal at an instant in time. The goal is, first, to attempt to analyze a signal sufficiently to the point where a user can derive a musical chord, and second, to demonstrate that web browsers have become sufficiently capable of performing non-trivial audio-related DSP tasks in real-time through simple API’s (rather than complicated 3rd party solutions). This is to encourage web developers who lack specialization in DSP to continue building creative audio/video web apps.

This research project had better than projected results, but the algorithm processing still does not work in a user-friendly satisfactory manner, and so some optimizations need to be made in order to increase the precision of results and the computation time of the frames.

The source code can be forked here.



Sonic – C++ library, Binaural Audio in Games

Sonic is a C++ library project, lead by Computer Science student Brandon Harrison, I assisted development of at Philadelphia Game Lab. It exposes a simple object-oriented interface to game developers wanting to implement binaural audio in their game projects. It works by abstracting sound files into a 3D coordinate grid as “Audio Objects”. These audio objects will “emit” their sound clips from their respective locations and the total sound summation that the player hears will be calculated and processed based on where the player object is in relation to them. It utilizes some standard DSP techniques using an IR-Filter for the HRTF (head-related transfer function) processing.

I worked jointly with some graduate students Da Cao and Jing Zhou (Electrical Engineering at University of Pennsylvania) in order to develop the 3D mixer, which is responsible for the actual signal processing and mixing of audio data. We completed it in about three months of part-time work, with great success. It has since been optimized to allow for up to eight Audio Objects on the latest iOS devices. Sonic is available only on iOS with a CoreAudio layer. Android, Windows, and OSX ports may be available in the future.

Currently Sonic can be forked here.



Prometheus: The Quest for Color – Java game

This is a platformer I developed with a couple friends in my AP Computer Science class in 2012. It’s about a character named Prometheus who accidentally drains all color from the world after touching a dark crystal in a cave. His quest is to retrieve the color crystals from the different areas of the world to restore color and ultimately the balance of the cosmos. My work was most of the game engine, testing, and the soundtrack. Level design and implementation was by Wilson Rong and Jake Peebles and graphic design was by Riley Branstrom*.

You can download the game here. Extract the folder to somewhere, double click the Prometheus.jar file inside and watch it go!

*RIP, Riley [May, 2013] Thank you for your help and dedication to this project. I hope that every time I play this game I am reminded about how crucial you were and how well you came through when we needed you to. I am sure our teacher will, too. I hope that you find or found what you were searching for, just like Prometheus.