Commit graph

18433 commits

Author SHA1 Message Date
Robin Gareus
f6c011cb65
Remove old RegionPropertyChanged signal (3/3) 2021-05-07 23:29:25 +02:00
Robin Gareus
2ff8f5a5de
Consolidate RegionsPropertyChanged signal emission (1/3)
This prepares to combine multiple RegionPropertyChanged signals
(potentially thousands) into a single signal.
2021-05-07 23:29:25 +02:00
Paul Davis
f689e9ecab Evoral: add methods to SMF to load and access markers/cues in SMF files 2021-05-07 14:58:16 -06:00
Robin Gareus
49e1380417
Add missing Lua binding (see also 48e5607f7c) 2021-05-07 21:56:09 +02:00
Todd Naugle
d2ba90b2c1 Fallback to the default export path when the saved export path is not found.
Previously we would end up with an export path of top level session
directory.
2021-05-07 12:25:42 -05:00
Todd Naugle
9e6b85f330 Don't save a leading slash when storing a relative export path.
It is not needed in the relative case and causes issues when taking
sessions between platforms.

On windows, the default path would be "\export". When that is used
on linux the resulting fullpath would end up as

/your/session/path/\export

which is then not found on the file system.

This change is consistent with how relative paths are normally written and
does cure the default path when moved across platforms.

It does not solve the larger issue of mixed directory separators.
A relative path of "export\myMixV1" will still fail when moving between
platforms.
2021-05-07 12:25:42 -05:00
Robin Gareus
98f5224d4c
Fix incorrect port lists due to custom sort
Previously the following were treated as equal
 "MIDI_foo" == "MIDI bar"
So std::map<> PortManager::_ports and PortEngineSharedImpl:_ports
could only have either. This resulted in missing ports
and missing calls to existing ports in cycle_start().

This mainly affected MIDI tracks with imported files, since there
is "MIDI Clock in", and imported files result in tracks
"MIDI_file-name".

This issue was introduced in 6.6-200-g60ff3ef764
2021-05-07 04:24:32 +02:00
Paul Davis
bfd52fd94d TransportFSM: do not enter Reversing state too early
We do need to know that a reversal is intended before we do a locate, but we should
not enter Reversing before the declick is finished. So instead, we add a new
member, _reverse_after_declick to keep track, and enter Reversing just before
we start the locate
2021-05-06 19:40:08 -06:00
Robin Gareus
7dc21fdc96
PortList debug methods (to be called from gdb) 2021-05-07 01:43:19 +02:00
Paul Davis
ade679f162 move <poll.h> inside an appropriate #ifdef, since it does not exist on Windows 2021-05-06 14:45:56 -06:00
Paul Davis
3a7ea6b217 use poll(2) rather than select(2) for reading output from an exec'ed process
select(2) can only handle file descriptors up to 1024, and there are fairly easy to reproduce
cases where the file descriptor used here is larger than that.
2021-05-06 14:41:28 -06:00
Robin Gareus
221b272f8a
Fix loading old route-templates
This follows 983c577945, don't allow unlinked
pannable to override main panners.
2021-05-06 21:21:47 +02:00
Robin Gareus
1173262503
Fix insert-position when adding route from template 2021-05-06 21:21:47 +02:00
Robin Gareus
31b709b7ff
NO-OP: rename variable, avoid ambiguities
Portmanager uses "ports" as local variable in various places
(usually vector<string>). While the compiler is fine with that,
it is confusing when debugging or reading code.
2021-05-06 21:21:47 +02:00
Paul Davis
c47f5eb951 pay attention to auto-return-after-rewind-ffwd 2021-05-06 11:40:20 -06:00
Paul Davis
3bbae4ec62 add new config parameter for auto-return after rewind/ffwd (set to false by default) 2021-05-06 11:40:20 -06:00
Robin Gareus
fd9e9df742
Fix optimized build, amend 5957e14259 2021-05-06 15:50:44 +02:00
Robin Gareus
fc54ab48ec
Remove unused function, fix optimized builds 2021-05-06 15:27:26 +02:00
John Emmas
a222292e68 Emulate exp2f() for older MS compilers where it wasn't available 2021-05-05 17:50:41 +01:00
Robin Gareus
5957e14259
Remove unused #include<> (2/2)
PBD::stacktrace() is not used nor needed by default.
It should be used sparingly.
2021-05-05 17:57:16 +02:00
Robin Gareus
3cd7c3e206
Reduce default max transport speed
Since Ardour 6, a transport speed of 200% will also double
DSP load. Under the hood Ardour rolls twice the distance and
the output is downsampled.

