Commit Graph

1182 Commits

Author SHA1 Message Date
Tobias Doerffel
8ebdee61f6 PianoRoll: respect stacking order of notes
Notes are always drawn on-top of each other starting from the left
to the right. However the behaviour when clicking notes was reverse,
which made it quite hard to edit notes sometimes. Now the top most
note is edited/selected/moved/resized if notes overlay.

Closes #2808603.
(cherry picked from comit 28eb7e00bf)
2010-08-24 18:47:39 +02:00
Tobias Doerffel
819e6392cd SampleBuffer: for OGG files try with OGG Vorbis decoder first
This is workaround for a bug in libsndfile or our libsndfile decoder
causing some OGG files to be distorted. Therefore try the OGG Vorbis
decoder first if filename extension matches "ogg".

Closes #2957937.
(cherry picked from commit 6e64bcfc42)
2010-08-22 02:22:45 +02:00
Tobias Doerffel
3a79dc1741 PianoRoll: allow chaning volume and panning of step notes
There's no reason to not allow changing volume and panning of step notes
in PianoRoll. Therefore simply check whether the length is not equal to
zero (which might be disabled step notes) instead of checking for length
being greater than zero.

Closes #2836799.
(cherry picked from commit 8286c1031d)
2010-08-19 00:17:41 +02:00
Tobias Doerffel
4e3072137b PianoRoll: fixed messed up editing modes when pressing Ctrl
There were some bugs when pressing Ctrl while in SelectMode. Fix this
by always setting m_ctrlMode and m_editMode in keyPressEvent() when
Ctrl was pressed.

Closes #2854958 and #2836576.
(cherry picked from commit 46c20bdcbd)
2010-08-18 23:58:49 +02:00
Tobias Doerffel
9cf0f4932a Song: reset global models in clearProject()
We have to reset global models such as tempo, master volume etc. before
clearing the global automation patterns attached to them. Fixes bug with
persistent automation on these controls when clearing project.

Closes #3046039.
(cherry picked from commit 2614474246)
2010-08-16 23:40:48 +02:00
Tobias Doerffel
54ce5b96f6 MeterModel: clear global automation patterns in reset()
When resetting a MeterModel we also have to clear global automation
patterns attached to it. Fixes bug with persistent automation data on
e.g. time signature widget when clearing project.
(cherry picked from commit 23a3efcac0)
2010-08-16 23:40:44 +02:00
Tobias Doerffel
89eae05a16 Renamed all automation related files and classes to match new coding style
All automation-related files and classes have been renamed to match the
new coding style.
(cherry picked from commit 9b280ffb3e)
2010-08-16 23:40:33 +02:00
Tobias Doerffel
b16e81ebff ControllerRackView: do not loose focus when adding controller
For an unknown reason the ControllerRackView looses focus when adding
a new controller. Fix this by explicitely calling QWidget::setFocus()
at the end of ControllerRackView::addController().

Closes #3046041.
(cherry picked from commit 676a6fbad1)
2010-08-16 23:39:04 +02:00
Tobias Doerffel
564ef08127 InstrumentTrackWindow: correctly disconnect from track's signals
We used QObject::disconnect() the wrong way leading to multiple
connections from InstrumentTrack::instrumentChanged() to
InstrumentTrackWindow::updateInstrumentView(). This resulted in
loading times being doubled each time you loaded a preset on the same
InstrumentTrack.

Closes #2934099.
(cherry picked from commit 9acb47a7a8)
2010-08-15 14:22:38 +02:00
Tobias Doerffel
cd08109847 InstrumentTrack: do not try to load "libconnection.so" in compat code
In compat code of InstrumentTrack::loadTrackSpecificSettings() also
check for nodeName being equal to ControllerConnection::classNodeName().
This avoids trying to load the non-existing instrument "connection".
In master branch this has been fixed ugly in commit 22c877d4 before,
however implement a cleaner solution which is also suitable for
backporting.

