cycfi / q Goto Github PK
View Code? Open in Web Editor NEWC++ Library for Audio Digital Signal Processing
License: MIT License
C++ Library for Audio Digital Signal Processing
License: MIT License
debug|arm64-v8a : Target "libqio" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_fft" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_pitch_detector_ex" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_period_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_pitch_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_onset_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_peak_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_comb" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_maximum2" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_compressor_expander2" requires the language dialect "CXX17"
debug|arm64-v8a : (with compiler extensions), but CMake does not know the compile flags to
debug|arm64-v8a : use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_maximum" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_average2" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_average" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_envelope_follower" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_saw" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_compressor_ff_fb" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_compressor_expander" requires the language dialect "CXX17"
debug|arm64-v8a : (with compiler extensions), but CMake does not know the compile flags to
debug|arm64-v8a : use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_agc" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_pulse" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_square" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_allpass" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_pulse" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_sin" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_triangle" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_triangle" requires the language dialect "CXX17"
debug|arm64-v8a : (with compiler extensions), but CMake does not know the compile flags to
debug|arm64-v8a : use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_bitset" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_saw" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_decibel" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_square" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_biquad_lp" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_list_devices" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_delay" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_sin_synth" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_square_synth" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_midi_monitor" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :-- Generating done
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/q_io/CMakeLists.txt:
debug|arm64-v8a : Target "libqio" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/q_io/CMakeLists.txt:
debug|arm64-v8a : Target "libqio" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/q_io/CMakeLists.txt:
debug|arm64-v8a : Target "libqio" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/q_io/CMakeLists.txt:
debug|arm64-v8a : Target "libqio" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/q_io/CMakeLists.txt:
debug|arm64-v8a : Target "libqio" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_fft" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_pitch_detector_ex" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_period_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_pitch_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_onset_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_peak_detector" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_comb" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_maximum2" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_compressor_expander2" requires the language dialect "CXX17"
debug|arm64-v8a : (with compiler extensions), but CMake does not know the compile flags to
debug|arm64-v8a : use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_maximum" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_average2" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_moving_average" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_envelope_follower" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_saw" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_compressor_ff_fb" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_compressor_expander" requires the language dialect "CXX17"
debug|arm64-v8a : (with compiler extensions), but CMake does not know the compile flags to
debug|arm64-v8a : use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_agc" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_pulse" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_square" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_allpass" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_pulse" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_sin" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_triangle" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_triangle" requires the language dialect "CXX17"
debug|arm64-v8a : (with compiler extensions), but CMake does not know the compile flags to
debug|arm64-v8a : use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_bitset" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_saw" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_decibel" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_gen_basic_square" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/test/CMakeLists.txt:
debug|arm64-v8a : Target "test_biquad_lp" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_list_devices" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_delay" requires the language dialect "CXX17" (with compiler
debug|arm64-v8a : extensions), but CMake does not know the compile flags to use to enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_sin_synth" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_square_synth" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :CMake Error in Oboe/Synths/Q/example/CMakeLists.txt:
debug|arm64-v8a : Target "example_midi_monitor" requires the language dialect "CXX17" (with
debug|arm64-v8a : compiler extensions), but CMake does not know the compile flags to use to
debug|arm64-v8a : enable it.
debug|arm64-v8a :-- Build files have been written to: /Users/mac/StudioProjects/libmedia-Upated/app/.cxx/cmake/debug/arm64-v8a
executing external native build for cmake /Users/mac/StudioProjects/libmedia-Upated/app/src/main/java/libmedia/CMakeLists.txt
FAILURE: Build failed with an exception.
* What went wrong:
executing external native build for cmake /Users/mac/StudioProjects/libmedia-Upated/app/src/main/java/libmedia/CMakeLists.txt
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
com.intellij.openapi.externalSystem.model.ExternalSystemException: executing external native build for cmake /Users/mac/StudioProjects/libmedia-Upated/app/src/main/java/libmedia/CMakeLists.txt
at org.jetbrains.plugins.gradle.model.ProjectImportAction.addBuildModels(ProjectImportAction.java:269)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:130)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:55)
at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:77)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.runAction(ClientProvidedPhasedActionRunner.java:120)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.run(ClientProvidedPhasedActionRunner.java:110)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.buildFinished(ClientProvidedPhasedActionRunner.java:104)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:376)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:358)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:346)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:333)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy12.buildFinished(Unknown Source)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:179)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:141)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:83)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:64)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:62)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
org.gradle.api.GradleException: executing external native build for cmake /Users/mac/StudioProjects/libmedia-Upated/app/src/main/java/libmedia/CMakeLists.txt
at com.android.build.gradle.internal.cxx.logging.ErrorsAreFatalThreadLoggingEnvironment.close(ErrorsAreFatalThreadLoggingEnvironment.kt:50)
at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.buildForOneConfigurationConvertExceptions(ExternalNativeJsonGenerator.java:164)
at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.buildForOneAbiName(ExternalNativeJsonGenerator.java:208)
at com.android.build.gradle.internal.ide.NativeModelBuilder.buildNativeVariantAbi(NativeModelBuilder.kt:149)
at com.android.build.gradle.internal.ide.NativeModelBuilder.buildAll(NativeModelBuilder.kt:97)
at com.android.build.gradle.internal.ide.NativeModelBuilder.buildAll(NativeModelBuilder.kt:38)
at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$ParameterizedBuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:138)
at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:132)
at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$ParameterizedBuildOperationWrappingToolingModelBuilder$1.call(DefaultToolingModelBuilderRegistry.java:134)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$ParameterizedBuildOperationWrappingToolingModelBuilder.buildAll(DefaultToolingModelBuilderRegistry.java:131)
at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getParameterizedModel(DefaultBuildController.java:99)
at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel(DefaultBuildController.java:81)
at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter$2.getModel(InternalBuildActionAdapter.java:74)
at org.gradle.tooling.internal.consumer.connection.BuildControllerAdapter.getModel(BuildControllerAdapter.java:62)
at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.findModel(AbstractBuildController.java:57)
at org.jetbrains.plugins.gradle.model.ProjectImportAction$MyBuildController.findModel(ProjectImportAction.java:555)
at com.android.tools.idea.gradle.project.sync.idea.svs.SelectedVariantChooserKt.syncAndAddNativeVariantAbi(SelectedVariantChooser.kt:205)
at com.android.tools.idea.gradle.project.sync.idea.svs.SelectedVariantChooserKt.chooseSelectedVariants(SelectedVariantChooser.kt:86)
at com.android.tools.idea.gradle.project.sync.idea.svs.AndroidExtraModelProvider.populateAndroidModels(AndroidExtraModelProvider.kt:90)
at com.android.tools.idea.gradle.project.sync.idea.svs.AndroidExtraModelProvider.populateBuildModels(AndroidExtraModelProvider.kt:40)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.addBuildModels(ProjectImportAction.java:257)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:130)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:55)
at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:77)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.runAction(ClientProvidedPhasedActionRunner.java:120)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.run(ClientProvidedPhasedActionRunner.java:110)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.buildFinished(ClientProvidedPhasedActionRunner.java:104)
at sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:376)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:358)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:346)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:333)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy12.buildFinished(Unknown Source)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:179)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:141)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:83)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:64)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:62)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
* Get more help at https://help.gradle.org
CONFIGURE FAILED in 8s
The issue was when I tried to read the entire wav file with the following code, the program will crash when it is reaching the end:
q::wav_memory wav{ "test\wav" };
for (int i = 0; i < wav.length(); i++)
auto temp = wav();
After a dig through the code, I found the issue was caused by an incorrect implementation in "q/q_io/include/q_io/audio_file.hpp", in the function "inline iterator_range<float const*> const wav_memory::operator()()".
The implementation was adding the number of channels that the audio WAV has for each call, which is correct but did not consider the case that the offset is incorrect when a new buffer is read. In that case, the pointer should equal buf.begin()
rather than buf.begin() + num_channels()
.
So the resolve the issue, simply change the following code:
if ((_pos + num_channels()) >= _buff.end())
{
auto read_len = read(_buff.data(), _buff.size());
if (read_len == 0)
{
_buff.resize(num_channels());
std::fill(_buff.begin(), _buff.end(), 0.0f);
}
else if (read_len != _buff.size())
{
std::fill(_buff.begin()+read_len, _buff.end(), 0.0f);
}
_pos = _buff.begin();
}
float const* p = &*_pos;
iterator_range<float const*> r{ p, p + num_channels() };
_pos += num_channels();
return r;
to the following code:
if ((_pos + num_channels()) >= _buff.end())
{
auto read_len = read(_buff.data(), _buff.size());
if (read_len == 0)
{
_buff.resize(num_channels());
std::fill(_buff.begin(), _buff.end(), 0.0f);
}
else if (read_len != _buff.size())
{
std::fill(_buff.begin()+read_len, _buff.end(), 0.0f);
}
_pos = _buff.begin();
}
else
{
_pos += num_channels();
}
float const* p = &*_pos;
iterator_range<float const*> r{ p, p + num_channels() };
return r;
I can’t compile your library Q-master in Android Studio. The error message is: ERROR: /Users.../CMakeLists.txt : C/C++ debug|x86 : CMake Error at /Users.../CMakeLists.txt:15 (add_subdirectory):add_subdirectory given source „../infra“ which is not an existing directory.
I’m kinda of new in this subject. Could you check the Error message please?
q/docs/modules/ROOT/pages/quick_start.adoc
Lines 64 to 65 in fad283f
I think this is the file it should point to:
example/square_synth.cpp
I have two projects using qlib - one is a VAMP plugin for non-realtime analysis and feature extraction, the other is a SuperCollider plugin. Both of these use cases have an initialization step, followed by a processing step which works on a frame by frame basis.
With the pitch_detector
class I'm able to use the following during the init:
std::shared_ptr<cycfi::q::pitch_detector> m_pd = std::shared_ptr<cycfi::q::pitch_detector>(new cycfi::q::pitch_detector(
q::frequency(m_lowestPitch),
q::frequency(m_highestPitch),
m_inputSampleRate,
q::decibel(q::detail::db2a(m_threshold))));
and then call
bool is_ready = m_pd->operator()(s);
during the processing loop. However the same trick doesn't appear to work for the new signal_conditioner class as the compiler complains about it being a template function https://github.com/cycfi/q/blob/master/q_lib/include/q/fx/signal_conditioner.hpp#L43
I'm not sure what the magic spell is to assign a template class to a shared_ptr
or indeed whether this is the right thing to do in the first place! I assume that the signal conditioner is stateful and that the state needs to be persisted across calls to process each frame. Do you have any recommendations for how to get this to work?
Hey,
Thanks for a great library!
It seems however that building and running the examples on a modern mac needs some of the latest stuff from portaudio master https://github.com/PortAudio/portaudio instead of the currently used sha from the head of the submodule @09087cf5a63d6fdb6aca139331f017da970f8177, which is behind
[submodule "q_io/external/portaudio"]
path = q_io/external/portaudio
url = https://git.assembla.com/portaudio.git
Currently most examples are failing with
❯ example/example_sin_synth
||PaMacCore (AUHAL)|| Error on line 1316: err='-66748', msg=Unknown Error
Is there a reason for using portaudio from git.assembla.com instead of the github one?
Would you care to update the portaudio submodule to include its latest commits from master, or would you accept a PR that moves to the head portaudio from github?
Regards
Torgeir
Hello! I have a question about the = operator overload in the dc_block struct. Why does it take a boolean argument _y and assign it to the object? It’s not clear why this is done. Forgive me if the question is stupid because my c++ skills are limited and I’m still learning.
Hi there! This is a question, not an issue =)
Does it possible to convert your lib to c# or dart(by myself)? I would try to use with Unity or Flutter.
I'm using g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
on WSL2 and can't compile the examples in the Q/example
directory.
Here's what I did so far.
git clone --recurse-submodules https://github.com/cycfi/Q.git
sudo apt-get install libasound-dev
Q/build
directorycd Q && \
mkdir build && \
cd build && \
cmake -G"CodeBlocks - Unix Makefiles" ../
Finally, I navigated to the Q/example
directory and tried to compile the sin_synth.cpp
file using g++
. But, it gives a compilation error.
$ g++ sin_synth.cpp
/usr/bin/ld: /tmp/ccdapcKc.o: in function `main':
sin_synth.cpp:(.text+0x3a): undefined reference to `cycfi::q::port_audio_stream::start()'
/usr/bin/ld: sin_synth.cpp:(.text+0x55): undefined reference to `cycfi::q::port_audio_stream::stop()'
/usr/bin/ld: /tmp/ccdapcKc.o: in function `sin_synth::sin_synth(cycfi::q::frequency)':
sin_synth.cpp:(.text._ZN9sin_synthC2EN5cycfi1q9frequencyE[_ZN9sin_synthC5EN5cycfi1q9frequencyE]+0x33): undefined reference to `cycfi::q::port_audio_stream::port_audio_stream(unsigned long, unsigned long, int, int)'
/usr/bin/ld: sin_synth.cpp:(.text._ZN9sin_synthC2EN5cycfi1q9frequencyE[_ZN9sin_synthC5EN5cycfi1q9frequencyE]+0x55): undefined reference to `cycfi::q::port_audio_stream::sampling_rate() const'
/usr/bin/ld: sin_synth.cpp:(.text._ZN9sin_synthC2EN5cycfi1q9frequencyE[_ZN9sin_synthC5EN5cycfi1q9frequencyE]+0x7f): undefined reference to `cycfi::q::port_audio_stream::~port_audio_stream()'
/usr/bin/ld: /tmp/ccdapcKc.o: in function `sin_synth::~sin_synth()':
sin_synth.cpp:(.text._ZN9sin_synthD2Ev[_ZN9sin_synthD5Ev]+0x26): undefined reference to `cycfi::q::port_audio_stream::~port_audio_stream()'
/usr/bin/ld: /tmp/ccdapcKc.o:(.data.rel.ro._ZTI9sin_synth[_ZTI9sin_synth]+0x10): undefined reference to `typeinfo for cycfi::q::port_audio_stream'
collect2: error: ld returned 1 exit status
I wonder if I am missing any flags that I need to pass with g++.
When running the midi_monitor example, I noticed it only registers midi events as note on/off if they are coming in on the first midi channel.
The file q_lib/include/q/support/literals.hpp
contains 18 operator overloads for e.g.
constexpr frequency operator "" _Hz(long double val)
The space between "
and _Hz
triggers a compiler warning, which in our case leads to a compiler error, since we compile with warnings are errors, to force ourselves to produce clean(er) code.
All operator overloads in that file have that problem. Removing the space fixes it and has no side effects.
Hi there,
Im trying to use your pitch detector to calibrate a eurorack module.
(Bela - using ARM)
in my current tests, this involves simply outputting a sin wave, which i then read back in and get pitch detector to tell me the frequency (which in this case i know)
but Im having a few issues...
e.g. one output (but Ive tried also sorts of different things.
PD setup: 220.000000 - 100.000000/10000.000000 hZ
test freq 220.000000
done test 0 0.000000 220.000000 : 220.000000
test freq 440.000000
done test 1 0.200000 440.000000 : 220.000000
test freq 880.000000
done test 2 0.400000 880.000000 : 876.000000
test freq 1760.000000
done test 3 0.600000 1760.000000 : 103.500000
test freq 3520.000000
done test 4 0.800000 3520.000000 : 0.000000
test freq 7040.000000
done test 5 1.000000 7040.000000 : 0.000000
calibrated output : 0
tunedV [0] : 220.000000
tunedV [1] : 220.000000
tunedV [2] : 876.000000
tunedV [3] : 103.500000
tunedV [4] : 0.000000
tunedV [5] : 0.000000
here you can see....
at 440hz, it didnt adjust, and stayed at 220hz
and above about 1000hz, it stops, despite me giving a 10000hz upper limit.
this test is with creating one pitch detector...
but Ive also tried a lot of different variations on this...
but nothing really seems to make it predicable.
I wonder if Im doing something wrong?
in its simplest form, all I'm doing is:
q::frequency lowest_freq = 100;
q::frequency highest_freq = 10000;
rt_printf("PD setup: %f - %f/%f hZ\n", tfreq, lowest_freq, highest_freq);
t_pitchDetector = std::make_unique<q::pitch_detector>(lowest_freq, highest_freq , context->audioSampleRate, -45_dB);
(variations of this, are to set low/hi frequency to half/double test frequency)
later :
float v0 = audioRead(context, n, 0);
is_ready = (*t_pitchDetector)(v0);
and finally :
if (is_ready) {
t_ptFreq = t_pitchDetector->get_frequency();
}
am I correct in saying 'theoretically' I should be able to just let pitch detector track the frequency, and there is no requirement to reset it, or create a new one - when the frequency changes?!
fyi:
ive tried to wait different 'times' (so how many samples are passed to PD) , and this doesn't appear to help.... (anything form 32000 samples, to 80000 samples)
my pitch range is 220hz to 7040hz (so 5 octaves over 220hz)
should is_ready indicate if the pitch has 'stabilised'?
fyi: its pretty straightforward code, as ive not got pass 'proof of concept' stage... since pitch detection is pretty vital.
https://github.com/TheTechnobear/BelaPatches/blob/dev/c%2B%2B/autocal/render.cpp
Id be grateful for any pointers that might help
Thanks
Mark
Hi,
I am developing Karaoke app in android and i am using oboe livestream to record a voice and merge with music using ffmpeg. and i want to add effects to output audio file. Is it possible to process the audio to get effects? If you know please help me or please guide me.
Thanks in advance
could an example be provided to show how this can be used with audio buffer stream pointers?
for example
class Delay {
public:
/**
* return true if we still have data to write, otherwise false
*/
bool write(PortUtils2 * in, PortUtils2 * out, unsigned int samples) {
//
// called as delay.write(mixerPortA, tmpPort);
//
// the value of samples is dependant on the audio engine, but is always equal to the samples
// remaining in the audio block
// it is one of two values:
//
// value 1: mixerPortA->ports.samples - i
// value 2: mixerPortA->ports.samples
//
// example code to produce silence
for (int i = 0; i < out->ports.samples; i += 2) {
reinterpret_cast<int16_t *>(out->ports.outputStereo->l->buf)[i] = 0;
reinterpret_cast<int16_t *>(out->ports.outputStereo->r->buf)[i] = 0;
}
return true;
}
};
Hi, I am working on making a vst that performs some equalization tasks by reducing two frequency peaks and increasing two others.
I work in a run function that receives a const float **inputs and a const float **outputs and the uint32_t frame count, i'm not sure how i'm supposed to go about modifying this signal with q
I tried
cycfi::q::audio_channels<const float> inputChannels(inputs,sizeof(const float) * frames,frames);
cycfi::q::audio_channels<float> outputChannels(outputs,sizeof(float) * frames,frames);
cycfi::q::audio_stream stream;
stream.process(inputChannels,outputChannels);
which seems to compile but I am not sure yet if it is the right way to use these methods, I also am not sure about the way to go to do some EQ on the signal
moving_average(duration d, std::size_t sps)
: moving_average(std::size_t(sps * float(d)))
Showing All Messages
/Users/rrabien/dev.github/slPlugins/modules/Q/q_lib/include/q/fx/moving_average.hpp:50:43: Cannot convert 'cycfi::duration' (aka 'duration<double>') to 'float' without a conversion operator
I'm wondering if you had any suggestions for this:
In the example above the upper graph shows BACF results for this audio file with the "ground truth" annotation on the lower graph.
As you can see, the tracking is pretty good, however I'm having an issue with unvoiced segments. In lots of other pitch tracking literature these are represented by a value of 0 or -1 (see https://craffel.github.io/mir_eval/#module-mir_eval.melody) - for example when an audio region is silent or contains unpitched noise such as plosives or fricatives.
The issue I'm having is that the pitch detector only seems to put out estimates when it is confident that there's a pitch present. It would be nice if we could output a zero when no pitch is present - for example when a whole window has passed with no valid pitch estimates. Is there any way to achieve this with the existing codebase? Otherwise I end up with a situation like the graph above where it linearly interpolates between frequency estimates without ever getting to zero.
One issue that might be relevant is that the files from this dataset are fairly poor in terms of recording quality (think people singing into laptop mics) - the example track above peaks around -10dB and is one of the better ones. I've not had much success with the signal conditioner as a result as it seems to bring up the noise floor regardless of which settings I tried.
I have problem with BiQuad lowpass filter.
When I have filter in class for example
class Something
{
public:
Something();
q::lowpass filter1;
q::lowpass filter2;
void process(float *in, float *out);
}
Something::Something() : filter1(1500.0, 44000), filter2(800.0, 44000, 2.5) {}
it is working as expected, but under same code, when I add another filter in process, filter is not working
void process(float * in, float *out)
{
// filter created here are not working, they output is not audible
auto frL = q::lowpass( q::frequency(1500.0), 44000 );
auto frR = q::lowpass{ q::frequency(900.0), (uint32_t)m_sampleRate };
float L = frL(in[0]); // not audible
float R = frR(in[1]); // not audible
L = filter1(in[0]); // working
R = filter2(in[1]); // working
}
Hi, loving your work! I gave the pitchDetection a spin, and ran into a most strange issue that might have nothing to do with your code but might be CPU floating point bug.
The debug version asserts after a few hours in the std::max() function, in a piece of code that shouldn't assert. I am using Visual Studio 2017.
This is what I see:
SourceCode asserting with "invalid comperator":
template<class _Ty>
_Post_equal_to_(_Left < _Right ? _Right : _Left)
_NODISCARD constexpr const _Ty& (max)(const _Ty& _Left, const _Ty& _Right)
_NOEXCEPT_COND(_NOEXCEPT_OPER(_Left < _Right))
{ // return larger of _Left and _Right
if (_Left < _Right)
{
_STL_ASSERT(!(_Right < _Left), "invalid comparator");
return (_Right);
}
return (_Left);
}
Float values displayed in Debugger:
_Left 5.04023665e-05 const float &
_Right 0.000307894428 const float &
32 bit Int cast of them:
(int)&_Left 944989985 int
(int)&_Right 966880484 int
Cleary there is no reason for the CPU to calculate _Left is smaller than _Right and _Right is smaller than left.
Have you encountered any of this? I post it here because this is where it happened, but it looks more like a compiler or CPU bug. The assembler looks good, it does nothing else than
00007FF7D063F5A5 mov rax,qword ptr [_Left]
00007FF7D063F5AA mov rcx,qword ptr [_Right]
00007FF7D063F5AF movss xmm0,dword ptr [rax]
00007FF7D063F5B3 comiss xmm0,dword ptr [rcx]
00007FF7D063F5B6 ja std::max<float>+3Ah (07FF7D063F5BAh)
00007FF7D063F5B8 jmp std::max<float>+0A5h (07FF7D063F625h)
Where I'd say the comiss can't be that bad.
CPU: i9-9900K
I tried googling this but didn't succeed.
Hi there, this SOUNDS to be a cool project !
I honestly don't know if it's in project goals, but some time ago I discovered a very cool lib called Aurio that "focuses on audio processing, analysis, media synchronization and media retrieval and implements various audio fingerprinting methods".
As this video demonstrates, those algorithms can align (through its GUI called AudioAlign) fingerprinted audios between many tracks.
The drawback is that it has been developed in C# for .NET (Windows-only), so it would be really great to establish some kind of collaboration between projects in order to (finally) obtain a platform-indipendent open source multitrack synchronizer.
Hope that inspires.
Hey Joel,
thank you for this wonderful library, the pitch tracking results it produces are really impressive. I would like to share my experience in setting up the library and tests and the additional steps that I needed to go through in order to make it work on macOS:
/usr/local/Cellar/portmidi/217_2/include
to header search path of libqio, when portmidi.h can not be foundlibportaudio.a
which for me was installed by brew under /usr/local/Cellar/portaudio/19.6.0/lib/libportaudio.a
Hi everyone.
I have a c++ code where I listen to the sound coming from the microphone and get the frequency of the sound. I don't expect it to work perfectly, but I want to find the musical note of the sound coming out of my guitar.
I used miniaudio and q for this. I use Miniaudio for audio io operations.
I will share the code with you.
My questions are:
get_frequency
member function of the pitch_detector
class into normal pitch values?#include <chrono>
#include <csignal>
#include <cstdint>
#include <format>
#include <iostream>
#include <thread>
#include <string>
#define MINIAUDIO_IMPLEMENTATION
#include "miniaudio/miniaudio.h"
#include "q/pitch/pitch_detector.hpp"
#include "q/support/literals.hpp"
namespace q = cycfi::q;
using namespace q::literals;
bool running = false;
std::vector<float> audio_buffer;
void printFreq(const ma_device *dev, void *pUserData)
{
if (audio_buffer.size() < dev->sampleRate * 3) // 3 second buffer
{
return;
}
auto pitch_detector = static_cast<q::pitch_detector *>(pUserData);
bool ok{};
for (const auto &v : audio_buffer)
{
if (! running)
{
return;
}
ok = pitch_detector->operator()(v);
} // val loop
auto per = pitch_detector->periodicity();
if (ok && per > 0.90)
{
auto freq = pitch_detector->get_frequency();
if (freq > 0)
{
std::cout << std::format("Frequency: {}, per: {}\n", freq, per);
}
audio_buffer.clear();
pitch_detector->reset();
} // freq ok if
}
void data_callback(ma_device *pDevice, void *pOutput, const void *pInput,
ma_uint32 frameCount)
{
const auto inputBuffer = static_cast<const float *>(pInput);
if (! running)
{
return;
}
audio_buffer.insert(audio_buffer.end(), inputBuffer,
inputBuffer + frameCount);
printFreq(pDevice, pDevice->pUserData);
}
void signalHandler(int signum)
{
std::cout << "Interrupt signal (" << signum << ") received.\n";
running = false; // stop the main loop
}
int main()
{
q::pitch_detector pitch_detector{q::frequency(50), q::frequency(400), 1,
-45_dB};
ma_device_config device_config =
ma_device_config_init(ma_device_type_capture);
device_config.dataCallback = data_callback;
device_config.capture.format = ma_format_f32;
// device_config.sampleRate = 44100;
device_config.capture.channels = 1;
device_config.pUserData = static_cast<void *>(&pitch_detector);
ma_device device;
device.pUserData = static_cast<void *>(&pitch_detector);
auto result = ma_device_init(NULL, &device_config, &device);
if (result != MA_SUCCESS)
{
std::cerr << std::format("Failed to create miniaudio device: {}\n",
ma_result_description(result));
return EXIT_FAILURE;
}
result = ma_device_start(&device);
if (result != MA_SUCCESS)
{
std::cerr << std::format("Failed to start miniaudio device: {}\n",
ma_result_description(result));
return EXIT_FAILURE;
}
std::cout << std::format("device: {}, sample rate: {}\n",
device.capture.name, device.sampleRate);
running = true;
std::signal(SIGINT, signalHandler);
std::signal(SIGTERM, signalHandler);
std::signal(SIGBREAK, signalHandler);
std::signal(SIGABRT, signalHandler);
while (running)
{
// no block for audio io because running with another thread
std::this_thread::sleep_for(std::chrono::milliseconds(70));
}
std::cout << "done\n";
ma_device_stop(&device);
ma_device_uninit(&device);
return EXIT_SUCCESS;
}
Although I don't think it's right to explain this here, I think it might be useful to share. There is currently no computer application that visually impaired musicians can use to tune their instruments. It's available for iOS and it money (using a mobile device isn't always practical). This is both a learning adventure for me and when something good happens, I want to publish it as a usable, accessible application with a gui toolset like wxWidgets. That's why your help is important :) .
In short, I have an audio_stream
doing some processing and I want to display a waveform in my GUI. Without copying the entire buffer somewhere else during each process()
call, is there a way to read the current buffer of a running audio stream?
Hello,
first, this library is really awesome! It really makes DSP effortless.
I wonder if releases are possible, so that it's easier for developers (and packagers) to refer to a specific version of Q.
This sounds promising - I'm looking to implement phase shifting using your all pass. Let's say I want an 180 shift at a float[] buffer with a sz size:
`
auto ph = cycfi::q::phase(3.1415f);
for (int i = 0 ; i < sz ; i++)
{
auto out = q::sin(ph);
buff[i] += out;
}
`
Does that seem correct?
Thanks.
Hey,
As described earlier through facebook, I'm trying to implement Q_Lib with Juce.
I included search paths for infra and q_lib into an empty Juce Project and included pitch_detector.hpp
into my Juce main class.
A few errors happen after that.
q/support/base.hpp:
The two last functions in the script (abs_within()
, relwithin()
) call std::abs()
. Xcode reports that the call to abs is ambiguous.
I "fixed" it by removing the std::
to make it use the namespace’s own constexpr abs()
… bad fix probably?
q/utility/zero_crossing.hpp:
Doesn’t know type decibel
.
My probably bad fix: included <q/support/decibel.hpp>
into zero_crossing.hpp
After that no more errors in the scripts, but the attached linker errors show up.
What I can read from this is that there are duplicate symbols for the following functions:
count_bits()(in q/detail/count_bits.hpp)
autocorreclate() (in q/pitch/period_detector.hpp)
predict_period() (in q/pitch/period_detector.hpp)
Any idea how I can tackle this? Or am I even the one causing these through my assumingly hacky fixes described above?
Here are the linker errors as reported by Xcode
duplicate symbol __ZN5cycfi1q6detail10count_bitsEy in:
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/MainComponent.o
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/Main.o
duplicate symbol __ZN5cycfi1q15period_detector13autocorrelateEv in:
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/MainComponent.o
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/Main.o
duplicate symbol __ZNK5cycfi1q15period_detector14predict_periodEv in:
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/MainComponent.o
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/Main.o
duplicate symbol __ZN5cycfi1q6detail10count_bitsEj in:
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/MainComponent.o
/Users/benediktsailer/Library/Developer/Xcode/DerivedData/PitchDetection-cftahhuurjbgrrfhpqyoqkkcntwm/Build/Intermediates.noindex/PitchDetection.build/Debug/PitchDetection - App.build/Objects-normal/x86_64/Main.o
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
When trying to run cmake get the following error:
CMake Error at CMakeLists.txt:15 (add_subdirectory):
add_subdirectory given source "../infra" which is not an existing
directory.
It looks like the infra library is missing from the repo.
While working on integrating this into a Vamp plugin xavriley/bitstream_autocorrelation_vamp#1 I've found that some values for low and high pitch appear to work whereas other values cause the output to be empty.
All the values I've tested are within four octaves of each other and I've not seen runtime errors so I don't think that is the issue.
For example, running the code linked in the issue above with a lower limit of 100Hz and an upper limit of 800Hz I get the following output:
$ make -f Makefile.osx && VAMP_PATH=. ~/Downloads/vamp-plugin-sdk-2.9.0-binaries-macos/vamp-simple-host qlib_pitch:qlib_pitch ./Q/test/audio_files/sin_440.wav
c++ -o qlib_pitch.dylib QlibPitch.o plugins.o -mmacosx-version-min=10.7 -arch x86_64 -stdlib=libc++ -dynamiclib -exported_symbols_list vamp-plugin.list ../vamp-plugin-sdk/libvamp-sdk.a
vamp-simple-host: Running...
Reading file: "./Q/test/audio_files/sin_440.wav", writing to standard output
Running plugin: "qlib_pitch"...
Using block size = 1024, step size = 1024
Plugin accepts 1 -> 1 channel(s)
Sound file has 1 (will mix/augment if necessary)
Output is: "frequency"
0.000000000: 439.963
0.023219955:
0.046439909:
0.069659864:
0.092879819:
0.116099773:
0.139319728:
The 439.963
suggests this is working.
If I run the same code with a lower limit of 64Hz and an upper limit of 512Hz I get no output
$ make -f Makefile.osx && VAMP_PATH=. ~/Downloads/vamp-plugin-sdk-2.9.0-binaries-macos/vamp-simple-host qlib_pitch:qlib_pitch ./Q/test/audio_files/sin_440.wav
make: `qlib_pitch.dylib' is up to date.
vamp-simple-host: Running...
Reading file: "./Q/test/audio_files/sin_440.wav", writing to standard output
Running plugin: "qlib_pitch"...
Using block size = 1024, step size = 1024
Plugin accepts 1 -> 1 channel(s)
Sound file has 1 (will mix/augment if necessary)
Output is: "frequency"
0.000000000:
0.023219955:
0.046439909:
0.069659864:
0.092879819:
0.116099773:
0.139319728:
I will continue to look into this but I'd be interested if you have any idea why this might be happening?
Due to the SIGSTKSZ and MINSIGSTKSZ macros being redefined in newer versions of glibc, some header files pulled in from infra fail to compile.
Build log:
[ 0%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_common/portmidi.c.o
[ 1%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_common/pmutil.c.o
[ 2%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/porttime/porttime.c.o
[ 3%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/porttime/ptlinux.c.o
[ 4%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_linux/finddefault.c.o
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c: In function ‘skip_spaces’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c:16:12: warning: implicit declaration of function ‘isspace’ [-Wimplicit-function-declaration]
16 | while (isspace(c = getc(inf))) ;
| ^~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c:9:1: note: include ‘<ctype.h>’ or provide a declaration of ‘isspace’
8 | #include "portmidi.h"
+++ |+#include <ctype.h>
9 |
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c: In function ‘find_default_device’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/finddefault.c:84:13: warning: implicit declaration of function ‘pm_find_default_device’; did you mean ‘find_default_device’? [-Wimplicit-function-declaration]
84 | i = pm_find_default_device(pref_str, input);
| ^~~~~~~~~~~~~~~~~~~~~~
| find_default_device
[ 5%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_linux/pmlinux.c.o
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinux.c: In function ‘pm_init’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinux.c:45:34: warning: implicit declaration of function ‘find_default_device’; did you mean ‘pm_find_default_device’? [-Wimplicit-function-declaration]
45 | pm_default_input_device_id = find_default_device(
| ^~~~~~~~~~~~~~~~~~~
| pm_find_default_device
[ 6%] Building C object q_io/external/portmidi/CMakeFiles/portmidi.dir/pm_linux/pmlinuxalsa.c.o
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘alsa_out_open’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:36:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
36 | #define GET_DESCRIPTOR_CLIENT(info) ((((int)(info)) >> 8) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:151:20: note: in expansion of macro ‘GET_DESCRIPTOR_CLIENT’
151 | desc->client = GET_DESCRIPTOR_CLIENT(client_port);
| ^~~~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:37:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
37 | #define GET_DESCRIPTOR_PORT(info) (((int)(info)) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:152:18: note: in expansion of macro ‘GET_DESCRIPTOR_PORT’
152 | desc->port = GET_DESCRIPTOR_PORT(client_port);
| ^~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘alsa_in_open’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:36:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
36 | #define GET_DESCRIPTOR_CLIENT(info) ((((int)(info)) >> 8) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:293:20: note: in expansion of macro ‘GET_DESCRIPTOR_CLIENT’
293 | desc->client = GET_DESCRIPTOR_CLIENT(client_port);
| ^~~~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:37:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
37 | #define GET_DESCRIPTOR_PORT(info) (((int)(info)) & 0xff)
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:294:18: note: in expansion of macro ‘GET_DESCRIPTOR_PORT’
294 | desc->port = GET_DESCRIPTOR_PORT(client_port);
| ^~~~~~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘alsa_write_flush’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:436:52: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
436 | VERBOSE printf("snd_seq_drain_output: 0x%x\n", (unsigned int) seq);
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c: In function ‘pm_linuxalsa_init’:
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:35:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
35 | #define MAKE_DESCRIPTOR(client, port) ((void*)(((client) << 8) | (port)))
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:750:31: note: in expansion of macro ‘MAKE_DESCRIPTOR’
750 | MAKE_DESCRIPTOR(snd_seq_port_info_get_client(pinfo),
| ^~~~~~~~~~~~~~~
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:35:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
35 | #define MAKE_DESCRIPTOR(client, port) ((void*)(((client) << 8) | (port)))
| ^
/home/aaron/Source/q/q_io/external/portmidi/pm_linux/pmlinuxalsa.c:760:31: note: in expansion of macro ‘MAKE_DESCRIPTOR’
760 | MAKE_DESCRIPTOR(snd_seq_port_info_get_client(pinfo),
| ^~~~~~~~~~~~~~~
[ 6%] Linking C static library libportmidi.a
[ 6%] Built target portmidi
[ 7%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_allocation.c.o
[ 7%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_converters.c.o
[ 8%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_cpuload.c.o
[ 9%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_debugprint.c.o
[ 10%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_dither.c.o
[ 11%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_front.c.o
[ 12%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_process.c.o
[ 13%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_ringbuffer.c.o
[ 14%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_stream.c.o
[ 14%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/common/pa_trace.c.o
[ 15%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/hostapi/skeleton/pa_hostapi_skeleton.c.o
[ 16%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/os/unix/pa_unix_hostapis.c.o
[ 17%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/os/unix/pa_unix_util.c.o
[ 18%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/hostapi/jack/pa_jack.c.o
[ 19%] Building C object q_io/external/portaudio/CMakeFiles/portaudio_static.dir/src/hostapi/alsa/pa_linux_alsa.c.o
[ 20%] Linking C static library libportaudio.a
[ 20%] Built target portaudio_static
[ 20%] Building CXX object q_io/CMakeFiles/libqio.dir/src/audio_file.cpp.o
[ 21%] Building CXX object q_io/CMakeFiles/libqio.dir/src/audio_device.cpp.o
[ 22%] Building CXX object q_io/CMakeFiles/libqio.dir/src/audio_stream.cpp.o
[ 23%] Building CXX object q_io/CMakeFiles/libqio.dir/src/midi_device.cpp.o
[ 24%] Building CXX object q_io/CMakeFiles/libqio.dir/src/midi_stream.cpp.o
[ 25%] Linking CXX static library liblibqio.a
[ 25%] Built target libqio
[ 26%] Building CXX object example/CMakeFiles/example_list_devices.dir/list_devices.cpp.o
[ 26%] Linking CXX executable example_list_devices
[ 26%] Built target example_list_devices
[ 27%] Building CXX object example/CMakeFiles/example_sin_synth.dir/sin_synth.cpp.o
[ 28%] Linking CXX executable example_sin_synth
[ 28%] Built target example_sin_synth
[ 29%] Building CXX object example/CMakeFiles/example_square_synth.dir/square_synth.cpp.o
[ 30%] Linking CXX executable example_square_synth
[ 30%] Built target example_square_synth
[ 31%] Building CXX object example/CMakeFiles/example_delay.dir/delay.cpp.o
[ 32%] Linking CXX executable example_delay
[ 32%] Built target example_delay
[ 33%] Building CXX object example/CMakeFiles/example_io_delay.dir/io_delay.cpp.o
[ 34%] Linking CXX executable example_io_delay
[ 34%] Built target example_io_delay
[ 35%] Building CXX object example/CMakeFiles/example_midi_monitor.dir/midi_monitor.cpp.o
[ 36%] Linking CXX executable example_midi_monitor
[ 36%] Built target example_midi_monitor
[ 36%] Building CXX object example/CMakeFiles/example_biquad_filters.dir/biquad_filters.cpp.o
[ 37%] Linking CXX executable example_biquad_filters
[ 37%] Built target example_biquad_filters
[ 37%] Building CXX object test/CMakeFiles/test_bitset.dir/bitset.cpp.o
In file included from /usr/include/signal.h:328,
from /home/aaron/Source/q/infra/include/infra/catch.hpp:7712,
from /home/aaron/Source/q/test/bitset.cpp:7:
/home/aaron/Source/q/infra/include/infra/catch.hpp:10453:58: error: call to non-‘constexpr’ function ‘long int sysconf(int)’
10453 | static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
| ^~~~~~~~~~~
In file included from /usr/include/bits/sigstksz.h:24,
from /usr/include/signal.h:328,
from /home/aaron/Source/q/infra/include/infra/catch.hpp:7712,
from /home/aaron/Source/q/test/bitset.cpp:7:
/usr/include/unistd.h:640:17: note: ‘long int sysconf(int)’ declared here
640 | extern long int sysconf (int __name) __THROW;
| ^~~~~~~
In file included from /home/aaron/Source/q/test/bitset.cpp:7:
/home/aaron/Source/q/infra/include/infra/catch.hpp:10512:45: error: size of array ‘altStackMem’ is not an integral constant-expression
10512 | char FatalConditionHandler::altStackMem[sigStackSize] = {};
| ^~~~~~~~~~~~
make[2]: *** [test/CMakeFiles/test_bitset.dir/build.make:76: test/CMakeFiles/test_bitset.dir/bitset.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:591: test/CMakeFiles/test_bitset.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
hi there, not really an issue... i am interested in porting/implementing your pitch detection method and possibly the onset detector to axoloti (a dsp platform) i can read and understand a little c code, but i am a bit lost with your code :-) is one of the files here already a working pitch extraction example? or is this just the library? thanks for your work!
Hello! I've tried out the q library for hardware pitchtracking on a Bela. It works very well! As of now I'm simply calling the operator and subsequently "get_frequency" every time the operator returns true.
I'm curious to the structure of the pitch_detector.hpp and the public member functions.
Some things are not clear to me.
What are the purpose of the different functions? How and when should they be called? If they return something, what is the expected range (for example periodicity)?
A more general description would be much aprreciated. Here are some more specific questions I have:
Grateful for any response <3
This project looks great. There haven't been any commits in a few months so I wanted to first ask if this project is still in development? If so, are you looking for contributors? Finally, if you are open to help, is there any area in particular?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.