Removed unused variable volumeHandles in
PianoRoll::computeSelectedNotes(bool) which as a side-effect also fixes
/usr/include/qt4/QtCore/qvector.h: In member function ‘void PianoRoll::computeSelectedNotes(bool)’:
/usr/include/qt4/QtCore/qvector.h:421: warning: dereferencing pointer ‘<anonymous>’ does break strict-aliasing rules
/usr/include/qt4/QtCore/qvector.h:114: note: initialized from here
(cherry picked from commit 24353ca248)
Do not use private m_pitchModel member variable of InstrumentTrack even
if NotePlayHandle is a friend class. Instead use the already existing
InstrumentTrack::pitchModel() method.
(cherry picked from commit 9dcb62c630)
This commit fixes some calls to functions that are taking a format
string and an optional set of parameters as arguments. At some places
no format string was specified if only a simple C string was to be
sprintf()ed. However for security reasons this is bad and was replaced
by code like
sprintf( dest, "%s", str );
(cherry picked from commit af284e980f)
Make progress dialog when loading project a proper sub-window of LMMS
by passing main window as parent to constructor of QProgressDialog.
Fixes default window icon and additional taskbar item.
(cherry picked from commit 6929caa777)
Added new stringPairDrag type "pluginpresetfile", allowing to drag
and drop any kind of plugin-specific preset files everywhere in the
program. Adopted changes in ZynAddSubFX plugin.
(cherry picked from commit ccb65f4b40)
For each model but the tempoSyncKnobModel the name property was properly
passed to the according constructor. This made time-based knobs in LADSPA
effects have no internal name, e.g. there were blank captions in the
knob's context menu or empty titles when used in combination with
automation patterns.
(cherry picked from commit ebd3d26531)
Depending on whether VST effect has an editor return 1 or 0 in
VstEffectControls::getControlCount(). This prevents the EffectView in
the effect rack from showing a "Controls" button and creating an empty
subwindow.
(cherry picked from commit 3a4ae3a434)
Added inline method hasEditor() with returns true or false depending on
whether the class received a window ID from the remote plugin.
(cherry picked from commit 044d671471)
Do not add empty subwindows for effects that do not have a control
dialog at all (i.e. Effect::getControlCount() == 0). Also check whether
creation of control dialog was successful. Fixes possible crashes if
something went wrong with the effect (e.g. loading VST effect failed).
(cherry picked from commit 9cced2957c)
When closing an InstrumentTrackWindow make sure it doesn't still have
keyboard focus (looks like a bug in Qt) and set focus on
trackLabelButton instead (closes#2780590).
(cherry picked from commit 12d26ed0aa)
When closing a InstrumentTrackWindow save its position so it can be
restored later when showing it. Fixes windows always popping up
somewhere else when toggling instrument track button repeatedly.
(cherry picked from commit 232c1de404)
Do not lock up after rendering project by calling waitForInitDone()
on our own (instead of in RemotePlugin constructor) with busy waiting
disabled.
(cherry picked from commit 75382de976)
An additional parameter to waitForInitDone() allows to disable busy
waiting which could be desired in various places to avoid deadlocks.
(cherry picked from commit 1802b91e55)
Create an own RemotePlugin object rather than inheriting from it.
This allows to restart ZASF RemotePlugin which for example is required
upon samplerate changes (closes#2626249).
Furthermore this commit cleans up some old unused stuff.
(cherry picked from commit dfab704100)
Made RemotePlugin::lock() and RemotePlugin::unlock() public allowing
to use RemotePlugin class without subclassing it.
(cherry picked from commit 7200eb8158)
Always send MIDI pitch bend events to MIDI channel 0 for the time being.
Makes MIDI pitch wheel work with ZynAddSubFX.
(cherry picked from commit 9873b880e2)
When loading external XIZ presets, the embedded ZynAddSubFX plugin didn't
apply them completely so it did not save them properly later. This made
ZASF instruments play the default preset when loading the LMMS project
later. Now presets properly get applied to the selected instrument part.
(cherry picked from commit 7a176c8fbb)
Embedded ZynAddSubFX plugin now is considered to be mature enough to
be part of the stable-0.4 series. This eases builds for everyone as well
as cutting down maintainance work dramatically as we can easily
cherry-pick fixes from master branch now.
When starting LMMS, loading an existing project and opening a pattern
with notes inside in piano roll, moving single notes showed unexpected
behaviour, i.e. the according note has been moved somewhere unreachable.
I tracked this down to a missing initialization of m_moveBoundary*
variables. Adding a few lines fixes the issue (closes#2632909).
(cherry picked from commit efb335cea7)
This patch enables the usage of PC keyboard for playing instrument piano
or piano roll on OS X by evaluating nativeVirtualKey rather than
nativeScanCode.
(cherry picked from commit 6f0388be7c)
Up to now there were insufficient checks whether the remote plugin
has died and so the result usually has been a complete lock-up of LMMS
(especially when using buggy VST plugins or similiar). By adding
according checks to remotePlugin::lock() and remotePlugin::unlock()
as well as remotePluginBase::waitForMessage() those lock-ups are gone.
(cherry picked from commit 656b195cfd)
This commit allows the user to drag'n'drop DLL files onto VeSTige
instrument. Furthermore VeSTige now registers itself as handler for
loading DLL files.
(cherry picked from commit 1b77346ded)
Added file type VstPluginFile in order to allow loading DLL files by
an according plugin directly from file browser.
(cherry picked from commit e0d352dc2c)
Try to load all shared libraries before resolving any symbols. Fixes
problems with plugins that are linked against other shared libraries
located in LMMS' plugin directory.
(cherry picked from commit 9a4b4f3cfe)
InstrumentTrack::midiPitch() returned 16384 instead of 16383 if pitch
was set to +100 cents. This commit fixes the calculation.
(cherry picked from commit 76662a3a51)
With newer versions of wineg++ (1.1) errorneously adds the suffix ".exe"
to the target binary. This causes "make install" to fail. Therefore
rename remote_vst_plugin.exe if it exists.
(cherry picked from commit 69ff06e1b9)
Removed obsolete warning about setting realtime. It's neither important
nor will calling printf()/fprintf() in a RemotePlugin print anything in
LMMS' console output.
(cherry picked from commit 337afffbf1)
Removed the newline character at the end of the uniqueID array, decreased
array size to 5 and initialize last element with 0 after sprintf() call.
(cherry picked from commit 7d1a357076)
Global master pitch wasn't taken into account correctly when calculating
master key of a given key. Made MIDI based instruments behave in the
opposite direction regarding pitch when changing global master pitch.
Thanks to Skiessi for pointing out this issue.
(cherry picked from commit 6e30ae3369)
For some reason, building remote_vst_plugin.cpp with recent
wineg++/gcc-multilib on 64 bit platforms causes undefined symbols:
remote_vst_plugin-JzpHs6.o: In function `std::list<VstMidiEvent, std::allocator<VstMidiEvent> >::_M_insert(std::_List_iterator<VstMidiEvent>, VstMidiEvent const&)':
remote_vst_plugin.cpp:(.text._ZNSt4listI12VstMidiEventSaIS0_EE9_M_insertESt14_List_iteratorIS0_ERKS0_[std::list<VstMidiEvent, std::allocator<VstMidiEvent> >::_M_insert(std::_List_iterator<VstMidiEvent>, VstMidiEvent const&)]+0x35): undefined reference to `std::_List_node_base::hook(std::_List_node_base*)'
Replacing std::list with std::vector for queueing MIDI events seems to
fix this issue. Consider this as a workaround rather than constructive fix.
(cherry picked from commit c0ff1aa95c)
This commit fixes lockup of the whole audio engine as soon as LMMS'
JACK backend got zombified due to longer delays (e.g. when audio engine
is blocked while loading a project). Restart JACK backend in such cases
and show an according message to the user.
Furthermore this commit includes various cleanups and improvements.
(cherry picked from commit b4e38e3978)
Due to optimizations in the graphics subsystem of Qt 4.5
songEditor::paintEvent() didn't get called regularly anymore and thus
the range of the horizontal scrollbar didn't get updated at all.
This commit makes the GUI track all changes related to the length of
the song.
(cherry picked from commit ff010da5ee)
Updated 3rdparty libsamplerate to version 0.1.7 and bumped requirement
to system's libsamplerate to version 0.1.7.
Besides minor stuff, version 0.1.7 has one important fix:
* src/src_sinc.c
Fix a segfault which occurs when memcpy is passed a bad length parameter.
This bug has zero security implications beyond the ability to cause a
program hitting this bug to exit immediately with a segfault.
(cherry picked from commit ca5588f747)
Up to now changes of samplerate or tempo only have been tracked by the
VeSTige plugin while e.g. the VstEffect didn't forward such changes to the
RemotePlugin. Moving according code from VeSTige to VstPlugin base class
fixes this issue.
(cherry picked from commit 5dd68ea7f3)
In VstEffect constructor set the displayName property in order to make
EffectView display actual plugin name rather than just "VST Effect".
(cherry picked from commit dce6ae9a7d)
As of acaaea8204 a samplerate dependent
ratio has been added into calculation of the local phase. This however is
wrong for PM.
(cherry picked from commit 2547bf8d57)
Most of the MDA VST plugins require the SplittedThreading model in order
to run properly. All plugins whose unique ID starts with "mda" will be
driven with the SplittedThreading model.
(cherry picked from commit 96fb6f5a38)
As of ee9e5680b7, LADSPA effect plugins access
ControllerConnection class. We therefore need to export its symbols.
(cherry picked from commit dc7cc064ce)
When doing FM/PM, the value of sub-oscillator is globally/locally added to
phase. However when doing this, a ratio between fixed default samplerate and
actual samplerate needs to be taken into account in the phase calculation.
This commit fixes missounding render output when rendering projects with
FM/PM inside at higher samplerates. (Thanks to Skiessi for his ladspa2.mmpz
which clearly brought up this bug)
(cherry picked from commit acaaea8204)
When global samplerate changes, settings of a LADSPA effect are stored in
a temporary object, the effect is reloaded and the settings are restored.
However, controller connections weren't restored properly as the connections
were not finalized. This commit fixes the issue.
(cherry picked from commit ee9e5680b7)