Closes #3021259.
(cherry picked from commit 65311ef2b4)
2010-08-15 14:00:11 +02:00
Tobias Doerffel
b9f5795da6 EffectView: fixed artifacts with semitransparent widget shadow
We must not set the Qt::WA_OpaquePaintEvent attribute when using a
semitransparent background image in paintEvent(). Fixes artifacts
in EffectView's shadowed border.
(cherry picked from commit d830e7f622)
2010-08-15 12:44:29 +02:00
Tobias Doerffel
6a99bb11af SampleTrack: fixed non-functional solo and mute buttons
The SampleTrackView did not explicitely have a SampleTrack model
attached and thus trackView::modelChanged() was not called. This way
SampleTrackView's mute and solo buttons were not connected to the
according models of the SampleTrack model. Fix this by calling
setModel() in SampleTrackView::SampleTrackView() (as done in
constructors of other track types too) and overload the
SampleTrackView::modelChanged() method.

Closes #3043836.
(cherry picked from commit 311bc92bde)
2010-08-14 00:26:34 +02:00
Tobias Doerffel
0770bda441 Renamed PATH_SEPARATOR to LADSPA_PATH_SEPARATOR and fixed it
Commit 4e9ebd09c6 introduced PATH_SEPARATOR
but with wrong syntax. Fixed this and renamed it to LADSPA_PATH_SEPARATOR.
2010-08-12 10:30:59 +02:00
Paul Giblock
09b5bc906e Use proper path seperator for LADSPA_PATH
According to http://www.ladspa.org/ladspa_sdk/shared_plugins.html,
LADSPA_PATH is supposed to be delimited by colons.  This patch does so,
except on Windows.  On Windows we use ';' instead of ':' since colon is
a legal character for a path.
2010-08-12 09:12:04 +02:00
Tobias Doerffel
d8594fad15 TrackContainerView: fixed dragged presets into BB Editor
When dragging preset files into BB Editor the patterns were messed up
because simple serializing was not enabled (and thus newly created
patterns were removed again). Fix this by enabling simple serializing
mode before calling InstrumentTrack::loadSettings().

Closes #3041686.
2010-08-11 17:54:41 +02:00
Tobias Doerffel
632dee611d TextFloat: fixed size calculation in simple mode
The height of TextFloat objects was not sufficient e.g. when used as
tooltips for knobs (while changing their values). Fixed improper
geometry calculation and static values in TextFloat::paintEvent().
(cherry picked from commit db8de3450c)
2010-07-28 20:16:24 +02:00
Tobias Doerffel
2b73083100 AudioJack: do not use QVector in processCallback()
Using QVector involves calls to malloc & friends which are not RT safe
and thus must not be used in AudioJack::processCallback(). Instead
allocate the required array upon initialization.
(cherry picked from commit ae7a4e4c2f13432d39b13c25b66231bdd6a1cc65)
2010-07-26 15:59:32 +02:00
Tobias Doerffel
2ba532bf30 AudioJack: more optional code for AudioPort support
There's been some more code that is only required if AUDIO_PORT_SUPPORT
is set. Added according #ifdefs and fixed a typo in AudioPort support
code.
(cherry picked from commit e98726ae992c77fb2dfdb6668319b5521ff8aaef)
2010-07-26 15:59:27 +02:00
Tobias Doerffel
610f01b0f9 moved version information into separate header file to avoid the necessity of a complete recompile each time SVN revision changes
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1913 0778d3d1-df1d-0410-868b-ea421aaaa00d
(cherry picked from commit b25f6f3911)
2010-07-25 18:50:42 +02:00
Tobias Doerffel
ade301a51a 3rdparty/libsamplerate: renamed config.h to src_config.h
We must not have any file called config.h in directories which are added
to global include directories. For example when building the CALF plugin
the file config.h from libsamplerate was used rather than CALF's local
one. Fixes missing LADSPA symbols in CALF library if no usable
libsamplerate was found in the system at configure time.

