Robin Gareus [Fri, 9 Jun 2017 20:54:09 +0000 (22:54 +0200)]
Fix deletion of VCA with slaved controls.
The crashed previously because:
A VCA is-a Automatable is-a Evoral::ControlSet
After VCA's d'tor completes ~Automatable runs and emits signal to
DropReferences of all master-controls.
This in turn calls SlavableAutomationControl::master_going_away()
for slaved parameters for the given master-control
In ::master_going_away() the weak-pointer reference to the master's
AutomationControl (owned by the destroyed VCA) is still valid.
Execution is in the d'tor of Automatable which is-a ControlSet and
the ContolSet keeps a reference to the Control and hence also to the
AutomationControl which is-a Evoral::Control.
So master_going_away() locks a boost::shared_ptr<ARDOUR::AutomationControl>
which is actually the MuteControl owned by the VCA.
It calls SlavableAutomationControl::remove_master() which
in turn calls MuteControl::pre_remove_master() which uses the
MuteMaster API to retrieve the value. The MuteMaster however is the
VCA that has just been destroyed.
The solution is twofold:
1) emit "drop_references" from the VCA d'tor itself,
before the VCA is destroyed.
2) disconnect a slaved control from the master's drop_references signal
when un-assigning a master-control.
nick_m [Fri, 9 Jun 2017 17:49:01 +0000 (03:49 +1000)]
NoteCreateDrag - Fix incorrect note length due to use of region-relative position
Robin Gareus [Fri, 9 Jun 2017 12:47:27 +0000 (14:47 +0200)]
Remove Automatable::value_as_string API from libardour
Keep Pannable::value_as_string() for now. That is another inconsistency
which needs cleaning up. GUI StereoPanner and MonoPanner print
the value as they see fit, the panner-plugin provided formatting
is not used.
Robin Gareus [Fri, 9 Jun 2017 12:46:11 +0000 (14:46 +0200)]
Update GUI, drop Automatable::value_as_string() API
Robin Gareus [Fri, 9 Jun 2017 11:41:04 +0000 (13:41 +0200)]
Prepare to eventually drop Automatable::value_as_string()
Probably due to historical reasons, there are two APIs to format a
control's value. In all both variants end up calling either
ARDOUR::value_as_string() or the Controllable's formatting function
(except for panners).
Robin Gareus [Thu, 8 Jun 2017 21:45:07 +0000 (23:45 +0200)]
Prepare AutomationTimeAxisView for non-route (VCA) automation
Damien Zammit [Fri, 9 Jun 2017 13:06:53 +0000 (23:06 +1000)]
a-EQ: Revert one of the previous changes
One of the previous changes was not a typo, revert it.
nick_m [Fri, 9 Jun 2017 01:05:56 +0000 (11:05 +1000)]
Fix incorrect positioning of tempo line subdivisions if first meter is non-zero
Commit
cebefe6 assumed that frame 0 was the music origin.
Silly me.
nick_m [Fri, 9 Jun 2017 01:01:30 +0000 (11:01 +1000)]
Add a method for obtaining the frame position of beat/whatever zero
Robin Gareus [Thu, 8 Jun 2017 19:21:13 +0000 (21:21 +0200)]
Fix crash when showing plugin-UI in safe-mode
nick_m [Thu, 8 Jun 2017 15:56:28 +0000 (01:56 +1000)]
TempoLines deletes its bfc on destruction
nick_m [Thu, 8 Jun 2017 15:44:48 +0000 (01:44 +1000)]
Tempo lines display subdivisions correctly over a tempo change
TempoMap::get_grid() supplies a list of beat positions, leaving the lines
to work out any subdivision positions.
This is fine, unless a tempo section falls in between beats.
Use a BeatsFramesConverter along with a quarter note position
(in the BBTPointsList) to make this easier.
nick_m [Thu, 8 Jun 2017 15:34:14 +0000 (01:34 +1000)]
Fix reversed logic in legacy tempo secton detection
nick_m [Thu, 8 Jun 2017 15:08:59 +0000 (01:08 +1000)]
Delete tempo lines when session goes away
nick_m [Thu, 8 Jun 2017 13:11:56 +0000 (23:11 +1000)]
Do not duplicate note id in copy constructor
This fixes selection undo after copy-dragging notes, but there
are probably other cases where duplicate note ids may cause problems.
nick_m [Thu, 8 Jun 2017 12:39:41 +0000 (22:39 +1000)]
Remove debugging from TempoTest::qnDistanceTestRamp ()
nick_m [Thu, 8 Jun 2017 12:18:57 +0000 (22:18 +1000)]
Fix uninitialised tempo section variable
Should fix 7390.
Robin Gareus [Thu, 8 Jun 2017 11:33:35 +0000 (13:33 +0200)]
Fix rec-box w/count-in
Since
478f26b2ad, transport_rolling() is only true when actually rolling.
Count-in is a no-roll process (don't move playhead, no playhead UI
position interpolation
55b8b448).
But transport isn't exactly stopped either (preparing to roll), so
during count-in transport_stopped() == transport_rolling() == false.
Robin Gareus [Thu, 8 Jun 2017 11:22:43 +0000 (13:22 +0200)]
Update LuaDialog example script to include File/Folder selection
Robin Gareus [Thu, 8 Jun 2017 11:22:00 +0000 (13:22 +0200)]
Add a file-chooser LuaDialog Widget
Paul Davis [Wed, 7 Jun 2017 16:14:44 +0000 (12:14 -0400)]
cut buffer must not mess around with libardour selection
Fixes range mode selection/cut/copy that would previously clear track selection
Damien Zammit [Wed, 7 Jun 2017 16:04:12 +0000 (02:04 +1000)]
a-EQ: DSP bugfix
Previously there were large spurious spikes in the signal when
the bandwidth parameter was adjusted on a pure sine tone
for the peaking circuits. This has been *greatly* reduced if not
eliminated by fixing a typo in two of the equations.
Len Ovens [Tue, 6 Jun 2017 14:35:24 +0000 (07:35 -0700)]
OSC: add optional paging to sends in select.
Nil Geisweiller [Sun, 4 Jun 2017 18:34:48 +0000 (21:34 +0300)]
Fix a-EQ when parameter changes are very slow
If the parameters change too slowly the filter may never get updated. Indeed,
in spite of v_f0, v_g or v_bw being updated, set_params may never be called,
thus v_filter never updated.
Daniel Sheeler [Fri, 2 Jun 2017 22:23:00 +0000 (17:23 -0500)]
add route dialog now has "Add" and "Add and Close" buttons. "Add" keeps dialog open so user can add multiple templates.
Robin Gareus [Sat, 3 Jun 2017 11:29:28 +0000 (13:29 +0200)]
Apply VCA master gain automation to Amp (Fader, Trim)
Robin Gareus [Sat, 3 Jun 2017 11:18:31 +0000 (13:18 +0200)]
Add infrastructure for evaluating VCA automation curves
Robin Gareus [Sat, 3 Jun 2017 10:31:59 +0000 (12:31 +0200)]
amend
67f9f6fd: no recursive ReaderLock
Robin Gareus [Sat, 3 Jun 2017 10:30:26 +0000 (12:30 +0200)]
add const-ness: Evaluating a curve does not change it.
Note that the ControlList's lock and cache are already mutable.
Robin Gareus [Sat, 3 Jun 2017 10:26:33 +0000 (12:26 +0200)]
Add a scratch buffer for automation.
Useful as temporary buffer: This allows a controllable to
get a master's automation-curve and combine it with its own
(gain, trim, send) automation buffer.
Robin Gareus [Fri, 2 Jun 2017 22:19:35 +0000 (00:19 +0200)]
NO-OP: whitespace
Robin Gareus [Fri, 2 Jun 2017 16:21:31 +0000 (18:21 +0200)]
Import Dialog is Window. Dialog Esc behavior needs to be emulated.
Robin Gareus [Thu, 1 Jun 2017 09:57:08 +0000 (11:57 +0200)]
Remove "Close" button from import-dialog (prefer WM close button)
Paul Davis [Wed, 31 May 2017 17:04:03 +0000 (13:04 -0400)]
if actively recording, prevent interaction between mouse and audio clock widget(s)
Len Ovens [Wed, 31 May 2017 15:38:55 +0000 (08:38 -0700)]
OSC: Some surfaces may use float for ssid. Accept this too.
Len Ovens [Wed, 31 May 2017 14:15:50 +0000 (07:15 -0700)]
OSC: check controllable exists before using
Robin Gareus [Tue, 30 May 2017 13:15:30 +0000 (15:15 +0200)]
Add Lua bindings for VCAs and VCAManager
Robin Gareus [Tue, 30 May 2017 13:13:37 +0000 (15:13 +0200)]
Prepare for automation control master
Basic infrastructure to allow VCA automation and Trim automation:
look up events during automation playback.
Robin Gareus [Mon, 29 May 2017 21:48:17 +0000 (23:48 +0200)]
Credit where credit is due
Robin Gareus [Mon, 29 May 2017 21:45:16 +0000 (23:45 +0200)]
NO-OP: whitespace
Daniel Sheeler [Sun, 28 May 2017 20:46:22 +0000 (15:46 -0500)]
duplicate routes start off unsoloed to avoid issues related to upstream / downstream buses
Paul Davis [Mon, 29 May 2017 19:35:03 +0000 (15:35 -0400)]
when creating a new session after working on one, the "Cancel" button should be a quit button.
This avoids ending up with a null Session pointer in the GUI (#7369)
Robin Gareus [Mon, 29 May 2017 11:37:06 +0000 (13:37 +0200)]
Allow export presets for 176.4KHz -- "Ardour6: music for bats"
Alexandre Prokoudine [Thu, 25 May 2017 23:47:21 +0000 (02:47 +0300)]
Update Russian translation
Tim Mayberry [Fri, 26 May 2017 00:50:08 +0000 (10:50 +1000)]
Use string concatenation and PBD::to_string in EventTypeMap::to_symbol()
Avoid using PBD::string_compose for serialization as correct behaviour depends
on the setting of the global C++ locale.
Tim Mayberry [Fri, 23 Sep 2016 13:05:44 +0000 (23:05 +1000)]
Remove normalization of property names from libpbd xml code
It may have been OK to add this code temporarily at this low level, but as it
was introduced in 2008, this change is made with the assumption that any
Sessions that were affected have been re-saved since then with corrected
property names and that "normalization" is no longer necessary.
Timing results before changes:
XMLTest::testPerfMediumXMLDocumentTiming
Create : Count: 10 Min: 30375 Max: 48253 Total: 431727 Avg: 43172 (43 msecs)
Write : Count: 10 Min: 42553 Max: 49163 Total: 453353 Avg: 45335 (45 msecs)
Read : Count: 10 Min: 70307 Max: 75987 Total: 734923 Avg: 73492 (73 msecs)
XMLTest::testPerfLargeXMLDocumentTiming
Create : Count: 10 Min: 154486 Max: 307856 Total:
2678989 Avg: 267898 (267 msecs)
Write : Count: 10 Min: 304273 Max: 343274 Total:
3169158 Avg: 316915 (316 msecs)
Read : Count: 10 Min: 496920 Max: 541394 Total:
5260410 Avg: 526041 (526 msecs)
Timing results after changes:
XMLTest::testPerfMediumXMLDocumentTiming
Create : Count: 10 Min: 21437 Max: 39749 Total: 348622 Avg: 34862 (34 msecs)
Write : Count: 10 Min: 42320 Max: 49989 Total: 446135 Avg: 44613 (44 msecs)
Read : Count: 10 Min: 63252 Max: 68389 Total: 660841 Avg: 66084 (66 msecs)
XMLTest::testPerfLargeXMLDocumentTiming
Create : Count: 10 Min: 113458 Max: 263225 Total:
2215595 Avg: 221559 (221 msecs)
Write : Count: 10 Min: 305439 Max: 339986 Total:
3150697 Avg: 315069 (315 msecs)
Read : Count: 10 Min: 447560 Max: 488121 Total:
4698903 Avg: 469890 (469 msecs)
Tim Mayberry [Thu, 25 May 2017 12:02:32 +0000 (22:02 +1000)]
Use correct property name in generic MIDI surface
Fixes restoring the feedback interval property, but as the mutator/setter
method doesn't seem to be used this change should have no affect.
Tim Mayberry [Thu, 25 May 2017 11:39:59 +0000 (21:39 +1000)]
Use correct names when setting MidiTrack properties
These were changed in the XMLProperty ctor and they now match the names used in
MidiTrack::set_state()
Tim Mayberry [Thu, 25 May 2017 11:06:36 +0000 (21:06 +1000)]
Remove attempt to retrieve invalid Meterbridge properties
The property names with underscores are "normalized" to replace the underscores
with hyphens in the XMLProperty constructor from within Meterbridge::get_state
and so have always been written with hyphens.
Tim Mayberry [Thu, 25 May 2017 10:52:34 +0000 (20:52 +1000)]
Use correct property names in Meterbridge::get_state()
These property names have been "normalized"/changed to use a hyphen in the
XMLProperty ctor since 2008. That is before the Meterbridge existed so there
should be no files existing that contain these properties with underscores.
Tim Mayberry [Thu, 25 May 2017 10:42:45 +0000 (20:42 +1000)]
Use correct property names for Editor transport controllable state
These are normalized in the PBD::XMLProperty ctor, which is why
Editor::get_transport_controllable_state() uses the hyphenated names to
retrieve the properties and will not result in any state format change.
Robin Gareus [Thu, 25 May 2017 12:10:14 +0000 (14:10 +0200)]
Always create a deep copy of MIDI regions when copying playlists.
Robin Gareus [Thu, 25 May 2017 11:48:55 +0000 (13:48 +0200)]
Pretty print control-outputs in generic-UI
Robin Gareus [Thu, 25 May 2017 11:36:33 +0000 (13:36 +0200)]
Implement basic AU parameter-printing
(don't leave buf uninitialized)
Robin Gareus [Thu, 25 May 2017 11:34:11 +0000 (13:34 +0200)]
Include ParameterDescriptor in read-only control output
Len Ovens [Wed, 24 May 2017 20:58:49 +0000 (13:58 -0700)]
OSC: fix return value for successful touch
Len Ovens [Wed, 24 May 2017 14:37:21 +0000 (07:37 -0700)]
OSC: Added lpf and hpf controls for freq,enable and slope
Len Ovens [Wed, 24 May 2017 00:16:42 +0000 (17:16 -0700)]
OSC add feedback for extra comp and eq controls
Len Ovens [Tue, 23 May 2017 22:14:31 +0000 (15:14 -0700)]
OSC - make /strip/list accept a parameter like everything else
John Emmas [Tue, 23 May 2017 08:28:44 +0000 (09:28 +0100)]
Accommodate recently removed source(s) in our MSVC project (gtk2_ardour)
Tim Mayberry [Tue, 23 May 2017 04:27:50 +0000 (14:27 +1000)]
Remove old jack_utils.h header that was moved to the JACK backend
Also remove a related test that has not been part of the unit tests since the
move (years).
nick_m [Tue, 23 May 2017 01:41:36 +0000 (11:41 +1000)]
Sort tempo map after legacy sections have been assigned a pulse
nick_m [Mon, 22 May 2017 23:54:30 +0000 (09:54 +1000)]
Tempo sections with a BBT start XML node are never ramped
Tim Mayberry [Sun, 11 Dec 2016 23:20:36 +0000 (09:20 +1000)]
Remove unused header file in gtk2_ardour
Tim Mayberry [Tue, 16 May 2017 09:04:18 +0000 (19:04 +1000)]
Remove dead assignment in Editor::export_audio()
Tim Mayberry [Tue, 16 May 2017 01:04:37 +0000 (11:04 +1000)]
Use braces in BasicUI::jump_by_bars()
Tim Mayberry [Tue, 16 May 2017 00:49:05 +0000 (10:49 +1000)]
Use braces in BasicUI::jump_by_seconds()
Tim Mayberry [Tue, 16 May 2017 00:41:39 +0000 (10:41 +1000)]
Use correct variable in BasicUI::jump_by_seconds
Tim Mayberry [Tue, 16 May 2017 00:33:59 +0000 (10:33 +1000)]
Remove dead assignment in Editor::metric_get_bbt
Tim Mayberry [Tue, 16 May 2017 00:20:00 +0000 (10:20 +1000)]
Remove dead assignment in MiniTimeline::draw_edge
nick_m [Mon, 22 May 2017 19:30:39 +0000 (05:30 +1000)]
Fix failure to laod old tempo maps
I suspect this happened after an api change.
Now, just use the position pair instead of a whole new variable.
Len Ovens [Sat, 20 May 2017 17:17:31 +0000 (10:17 -0700)]
OSC: Further fixes so multiple controls can touch at once.
Len Ovens [Sat, 20 May 2017 16:09:01 +0000 (09:09 -0700)]
OSC: fix c++98 mistake
Robin Gareus [Sat, 20 May 2017 10:38:49 +0000 (12:38 +0200)]
Fix libhid compile with /recent/ libc (GNU_SOURCE)
- strtok_r
- strdup
- wcsdup
Len Ovens [Fri, 19 May 2017 22:48:36 +0000 (15:48 -0700)]
OSC: Catch case of surface sending fader move before touch
Len Ovens [Thu, 18 May 2017 22:25:15 +0000 (15:25 -0700)]
OSC: Add fake timeout based touch
Ben Loftis [Wed, 17 May 2017 20:55:43 +0000 (15:55 -0500)]
MCP: Fix issue with strip "select" buttons that stayed stuck on.
* Depending on individual strips to watch the selection property is prone to failure.
* Stripable_selection_changed() is called when a selection operation is completed.
Ben Loftis [Wed, 17 May 2017 20:53:14 +0000 (15:53 -0500)]
MCP: map the well-known EQ knobs more explicitly, not heuristically.
Len Ovens [Tue, 16 May 2017 02:37:39 +0000 (19:37 -0700)]
OSC: Add /strip/fader/touch
Len Ovens [Tue, 16 May 2017 01:40:48 +0000 (18:40 -0700)]
remove unused variable
Robin Gareus [Mon, 15 May 2017 20:49:37 +0000 (22:49 +0200)]
Set Display Name for OSX/macOS
Len Ovens [Mon, 15 May 2017 03:55:24 +0000 (20:55 -0700)]
OSC: added automation name feedback
Len Ovens [Sun, 14 May 2017 02:28:33 +0000 (19:28 -0700)]
OSC: combine two identical if() statements
John Emmas [Mon, 15 May 2017 13:46:34 +0000 (14:46 +0100)]
It might not be obvious why... but 'ARDOUR::ControlProtocol::name()' needs to be a virtual function
Basically, libardour is calling functions from libardour_cp and vice versa. For example, libardour needs 'ARDOUR::ControlProtocol::name()' whereas ardour_cp needs 'ARDOUR::Route::soloed()' and various others. Ordinarily, this would require each library to get built before the other one! :-(
To get around this (in MSVC at least) one of the libraries must be forced to use late binding (e.g. by declaring its functions as 'virtual'). It looks like this is already being done for most of the other functions from 'ARDOUR::ControlProtocol', so let's do it for this function too...
Robin Gareus [Sun, 14 May 2017 18:37:58 +0000 (20:37 +0200)]
Fix out-of-bounds waveform image rendering.
With large sample-rates and high-zoom-level the minimal request-size
or at least 1/10sed can exceed the max image size supported by cairo.
e.g. @192kSPS; 100ms = 19200 samples.
* 1 sample/pixel, * 2 (left/right) = 38400px > 2^15px.
Nil Geisweiller [Sat, 21 Jan 2017 22:38:54 +0000 (00:38 +0200)]
Support note name editing in midi list editor
André Nusser [Fri, 12 May 2017 09:51:58 +0000 (11:51 +0200)]
Fix compiler warning of unused variable.
Nil Geisweiller [Fri, 12 May 2017 18:27:56 +0000 (21:27 +0300)]
Add note name parser to convert to midi note number
Supports i18n, is case and whitespace insensitive for more resilent parsing.
Edgar Aichinger [Sun, 14 May 2017 14:09:53 +0000 (16:09 +0200)]
one more update to german translation
Edgar Aichinger [Sun, 14 May 2017 13:29:27 +0000 (15:29 +0200)]
update german translation
Robin Gareus [Sun, 14 May 2017 13:15:10 +0000 (15:15 +0200)]
yet another stupid typo
André Nusser [Sun, 14 May 2017 09:28:18 +0000 (11:28 +0200)]
Fix double "Tape" in Record Mode drop down when adding new track.
This bug probably also lead to "Tape" being shown in mixbus even
though it should not.
Robin Gareus [Sun, 14 May 2017 09:59:15 +0000 (11:59 +0200)]
Fix use-after free (signal after deleting group)
Robin Gareus [Sat, 13 May 2017 22:16:02 +0000 (00:16 +0200)]
Sanitize "well-known" ctrl API
Len Ovens [Sat, 13 May 2017 17:15:02 +0000 (10:15 -0700)]
OSC: make /*/automation more generic so other controls can be easily added
Robin Gareus [Sat, 13 May 2017 18:33:04 +0000 (20:33 +0200)]
Fix typos (thanks edogawa)
Len Ovens [Sat, 13 May 2017 15:43:33 +0000 (08:43 -0700)]
The #end should be #endif
Ben Loftis [Sat, 13 May 2017 12:54:08 +0000 (07:54 -0500)]
More tweaks to FP8 layout for 32C
Ben Loftis [Sat, 13 May 2017 12:26:55 +0000 (07:26 -0500)]
Fix copy+paste error for mb32c filter freq.
Robin Gareus [Sat, 13 May 2017 00:02:17 +0000 (02:02 +0200)]
Update FP8: new controllables, clarify 32C bell-shape labels