Commit Graph

2152 Commits

Author SHA1 Message Date
Tobias Doerffel
01fc74939c Sf2Player: adapted to resource framework
Adapted Sf2Player plugin to new resource framework support in plugin
base class.

Furthermore some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 23:30:12 +02:00
Tobias Doerffel
6ebe8df65a MidiImport: adapted to resource framework
Adapted MidiImport plugin to new resource framework support in plugin
base class. Files for PatMan or soundfonts for Sf2Player are now
relocated using resources framework.

Furthermore some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 23:29:07 +02:00
Tobias Doerffel
ac4ef21ab7 ConfigManager/SetupDialog: preparations for resource framework migration
Some initial work on saving hash of default soundfont rather than a
filename. Doesn't work yet but will be improved with rewritten setup
dialog.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 23:24:10 +02:00
Tobias Doerffel
9701ed5c31 ZynAddSubFX: adapted to resource framework
Adapted ZynAddSubFX plugin to new resource framework support in plugin
base class.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 14:43:33 +02:00
Tobias Doerffel
40e6d26dbb Handle plugin-specific resources in TrackContainerView/ResourcePreviewer
Up to now plugin-specific resources (e.g. ZynAddSubFX presets) were
not previewed or loaded into a track container. This now works by
adding TypePluginSpecificResource to the according switch-block.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 14:43:33 +02:00
Tobias Doerffel
77a7db5d2e ResourceItem: dynamically register plugin-processed file types
Dynamically extend the map of file types by plugin-processed file types.
Furthermore renamed type TypePluginSpecificPreset to
TypePluginSpecificResource.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 14:43:08 +02:00
Tobias Doerffel
3507a44175 PatMan: adapted to resource framework
Adapted PatMan to new resource framework support in plugin
base class.

Furthermore some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 13:26:34 +02:00
Tobias Doerffel
f4c2249d3a AudioFileProcessor: adapted to resource framework
Adapted AudioFileProcessor to new resource framework support in plugin
base class.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 13:24:45 +02:00
Tobias Doerffel
81721b6524 PresetPreviewPlayHandle: removed
Removed unused class PresetPreviewPlayHandle with all its sub- and
helper-classes. Lots of dirty code this way gets cleaned up/removed.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 13:16:11 +02:00
Tobias Doerffel
3c5c5f9cb3 FileBrowser: remove from LMMS
Remove deprecated FileBrowser from LMMS as everything is now managed by
ResourceBrowser. This will allow further removal of deprecated
technologies.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:58:10 +02:00
Tobias Doerffel
a4a6c14af0 Make use of new ResourceAction class
Replaced deprecated (duplicate) code for loading various kind of files
with ResourceAction-based code.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:53:33 +02:00
Tobias Doerffel
7821dd210e ResourceAction: new class for centralized functionality
Added new class ResourceAction which centralizes functionality of all
actions related to ResourceItems. This includes loading projects,
samples, presets, plugin-specific presets etc.

Using this new class we can avoid duplicate functionality in
ResourcePreviewer, ResourceBrowser, TrackContainerView, InstrumentTrack
etc.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:48:45 +02:00
Tobias Doerffel
d3cf731dc9 Plugin: initial integration of resource framework
Replaced deprecated Plugin::loadFile(QString) method by
Plugin::loadResource(ResourceItem), a future interface to be adapted
by invididual plugins.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:41:53 +02:00
Tobias Doerffel
3ca017e8fb ResourceItem: new method nameExtension(), new type ResourceItemList
Added new method ResourceItem::nameExtension() which returns the
extension of the name of an item (e.g. a filename extension such as
"wav" or similiar).

Added new type ResourceItemList, a QList of ResourceItem pointers.

Furthermore some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:39:00 +02:00
Tobias Doerffel
fb5c974365 ResourceDB: new method matchItems(), renamed ItemList to ItemHashMap
Added new method ResourceDB::matchItems() which returns a list of item
which somehow match the given list of keywords.

