fix linux builds
This commit is contained in:
@@ -13,14 +13,14 @@ if (WIN32) # windows 11 x86_64
|
||||
set_target_properties(RtAudio::rtaudio PROPERTIES
|
||||
IMPORTED_LOCATION "${RtAudio_ROOT}/bin/rtaudio.dll"
|
||||
IMPORTED_IMPLIB "${RtAudio_ROOT}/lib/rtaudio.lib"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${RtAudio_ROOT}/include/rtaudio"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${RtAudio_ROOT}/include"
|
||||
)
|
||||
|
||||
add_library(RtMidi::rtmidi SHARED IMPORTED)
|
||||
set_target_properties(RtMidi::rtmidi PROPERTIES
|
||||
IMPORTED_LOCATION "${RtMidi_ROOT}/bin/rtmidi.dll"
|
||||
IMPORTED_IMPLIB "${RtMidi_ROOT}/lib/rtmidi.lib"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${RtMidi_ROOT}/include/rtmidi"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${RtMidi_ROOT}/include"
|
||||
)
|
||||
|
||||
add_library(yaml-cpp SHARED IMPORTED)
|
||||
@@ -31,14 +31,13 @@ if (WIN32) # windows 11 x86_64
|
||||
)
|
||||
|
||||
else() # debian 12 x86_64
|
||||
#find_package(PkgConfig REQUIRED)
|
||||
#pkg_check_modules(RTAUDIO REQUIRED rtaudio)
|
||||
#pkg_check_modules(RTMIDI REQUIRED rtmidi)
|
||||
#pkg_check_modules(YAMLCPP REQUIRED yaml-cpp)
|
||||
|
||||
find_package(rtaudio)
|
||||
find_package(rtmidi)
|
||||
find_package(yaml-cpp)
|
||||
find_package(RtAudio REQUIRED)
|
||||
find_package(RtMidi REQUIRED)
|
||||
find_package(yaml-cpp REQUIRED)
|
||||
|
||||
get_target_property(RTMIDI_INCLUDES RtMidi::rtmidi INTERFACE_INCLUDE_DIRECTORIES)
|
||||
message(STATUS "RtMidi includes: ${RTMIDI_INCLUDES}")
|
||||
|
||||
endif()
|
||||
|
||||
@@ -95,9 +94,12 @@ target_include_directories(metabolus PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/src/ui/widgets
|
||||
)
|
||||
|
||||
# some extra cross platform business
|
||||
if (WIN32)
|
||||
|
||||
target_compile_options(metabolus PUBLIC "/Zc:__cplusplus")
|
||||
else()
|
||||
target_compile_options(metabolus PRIVATE ${RTAUDIO_CFLAGS_OTHER})
|
||||
endif()
|
||||
|
||||
target_link_libraries(metabolus
|
||||
PRIVATE
|
||||
@@ -106,9 +108,3 @@ if (WIN32)
|
||||
yaml-cpp
|
||||
Qt6::Widgets
|
||||
)
|
||||
|
||||
else()
|
||||
target_include_directories(metabolus PRIVATE ${RTAUDIO_INCLUDE_DIRS} ${RTMIDI_INCLUDE_DIRS} ${YAMLCPP_INCLUDE_DIRS})
|
||||
target_link_libraries(metabolus PRIVATE Qt6::Widgets ${RTAUDIO_LIBRARIES} ${RTMIDI_LIBRARIES} ${YAMLCPP_LIBARIES})
|
||||
target_compile_options(metabolus PRIVATE ${RTAUDIO_CFLAGS_OTHER})
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
|
||||
cmake -S . -B build -G Ninja \
|
||||
-DCMAKE_PREFIX_PATH=build/lib
|
||||
PROJECT_ROOT=${PWD}
|
||||
BUILD_DIR=${PROJECT_ROOT}/build
|
||||
LIB_ROOT=${BUILD_DIR}/lib
|
||||
|
||||
# libraries
|
||||
RTAUDIO_ROOT=${LIB_ROOT}/rtaudio
|
||||
RTMIDI_ROOT=${LIB_ROOT}/rtmidi
|
||||
YAMLCPP_ROOT=${LIB_ROOT}/yaml-cpp
|
||||
|
||||
cmake -S . -B ${BUILD_DIR} -G Ninja \
|
||||
-DRtAudio_DIR="${RTAUDIO_ROOT}/share/rtaudio" \
|
||||
-DRtMidi_DIR="${RTMIDI_ROOT}/share/rtmidi" \
|
||||
-Dyaml-cpp_DIR="${YAMLCPP_ROOT}/lib/cmake/yaml-cpp"
|
||||
|
||||
cmake --build build
|
||||
|
||||
@@ -23,6 +23,7 @@ mkdir ${BUILD_LIB_DIR}/rtmidi -p
|
||||
cd ${PROJECT_ROOT}/lib/rtmidi
|
||||
cmake -S . -B build -G Ninja \
|
||||
-DRTMIDI_BUILD_SHARED_LIBS=ON \
|
||||
-DRTMIDI_API_ALSA=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
cmake --install build --prefix ${BUILD_LIB_DIR}/rtmidi
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
MidiController::MidiController(NoteQueue& queue) : noteQueue_(queue) {
|
||||
try {
|
||||
midiIn_ = std::make_unique<RtMidiIn>();
|
||||
midiIn_ = std::make_unique<RtMidiIn>(RtMidi::LINUX_ALSA);
|
||||
midiIn_->ignoreTypes(false, false, false);
|
||||
} catch (RtMidiError& e) {
|
||||
std::cout << "RtMidi init failed: " << e.getMessage() << std::endl;
|
||||
@@ -18,14 +18,23 @@ MidiController::~MidiController() {
|
||||
close();
|
||||
}
|
||||
|
||||
// this dont work too well but whatever
|
||||
// open the first for thats successful
|
||||
bool MidiController::openDefaultPort() {
|
||||
if (!midiIn_) return false;
|
||||
if (midiIn_->getPortCount() == 0) {
|
||||
std::cout << "No MIDI input ports available" << std::endl;
|
||||
return false;
|
||||
}
|
||||
return openPort(0);
|
||||
|
||||
uint32_t portCount = midiIn_->getPortCount();
|
||||
std::cout << "Available MidiIn ports: " << portCount << std::endl;
|
||||
for (int i = 0; i < portCount; i++) {
|
||||
std::cout << "#" << i << " : " << midiIn_->getPortName(i) << std::endl;
|
||||
|
||||
if(openPort(i)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MidiController::openPort(unsigned int index) {
|
||||
@@ -37,6 +46,7 @@ bool MidiController::openPort(unsigned int index) {
|
||||
std::cout << "Opened MIDI port: " << midiIn_->getPortName(index) << std::endl;
|
||||
return true;
|
||||
} catch (RtMidiError& e) {
|
||||
std::cout << "Midi Port error" << std::endl;
|
||||
std::cerr << e.getMessage() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <RtMidi.h>
|
||||
#include <rtmidi/RtMidi.h>
|
||||
#include <memory>
|
||||
#include "NoteQueue.h"
|
||||
#include <unordered_set>
|
||||
|
||||
@@ -115,7 +115,8 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
|
||||
// midi
|
||||
#ifndef _WIN32
|
||||
midi_.openPort(1); // TODO: error check
|
||||
//midi_.openDefaultPort(); // TODO: error check
|
||||
midi_.openPort(1);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user