Commit Graph

2106 Commits

Author SHA1 Message Date
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
599e920c3f ResourcePreviewer: support for previewing samples and soundfonts
Implemented previewing of samples and soundfonts. This requires further
work as the current implementation only works for local resources.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 00:50:07 +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
fd417de7fd WebResourceProvider: fixed typo in fetchData(...)
The URL where to fetch actual resources still is /WebResources/...
instead of /WebResource/...

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 00:24:55 +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
0861dd7e88 ResourcePreviewer: implemented destructor
No destructor has been implemented so far. Added one which deletes
preview track.

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
46bd9f51cf ResourceBrowser: initially update filter status label
Initially update filter status label for not showing a blank label
after startup.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 01:35:59 +02:00
Tobias Doerffel
0e31b47d3e ResourceItem: do not query full name when computing suffix
Minor optimization: do not query full name of ResourceItem when only
computing suffix via QFileInfo in ResourceItem::guessType().

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 01:29:49 +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
1ee8d38ca7 UnifiedResourcesProvider: fixed calls to remergeItems()
Make a direct signal-slot-connection between
ResourcesDatebase::itemsChanged() of merged databases and
UnifiedResourcesProvider::remergeItems() for instantly updating items
in unified database.

Also call remergeItems() before emitting global itemsChanged() signal.

Furthermore instantly call remergeItems() after adding a new database.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 11:57:47 +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
d2831399bd MainWindow: add a ResourcesBrowser to sidebar
Instantiate a ResourcesBrowser and add it to sidebar so it's easy
accessible.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 14:36:55 +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
Tobias Doerffel
b3c5d498e2 RemoteVstPlugin: use SplittedThreading model for Proteus VX
Proteus VX requires SplittedThreading model in order to run properly.
Issues with actually working UI interaction still need to be worked
out although it rather looks like a bug in WINE.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-02 00:45:04 +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
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
dc539d88de ZynAddSubFX: fixed compilation failure of FLTK if glibc >= 2.10
Fixed compilation failure of FLTK on systems with glibc newer than
version 2.9 where the signature of scandir(...) has changed.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 00:55:23 +02:00
Tobias Doerffel
3003163e9b ZynAddSubFX: fixed compilation failure of FLTK
Fixed compilation failure of FLTK on broken systems where strchr()
takes a non-const char pointer.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-01 00:44:06 +02:00
Tobias Doerffel
8c50e0ef9a MinGW cross compiling script: fixed invocation of cmake
Fixed invocation of cmake in the MinGW cross compiling script so it
works properly when doing an out-of-tree build (which should be the
default way of building LMMS).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 18:51:59 +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
5b1900c4d0 ZynAddSubFX: processed UI files with Fluid from FLTK 1.3 branch
Processed all Fluid UI files with Fluid from FLTK 1.3 branch so the
generated code is up to date.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 18:38:40 +02:00
Tobias Doerffel
8affa66c61 ZynAddSubFX: integrated FLTK 1.3.0 branch from SVN
Integrated FLTK 1.3.0 branch from SVN which brings UTF8 support and
fully integrated Xft support (SVN rev. 6791).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-05-31 18:38:24 +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
Janne Matti Sinisalo
1a6652b5b1 Removed Skiessi's lame song.
Removed a crappy outdated unfinished project by Skiessi, which he
is about to replace with something better,  maybe.

How can I change the favourite editor of git?
2009-05-30 23:47:29 +03: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