Also bumped version number in src_config.h.
(cherry picked from commit e07ed33827)
2010-07-25 14:36:45 +02:00
Tobias Doerffel
4b89814e3a TrackContentObject: keep position in paste()
When calling TrackContentObject::paste(), only the content should be
pasted, not the position. This fixes pasting for example note patterns
and is also a more generic solution for the bug fixed in commit
4ec5c6afe1.

Closes #3005649.
(cherry picked from commit 5306f7b0ca)
2010-07-25 01:27:23 +02:00
Tobias Doerffel
6990ecd829 When cloning BB track, indicate this fact in name of cloned BB track
Cloning a BB track can be rather confusing (e.g. two "Beat/Bassline 0").
Therefore prepend an indication to the name of the cloned BB track.
(cherry picked from commit 3b642271a8)
2010-07-25 01:14:16 +02:00
Tobias Doerffel
4ec5c6afe1 Fixed cloning of BB tracks
Not sure when it broke but cloning BB tracks erroneously cloned
positions of TCOs as well which made the source BB track have
two TCOs one upon the other while the destination BB did not have
any TCOs at all.

The fix is to save the position of the destination TCO before and
restore it manually after paste().
(cherry picked from commit c16e04c0dd)
2010-07-25 01:14:10 +02:00
Tobias Doerffel
7d78268f85 ExportProjectDialog: guess file format from extension
If we choose to export an OGG file in the first dialog, it's really
annoying having to select OGG a second time. Therefore guess file
format from extension (backport from master).
2010-07-25 00:33:48 +02:00
Tobias Doerffel
a2aafd79d0 NotePlayHandle: fix broken note detuning feature
Commit 884b9ca671 completely broke the
note detuning feature as the detuning value was not incoorporated into
the frequency calculation anymore. Fix this by adding the detuning value
to the pitch variable.
(cherry picked from commit b30e91042b)
2010-07-25 00:24:17 +02:00
Tobias Doerffel
57540de703 AboutDialog: show correct copyright years
It's been two years that the copyright years were not updated in the
AboutDialog. Fix this.
2010-07-23 22:17:54 +02:00
Andrew Kelley
6a52e6430a Save/Discard instead of Yes/No
Integrates Sami Boukortt's patch described below:

I have made a patch for the “Save changes?” dialog box to let the user choose
between “Save”, “Discard” and “Cancel” instead of “Yes”, “No” and “Cancel”.

I find this way more intuitive, since it enables Qt to reorganize the buttons
properly according to the platform and to give them an icon (at least on X11).

It also allows users to know what is going to happen without having to read
the question.
(cherry picked from commit f9015ac945)
2010-05-25 08:58:27 +02:00
Tobias Doerffel
908a917021 EnvelopeAndLfoParameters: moved global instances management into helper class
It's a bad style to manage global instances of an object in the object
itself. Therefore introduced a nested helper class which manages all
instances of EnvelopeAndLfoParameters globally. It is now responsible
for global reset/triggers of LFOs. In contrast to previous state, this
is now done thread-safe. Fixes crashes for example while importing
MIDI files.
(cherry picked from commit 5f6c42f19c)
2010-05-21 14:14:00 +02:00
Tobias Doerffel
488337f6eb Engine: introduced deleteHelper() function
The new deleteHelper() template function takes a pointer, saves it
to a temporary, sets the passed pointer to NULL and then deletes the
object it was referring to before. This way we can spot bugs caused by
undesired references to global objects at shutdown more easily.
(cherry picked from commit fe7d5e3d5a)
2010-05-21 14:13:11 +02:00
Tobias Doerffel
aa992e8e1b AutomationEditor: thread-safe handling of AutomationPattern pointer
It was not possible to call any of the functions of AutomationEditor
from threads other than the main GUI thread as the m_pattern pointer
was not protected by a mutex. It is however desired to be able to call
for example AutomationEditor::setCurrentPattern(...) from different
threads (mainly required when deleting AutomationPatterns in other
threads). Thus made this method and all accesses to the m_pattern
pointer thread-safe.
(cherry picked from commit afba8a7ad4)
2010-05-21 14:11:32 +02:00
Tobias Doerffel
48bbfad53d EffectControl: store visibility information of attached EffectView
For some effects it is helpful to know whether their attached EffectView
is visible or not. This mainly concerns effects that actually do not
touch the sound data but analyze it and display the results.
(cherry picked from commit 9c9bca7098)
2010-05-17 23:36:46 +02:00
Tobias Doerffel
7c16094811 Fixed spelling errors
Fixed some spelling errors found by Lintian while checking the Debian
package of LMMS. Thanks to Patrick Winnertz for pointing out this issue.
(cherry picked from commit 9fd3dacb67)
2010-01-25 23:27:43 +01:00
Tobias Doerffel
6d890557a7 ConfigMgr: fix initialization of various paths if they do not exist
We should not only test whether a specific path (e.g. STK or LADSPA
path) is empty but also whether it does not exist so we can reset it
to a sensible default value (for example when upgrading LMMS on Win32
where the program's path will change).

Furthermore default to "C:\Program Files\VstPlugins" for the VST
directory on Win32 which is the default location for VST plugins.
2009-12-25 00:38:14 +01:00
Tobias Doerffel
e852c8b267 MainWindow: stop playing song when asking whether to save project
Users reported the last buffer played repeatedly while the dialog asking
whether to save project is shown. This behaviour even continued while
loading a project. An easy workaround for this is to stop playing song
(or whichever TrackContainer is active at the moment) in
MainWindow::mayChangeProject().

Closes bug #2904781.
(cherry picked from commit 04699ba412)
2009-12-17 21:19:21 +01:00
Tobias Doerffel
d7ae99a5e8 TrackContentWidget: fixed background tile pixmap updating
The background tile pixmap used to draw the background of
TrackContentWidgets was only updated on size changes but not on
changes of zoom level in according editor. Fix this by updating
background pixmaps in trackContainerView::setPixelsPerTact().
2009-12-07 01:38:17 +01:00
Armin Kazmi
8e86863a86 AudioPulseAudio: fixed latency and underrun problems
Try to adjust latency of PulseAudio according to our settings of mixer
so it does not have such a bad latency anymore.

Furthermore force PulseAudio to play silence instead of rewinding
streams in case of underruns.
(cherry picked from commit 92047f5e9e)
2009-11-20 23:10:49 +01:00
Tobias Doerffel
5309e7a374 AudioPulseAudio: fixed improper shutdown + free allocated resources
There have been some problems with the threading logic in the
AudioPulseAudio backend resulting in an endless loop when quitting LMMS.

Furthermore allocated PulseAudio resources were not freed properly.
Thanks to Armin Kazmi <armin.kazmi@tu-dortmund.de> for pointing out
this issue.
(cherry picked from commit 168805745e)
2009-11-20 22:36:06 +01:00
Tobias Doerffel
1eb4c31607 SideBar: rewritten to use QToolBar instead of KMultiTabBar
Rewrote implementation of class SideBar to use QToolBar instead of
KMultiTabBar. We can style the SideBar now easily via CSS and do not
have to ship 3rd party KDE code with LMMS. Also the QToolBar based
SideBar integrates much better into the according widget style.

Furthermore renamed SideBar related classes and files to match new
coding style.
(cherry picked from commit 822a22ca37)
2009-10-31 13:38:17 +01:00
Tobias Doerffel
db89dfa181 Removed usage of ASCII C strings in several places
Still QString::toAscii() & friends were used in several places causing
problems such as failed access to files with non-ASCII characters in
name.

Closes #2884115.
(cherry picked from commit 1633cf2593)
2009-10-27 17:59:06 +01:00
Paul Giblock
2b714fd686 Rename "All Files" to "All file types" release QM
Translations didn't work because I didn't "release" within Linguist.  I
wonder how to update the *.ts files with missing strings...
(cherry picked from commit 49c2f6bad1)
2009-10-24 17:41:05 +02:00
Paul Giblock
340be43acd Proper File import extensions and translations
Previously, the extensions were stored in the translations, this i18n
more difficult, additionally, there was a preprocessor statement that
would cause the translated phrase to change! Hence, no translations if
you didn't have ZIP file support.  The text is now split into seperate
translations and I added "All Files".
(cherry picked from commit beb92563f1)
2009-10-24 17:37:26 +02:00
Paul Giblock
e959af4ec2 Increase import filter for *.midi and *.riff
Fix song.cpp and translations so the somewhat common *.midi extension is
recognized.
(cherry picked from commit c504bc84d4)
2009-10-24 17:35:16 +02:00
Tobias Doerffel
f7da4a0f7e InstrumentPlayHandle: do not process if InstrumentTrack is muted
While regular instruments were excluded from processing when muted
this did not happen for InstrumentPlayHandle-based instruments. Muting
for exampling tracks with VSTi's inside did not decrease CPU usage.
Checking whether related InstrumentTrack is muted before calling
Instrument::play() fixes this issue.

Closes #2857426.
(cherry picked from commit 6940d19969)
2009-09-15 23:51:00 +02:00
Paul Giblock
cc1cdfa664 Fix bug 2819817: main window scrollbars
Fix problem with main-window scrollbars not adjusting when toggling
off-screen children.  Seems like Qt bug #260116.
(cherry picked from commit 669b4e7198)
2009-09-15 23:13:43 +02:00
Tobias Doerffel
18a8ffc674 RemotePlugin: do not skip audio processing when debugging
If DEBUG_REMOTE_PLUGIN was set, RemotePlugin::process() always returned
as RemotePlugin::isRunning() returned false. Fix this by always
returning true when debugging.
(cherry picked from commit ee63a13f2d)
2009-08-29 00:09:57 +02:00
Tobias Doerffel
5ba1340ed0 Plugin: typedef DescriptorList + more const improvements
Instead of writing QVector<Plugin::Descriptor> everywhere, mix up
iterators etc. centrally define Plugin::DescriptorList and use it
everywhere.

Additionally made pointers to Plugin::Descriptor and
Plugin::Descriptor::SubPluginFeatures::Key const in various places
so we can use ConstIterator everywhere when iterating through
Plugin::DescriptorList.
(cherry picked from commit 2287eca802)
2009-08-29 00:07:05 +02:00
Tobias Doerffel
c2f9fcd14f Plugin::Descriptor: renamed sub_plugin_features to subPluginFeatures
Renamed field sub_plugin_features to subPluginFeatures in
Plugin::Descriptor struct.
(cherry picked from commit e8c3c21f7f)
2009-08-29 00:02:47 +02:00
Tobias Doerffel
fc72b1a6a4 EffectSelectDialog: rewritten using Designer
All of the GUI code of EffectSelectDialog has been replaced by an
according UI file. Also merged EffectListWidget class into
EffectSelectDialog to further simplify logic.
(cherry picked from commit cb85bfc906)
2009-08-29 00:02:20 +02:00
Tobias Doerffel
f4dbb2ff5c sed: s/( void )/(), s/FALSE/false/, s/TRUE/true
Replaced remaining occurences of old constants and superfluous "void"
on empty argument list of functions.
(cherry picked from commit 166701f9f3)
2009-08-25 01:42:20 +02:00
Tobias Doerffel
1d5cb23385 File and class renames part 1
Most files and most of the core classes and their methods have been
renamed to match new coding style conventions:

391 files changed, 25400 insertions(+), 25598 deletions(-)

Furthermore splitted some files where model and view classes were
declared or implemented together in the same file.

Should be tested thoroughly as I might have missed renaming some virtual
methods or SIGNAL/SLOT parameters.
(cherry picked from commit 8c9a9dd14c)
2009-08-25 01:30:41 +02:00