Changing from arrays of structs to structs of arrays makes the
code a lot more optimizer-friendly, with possible speed gains of
2-3x when compiling for SSE systems.
Corrected Hann (raised cosine) window function.
Corrected output-windowing logic and recalculated correction factor
for window type. Tested against white noise & triple_osc output.
This singleton class handles management of plugin search paths and plugin
discovery. Search paths are (if they exist):
* <lmms-exe-dir>/../lib/lmms: This is the common location on Unixoids
(Not included in Windows builds)
* <lmms-exe-dir>/plugins: For portable and Windows installations
* The path given by the compile define LMMS_PLUGIN_DIR
* Environment variable LMMS_PLUGIN_DIR if given
This commit also tweaks the build script to output built plugins to
"${CMAKE_BINARY_DIR}/plugins". This way lmms can find plugins during
development without the need to use `make install`.
Plugin::getDescriptorsOfAvailPlugins and ConfigManager::pluginDir were
removed.
Samplebuffer: reload all samples when samplerate changes. This is because of the way LMMS uses samples: we always resample all samples t$
LadspaEffect: some safeguards for the non-inplacebroken plugins which use the same buffer for input and output. Theoretically, if some p$
FxMixer: fix effect processing in multichannel-chains
I don't think we currently have any that would support this functionality, but in case someone has a LADSPA plugin that has audiorate control ports, this allows them to be used with the new sample-exact models
Again... not strictly related to memory management, but since I was in that part of the codebase already...
Not likely to be an issue currently, but if(when) we at some point allow >44.1k samplerates for playback, we may run in a situation where we have to downsample audio for processing, and thus we'd be doing heap allocation every period - it's best to fix this in advance so we're using stack for it for now (may be replaced with memory management later though)
LMMS now properly builds and runs with Qt5. Various deprecated functions
had to be replaced like QString::toAscii()/fromAscii(). Also occurences
of FALSE/TRUE have been replaced with false/true.
LmmsStyle now derives from QProxyStyle and sets a style instance as base
style (Plastique for Qt4, Fusion for Qt5).
MOC files are not included anymore but added as regular source files.
What's missing is support for embedding VST plugins into a subwindow
inside LMMS on Linux/X11 due to missing QX11EmbedContainer class in Qt5.
Build instructions can be found in INSTALL.Qt5
Minimum version requirement for Qt4 has been raised to 4.6.0 for best
API compatibility between Qt4 and Qt5.