Until now, Mixer not only was responsible for rendering audio buffers
but also managed writing them to audio backend (through a FIFO) and
handled various quality related parameters.
All this functionality has been moved into the new AudioOutputContext
class. It glues together AudioBackend (formerly called AudioDevice),
global quality settings and the Mixer.
The AudioOutputContext class creates a FifoWriter which calls
Mixer::renderNextBuffer() and writes the output into the BufferFifo of
the AudioOutputContext it belongs to. The BufferFifo is read by the
according AudioBackend which belongs to the AudioOutputContext as well.
The AudioOutputContext also handles resampling in case the AudioBackend
wants the buffers in a different samplerate.
During this rewrite the Mixer class and the according source files have
been renamed from "mixer" to "Mixer". This results in small changes
all over LMMS' code base.
This reverts commit c517f1fa5a.
The commit was not very helpful and introduced new xrun problems.
Instead I'll be rewriting the part of LMMS where Mixer, Mixer's
quality settings, Buffer FIFO and AudioDevice are sticked together.
There's really no need to allocate a buffer each period, push it to the
FifoBuffer and free it when fetching the buffer in
AudioDevice::getNextBuffer(). Instead keep the pointer in FifoBuffer's
pool and reuse it.
Try to adjust latency of PulseAudio according to our settings of mixer
so it does not have such a bad latency anymore.
Furthermore force PulseAudio to play silence instead of rewinding
streams in case of underruns.
There have been some problems with the threading logic in the
AudioPulseAudio backend resulting in an endless loop when quitting LMMS.
Furthermore allocated PulseAudio resources were not freed properly.
Thanks to Armin Kazmi <armin.kazmi@tu-dortmund.de> for pointing out
this issue.
Changes in base directory were not tracked by filesystem watcher.
Explicitely add base directory to filesystem watcher and add a special
case to LocalResourceProvider::reloadDirectory().
When customizing background color of a widget via CSS, Qt somehow
falls back to ugly old windows style. This resulted in ugly looking
scrollbars in WelcomeScreen when working at a low screen resolution.
Therefore disable those scrollbars as they're rather useless anyways.
QListView automatically shows three dots for too wide text items.
* calf-updates:
+ Deesser: use correct threshold
+ Equalizer: remove unused variables
+ Gain reduction module: clearer authorship information
+ Framework: placeholder for waveshaper class (need it to merge further changes from Markus)
* calf-updates:
New widget: Tube with light and falloff
New Deesser, some minor bugs in sc-comp
Sidechain compressor bugs/settings, 3 equalizer
Minor bugs, sidechain frequency display
New FX: Sidechain compressor
New button (big mama), VU-meters with falloff and hold, bug in delay (value)
In the middle of nowhere
Fully redesigned
Sidebars, GUI layouts, black buttons again, input knob for compressor
Added 6 new LED's and peak hold function for VU-meters
meter_gain in gain_reduction module with falloff
In AudioPulseAudio::streamWriteCallback() we're operating on pcmbuf
via an operation from CPU class. All methods of CPU assume the buffer
being aligned on 16 byte boundaries. However pa_xmalloc() & friends do
not allocate aligned memory which resulted in a crash when calling
CPU::convertToS16() (SSE2 version takes advantage of aligned memory).
Replacing pa_xmalloc()/pa_xfree() with CPU::memAlloc()/CPU::memFree()
fixes this crash.
Closes bug #2890465.
There were some changes to DefaultStyle (such as styling new
WelcomeScreen or SideBar) which weren't part of CusisStyle yet.
According lines were copied and pasted from DefaultStyle. Probably
colors need some tuning.
Rewrote implementation of class SideBar to use QToolBar instead of
KMultiTabBar. We can style the SideBar now easily via CSS and do not
have to ship 3rd party KDE code with LMMS. Also the QToolBar based
SideBar integrates much better into the according widget style.
Furthermore renamed SideBar related classes and files to match new
coding style.
The current toolbar backgrounds are just PNGs with a linear gradient
inside. We can achieve the same by using qlineargradient property in
the according style.css.
Added #include <pthread.h> in PADnoteParameters.h to fix windows compile error
Patch by: Tobias Doerffel
(cherry picked from commit 14d2751bed1e6bb11805bb17e4a73e622c85a4ac)
VstPlugin creates a temporary file for exchanging data chunks of VST
plugins with the remote process. After calling QFile::write(...) data
has not neccessarily been written due to QFile's internal write buffer.
Therefore explicitely call QFile::flush() so all data is guaranteed
to be written.
Fixes problems with plugins which save small data chunks.
LMMS' ZynAddSubFX plugin creates a temporary file for exchanging XML
data with the remote process. After calling QFile::write(...) data
has not neccessarily been written due to QFile's internal write buffer.
Therefore explicitely call QFile::flush() so all data is guaranteed
to be written.
Closes#2877916.
Still QString::toAscii() & friends were used in several places causing
problems such as failed access to files with non-ASCII characters in
name.
Closes#2884115.
* zynaddsubfx-master: (28 commits)
ZynAddSubFX: explicitely link RemoteZynAddSubFx.exe against Core library
Revert "ZynAddSubFX/FLTK: updated to SVN revision 6909"
Style: Restylized entire codebase
SUBnote: integrated memcpy/memset
ADnote: started to use memset/memcpy
ADnote: Documented/added const usage
OSS: Added failsafe based upon Jrmie Andri patch
Unison improvements
Bandwidth effect on Reverb
Started to rewrite the Reverb's Bandwidth effect (based on a better idea)
ZynAddSubFX/FLTK: updated to SVN revision 6909
Merge branch 'master' into newXML
ZynAddSubFX: rebuilt UI files with non-buggy Fluid
ZynAddSubFX: rebuilt source files from UI files
Merge branch 'master' of ssh://zynaddsubfx.git.sourceforge.net/gitroot/zynaddsubfx/zynaddsubfx
Started to implement Bandwidth to the Reverb effect.
Small enhancements and bugfixes to Unison
Made unison vibratto LFO smoother
Other improvements and bugfixes on Unison.
Bugfixes
...
Functionality from QuickLoadDialog which can be used in similiar dialogs
for selecting resources has been moved into generic and highly flexible
base class ResourceSelectDialog.
Again there's no need for duplicated functionality. Adding a
ResourceAction::defaultTrigger() method allows to separate all
functionality from ResourceBrowser and possibly use it in other places
as well.
There's absolutely no need for duplicating the Action enumeration
in ResourceBrowser as there's already one in ResourceAction class.
Replacing the enumeration with ResourceAction's one makes code clearer
and reduces redundancy.