Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow changing of output device #1904

Open
Danielku15 opened this issue Feb 17, 2025 · 0 comments
Open

Allow changing of output device #1904

Danielku15 opened this issue Feb 17, 2025 · 0 comments
Assignees
Labels
area-player Related to the audio playback engine. platform-all Affects all platforms state-accepted This is a valid topic to work on.
Milestone

Comments

@Danielku15
Copy link
Member

See #634 (comment)

alphaTab should expose an API to allow changing the output device.

alphaTab design:

  • alphaTab should provide its own abstraction for the output devices to provide a unified experience across platforms.
  • Due to the dynamic nature of first enumerating devices and then selecting one, the output device cannot be part of the Settings
  • Low Level API:
    • The ISynthOutput initializes with the default device
    • A new interface ISynthOutputDevice { ... } will represent the platform specific devices.
    • A new interface ISynthOutput { enumerateDevices(): Promise<ISynthOutputDevice> method enumerate and list the devices (it also will request permissions if needed).
    • A new interface ISynthOutput { setOutputDevice(device: ISynthOutputDevice|null): Promise<void> method will change the output device. Null restores the default output device.
    • A new interface ISynthOutput { getOutputDevice(): Promise<ISynthOutputDevice|null> method try to determine the current output device.
    • Multiple ISynthOutputDevice instances for the same output device might be created across API calls.
  • High level API:
    • Re-Expose enumerateDevices on AlphaTabApiBase
    • Re-Expose setOutputDevice on AlphaTabApiBase
    • Re-Expose getOutputDevice on AlphaTabApiBase
@Danielku15 Danielku15 added area-player Related to the audio playback engine. platform-all Affects all platforms state-accepted This is a valid topic to work on. labels Feb 17, 2025
@Danielku15 Danielku15 added this to the 1.5.0 milestone Feb 17, 2025
@Danielku15 Danielku15 self-assigned this Feb 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-player Related to the audio playback engine. platform-all Affects all platforms state-accepted This is a valid topic to work on.
Projects
Status: No status
Development

No branches or pull requests

1 participant