Skip to content

[portaudio] Add JACK and ASIO backend support #41006

Open

Description

Is your feature request related to a problem? Please describe.

This feature is not related to any problem, but it is related to efforts to upstream Tenacity's legacy vcpkg fork. In this port is a custom PortAudio port that has two features: jack and asio, which enable the respective backends. By implementing new port features or changes, we can enable JACK by default and introduce a new port feature to allow projects to easily enable ASIO.

I'm aware that you need to provide an ASIO SDK in vcpkg/buildtrees/portaudio/src to get ASIO automatically built, as according to:

# NOTE: the ASIO backend will be built automatically if the ASIO-SDK is provided

Alternatively, PortAudio can automatically download the source as well, which might be slightly more convenient, although that requires CMake 3.18 or later. This can be done if the asio feature is enabled and we have CMake 3.18 or later.

Proposed solution

My proposed solution is simply adding new port features for jack and asio to enable the respective backends. ASIO would be disabled by default due to licensing restrictions while jack would be enabled by default.

Describe alternatives you've considered

Alternatively, for enabling JACK, we can simply modify the port to also depend on jack2 and other appropriate dependencies (i.e., tre for windows | mingw and pthread for windows) and always enable the JACK backend. This might be a more sensible option since PortAudio's JACK backend should work across Windows, macOS, and Linux.

For ASIO, I do not see any other alternative due to licensing restrictions.

Additional context

There is this issue from tenacity-legacy related to getting JACK working on Windows. I believe it was possible and probably happened at one point, but nowadays this isn't possible with modern Tenacity.

The whole intention of making this issue is to discuss a) whether these changes should be implemented, and b) how they should be implemented. I intend to open a PR once we have all of this discussed should we decide to proceed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

category:port-featureThe issue is with a library, which is requesting new capabilities that didn’t exist

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions