Commit Graph

580 Commits

Author SHA1 Message Date
Tobias Doerffel
f7da4a0f7e InstrumentPlayHandle: do not process if InstrumentTrack is muted
While regular instruments were excluded from processing when muted
this did not happen for InstrumentPlayHandle-based instruments. Muting
for exampling tracks with VSTi's inside did not decrease CPU usage.
Checking whether related InstrumentTrack is muted before calling
Instrument::play() fixes this issue.

Closes #2857426.
(cherry picked from commit 6940d19969)
2009-09-15 23:51:00 +02:00
Tobias Doerffel
3c9dd294dc ZynAddSubFX: fix plugin descriptor name
While fixing the name of the plugin library in commit
883836aa8a the plugin descriptor
structure has not been updated.
(cherry picked from commit 5c96adbd6d)
2009-09-15 23:50:50 +02:00
Tobias Doerffel
146f75b90a ZynAddSubFX: keep plugin filename lower case
If we'd rename all plugins like I did with ZynAddSubFX, we'd run into
serious troubles, therefore keep plugin names lower case.
(cherry picked from commit 883836aa8a)
2009-09-15 23:50:41 +02:00
Tobias Doerffel
abe411cd26 ZynAddSubFX: added GUI-less mode
Added a new GUI-less mode to ZynAddSubFX instrument plugin which allows
to let ZynAddSubFX audio processing happen within LMMS, giving a much
better realtime behaviour.

As soon as showing up the GUI settings of GUI-less ZynAddSubFX instance
are saved and a traditional RemoteZynAddSubFx process is being launched
and the settings are applied there.
(cherry picked from commit f1d383d04d)
2009-09-15 23:49:45 +02:00
Tobias Doerffel
ccc9f7ed73 ZynAddSubFX: lots of cleanups in RemotePlugin implementation
Moved all ZynAddSubFX instance related functions and variables into
RemoteZynAddSubFX class so there're no globals anymore. Also removed
some unused headers and ZynAddSubFX' main.c.

Additionally make use of full 80 chars/line with ts=4.
(cherry picked from commit d2eea754bc)
2009-09-15 23:47:06 +02:00
Tobias Doerffel
7c6577bf23 ZynAddSubFX: fixed win32 compilation of FLTK and MXML
Some platform-specific constants got renamed during sed-mass-replace.
Fix this by reverting concerning constant names.
(cherry picked from commit 78536d9065)
2009-08-29 00:09:43 +02:00
Tobias Doerffel
5ba1340ed0 Plugin: typedef DescriptorList + more const improvements
Instead of writing QVector<Plugin::Descriptor> everywhere, mix up
iterators etc. centrally define Plugin::DescriptorList and use it
everywhere.

Additionally made pointers to Plugin::Descriptor and
Plugin::Descriptor::SubPluginFeatures::Key const in various places
so we can use ConstIterator everywhere when iterating through
Plugin::DescriptorList.
(cherry picked from commit 2287eca802)
2009-08-29 00:07:05 +02:00
Tobias Doerffel
ba4296136b Plugin::Descriptor::SubPluginFeatures: made some methods const
We can safely make fillDescriptionWidget() and listSubPluginKeys()
const methods. Furthermore descriptor pointer to listSubPluginKeys()
can be const as well. Might allow more optimizations by the compiler.
(cherry picked from commit 1c76c77d22)
2009-08-29 00:02:55 +02:00
Tobias Doerffel
c2f9fcd14f Plugin::Descriptor: renamed sub_plugin_features to subPluginFeatures
Renamed field sub_plugin_features to subPluginFeatures in
Plugin::Descriptor struct.
(cherry picked from commit e8c3c21f7f)
2009-08-29 00:02:47 +02:00
Tobias Doerffel
c32567ce2f Fixed mistakes made by sed-mass-replaces
Some variables got renamed the way the shouldn't. Doesn't have any
functional impact but fix it for the sake of cosmetics.
(cherry picked from commit d7365e4cf3)
2009-08-29 00:01:24 +02:00
Tobias Doerffel
f4dbb2ff5c sed: s/( void )/(), s/FALSE/false/, s/TRUE/true
Replaced remaining occurences of old constants and superfluous "void"
on empty argument list of functions.
(cherry picked from commit 166701f9f3)
2009-08-25 01:42:20 +02:00
Tobias Doerffel
1d5cb23385 File and class renames part 1
Most files and most of the core classes and their methods have been
renamed to match new coding style conventions:

391 files changed, 25400 insertions(+), 25598 deletions(-)

Furthermore splitted some files where model and view classes were
declared or implemented together in the same file.

