Skip to main content

Release Notes - Treble SDK 2.0

Release Date: 2025-03-04

We’re excited to announce the public release of the Treble SDK! After an extensive beta period with key partners, the TSDK is now available to a wider audience. This release includes major updates, improved performance, and expanded functionality, making it the most powerful version yet.

For existing users: This release includes breaking changes, so please review the upgrade notes carefully.

Our documentation site has seen major updates, we encourage you to visit it to get familiar with the different functionalities of the SDK

We are here to help you, if you need support do not hesitate to contact us


Breaking Changes

  • The minimum supported version of Python is now 3.10. This may result in other library incompatibilities, so we recommend reinstalling the treble SDK into a clean virtual environment.
  • The results class has been updated to work with H5 files: previous results must be re-downloaded. See documentation
  • • The Results class now handles only one result type at a time. Separate result types will need to be downloaded individually. By default the latest simulation is downloaded. See documentation
  • GeometryGenerator has been deprecated in favor of GeometryDefinitionGenerator. See documentation
  • gpu_allocation_strategy has been removed from the API.
  • Device is no longer a receiver type: If you want to render a device, you should specify a spatial receiver. Device rendering is now exclusively done as a post-processing step to get the device specific IRs. See documentation
  • SourceType.boundary has been removed. Instead use SourceType.boundary_velocity
  • Angle removed from ReceiverProperties
  • Negative Time: The output from our solvers now does not start at 0 s but comes zero padded. This helps mitigate potential unphysical effects of acausal filtering in source corrections. When writing to wav files from the results class, these negative times are trimmed off the signal.
  • New classes with snake_case convention: see the section "Name changes in the SDK” for examples
  • New helper classes for Point3d and Rotation
  • Use of helper functions for creating sources and receivers are now recommended (for example treble.Source.make_omi_source())

Free-field and Boundary Velocity Sources

You can now set up and run free-field source simulations via treble_tsdk.free_field. A free-field simulation is a pre-requisite for injecting a boundary velocity source into a room model. You can read more about the free-field simulation here.

  • Create a Boundary Velocity Submodel source from free-field simulation results. This process is explained in depth in the documentation
  • Import BV Submodel sources into simulations (geometry injection).
  • Directivities from free-field simulations can now be used for GA and hybrid simulations.
  • LocalMeshSizing can now be set on loudspeakers in free-field simulations and on devices/submodels in standard simulations.

You can still assign a boundary velocity to an existing layer in your room model. The process around that is documented in the boundary velocity layers page


Room & Space Generation

We have deprecated GeometryGenerator in favor of GeometryDefinitionGenerator and added GeometryComponentGenerator

You can find updated room generation documentation here

  • New room generation functions for U-shaped, T-shaped, and angled shoebox rooms.
  • Mass generation functionality for supported room types.
  • Manually create custom scenes by injecting geometry components into any type of model.
  • Ability to populate generated rooms with random geometry components.

Geometry Processing & Operations

  • Faster dataset fetching for geometry_library.
  • PositionSuggestions in geometry_library now return Point3d (location) and Rotation (orientation).
  • PointsGenerator now supports positions as List[Point3d] or List[List[float]].
  • BoundingBox now uses Point3d for min/max positions.
  • New function, point_1.euclidian_distance(point_2), to calculate Euclidean distance between Point3d/Point2d objects.

Visualization & Plotting Enhancements

New Standard Plotting Environment: Dash

Dash plots are now the default plotting environment, featuring:

  • Layer & material identification.
  • Source & receiver directionality visualization.
  • Boundary Velocity Submodel sources plotting.

To switch back to pyvista set environment variable TSDK_PYVISTA_PLOTTING=1

New Features in Results Plotting

  • plot_acoustic_parameters() to get acoustic parameter overview of results
  • EDC curves in results plot widget
  • An optional comparison field for IR plots to compare with other IR
  • Waterfalls have been temporarily removed.
  • Subset plotting of Spatial IRs (up to 64 channels at a time). It’s not possible anymore to plot more channels at a time as it got slow and crowded.
  • New data display tools:
    • dd.display() can be used instead of dd.as_tree / dd.as_table.
    • Task lists associated with simulations can now be printed in table form.

API Overhauls & Structural Changes

  • The SDK now requires Python 3.10 as the minimum supported version.
  • Updated numpy dependency to numpy 2.X.
  • New get_by_name methods added for:
    • project.get_by_name, model.get_by_name,
    • material_library.get_by_name,
    • device_library.get_by_name,
    • source_directivity_library.get_by_name.

Source & Receiver Management

  • New directivity creation:
    • tsdk.source_directivity_library.create_source_directivity() now supports user input data(DirectivityInputData).
  • Device receiver is no longer supported
    • Going forward a spatial receiver is created in the simulation. The device render is then exclusively a post processing step. An example of this is shown in our documentation
  • Auto-scaling
    • Imported devices now automatically scale to 0 dB at 100 Hz by default. Users can change this if they want to.
  • Spatial receiver update
    • Now supports 1st and 32nd order Ambisonics.
  • New Factory Methods for creating sources/receivers:
  • Additional Source & Receiver Features:
    • Exposed DRTF import from measurements
    • Disable source correction with SourceProperties(disable_source_correction=True).

Uniqueness Constraints & Object Naming

Certain object names must now be unique within your organization/project:

  • Material names
  • SourceDirectivity names
  • BoundaryVelocitySubmodel names
  • Project names
  • Model names
  • Simulation names

Renaming support

You can now rename the following objects:

  • Materials: tsdk.material_library.rename
  • Source Directivity: tsdk.source_directivity_library.rename_source_directivity
  • Boundary Velocity Submodel: tsdk.boundary_velocity_submodel_library.rename_submodel
  • Projects: tsdk.rename_project
  • Models: model_obj.rename
  • Simulations: my_sim.rename

Results Analysis

Impulse Responses

  • Impulse responses do not start from time zero anymore. The IR classes have all the information on the time axis and the zero padding of the impulse response
  • Impulse response objects have methods to trim the data to start from zero

Results Class Overhaul

  • The results module now uses H5 files instead of audio files.
  • Any results generated before this release must be re-downloaded.

Enhanced Results Class Functionality

  • New filtering & summation functions for IRs and audio input signal.
  • New FilterDefinition class for defining filters:
    • Predefined: GainFilter, ButterworthFilter, IIRFilter, FIRFilter, OctaveBandFilter
  • Added new IR class features:
    • Resampling,
    • Convolution with audio,
    • Audio playback,
    • Frequency Response computation,
    • Summing IR objects,
    • Multiplying IR objects with each other (convolution)_or with a number (gain),
  • New Audio Processing Classes:
    • AudioSignal (with load_from_file method).
    • ConvolvedAudioSignal.

Name Changes in the SDK

We have made changes to make the SDK interface more uniform/pythonic. Any user facing classes that had camelCase properties have now been converted to snake_case.


Feedback & Support

We’d love to hear your thoughts! If you encounter any issues or have suggestions, please reach out:

Thank you for using the Treble SDK!