From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Proposal to Rewrite Blender's Audio System

Introduction

Blender's audio system currently suffers from bad code and lack of maintainance. There are actually two parts, OpenAL and SDL, both of which fight each other. SDL appears to be not particularly well-suited for audio work beyond games anyway (it's hard to tell, as theres a lack of documentation for SDL's audio system), and OpenAL's primary purpose in life is games.

I propose that blender's audio system be rewritten to use PortAudio as a back-end. PortAudio is a highly portable, cross-platform audio API, with support for nearly every audio back-end imaginable, including several low-latency drivers.

The code will be fairly modular, with a simple doppler and 3D effect system that can be used both in the game engine and inside blender itself. The audio engine will also support a simple node-based effect system for building VST/Lapsda effect trees, and the sequencer will be modified to support using these node networks.

User Impact

Users would be beneficially impacted by the addition of a real audio system in blender. No more would OpenAL disable SDL (and thus all playback of audio outside of the game engine). Sequencer strips will be able to make use of special audio effect node graphs, where users will be able to use VST and Lapdsa (and some internal) effects in their projects.

The audio effect node networks will be edited in the node editor, like compositor and shader node networks. Individual sequence strips will be able to reference an effect network, and in addition each scene will have the option of using a global effect network for the entire sequence.

Goals

  • Write a simple, PortAudio-based audio system in C. This system would support read, write, and playback/mix down of audio channels/files.
  • Implement a simple Doppler/3D effect system, for use in the game engine and sequencer.
  • Implement a simple node-based effect system, supporting VST (windows) and Lapsda (linux) audio effects, along with some internal effects.
  • Revisit the UI of audio sequence strips.

Limitations

In no way will this be a full audio synthesizer system; for example, in a true synthesizer node system limited cycles are supported (for overdriven guitar effects, etc). Also, there will be no MIDI support (at least not during the SoC period).