Should be tested thoroughly as I might have missed renaming some virtual
methods or SIGNAL/SLOT parameters.
(cherry picked from commit 8c9a9dd14c)
2009-08-25 01:30:41 +02:00
Tobias Doerffel
2f8b9c5a61 TAP LADSPA plugins: updated to version 0.7.1
After (exactly) 5 years of silence, there's a new relase of TAP LADSPA
plugins. It fixes issues on 64 bit machines, uninitialised variables
and denormal issues.
(cherry picked from commit 6a9e45f733)
2009-08-19 14:33:25 +02:00
Tobias Doerffel
cbd2dcbfda ZynAddSubFX: restructured initialization and shutdown code
Most of the stuff that was in main(...) function before directly is
related to creating a new instance of ZynAddSubFX master class,
therefore moved initialization and shutdown code into constructor
and destructor of RemoteZynAddSubFX class. Should have no functional
impact.

The shutdown code was extended to properly destroy the ZynAddSubFX
instance.
(cherry picked from commit 9c5e04ba73)
2009-08-18 23:26:28 +02:00
Tobias Doerffel
c46c4ff3d1 ZynAddSubFX: forward MidiControlChange events to ZynAddSubFX core
So far we ignored all events other than MidiNoteOn, MidiNoteOff and
MidiPitchBend. By also processing MidiControlChange events one can
control some basic parameters of ZynAddSubFX via MIDI now.
(cherry picked from commit 49ebb835af)
2009-08-18 01:31:53 +02:00
Andrew Kelley
be91af0cb8 RemoteVstPlugin: add include directory
If libraries are being used from somewhere other than
/usr/include or /usr/local/include, building vst_remote would fail.
Now it checks CMAKE_INSTALL_PREFIX/include.
(cherry picked from commit 7d0c1ef6c2)
2009-08-14 15:35:26 +02:00
Tobias Doerffel
b8ebfbd06a Renamed MIDI and audio related classes/files to match new style
Renamed all MIDI and audio related classes/files to match new style.
Additionally various cleanups.
2009-08-13 00:52:21 +02:00
Paul Giblock
edc2cae4c2 Add Korean translation
(cherry picked from commit 2a69917d51)
2009-08-12 11:58:55 +02:00
Tobias Doerffel
ad1124cde9 Added CALF LADSPA plugins
As per popular demand I added CALF LADSPA plugins to be shipped with
LMMS. After some minor modifications the plugins compile and work on
win32 platform too.
(cherry picked from commit 35ca0aab69)
2009-08-10 13:50:20 +02:00
Tobias Doerffel
3e62853de5 FlpImport: fixed crash on invalid notes
Added a range check for channel parameter when adding notes. This fixes
a crash when for example importing the project posted on lmms-devel
by Andew Kelley lately.
(cherry picked from commit ee9d88e2d4)
2009-08-09 11:23:26 +02:00
Tobias Doerffel
9a4cfedf67 FlpImport: changed most printf()s to qDebug()s and qWarning()s
This improves structure of messages when importing FLP files.
(cherry picked from commit 20eda9a756)
2009-08-09 11:21:57 +02:00
Paul Giblock
5138ed6722 Rename all Controller-family classes to new style
Adjust capitialization on all Controller-related classes to new
standards and update all calling code
(cherry picked from commit f1d60958f0)
2009-08-09 00:29:16 +02:00
Tobias Doerffel
8485cf3157 ZynAddSubFX/FLTK: updated to SVN revision 6826
Updated FLTK to SVN revision 6841 of branch-1.3:

