Skip to content

ChristianAhrens/SpaConBridge

Showreel.001.png

Important

This project is no longer maintained or developed any further. It has been adapted and is further continued as d&b En-Bridge.

SpaConBridge (Spatial Control Bridge) was a PRIVATELY created and driven project.

Its sourcecode and prebuilt binaries are made publicly available to enable interested users to experiment, extend and create own adaptations.

There is no guarantee for compatibility inbetween versions or for the implemented functionality to be reliable for professional use at all. Use what is provided here at your own risk!

See LATEST RELEASE for available binary packages or join iOS TestFlight Beta:

TestFlight QR Code

Appveyor CI build Status
Windows Visual Studio Build status
macOS Xcode Build status
Linux makefile Build status

Supported plattforms

Platform:windows Platform:macOS Platform:iOS Platform:Linux

iPhoneOS iPadOS
SpaConBridge on iPhoneOS SpaConBridge on iPadOS
macOS Windows
SpaConBridge on macOS SpaConBridge on Windows
Linux Raspberry Pi OS (Raspbian)
SpaConBridge on Linux SpaConBridge on RaspberryPi

SpaConBridge was created with the idea in mind to have both a simple ui to monitor or control Sound Object parameters of a d&b audiotechnik Soundscape system, esp. the DS100 Signal Engine, via OSC or AES70/OCP.1 protocol and at the same time the option to integration external control (MIDI device, OSC control app, ...).

It is neither suppported nor driven by official d&b activities.

Known Issues:

  • MIDI device listing is not updated during runtime
    Note: In consequence, devices being plugged in / coming online while app is running cannot be used unless app is restarted
  1. If no DS100 is available, the option to use 'None' as protocol communication dummy allows testing of bridging inbetween 3rd party devices and is supporting of loading a d&b dbpr project to extract the coordinate mapping setup and speaker system layout for visualization of object positions.
  2. Launch SpaConBridge
  3. Settings tab is opened as starting page
  4. Set up the DS100 connection
    • Click on discovery button below IP address text edit field to get a list of devices that announce _osc._udp (DS100 OSC communication active) or _oca._tcp (DS100 OCP1/AES70 communication active) zeroconf service and choose the DS100 you want to connect to
    • If you do not have a DS100 at hand, now is the time to switch to 'None' as protocol and if available load the dbpr project to work with
  5. Activate the 'Online' button in the lower right corner of the application window
  6. 'Online' inidicator on bottom right of the UI becomes active
  7. Go to Sound Object Table tab
    • Add the Sound Objects you want to control data bridging behaviour for by clicking the 'Add' button
  8. Receiving object values from DS100 is active by default (button with 'incoming' arrow symbol is toggled on)
  9. Go to Statistics tab and click on DS100 legend item to activate DS100 protocol traffic plotting/logging.
  10. Go to Sound Object Table tab and select one of the Sound Objects for which you previously activated receiving object values (button with 'incoming' arrow symbol)
  11. Details editor is opened for the Sound Object and shows live object value changes
  12. Go to Multi Sound Object XY Pad tab to see the live object value changes for all objects with activated value receiving
  13. You now can set up a bridging protocol in Settings tab if you like, following instructions provided for each individual implemented protocol
    • Keep in mind that incoming protocol values are only forwarded to DS100 and not directly shown on UI. The updated values are shown on UI as soon as values are reflected by DS100. Without a working connection to DS100 device or simulation, the UI will not show external/3rdParty changes.
    • Statistics tab shows bridging traffic and therefor can be used to monitor incoming protocl values without a working connection to DS100 device or simulation.

Some details on SpaConBridge app architecture see app architecture diagram

Showreel.002.png

Every row in the table corresponds to an active Sound Object, meaning that it is shown on UI and its values can be received from DS100. This does not affect the pure protocol bridging in underlying module. E.g. in case an external OSC input sends new positioning values for a channel that is not present in the table, the values will still be bridged to DS100. This needs to be kept in mind if muting the input data from a protocol for a Sound Object is desired! The table allows multiselection and editing of receive, send and mapping area selection for multiple Sound Objects at a time.

Showreel.003.png

For every active bridging protocol, a sub column with mute buttons is presented in 'Bridging' column. This allows muting individual data input related to a Sound Object coming in from bridging protocols. Table multiselection allows editing of mute state for multiple Sound Objects and bridging protocols at a time.

Showreel.004.png

Following the selection in Sound Object table, the corresponding Soundscape parameters are shown in an editing area. The UI layout is designed to adapt to the available screen real estate of the device SpaConBridge is used on. Depending on the screen geometry a vertical or horizontal layout of table and parameter editing area is used.

On small screens, legend annotation and control value displays are hidden. (useful for Tablet landscape vs. portrait rotation, small Smartphone screens, embedded device touchscreens, ...)

The selection in Sound Object table and the currently active tab can be externally controlled by bridging protocols that support the commands 'SpaConBridge Sound Object Select' and 'SpaConBridge UI Element Index Select'.

Showreel.005.png

The table control bar contains a toggle button that allows switching between single- and multiselection mode of the table. Depending on the mode, either the single sound object editor is shown on the right (horizontal layout) or below (vertical layout) or the multi sound object visualization area is shown. In case the latter is shown, only those sound objects that are selected in the table are visible.

A dropdown menu below the multiselection visualization area can be used to store the current multiselection with a given name for later recalling. All stored multiselections are listed in the dropdown menu for recalling and can also be cleared here.

Showreel.033.png

When 'All' is selected in the mapping area dropdown, all SoundObjects that are configured in SoundObjects table, are shown alongside a visual representation of loudspeaker positions and coordinate mappings as are configured in the connected DS100 device.

