Commit Graph

733 Commits

Author SHA1 Message Date
NoiseByNorthwest
2375b7f0a0 Fixes #3604316: LMMS crashes using AudioFileProcessor
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-27 17:30:40 +01:00
Mike Choi
50c2242caa VST sync patch: compatibility fix for 64bit builds
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>
2013-02-27 17:29:00 +01:00
Mike Choi
0b39426953 VST Effects: Open each effect only once, when loaded from project file
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>
2013-02-09 12:35:01 +01:00
Mike Choi
7084ec0be6 VST Effects: preserve effect name after LMMS project reload
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>
2013-02-09 12:34:53 +01:00
Mike Choi
0ef2997ece VST to host sync
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)
2013-02-09 12:33:22 +01:00
Frank Mather
0acfff036f Added HydrogenImport plugin
This is a new plugin that imports hydrogen drum machine songs.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-02-09 12:29:34 +01:00
Mike Choi
c1a2c6b1fa VST effects: secure master channel freezing
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>
2013-01-23 22:46:16 +01:00
Mike Choi
32e9ddc6e4 VST effect control window re-design
New outlook for VST effect control window

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-23 22:45:20 +01:00
Mike Choi
1c9c76f399 VST GUI fixes, improvements
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>
2013-01-16 23:52:04 +01:00
Tobias Doerffel
a184bc039e Sf2Player: update track name after loading file
For consistent behaviour with other plugins such as AudioFileProcessor
and ZynAddSubFX update the track name after loading a file.
2013-01-14 23:13:21 +01:00
Tobias Doerffel
d943182a6c ZynAddSubFX: increased polyphony to 128
It occured to me that ZASF reported polyphony overflows when using it
in combination with LMMS' arpeggio and chord functionality.
2013-01-13 19:07:12 +01:00
Mike Choi
b784d3daf0 VST Effects: fix for uncontrollable plugin window
Supposed fix for 3595560, see also
http://sourceforge.net/apps/phpbb/lmms/viewtopic.php?f=7&t=778
http://sourceforge.net/tracker/?func=detail&aid=3595560&group_id=105168&atid=640434

VST effects pluginWidget is not deleted, when we close General Settings of instrument track,
on which are directly attached VST effects, but only when we remove this VST effects or tracks itself.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-13 18:56:47 +01:00
Tobias Doerffel
99efe8aef3 LocalZynAddSubFx: include/forward MIDI channel information
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.
2013-01-13 18:48:35 +01:00
Mike Choi
b9c926dabd VST parametr control window: window title as trackname
Window title for VSTi parameter controlling window should be set according to
actual track name, not from VST plugin name as its now, it is hard to get to know
which window belongs to where when same plugin is e.g. opened several times, so
with the same name. Now this is handled in paint event, but TBD whenever is
that track name changed. tbd, temporary solution.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:02:08 +01:00
Mike Choi
f4cc037321 VST Control: Right window title for parameter manual edit
When you double-click on some knob to change its VST parameter value
manually, new dialog window now has same title as what was that knobs
name. (instead of "lmms" title string)

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:01:52 +01:00
Mike Choi
5b6fa164e7 VST Automation: Filter for automated parameters
Filter to display only automated / all knobs (new button) on LMMS VST parametr control window.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:01:27 +01:00
Mike Choi
ba03b70457 State of VST controls in LMMS control wrapper is reloaded after Save/Load, from plugins state
After project save/load unsaved VST control parameters in LMMS VST control wrapper are not set to zero now, but reloaded according plugins saved state.

No need to sync values manualy again, after project save, load.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 23:01:13 +01:00
Mike Choi
e8bdc7b3c1 VST Automation: Sync button fix
Only not automated values are synced from VST plugin, no need to sync already automated values.

Synced values are now not trackable with undo / redo, before all changes were tracked individualy,
but user could lose ability to undo easily changes before sync buton was pressed.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:59:47 +01:00
Mike Choi
c2e9918c8a VST Automation: crash prevention
Fixed destuctors for various types of VST automation panel removal.