- Fixed glibc 2.10 compiler problems (Fedora 11 and others)
  with scandir() and strchr() (STR #2222)
- Fl_Scroll mods for global scrollbar size control
- various other minor stuff (see SVN log)
(cherry picked from commit 803fd68a56)
2009-08-05 19:11:30 +02:00
Tobias Doerffel
84e0dc1b81 Sf2Player: removed trailing spaces in code
There were some unsolicited trailing spaces in the code. Removed them.
(cherry picked from commit 964c6532f2)
2009-08-05 18:09:42 +02:00
Tobias Doerffel
99791ddf25 Sf2Player: fixed crash and race conditions
Do not crash if no fluid_voice could be determined in
sf2Instrument::playNote() (which for example happens if no soundfont
is loaded). Furthermore protect the FluidSynth API calls in the
envelope and panning code with global synth mutex.
(cherry picked from commit 144f0c6c80)
2009-08-05 18:04:06 +02:00
Tobias Doerffel
31b2b00ba4 Sf2Player: added panning and volume envelope support
Finally there's proper support for panning and volume envelopes. This
is achieved by changing parameters of individual voices (one voice is
being created for each note). The new code also replaces the old
panning hacks which played notes on different channels and changed
panning of individual channels.

Closes #2010818.

(cherry picked from commit 4baf459da2)

stable-0.4 branch: forward-ported various trivial changes from master.
2009-08-05 17:38:50 +02:00
Tobias Doerffel
edf2d4d104 Whole code base: various cleanups, removed SINGLE_SOURCE_COMPILE relicts
* cleaned up code and improved coding style
* removed old SINGLE_SOURCE_COMPILE macro relicts
* use QString::toUtf8() instead of QString::toAscii() wherever possible

(cherry picked from commit 0bb54199b0)
2009-08-05 17:17:57 +02:00
Tobias Doerffel
6d6bbe3b32 CAPS: updated to version 0.4.3
Updated CAPS plugins to version 0.4.3 - changes:

  * basics.h cleanup / comments
  * minor Makefile cleanup
  * comment cosmetics
  * Eq and Eq2x2 per-band Q changed to 1.414 (= 1 octave)
  * Eq lowest band default value fixed to read 0
  * Niclas' fix for the bessel function implemented
  * uninitialised plugin states eliminated thanks to Damon
  * linker options for OSX added to the Makefile

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit e0df82056c)
2009-08-03 18:56:17 +02:00
Tobias Doerffel
7bddad1895 ZynAddSubFX: really fix compilation error
I should always try to compile before committing... Works now!
2009-08-03 18:51:55 +02:00
Tobias Doerffel
3504e49119 ZynAddSubFX: fixed compilation error
Fixed compilation error introduced by commit
f3e13c4427.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 27d9c17e3f)
2009-08-02 18:24:06 +02:00
Tobias Doerffel
42b1584cbe RemotePlugin: added QSTR_TO_STDSTR macro and use it in LVSL/ZASF
QString::toStdString() is not aware of locale specific characters (it
just converts to ASCII). Therefore added new macro QSTR_TO_STDSTR which
converts a QString to std::string with UTF8 characters.

Use this new macro in LMMS VST Support Layer and ZynAddSubFX plugin.
This fixes for example VST plugins not being loaded when the path to
the DLL contains non-ASCII (e.g. cyrillic) characters.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit f3e13c4427)
2009-07-29 17:13:47 +02:00
Tobias Doerffel
29d0d2b43a RemoteVstPlugin: fixed typo in 4ad5add745
Commit 4ad5add745 introduced a typo which
lead to compilation failure. This commit fixes it.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit c4c94985a6)
2009-07-09 12:54:59 +02:00
Tobias Doerffel
6883e0479c RemoteVstPlugin: typedef VstMidiEventList
Added a typedef for VstMidiEventList so actual type does not have
to be hard-coded each time in the code.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 4ad5add745)
2009-07-09 12:54:59 +02:00
Tobias Doerffel
598d1dc816 RemoteVstPlugin: don't process MIDI events in GUI thread
Don't process MIDI events in GUI thread as this might corrupt MIDI
event array if both GUI and processing thread access it. Fixes
possible crashes.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit e7ab8e5670)
2009-07-09 12:54:59 +02:00
Tobias Doerffel
9fc0d8962d RemoteVstPlugin: encapsulate locking in separate inline functions
Locking the plugin is now achieved by calling RemoteVstPlugin::lock()
and RemoteVstPlugin::unlock().

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 2240d6644d)
2009-07-09 12:54:59 +02:00
Tobias Doerffel
00ca278f2f RemoteVstPlugin: removed different threading models
Different threading models aren't used anymore as SplittedThreadingModel
after all recent improvements works fine for all plugins tested so far.
It even shows that a lot more VST plugins are running now properly.
Therefore all support for TraditionalThreadingModel has been removed
which greatly simplifies code and makes it much more maintainable.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 41c9318be8)
2009-07-09 12:43:57 +02:00
Tobias Doerffel
0424c5cec8 RemoteVstPlugin: prefer chunks over parameters for settings
When saving or restoring settings, prefer chunks over parameters.
This fixes some problems with plugins which get confused e.g. if you
restore individual parameters rather than the whole chunk.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit dffd9ecfbe)
2009-07-07 21:22:28 +02:00
Tobias Doerffel
c66fa25dfe RemoteVstPlugin: define O_BINARY to 0 on Linux
O_BINARY flag is not supported on Linux, therefore define it to 0.
Fixes compilation failure on Linux.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit d6a451bdf5)
2009-07-07 18:37:32 +02:00
Tobias Doerffel
c1f5075e16 RemoteVstPlugin: open file with O_BINARY when reading/writing chunks
When writing chunk to file or read it back from file, open file with
O_BINARY flag. Otherwise on win32 for example line endings (\n) are
converted (\r\n) and with real binary data this screws up things.

