Maris Tammik

Audio Programmer

Work

YoAudio

C++ audio engine (late 2016 - current)

As a hobby project I am currently again working on an old idea of mine. I want to build an audio engine that can play and mix sound effects and music. It should be loaded by a game or another program as a shared library and handle asset loading, memory, sample conversions, playback mixing and output to the hardware. The code (and some early test builds) are available on the YoAudio GitHub page.

At the moment some rudementary behaviour is in place to load and play some WAV encoded audio data. The playback is buggy and the lack of propper sample rate conversion leads to major artifacting.

A Shell In The Pit Audio

I used to work as an audio programmer at A Shell In The Pit Audio in Vancouver, BC where I developed our audio tool chain.

Moona

Unity 3D audio middleware tool (early 2017 - 2019)

Moona was the spiritual successor of TAT (see above) and is an evolution of the same concepts. The difference being that I had learned a lot about software architecture since I started programming and I incorporated what I learned to make the tool as stable and easy to use as possible. As proprietary audio tool for A Shell In The Pit Audio it was driving the sound experiences for clients – developing games on mobile, consoles and Virtual Reality.

Moona – like TAT before it – wrapped the Unity 3D AudioSource class. Resources were pooled and a intricate voice management system ensured that the most the important sounds were heard at any given moment.

Moona Inspector

Auditioning a container blend behaviour without entering PlayMode more screen shots

For Audio Artists

The tools I developed were used in a wide variety of projects across many versions of Unity. I supplied in editor auditioning and all the creative freedom over audio behaviour to sound designers required to create compelling game audio.

For Programmers

Moonas API was designed to be simple – yet powerful. MObject were audio behaviours authored by a sound designer. It might have bene a single looping sound or a complex hierarchy of nested structures. All a programmer had to do was to invoke the Play() method and Moona would handle the rest. To control audio behaviour past the initial trigger Moona handed out MHandles which allowed re-positioning or re-parenting, stopping as well as instance based parameter control (along side the global parameter system).

TAT

Unity audio extension (2016)

My first audio related programming project was TAT (Tammik AAudio Toolkit). Based on the Unity 3D audio engine's "AudioSource" it extended the engine's audio functionality immensely with "AudioClip", volume & pitch randomization, sequencing, 3D spatialization for VR & AR, cross-fading, layering/blending of sounds through real time parameter control & last but not least voice-management.

CPP Studios

Before moving to Canada I was working at CPP Studios GmbH" in Frankfurt, Germany. There I started as an intern, and over time started taking over all areas of audio production for the media agency.