-
-
Notifications
You must be signed in to change notification settings - Fork 60
Implementing a Custom Decoder
The E4L Master Bus supports loading any max patcher with 16 inputs (HOA Ambisonics) and 16-32 outputs (speaker channel feeds) as a custom decoder. If you have a unique multi-channel speaker setup, you can write your own Max patch and load it as a decoder.
Reference decoders are located at:
https://github.com/EnvelopSound/EnvelopForLive/tree/master/patchers/decoder
For an extremely basic reference on the structure of a decoder patch, consult the e4l.decoder.example
patch file.
The 16 in~ objects receive Ambisonics-domain spatial audio in HOA AmbiX format (ACN channel ordering with SN3D weighting). The 16-32 out~ objects can output whatever type of decoded or transformed audio you like. Typically these are channel feeds for individual loudspeakers.
For an example of a very straightforward single-plane decoder, look at the e4l.decoder.octo
patch, which decodes 8 channels of audio using the ambidecode~ object and the e4l.ambidecode.angles abstraction to specify the radial positions.
Note that decoder patches should not use the adc~ or dac~ objects. The decoder runs inside the E4L Master Bus device and uses Ableton's Max for Live plugin routing for input and output. The adc~ and dac~ objects will not operate as expected in this environment.
To load your custom decoder in the E4L Master Bus device, choose the Custom... option in the Decoder dropdown. A file chooser dialog box will open, allowing you to select your own custom .maxpat
file with a decoder implementation.
3rd-party VST decoders may be embedded within a custom decoder. For a high-quality open-source option, see: Using the IEM AllRADecoder
If you are using a system with a high number of output channels, it may be preferable to decode the Ambisonics signal on a separate process or machine. For this situation, use the AmbiX decoder (e4l.decoder.ambisonics) to route the AmbiX-format Ambisonics audio out of Ableton Live 10 to a separate machine (or another local process, using a utility like Loopback or JACK).
The separate process may be written in Max, or any other programming language capable of operating on audio streams with low latency.
Custom decoder development is available as a service, for inquiries contact: [email protected]
© 2023 Envelop, a 501(c)(3)
Envelop is a nonprofit organization that amplifies the unifying power of music through immersive listening spaces, events, and open-source spatial audio software.