In order to keep compatibility with projects created with LMMS < 1.0.0
we maintain a property specifying the base velocity (i.e. the velocity
sent to MIDI-based instruments at volume=100%). For new projects this
always will be 64 while compat code enforces a value of 127 for old
projects.
We can also think about hiding the new groupbox in order to hide
complexity from the user.
Closes#430.
Next big coding style update - this time all PlayHandle classes are
affected. Functions like done() and released() were renamed to
isFinished() and isReleased().
Also removed all blocks similar to
```
#if QT_VERSION >= 0x040806
filedialog.setOption( QFileDialog::DontUseCustomDirectoryIcons );
#endif
```
as this now takes place in the new subclass's constructor.
When creating a new Sf2Player plugin instance, load the default
soundfont. Might decrease performance a little bit when loading projects
which make use of many other soundfonts but for the sake of improved
usability we should accept this.
Partially closes#3149779.
When changing an InstrumentTrack's base note while NotePlayHandles are
active, they will send a wrong MidiNoteOff event due to the masterKey()
translation in InstrumentTrack::processOutEvent().
Therefore in NotePlayHandle remember the original base note value and
add the difference between original and current base note to the value
returned by NotePlayHandle::key(). Fixes hanging notes in MIDI-based
instruments such as ZynAddSubFX.
Furthermore some coding style improvements.
Closes#3146975.
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.
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.
(cherry picked from commit 22489ae321)
Fixed some spelling errors found by Lintian while checking the Debian
package of LMMS. Thanks to Patrick Winnertz for pointing out this issue.
(cherry picked from commit 9fd3dacb67)
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)
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)
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)
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.
* 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)
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)
* 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