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