We now also maintain information about playback time in order to display
it later.
Most of the code provided by Rubén Ibarra Pastor <pastorrub/at/msn/dot/com>.
Further improvements by Raine M. Ekman <raine/at/iki/dot/fi>.
The ALSA sequencer interface is not reentrant and thus we can't queue
MIDI events for output from different threads (which happens with multicore
rendering as processOutEvent() is being called by individual note play
handles). We therefore have to care that we don't call the ALSA sequencer
functions concurrently.
Thanks to Benjamin Kusch for providing a testcase.
Closes#531.
As controller connections are not fully restored via
AutomatableModel::loadSettings(), a call to
ControllerConnection::finalizeConnections() is neccessary to do so.
Normally this function is called at the end when loading a project but
when the user just toggles ZASF's UI settings are saved/loaded without
finalizing connections which results in connected knobs which are not
reacting to the controller they are connected to.
Closes#544.
As libsndfile does not seem to have an UTF8-compatible implementation
on Windows we have to pass the filename as local 8 bit encoding in order
to make the file written properly.
Closes#530.
When attaching a control object to an AutomationPattern initialize the
value at position 0 with the current value of the control object.
This is similiar to the behaviour found in LMMS < 0.4.14 and has been
reintroduced as requested by some users.
Closes#535.
AudioFileProcessorWaveView::slideSampleByFrames() gets called before the
knobs are created and/or after they are destroyed if the sample is
reversed. Added checks for nonexistant knobs.
Closes Patch #41 and Bug #525.
In commit a3abcdb2e0 we introduced
multitimbral MIDI support. However the new code path causes the mixer
not being unlocked at exit and thus causes a freeze of LMMS.
Thanks to nuio for pointing out this issue and providing a patch.
Closes#532.
It seems 64bit builds for some reason have problems with VST Sync feature on,
workaround seems to be converting VST sync patch from double to floats,
which does work both with 32 and 64bit builds. Double precision
seems to produce odd numbers with 64bit build. (tested on VirtualBox Linux
Mint 14.1 64 bit OS)
(cherry picked from commit 011f87e6e60cccd16f3783e9c4885e03d95c1e56)
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Folowing change should ensure VST effect is opened just once, once
loaded from project file.
Double opening seems to trace back to commit 184ddc4d1c
from 2006, when this VST effect save / load feature was introduced as new.
Anyway VST effect parameters seems to load corectly in
VstEffectControls::loadSettings, from project file even without double
VST effect opening.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This patch will set plugin name (information which is not stored with lmms
project file) according plugin file, without *.dll, when is LMMS project
loaded from the file.
Future verion could maybe use PluginBrowser or EffectSellectDialog for the
same.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This patch should bring VST to host synchronization for LMMS.
(e.g. for plugins like dBlue Glitch, TAL Filters).
Synchronization is done via shared memory, missing song time
positions are reccalculated and added to PPQ position sync values
(SHM - common input interface for sync of all VST plugins)
When deciding whether to forward a MIDI event directly to the instrument
plugin do not evaluate realOutputChannel() for the time being as it is
ranged from 0 to 15 and has no don't-care-state like the input channel.
This is a workaround - we need a better solution here.
In the special case that a MIDI event comes from a MIDI port, the
instrument is MIDI based (VST plugin, Sf2Player etc.) and the user did
not set dedicated MIDI output channel, directly forward the MIDI event
to the instrument plugin so properties such as MIDI channels are kept.
Based on patch by nuio <numa_shsk/at/mail/dot/goo/dot/ne/dot/jp>, 2013-01-20
This new property is going to signal whether a specific event comes from
a MIDI port is was generated internally.
Based on patch by nuio <numa_shsk/at/mail/dot/goo/dot/ne/dot/jp>, 2013-01-20
Master channel keeps freezing, when VST effects are placed directly
into Master channels FxChain, on slower computers.
Provided solution prolongs VST initialisation phase, by waiting on two extra messages,
which usually follows initialisation and are possibly not yet implemented well.
IdSampleRateInformation,
IdBufferSizeInformation
This seems to prevent Master channel freezes e.g. on VST effects like Tiny-Q.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Various fixes improvements:
+ Added support for VST parameters control for windows.
+ New `Close` button for VST parameter controls.
+ Faster GUI for all instruments, effects-loading, not only VSTs,
and both one-instrument track window mode and normal window
mode should be supported.
+ Better integration for VST GUIs on Linux, e.g. plugin window
should not stay always on top of other windows.
+ VST GUI overlook should remain same with different wine setups
( except for whole virtual desktops emulations ).
+ VST effect control window merged with VST effect editor window
should be more easier to control.
+ Little corections at effectviews model updates of instrument
tracks effect chains.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
When sending MIDI events to the ZynAddSubFX engine do not statically
send them on channel 0 but on the MIDI channel which is set as output
MIDI channel of the instrument track. This adds some flexibility when
it comes to multipart ZynAddSubFX presets which are connected to
different MIDI channels.
A natural minor scale was missing which lead to some irritations about
the harmonic and melodic minor scales. Had to add the new scale at the
end of the chord table in order to not break existing projects and
presets in which simple chord table indices are saved.
Closes#3594824.