Commit Graph

81 Commits

Author SHA1 Message Date
Tobias Doerffel
7fd04e0769 Plugins: export PluginDescriptors and lmms_plugin_main function
Various plugins were missing the PLUGIN_EXPORT declaration with their
PluginDescriptor instantiations and lmms_plugin_main implementation
which made some plugins not show up with latest Win32 build.
(cherry picked from commit f85898ba6e)
2010-07-24 22:54:00 +02:00
Tobias Doerffel
22489ae321 Sf2Player: disable per-note-panning support for the time being
The per-note-panning support is broken (not sure whether this is a bug
in FluidSynth or our code) and leads to improperly panned sounds all
the time - even with all notes being panned to center. Thus disable it
until we have a proper fix for it.
2010-05-17 23:27:42 +02:00
Tobias Doerffel
9fd3dacb67 Fixed spelling errors
Fixed some spelling errors found by Lintian while checking the Debian
package of LMMS. Thanks to Patrick Winnertz for pointing out this issue.
2010-01-25 23:24:42 +01:00
Tobias Doerffel
20589f19e4 Mixer: rewrote processing chain of rendered audio buffers
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.
2009-11-29 01:46:23 +01:00
Tobias Doerffel
6940d19969 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.
2009-09-15 10:10:02 +02:00
Tobias Doerffel
166701f9f3 sed: s/( void )/(), s/FALSE/false/, s/TRUE/true
Replaced remaining occurences of old constants and superfluous "void"
on empty argument list of functions.
2009-08-24 23:25:26 +02:00
Tobias Doerffel
8c9a9dd14c 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.
2009-08-24 17:59:28 +02:00
Tobias Doerffel
7bea6d0e07 MainWindow: renamed class to match new style
Renamed mainWindow to MainWindow and engine::getMainWindow() to
engine::mainWindow(). Additionally reduced some header dependencies.
2009-08-21 12:09:39 +02:00
Tobias Doerffel
964c6532f2 Sf2Player: removed trailing spaces in code
There were some unsolicited trailing spaces in the code. Removed them.
2009-08-05 18:04:39 +02:00
Tobias Doerffel
144f0c6c80 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.
2009-08-05 18:00:04 +02:00
Tobias Doerffel
4baf459da2 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.
2009-08-05 12:37:02 +02:00
Tobias Doerffel
0bb54199b0 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
2009-08-05 11:41:59 +02:00
Tobias Doerffel
d1353247d9 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>
2009-07-05 16:33:49 +02:00
Tobias Doerffel
f943df139e InstrumentView: added generic DnD support, renamed/splitted files
Added generic drag'n'drop support for all instrument views. All
resources supported by the according instrument now can be dropped
onto instrument view without any extra code in actual instrument.

Additionally renamed some files and classes related to InstrumentView
class to match new style.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-30 01:19:48 +02:00
Tobias Doerffel
01fc74939c Sf2Player: adapted to resource framework
Adapted Sf2Player plugin to new resource framework support in plugin
base class.

