1.2.1. Hookah

Hookah provides an RSB interface for audio input and output via the Motu devices (see Audio Hardware) and conversion to different audio formats.

1.2.1.2. Interfaces

Audio sinks and sources are provided according to the configuration file in hookah/hookah_config.json. This needs to be changed on AUD and scripts/releaseme.sh run before the changes take effect. In future, the config will be automatically generated from the device manager state.

For the config entry you need to know which channel the speaker or microphone is connected to. This information can be largely deduced from the cabling overview. The channel number for a microphone connected to input channel \(c\) on device \(d\) is just \((d-1) \cdot 8+c\), where \(1 \leq c \leq 8\) and \(1 \leq d \leq 4\) (in English, this means that the 8 input channels each of the 4 Motu devices has are patched in the order you’d expect). The speaker config is slightly more complicated than that and currently there is no real alternative to checking the routing matrix manually because the special cases change so frequently that this documentation would be outdated by the time you read it. For this, check `http://8m-1.local./#routing`_ on AUD.

The <id> is a unique string only used by that specific application or informer to prevent conflicts. It is configured in the JSON config mentioned above. Multiple sources sending to the same output channel will be mixed together, as long as they use different IDs. If they use the same ID, the Soundchunks will be queued one after the other, which will probably not be the expected behavior.

For some of the currently used scopes see the wiki.

1.2.1.3. Network Time Provider

This feature is currently non-functional because the main gstreamer pipelines no longer provide a clock at all

For remote live sinks or sources that need to be synchronized with their Hookah counterpart (or with each other), Hookah provides a GStreamer network clock on port 65084. There is documentation on how to use it in your C code. Python uses the from gi.repository import GstNet import and function name conversions as usual. As far as I can tell, it is not possible to force a gst-launch pipeline to use such a clock though.

1.2.1.4. TODO

  • Configuration guide
  • Known problems, especially scheduling-wise
  • Python autodoc
  • ...