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

No audio input ports #28

Open
cbix opened this issue Dec 24, 2022 · 4 comments
Open

No audio input ports #28

cbix opened this issue Dec 24, 2022 · 4 comments

Comments

@cbix
Copy link
Contributor

cbix commented Dec 24, 2022

clap-host 1.0.2 on Linux + PipeWire (jack/alsa/pulse) doesn't provide any way to connect audio inputs, only outputs are created. This is fine for synthesizer/instrument plugins but not for effects.

Couldn't test latest master since that doesn't build at all.

@cbix
Copy link
Contributor Author

cbix commented Jan 4, 2024

On 1.0.3 with rtaudio 6 no audio ports are created at all and this error printed:

RtApi::openStream: output device ID is invalid.

Still couldn't build latest master:

Show output
[ 80%] Building C object clap/CMakeFiles/clap-plugin-template.dir/src/plugin-template.c.o
cc1: warning: ‘-Werror=’ argument ‘-Werror=non-virtual-dtor’ is not valid for C
cc1: warning: command-line option ‘-Woverloaded-virtual=2’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-fvisibility-inlines-hidden’ is valid for C++/ObjC++ but not for C
In file included from /home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/tests/hex-encoder.cc:1:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh: In function ‘std::string clap::helpers::hex_encode(const void*, std::size_t)’:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:15:38: error: ISO C++ forbids declaration of ‘type name’ with no type [-fpermissive]
   15 |       auto start = static_cast<const uint8_t *>(data);
      |                                      ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:15:38: error: expected ‘>’ before ‘uint8_t’
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:15:38: error: expected ‘(’ before ‘uint8_t’
   15 |       auto start = static_cast<const uint8_t *>(data);
      |                                      ^~~~~~~
      |                                      (
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:15:38: error: ‘uint8_t’ was not declared in this scope
   15 |       auto start = static_cast<const uint8_t *>(data);
      |                                      ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:8:1: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
    7 | #include <vector>
  +++ |+#include <cstdint>
    8 | 
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:15:47: error: expected primary-expression before ‘>’ token
   15 |       auto start = static_cast<const uint8_t *>(data);
      |                                               ^
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:15:54: error: expected ‘)’ before ‘;’ token
   15 |       auto start = static_cast<const uint8_t *>(data);
      |                                                      ^
      |                                                      )
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh: At global scope:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:26:11: error: ‘uint8_t’ does not name a type
   26 |    inline uint8_t hex_decode_char(char c) {
      |           ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:26:11: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:37:23: error: ‘uint8_t’ was not declared in this scope
   37 |    inline std::vector<uint8_t> hex_decode(const char *str, size_t len) {
      |                       ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:37:23: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:37:30: error: template argument 1 is invalid
   37 |    inline std::vector<uint8_t> hex_decode(const char *str, size_t len) {
      |                              ^
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:37:30: error: template argument 2 is invalid
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh: In function ‘int clap::helpers::hex_decode(const char*, size_t)’:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:43:19: error: ‘uint8_t’ was not declared in this scope
   43 |       std::vector<uint8_t> result;
      |                   ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:43:19: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:43:26: error: template argument 1 is invalid
   43 |       std::vector<uint8_t> result;
      |                          ^
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:43:26: error: template argument 2 is invalid
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:44:14: error: request for member ‘reserve’ in ‘result’, which is of non-class type ‘int’
   44 |       result.reserve(len / 2);
      |              ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:47:16: error: ‘uint8_t’ does not name a type
   47 |          const uint8_t v1 = hex_decode_char(str[i]);
      |                ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:47:16: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:48:16: error: ‘uint8_t’ does not name a type
   48 |          const uint8_t v2 = hex_decode_char(str[i + 1]);
      |                ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:48:16: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
In file included from /usr/include/c++/13.2.1/cassert:44,
                 from /home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:3:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:50:22: error: ‘v1’ was not declared in this scope
   50 |          assert(0 <= v1 && v1 <= 0xF);
      |                      ^~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:51:22: error: ‘v2’ was not declared in this scope
   51 |          assert(0 <= v2 && v2 <= 0xF);
      |                      ^~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:53:16: error: ‘uint8_t’ does not name a type
   53 |          const uint8_t v = (v1 << 4) | v2;
      |                ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:53:16: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:54:17: error: request for member ‘push_back’ in ‘result’, which is of non-class type ‘int’
   54 |          result.push_back(v);
      |                 ^~~~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:54:27: error: ‘v’ was not declared in this scope
   54 |          result.push_back(v);
      |                           ^
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh: At global scope:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:59:23: error: ‘uint8_t’ was not declared in this scope
   59 |    inline std::vector<uint8_t> hex_decode(const char *str) {
      |                       ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:59:23: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:59:30: error: template argument 1 is invalid
   59 |    inline std::vector<uint8_t> hex_decode(const char *str) {
      |                              ^
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:59:30: error: template argument 2 is invalid
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:63:23: error: ‘uint8_t’ was not declared in this scope
   63 |    inline std::vector<uint8_t> hex_decode(const std::string& str) {
      |                       ^~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:63:23: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:63:30: error: template argument 1 is invalid
   63 |    inline std::vector<uint8_t> hex_decode(const std::string& str) {
      |                              ^
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/hex-encoder.hh:63:30: error: template argument 2 is invalid
[ 82%] Linking CXX shared module clap-plugin-template.clap
[ 85%] Built target clap-plugin-template
[ 87%] Building CXX object clap-helpers/CMakeFiles/clap-helpers-tests.dir/tests/event-list-tests.cc.o
In file included from /home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/tests/event-list-tests.cc:1:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/event-list.hh: In member function ‘bool clap::helpers::EventList::tryPush(const clap_event_header*)’:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/include/clap/helpers/event-list.hh:111:21: error: ‘copy_n’ is not a member of ‘std’; did you mean ‘copy’?
  111 |                std::copy_n(ev->buffer, ev->size, buffer);
      |                     ^~~~~~
      |                     copy
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/tests/hex-encoder.cc: In function ‘void {anonymous}::CATCH2_INTERNAL_TEST_0()’:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/tests/hex-encoder.cc:12:69: error: conversion from ‘int’ to non-scalar type ‘const std::vector<unsigned char>’ requested
   12 |       const std::vector<uint8_t> decoded = clap::helpers::hex_decode(encoded);
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/tests/hex-encoder.cc: In function ‘void {anonymous}::CATCH2_INTERNAL_TEST_2()’:
/home/florian/osamc/archlinux-proaudio/packages/clap-example-host/src/clap-host/clap-helpers/tests/hex-encoder.cc:18:69: error: conversion from ‘int’ to non-scalar type ‘const std::vector<unsigned char>’ requested
   18 |       const std::vector<uint8_t> decoded = clap::helpers::hex_decode("F0A8C40FFF");
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
make[3]: *** [clap-helpers/CMakeFiles/clap-helpers-tests.dir/build.make:96: clap-helpers/CMakeFiles/clap-helpers-tests.dir/tests/hex-encoder.cc.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: *** [clap-helpers/CMakeFiles/clap-helpers-tests.dir/build.make:138: clap-helpers/CMakeFiles/clap-helpers-tests.dir/tests/event-list-tests.cc.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:742: clap-helpers/CMakeFiles/clap-helpers-tests.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:169: clap/CMakeFiles/clap-tests.dir/rule] Error 2
make: *** [Makefile:199: clap-tests] Error 2

Ping @abique

@digitalsignalperson
Copy link

I'm on arch linux. I get the same RtApi::getDeviceInfo: deviceId argument not found.

in this function

void AudioSettingsWidget::updateDeviceList() {
   _deviceChooser->clear();

   auto deviceCount = _audio->getDeviceCount();
   bool deviceFound = false;

   // Populate the choices
   for (int i = 0; i < deviceCount; ++i) {
      auto deviceInfo = _audio->getDeviceInfo(i);

For auto deviceCount = _audio->getDeviceCount(); I see my device count of 6

But for each auto deviceInfo = _audio->getDeviceInfo(i);
it prints RtApi::getDeviceInfo: deviceId argument not found.

and the resulting deviceInfo struct is empty / zero initialized

@digitalsignalperson
Copy link

This was a breaking change in RtAudio where the argument in getDeviceInfo(i) is no longer an index, but a device id.

The fix can be like

auto deviceIds = _audio->getDeviceIds();
for (int i : deviceIds) {

@cbix
Copy link
Contributor Author

cbix commented Jul 3, 2024

@digitalsignalperson thanks for your input (pun intended), for me this fixes the device selection but still no input ports show up in JACK :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants