Commit Graph

50 Commits

Author SHA1 Message Date
Vesa
815a70a682 Sync 2014-11-18 13:58:41 +02:00
Vesa
f25da35c24 Sanitize all channel outputs when exporting 2014-11-18 13:58:40 +02:00
Vesa
857de8d2c8 Huge structural changes
Well, this commit got a bit out of hand, what with 26 files changed. Oh well.

Basically, we're using the buffermanager to dispense temporary buffers for playhandles and audioports to use.
This allows us to change the way playhandles work. Earlier, playhandles of the same track were waiting in line
to push their output to the audioport. This was of course inefficient, so now they just register themselves to the port,
then the port handles mixing the buffers.

Caveat: this is still a work in progress, the vol/pan knobs on instruments are temporarily non-functional - will be fixed in
the next commit, but I have to get some sleep now.
2014-11-18 13:58:39 +02:00
Vesa
740a7e6850 Merge branch 'stable-1.1'
Conflicts:
	include/AutomatableModel.h
	include/FxMixer.h
	src/core/FxMixer.cpp
	src/gui/widgets/caption_menu.cpp
	src/tracks/InstrumentTrack.cpp
2014-11-16 15:16:40 +02:00
Vesa
8ef10f4f81 More updates to FxMixer - better handling of muted channels 2014-11-16 13:46:54 +02:00
Vesa
ca06a10a42 Fix segfault when enabling/disabling sends while playing 2014-11-15 21:11:40 +02:00
Vesa
c92774af27 Improvement of FxMixer multithreading
Use dynamic building of jobqueues with dependency counting:
- At the start, each channel that has no dependencies is added automatically to the queue
- Then, after each channel is processed, it increments the dep.counter of all its recipients
- When a channel's dep.counter hits the amount of its dependencies (senders), it gets automatically added to the queue
- The queue is finished when the master channel has been processed
- Muted channels are automatically processed at the start regardless dependencies, because they don't have to care about senders, being muted

Hopefully this will improve Fx Mixer performance.
2014-11-15 18:51:49 +02:00
Lukas W
8e8879f735 Merge stable-1.1
Conflicts:
	include/ConfigManager.h
	include/MidiTime.h
	include/string_pair_drag.h
	src/gui/string_pair_drag.cpp
	src/gui/widgets/rubberband.cpp
2014-11-10 19:26:59 +01:00
Umcaruje
6fb923cba2 Correct the program name and site in the descriptions. 2014-11-04 22:56:50 +01:00
grindhold
865dcc5685 coding style fixes 2014-10-31 00:03:27 +01:00
grindhold
8fe009114d implemented solo-buttons for FxMixer - resolving #1211 2014-10-30 23:43:43 +01:00
Vesa
b084e91345 Merge branch 'stable-1.1'
Conflicts:
	data/locale/de.qm
	data/locale/zh.qm
	data/locale/zh.ts
2014-10-19 14:58:23 +03:00
Vesa
ec5384c10e Fix fxmixer bug where fx chains get shut off when multiple channels are chained together 2014-10-15 20:50:32 +03:00
Vesa
498d939e76 Merge branch 'stable-1.1' 2014-09-10 00:43:32 +03:00
Vesa
44993319eb Fix channel send connections
Fix #1147
Backwards compat should be maintained.
2014-09-10 00:40:29 +03:00
Tobias Doerffel
4cee046909 Added initial Qt5 support
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.
2014-08-14 17:34:49 +02:00
Vesa
88c60f5f94 Merge branch 'stable-1.1'
Conflicts:
	src/core/NotePlayHandle.cpp
2014-07-17 02:06:01 +03:00
Vesa
1a2351bbd0 Improve performance of effect processing, fix autoquit bugs
Also a slight NPH tweak
2014-07-17 01:48:24 +03:00
Vesa
921943bce1 Merge branch 'stable-1.1'
Conflicts:
	include/MixHelpers.h
	src/core/FxMixer.cpp
2014-07-13 22:20:10 +03:00
Vesa
e06c281132 Sanitize master output
Replace any inf/nan in master output with zero, to prevent corrupted files/audio.
2014-07-13 22:11:17 +03:00
Vesa V
8407427c4b Merge pull request #933 from LMMS/stable-1.1
Stable 1.1
2014-07-05 16:34:34 +03:00
Vesa
ec495716f4 Trailing spaces 2014-06-30 13:04:48 +03:00
Vesa
23433a70b5 Sample-exact models: improve
- Remove the redundant hasSampleExactData() function. Instead, signal lack of s.ex.data by returning a NULL in valueBuffer()
- Cache s.ex.buffers and only update them once per period
- Make valueBuffer() in AutomatableModel threadsafe so that it can be used for NPH's sharing the same model
- Add sample-exactness to instrumenttrack's vol & pan knobs
2014-06-30 01:59:18 +03:00
Vesa
a7bb31159e Merge branch 'stable-1.1'
Conflicts:
	include/basic_filters.h
	src/core/FxMixer.cpp
2014-06-28 17:24:23 +03:00
Vesa
0058b1064f Update channel send model names properly 2014-06-28 10:06:52 +03:00
Vesa
9243d94484 Fix qstring arg 2014-06-27 23:17:21 +03:00
Vesa
d9d085d14e FxMixer: rewrite mixer routing 2014-06-27 18:21:18 +03:00
Tobias Doerffel
eee2ba7f16 Merge remote-tracking branch 'origin/stable-1.1'
Conflicts:
	data/locale/de.qm
	data/locale/de.ts
2014-06-21 23:30:59 +02:00
Vesa
e733042cdb FxMixer: clearChannel had the same erroneous for loop as deleteChannel 2014-06-14 17:42:00 +03:00
Vesa
24bf336bf8 FxMixer: fix crashes on modifying sends
Added a mutex so that the GUI thread can't change the sends around during the rendering loop.
2014-06-14 14:53:22 +03:00
Vesa
3319380cf6 FxMixer: Fix channel delete 2014-06-14 14:37:27 +03:00
Vesa
43d1b30727 FxMixer, ValueBuffer, etc. fixes 2014-06-01 15:25:02 +03:00
Vesa
1c0f9700fa S.ex. models: implement support for sample-exact controls in fx-mixer
Works for all faders and send knobs
2014-06-01 07:17:43 +03:00
Vesa
0f37bd13ee FxMixer - Further optimization: skip copying buffers if we know the sender has no meaningful input to copy 2014-04-26 07:30:23 +03:00
Vesa
7d5250b93a FxMixer: turn off effects 2014-04-26 06:16:51 +03:00
Tobias Doerffel
89dc820d7b Merge remote-tracking branch 'origin/stable-0.4-new-fx-mixer'
Conflicts:
	include/PlayHandle.h
	src/core/FxMixer.cpp
	src/core/Mixer.cpp
	src/gui/FxMixerView.cpp
	src/tracks/InstrumentTrack.cpp
2014-03-26 11:21:15 +01:00
Tobias Doerffel
05e4cdaaef Revert "FxMixer: no need to check for master channel"
This reverts commit 1adc8f8ba3.

Closes #279.
2014-02-23 18:31:08 +01:00
Tobias Doerffel
8b84526dc5 Pattern: removed freeze functionality
Since addition of automation, controllers etc. the freeze functionality
has been rather broken and thus adds no value anymore. In order to not
confuse users with broken functionality, remove it at all.

Closes #345.
2014-02-19 19:07:47 +01:00
Tobias Doerffel
1adc8f8ba3 FxMixer: no need to check for master channel
The m_used property will always be true for the master channel as soon
as data was received from at least one FX channel.
2014-02-06 23:43:01 +01:00
Tobias Doerffel
f01c90b6a5 EffectChain: new argument hasInputNoise for processAudioBuffer()
Use the extra information to determine whether we need to process input
at all if plugin is not running anymore.

In FX mixer we now omit starting effects if no data has been mixed to
a certain FX channel. Instead let effects running until they finished.

First of multiple fixes for #267.
2014-02-06 22:20:23 +01:00
Tobias Doerffel
6c1835bdd1 FxMixer, Mixer, AudioPort: minor coding style fixes 2014-02-06 22:18:58 +01:00
Tobias Doerffel
c868d691ab Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
Conflicts:
	src/core/FxMixer.cpp
	src/gui/FxMixerView.cpp
2014-01-17 19:56:51 +01:00
Tobias Doerffel
dddf5eb61c FxMixer: ignore mute state in addChannelLeaf() to fix lockup
Even if we do not process the FX chain later, we at least have to enqueue
all related FX channels to the job queue in order to prevent a lockup.
2014-01-17 19:53:05 +01:00
Tobias Doerffel
4b5b0fa4fa FxMixer, FxMixerView: cache maximum peak until next display update
We lost short peaks because the display update rate usually is much lower
than the number of audio buffers processed per second which lead to lost
peaks. We mitigate this issue by caching the maximum peak value until the
next display update where it is reset.
2014-01-17 19:35:14 +01:00
Tobias Doerffel
5b480dd898 FxMixer: rewrote loop for adjusting FX channel models in deleteChannel() 2014-01-14 18:04:51 +01:00
Tobias Doerffel
a955fb755a FxMixer, Mixer, FxMixerView: backported FX send support from master branch
There once have been huge efforts to implement FX send support in the
master branch. In order to make it available on a stable base here's
a backport which is non-trivial as there have been major rewrites of
the mixer's worker thread architecture.

There still seem to be bugs which we have to fix before merging into
stable branch.

Thanks to Andrew Kelley for the original work.
2014-01-08 23:21:41 +01:00
Tobias Doerffel
0ff1f91c1b Mixer: renamed class and file name
The mixer class is now named "Mixer" and accessible via engine::mixer().
2014-01-08 22:35:14 +01:00
Tobias Doerffel
1cc77b72e3 Do not apply FX mixer effects twice when playing frozen pattern
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.
2011-06-27 20:27:03 +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