Commit Graph

779 Commits

Author SHA1 Message Date
Tobias Doerffel
9804cb7db8 ResourcePreviewer: save and restore default settings of InstrumentTrack
After instantiation of InstrumentTrack save its settings so we can
restore it each time before previewing resources. Otherwise preview
of incomplete presets or just samples could be distorted by settings
of previosly loaded preset.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 15:17:25 +02:00
Tobias Doerffel
22716bccf1 ResourceBrowser: added a PianoView widget
Added a PianoView widget to ResourceBrowser so one can easily preview selected
preset, sample etc.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 15:15:43 +02:00
Tobias Doerffel
d866015dc9 PianoView: use layout for flexible widget size
Use a vertical box layout for PianoView and and track resize events
in order to keep scrollbar range up to date. This way PianoView's size
is not fixed anymore and the PianoView widget can be placed inside
other layouts without any restrictions.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 14:39:25 +02:00
Tobias Doerffel
01a83deee7 InstrumentTrack: renamed getPiano() to pianoModel()
Renamed getPiano() to pianoModel() to better express what this
function does.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 13:58:45 +02:00
Tobias Doerffel
b8abfd24b6 ResourceFileMapper: new class for local access to resources
Added ResourceFileMapper which is an inline class allowing to access
all kind of ResourceItems locally by creating a QTemporaryFile object
and fetch data where neccessary (i.e. ResourceItem::isLocalResource()
returns false).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 12:20:25 +02:00
Tobias Doerffel
7d0facf78d ResourceBrowser: preview resource while holding down mouse button
Use our ResourcePreviewer object to actually playback preview sounds
while holding down mouse button.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 00:32:58 +02:00
Tobias Doerffel
d11bf48891 ResourcePreviewer: start/stop playback of preview sound
Make the internal InstrumentTrack play the default key in preview()
and stop playback in new method stopPreview().

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 00:30:39 +02:00
Tobias Doerffel
3c9859da9f InstrumentTrack: new method silenceAllNotes()
Added new method silenceAllNotes() which is a replacement for
invalidateAllMyNPH() and also resets m_runningMidiNotes array.

silenceAllNotes() is now used in destructor as well.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-10 23:49:06 +02:00
Tobias Doerffel
a1c4992a89 ResourcePreviewer: disable journalling when previewing
Globally disable journalling when previewing a ResourceItem (i.e. load
a preset, sample etc.).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-10 23:49:06 +02:00
Tobias Doerffel
6fabe26620 ResourceItem: added TypePluginSpecificPreset
Added another type TypePluginSpecificPreset in Types enumeration. This
allows handling for example XIZ files (ZynAddSubFX presets) properly.
2009-06-07 16:28:54 +02:00
Tobias Doerffel
264b50fcc6 ResourcePreviewer: initial version
Added initial version of ResourcePreviewer, a replacement for the old
PresetPreviewPlayHandle technology. It can take any ResourceItem and
preview it depending on its type.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 01:15:11 +02:00
Tobias Doerffel
a6090ebe23 InstrumentTrack: presetPreviewPlayHandle no longer a friend class
For a long time presetPreviewPlayHandle has been a friend class of
InstrumentTrack as it had to modify MidiPort settings. However the
InstrumentTrack's MidiPort is now accessible via getMidiPort() so
there's no need for keeping presetPreviewPlayHandle a friend class
anymore.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 01:09:07 +02:00
Tobias Doerffel
5a00ebd360 MultimediaProject: splitted constructor for loading either file or data
The old constructor treated the string argument either as filename or
as raw XML data, depending on 2nd parameter. This is a mess and quickly
leads to confusion.

Now we have two constructors taking either a filename as string or a
QByteArray with XML data. Loading actual data has been separated into
MultimediaProject::loadData( const QByteArray & ).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 00:55:25 +02:00
Tobias Doerffel
eb77b99220 Completed commit ea2b165cbd
Commit ea2b165cbd was incomplete.
Fixed some #include statements. All compile errors should be gone now.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 23:41:09 +02:00
Tobias Doerffel
ea2b165cbd Renamed Resources* classes to Resource* and renamed files
Naming classes like ResourcesItem or ResourcesDatabase is bad style,
therefore rename all classes and files to be Resource*.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 22:53:05 +02:00
Tobias Doerffel
14fef9152c ResourcesBrowser: improved item filtering
Filter line-edit is now placed above actual tree view and has been
decorated with a small icon as well as a status label, displaying the
number of filtered and total number of items.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 11:58:48 +02:00
Tobias Doerffel
74a4635ed3 SideBarWidget: new addContentLayout() method
Added addContentLayout(QLayout *) method to SideBarWidget in order to
allow subclasses to add whole layouts as well.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 11:50:08 +02:00
Tobias Doerffel
359b73c2a3 ResourcesBrowser: implemented item-sensitive context menu
Implemented context menu for ResourcesBrowser with various actions
inside depending on selected item.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 00:29:56 +02:00
Tobias Doerffel
c5bf76b98c ResourcesTreeModel: encapsulate conversion from index to items
Encapsulate conversion from a QModelIndex to a ResourcesTreeItem
or a ResourcesItem into static methods.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 15:32:45 +02:00
Tobias Doerffel
39b489d522 ResourcesItem: added isLocalResource() method
Added isLocalResource() method which returns whether it belongs to a
local ResourcesProvider or not.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 15:01:59 +02:00
Tobias Doerffel
3eb96c418e ResourcesProvider: added isLocal() method
Added isLocal() method for returning whether according provider class
provides local resources or not (will allow a download option for
non-local resources later).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 15:00:26 +02:00
Tobias Doerffel
f6fe2a16ad ResourcesBrowser: new class providing a view for browsing resources
Added a new class ResourcesBrowser which represents a complete view
for browsing all available resources. It only allows filtering at the
moment but more features will follow soon.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 14:36:28 +02:00
Achim Settelmeier
7e3931e384 Automatically select config box upon change
Automatically select either controller or key group box in
MidiControlListener new action dialog if the user changes something
inside the group.

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
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
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
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
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
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
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
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
f514dfdbb3 InstrumentTrack: made pitch range model publicly accessible
Added InstrumentTrack::pitchRangeModel() in order to allow other classes
to access pitch range model.
2009-05-16 17:17:54 +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
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
Janne Matti Sinisalo
f7edd7089a Fixed compatibility with libslv2 0.6.4.
Fixed includes to work with libslv2 0.6.4 and newer. :) Broke compatibility with 0.6.2 and older. :( Maybe there could be some test for this?
2009-05-12 16:25:06 +03: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
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
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
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
1802b91e55 RemotePlugin: allow waitForInitDone() without busy waiting
An additional parameter to waitForInitDone() allows to disable busy
waiting which could be desired in various places to avoid deadlocks.
2009-04-18 17:41:37 +02:00