Commit Graph

752 Commits

Author SHA1 Message Date
Tobias Doerffel
8db0d0b0fa Widgets/Fader: improved usability by not jumping to mouse click position
The previous behaviour was very annoying because starting to drag the
knob almost always resulted in a value change. This has been changed
by a rewritten logic for mouse click and move behaviour.

Closes #3588157.
2012-11-28 00:07:56 +01:00
Tobias Doerffel
3739ef82c6 Widgets/Fader: generic knob drawing code
Instead of hard-coding pixmap sizes, calculate everything dynamically.
2012-11-27 23:58:10 +01:00
Jens Lang
da87fd4e55 RemotePlugin: use atomic operation for lock
Use GCC's builtin atomic add/subtract operation for incrementing/
decrementing the recursive lock variable. This is needed to avoid race
conditions and is much faster than using mutexes etc.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-26 22:59:02 +01:00
Tobias Doerffel
1b7ae1f7a9 RemotePlugin, VstPlugin: reorganized and partly rewrote program/preset related functions
The code for managing programs/presets of RemotePlugin instances was
very confusing, mainly within the VstPlugin and RemoteVstPlugin class.
I therefore started to reorganize and rewrite functions.
2012-11-26 19:18:07 +01:00
Kristi
59732b05ed ExportProjectDialog: added option for exporting song as loop (backport)
This patch adds the option to remove the extra silence at the end,
so that the exported song can be seamlessly looped.

This is a backport of commit 8f1657164a.

Closes #3588890.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-25 12:01:15 +01:00
Tobias Doerffel
4a962c58d9 ExportProjectDialog: coding style fixes 2012-11-25 11:46:40 +01:00
Tobias Doerffel
295dd63b0e SetupDialog: turn off auto save per default
Due to various bug reports, I think we should turn off auto save per
default. Users who want this feature can turn it on explicitely (and
live with problems when they have big projects).
2012-11-11 22:55:38 +01:00
Tobias Doerffel
3a1c117a37 CMakeLists: make fftw3 a requirement and not optional anymore
We have too many components in LMMS relying on FFTW3. Building LMMS
without them cripples LMMS' functionality substantially, so simply
make fftw3 a requirement.

Closes #3495736.
2012-11-11 22:42:04 +01:00
Tobias Doerffel
37651dad20 AudioPort: made destructor virtual
It is recommended to make destructors virtual if the class is
polymorphic.
2012-11-11 19:45:24 +01:00
Tobias Doerffel
c39512403b InstrumentTrack, NotePlayHandled: added initial sustain pedal support 2012-11-11 19:39:27 +01:00
Tobias Doerffel
aae89e186c MidiEvent: added controllerNumber() and controllerValue() 2012-11-11 19:39:01 +01:00
Tobias Doerffel
b998ef6e13 Midi: added more controller related constants 2012-11-11 19:38:11 +01:00
Raine M. Ekman
3aa03da5af InstrumentMidiIOView: added support for fixed output notes
It came to me that having LMMS output one fixed note from a track could
be useful for controlling drum machines or something like that, so here's
a new spinbox for the MIDI tab.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-10 12:50:56 +01:00
devin
929b44f14b Added individual BB tracks to multi export
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-03 19:37:16 +01:00
Devin Venable
eb60d9e06e Added multiple track export feature.
Here is the patchset for my multiple track export feature. It works now
the way I originally envisioned.

For example, after I export tracks on my little song, I see this in the
directory I created:

devin@devin-studio:~/lmms/projects/fff$ ls
0_Defaultpreset.wav  3_Defaultpreset.wav      6_csidSouwav.wav
1_Defaultpreset.wav  4_spacenoiseswavwav.wav  7_HHOPENwav.wav
2_Defaultpreset.wav  5_csidkickwav.wav        8_HHOPENwav.wav

