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()
.
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.
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.
drumstick-2.9.0
It has been ported to FreeBSD.
If the SMF file contains a system exclusive message, followed by a channel message that uses the running status, an error occurs.
The error is output with a large number of lines as follows.
*** Warning! Unexpected byte ( b) at 39677 at file offset 39678
*** Warning! Unexpected byte ( 0) at 39679 at file offset 39680
*** Warning! Unexpected byte ( 5) at 39681 at file offset 39682
*** Warning! Unexpected byte ( b) at 39683 at file offset 39684
*** Warning! Unexpected byte ( 8) at 39685 at file offset 39686
*** Warning! Unexpected byte ( 7) at 39687 at file offset 39688
*** Warning! Unexpected byte ( b) at 39689 at file offset 39690
*** Warning! Unexpected byte ( 8) at 39691 at file offset 39692
*** Warning! Unexpected byte ( 9) at 39693 at file offset 39694
*** Warning! Unexpected byte ( b) at 39695 at file offset 39696
Applying a patch like the one in the following attachment would be a workaround for it.
patch.txt
The patch also includes an offset fix that would have skipped a bad message if it was included in the file.
FluidSynth supports more than one soundfont at the same time, but the FluidSynth settings dialog accepts only one.
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.
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.
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.