Commit Graph

1545 Commits

Author SHA1 Message Date
Kristi
8f1657164a ExportProjectDialog: added option for exporting song as loop
This patch adds the option to remove the extra silence at the end,
so that the exported song can be seamlessly looped.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-06-13 23:15:06 +02:00
François-Marie de Jouvencel
03db913e6b PianoRoll: optionally display notes from other tracks
I added a button to show/hide the notes from the other tracks in
piano roll, notes from other tracks appear in light transluscent white.
This is useful when making complex melodies in order to avoid dissonances
that are sometimes hard to detect otherwise.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2011-04-13 09:30:38 +02:00
Tobias Doerffel
c91a9f89ed Ask whether to recover session after unexpected exit
Instead of always loading the last auto-saved session (which might end
up in an endless cycle if recover.mmp is faulty or causes a crash) ask
the user whether to do so.
(cherry picked from commit babf3edff8)
2011-04-06 18:45:51 +02:00
Tobias Doerffel
53646765c0 AudioPulseAudio: do not initialize volume
Instead of passing an initialized pa_cvolume structure, pass NULL as
recommended by the documentation for pa_stream_connect_playback(). This
fixes the volume erroneously being set to 100% at startup.

Thanks to Thomas Moschny for forwarding the bug report.
(cherry picked from commit dd9ba4b2ad)
2011-01-26 22:52:01 +01:00
Tobias Doerffel
c1fe40fd70 ControllerRackView: fixed widget size issues after closing
There were some issues with the ControllerRackView when closing it
with recent Qt versions. Issue seems to be fixed by not setting a
size constraint policy for the QMdiSubWindow.

Partially closes #3149779.
(cherry picked from commit f67e8e0af7)
2011-01-23 23:59:22 +01:00
Tobias Doerffel
6d4fd201fa ControllerView: fixed minor artifacts at widget drop shadow
We must not set the Qt::WA_OpaquePaintEvent attribute when painting
semi-transparent a drop shadow for the ControllerView.
(cherry picked from commit b8ad5bf025)
2011-01-23 23:59:18 +01:00
Tobias Doerffel
5949f49e11 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.
(cherry picked from commit 4cad9517aa)
2011-01-23 23:58:17 +01:00
Tobias Doerffel
7c8b9070e4 LadspaManager: print error string when failing to load LADSPA library
In order to ease debugging of problems with the LADSPA library loader
print QLibrary::errorString() if loading a library fails.
(cherry picked from commit 4851839327)
2011-01-16 20:26:22 +01:00
Tobias Doerffel
1f6039340b Mixer: free m_inputBuffer[i] at exit
In Mixer::~Mixer make sure to free resources allocated in the
m_inputBuffer[] array.
2011-01-08 01:28:43 +01:00
Tobias Doerffel
a4de8fa16a Fixed various minor semantic glitches
There were various minor semantic glitches reported by cppcheck and
Andrei Smirnov.
2011-01-08 00:16:03 +01:00
Tobias Doerffel
9da0c0a92d SongEditor: added smooth autoscroll
Instead of flipping to next page when the play position marker reaches
the right edge, scroll to next page smoothly using the QTimeLine class.

Closes #3144318.
(cherry picked from commit ea94e6aa32)
2011-01-05 15:20:36 +01:00
Tobias Doerffel
dc06302745 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.
(cherry picked from commit 6be555d61a)
2011-01-05 15:20:26 +01:00
Tobias Doerffel
c296ca6ae3 AudioPortAudio: adapt to AudiBackend/AudioOutputContext API
Things have changed a bit for audio backend implementations in the
master branch. Therefore adapt AudioPortAudio to the new API.
2011-01-02 01:28:34 +01:00
Tobias Doerffel
16c2b767af Audio: Re-enabled PortAudio backend
The PortAudio backend lay down broken for quite a while. However as it
offers much better realtime capabilities on Windows compared to SDL, I
started to resurrect it, removed support for PortAudio < 1.9 and fixed
various bugs and crashes.
(cherry picked from commit 4641fcc6d3)
2011-01-02 01:20:28 +01:00
Tobias Doerffel
7b68713008 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.
(cherry picked from commit a9717c0cc3)
2010-12-31 13:32:51 +01:00
Tobias Doerffel
39cc1a8212 RemotePlugin: added support for running remote process multiple times
There might be situations where we want to try to run multiple different
remote processes. Therefore introduced RemotePlugin::init(...) which can
be called multiple times even if previous calls failed.
2010-12-23 22:22:01 +01:00
Tobias Doerffel
859e819a02 MidiWinMM: fixed compiler warning
Pass 0 instead of NULL for 3rd and 4th argument of midiOutOpen().
(cherry picked from commit 8c4a8182ab)
2010-12-06 00:01:38 +01:00
Tobias Doerffel
80a9f6c0de ResourceBrowser: integrated new ManageResourceLocationsDialog
Clicking the "Manage locations" button now opens an instance of the new
ManageResourceLocationsDialog.