Each instrument or sample track is exported individually, regardless of
whether in its own song track or playing as part of a BB track. The
name is taken from either the song track name or from the BB track name.
My goal was to get the tracks individually exported, so that I could
combine them with other tracks in Ardour.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-03 19:28:40 +01:00
Raine M. Ekman
69947a624b Track: allow smaller height
Here's one way to cram more stuff onto small screens, or otherwise help
reducing visual clutter: Allow tracks to be shift-dragged all the way
down to 8 px height.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-11-01 21:36:31 +01:00
Tobias Doerffel
c1368ddb1a SetupDialog: added option for disabling auto save feature
As requested by various users, it should be configurable whether the
auto save feature is active or not.
2012-10-27 22:45:59 +02:00
NoiseByNorthwest
d448e6743d Ergonomic enhancements for AudioFileProcessor plugin (interactive wave view).
This patch includes:
* sampleBuffer::visualise(): add possibility to specified a range to visualize instead of the whole sample
* add sampleBuffer::sampleRate() and sampleBuffer::sampleLength() getters
* definition of AudioFileProcessorWaveView and AudioFileProcessorWaveView::knob classes for AudioFileProcessor plugin
* knob::getValue() specified “virtual” to allow redefinition in child class  AudioFileProcessorWaveView::knob
* delete audioFileKnob class (made obsolete by AudioFileProcessorWaveView::knob)
* add audioFileProcessor::isPlaying() signal, which is emitted in audioFileProcessor::playNote
* change type of AudioFileProcessorView::m_startKnob and AudioFileProcessorView::m_endKnob (AudioFileProcessorWaveView::knob instead of audioFileKnob)
* replace AudioFileProcessorView::m_graph (QPixmap) by AudioFileProcessorView::m_waveView (AudioFileProcessorWaveView)

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-10-27 22:32:09 +02:00
NoiseByNorthwest
a6ae31a08e Piano-roll: scale & arpeggio combobox + micro refactoring of ChordCreator::Chord
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-02-01 16:58:24 +01:00
Raine M. Ekman
14f41fe7b3 TrackViews: added compact mode
Added an option to shrink the track buttons horizontally, mainly by
moving the track name into a tooltip.

Closes #3459241.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-01-29 23:49:16 +01:00
NoiseByNorthwest
0fc20dffd3 Add tone marking feature
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2012-01-29 19:42:23 +01:00
Tobias Doerffel
e5bc77f4c3 Mixer, Pattern: fixed pattern freeze with MIDI-based instruments
When freezing patterns the freezer hung forever as it checked for any
running play handles in order to render echoes etc. after the last note.
However if there are MIDI-based instruments such as LB302, ZASF,
Sf2Player etc. there will always be play handles (InstrumentPlayHandles)
in the mixer's play handle array. Therefore explicitely check for
remaining NotePlayHandles when freezing pattern. Furthermore added a
counter variable for safety reasons so rendering note tails will never
exceed 2000 buffer periods.

Thanks to Mikobuntu for reporting this issue!

Closes #3109262.
2012-01-29 13:07:17 +01:00
Tobias Doerffel
60758172b0 Standard filters: added 24 dB versions of RC filters as well as a vocal format filter
Thanks to Stefan Fendt!

(cherry picked from commit f5057ce6d2)
2012-01-29 12:12:50 +01:00
Paul Giblock
21f19f018b Fix off-by-one enum on new RC filters
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@2012 0778d3d1-df1d-0410-868b-ea421aaaa00d
(cherry picked from commit a48b0b6ce0)
2012-01-29 12:11:35 +01:00
Paul Giblock
4712804b28 Initial addition of Stefan Fendt's RC filters, updated and fixed code style.
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@2011 0778d3d1-df1d-0410-868b-ea421aaaa00d
(cherry picked from commit 46adbb2b34)
2012-01-29 12:07:17 +01:00
Tobias Doerffel
5977041b6e InstrumentTrack, NotePlayHandle: fixed note detuning processing
Note detuning did not work properly for patterns starting after the
first bar in the song editor. This has been fixed by introducing
additional information about parent's song-global offset to
NotePlayHandle objects.

Closes #3462555.
2012-01-29 11:36:24 +01:00
NoiseByNorthwest
132ab41e5d Replace static var by property, see "Add magnetic effect..." commit 2012-01-26 19:06:34 +01:00
NoiseByNorthwest
b3b290f6dd Piano-roll: preserve melody when resizing a note by holding shift 2012-01-26 19:06:34 +01:00
NoiseByNorthwest
9215800114 Add magnetic effect (for init value) on knobs 2012-01-26 19:06:34 +01:00
quadro
4d645b335d LVSL: added support for (automatable) VST controls and VST presets
LMMS VST Support Layer has been greatly advanced as it now features
(automatable) VST controls as well as support for VST presets. This
still needs some work as it crashes with various plugins (e.g. z3ta+).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-10-22 20:17:58 +02:00
Tobias Doerffel
d60e4d48b3 ComboBoxModel: do not crash in currentText() if model is empty
Catch the case the model is empty in ComboBoxModel::currentText() and
return an empty string instead of crashing. Fixes crash with settings
dialog if no sound devices are accessible via PortAudio.
2011-07-06 10:51:00 +02:00
Tobias Doerffel
1cc77b72e3 Do not apply FX mixer effects twice when playing frozen pattern
We must not process the FX mixer if we notice that currently a pattern
is frozen. Furthermore renamed some state-reading messages of the
pattern class.

