Commit graph

14645 commits

Author SHA1 Message Date
Nikolaus Gullotta
a9a5e1465f add MixerSnapshots to LIBARDOUR 2019-04-03 12:08:00 -05:00
Nikolaus Gullotta
75ffa4d9d7 NO-OP: trim whitespace and indentation issues 2019-04-03 09:09:44 -05:00
Ben Loftis
e24bce36c7 build fix 2019-04-03 08:41:46 -05:00
Nikolaus Gullotta
230d211082 Merge branch 'master' into mixer-snapshots 2019-04-02 15:11:14 -05:00
Nikolaus Gullotta
5731c94acf add node sanitation for ardour 2019-04-02 15:09:49 -05:00
Nikolaus Gullotta
fa0917c704 add safeguard to PhaseControl::set_state(). Mixbus Master has a blank phase control value 2019-04-02 15:09:29 -05:00
Nikolaus Gullotta
fef6426c41 last_modified should eb initialized with the current program name, and then overwitten later 2019-04-02 10:25:48 -05:00
Robin Gareus
6f95dfdc31
Fix MIDI Aftertouch (import, record and play) in the backend 2019-04-02 15:35:57 +02:00
Robin Gareus
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
Nikolaus Gullotta
11bdbd6844 load_from_session needs to set the last_modified_with member as well. 2019-04-01 16:15:08 -05:00
Robin Gareus
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
Robin Gareus
50e8c4d529
Expose Latch automation mode to MCUs 2019-04-01 22:28:07 +02:00
Nikolaus Gullotta
fd4b3a1fca a bunch of changes I should've committed in chunks. oops. 2019-04-01 14:04:25 -05:00
Nikolaus Gullotta
cd16058019 Merge branch 'master' into mixer-snapshots 2019-04-01 09:04:55 -05:00
Robin Gareus
20201ef056
Clarify documentation 2019-03-31 22:25:40 +02:00
Robin Gareus
827b4ef8a1
NO-OP: Whitespace 2019-03-31 16:08:35 +02:00
Nikolaus Gullotta
7c5b476f0b implement a looooooot of stuff 2019-03-29 13:58:54 -05:00
Robin Gareus
0c368499f8
Fix route-templates with external sends 2019-03-28 03:01:53 +01:00
Nikolaus Gullotta
06df01c2e6 Merge branch 'master' into mixer-snapshots 2019-03-27 09:10:28 -05:00
Robin Gareus
572df2c3bd
NO-OP: add comment for cross-reference 2019-03-26 22:25:20 +01:00
Robin Gareus
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
Nikolaus Gullotta
efdb93eddb Merge branch 'master' into mixer-snapshots 2019-03-26 10:29:21 -05:00
Robin Gareus
854de91fb0
Fix mingw compile (declare int64_t and int32_t) 2019-03-26 15:35:36 +01:00
Robin Gareus
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
Robin Gareus
3448f3151e
NO-OP: whitespac 2019-03-23 17:35:26 +01:00
Robin Gareus
60686a7b37
NO-OP: whitespace 2019-03-23 17:20:28 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
73029d45ba
Re-add global lookup for generic-midi ctrl state 2019-03-23 04:24:39 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
16fe286ed9
Use weak-pointer for Controllable learning 2019-03-23 01:50:45 +01:00
Robin Gareus
1dedadd03f
Remove c-pointer Controllable* registry 2019-03-23 01:42:03 +01:00
Robin Gareus
baed14c17e
Prepare PBD::Controllable API cleanup (remove only registry user) 2019-03-23 01:41:55 +01:00
Robin Gareus
9a1c22d7e1
Remove unusued API Create/Delete Binding 2019-03-23 01:28:23 +01:00
Nikolaus Gullotta
2990ce9caa small bit of cleanup 2019-03-22 15:15:38 -05:00
Nikolaus Gullotta
4a1bb764cc MixerSnapshot can construct based off a different session's state 2019-03-22 13:33:23 -05:00
Nikolaus Gullotta
e4542f7d1e Merge branch 'master' into mixer-snapshots 2019-03-22 09:29:30 -05:00
Robin Gareus
430e51065c
Update cAutomationControl values when copying state
This fixes a bug that can result in inconsistent session-state when
copying plugin state from one plugin to another (via drag/drop
ProcessorBox::object_drop, LINK).

The underlying plugin state and settings are copied, port _shadow_data
is updated, and ::get_parameter() shows the correct new value.

However the Controllable was not updated. On Session save/restore
the value may have be lost or was inconsistently restored.
2019-03-22 14:12:30 +01:00
Robin Gareus
e398656940
Prevent crashes when copying LV2 plugin state
LV2 plugin state-loading is generally safe to perform concurrently
with running the plugin (as per LV2 spec). However concurrent run()
is not.
2019-03-22 14:09:03 +01:00
Robin Gareus
5372f9182d
NO-OP: reduce scope 2019-03-22 14:06:51 +01:00
Robin Gareus
391cb44dc6
Add ultra-insane CBR 320kbit mp3 quality 2019-03-21 21:58:08 +01:00
Nikolaus Gullotta
0714a46d20 Merge branch 'master' into mixer-snapshots 2019-03-21 10:27:37 -05:00
Paul Davis
fb74b9e015 working but still confusing fix for ensuring that playlist shared-with data is correct when duplicating tracks.
Confusing because orig_track_id is still being switched to the
NEW track, and shared_with refers to the OLD one
2019-03-20 21:16:57 -07:00
Paul Davis
2c7b632824 fix Session::new_route_from_template() to use playlist IDs and not names. This also fixes #7674 2019-03-20 20:09:17 -07:00
Paul Davis
851388e0b4 remove "rename_playlist" argument from Route::set_name_in_state().
We no longer find playlists by name when constructing tracks, so
the name of the playlist is not relevant
2019-03-20 20:02:07 -07:00
Paul Davis
acbd12c885 fix all surfaces' available action menus
Note: this replicated code is ridiculous
2019-03-20 14:23:23 -07:00