Automated signals correct disconection on panel removal.

When you load new VST plugin in the place of old one, while automation
is already connected and active there, this should not result in LMMS crash
or reuse of that old automation connections and automation window destructor
should not leave zombie VST plugins on application exit.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:59:40 +01:00
Mike Choi
3cc01560be VST Automation: lock prevention
src/core/RemotePlugin.cpp @ RemotePlugin::process

Above function should be now more thread safe, but functionality remains.
This prevent lmms locks, when automation is connected to lmms VST plugin wrappers controler / knob on Linux.
On win32 build whenever is lmms wrapper parameter controler / knob  amended.

plugins/vst_base/VstPlugin.cpp @ VstPlugin::setParam
plugins/vst_base/RemoteVstPlugin.cpp @ RemoteVstPlugin::processMessage

In above functions we dont wait for message confirmation when parameter setter function finish, and dont send such confirmations.
This workaround prevent locks on Linux, whenever there is automation connected and if you try to move with VST plugin
(not via lmms plugins wrapper, but with VSTs internal window) than it freezes, on win32 build it will freeze whenever you connect
automation and than if you move your mouse above this VST plugin window.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:57:45 +01:00
NoiseByNorthwest
2960f67beb AudioFileProcessor: fixed crash for samples with zero length
This is a fix for #3598536.

Closes #3598536.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2013-01-06 22:53:59 +01:00
Tobias Doerffel
716146848c ZynAddSubFx: when loading a preset set preset name as track name
Based upon the suggestion of Tres Finocchiaro we use the filename of a
ZASF preset for determining the preset name and set it as track name.
2013-01-06 22:48:41 +01:00
Tobias Doerffel
60017ae6e3 RemoteVstPlugin: decreased locking overhead in getParameterDump() 2012-12-03 00:07:56 +01:00
Tobias Doerffel
890a8a4ba9 RemoteVstPlugin: new method pluginDispatchNoLocking() 2012-12-03 00:07:32 +01:00
Tobias Doerffel
f28601db5d RemoteVstPlugin: less verbose debug message 2012-12-02 22:09:28 +01:00
Tobias Doerffel
5f298c0c48 RemoteVstPlugin: coding style fixes 2012-12-02 22:09:15 +01:00
Tobias Doerffel
ef68156c71 RemoteVstPlugin: compile with -O3 as otherwise incorrect code is generated
There seems to be a bug in current MinGW GCC which leads to incorrect
code (crash for no obvious reason) in RemoteVstPlugin process.
2012-12-02 22:09:06 +01:00
Tobias Doerffel
2cac30f495 RemoteVstPlugin: use size_t for loop index to fix compiler warning 2012-12-02 19:01:37 +01:00
Tobias Doerffel
c4e29da412 RemoteVstPlugin: fixed out-of-bound array access 2012-12-02 19:01:09 +01:00
Tobias Doerffel
40a92d8417 FlpImport/unrtf: renamed malloc.h to ur_malloc.h for not conflicting with system headers 2012-12-02 19:00:06 +01:00
Tobias Doerffel
6817631c91 RemoteVstPlugin: more locking, range checking etc. 2012-11-26 20:49:31 +01:00
Tobias Doerffel
e43f34914f RemoteVstPlugin: renamed presetName() to programName() 2012-11-26 20:23:41 +01:00
Tobias Doerffel
bdaedcdf86 VstPlugin, RemoteVstPlugin: update program name via new idle update messages
Introduced new idle update messages for exchanging data periodically but
not inferring audio processing.
2012-11-26 20:16:06 +01:00
Tobias Doerffel
9d610e5108 RemoteVstPlugin: use pluginDispatch() everywhere for thread safety
Calling plugin dispatcher without lock is potentially dangerous.
2012-11-26 20:00:55 +01:00
Tobias Doerffel
0d80f0c569 VstPlugin, RemoteVstPlugin: save/restore current program of VST plugin
Not all plugins save current program in their chunk (or do not restore
it properly). We therefore have to save and restore the current program
manually.