Furthermore renamed ResourceBrowser::manageDirectories() to
ResourceBrowser::manageLocations().
2010-10-08 13:40:05 +02:00
Tobias Doerffel
654420d5f5 Added ManageResourceLocationsDialog
The ManageResourceLocationsDialog class provides a dialog for adding,
editing and removing resource locations.
2010-10-08 13:40:03 +02:00
Tobias Doerffel
903cf1f1e5 Added EditResourceLocationDialog
The EditResourceLocationDialog class provides a dialog for editing a
certain ResourceLocation.
2010-10-08 13:40:00 +02:00
Tobias Doerffel
4f1fbf9946 Added ResourceLocation class
The ResourceLocation class stores information about a location of
resources and creates according ResourceLocation instances.
2010-10-08 13:39:57 +02:00
Tobias Doerffel
c05965117c 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.
2010-10-06 10:15:16 +02:00
Tobias Doerffel
830c2cb975 SampleTrack: do not hide EffectRackView forever when closing subwindow
Whenever closing the sample track effects window using its own close
button and trying to open it again there was only a really small window
without functionality. Fixed this by explicitely also showing subwindow
content in showEffects().

Closes #3075205.
2010-09-29 16:10:07 +02:00
Tobias Doerffel
f8e73c5293 PianoView: send NoteOff MIDI events for all keys on focus out
Commit 491910357b was a first try to fix
bug #3052228 but it broke InstrumentPlayHandle-driven instruments.
When losing focus now simply send NoteOff MIDI events for all keys
regardless of the state indicated by Piano::m_pressedKeys.

Closes #3052228.
2010-09-02 01:53:31 +02:00
Tobias Doerffel
dd4e7c8aaf Revert "PianoView: call InstrumentTrack::silenceAllNotes() on focus out"
This reverts commit 2f921303eb.
2010-09-02 01:53:25 +02:00
Tobias Doerffel
2f921303eb PianoView: call InstrumentTrack::silenceAllNotes() on focus out
If we lose focus, call InstrumentTrack::silenceAllNotes() after
explicitely sending NoteOff MIDI events for all keys for which presses
were recorded. In case the arpeggiator is enabled this is not
sufficient. Fixes hanging notes when switching active subwindow while
pressing keys in an instrument track window with arpeggiator enabled.

Closes #3052228.
2010-09-01 23:51:43 +02:00
Tobias Doerffel
b38eab0075 FxMixer: rewrote processing of FX channels
Rewrote the way FX channels (FX lines) are processed, i.e. the
calculation when to process which channel. This patch based on a patch
by Stefan Fendt but includes further improvements regarding
multithreading.
2010-08-30 17:32:19 +02:00
Tobias Doerffel
efee8ab147 PianoRoll: fix last commit
Commit 28eb7e00bf was based on a patch
created for the stable-0.4 branch. It therefore used note::selected()
instead of note::isSelected().
2010-08-25 00:35:07 +02:00
Tobias Doerffel
28eb7e00bf 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.
2010-08-24 18:42:49 +02:00
Tobias Doerffel
6e64bcfc42 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.
2010-08-22 02:18:34 +02:00
Tobias Doerffel
8286c1031d 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.
2010-08-19 00:14:19 +02:00
Tobias Doerffel
46c20bdcbd 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.
2010-08-18 23:55:04 +02:00
Tobias Doerffel
2614474246 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.
2010-08-16 20:28:53 +02:00
Tobias Doerffel
23a3efcac0 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.
2010-08-16 20:25:26 +02:00
Tobias Doerffel
9b280ffb3e 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.
2010-08-16 20:21:18 +02:00
Tobias Doerffel
676a6fbad1 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.
2010-08-16 18:09:48 +02:00
Tobias Doerffel
9acb47a7a8 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.
2010-08-15 14:19:43 +02:00
Tobias Doerffel
65311ef2b4 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.
2010-08-15 13:56:25 +02:00
Tobias Doerffel
d830e7f622 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.
2010-08-15 12:40:10 +02:00
Tobias Doerffel
311bc92bde 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.
2010-08-14 00:23:13 +02:00
Tobias Doerffel
114c1973e2 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:29:37 +02:00
Paul Giblock
4e9ebd09c6 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-11 21:40:54 -04:00
Paul Giblock
9f2640946e Use QProxyStyle support in DefaultStyle
The specializations to utilize different styles is a nice idea, but it
is hard to discover which styles a user may have installed.
Additionally, it would be impossible to override a system style.  This
patch implemnts ClassicStyle as a QProxyStyle.

This additionally fixes the missing dependency on toolbar_bg. Utilize
CSS now.
2010-08-07 18:35:49 -04:00
Tobias Doerffel
93681760d2 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.
2010-08-06 23:05:00 +02:00
Tobias Doerffel
68abd34908 AutomatableModelView/ContextMenu: option for unlinking all controls
Integrated patch by Rodrigo Rodrigues da Silva which adds an option
to all AutomatableModelView's context menu allowing to unlink all
linked controls.
2010-07-28 21:25:30 +02:00
Tobias Doerffel
9e42d4388e ClassicStyle: template-based derivation from native style
First attempts to get away from QPlastiqueStyle as the default style
and instead dynamically use an overloaded version of the native style.
Still needs lots of tuning, especially regarding colors.
2010-07-28 21:21:11 +02:00
Tobias Doerffel
db8de3450c 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().
2010-07-28 20:13:19 +02:00
Tobias Doerffel
206c30ff73 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:54:46 +02:00
Tobias Doerffel
31b099d74e 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:54:40 +02:00
Tobias Doerffel
b0822212b0 Merge branch 'remote-plugin-fixes'
* remote-plugin-fixes:
  RemotePlugin: sleep in waitForMessage() when actively waiting for data
  RemotePlugin: better code order in sendMessage() + cleanups
  RemotePlugin: coding style fixes + inline keyword reduces
  RemotePlugin: smaller buffers for number to string conversions
  RemotePlugin: added branch prediction hints
2010-07-26 15:52:14 +02:00