jpcima / adljack

OPL3/OPN2 synthesizer using ADLMIDI and OPNMIDI, for Jack and cross-platform audio
Boost Software License 1.0
41 stars 3 forks source link

rtaudio 6 compatibility #23

Closed dvzrv closed 10 months ago

dvzrv commented 11 months ago

Hi! rtaudio 6 has been released with a few breaking changes.

On Arch Linux I'm currently attempting a rebuild, but there seem to be incompatibilities:

[ 80%] Building CXX object CMakeFiles/adlrt.dir/sources/tui_channels.cc.o
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/i18n.cc.o -MF CMakeFiles/adlrt.dir/sources/i18n.cc.o.d -o CMakeFiles/adlrt.dir/sources/i18n.cc.o -c /build/adljack/src/adljack-1.2.0/sources/i18n.cc
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/rtmain.cc.o -MF CMakeFiles/adlrt.dir/sources/rtmain.cc.o.d -o CMakeFiles/adlrt.dir/sources/rtmain.cc.o -c /build/adljack/src/adljack-1.2.0/sources/rtmain.cc
[ 80%] Building CXX object CMakeFiles/adlrt.dir/sources/player.cc.o
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/tui_fileselect.cc.o -MF CMakeFiles/adlrt.dir/sources/tui_fileselect.cc.o.d -o CMakeFiles/adlrt.dir/sources/tui_fileselect.cc.o -c /build/adljack/src/adljack-1.2.0/sou
rces/tui_fileselect.cc
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/tui.cc.o -MF CMakeFiles/adlrt.dir/sources/tui.cc.o.d -o CMakeFiles/adlrt.dir/sources/tui.cc.o -c /build/adljack/src/adljack-1.2.0/sources/tui.cc
[ 82%] Building CXX object CMakeFiles/adlrt.dir/sources/common.cc.o
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/tui_channels.cc.o -MF CMakeFiles/adlrt.dir/sources/tui_channels.cc.o.d -o CMakeFiles/adlrt.dir/sources/tui_channels.cc.o -c /build/adljack/src/adljack-1.2.0/sources/t
ui_channels.cc
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/insnames.cc.o -MF CMakeFiles/adlrt.dir/sources/insnames.cc.o.d -o CMakeFiles/adlrt.dir/sources/insnames.cc.o -c /build/adljack/src/adljack-1.2.0/sources/insnames.cc
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/player_traits.cc.o -MF CMakeFiles/adlrt.dir/sources/player_traits.cc.o.d -o CMakeFiles/adlrt.dir/sources/player_traits.cc.o -c /build/adljack/src/adljack-1.2.0/source
s/player_traits.cc
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/player.cc.o -MF CMakeFiles/adlrt.dir/sources/player.cc.o.d -o CMakeFiles/adlrt.dir/sources/player.cc.o -c /build/adljack/src/adljack-1.2.0/sources/player.cc
/usr/bin/c++ -DADLJACK_HAVE_MLOCKALL -DADLJACK_I18N -DADLJACK_PREFIX=\"/usr\" -DADLJACK_USE_CURSES -DADLMIDI_DISABLE_CPP_EXTRAS -DADLMIDI_DISABLE_MIDI_SEQUENCER -DBWMIDI_DISABLE_MUS_SUPPORT -DBWMIDI_DISABLE_XMI_SUPPORT -I/usr/include/rtaudio -I/usr/include/rtmidi -I/build/adljack/src/adljack-1.2.0/thirdparty/libADLMID
I/include -I/build/adljack/src/adljack-1.2.0/thirdparty/libOPNMIDI/include -I/build/adljack/src/adljack-1.2.0/thirdparty/ring-buffer/include -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp
,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/adljack/src=/usr/src/debug/adljack -flto=auto -Wall -std=gnu++11 -MD -MT CMakeFiles/adlrt.dir/sources/common.cc.o -MF CMakeFiles/adlrt.dir/sources/common.cc.o.d -o CMakeFiles/adlrt.dir/sources/common.cc.o -c /build/adljack/src/adljack-1.2.0/sources/common.cc
/build/adljack/src/adljack-1.2.0/sources/player_traits.cc: In static member function ‘static int Player_Traits<Player_Type::OPN2>::set_bank(player*, unsigned int)’:
/build/adljack/src/adljack-1.2.0/sources/player_traits.cc:14:83: note: ‘#pragma message: Using my own bank embed for OPN2. Remove this in the future.’
   14 |     #pragma message("Using my own bank embed for OPN2. Remove this in the future.")
      |                                                                                   ^