Closes #3581879.
2012-11-26 19:30:26 +01:00
Tobias Doerffel
56b07e29c2 RemoteVstPlugin: send updates of current program name if changed
Send current program name back to host if current program has changed.
2012-11-26 19:18:20 +01:00
Tobias Doerffel
1b7ae1f7a9 RemotePlugin, VstPlugin: reorganized and partly rewrote program/preset related functions
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.
2012-11-26 19:18:07 +01:00
Tobias Doerffel
3be675ac7b Vestige: send NoteOff events for all possible MIDI keys
In VestigeInstrumentView::noteOffAll() do not only send MIDI NoteOff
events for all LMMS keys but for the whole range of MIDI keys.
2012-11-11 23:40:48 +01:00
Tobias Doerffel
3842cb3d61 RemoteVstPlugin: fixed too short arrays for preset names
The dimension of preset name arrays was too small. Fixed this
by raising it from 30 to 64 characters.
2012-11-11 23:13:01 +01:00
Tobias Doerffel
3a1c117a37 CMakeLists: make fftw3 a requirement and not optional anymore
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.
2012-11-11 22:42:04 +01:00
NoiseByNorthwest
d448e6743d Ergonomic enhancements for AudioFileProcessor plugin (interactive wave view).
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>
2012-10-27 22:32:09 +02:00
Tobias Doerffel
370ff26c2b LocalZynAddSubFx: added missing header include
ZASF fails to build with GCC 4.7 due to missing header include.

Thanks to Alexander Liebendorfer for pointing out the issue.
2012-10-27 22:01:08 +02:00
Tobias Doerffel
8b66dfc860 ZynAddSubFX: fixed possible buffer overflow
bankdir could be overflowed in the strncat function since the length
limit is not correctly specified.

Closes #3510466.
2012-05-20 18:55:30 +02:00
Tobias Doerffel
60b93e331e ZynAddSAubFX Microtonal: Fixing formatting of detune values
- Fixes bug that prints values like "4.0123" as "4.123"
(cherry picked from commit 5a1fa4f3c522f2f438e052273a544091133bb0eb)
2012-02-02 22:40:03 +01:00
Tobias Doerffel
59da243fed ZynAddSubFX: Pruning code from static analysis
Static analysis performed with cppcheck and clang
(cherry picked from commit 7540c6b46e2e6158a38464aeb9a8b35fefc3c9a9)
2012-02-02 22:28:44 +01:00
Tobias Doerffel
376f11a6c0 ZynAddSubFX: Env: fixing envelope scaling
Fixing bug introduced in 56d7e2e6ec
2012-02-02 22:21:50 +01:00
Tobias Doerffel
88d0c59903 CALF: revert upstream commit 460642bfae534679b4094e6887714828c90d8172
Upstream commit 460642bfae534679b4094e6887714828c90d8172 removes LADSPA
support from CALF which definitely is not desired for LMMS. Therefore
simply revert it in our sources.
2012-02-02 21:59:45 +01:00
Tobias Doerffel
c1db55c56a CALF: updated up to commit 657b36073cae77d9f0e191a7f09b6b8d2099aade 2012-02-02 21:45:36 +01:00
Tobias Doerffel
6eb708ccee VeSTige/VstEffectControlDialog: fixed spelling error
Fixed minor spelling error.
2012-02-02 20:55:38 +01:00
Tobias Doerffel
2e7e09fd6b ZynAddSubFX: workaround for bug in Win64 GCC
When building LMMS with recent stable versions of GCC it generates
wrong code for the implicit REALTYPE specialization of the template
method stringFrom<T>() (problem in std::stringstream implementation).
By writing a custom template specialization which uses sprintf() the
bug can be circumvented.
2012-02-02 20:21:03 +01:00