pedrolcl / drumstick Goto Github PK
View Code? Open in Web Editor NEWDrumstick Qt/C++ MIDI libraries (Mirror)
Home Page: https://sourceforge.net/projects/drumstick/
License: GNU General Public License v3.0
Drumstick Qt/C++ MIDI libraries (Mirror)
Home Page: https://sourceforge.net/projects/drumstick/
License: GNU General Public License v3.0
The back-end plugins may have a function to store the settings, without needing the help of the configuration dialogs provided by drumstick::widgets
. This is needed to store a full set of settings in RT projects, like VMPK.
public slot:
void writeSettings(QSettings *settings);
This method would not be part of the interfaces before Drumstick-3, and could be called only by QMetaObject::invoke()
.
The Windows RT Input backend does not support sysex events.
raised by @santoxyz in SF
PR #20 shows that the current workflow (building and testing only on Linux) is not enough.
Another build&test workflow for Windows should be added, using MinGW and/or MSVC.
I'm struggling to compile this on Arch Linux against Qt6. As soon as I run cmake with -DUSE_QT=6
, make VERBOSE=1
fails with the following errors:
[ 38%] Linking CXX shared library libmp_svoxeas.so
cd /home/bevan/git/multiplatform-sonivoxeas/libsvoxeas && /usr/bin/cmake -E cmake_link_script CMakeFiles/mp_svoxeas.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -shared -Wl,-soname,libmp_svoxeas.so.2 -o libmp_svoxeas.so.2.1.0 CMakeFiles/mp_svoxeas.dir/mp_svoxeas_autogen/mocs_compilation.cpp.o CMakeFiles/mp_svoxeas.dir/programsettings.cpp.o CMakeFiles/mp_svoxeas.dir/synthcontroller.cpp.o CMakeFiles/mp_svoxeas.dir/synthrenderer.cpp.o CMakeFiles/mp_svoxeas.dir/filewrapper.cpp.o /usr/lib/libsonivox.so.3.6.12.0 /usr/lib/libQt6Multimedia.so.6.5.1 /usr/lib/libdrumstick-rt.so.2.7.2 /usr/lib/libQt6Gui.so.6.5.1 /usr/lib/libGLX.so /usr/lib/libOpenGL.so /usr/lib/libQt6Network.so.6.5.1 /usr/lib/libQt6Core.so.6.5.1
/usr/bin/ld: CMakeFiles/mp_svoxeas.dir/synthrenderer.cpp.o: warning: relocation against `_ZN9drumstick2rt9MIDIInput10midiNoteOnEiii' in read-only section `.text'
/usr/bin/ld: CMakeFiles/mp_svoxeas.dir/synthrenderer.cpp.o: in function `SynthRenderer::SynthRenderer(QObject*)':
synthrenderer.cpp:(.text+0x6a): undefined reference to `drumstick::rt::BackendManager::BackendManager()'
/usr/bin/ld: synthrenderer.cpp:(.text+0x11b): undefined reference to `drumstick::rt::BackendManager::~BackendManager()'
/usr/bin/ld: CMakeFiles/mp_svoxeas.dir/synthrenderer.cpp.o: in function `SynthRenderer::~SynthRenderer()':
synthrenderer.cpp:(.text+0xccb): undefined reference to `drumstick::rt::BackendManager::~BackendManager()'
/usr/bin/ld: CMakeFiles/mp_svoxeas.dir/synthrenderer.cpp.o: in function `SynthRenderer::setMidiDriver(QString)':
synthrenderer.cpp:(.text+0x15ec): undefined reference to `drumstick::rt::BackendManager::inputBackendByName(QString)'
/usr/bin/ld: synthrenderer.cpp:(.text+0x162b): undefined reference to `drumstick::rt::MIDIInput::midiNoteOn(int, int, int)'
/usr/bin/ld: CMakeFiles/mp_svoxeas.dir/synthrenderer.cpp.o: relocation R_X86_64_PC32 against undefined protected symbol `_ZN9drumstick2rt9MIDIInput10midiNoteOnEiii' can not be used when making a shared object
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [libsvoxeas/CMakeFiles/mp_svoxeas.dir/build.make:169: libsvoxeas/libmp_svoxeas.so.2.1.0] Error 1
Interestingly, version 2.0.0 with d2c95011c90ebacd168b74becf6c1ac83054f910 backported fails with the same error. In January, this built without problems on Arch. So I have a feeling that it could be related to the update to Qt 6.5.1. In January, this was still 6.4.1.
Do you have any idea what could cause this?
While processing library/alsa stuff, new drumstick sources (2.8.0) fail to build here (gcc 11.2.0, x86_64), with multiple "macro names must be identifiers" errors (see attached full log of a failed build).
BuildError.txt.
By looking at one failed command line, I noticed a definition looking suspect ("-D-DRTKIT_SUPPORT"): it looks like a spurious "-"...
Indeed, changing the line 26 in the CMakeLists.txt file for library/alsa from "$<$BOOL:${HAVE_DBUS}:-DRTKIT_SUPPORT>" to "$<$BOOL:${HAVE_DBUS}:DRTKIT_SUPPORT>" (ie removing the stray "-" before DRKIT_SUPPORT) it completely fixes the issue.
https://doc.qt.io/qt-6/signalsandslots.html#signals-and-slots-in-qt-based-libraries
The public API of Qt-based libraries should use the macros Q_SIGNALS and Q_SLOTS instead of signals and slots. Otherwise it is hard to use such a library in a project that defines QT_NO_KEYWORDS.
To enforce this restriction, the library creator may set the preprocessor define QT_NO_SIGNALS_SLOTS_KEYWORDS when building the library.
While the SettingsFactory class has an static function SettingsFactory::setFileName(), it does not provide a SettingsFactory::fileName() function to read the static member. While we are on it, provide also a SettingsFactory::format() function as well.
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.