/build/adljack/src/adljack-1.2.0/sources/rtmain.cc:123:6: error: variable or field ‘audio_error_callback’ declared void
  123 | void audio_error_callback(RtAudioError::Type type, const std::string &text)
      |      ^~~~~~~~~~~~~~~~~~~~
/build/adljack/src/adljack-1.2.0/sources/rtmain.cc:123:27: error: ‘RtAudioError’ has not been declared
  123 | void audio_error_callback(RtAudioError::Type type, const std::string &text)
      |                           ^~~~~~~~~~~~
/build/adljack/src/adljack-1.2.0/sources/rtmain.cc:123:52: error: expected primary-expression before ‘const’
  123 | void audio_error_callback(RtAudioError::Type type, const std::string &text)
      |                                                    ^~~~~
/build/adljack/src/adljack-1.2.0/sources/rtmain.cc: In function ‘int audio_main()’:
/build/adljack/src/adljack-1.2.0/sources/rtmain.cc:180:40: error: ‘audio_error_callback’ was not declared in this scope; did you mean ‘midi_error_callback’?
  180 |         &process, &ctx, &stream_opts, &audio_error_callback);
      |                                        ^~~~~~~~~~~~~~~~~~~~
      |                                        midi_error_callback
make[2]: *** [CMakeFiles/adlrt.dir/build.make:76: CMakeFiles/adlrt.dir/sources/rtmain.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/build/adljack/src/build'
make[1]: *** [CMakeFiles/Makefile2:209: CMakeFiles/adlrt.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 83%] Linking CXX static library libflatbuffers.a
cd /build/adljack/src/build/thirdparty/flatbuffers && /usr/bin/cmake -P CMakeFiles/flatbuffers.dir/cmake_clean_target.cmake
cd /build/adljack/src/build/thirdparty/flatbuffers && /usr/bin/cmake -E cmake_link_script CMakeFiles/flatbuffers.dir/link.txt --verbose=1
/usr/bin/ar qc libflatbuffers.a CMakeFiles/flatbuffers.dir/src/code_generators.cpp.o CMakeFiles/flatbuffers.dir/src/idl_parser.cpp.o CMakeFiles/flatbuffers.dir/src/idl_gen_text.cpp.o CMakeFiles/flatbuffers.dir/src/reflection.cpp.o CMakeFiles/flatbuffers.dir/src/util.cpp.o
/usr/bin/ranlib libflatbuffers.a
make[2]: Leaving directory '/build/adljack/src/build'
[ 83%] Built target flatbuffers
make[1]: Leaving directory '/build/adljack/src/build'
make: *** [Makefile:156: all] Error 2

FWIW, I'm not building against the vendored sources, as vendoring them is a problem for distributions (see https://fedoraproject.org/wiki/Bundled_Libraries).

Full build logs:

adljack-1.2.0-5-x86_64-build.log

Wohlstand commented 11 months ago

At some moment, RtAudio worked glitchily, and didn't worked properly (some newer versions failed to work on PulseAudio, but I am not sure, had that bug being fixed or not), and therefore an old bundled libray had been used that just works. I could get a shot to bring the support of a newer RtAudio/RtMidi.

dvzrv commented 11 months ago

Support for native rtaudio >= 6.0.1 would be highly appreciated!

Wohlstand commented 11 months ago

I updated the compatibilty just now. Should work now.

dvzrv commented 10 months ago

Thanks for working on this!

I'll try to package these changes. Would you be able to create a release for this?

Wohlstand commented 10 months ago

Good note, I'll try.

Wohlstand commented 10 months ago

Bee happy: https://github.com/jpcima/adljack/releases/tag/v1.3.0

Wohlstand commented 10 months ago

I'll close this as, seems, you unnoticedly confirmed that thing is works now.