Robin Gareus [Mon, 26 Oct 2015 12:32:51 +0000 (13:32 +0100)]
and another LV2-1.0.0 compat ifdef
Robin Gareus [Mon, 26 Oct 2015 12:24:23 +0000 (13:24 +0100)]
amend
311adde (LV2-1.0.0 compat)
Robin Gareus [Sun, 25 Oct 2015 16:46:39 +0000 (17:46 +0100)]
properly translatable plural forms
Len Ovens [Sun, 25 Oct 2015 15:22:02 +0000 (08:22 -0700)]
Changed MCP trim detection to match method used in GUI.
nick_m [Sat, 24 Oct 2015 18:26:44 +0000 (05:26 +1100)]
Markers use the selection change stack.
nick_m [Sat, 24 Oct 2015 17:12:38 +0000 (04:12 +1100)]
Amend last commit.
nick_m [Sat, 24 Oct 2015 17:07:19 +0000 (04:07 +1100)]
Set a larger minimum size for recent session scrollers.
Robin Gareus [Fri, 23 Oct 2015 21:34:21 +0000 (23:34 +0200)]
back to mjpeg (revert
2cb511e and
3f157f9) for now
There is anecdotal evidence that using mpeg4 as codec leads to issues
(xjadeo indexes and gets stuck at 99%, likely in libavcodec).
The main motivation for using mpeg4 is/was windows/VFAT 2GB file limit
and improved video quality. This will have to be revisited.
Robin Gareus [Fri, 23 Oct 2015 21:28:25 +0000 (23:28 +0200)]
Delete SystemExec in the main process thread.
Robin Gareus [Fri, 23 Oct 2015 21:27:15 +0000 (23:27 +0200)]
fix crash on SystemExec::Terminate
if Terminated() connects in the same thread and deletes the class itself
the closure in interposer_thread() can fail.
nick_m [Fri, 23 Oct 2015 17:59:57 +0000 (04:59 +1100)]
Relative snap for markers.
- also removes many uninitialised variable warnings in
editor_drag.cc found by cppcheck.
Robin Gareus [Fri, 23 Oct 2015 16:58:17 +0000 (18:58 +0200)]
add ifdefs for LV2-1.0.0 compat
nick_m [Fri, 23 Oct 2015 14:19:00 +0000 (01:19 +1100)]
ResizeNoteDrag selection click behaves as NoteDrag's does.
nick_m [Fri, 23 Oct 2015 13:07:03 +0000 (00:07 +1100)]
Clear point selection when uniquely selecting a note.
- Also fix selection undo when creating notes w/control
in MouseContent mode.
Len Ovens [Thu, 22 Oct 2015 22:30:34 +0000 (15:30 -0700)]
Make mackie control view mode save bank for all modes.
Also moved duplicated code to one function.
Robin Gareus [Thu, 22 Oct 2015 19:05:20 +0000 (21:05 +0200)]
mime-type definition is version independent.
File glob "*.ardour" -> application/x-ardour is defined in ardour.xml
nick_m [Thu, 22 Oct 2015 17:03:16 +0000 (04:03 +1100)]
Use lwrcase_dirname for desktop file names and substitutions.
Robin Gareus [Thu, 22 Oct 2015 16:07:55 +0000 (18:07 +0200)]
set executable and icon name in desktop-file
Also opt for version-agnostic mime-type (file-format version
is independent of program-version and of file-extension)
Tim Mayberry [Thu, 22 Oct 2015 11:56:02 +0000 (21:56 +1000)]
Remove GhostRegion::CatchDeletion signal to reduce session close times
Currently when a GhostRegion is deleted by its "parent" RegionView it emits the
static GhostRegion::CatchDeletion signal which is connected to the
RegionView::remove_ghost method of every RegionView instance.
With a static GhostRegion::CatchDeletion signal a particular test session
causes 31 Million calls of RegionView::remove_ghost on Session deletion and the
session takes 70 seconds to close with a debug build.
The lifetime of a ghost region is tied to both the TimeAxisView(TAV) and
RegionView(RV) in that when a RegionView is deleted all GhostRegion instances
associated with the RegionView should be deleted or when a TimeAxisView is
deleted all ghost regions that are contained in the view should be deleted.
This means that there needs to be notification between GhostRegion and both
classes. Instead of using a signal for this as we know there are only two
listeners and GhostRegion already holds a reference to the TimeAxisView, also
take a reference to the parent RegionView in the GhostRegion constructor and
use it to notify the RegionView when GhostRegion destructor is called so it can
drop any references it holds.
Using a direct function call in the GhostRegion destructor to notify the
TimeAxisView and RegionView "parents" brings the unload/close time down for the
test session from 70 seconds to 4.5 seconds.
The GhostRegion also references canvas items that are added to the TimeAxisView
canvas group or at least a canvas group that it manages. So when the
TimeAxisView is destroyed and the canvas group that is the parent of those
items is destroyed, the GhostRegion's canvas items will also be
deleted/destroyed by the parent canvas item/group. This means the GhostRegions
must be destroyed when the TimeAxisView they are contained in is destroyed or
there will be dangling references to canvas items that have already been
deleted and trying to delete them again will be bad.
Tim Mayberry [Mon, 19 Oct 2015 10:51:01 +0000 (20:51 +1000)]
Enable i18n for info/error messages in MidiPatchManager
Tim Mayberry [Mon, 19 Oct 2015 10:23:33 +0000 (20:23 +1000)]
Only parse additional Session midnam files on Session load
When loading a Session add the Session patchfiles directory to the
MidiPatchManager search path and only process/parse the files for that
directory rather than refreshing/reparsing all the files. Similarly for unload,
just unload the devices that are from the Session specific midnam files instead
of removing the path and refreshing/reparsing all the files.
This will not remove the "system" midnam files as they are always added first
and duplicates from the session patchfiles directory are ignored.
Tim Mayberry [Mon, 19 Oct 2015 10:18:16 +0000 (20:18 +1000)]
Store the file path when constructing MidiNameDocument
This is so we can compare and see if we have already parsed the file
Tim Mayberry [Mon, 19 Oct 2015 04:52:48 +0000 (14:52 +1000)]
Decouple Session from MidiPatchManager and reduce parsing of midnam xml files
The MidiPatchManager only requires a reference to the session to get the path
to the Session midnam directory so change it so that the path is passed to
MidiPatchManager::add_search_path on Session construction and removed on
Session Destruction. This will also make it easier to test and reduce compile
times etc.
For the common case where the Session doesn't have a Session specific midnam
patch files directory(for instance a new session) it won't cause a refresh and
reparsing of all the midnam files. This saves about 2 seconds to load a Session
on my machine(fast machine with SSD), or about half the time spent in the
Session constructor for a new session.
There is still going to be that initial cost of parsing the midnam files when
the first session is created after starting Ardour. Options to remove that
would be to parse the files asynchronously and or use a faster xml
parser(eventually), neither of which seem worth doing at this stage.
This change will cause a performance regression for the uncommon case where a
Session with Session specific midnam files is unloaded and then another Session
with Session specific midnam files is loaded as it will cause the common midnam
files in midi_patch_path to be parsed twice(unload and load).
Tim Mayberry [Mon, 19 Oct 2015 04:46:50 +0000 (14:46 +1000)]
Add PBD::Searchpath::contains method to check if a Searchpath contains a path
Tim Mayberry [Mon, 19 Oct 2015 03:04:00 +0000 (13:04 +1000)]
Expose protected PBD::Searchpath API
I prefer to use these as they are more explicit than using the overloaded
operators.
Tim Mayberry [Mon, 19 Oct 2015 02:01:04 +0000 (12:01 +1000)]
Don't parse midnam patch files contained in Session twice
MidiPatchManager::refresh already adds the patch files contained in the session
folder
Tim Mayberry [Mon, 19 Oct 2015 00:08:47 +0000 (10:08 +1000)]
Refactor common code in MidiPatchManager class into new method
Tim Mayberry [Sun, 18 Oct 2015 22:42:28 +0000 (08:42 +1000)]
Don't call MidiPatchManager::refresh when creating MidiPatchManager instance
Currently when loading a session for the first time MidiPatchManager::instance
creates the MidiPatchManager singleton which calls MPM::refresh and all the
midnam files are parsed etc. MPM::set_session is then immediately called and
all the MPM state that has just been set when parsing all the midnam files is
cleared and the parsing of all the files is performed again but this time with
any session specific midnam patch files.
MPM::instance and MPM::set_session consume about 55% of the time spent in the
Session ctor according to kcachegrind and removing the double call to refresh
brings Session construction time for a particular test session down from 7.5s
to 5.5s
John Emmas [Thu, 22 Oct 2015 15:35:13 +0000 (16:35 +0100)]
Fix a small buffer issue which could sometimes prevent sessions from being able to load
In the function 'LV2Plugin::add_state()' the snprintf() call can easily print 19 or even 20 bytes - so a 16-byte buffer wasn't large enough.
nick_m [Thu, 22 Oct 2015 15:21:01 +0000 (02:21 +1100)]
Build freedesktop files if requested.
nick_m [Thu, 22 Oct 2015 15:14:03 +0000 (02:14 +1100)]
Amend last commit.
nick_m [Thu, 22 Oct 2015 14:10:56 +0000 (01:10 +1100)]
Center some windows known to be presented by ardour.
Robin Gareus [Thu, 22 Oct 2015 12:14:27 +0000 (14:14 +0200)]
fix edge-case: (move playhead w/o session)
Robin Gareus [Thu, 22 Oct 2015 10:20:42 +0000 (12:20 +0200)]
remove invalid assertion - #6634
There is a highly unlikely case where the render thread can have zero
requests in the queue, but it is not supposed to be terminated.
1) WaveView::queue_get_image();
wake up thread, *but* the thread does not start yet
2) WaveView::cancel_my_render_request();
and now the thread starts.
1,2 are initiated by user actions from the GUI thread and are normally
orders of magnitude slower than scheduler-thread wakeup.
John Emmas [Thu, 22 Oct 2015 08:19:02 +0000 (09:19 +0100)]
Add some newly introduced sources to our MSVC project (libardour)
Paul Davis [Thu, 22 Oct 2015 03:28:58 +0000 (23:28 -0400)]
Merge branch 'chaot4-fix_overwrite_file'
André Nusser [Mon, 12 Oct 2015 11:01:05 +0000 (13:01 +0200)]
Also use overwrite_file_dialog at all the other places.
André Nusser [Mon, 12 Oct 2015 10:29:16 +0000 (12:29 +0200)]
Confirmation on overwrite for track and session templates. -fixes #6587
André Nusser [Mon, 12 Oct 2015 10:27:28 +0000 (12:27 +0200)]
Add overwrite option to save_template. (default = false)
Before it could not overwrite.
Paul Davis [Thu, 22 Oct 2015 03:06:40 +0000 (23:06 -0400)]
fix automation update at transport stop when in automation Play mode
Paul Davis [Thu, 22 Oct 2015 03:06:05 +0000 (23:06 -0400)]
fix mute automation in Play automation state
Paul Davis [Thu, 22 Oct 2015 02:31:30 +0000 (22:31 -0400)]
Add AutomationControl::set_value_unchecked() and AutomationControl::writable() and use them.
Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they
do not attempt to overwrite data sent to them while automation playback is underway.
Paul Davis [Thu, 22 Oct 2015 02:30:13 +0000 (22:30 -0400)]
add commentary and clean up blank lines
nick_m [Wed, 21 Oct 2015 16:51:15 +0000 (03:51 +1100)]
More desktop file renaming.
nick_m [Wed, 21 Oct 2015 15:54:53 +0000 (02:54 +1100)]
Remove old ardour3 desktop files.
nick_m [Wed, 21 Oct 2015 15:46:18 +0000 (02:46 +1100)]
Add ardour4 desktop and mime type files.
- looks like the install target for these has been removed, but
the existence of these may be of help to packagers.
nick_m [Wed, 21 Oct 2015 14:23:36 +0000 (01:23 +1100)]
User interaction preferences tooltips clarify button names.
Paul Davis [Wed, 21 Oct 2015 12:10:25 +0000 (08:10 -0400)]
variable name change: make purpose of formerly named "_values" in LV2 plugin UI code more clear
And if this is wrong, then rename it again with the right one
Paul Davis [Wed, 21 Oct 2015 12:09:40 +0000 (08:09 -0400)]
variable name change: percent is 0..100, 0..1.0 is a fraction
Paul Davis [Wed, 21 Oct 2015 11:53:21 +0000 (07:53 -0400)]
ensure that mutator function for CONFIG_VARIABLE_SPECIAL is used when assigning initial value during construction
Len Ovens [Wed, 21 Oct 2015 02:31:04 +0000 (19:31 -0700)]
Make sure Mackie Control view modes start with route 1 except Mixer mode goes to last position.
Len Ovens [Wed, 21 Oct 2015 01:54:56 +0000 (18:54 -0700)]
Added "Selected" view mode to Mackie Control.
Robin Gareus [Wed, 21 Oct 2015 01:12:45 +0000 (03:12 +0200)]
Fix crash in new CoreaudioSource code (on invalid file)
Robin Gareus [Tue, 20 Oct 2015 23:57:16 +0000 (01:57 +0200)]
confirm LV2 GUI changes
If a parameter change is initiated by the UI, the host sends a
notifications to confirm (echo) or invalidates (replaces) the value.
(automation: touch, playback,...).
Stateless LV2 GUIs without internal data-model depend on this.
Robin Gareus [Tue, 20 Oct 2015 17:14:14 +0000 (19:14 +0200)]
hack to keep UI responsive with heavy AU views.
Robin Gareus [Tue, 20 Oct 2015 14:15:38 +0000 (16:15 +0200)]
OSX copy/constraint mod tweak (amend
0675fe1)
Paul Davis [Tue, 20 Oct 2015 15:39:56 +0000 (11:39 -0400)]
do not update LV2 output port displays unless the value has changed
Paul Davis [Tue, 20 Oct 2015 15:31:18 +0000 (11:31 -0400)]
add commentary
Paul Davis [Tue, 20 Oct 2015 15:28:53 +0000 (11:28 -0400)]
also update LV2 output port displays as part of periodic updates
Paul Davis [Tue, 20 Oct 2015 14:24:39 +0000 (10:24 -0400)]
fix AudioUnit parameter listening to work with new ParameterChangedExternally semantics
Paul Davis [Tue, 20 Oct 2015 14:12:51 +0000 (10:12 -0400)]
Clean up generic and LV2 plugin GUI to deal with ParameterChanged(Externally) alteration
Paul Davis [Tue, 20 Oct 2015 14:12:21 +0000 (10:12 -0400)]
rename Plugin::ParameterChanged to ParameterChangedExternally to reflect its intent, and clean up the libardour side of result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.
Paul Davis [Tue, 20 Oct 2015 14:10:35 +0000 (10:10 -0400)]
Revert "rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result."
This reverts commit
336b2eb9a4a8634bae84a15e952d20335aa28c12.
Robin Gareus [Tue, 20 Oct 2015 13:08:50 +0000 (15:08 +0200)]
possible fix for invalid cleanup space calc on win32.
Robin Gareus [Tue, 20 Oct 2015 13:08:02 +0000 (15:08 +0200)]
NOOP, re-indent
Robin Gareus [Tue, 20 Oct 2015 13:06:54 +0000 (15:06 +0200)]
remove cruft
Paul Davis [Tue, 20 Oct 2015 13:07:51 +0000 (09:07 -0400)]
rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.
Significant modification of LV2 GUI updating was required.
Still to be tested for feedback loop issues: AudioUnits
Robin Gareus [Tue, 20 Oct 2015 09:12:36 +0000 (11:12 +0200)]
remove unused "copy modifier hint"
Robin Gareus [Tue, 20 Oct 2015 09:12:14 +0000 (11:12 +0200)]
suggest primary-mod as default for copy
fixes inconsistency on OSX.
André Nusser [Wed, 14 Oct 2015 10:38:44 +0000 (12:38 +0200)]
Ctrl+shift functionality (toggle all) for plugin leds.
The Fader led has special behavior and is only toggled when clicked
explicitly.
nick_m [Mon, 19 Oct 2015 17:08:28 +0000 (04:08 +1100)]
Test fix for further osx modifier ambiguity.
nick_m [Mon, 19 Oct 2015 16:54:44 +0000 (03:54 +1100)]
Fix incorrect display of "Command" modifier on osx.
nick_m [Mon, 19 Oct 2015 16:23:06 +0000 (03:23 +1100)]
Rc option editor - don't translate "-".
nick_m [Mon, 19 Oct 2015 14:20:42 +0000 (01:20 +1100)]
Fix typo for GTKOSX case.
nick_m [Mon, 19 Oct 2015 13:48:30 +0000 (00:48 +1100)]
Set toggled automation controller using a double.
nick_m [Thu, 15 Oct 2015 17:36:11 +0000 (04:36 +1100)]
Clarify user interaction preference tooltips. Also rebase branch on
nick_m [Thu, 15 Oct 2015 16:22:11 +0000 (03:22 +1100)]
Restored size of mixer list pane is at least 36 px. Revert default to 75.
nick_m [Thu, 15 Oct 2015 16:06:49 +0000 (03:06 +1100)]
Default to WIN_POS_MOUSE for dialogs also.
nick_m [Wed, 14 Oct 2015 18:24:17 +0000 (05:24 +1100)]
Mixer list pane can shrink to zero width.
nick_m [Wed, 14 Oct 2015 15:37:11 +0000 (02:37 +1100)]
New non-parented windows are initially positioned at WIN_POS_MOUSE again.
nick_m [Tue, 13 Oct 2015 17:46:33 +0000 (04:46 +1100)]
Legatize::name () reflects its type. Fixes confusing undo record name.
nick_m [Tue, 13 Oct 2015 17:09:23 +0000 (04:09 +1100)]
Fix snap modifier logic (again).
nick_m [Wed, 7 Oct 2015 18:59:09 +0000 (05:59 +1100)]
Rc option editor - alter restart message for user interaction tab.
nick_m [Wed, 7 Oct 2015 18:41:41 +0000 (05:41 +1100)]
No-op - rename variable.
nick_m [Wed, 7 Oct 2015 18:32:31 +0000 (05:32 +1100)]
Add tooltips to user config preferences. clean up combo ordering.
nick_m [Wed, 7 Oct 2015 14:46:52 +0000 (01:46 +1100)]
ArdourKeyboard - fix snap / delta logic for triple modifier combinations.
nick_m [Wed, 7 Oct 2015 13:48:03 +0000 (00:48 +1100)]
Click on a selected note unique selects it (as per regions, control points).
nick_m [Sun, 4 Oct 2015 17:36:13 +0000 (04:36 +1100)]
Allow Alt-Shift-Windows modifier (nice for control point fine adjust).
- OSX equivalent to be decided.
nick_m [Sun, 4 Oct 2015 17:32:03 +0000 (04:32 +1100)]
Don't snap if fine adjust modifier used.
- permits non-alt modifier for fine adjust.
nick_m [Sun, 4 Oct 2015 15:58:03 +0000 (02:58 +1100)]
Update ContrilList debug output.
nick_m [Sun, 4 Oct 2015 15:56:56 +0000 (02:56 +1100)]
Select the control point about to be deleted when using shift + right click.
- fixes incorrect selection changes when doing this.
nick_m [Sun, 4 Oct 2015 15:54:18 +0000 (02:54 +1100)]
Fix incorrect snap when adding region gain points.
nick_m [Sun, 4 Oct 2015 13:42:09 +0000 (00:42 +1100)]
Don't use the all_route_group() in Editor::set_selected_track_as_side_effect ().
- we don't appear to actually use it.
nick_m [Sun, 4 Oct 2015 13:39:24 +0000 (00:39 +1100)]
Allow adding / toggling rubber band selection of automation control points.
nick_m [Sat, 3 Oct 2015 18:29:45 +0000 (05:29 +1100)]
Show verbose cursor control point values in MouseContent mode as well.
nick_m [Sat, 3 Oct 2015 18:05:56 +0000 (05:05 +1100)]
Fix for fine adjust overriding snap modifiers.
nick_m [Sat, 3 Oct 2015 16:44:27 +0000 (03:44 +1100)]
Add error check to region gain control point selection undo.
nick_m [Sat, 3 Oct 2015 16:33:37 +0000 (03:33 +1100)]
Add missing diff to last commit.
nick_m [Sat, 3 Oct 2015 16:29:16 +0000 (03:29 +1100)]
Region gain point selection behaves as per track automation.
nick_m [Sat, 3 Oct 2015 15:19:38 +0000 (01:19 +1000)]
Add region gain point selection undo.