Vari-speed > +/-200% will likely cause dropouts with many
sessions on most systems, users should explicitly select it.
2021-05-05 17:30:48 +02:00
Robin Gareus
161b36578a
Change default GUI shuttle ctrl behavior
This facilitates vari-speed recording, and also allows for
persistent speed changes (which now work correctly).
2021-05-05 17:13:41 +02:00
Paul Davis
273049a5a1 Mackie Control: if master surface has a jog wheel *and* a scrub button, button toggles between scroll and shuttle behavior 2021-05-04 21:30:22 -06:00
Paul Davis
1757cfb8ef use rewind/ffwd option to alter behavior of control surface rewind/ffwd buttons
This does not affect GUI equivalents (yet)
2021-05-04 20:52:01 -06:00
Paul Davis
8113118b89 add option to control rewind/ffwd behavior 2021-05-04 20:51:11 -06:00
Paul Davis
eba96e72cd add back a DEBUG_TRACE statement, this time in the correct location 2021-05-04 18:55:09 -06:00
Paul Davis
7381b8a8c6 any varispeed action that doesn't also set the default speed cancels auto-return 2021-05-04 18:54:40 -06:00
Paul Davis
4f13ec69c1 expose TransportFSM default_speed 2021-05-04 18:53:57 -06:00
Paul Davis
cd4aaa808e use button_varispeed() in BasicUI::rewind() and BasicUI::ffwd() 2021-05-04 16:38:28 -06:00
Paul Davis
009e971bfb correct the implementation of BasicUI::button_varispeed() to provide incremental speed shifting (by semitones) in both directions 2021-05-04 16:38:02 -06:00
Paul Davis
fbd1221833 move FaderPort8 method "button_varispeed()" into BasicUI for more general use 2021-05-04 16:10:24 -06:00
Paul Davis
66aea6559b remove redundant (duplicate) call to set_track_monitor_input_state() 2021-05-04 11:30:38 -06:00
Paul Davis
30c03c0c45 remove commented debug output 2021-05-04 11:30:38 -06:00
Robin Gareus
9448973163
Add Lua bindings to modify region gain curve 2021-05-04 18:18:04 +02:00
Paul Davis
4b87c3a6b1 complete removal of Session::_transport_speed, _default_transport_speed and takeover of transport state mgmt by TransportFSM
The TransportFSM is now responsible for deciding what to do at all transport state transitions. The Session (via the TransportAPI) merely
provides mechanism (locate, start, stop, set_speed). Default and most recent speed requests are managed by the TransportFSM too
2021-05-03 17:40:41 -06:00
Paul Davis
3d10f44b30 remove PostTransportRoll enum.
The decision to roll or not, and the handling of the decision, is the responsibility of the TransportFSM. No enum required
2021-05-03 17:40:41 -06:00
Paul Davis
79a823d2cb use correct condition in TransportFSM::transport_speed()
Any state that it not Rolling should count as stopped for this purpose
2021-05-03 17:40:41 -06:00
Paul Davis
8e868fc743 remove unnecessary 2nd argument from Session::request_locate() calls (default value is identical) (surfaces edition) 2021-05-03 17:40:41 -06:00
Paul Davis
c7c5379fac remove "flush" argument from Session and TransportFSM locate APIs (it does nothing) 2021-05-03 17:40:41 -06:00
Paul Davis
825c299feb add TransportFSM::transport_speed(), a putative replacement for the Session method of the same name 2021-05-03 17:40:41 -06:00
Robin Gareus
438b1e5eab
Cont'd work to improve macOS rt priority 2021-05-02 20:24:10 +02:00
Robin Gareus
115c79874a
Fix Lua bindings for C++17/C++20 -- #8683
std::list/vector/map declarations change, requiring
explicit cast to avoid FuncTraits ambiguities.
2021-05-02 16:36:30 +02:00
Robin Gareus
8b888282fa
Ensure that no ThawList remains frozen by accident 2021-05-01 17:31:32 +02:00
Robin Gareus
08d8478f66
Cleanup and speedup combine/uncombine
Collect signal emissions and remove unneeded locks when
operating on the newly created Playlist.
2021-05-01 17:30:39 +02:00
Robin Gareus
c8585fce90
Cont'd work to prevent region creation signal-emission
This fixes another deadlock calling send_change with the
Playlist's RegionWriteLock held.

In this case due to "MIDI region copies are independent"
when duplicating MIDI regions.

```
ARDOUR::Region::send_change ()
PBD::Stateful::apply_changes ()
ARDOUR::RegionFactory::create ()
ARDOUR::RegionFactory::create ()
ARDOUR::MidiRegion::clone ()
ARDOUR::RegionFactory::create ()
ARDOUR::Playlist::duplicate ()
```
2021-05-01 16:21:17 +02:00
Robin Gareus
747a3d4a7b
NO-OP: clang-format 2021-05-01 16:21:17 +02:00
Robin Gareus
3e04e30e9e
Allow to create regions from sources with signals suspended
See also 65cc9264c8
2021-05-01 16:21:13 +02:00
John Emmas
80f6f152ee Add/remove source(s) in our MSVC project (libardour) 2021-05-01 09:44:20 +01:00
Robin Gareus
53e710bc5f
macOS: apply time scaling for rt constraints 2021-05-01 02:49:06 +02:00
Robin Gareus
65cc9264c8
Create regions with property changes suspended
This fixes various issues with signal emission(s) when creating
regions from withing playlist operations.

eg. Playlist::duplicate() takes RegionWriteLock() and then calls
RegionFactory::create().

see also 6a82aa392c
2021-04-30 18:43:36 +02:00