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>
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)
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
MIDI commands All Notes Off, All Sound Off and Omni/Mono/Poly mode will
now silence all playing notes, as they should.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
When using the multitrack export feature the output files always had
the extension ".wav", even if exported as OGG. This patch fixes this
issue.
Closes#3595157.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
In automation patterns there always had to be a value at position zero
which also had a special semantic concerning the initial values of
connected objects. However that logic was buggy and confusing.
I therefore completely removed the neccessity for a value at position
zero (automated value will be 0 until the first set point).
Up to now there was no possibility to remove song-global automation from
a control once created. Overcome this issue by adding an according action
in the context menu of all AutomatableModelView instances.
The previous behaviour was very annoying because starting to drag the
knob almost always resulted in a value change. This has been changed
by a rewritten logic for mouse click and move behaviour.
Closes#3588157.
Use GCC's builtin atomic add/subtract operation for incrementing/
decrementing the recursive lock variable. This is needed to avoid race
conditions and is much faster than using mutexes etc.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
The code for managing programs/presets of RemotePlugin instances was
very confusing, mainly within the VstPlugin and RemoteVstPlugin class.
I therefore started to reorganize and rewrite functions.
This patch adds the option to remove the extra silence at the end,
so that the exported song can be seamlessly looped.
This is a backport of commit 8f1657164a.
Closes#3588890.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Due to various bug reports, I think we should turn off auto save per
default. Users who want this feature can turn it on explicitely (and
live with problems when they have big projects).
We have too many components in LMMS relying on FFTW3. Building LMMS
without them cripples LMMS' functionality substantially, so simply
make fftw3 a requirement.
Closes#3495736.
It came to me that having LMMS output one fixed note from a track could
be useful for controlling drum machines or something like that, so here's
a new spinbox for the MIDI tab.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Here is the patchset for my multiple track export feature. It works now
the way I originally envisioned.
For example, after I export tracks on my little song, I see this in the
directory I created:
devin@devin-studio:~/lmms/projects/fff$ ls
0_Defaultpreset.wav 3_Defaultpreset.wav 6_csidSouwav.wav
1_Defaultpreset.wav 4_spacenoiseswavwav.wav 7_HHOPENwav.wav
2_Defaultpreset.wav 5_csidkickwav.wav 8_HHOPENwav.wav
Each instrument or sample track is exported individually, regardless of
whether in its own song track or playing as part of a BB track. The
name is taken from either the song track name or from the BB track name.
My goal was to get the tracks individually exported, so that I could
combine them with other tracks in Ardour.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Here's one way to cram more stuff onto small screens, or otherwise help
reducing visual clutter: Allow tracks to be shift-dragged all the way
down to 8 px height.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This patch includes:
* sampleBuffer::visualise(): add possibility to specified a range to visualize instead of the whole sample
* add sampleBuffer::sampleRate() and sampleBuffer::sampleLength() getters
* definition of AudioFileProcessorWaveView and AudioFileProcessorWaveView::knob classes for AudioFileProcessor plugin
* knob::getValue() specified “virtual” to allow redefinition in child class AudioFileProcessorWaveView::knob
* delete audioFileKnob class (made obsolete by AudioFileProcessorWaveView::knob)
* add audioFileProcessor::isPlaying() signal, which is emitted in audioFileProcessor::playNote
* change type of AudioFileProcessorView::m_startKnob and AudioFileProcessorView::m_endKnob (AudioFileProcessorWaveView::knob instead of audioFileKnob)
* replace AudioFileProcessorView::m_graph (QPixmap) by AudioFileProcessorView::m_waveView (AudioFileProcessorWaveView)
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added an option to shrink the track buttons horizontally, mainly by
moving the track name into a tooltip.
Closes#3459241.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
When freezing patterns the freezer hung forever as it checked for any
running play handles in order to render echoes etc. after the last note.
However if there are MIDI-based instruments such as LB302, ZASF,
Sf2Player etc. there will always be play handles (InstrumentPlayHandles)
in the mixer's play handle array. Therefore explicitely check for
remaining NotePlayHandles when freezing pattern. Furthermore added a
counter variable for safety reasons so rendering note tails will never
exceed 2000 buffer periods.
Thanks to Mikobuntu for reporting this issue!
Closes#3109262.
Note detuning did not work properly for patterns starting after the
first bar in the song editor. This has been fixed by introducing
additional information about parent's song-global offset to
NotePlayHandle objects.
Closes#3462555.
LMMS VST Support Layer has been greatly advanced as it now features
(automatable) VST controls as well as support for VST presets. This
still needs some work as it crashes with various plugins (e.g. z3ta+).
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Catch the case the model is empty in ComboBoxModel::currentText() and
return an empty string instead of crashing. Fixes crash with settings
dialog if no sound devices are accessible via PortAudio.
We must not process the FX mixer if we notice that currently a pattern
is frozen. Furthermore renamed some state-reading messages of the
pattern class.
Closes#3316495.
Based on the patch by Thorsten Müller provided at #3307037, I continued
the work to display nice indicators for the peak value of the last 1500
ms.
Closes#3307037.
Added tooltips to show the actual value when moving the fader handle.
This works mostly like the same feature we already have for the volume
knobs. Depending on settings the value is shown in a range between
0% to 200% or -inf/-34dBV to 6.02 dBV. Again that's the same as for the
volume knob. Value range could be adjusted easily if necessary.
Closes#3305914.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
When there's no BB track but a track is added to the BB editor,
automatically create a BB track so that the user doesn't get confused
by new empty track (not even showing clickable beats).
Partially closes#3149779.