Showreel.006.png

When a specific coordinate mapping is selected in the mapping area dropdown, only the Soundobjects that are setup respectively in the Soundobjects table are shown. The selection / multiselection in SoundObject table is followed here and reflected in SoundObject circle sizing - selected objects are shown enlarged.

Showreel.007.png

A custom background image can be assigned for each of the four mapping areas. Visualization of the MatrixInput ChannelName corresponding to the SoundObject can be activated with a toggle button in the lower right corner of the page.

Showreel.008.png

Visualization of the En-Space send gain per SoundObject can be activated with a toggle button in the lower right corner of the page. The value is represented by 'wing' like reverberation elements on the right and left side of each SoundObject.

Showreel.009.png

On devices that support multitouch input, a horizontal pinch gesture can be used to modify the En-Space send gain value. The gesture should be performed by first touching the sound object that shall be modified with a finger and then use a second finger to drag left or right. Dragging to the right increases the value, to the left decreases it.

Alternatively the mode can be used with a keyboard+mouse setup as well by clicking on the sound object to be modified, then pressing the ALT key on the keyboard and dragging the mouse while still pressing the primary mousekey.

Showreel.010.png

Visualization of the Spread factor per SoundObject can be activated with a toggle button in the lower right corner of the page. The value is represented by transparent circles around each SoundObject.

Showreel.011.png

On devices that support multitouch input, a vertical pinch gesture can be used to modify the Spread Factor value. The gesture should be performed by first touching the sound object that shall be modified with a finger and then use a second finger to drag up or down. Dragging up increases the value, down decreases it.

Alternatively the mode can be used with a keyboard+mouse setup as well by clicking on the sound object to be modified, then pressing the ALT key on the keyboard and dragging the mouse while still pressing the primary mousekey.

Showreel.012.png

Extended SoundObject multiselection visualization and interaction can be activated with a toggle button in the lower button bar. When enabled, the currently active multiselection of Sound Objects can be moved, rotated and scaled using the two interaction-handles. The Sound Objects part of the currently active multiselection are visualized with connecting lines.

Showreel.013.png

On the left side (landscape) or top (portrait) of the page, a table for visualization and control of DS100 matrix input channels is shown and on the right side or bottom of the page, a table for matrix outputs. Every row in both of the tables corresponds to an active Matrix Input or Output, meaning that it is shown on UI and its values can be received from DS100. This does not affect the pure protocol bridging in underlying module. E.g. in case an external OSC input sends new gain values for a channel that is not present in the table, the values will still be bridged to DS100. This needs to be kept in mind if muting the input data from a protocol for a Matrix Input/Output is desired!

Showreel.014.png

Scenes page constantly reads the currently active Scene Index, Name and Comment from DS100 (low refresh rate) and displays the values in text editors.

The editor value for Scene Index can be edited by the user and used to trigger recalling the Scene specified by the index with a dedicated 'Recall' button. In addition to that, buttons for recalling previous and next scene directly are available.

A separate button allows 'pinning' a Scene for direct recall. Clicking the button appends a direct recall entry for the Scene Index + Name currently active below the existing UI elements. Direct recall entries must be unique, therefor a direct recall entry for a Scene Index can exist only once in the list of pinned Scenes. Removing a pinned Scene is possible through the right-aligned delete button for every entry.

Showreel.015.png

En-Space page constantly reads the currently active room id, predelay factor and rear level values and displays them on UI. The values can be modified by the user through given UI elements.

Showreel.016.png

Statistics page shows a graphical representation for current bridging protocol load (messages per second) for every active protocol and a tabular log view of the last 200 received messages. The graphical representation shown describes the raw incoming data rate only and contains no information on actual bridging. Both plot and log are refreshed at a small rate to keep the performance impact on the host system resources low.

Showreel.0017.png

Showreel.0018.png

Settings page is structured in sections.

The first section allows configuration of application related parameters and is always active. The pages that are visible as tabs on the UI can be set (exception Settings tab, must always be visible) using toggle buttons for every page and the UI look and feel (dark vs. light) can be selected from a dropdown.

DS100 OSC communication protocol is always active. The IP address can be manually configured or, if the build of SpaConBridge for the host system supports this, zeroconf discovery button can be used to select on of the discovered devices. OSC UDP communication ports are hardcoded to match the ones used by DS100.

Showreel.0019.png

The following sections contain configuration details for the supported remote control protocols.

For details on the settings for the implemented protocols, see the individual documentation

* Implemented using simulation only -> feature level 'Alpha'/'Beta'.

The bottom bar of settings page contains buttons to save and load entire SpaConBridge configurations, as well as a button to show the raw current configuration in a text editor overlay. The latter is mainly useful for debugging purposes. Depending on the available horizontal UI resolution, buttons are hidden. 'Show raw config' disappears first, since it is least relevant for use. On host devices as smartphones, rotating from portrait to landscape mode can help to make the buttons visible, in case they are hidden in portrait mode.

  • Absolute Sound Object Position XY
  • Matrix Input ReverbSendGain
  • Sound Object Spread
  • Sound Object Delay Mode
  • Matrix Input ChannelName
  • Matrix Input Level (pre mute)
  • Matrix Input Gain
  • Matrix Input Mute
  • Matrix Output Level (post mute)
  • Matrix Output Gain
  • Matrix Output Mute

About

Spatial Control Bridge

Resources

License

LGPL-3.0 and 3 other licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
LICENSE
GPL-3.0
COPYING
Apache-2.0
COPYING.apachev2

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages