Moved baseNoteModel from InstrumentTrack class to MidiEventProcessor
class in order to make Piano class independent from InstrumentTrack
class (so it can be used by other classes as well).
Furthermore did various cleanups and coding style improvements.
When invoking C compiler to build our assembler files evaluate first
compiler argument and fix it if neccessary). This allows building
master branch with distcc.
Due to optimizations in Qt 4.5 setting Qt::WA_OpaquePaintEvent attribute
for TrackView widgets caused a line of distorted pixels at the bottom of
the left part so do not set this attribute anymore (closes#2795861).
In ControllerConnection::finalizeConnections() we did not check whether
the current controller ID really exists in Song's controller array.
Fixes segfault when loading projects with screwed controller settings.
So far the type and basedir properties were saved as numbers (as they
are defined in internal enumeration). This is bad style so these
properties are now translated into a human-readable string when saving
and back to internal enumeration type when loading.
Always create an instance of AutomationRecorder in Engine class as
it is not related to GUI at all. Fixes crash when rendering a project
in console-only mode.
Similiar to the pitch knob of a instrument track, the range of the fine
detuning knobs in TripleOscillator is now changed dynamically as well.
This allows new kind of sounds by hardsyncing with a detuning of up
to +/- 2400 cents.
Added a new LCD spinbox which allows to control the range of the pitch
knob. This way it's possible to extend the range of the pitch knob up
to 24 semitones in each direction.
Removed unused variable volumeHandles in
PianoRoll::computeSelectedNotes(bool) which as a side-effect also fixes
/usr/include/qt4/QtCore/qvector.h: In member function ‘void PianoRoll::computeSelectedNotes(bool)’:
/usr/include/qt4/QtCore/qvector.h:421: warning: dereferencing pointer ‘<anonymous>’ does break strict-aliasing rules
/usr/include/qt4/QtCore/qvector.h:114: note: initialized from here
Do not use private m_pitchModel member variable of InstrumentTrack even
if NotePlayHandle is a friend class. Instead use the already existing
InstrumentTrack::pitchModel() method.
LV2 core was not compiled conditionally into LMMS binary so compilation
failed when building without LV2 support. Furthermore added
compatibility code for SLV2 <= 0.6.2.
MidiControlListener is MidiEventProcessor that listens for specific
MIDI events in order to control LMMS' transportation (currently only
start/stop). Can be advanced later to control other things in LMMS.
This commit fixes some calls to functions that are taking a format
string and an optional set of parameters as arguments. At some places
no format string was specified if only a simple C string was to be
sprintf()ed. However for security reasons this is bad and was replaced
by code like
sprintf( dest, "%s", str );
Make progress dialog when loading project a proper sub-window of LMMS
by passing main window as parent to constructor of QProgressDialog.
Fixes default window icon and additional taskbar item.
Added new stringPairDrag type "pluginpresetfile", allowing to drag
and drop any kind of plugin-specific preset files everywhere in the
program. Adopted changes in ZynAddSubFX plugin.
For each model but the tempoSyncKnobModel the name property was properly
passed to the according constructor. This made time-based knobs in LADSPA
effects have no internal name, e.g. there were blank captions in the
knob's context menu or empty titles when used in combination with
automation patterns.
Depending on whether VST effect has an editor return 1 or 0 in
VstEffectControls::getControlCount(). This prevents the EffectView in
the effect rack from showing a "Controls" button and creating an empty
subwindow.
Do not add empty subwindows for effects that do not have a control
dialog at all (i.e. Effect::getControlCount() == 0). Also check whether
creation of control dialog was successful. Fixes possible crashes if
something went wrong with the effect (e.g. loading VST effect failed).
This commit integrates initial support for LV2 plugins. This currently
includes the LV2 browser and is meant for development purposes only.
According changes were made to the build system in order to find
required libraries and header files.
Allows you to record automation by arming an automatable model
and then recording with the RecordAndPlay button.
Known bugs:
* when you record and there is already an auto clip, it repeats it
* it freezes when you try to do it with the Volume or Panning slider
* crashes when you try to do it with a solo/mute button
When closing an InstrumentTrackWindow make sure it doesn't still have
keyboard focus (looks like a bug in Qt) and set focus on
trackLabelButton instead (closes#2780590).
When closing a InstrumentTrackWindow save its position so it can be
restored later when showing it. Fixes windows always popping up
somewhere else when toggling instrument track button repeatedly.