Commit Graph

1261 Commits

Author SHA1 Message Date
Achim Settelmeier
00400dbfc0 Fixed compiler warning
Tobydox' enum change (7a65687746) introduced a compiler warning about
unhandled switch() case. Fixed now.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 22:12:05 +02:00
Achim Settelmeier
288756e30f Help text for MidiControlListener setup dialog
Added a "(?)" button and help text to the Midi Control Listener
setup dialog.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 22:12:05 +02:00
Tobias Doerffel
07267abca0 MidiControlListener: use QString::isEmpty() for testing string
Instead of doing a whole string comparison against "", use
QString::isEmpty() which is both faster and better style.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 11:12:26 +02:00
Tobias Doerffel
7a65687746 MidiControlListener: replaced static numActions by enum constant
It's not a good idea to have a separate constant determining the number
of items in an enumeration because you can easily get inconsistencies.
Use the last element of enumeration as NumActions constant instead.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 11:12:17 +02:00
Achim Settelmeier
21c669e6b3 MCL setup: fine-tune layout of setup dialog
Sizing of the columns in the action table corrected in the
setup dialog for MidiControlListener.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 10:51:56 +02:00
Achim Settelmeier
599ae94bd3 Set up some nice default values for MidiControlListener.
This adds some nearly-standard keys and controllers to give new users
a hint how the MIDI remote control works.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 10:51:21 +02:00
Achim Settelmeier
e2b85f963f MidiControlListener can jump to begin/end of loop
Implements the MCL actions JumpToLoopStart and JumpToLoopEnd which
update the position in the via the timeLine object.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 10:51:21 +02:00
Achim Settelmeier
86b0056488 En-/disable loop points via MidiControlListener
MidiControlListener's toggleLoop action makes the song object emit a
loopPointsChanged signal, which timeLine connects to and enables or
disables the loop points accordingly.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 10:51:21 +02:00
Tobias Doerffel
134c6188c4 Explicitely prefix Qt includes with their respective Qt module
LMMS didn't compile successfully if individual paths to headers of
each Qt module were not added to the list of include directories to be
searched by the pre-processor. However it has to work this way,
therefore I changed lines like

  #include <QGraphicsScene>

to

  #include <QtGui/QGraphicsScene>