Furthermore some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 23:30:12 +02:00
skiessi
df34815be0 Getting rid of some more useless bytes. 2009-04-14 20:04:21 +03:00
Tobias Doerffel
b1fe2dcbdf Sf2Player: fixed hanging notes with enabled panning support
If SF2_PANNING_SUPPORT is set, overlapping notes of the same key played on
different MIDI channel caused some notes to hang. This commit fixes the issue.
2009-03-16 16:51:35 +01:00
Tobias Doerffel
12fd3206b4 Sf2Player: truncated LOG440 constant
Having LOG440 as double with a mantissa of 51 digits doesn't help anything.
Truncated to float with 9 digits.
2009-03-16 15:37:16 +01:00
Tobias Doerffel
f0cd8631d7 Sf2Player: properly update patch if panning support is enabled
If SF2_PANNING_SUPPORT is set, changed patches were applied to current
channel after calling fluid_synth_noteon(...) - some notes still were played
with the old patch until m_channel made one round trip.
2009-03-15 21:57:17 +01:00
Tobias Doerffel
a4c1797822 update patch after loading settings (closes #2486372)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@2023 0778d3d1-df1d-0410-868b-ea421aaaa00d
2009-02-12 23:24:29 +00:00
Tobias Doerffel
276f1e343c fixed broken panning support
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1946 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-12-16 16:51:42 +00:00
Andrew Kelley
87a9be583f sf2 understands panning midi meta events now
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1942 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-12-16 11:46:41 +00:00
Andrew Kelley
7fe4f1e60c experimental support for note panning in SF2 player (I'm not sure what m_maxChannels should be or how to find it out. I just picked what worked for my setup.)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1941 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-12-16 11:24:05 +00:00
Tobias Doerffel
986fce1126 fixed broken reference sharing
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1830 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-11-04 20:03:36 +00:00
Tobias Doerffel
87ee43a079 made STRINGIFY_PLUGIN_NAME from embed.h a generic macro STRINGIFY in lmms_basics.h
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1784 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-19 21:48:57 +00:00
Tobias Doerffel
33c63d011c do not mess around with global static pointers for a single instance of patchesDialog - create a local object instead (closes #2139701)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1772 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-10-18 14:59:27 +00:00
Tobias Doerffel
adf8aed93c removed obsolete instrument-parallelization support as this is handled much better by worker threads and adds unneccessary complexity
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1718 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-30 11:14:32 +00:00
Tobias Doerffel
63da74283c use notePlayHandle::getMidiVelocty() rather than notePlayHandle::getVolume() for allowing less bright sounds by decreasing instrument-track's volume (if soundfont supports it)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1716 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-29 19:30:24 +00:00
Tobias Doerffel
880c322cf6 * replaced instrument::notePlayHandleBased() with instrument::isMidiBased()
* renamed bendable() to isBendable()
* if the instrument is MIDI based and instrument-track's volume is below 100, adjust velocity of MIDI events and scaling factor when mixing sound



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1715 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-29 19:29:04 +00:00
Tobias Doerffel
778293b31e fixed compiler warnings
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1680 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-21 23:47:02 +00:00
Paul Giblock
74ac69ed1a Fix reference sharing in SF2 player
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1653 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-21 00:19:48 +00:00
Tobias Doerffel
6f0645c66b try to use relative paths for s_fonts map too as otherwise s_fonts.remove( m_filename ) won't do anything if a full path was inserted and m_filename was made relative - fixes crash when re-opening a soundfont which was shared before
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1625 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-17 09:52:51 +00:00
Paul Giblock
18873f7305 Add Portsmf MIDI importing to trunk
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1622 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-17 08:11:38 +00:00
Tobias Doerffel
da2fcf130a UI finetuning / recompression of some PNG-files
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1589 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-08 12:47:11 +00:00
Tobias Doerffel
fa1a9f4967 * rewrote the way plugins can handle certain filetypes
* rewrote various parts of file-browser to be less redundant and more stable (closes #2071891)



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1582 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-09-07 22:38:23 +00:00
Tobias Doerffel
9b47d27f56 * improved concept for file types supported by certain plugins
* various small improvements for an even better ZynAddSubFX integration



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1520 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-08-30 00:07:02 +00:00
Tobias Doerffel
025fa4ec8a fixed reverb/chorus after change of samplerate
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1444 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-08-19 17:29:10 +00:00
Tobias Doerffel
578323448f * query data from correct model when activating reverb (closes #2035134)
* convert from note-play-handle's volume to MIDI-velocity when calling fluid_synth_noteon()
* set fluidsynth's internal interpolation-method to high-quality when running LMMS in HQ-mode



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1434 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-08-05 14:52:30 +00:00
Tobias Doerffel
81bfa8cdad * integrated patch by Csaba Hruska
* fixed spinbox-ranges



git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1423 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-08-01 16:14:29 +00:00
Tobias Doerffel
257e60ab37 reduced header-dependencies
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1406 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-28 21:39:08 +00:00
Tobias Doerffel
be0c5b9bc4 various fixes for allowing out-of-tree builds
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1363 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-22 23:50:59 +00:00
Tobias Doerffel
e637495489 migrated build-system to CMAKE
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1352 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-22 11:36:50 +00:00
Tobias Doerffel
cd2f51b05b fixed compiler warnings
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1325 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-18 10:08:37 +00:00
Tobias Doerffel
3d0a8e95a2 added missing SOURCES-entry for UI-file
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1302 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-11 22:42:16 +00:00
Tobias Doerffel
61f2990c19 sf2player: added support for pitch-bending
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1293 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-07 08:34:27 +00:00
Tobias Doerffel
60e5117a94 removed ui_patches_dialog.h from SOURCES-list
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1262 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-07-01 16:42:54 +00:00
Paul Giblock
3f738ae1a9 Correctly initialize sf2 gain on startup
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1196 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-29 04:30:10 +00:00
Tobias Doerffel
6f92953374 enabled LCD-Spinboxes for easily switching banks/patches
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1119 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-10 09:14:12 +00:00
Paul Giblock
f7b160d34f Integrate new SF2 artwork, for the most part :)
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1118 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-10 06:49:47 +00:00
Paul Giblock
8654b47182 Update some plugins to use displayName
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1079 0778d3d1-df1d-0410-868b-ea421aaaa00d
2008-06-06 07:42:21 +00:00