Mobile Real-Time Audio Effects Unit

A mobile GUI, backend, and hardware application that processes and outputs real-time audio inputs.


The mobile UI of the delay pedal.
Figure 1: The mobile UI of the delay pedal.

How do traveling musicians find time to practice?

This project seeks to solve this problem by simulating multiple effect pedals on a common mobile device, allowing musicians to have a full pedalboard experience anywhere at anytime.

Overview

The effects available to the end user are wah-wah, distortion, chorus, delay, and reverb.

The DSP backend is coded in PureData, which wraps C in a visual programming style that allows for rapid development of DSP code. The end result can easily be used in conjunction with C/C++, allowing for a product widely compatible with a number of platforms (embedded and general purpose).

To interface with a mobile UI, the Mobile Music Platform (MobMuPlat) is used to link front-panel controls with the audio backend via OSC messaging.

For expressive wah-wah control, the phone tilt sensor is employed to allow users to place their phone somewhere underfoot and actuate it to achieve a continuous "pedal" experience.

The wah-wah frequency response in heel position.
Figure 2: The wah-wah frequency response in heel position.
The wah-wah frequency response in toe position.
Figure 3: The wah-wah frequency response in toe position.

A Single Effects Stage

A single stage (delay) used in the assembly of the entire audio effect chain.
Figure 4: A single stage (delay) used in the assembly of the entire audio effect chain.
The backend of the delay pedal.
Figure 5: The backend of the delay pedal, wrapped in the "delay_pedal" abstraction in Figure 4.

Each stage inputs and outputs stereo signal. Let's focus on one stage (the delay stage):

  • The external "receive" commands in Figure 4 get OSC messages from the frontend...
  • ...and pass them to the row of "inlets" at the top of Figure 5.
  • A delay line is opened using "delwrite~" and "delread~", saving the delay sample in memory for the desired delay length.
  • A lowpass filter "lop~" is applied to consecutive delay instances.
  • The volume of consecutive delay instances is decreased each time.
  • The pan abstraction "pan_abs" allows the user to pan each effect.
  • The final gain stage lets the user control the output of each effect.

Top-Level Design

A similar template is used for all other effects in the signal chain. Since they are abstractions, they can be rearranged to any order. On-the-fly rearrangement is a noted goal for future development.

Since PureData allows you to use multiple inputs, the PureData GUI sliders are used to debug the patch alongside the OSC messages. This makes iterative development very simple, as there are always controls available to the developer.

Please contact me if you would like to try this project for yourself, or have any questions!

Related Posts