Thanks to Oleg Sharonov for pointing this out.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 48a3d4ebe4)
2009-07-07 17:09:41 +02:00
Tobias Doerffel
a0b198fb38 ZynAddSubFX/FLTK: updated to SVN revision 6826
Updated FLTK to SVN revision 6826 of branch-1.3:

- Corrected const methods of Fl_Text_{Buffer|Display|Selection}
  to be declared const, corrected an Fl_Text_Buffer attrib. typo
- Fixed OpenGL shared context handling (STR #2135)
- Fixed gray-scale images with alpha channel (STR #2105)
- Fixed unexpected shortcut behavior for Win32 (STR #2199)
- Fixed documentation for Fl_Progress (STR #2209)

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 0de2949aed)
2009-07-07 02:13:05 +02:00
Tobias Doerffel
c0f221e984 ZynAddSubFX: now build on OS X as well
Now that we fixed RemotePlugin support on OS X, we can enable build of
ZynAddSubFX on OS X. Some GUI threading issues still have to be solved
though.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit ea376e90fe)
2009-07-07 01:59:22 +02:00
Tobias Doerffel
7c2b3e6240 RemoteVstPlugin: print number of inputs/outputs as debugg message
When input/output count changes, always print new number of inputs and
outputs as debugg message.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 5838f63d0b)
2009-07-07 01:58:09 +02:00
Tobias Doerffel
d8c616afcf RemoteVstPlugin: reset m_inputs and m_outputs in updateInOutCount()
Reset m_inputs and m_outputs to NULL after deleting the memory they're
pointing to. Fixes possible crash if new input or output count is 0
and the count changes again later.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 206d906c10)
2009-07-07 01:58:00 +02:00
Tobias Doerffel
4e81299729 RemoteVstPlugin: workaround for early host callbacks by some plugins
Some plugins call host callback from within their main function,
causing RemoteVstPlugin::m_plugin not to be set yet. Therefore
explicitely set RemoteVstPlugin::m_plugin if it's NULL. Makes plugins
by Wallander Instruments (and possibly others as well) work.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 38f7552ce4)
2009-07-07 01:57:50 +02:00
Tobias Doerffel
7ef61b04d7 RemoteVstPlugin: thread-safe plugin dispatching
Plugin dispatcher was called without any protection from various threads
leading to regular crashes or deadlocks within the plugin. The plugin
dispatching is now encapsulated into one central function which protects
the dispatcher by a mutex.

Furthermore improved handling of audioMasterIdle and
audioMasterUpdateDisplay in host callback by posting a message to GUI
thread asking for idle processing instead of directly calling plugin
dispatcher.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit e65b282166)
2009-07-07 01:57:42 +02:00
Tobias Doerffel
33917e4340 RemoteVstPlugin: coding style fixes
Renamed class remoteVstPlugin to RemoteVstPlugin + other minor coding
style fixes.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit cca39513d0)
2009-07-07 01:57:32 +02:00
Tobias Doerffel
1e0acbef85 RemoteVstPlugin: fixed threading issues with saving/restoring chunks
Saving and restoring chunks from/to plugin seems to work now after a
few tweaks regarding memory-allocation and threading (according
functions need to be called from withing GUI thread). However needs the
new code some testing (especially whether it breaks previously working
plugins).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit db878b664d)
2009-07-07 01:57:23 +02:00
Tobias Doerffel
798c179b58 RemoteVstPlugin: added more NULL checks
Check for m_plugin being NULL in RemoteVstPlugin::inputCount(),
RemoteVstPlugin::outputCount() and RemoteVstPlugin::pluginVersion().
Makes various VST's load properly now.

Thanks to Oleg Sharonov for pointing this out.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit 9b5c0d19f8)
2009-07-07 01:57:12 +02:00
Tobias Doerffel
12aaffe149 VstBase: initial support for saving/restoring chunks
Some VST plugins save their state as chunks rather than parameters.
According code to save/restore those chunks has been taken from FST 1.9.
However restore currently is disabled as it mostly fails for whatever
reason.
(cherry picked from commit 0abd4aad70)
2009-07-07 01:56:39 +02:00
Tobias Doerffel
cfe9c35f41 Sf2Player: allocate temporary buffer on stack if possible
When compiling with GCC always allocate a temporary buffer for
resampling on stack rather than doing an expensive heap allocation.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
(cherry picked from commit d1353247d9)
2009-07-05 16:43:03 +02:00