LabSound Versions Save

:microscope: :speaker: graph-based audio engine

v1.2.0

1 year ago

v1.2.0

  • rename DelayMode to DelayModel to match spec
  • refactor parameter and setting initializaiton for audio nodes to refer to AudioParamDescriptors and AudioSettingDescriptors. This makes parameters and settings fully dynamic, and consistently iterable from external programs.
  • HRTF panner now works for sample rates other than 44.1 khz.
  • panners no longer buzz or pop at the end of a sample file
  • the HRTF database is manually loaded now, so that the application has full control of when and how to load it. See ex_hrtf_spatialization for details.
  • channel merger and splitter now function per the WebAudio spec
  • WaveTable has been renamed to PeriodicWave to match the rename in the WebAudio spec.

breaking changes

  • AudioNode now takes an AudioNodeDescriptor. Any custom nodes will need a tweak to match the new API. The interface for existing nodes hasn't changed. For reference when updating your own nodes, have a look at any of the built in nodes to see what the descriptor set up looks like.
  • PannerNode no longer is responsible for managing the HRTF database
  • HRTF database is owned by the AudioContext, and must be explicitly loaded.
  • There is no default HRTF database
  • Audio parameters constructor changed due to AudioParamDescriptor change.

v1.1.0

1 year ago
  • autoconfigure channel counts
  • rename BPMDelay.h to BPMDelayNode.h
  • rewrite WaveShaper for efficiency
  • rewrite SampledAudioNode for efficiency and sample accurate timing
  • rewrite resampler for SampledAudioNode for quality and speed
  • use concurrent queues to eliminate mutexes in audio callback
  • minimize use of maintenance thread
  • bulletproof asynchronous connects and disconnects of node wiring
  • improved offline context interface
  • recorder node can run as a pull node indepdently of device context
  • improved miniaudio backend
  • numerous Android fixes (by xioxin)

v1.0.1

3 years ago

Introduces working iOS, Android, and Raspberry Pi targets. Raspberry Pi requires libpulse-dev to be installed to compile.

This is otherwise a maintenance release, fixing small regressions that slipped through in Release 1.0

v1.0.0

3 years ago

This 1.0 release finalizes the API with functionality that allows full introspection of all nodes and attributes. To go with this 1.0, LabSoundGraphToy is also released at https://github.com/LabSound/LabSoundGraphToy to enable exploration of the library, its nodes, and its functionality.

v0.14.0

4 years ago
  • Removed many custom backends in favor of RtAudio and miniaudio
  • Consolidated demos into a single header
  • clang format applied to sources
  • cloning method added to AudioBus
  • Added Input and Output configuration structs to allow selection of devices
  • names added for params and settings for use in tools
  • Bus added as available Setting type
  • ADSRNode timing fixed
  • AnalyserNode can render output to any desired output buffer size by binning and interpolation
  • AudioDevice nodes added in major backend refactoring
  • ConvolverNode - new implementation
  • DiodeNode is now derived from AudioNode
  • OscillatorNode - new implementation
  • SuperSaw is now scheduled

v0.13.0

4 years ago

AudioParams already exist for rate varying values on Audio Nodes. AudioParams are registered on nodes by name, and can be looked up by name. Non-rate varying parameters such as filter modes, buffer sizes, and so on could not be similarly looked up by name. AudioSettings are introduced in this release for non-rate varying parameters, such as filter modes, buffer sizes and so on. Settings for each AudioNode are documented in its corresponding header file. A vector of param or setting names can be fetched from an AudioNode and used to populate a user interface. Each fetched AudioSetting can be queried as to whether its last set type was a Uint32 or a Float, in order that user interfaces can self configure appropriately.

Added some nullchecks to AudioChannel memory management as pointed out by harmonicvision

v0.12.0

6 years ago

This release primarily cleans up how AudioNodes are connected to one another. Formerly, the connect(...) method was called directly on an AudioNode, taking the graph lock and effecting changes to the AudioContext itself. This is no longer the case. AudioContext is now the arbiter of all graph changes.

v0.11.0

6 years ago

Numerous bug and maintenance fixes. A cmake build system.

v0.10.0

8 years ago

Several breaking API changes related to AudioContext creation and PannerNode initialization.

v0.9.0

8 years ago