Closes #3316495.
2011-06-27 20:27:03 +02:00
Tobias Doerffel
d4684f3ab1 Faders in FX mixer: added peak value indicator
Based on the patch by Thorsten Müller provided at #3307037, I continued
the work to display nice indicators for the peak value of the last 1500
ms.

Closes #3307037.
2011-06-23 10:53:39 +02:00
Thorsten Müller
ee0f6ccd10 Add tooltips to fxmixer faders
Added tooltips to show the actual value when moving the fader handle.
This works mostly like the same feature we already have for the volume
knobs. Depending on settings the value is shown in a range between
0% to 200% or -inf/-34dBV to 6.02 dBV. Again that's the same as for the
volume knob. Value range could be adjusted easily if necessary.

Closes #3305914.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-06-23 10:16:45 +02:00
Tobias Doerffel
a90ffed0a8 SongEditor: made smoooth scrolling an optional feature
As smooth scrolling seems to cause problems for some users it now has
to be enabled explicitely in the settings dialog.

Closes #3194891.
2011-03-17 09:23:38 +01:00
Tobias Doerffel
4cad9517aa Add BB track when adding track to empty BB editor
When there's no BB track but a track is added to the BB editor,
automatically create a BB track so that the user doesn't get confused
by new empty track (not even showing clickable beats).

Partially closes #3149779.
2011-01-23 23:10:04 +01:00
Andrew Kelley
7b7dc0bfb2 don't change the current project when auto-saving
every time auto-save ran, it would change the current project to
"recover.mmp". Now it doesn't do this because Song has
guiSaveProject(), guiSaveProjectAs(), and saveProjectFile().
(the latter is used for auto-save)
(cherry picked from commit 953522f34a)
2011-01-12 17:09:45 +01:00
Andrew Kelley
d75677b9d3 auto-saves every minute and recovers upon crash
auto-save time is not configurable yet. saves "recover.mmp" to
WORKING_DIR every 60 seconds. Deletes recover.mmp on successful
close of LMMS. If recover.mmp is found upon start, it loads that
project.
(cherry picked from comit f73ccadc17)
2011-01-12 17:09:14 +01:00
Tobias Doerffel
6be555d61a SongEditor: always bring up to front after loading a project
When just opening a song in order to listen to it, it's very annyoing to
manually bring up the song editor each time, therefore do it
automatically.
2011-01-05 11:53:56 +01:00
Tobias Doerffel
a9717c0cc3 NotePlayHandle: send correct MidiNoteOff events if base note changed
When changing an InstrumentTrack's base note while NotePlayHandles are
active, they will send a wrong MidiNoteOff event due to the masterKey()
translation in InstrumentTrack::processOutEvent().

Therefore in NotePlayHandle remember the original base note value and
add the difference between original and current base note to the value
returned by NotePlayHandle::key(). Fixes hanging notes in MIDI-based
instruments such as ZynAddSubFX.

Furthermore some coding style improvements.

Closes #3146975.
2010-12-31 13:23:08 +01:00
Tobias Doerffel
65a0313807 Merge branch 'win64-vst'
* win64-vst:
  VST support layer: fixed non-working 64 bit VST plugins
  VST support layer: added 32 bit VST plugin support for Win64
  Win64Toolchain: added 32 bit compiler configuration
  ZynAddSubFX: use new RemotePlugin::init() method
  RemotePlugin: added support for running remote process multiple times
(cherry picked from commit 65c073ec63)
2010-12-26 11:25:54 +01:00
Tobias Doerffel
60d302d09e InstrumentTrackView: use QMdiArea's window activation history
There's no need to implement an own (buggy) window activation history
for InstrumentTrackWindows. Use QMdiArea::subWindowList(...) instead.
Fixes buggy keyboard focus when switching between InstrumentTrackWindows.
(cherry picked from commit c05965117c)
2010-10-06 10:17:48 +02:00
Tobias Doerffel
3ae2b40eec InstrumentTrackView: added one-window-mode + global piano focus
Added a one-window-mode which allows to have only one instrument track
window open at a time. The content of this window is replaced each time
you open a different track.

Furthermore added global reception and forwarding of key events to the
piano widget of the top-most instrument track window. This for example
enables the user to play test sounds while tweaking some effects in a
different subwindow.
(cherry picked from commit 93681760d2)
2010-10-05 11:25:43 +02:00
Tobias Doerffel
611a36e56b MidiEvent: added read method for type property
Even if the type property of the MidiEvent class is still public, there
should be a method for reading it.
(cherry picked from commit 1d5b62d61a)
2010-08-31 16:41:16 +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
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
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
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