13
0
Commit Graph

27616 Commits

Author SHA1 Message Date
7e0f6be1ed
Enable midi-to-audio bounce when processing w/synth 2019-04-07 19:54:29 +02:00
8f9c1df183
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
2019-04-07 19:54:24 +02:00
1ba391ab11
Fix bounce-process: skip all processors before disk-reader 2019-04-07 19:52:12 +02:00
73816d3e38
Bounce process always uses speed 1.0 2019-04-07 19:52:02 +02:00
a1c19911db
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.
2019-04-07 19:51:56 +02:00
7450d69189
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.
2019-04-07 19:51:49 +02:00
1557ea5314
Cleanup "Clean-up", hide dialog before starting cleanup 2019-04-07 18:51:50 +02:00
58babb1e9b
Backport a Mixbus special-case for plugin-tags 2019-04-03 03:35:40 +02:00
925d25851d
Fix OSC crash when there's no master bus 2019-04-03 03:35:13 +02:00
6f95dfdc31
Fix MIDI Aftertouch (import, record and play) in the backend 2019-04-02 15:35:57 +02:00
8f5e5c4c60
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.
2019-04-02 01:51:36 +02:00
6d335be418
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.
2019-04-01 22:30:16 +02:00
50e8c4d529
Expose Latch automation mode to MCUs 2019-04-01 22:28:07 +02:00
20201ef056
Clarify documentation 2019-03-31 22:25:40 +02:00
da15b599de
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.
2019-03-31 22:25:29 +02:00
827b4ef8a1
NO-OP: Whitespace 2019-03-31 16:08:35 +02:00
56047a094c
AutomationRangeDrag tweaks for stacked layer view
Use y-pos and height of given TAV *layer* where the drag was initiated.
2019-03-30 01:19:47 +01:00
546d5d09b5
Remove unused variable 2019-03-30 01:15:17 +01:00
f40456a649
cont'd AutomationRangeDrag update
Properly adding guard-points for all lanes, not just the first found
for each range.
2019-03-30 00:14:26 +01:00
d8571e2572
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...
2019-03-29 15:57:07 +01:00
932892f794
Fix Mixbus special case 2019-03-29 14:54:16 +01:00
1a90cd90de
Fix action-name 2019-03-29 14:54:16 +01:00
0eee891de9
NO-OP: remove unused variable 2019-03-29 14:54:15 +01:00
6f1fd3e4fd Add a missing namespace qualifier
(is needed now, following commit #94271ee862)
2019-03-28 11:39:30 +00:00
0c368499f8
Fix route-templates with external sends 2019-03-28 03:01:53 +01:00
1fa2d15a9d
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.
2019-03-28 01:51:50 +01:00
258b95834f
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.
2019-03-27 23:25:28 +01:00
0ee6b03144
Implement multi-region AutomationRange drag/drop 2019-03-27 23:25:28 +01:00
94271ee862 Cleanup: Remove unnecessary using namespace declarations 2019-03-27 20:22:18 +01:00
cb2a501c44 Cleanup: Fix inconsistent TransformDialog code style 2019-03-27 20:22:18 +01:00
572df2c3bd
NO-OP: add comment for cross-reference 2019-03-26 22:25:20 +01:00
86138d18f9
Remove extra quotes from meta-data
Arguments are passed as argp[] array to execve() and don't need to be
enclosed by quotes.
2019-03-26 22:12:48 +01:00
952577b480
Credit where credit is due. 2019-03-26 21:05:52 +01:00
bdc7b8d7b1
Add a note to self 2019-03-26 18:18:49 +01:00
854de91fb0
Fix mingw compile (declare int64_t and int32_t) 2019-03-26 15:35:36 +01:00
60262275af
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.
2019-03-25 17:05:19 +01:00
3448f3151e
NO-OP: whitespac 2019-03-23 17:35:26 +01:00
60686a7b37
NO-OP: whitespace 2019-03-23 17:20:28 +01:00
c97116083f
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.
2019-03-23 16:32:48 +01:00
1d5e5b3523
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.
2019-03-23 16:15:31 +01:00
96e991d08f
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)
2019-03-23 16:15:28 +01:00
da114c5a4d
Remove static Destroyed(*), prefer StatefulDestructable API
This also add a debug-dump method to show remaining registered
Controllables.
2019-03-23 16:15:23 +01:00
ff8bd935cf
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())
2019-03-23 14:31:00 +01:00
73029d45ba
Re-add global lookup for generic-midi ctrl state 2019-03-23 04:24:39 +01:00
087fd57d37
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 :(
2019-03-23 04:23:43 +01:00
e9b36f2bea
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.
2019-03-23 02:09:39 +01:00
16fe286ed9
Use weak-pointer for Controllable learning 2019-03-23 01:50:45 +01:00
1dedadd03f
Remove c-pointer Controllable* registry 2019-03-23 01:42:03 +01:00
baed14c17e
Prepare PBD::Controllable API cleanup (remove only registry user) 2019-03-23 01:41:55 +01:00
9a1c22d7e1
Remove unusued API Create/Delete Binding 2019-03-23 01:28:23 +01:00