* cleaned up code and improved coding style
* removed old SINGLE_SOURCE_COMPILE macro relicts
* use QString::toUtf8() instead of QString::toAscii() wherever possible
The macro logic for defining the SPINLOCK_PAUSE macro tested against
LMMS_HOST_X86_64 twice instead of testing against LMMS_HOST_X86_64 and
LMMS_HOST_X86. This caused the SPINLOCK_PAUSE macro not being set on
x86.
Added macros PREFETCH_READ() and PREFETCH_WRITE() which insert proper
prefetch instructions. At least on my Intel Atom CPU this improves
performany slightly. Probably needs some further tuning.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
The new CPU framework replaces the old BasicOps framework. It is more
flexible and the build process isn't such a mess anymore (pre-compiled
assembler files etc.). It will hopefully see some improvements and
extensions soon.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Removed myself from list of copyright holders as I didn't help out
with LAME support at all.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Properly handle HTTP status code 302 which indicates a moved site,
i.e. try to fetch data from the new location. This finally makes
WebResources work again with LSP being moved to http://lmms.info.
Furthermore cleaned up code a bit. There's no need for a global
QHttp object or a global QBuffer object. Instead allocate them on
the stack in the according methods.
Furthermore removed unused/incomplete support for non-blocking download.
We should introduce support for a ProgressDialog solution (also allowing
to cancel operations) later.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
<superjoe> why is that code even there?
<pgib> until the next mixer-period, then the model's value is reset
to the actual automation track
<pgib> I have no idea. I think it should be removed honestly. again,
there is no comment explainign the true intent
* superjoe experiments
<pgib> it was probably a poor attempt to make it so when you adjust
the only automation point for a track, that the value of the model
will change immediately'
<pgib> I think it is safe to move the newTime==0 chunk
<pgib> if we want to make the automationEditor immediately change the
value, there needs to be more logic
<pgib> and it would belong in automationEditor -- not automationPattern
<pgib> but this fixes the superAutomation why-in-the-hell bug
When you press down or up while browsing in the resource browser,
it plays the sample.
FIXED: When you click on the keyboard in the resource browser, and then
click on the treeview, it didn't transfer focus.
exportProjectDialog - select the output file format based on
what the user has already chosen in the export dialog. Prevents
the user from having to choose twice.
(also fixed whitespace and added modelines where applicable)
Refactor supported file extensions from AudioFileProcessor to
sampleBuffer, where the magic really happens. Change the hard-
coded MessageBox explaining supported formats to the real deal.
Also added modelines and switched spaces to tabs in the files
affected.
There is a new folder setting called Lame Library. AudioFileMp3
will look here for libmp3lame.so.0. If it can't find it it will
notify the user how to make it work and abort rendering gracefully.
Explicitely destroy instance of ResourceBrowser in destructor of
MainWindow. This fixes crash at exit due to auto-deletion mechanisms
after the whole engine already has been shutdown.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Setting time signatures 1/16+ lead to divisions by zero in two places.
Fixed this by adding according qMax() call (closes#2818125).
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
MidiPort::outputChannelModel is ranged from 1 to 16 for displaying
user-friendly values. However internally MIDI channels are ranged from
0 to 15. Therefore added realOutputChannel() which returns zero-based
MIDI channel which should be used everywhere except for the GUI.
Fixes MIDI events being sent to VST plugins on channel 2 instead of
channel 1. Makes some more VST plugins actually usable.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Starting with Qt 4.5 there were minor graphical glitches in
TrackContentWidget. Fix this by not setting Qt::WA_OpaquePaintEvent
attribute.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
When pasing notes via Ctrl+V somehow the edit-tool was left in an
undefined state. Therefore explicitely switch back to draw mode so
user can move pasted notes (closes#2808607).
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Variuos features (native/Qt semaphores/shared memory) are now
configured by macros like USE_QT_SHMEM and USE_QT_SEMAPHORES. This
allows central and individual configuration of features according to
the platform to build for at the beginning of the file.
Finally makes RemotePlugin work on OS X by not using native semaphores
rather than QSystemSemaphore's.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
In InstrumentTrack::play(...) the local variable "bb_track" always
was either undefined or NULL due to a lost call (probably during M/V
architecture switch) to bbTrack::findBBTrack(...). This could lead to
crashes and/or misbehaviour when playing frozen patterns in BB tracks.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added new DEBUG_REMOTE_PLUGIN macro. If it is set, the process won't
be launched. Instead important information are printed allowing the
developer to run the process with according parameters in a debugger.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Commit e3fa8762ef introduced a crash
in destructor of InstrumentTrack when using IPH based instruments.
Therefore explicitely remove all play handles after calling
silenceAllNotes().
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This commit allows finer control of which kind of PlayHandles get
removed in Mixer::removePlayHandles().
This is now used by InstrumentTrack which only removes NotePlayHandles
in InstrumentTrack::silenceAllNotes(). Fixes broken preview of resources
loaded by IPH-based instruments.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
A type name for ResourceItem::PluginSpecificResource was missing in the
s_typeNames map. Therefore the type property of such resources was not
saved properly and had to be guessed each time at startup.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Dropped separate ResourceItem type "TypeSoundFont" as theres no benefit
from distinguishing it from other plugin-specific files. Soundfonts now
are treated as TypePluginSpecificResource.
Furthermore some minor coding style cleanups.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added dynamic generation of icons for plugin specific resources by
drawing the logo of the according plugin onto an empty-sheet-icon.
After generation, cache the result so this expensive operation only
has to be done once.
Furthermore also cache pixmaps for individual ResourceItem types for
not having to load and scale pixmaps for each item.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added generic drag'n'drop support for all instrument views. All
resources supported by the according instrument now can be dropped
onto instrument view without any extra code in actual instrument.
Additionally renamed some files and classes related to InstrumentView
class to match new style.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added two new buttons "Manage locations" and "Show piano". The first
one will open a resource location management dialog while the latter
one toggles visibility of the preview piano below.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
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>
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>
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>
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>
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>
Replaced deprecated (duplicate) code for loading various kind of files
with ResourceAction-based code.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
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>
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>
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>