Furthermore renamed ItemList to ItemHashMap to better reflect actual
container type.

Additionally some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:38:19 +02:00
Tobias Doerffel
fd9d2b0e61 Do not build ZynAddSubFX on OS X
Do not build the ZynAddSubFX plugin on OS X until a proper replacement
for unnamed semaphores (which for whatever reason are not supported on
OS X) has been implemented. Using the win32 code (QSystemSemaphore)
could be an option but needs testing.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-28 23:42:38 +02:00
Tobias Doerffel
ed30985aa4 Various fixes for properly building on OS X
There were various (trivial) problems with settings of the build system
which prevented LMMS from being built on OS X.

Thanks to Daniel Klaffenbach for providing his Mac for development
purposes.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-28 23:42:38 +02:00
Tobias Doerffel
891b46fd65 ResourceItem: added copy constructor
Added copy constructor for ResourceItem class so one can easily
duplicate a ResourceItem.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 16:38:04 +02:00
Tobias Doerffel
1f9a7a1c0e TrackContainerView: added support for dropping ResourceItems
Added support for dropping ResourceItems on a TrackContainerView. Now
it's possible to drag samples, presets and soundfonts from the new
ResourceBrowser into Song Editor or BB Editor (code needs to be ported
to new Song Editor later).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 01:02:01 +02:00
Tobias Doerffel
30543d708c ResourceDB: added itemByHash() method
Added itemByHash() method to ResourceDB class allowing safe access to
an item identified with an according hash. If there's no item associated
with the hash, NULL is being returned.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 01:00:33 +02:00
Tobias Doerffel
75a45cca5f ResourceBrowser: stop preview when drag operation starts
Make sure preview is stopped as soon as a drag operation starts. This
is done by overloading QAbstractItemView::startDrag() and emit a signal
from there which is connected to an according slot in ResourceBrowser.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 00:13:40 +02:00
Tobias Doerffel
65b044c5c1 ResourceTreeView: enable dragging items
Actually enable dragging items. No further code is required here because
everything else is handled by the model and QTreeView base class.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-22 23:49:14 +02:00
Tobias Doerffel
dc90c899aa ResourcesTreeModel: support for dragging ResourceItems
Added initial support for dragging ResourceItems. This is achieved by
using drag'n'drop support offered by Qt's model/view technology.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-22 23:45:26 +02:00
Tobias Doerffel
0c73c5bb17 StringPairDrag: added static createMimeData() method
Added createMimeData() method to StringPairDrag which creates a proper
QMimeData object for StringPairDrag. External code can use it to create
a QMimeData object which can be received by users of StringPairDrag.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-22 23:42:15 +02:00
Tobias Doerffel
ddf3d3dc66 AutomationEditor: set pen for painter outside inner loop
Set pen for drawing automation pattern outside of inner loop. This
might save some CPU cycles.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-22 22:07:51 +02:00
Tobias Doerffel
0ae508d65f ResourceItem: removed support for deprecated filename extension
Do not support deprecated extension ".cs.xml" anymore. This way we do
not have to use QFileInfo::completeSuffix() which lead to unrecognized
file types if the filename contained dots in its regular name.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-22 11:49:19 +02:00
Tobias Doerffel
c48883d41a ResourceFileMapper: flush write buffer after writing
Call QFile::flush() after writing the data that was fetched from the
item. This fixes files being empty in some situations.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-19 11:10:38 +02:00
Tobias Doerffel
4bc010cea9 ResourceItem: added property "author"
Added new property "author" for retaining authorship information of
files. Furthermore this allows filtering for authors in ResourceBrowser.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-19 10:12:33 +02:00
Tobias Doerffel
9ca93040de PianoRoll: fixed crash with detune tool
When clicking at an invalid position with the detune tool, LMMS could
crash as an invalid iterator was referenced (closes #2808589).

Furthermore renamed PianoRoll::ModeOpen to PianoRoll::ModeEditDetuning.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:28:30 +02:00
Tobias Doerffel
e12476f79c Renamed type noteVector to NoteVector
Renamed type noteVector to NoteVector as well as ::iterator to
::Iterator and ::const_iterator to ::ConstIterator.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:24:56 +02:00
Tobias Doerffel
c4e7aedb58 ResourceBrowser: load non-local projects as templates
Load non-local projects as templates so user has to save it under
a new name. Otherwise it would save to /tmp/qt_temp.XXXXX.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:05:31 +02:00
Tobias Doerffel
2d5dfc7b15 Pattern: properly advance iterator when removing notes
We must not keep the iterator at the same position when erasing notes
from the m_notes array. This usually is not a problem when using QVector
but we might switch to QList somewhen later.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:05:14 +02:00
Tobias Doerffel
0d6ba6291b NotePlayHandle: fixed crash at playback of subnotes
Commit 08ea133aa2 uncovered a flaw in
NotePlayHandle::play(...). When iterating over subnotes for each subnote
after playing it, we check whether it is finished. If this is true, the
according subnote gets erased from the m_subNotes array. However we have
to set the subnote iterator to what QList::erase(...) returns instead of
keeping it where it was before. This accidentally worked when using
QVector as type for NotePlayHandle arrays but caused a crash now that
we're using QList.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:05:03 +02:00
Tobias Doerffel
cf0a91637b Song: reset window title after creating new project from template
Reset window title when creating new project from template (after
actually loading template file). Furthermore do not reset window title
at the beginning of load process anymore.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 22:24:25 +02:00
Tobias Doerffel
fe152801f6 ResourcePreviewer: no preview for unhandled resource types
Don't do anything in case a ResourceItem can't be previewed. Up to now
a default sine sound was played back even when just clicking a directory item.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-17 10:37:09 +02:00
Tobias Doerffel
5930b23040 ResourceBrowser: trigger default action on double click
Connect to QTreeView::doubleClicked() signal in order to trigger a
default action. For example projects now can be loaded via simple
double click.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-17 10:27:37 +02:00
Janne Matti Sinisalo
27a125b73e New CPU load meter thing.
I think the CPU load meter thing looks better this way.
2009-06-16 17:39:37 +03:00
Tobias Doerffel
2cc49b8010 PlayHandle: use QList instead of QVector for PlayHandle array
Use QList instead of QVector when using a set of PlayHandle's. QList
has faster insert/remove operations and in most cases we iterate through
the array using iterators so there's no performance drop.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 15:04:55 +02:00
Tobias Doerffel
08ea133aa2 NotePlayHandle: cleanups, header dependency reductions etc.
* do not include instrument_track.h in note_play_handle.h by making
  two functions non-inline
* renamed notePlayHandleVector / constNotePlayHandleVector to
  NotePlayHandleList / ConstNotePlayHandleList and changed typedef
  to QList (which has faster insert- and remove-operations).
* removed unused method willFinishThisPeriod()

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 14:41:55 +02:00
Tobias Doerffel
8fb10e3d4d ResourceBrowser: implemented loading projects via context menu
Project files can now be loaded via context menu. This also allows
transparent access to files uploaded to LSP.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 14:02:47 +02:00
Tobias Doerffel
c0794d0c41 MMP: detect compressed files rather than guessing by extension
Detect whether a given file is compressed by first trying to parse
its content as XML data. If it failed, try to uncompress and
parse again. This is more flexible than just looking whether the
filename extension is "mmpz".

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 13:58:40 +02:00
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
e76991ffea ResourcePreviewer: use ResourceFileMapper for previewing samples
So far only local samples and soundfonts could be previewed using
ResourcePreviewer class. By adding an additional abstraction through
ResourceFileMapper also non-local resources can be previewed.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 12:20:44 +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
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