Alta Voce Internal Documentation
Home
  • English
  • Français
Home
  • English
  • Français
  • Home
  • Working at Alta Voce

    • Overview
    • Team and Responsibilities
  • Webservices and APIs

    • Introduction
    • Database Architecture (MySQL)
    • Alta Call devices selection flow
    • Alta Call Issues and Incidents Nomenclature
    • Process to measure the consumption of client for Alta Call
    • Telemetry and Storage Analysis
    • DevOps, CI/CD Pipelines & Runbooks
  • Alta Call Applications

    • Overview
    • Backend Administration Platform (admin-alta.alta-voce.tech)
    • Client Workspace & Dashboard (client-alta.alta-voce.tech)
    • Client Frontend — Auto-generated Reference (client-alta)
    • Plugin Alerts
  • AI Services

    • AI Services
    • ia-altavoce.tech
    • incident.altavoce.tech

Alta Call devices selection flow

Alta Call and our webservices are working together to ensure the best audio devices (capture and playback) are used by Alta Call at any time.

This logic is quite complex, in particular for capture devices, because we need to handle the following constraints:

  1. Users shouldn't have to worry at all about audio devices in order to use Alta Call
  2. Users should be able to explicitely select audio devices when then need to

Manual device selection can happen in two places:

  1. Alta Call's UI
  2. Alta Call's Client Space

Playback device

Selecting the playback device is the easiest part because it should always be VoiceMeeter Output. This is how our API ensure the proper playback device is selected:

Client/server data flow

Capture device

Selecting an adequate capture device is much more difficult because:

  1. We need to support any audio device
  2. Audio devices have inconsistent and unstable names: Microphone sur casque (3- Jabra EVOLVE) could become Microphone sur casque (12- Jabra EVOLVE) when unplugged and plugged again
  3. Physical and virtual devices may be detected and available at different time
  4. Devices have different priorities: an external headset should take precedence over an internal microphone, as it is expected to provide much better audio quality
  5. Some devices must be avoided completely, in particular Cable and VoiceMeeter Output virtual devices
  6. If a device is selected manually, we don't want to override the user's choice
  7. If a device disappear or is unplugged, another one should be immediatly selected to replace it

As the logic to handle all these constraints is rather complex, it happens on the server side. At regular intervals, Alta Call sends a list of available devices through a POST /telemetry call. In addition, Alta Call will also send a POST /event call when:

  1. A device is plugged
  2. A device in unplugged

The whole flow can be represented as follows:

Client/server data flow

The logic to select the best possible device from a list of candidates is implemented in the Laravel backend within the App\Services\DeviceSelector class (specifically the getProperDevice method). It is then orchestrated by AudioDeviceService during telemetry updates.

Edit this page
Last Updated: 6/1/26, 11:51 AM
Prev
Database Architecture (MySQL)
Next
Alta Call Issues and Incidents Nomenclature