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

[portaudio] Add JACK and ASIO backend support #41006

Open
generic-pers0n opened this issue Sep 16, 2024 · 1 comment
Open

[portaudio] Add JACK and ASIO backend support #41006

generic-pers0n opened this issue Sep 16, 2024 · 1 comment
Assignees
Labels
category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist

Comments

@generic-pers0n
Copy link
Contributor

generic-pers0n commented Sep 16, 2024

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.

@generic-pers0n generic-pers0n added the category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist label Sep 16, 2024
@JoergAtGithub
Copy link
Contributor

Just for reference, mixxxdj has also an overlay port of portaudio with some additional patches: https://github.com/mixxxdj/vcpkg/tree/2.5/overlay/ports/portaudio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist
Projects
None yet
Development

No branches or pull requests

3 participants