13
0
Commit Graph

25169 Commits

Author SHA1 Message Date
Johannes Mueller
2716ce41e0 Indicate whether to show plugin's inline display in GUI
This is currently done by an extension data similarly to
LV2_INLINEDISPLAY__interface.
2017-07-31 21:31:23 +02:00
Johannes Mueller
59775df9be Simplified inline display if the channel strip is not wide enough
If the width of the display area is below 200 px, we switch from the graph
display to displaying only two bars, one for output level and one for gain
reduction. In the bar mode we also visualize threshold and ratio.
2017-07-31 21:31:22 +02:00
Johannes Mueller
24cbb1b153 Honor attack and release parameters in a-comp's inline graph 2017-07-31 21:31:22 +02:00
Johannes Mueller
ccab32654b Indicate gain reduction in a-comp 2017-07-31 21:31:22 +02:00
e65ff3fb4a Show range -60 .. +10 dBFS in acomp's inline display 2017-07-31 21:31:22 +02:00
Johannes Mueller
85106d81a0 Set makeup to 0.f when bypassed also in stereo version 2017-07-31 21:31:22 +02:00
Johannes Mueller
29df879edd Adjust the indication of the treshold value by the makup gain.
When lifting the compressor curve by the makeup gain value the actual
treshold (the level when the curve kinks in) is also lifted. Therefore we need
to adjust the dashed line indicating the threshold as well as the level when
the color gradient to show compression kicks in.
2017-07-31 21:31:22 +02:00
Johannes Mueller
dff4153024 Also the stereo version needs to set need_expose 2017-07-31 21:31:22 +02:00
Johannes Mueller
f68754b19d Show a-comp's makeup grain in inline rendering 2017-07-31 21:31:22 +02:00
Johannes Mueller
4a60c277db Some abstractions to make the display look good in the plugin gui 2017-07-31 21:31:22 +02:00
Johannes Mueller
a61ae46c82 Display the inline display in the generic plugin gui 2017-07-31 21:31:22 +02:00
Johannes Mueller
37b03e353a Put plugin inline display into a freely available class ...
... and let ProcessorBox::PluginInlineDisplay inherit from it.
2017-07-31 21:31:22 +02:00
660096b037 Fix typo 2017-07-31 19:54:23 +02:00
f51fab35b1 OSC: Make stripname refresh in automation play mode as well. 2017-07-31 07:55:09 -07:00
e94771a58f OSC: fix VCAs try to connect to controls it does not have. 2017-07-30 18:35:38 -07:00
008c3db9cd Some session cleanup fixes (delete slave, take lock for lua) 2017-07-31 01:48:28 +02:00
Petr Semiletov
31a9f24ef4 More Russian translation updated and fixes 2017-07-30 16:57:58 +02:00
85925747b2 Update Russian translation 2017-07-30 16:51:54 +02:00
83e45911e3 VCA master-strip: drop gain-control reference 2017-07-30 04:51:25 +02:00
243d55f3c2 Remove an unused variable 2017-07-30 02:42:55 +02:00
edcfa23e14 Binding Proxy: Drop references as requested. 2017-07-30 02:42:55 +02:00
6f80a5ba0f Turn AutomationCtrl into a SessionHandleRef
This fixes a crash with GUI elements which are only deleted during GUI
Idle and hold a Reference to a Controllable,
The session is already destroyed at that point:

ARDOUR::CoreSelection::remove_control_by_id(PBD::ID const&)
ARDOUR::AutomationControl::~AutomationControl()
ARDOUR::SlavableAutomationControl::~SlavableAutomationControl()
ARDOUR::MonitorControl::~MonitorControl()
boost::detail::sp_counted_base::destroy()
boost::detail::sp_counted_impl_p<AudioGrapher::Interleaver<float>::Input>::dispose()
boost::detail::sp_counted_base::release()
boost::detail::shared_count::~shared_count()
boost::shared_ptr<PBD::Controllable>::~shared_ptr()
boost::shared_ptr<PBD::Connection>::~shared_ptr()
ArdourWidgets::BindingProxy::~BindingProxy()
ArdourWidgets::ArdourButton::~ArdourButton()
VCAMasterStrip::~VCAMasterStrip()
int idle_delete<VCAMasterStrip>(VCAMasterStrip*)
2017-07-30 02:42:55 +02:00
ea48c56061 NO-OP: name-change (_list and _lock are also used in other places)
Derived classes need to explicitly specify namespace and class
to avoid ambiguities (even for private members)
2017-07-30 02:42:55 +02:00
Petr Semiletov
fe5f00c367 Russian po updates, typo in automation_time_axis.cc fix 2017-07-29 23:16:49 +02:00
80ecac672f Modify our MSVC project to add libltc as a dependency of 'dummy_backend' (which now needs to link to it) 2017-07-29 10:46:53 +01:00
7f03c9a664 Fix an ambiguous call to 'floor()'
MSVC complains, so let's specify which override we want.
2017-07-29 10:44:00 +01:00
06c37b7c3f Fix edit-cursor in TextEntry
Gtk::WINDOW_POPUP cannot be used for windows that require focus.
A gtk-entry without focus does not show an edit-cursor.
2017-07-29 02:05:37 +02:00
b5e0b5b09f PortManager::unregister_port() must be called with process lock
This fixes "Failed to register <surface> port" when re-loading a session.
2017-07-28 20:15:15 +02:00
964b88e651 Delete CoreSelection at session close 2017-07-28 20:11:55 +02:00
7b7cc9ea6d Add a LTC generator to the dummy backend 2017-07-28 17:47:36 +02:00
a3dd948c02 Allow to rename VCAs in the editor 2017-07-28 02:12:19 +02:00
d67056562b Fix write-pass re-start while in an active write-pass 2017-07-27 17:50:52 +02:00
68cd643946 Initial checkin of TouchOSC interfaces to repository. 2017-07-27 10:33:43 -05:00
e91821bd76 Fix pasting automation at 0 2017-07-27 03:22:21 +02:00
3899c06fae Start a new write-pass when writing automation and locating while rolling 2017-07-27 01:40:13 +02:00
97e3168466 Fix ATAV hide button for VCA lanes 2017-07-27 01:34:16 +02:00
53565962b2 Ask user to save when using save-as or snapshot+switch. 2017-07-26 23:49:57 +02:00
28c29ab22d Fix initial sync to LTC with small buffersizes
Ardour follow_slave() does nothing (not even seek) if the slave is not
locked.

The LTC-slave assumes it's locked if LTC is stable for 5 continuous
process-calls.

If the difference of Ardour's transport-position to the LTC-timecode
is large (> 2sec), the slave reset itself (assuming drift, seek don't vari-
speed).

A LTC-slave does reset does reset the locked counter.

Hence: If initially Ardour's transport differs > 2 sec and the buffersize
is small (many process-callbacks), the slave kept resetting itself
never informing Ardour that it locked to the external TC, and Ardour
never issued a seek.
2017-07-26 22:58:16 +02:00
b804109e8e update libltc 2017-07-26 22:58:12 +02:00
2fa34614d0 Remove unnecessary tests for touch-state 2017-07-25 20:16:04 +02:00
bde3edf1c8 Make start_touch() truly idempotent
Also don't allow outsiders to call Controllable::set_touching()
2017-07-25 20:15:12 +02:00
Johannes Mueller
9bfe404b4e Fix #6280 – region (first_frame()==0) selectable with SnapRegionBoundary
Issue #6280 states that when selecting ranges using SnapToRegionBoundary it's
not possible to select regions with first_frame() == 0. This is because
Playlist::find_next_region() does not consider region boundaries == pos but
only > pos. Thus it never considers pos == 0 to be a region boundary.

This solution tries to be as little invasive as possible without changing the
semantics of PlayList::find_next_region(). Therefore position 0 is added to the
region boundary cache if there's a region starting at position 0 in any track.
2017-07-25 17:39:08 +02:00
681ab52330 fix e838e7f359 2017-07-24 22:26:04 +02:00
e838e7f359 Fix Mixbus "well known" send-names and enable ctrls 2017-07-24 21:54:31 +02:00
a41198305e Update WritePass logic + AutomationList Undo
Fixes various issues when changing AutomationState while rolling.
2017-07-24 21:00:12 +02:00
8c260a647a update japanese translation (Hiroki Inagaki) 2017-07-24 14:59:11 -04:00
b694ee9e53 OSC: only use gain change signals if value changes 2017-07-24 10:21:31 -07:00
3ab4a1d147 OSC: add use groups to GUI 2017-07-24 10:21:31 -07:00
f3e0fcbb7e OSC: port mode by default should be manual 2017-07-24 10:21:31 -07:00
a9d2955f83 Replace a ringbuffer with a multi-reader circular table
a-Inline Spectrogram used a ringbuffer to send mixed down audio data
from the DSP thread to the inline display thread. The problem is that
several inline display threads can coexist (one for the channel strip in
the editor, one for the channel strip in the mixer, and soon one for an
inline display in the generic plugin UI). A ringbuffer is single-writer
single-reader so each display only got part of the data, and all were
competing for it.

Replace it with a circular table, where the DSP sets a write pointer,
and every (inline display) user keeps its own read pointer and checks it
is not so far in the past as to be overtaken by the DSP write pointer.
2017-07-24 15:05:05 +02:00