ardour.git
5 years agoMixbus likes hyperthreading on Mac
Robin Gareus [Fri, 12 Apr 2019 16:30:52 +0000 (18:30 +0200)]
Mixbus likes hyperthreading on Mac

5 years agoUpdate Mixbus Mon-section #ifdef
Robin Gareus [Fri, 12 Apr 2019 16:29:23 +0000 (18:29 +0200)]
Update Mixbus Mon-section #ifdef

5 years agoSpecial case Lua copy-construction of trackable instances
Robin Gareus [Fri, 12 Apr 2019 02:12:22 +0000 (04:12 +0200)]
Special case Lua copy-construction of trackable instances

This fixes an crashing issue with ArdourUI.SelectionList a bug
introduced in 6dc3bdf252c and 35dcd46d7d.

Since removal of the special cases in 35dcd46d7d, when using
a C-pointer in a std::list<>,
  std::list<class*>::push_back(TypeListValue)
TypeListValues<>'s Head was expanded to  "class*& const"
implied by void ::push_back(const T& value);

This resulted in lifetime issues with a classes that derive
from sigc::trackable (e.g. Ardour's Selection).
The reference leaves scope and isn't duplicated when it is pushed back
to the std::list<>.

The script scripts/select_every_2nd_region.lua crashed because entries
in the SelectionList were no longer valid.

Previously (before 6dc3bdf252c) TypeListValues explicitly
copy-constructed the value to work around the lifetime issue.
This new solution bypasses the issue by directly using the c-pointer
without dereferencing it.

5 years agoRevert another sample/frame confusion
Robin Gareus [Fri, 12 Apr 2019 00:44:23 +0000 (02:44 +0200)]
Revert another sample/frame confusion

5 years agoNO-OP: whitespace
Robin Gareus [Thu, 11 Apr 2019 00:32:45 +0000 (02:32 +0200)]
NO-OP: whitespace

5 years agoSkip Subgroup menu-options when not available (no MIDI subgroups)
Robin Gareus [Thu, 11 Apr 2019 00:08:36 +0000 (02:08 +0200)]
Skip Subgroup menu-options when not available (no MIDI subgroups)

5 years agoAdd API to render a reflection
Robin Gareus [Thu, 11 Apr 2019 00:06:32 +0000 (02:06 +0200)]
Add API to render a reflection

This is to be used sparingly because the pattern is dynamically
created every time. Mainly for the benefit of some Mixbus
widgets -- compared to ArdourButton::convex_pattern

5 years agoArdour/Mixbus codebase unification - ui config
Robin Gareus [Thu, 11 Apr 2019 00:05:01 +0000 (02:05 +0200)]
Ardour/Mixbus codebase unification - ui config

5 years agoAdd option to leave vertical gap below audio regions
Robin Gareus [Wed, 10 Apr 2019 19:03:08 +0000 (21:03 +0200)]
Add option to leave vertical gap below audio regions

This is a backport from Mixbus, to leave are 4 "open" pixels
at the bottom of the track so one can see the grid-lines between tracks.

This is useful with low region-transparency. grid-lines behind
opaque regions are not visible.

5 years agoCleanup: Simplify conditionals
David Robillard [Sun, 31 Mar 2019 17:25:24 +0000 (19:25 +0200)]
Cleanup: Simplify conditionals

5 years agoRemove support for building against LV2 older than 1.2.0
David Robillard [Sun, 31 Mar 2019 17:19:21 +0000 (19:19 +0200)]
Remove support for building against LV2 older than 1.2.0

LV2 1.2.0 was released in 2012, over 6 years ago now.

5 years agoClarify default template description
Robin Gareus [Tue, 9 Apr 2019 22:22:39 +0000 (00:22 +0200)]
Clarify default template description

5 years agoLV2: check required feature and options
Robin Gareus [Tue, 9 Apr 2019 22:19:39 +0000 (00:19 +0200)]
LV2: check required feature and options

When discovering LV2 plugins, verify if a plugin's required features
and required options can be be satisfied.

This replaces a previous blacklist with a whitelist of supported
features/options.

5 years agoDisable auto-input by default for new installs
Robin Gareus [Tue, 9 Apr 2019 12:36:56 +0000 (14:36 +0200)]
Disable auto-input by default for new installs

This prevents audible feedback on laptops when adding new tracks
with default settings.

5 years agoBackport Mixbus delivery patch
Robin Gareus [Tue, 9 Apr 2019 12:33:27 +0000 (14:33 +0200)]
Backport Mixbus delivery patch

5 years agoUnify build-system customization (Ardour/Mixbus)
Robin Gareus [Tue, 9 Apr 2019 11:17:15 +0000 (13:17 +0200)]
Unify build-system customization (Ardour/Mixbus)

5 years agoFix session-export util (timecode: frames, not samples)
Robin Gareus [Tue, 9 Apr 2019 01:28:23 +0000 (03:28 +0200)]
Fix session-export util (timecode: frames, not samples)

5 years agoBackport Mixbus toolbutton layout
Robin Gareus [Tue, 9 Apr 2019 01:16:09 +0000 (03:16 +0200)]
Backport Mixbus toolbutton layout

5 years agoUpdate Lua Script to use new MusicSample API
Robin Gareus [Tue, 9 Apr 2019 01:15:38 +0000 (03:15 +0200)]
Update Lua Script to use new MusicSample API

5 years agoNO-OP: fix another comment
Robin Gareus [Tue, 9 Apr 2019 01:00:31 +0000 (03:00 +0200)]
NO-OP: fix another comment

5 years agoRemove cruft: unused typedef
Robin Gareus [Tue, 9 Apr 2019 00:23:17 +0000 (02:23 +0200)]
Remove cruft: unused typedef

5 years agoNO-OP: whitespace
Robin Gareus [Tue, 9 Apr 2019 00:20:06 +0000 (02:20 +0200)]
NO-OP: whitespace

5 years agoNO-OP: fix comment
Robin Gareus [Tue, 9 Apr 2019 00:19:51 +0000 (02:19 +0200)]
NO-OP: fix comment

5 years agoReplace some more "samples" with "frames" (rectangles)
Robin Gareus [Mon, 8 Apr 2019 22:31:29 +0000 (00:31 +0200)]
Replace some more "samples" with "frames" (rectangles)

5 years agoAnother round of whitespace fixes
Robin Gareus [Mon, 8 Apr 2019 22:27:05 +0000 (00:27 +0200)]
Another round of whitespace fixes

5 years agoFix typo in 37aaa2d1
Robin Gareus [Mon, 8 Apr 2019 20:56:50 +0000 (22:56 +0200)]
Fix typo in 37aaa2d1

5 years agoFix Timecode fps
Robin Gareus [Mon, 8 Apr 2019 20:24:10 +0000 (22:24 +0200)]
Fix Timecode fps

5 years agoClarify API name (I/O-selector frame)
Robin Gareus [Mon, 8 Apr 2019 20:14:09 +0000 (22:14 +0200)]
Clarify API name (I/O-selector frame)

5 years agoRevert more "frame/sample" replacements
Robin Gareus [Mon, 8 Apr 2019 19:40:33 +0000 (21:40 +0200)]
Revert more "frame/sample" replacements

- Coverage concerns rectangles (frames, not sample)
- frame-handles are rectangles
- layout container boxes are frames
- inline display boxes are display_frame

5 years agoNO-OP: whitespace, alignment
Robin Gareus [Mon, 8 Apr 2019 19:37:02 +0000 (21:37 +0200)]
NO-OP: whitespace, alignment

5 years agoRemove hardcoded project-name from Actions
Robin Gareus [Mon, 8 Apr 2019 19:36:27 +0000 (21:36 +0200)]
Remove hardcoded project-name from Actions

5 years agoRemove cruft (commented code)
Robin Gareus [Mon, 8 Apr 2019 18:59:23 +0000 (20:59 +0200)]
Remove cruft (commented code)

5 years agoNO-OP: whitespace, indent
Robin Gareus [Mon, 8 Apr 2019 17:53:33 +0000 (19:53 +0200)]
NO-OP: whitespace, indent

5 years agoYet another "Rect frame" (not a sample)
Robin Gareus [Mon, 8 Apr 2019 18:25:05 +0000 (20:25 +0200)]
Yet another "Rect frame" (not a sample)

5 years agoFrame as in "picture frame", not sample
Robin Gareus [Mon, 8 Apr 2019 18:00:02 +0000 (20:00 +0200)]
Frame as in "picture frame", not sample

5 years agoNO-OP: more libardour whitespace tweaks
Robin Gareus [Mon, 8 Apr 2019 17:36:22 +0000 (19:36 +0200)]
NO-OP: more libardour whitespace tweaks

5 years agoUndo yet more frame/sample replacements
Robin Gareus [Mon, 8 Apr 2019 16:32:09 +0000 (18:32 +0200)]
Undo yet more frame/sample replacements

5 years agoNO-OP: whitespace, comments
Robin Gareus [Mon, 8 Apr 2019 16:29:04 +0000 (18:29 +0200)]
NO-OP: whitespace, comments

5 years agoCleaup meter-tap: reduce nesting and remove code-dup
Robin Gareus [Mon, 8 Apr 2019 14:12:19 +0000 (16:12 +0200)]
Cleaup meter-tap: reduce nesting and remove code-dup

5 years agoFix OMFtool; sample_rate vs frame_rate
Robin Gareus [Mon, 8 Apr 2019 14:11:38 +0000 (16:11 +0200)]
Fix OMFtool; sample_rate vs frame_rate

5 years agoRemove duplicate patchfiles
Robin Gareus [Mon, 8 Apr 2019 13:01:26 +0000 (15:01 +0200)]
Remove duplicate patchfiles

The previous commit also unified the naming schama to prefer underscores.

5 years agoImport MIDNAM collection from Harrison Mixbus
Robin Gareus [Mon, 8 Apr 2019 12:48:26 +0000 (14:48 +0200)]
Import MIDNAM collection from Harrison Mixbus

Kudos to Nik and Ben at Harrisonconsoles. You Rock!

5 years agoNO-OP name change: CD-frames (not samples)
Robin Gareus [Mon, 8 Apr 2019 12:44:22 +0000 (14:44 +0200)]
NO-OP name change: CD-frames (not samples)

5 years agoNO-OP: whitespace
Robin Gareus [Mon, 8 Apr 2019 03:16:33 +0000 (05:16 +0200)]
NO-OP: whitespace

Fix space-alignment, mostly due to "frame" -> "sample" changes.

5 years agoUndo incorrect sample/frame replacements in clearlooks
Robin Gareus [Mon, 8 Apr 2019 02:03:21 +0000 (04:03 +0200)]
Undo incorrect sample/frame replacements in clearlooks

5 years agoUndo more incorrect sample/frame replacements
Robin Gareus [Mon, 8 Apr 2019 01:46:02 +0000 (03:46 +0200)]
Undo more incorrect sample/frame replacements

5 years agoNO-OP: whitespace
Robin Gareus [Mon, 8 Apr 2019 01:45:12 +0000 (03:45 +0200)]
NO-OP: whitespace

5 years agoIndicate automation-latch as "touch" on the CC121
Robin Gareus [Mon, 8 Apr 2019 00:05:36 +0000 (02:05 +0200)]
Indicate automation-latch as "touch" on the CC121

Without a dedicated "Latch" control, this does at least consistently
indicate "Touch", rather than show some arbitrary LED state.

5 years agoNO-OP: whitespace
Robin Gareus [Sun, 7 Apr 2019 23:56:52 +0000 (01:56 +0200)]
NO-OP: whitespace

5 years agoNO-OP: whitespace & revert samples -> [stack]frames
Robin Gareus [Sun, 7 Apr 2019 22:35:00 +0000 (00:35 +0200)]
NO-OP: whitespace & revert samples -> [stack]frames

5 years agoNO-OP: indent
Robin Gareus [Sun, 7 Apr 2019 22:29:13 +0000 (00:29 +0200)]
NO-OP: indent

5 years agoAdd missing semicolon (Mixbus)
Robin Gareus [Sun, 7 Apr 2019 22:22:13 +0000 (00:22 +0200)]
Add missing semicolon (Mixbus)

5 years agoRevert some incorrect frames -> samples replacements
Robin Gareus [Sun, 7 Apr 2019 22:18:08 +0000 (00:18 +0200)]
Revert some incorrect frames -> samples replacements

5 years agofix copypaste bug
Mirko Kunze [Sun, 7 Apr 2019 20:48:56 +0000 (22:48 +0200)]
fix copypaste bug

5 years agoEnable midi-to-audio bounce when processing w/synth
Robin Gareus [Sun, 7 Apr 2019 17:51:08 +0000 (19:51 +0200)]
Enable midi-to-audio bounce when processing w/synth

5 years agoPrepare midi-export for midi-to-audio bouncing.
Robin Gareus [Sun, 7 Apr 2019 17:18:28 +0000 (19:18 +0200)]
Prepare midi-export for midi-to-audio bouncing.

* shift event time into process cycle before calling processors
* reset note-trackers when exporting, don't allow any pending
  events into the queue

5 years agoFix bounce-process: skip all processors before disk-reader
Robin Gareus [Sun, 7 Apr 2019 17:36:35 +0000 (19:36 +0200)]
Fix bounce-process: skip all processors before disk-reader

5 years agoBounce process always uses speed 1.0
Robin Gareus [Sun, 7 Apr 2019 17:35:45 +0000 (19:35 +0200)]
Bounce process always uses speed 1.0

5 years agoNO-OP/Optimize Bounce: Lookup data-type only once
Robin Gareus [Sun, 7 Apr 2019 17:34:37 +0000 (19:34 +0200)]
NO-OP/Optimize Bounce: Lookup data-type only once

This is to prepare for midi-to-audio bounce: allow to change the
data-type to be used as output.

5 years agoVerify Freeze/Export/Bounce polarity invert buffers
Robin Gareus [Sun, 7 Apr 2019 17:30:23 +0000 (19:30 +0200)]
Verify Freeze/Export/Bounce polarity invert buffers

When using bounce w/process, the initial bufferset can [wrongly] be
  buffers.set_count (track.max_processor_streams())
Since the polarity-processor is first in the chain, iterations
over all buffer that don't have a matching _current_gain[]
or _control[] leads to memory-corruption or segfault.

5 years agoCleanup "Clean-up", hide dialog before starting cleanup
Robin Gareus [Sun, 7 Apr 2019 16:51:50 +0000 (18:51 +0200)]
Cleanup "Clean-up", hide dialog before starting cleanup

5 years agoBackport a Mixbus special-case for plugin-tags
Robin Gareus [Wed, 3 Apr 2019 01:35:40 +0000 (03:35 +0200)]
Backport a Mixbus special-case for plugin-tags

5 years agoFix OSC crash when there's no master bus
Robin Gareus [Wed, 3 Apr 2019 01:35:13 +0000 (03:35 +0200)]
Fix OSC crash when there's no master bus

5 years agoFix MIDI Aftertouch (import, record and play) in the backend
Robin Gareus [Tue, 2 Apr 2019 13:35:57 +0000 (15:35 +0200)]
Fix MIDI Aftertouch (import, record and play) in the backend

5 years agoDowngrade LADSPA scan errors to warnings
Robin Gareus [Mon, 1 Apr 2019 23:51:36 +0000 (01:51 +0200)]
Downgrade LADSPA scan errors to warnings

There's nothing that a casual user can about failure to scan
LADSPA plugins. So just inform the user.
It's not an error to worry about.

5 years agoIndicate automation-latch as "touch" on the FP1
Robin Gareus [Mon, 1 Apr 2019 20:30:16 +0000 (22:30 +0200)]
Indicate automation-latch as "touch" on the FP1

The FP1 does not have a dedicated "Latch" control, but this does
at least consistently indicate that Touch, rather than show some
arbitrary LED state.

5 years agoExpose Latch automation mode to MCUs
Robin Gareus [Mon, 1 Apr 2019 20:28:07 +0000 (22:28 +0200)]
Expose Latch automation mode to MCUs

5 years agoClarify documentation
Robin Gareus [Sun, 31 Mar 2019 20:25:40 +0000 (22:25 +0200)]
Clarify documentation

5 years agoRemove a hack of using flags to emit a signal-change from the GUI
Robin Gareus [Sun, 31 Mar 2019 20:25:29 +0000 (22:25 +0200)]
Remove a hack of using flags to emit a signal-change from the GUI

The GUI should not be calling `manager.PluginListChanged();`
It's up to the plugin-manager to emit relevant signals.

This fixes an issue when adding/removing plugin-favorites using the
mixer's sidebar or via remote-control/surfaces or script.

5 years agoNO-OP: Whitespace
Robin Gareus [Sun, 31 Mar 2019 14:08:35 +0000 (16:08 +0200)]
NO-OP: Whitespace

5 years agoAutomationRangeDrag tweaks for stacked layer view
Robin Gareus [Sat, 30 Mar 2019 00:19:47 +0000 (01:19 +0100)]
AutomationRangeDrag tweaks for stacked layer view

Use y-pos and height of given TAV *layer* where the drag was initiated.

5 years agoRemove unused variable
Robin Gareus [Sat, 30 Mar 2019 00:15:17 +0000 (01:15 +0100)]
Remove unused variable

5 years agocont'd AutomationRangeDrag update
Robin Gareus [Fri, 29 Mar 2019 23:14:26 +0000 (00:14 +0100)]
cont'd AutomationRangeDrag update

Properly adding guard-points for all lanes, not just the first found
for each range.

5 years agocont'd AutomationRangeDrag updates -- safety commit
Robin Gareus [Fri, 29 Mar 2019 14:57:07 +0000 (15:57 +0100)]
cont'd AutomationRangeDrag updates -- safety commit

This is work in progress towards fixing stacked region's region-gain
and multiple discontinuous regions spanning multiple tracks.

AutomationRangeDrag::setup() still does not collect all AutomationLine
points for certain overlap scenarios. There's more to come...

5 years agoFix Mixbus special case
Robin Gareus [Fri, 29 Mar 2019 13:53:07 +0000 (14:53 +0100)]
Fix Mixbus special case

5 years agoFix action-name
Robin Gareus [Fri, 29 Mar 2019 13:52:25 +0000 (14:52 +0100)]
Fix action-name

5 years agoNO-OP: remove unused variable
Robin Gareus [Fri, 29 Mar 2019 13:33:31 +0000 (14:33 +0100)]
NO-OP: remove unused variable

5 years agoAdd a missing namespace qualifier
John Emmas [Thu, 28 Mar 2019 11:39:30 +0000 (11:39 +0000)]
Add a missing namespace qualifier

(is needed now, following commit #94271ee862)

5 years agoFix route-templates with external sends
Robin Gareus [Thu, 28 Mar 2019 02:01:53 +0000 (03:01 +0100)]
Fix route-templates with external sends

5 years agoDon't allow to cut/copy inserts via Drag/Drop
Robin Gareus [Thu, 28 Mar 2019 00:51:50 +0000 (01:51 +0100)]
Don't allow to cut/copy inserts via Drag/Drop

It was already verboten via ctrl-x/c/v since copying inserts using
the same I/O makes no sense, nor does moving them.

5 years agoRe-layout ctrl surface enable button: align left
Robin Gareus [Wed, 27 Mar 2019 22:24:58 +0000 (23:24 +0100)]
Re-layout ctrl surface enable button: align left

Since the Preferences window can be rather wide, and the table expands,
a button on the left is preferred.

5 years agoImplement multi-region AutomationRange drag/drop
Robin Gareus [Wed, 27 Mar 2019 22:23:33 +0000 (23:23 +0100)]
Implement multi-region AutomationRange drag/drop

5 years agoCleanup: Remove unnecessary using namespace declarations
David Robillard [Tue, 19 Feb 2019 19:14:41 +0000 (20:14 +0100)]
Cleanup: Remove unnecessary using namespace declarations

5 years agoCleanup: Fix inconsistent TransformDialog code style
David Robillard [Tue, 19 Feb 2019 19:12:42 +0000 (20:12 +0100)]
Cleanup: Fix inconsistent TransformDialog code style

5 years agoNO-OP: add comment for cross-reference
Robin Gareus [Tue, 26 Mar 2019 21:25:20 +0000 (22:25 +0100)]
NO-OP: add comment for cross-reference

5 years agoRemove extra quotes from meta-data
Robin Gareus [Tue, 26 Mar 2019 21:12:48 +0000 (22:12 +0100)]
Remove extra quotes from meta-data

Arguments are passed as argp[] array to execve() and don't need to be
enclosed by quotes.

5 years agoCredit where credit is due.
Robin Gareus [Tue, 26 Mar 2019 20:05:52 +0000 (21:05 +0100)]
Credit where credit is due.

5 years agoAdd a note to self
Robin Gareus [Tue, 26 Mar 2019 17:18:49 +0000 (18:18 +0100)]
Add a note to self

5 years agoFix mingw compile (declare int64_t and int32_t)
Robin Gareus [Tue, 26 Mar 2019 14:35:36 +0000 (15:35 +0100)]
Fix mingw compile (declare int64_t and int32_t)

5 years agoDo not create automation when shifting (insert/remove time)
Robin Gareus [Mon, 25 Mar 2019 16:05:19 +0000 (17:05 +0100)]
Do not create automation when shifting (insert/remove time)

This fixes a bug when shift() creates automation for parameters that
can not have any automation (hidden parameters, Mixbus PRE).

The GUI (RTAV) aborts() when it finds an automation lane for
a hidden parameter.

This also cleans up shift() operations in general. Empty automation
lanes should be left alone, no guard-point at zero should be added.

5 years agoNO-OP: whitespac
Robin Gareus [Sat, 23 Mar 2019 16:35:26 +0000 (17:35 +0100)]
NO-OP: whitespac

5 years agoNO-OP: whitespace
Robin Gareus [Sat, 23 Mar 2019 16:20:28 +0000 (17:20 +0100)]
NO-OP: whitespace

5 years agoFix generic-midi controllable race-condition
Robin Gareus [Sat, 23 Mar 2019 15:32:48 +0000 (16:32 +0100)]
Fix generic-midi controllable race-condition

Continued work after e9b36f2bea. Prefer a shared_ptr<>.

MIDIControllable::write_feedback() runs in realtime context, directly
from the main process-thread. Synchronizing weak-pointers and deletion
across threads does not work reliably. Retaining a shared_ptr<> for
controllables that are in use can solve this.

5 years agoClean up MonitorProcessorControls
Robin Gareus [Sat, 23 Mar 2019 15:14:15 +0000 (16:14 +0100)]
Clean up MonitorProcessorControls

As opposed to regular AutomationControls these PBD:::Controllables
are not SessionObjects and don't emit a signal when the session
goes away.

5 years agoClean out session-global controllables
Robin Gareus [Sat, 23 Mar 2019 14:52:36 +0000 (15:52 +0100)]
Clean out session-global controllables

This isn't strictly speaking needed, there are only a handful of
users (most notably generic-midi ctrl surface, and Selection)

5 years agoRemove static Destroyed(*), prefer StatefulDestructable API
Robin Gareus [Sat, 23 Mar 2019 13:32:00 +0000 (14:32 +0100)]
Remove static Destroyed(*), prefer StatefulDestructable API

This also add a debug-dump method to show remaining registered
Controllables.

5 years agoRemove chicken/egg d'tor
Robin Gareus [Sat, 23 Mar 2019 13:28:12 +0000 (14:28 +0100)]
Remove chicken/egg d'tor

Session::Controllables is a shared_ptr<> list. As long
as the session exists the Controllables will be around. Destroyed(*)
can only be called after the session is destroyed and releases the
shared_ptr<>

NB. this code had a nice hack to construct a "shared_from_this"
workaround. For future reference:

struct null_deleter { void operator()(void const *) const {} };
boost::shared_ptr<Controllable>(c, null_deleter())

5 years agoRe-add global lookup for generic-midi ctrl state
Robin Gareus [Sat, 23 Mar 2019 02:11:54 +0000 (03:11 +0100)]
Re-add global lookup for generic-midi ctrl state

5 years agoRe-add Controllable registry
Robin Gareus [Sat, 23 Mar 2019 02:10:49 +0000 (03:10 +0100)]
Re-add Controllable registry

To facilitate a central registry with weak/shared pointer lookup,
  enable_shared_from_this<ARDOUR::AutomationControl>
was migrated to
  enable_shared_from_this<PBD::Controllable>

The main (and only) user is generic-midi surface's state interface :(

5 years agoUpdate GenericMidiControlProtocol to use shared/weak Controllable pointers
Robin Gareus [Sat, 23 Mar 2019 01:09:39 +0000 (02:09 +0100)]
Update GenericMidiControlProtocol to use shared/weak Controllable pointers

This fixes a race-condition when a controllable is deleted
while sending feedback to the device.

Previously there was a race-condition MIDIControllable::write_feedback()
triggered from rt-thread, processed in Surface-thread and deleting
a route or processor.

This is a first step, currently state-restore is not fully functional
session->controllable_by_id() does not cover all Controllables.