Please care in the future!

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 18:50:15 +02:00
Tobias Doerffel
7873afcf54 ConfigManager: do not save configuration upon destruction
Do not save configuration file in destructor of ConfigManager as
at this place the whole LMMS engine already has been shutdown and
thus saving e.g. configuration of MidiControlListener causes a
segfault. Instead explicitely save configuration file at the
beginning of Engine::destroy().

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 12:31:01 +02:00
Achim Settelmeier
bc2815118b Added MIDI device selection menu for MidiControlListener to setup dialog.
The MIDI device(s) where the MidiControlListener can receive events from
can now be configured in the setup dialog.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 12:11:08 +02:00
Achim Settelmeier
de26ba5f00 New methods to unsubscribe all readable/writeable ports of a midiPort object.
Moved the code to unsubscribe all readable and/or writeable ports to own
methods and thus made them publically available to avoid duplicate code.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 12:11:08 +02:00
Achim Settelmeier
227de591bd Use midiPort's loadSettings()/saveSettings() API.
Changed MidiControlListener to use the built-in API to save and restore
the midiPort configuration instead and removed the old iterator.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 12:11:07 +02:00
Achim Settelmeier
555d589354 Select key for MidiControlListener in setup dialog via pianoView widget.
Introduces a new class, DummyMidiEventProcessor, that does nothing but
update the baseNoteModel upon keypress.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 12:11:07 +02:00
Achim Settelmeier
fb935ecfac Code refactoring to use iterator instead of Qt's elementsByTagName().
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 12:11:06 +02:00
Achim Settelmeier
9adc592fb5 Use iterator to traverse XML tree
elementsByTagName() may return an empty list thought there should be
elements. As the reason and circumstances of the method for doing so
are unclear, an iterator approach is used instead

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-29 01:52:28 +02:00
Achim Settelmeier
cc317032e3 Refactoring to follow current code style guide
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-29 01:52:27 +02:00
Achim Settelmeier
720e332891 Added PianoView to new dialog
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-29 01:52:27 +02:00
Achim Settelmeier
8d5b2c4813 MIDI Control Listener setup dialog
Adds GUI elements to the global setup dialog to configure remote
controlling of LMMS via MIDI. The GUI is not yet fully functional,
though.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-29 01:52:27 +02:00
Achim Settelmeier
57d4024c2a Save and load MIDI control listener settings
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-29 01:52:27 +02:00
Tobias Doerffel
8395c9428c Moved baseNoteModel from InstrumentTrack to MidiEventProcessor; cleanups
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.
2009-05-29 01:35:52 +02:00
Tobias Doerffel
cdcc158c03 TrackView: do not set Qt::WA_OpaquePaintEvent attribute
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).
2009-05-25 13:47:30 +02:00
Tobias Doerffel
aaf45467b2 Track UI: coding style fixes
Fixed indentation issues and the like.
2009-05-25 13:27:26 +02:00
Tobias Doerffel
031e87b307 LV2: moved conditional include into lv2_manager.h
Moved conditional #include <slv2/scalepoints.h> from lv2_manager.cpp
into lv2_manager.h so we only have to have this compat code in one
place.
2009-05-24 01:28:16 +02:00
Tobias Doerffel
41c939f5aa AutomationRecorder: delete after Song object
Delete the AutomationRecorder after Song object. Otherwise LMMS crashes
at exit (closes #2793356).
2009-05-20 18:18:30 +02:00
Tobias Doerffel
6d77f83ae9 ControllerConnection: fixed segfault when finalizing invalid controller
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.
2009-05-19 18:32:24 +02:00
Tobias Doerffel
002021aac5 ResourcesDB: save type and basedir property as string rather than number
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.
2009-05-18 14:27:02 +02:00
Tobias Doerffel
55548d58c0 AutomationRecorder: instantiate even in console-only mode
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.
2009-05-17 00:00:16 +02:00
Tobias Doerffel
41907a7ebf InstrumentTrack: added support for changing pitch range
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.
2009-05-16 16:58:44 +02:00
Tobias Doerffel
24353ca248 PianoRoll: removed unused variable
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
2009-05-16 15:16:54 +02:00
Tobias Doerffel
9dcb62c630 NotePlayHandle: use public method for accessing pitch model
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.
2009-05-16 15:08:40 +02:00
Tobias Doerffel
40b9b1cb4c LV2: fixed compilation without LV2 support or older versions of LV2
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.
2009-05-15 18:23:09 +02:00
Achim Settelmeier
f4e929022e Added MidiControlListener for controlling LMMS via MIDI
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.
2009-05-05 23:43:47 +02:00
Achim Settelmeier
515f0243b9 MainWindow: fixed problems with maximized window-state when using FVWM2
Added a workaround for FVWM2 as showMaximized() does not work with it
unless the window is already visible.
2009-05-05 23:35:40 +02:00
Tobias Doerffel
6929caa777 Pass main window as parent for progress dialog when loading project
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.
2009-05-04 23:23:06 +02:00
Tobias Doerffel
ccb65f4b40 Added universal codebase for dragging plugin-specific presets
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.
2009-05-03 16:10:06 +02:00
Tobias Doerffel
ebd3d26531 LadspaControl: set name property for tempoSyncKnobModel
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.
2009-05-03 15:26:43 +02:00
Tobias Doerffel
9cced2957c EffectView: always check whether effect has a control dialog
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).
2009-05-03 15:09:58 +02:00
Tobias Doerffel
324b5afb50 LV2: fixed serious violations of coding style conventions
Unfortunately new LV2 code didn't respect coding style conventions
so I fixed most of it and did various other cleanups. Still needs some
work though.
2009-04-30 01:09:20 +02:00
Martin Andrews
b40a9e1905 LV2: Manager now in LMMS core
Moved LV2Manager to LMMS core so it can be used by several plugins.
Furthermore made LMMS instead of LV2 browser plugin link against SLV2
libraries.
2009-04-30 00:29:38 +02:00
Andrew Kelley
c12b716458 Experimental automation recording support
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
2009-04-28 17:56:49 -07:00
Andrew Kelley
198cfe96b4 fix alignment of automation recording 2009-04-28 17:56:49 -07:00
Andrew Kelley
bdd1ca0bfe fix knob not being updated when controlled 2009-04-28 17:56:49 -07:00
Andrew Kelley
57824bb2d1 make knobs easier to tune 2009-04-28 17:56:49 -07:00
Andrew Kelley
f40b61045a implemented automation recording 2009-04-28 17:56:48 -07:00
Tobias Doerffel
12d26ed0aa InstrumentTrackWindow: clear focus on closeEvent
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).
2009-04-25 16:39:44 +02:00
Tobias Doerffel
780447d751 BasicOpsX86: regenerated with final 4.4.0 release of GCC
Regenerated BasicOps assemblies with final 4.4.0 release of GCC,
providing some more minor optimizations.
2009-04-23 12:09:39 +02:00
Tobias Doerffel
232c1de404 InstrumentTrackView: save and restore last position of window
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.
2009-04-18 18:25:44 +02:00
Tobias Doerffel
5828643582 Note class: renamed method "bool selected()" to "bool isSelected()"
In class "Note" renamed method "bool selected()" to "bool isSelected()"
in order to match coding style conventions.
2009-04-17 15:11:41 +02:00
Tobias Doerffel
efb335cea7 PianoRoll: do not make notes disappear under certain circumstances
When starting LMMS, loading an existing project and opening a pattern
with notes inside in piano roll, moving single notes showed unexpected
behaviour, i.e. the according note has been moved somewhere unreachable.

I tracked this down to a missing initialization of m_moveBoundary*
variables. Adding a few lines fixes the issue (closes #2632909).
2009-04-17 15:07:54 +02:00