13
0
Commit Graph

31712 Commits

Author SHA1 Message Date
f72c2b93c5
Fix video-monitor display when seeking
see also 25c0bd9274

play, locate, play resulted in the video-monitor showing
the target frame shortly, and play a few frames from the old
location.

This was due to locate happening async. Click to locate
directly sends the new location:

```
VideoTimeLine::manual_seek_video_monitor
ARDOUR_UI::update_transport_clocks
CursorDrag::fake_locate
CursorDrag::start_grab
DragManager::start_grab

```

CursorDrag::finished unset _dragging_playhead before the
call to resuest_locate(). Meanwhile playback continues.
2021-05-05 17:11:24 +02:00
9f4189c031 copy over changes to BasicUI::button_varispeed() to ARDOUR_UI::button_varispeed() 2021-05-04 23:14:48 -06:00
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
f792735672 remove double-tooltip setting (copy-paste error) for a preferences item 2021-05-04 20:54:38 -06:00
7fef16af6f add rewind/ffwd option to transport section of Preferences 2021-05-04 20:52:21 -06:00
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
8113118b89 add option to control rewind/ffwd behavior 2021-05-04 20:51:11 -06:00
eba96e72cd add back a DEBUG_TRACE statement, this time in the correct location 2021-05-04 18:55:09 -06:00
7381b8a8c6 any varispeed action that doesn't also set the default speed cancels auto-return 2021-05-04 18:54:40 -06:00
4f13ec69c1 expose TransportFSM default_speed 2021-05-04 18:53:57 -06:00
9905f6e0a9 copy BasicUI::button_varispeed() into ARDOUR_UI, and use in all the right places
We really must find a way to share code between BasicUI and ARDOUR_UI
2021-05-04 16:56:19 -06:00
b01632356d fix cast warning 2021-05-04 16:55:33 -06:00
cd4aaa808e use button_varispeed() in BasicUI::rewind() and BasicUI::ffwd() 2021-05-04 16:38:28 -06:00
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
fbd1221833 move FaderPort8 method "button_varispeed()" into BasicUI for more general use 2021-05-04 16:10:24 -06:00
981fc6b3cd transition-to-roll should work whether rolling or stopped 2021-05-04 15:57:03 -06:00
8c427279d9 transition-to-roll should not set the default transport speed 2021-05-04 15:37:04 -06:00
1f18b4905d remove assert() that is triggered via multiple selection in region list (now possible for some time) 2021-05-04 11:55:48 -06:00
0aef128207 fix assumption that during dragging, a DraggingView's time_axis_view field is always a positive integer within range 2021-05-04 11:55:23 -06:00
5bfc507cb3 fix out-of-bounds access to a vector.
If the time axis view is not found, i will equal N, and _views[i] is out of bounds
2021-05-04 11:54:50 -06:00
66aea6559b remove redundant (duplicate) call to set_track_monitor_input_state() 2021-05-04 11:30:38 -06:00
30c03c0c45 remove commented debug output 2021-05-04 11:30:38 -06:00
9448973163
Add Lua bindings to modify region gain curve 2021-05-04 18:18:04 +02:00
56d6a9b9f4
Remove executable flag from device files 2021-05-04 02:42:43 +02:00
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
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
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
8e868fc743 remove unnecessary 2nd argument from Session::request_locate() calls (default value is identical) (surfaces edition) 2021-05-03 17:40:41 -06:00
ac53a9bbf8 remove unnecessary 2nd argument from Session::request_locate() calls (default value is identical) 2021-05-03 17:40:41 -06:00
c7c5379fac remove "flush" argument from Session and TransportFSM locate APIs (it does nothing) 2021-05-03 17:40:41 -06:00
825c299feb add TransportFSM::transport_speed(), a putative replacement for the Session method of the same name 2021-05-03 17:40:41 -06:00
438b1e5eab
Cont'd work to improve macOS rt priority 2021-05-02 20:24:10 +02:00
e82b2b48fb
Avoid ambiguity with C++17 enum class std::byte 2021-05-02 16:36:57 +02:00
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
8b888282fa
Ensure that no ThawList remains frozen by accident 2021-05-01 17:31:32 +02:00
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
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
747a3d4a7b
NO-OP: clang-format 2021-05-01 16:21:17 +02:00
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
53e710bc5f
macOS: apply time scaling for rt constraints 2021-05-01 02:49:06 +02:00
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
61885f0284
Explicitly set announce=false when creating regions (2/2)
This is in preparation for to improve consistency of
RegionFactory::create() default parameters (change
default to true).
2021-04-30 18:40:51 +02:00
f3d7c551e9
Explicitly set announce=false when creating regions (1/2)
This is in preparation for to improve consistency of
RegionFactory::create() default parameters (change
default to true).
2021-04-30 18:40:48 +02:00
6a82aa392c
Fix deadlock when duplicating regions w/ripple
This is an initial work-around for signal emission with
Playlist:region_lock held:

Playlist::duplicate() takes RegionWriteLock() and then calls
RegionFactory::create(). The newly created region does NOT have
property-changes suspended, and the RegionFactory can change
region-properties which results in signal-emission.

This in turn can lead to a call Editor::session_gui_extents()
-> ARDOUR::Playlist::get_extent() -> Playlist::RegionReadLock

which deadlocks: https://pastebin.com/84rSbsA3

Eventually we need a mechanism to create regions with
->suspend_property_changes() and add it to the playlist's
thawlist (pass a thawlist to the region-factory).
2021-04-30 03:40:32 +02:00
58557e88c9
Do not move automation when inserting regions
RegionInsertDrag or Consolidate Range or any other operation
calling Playlist::add_region() previously triggered RangesMoved()
which resulted in DiskReader::move_processor_automation()

NB. insert + ripple still moves automation correctly.
2021-04-29 23:26:24 +02:00
7a89d56009
Fix insert + ripple undo/redo
Playlist changes do not include region-property changes.
When inserting a region, position(s) of other Regions may
change and those changes have to be recorded explicitly (for now).

see also RegionRippleDrag.
2021-04-29 22:56:09 +02:00
2c64736604
Fix crash when consolidating range with automation
The undo command needs to be started before calling
playlist->add_region() because that may move automation
or include ripple changes. see the following backtrace:

```
UndoTransaction::add_command
ARDOUR::DiskReader::move_processor_automation
ARDOUR::Route::foreach_processor
ARDOUR::DiskReader::playlist_ranges_moved
ARDOUR::Playlist::flush_notifications
ARDOUR::Playlist::RegionWriteLock::~RegionWriteLock
ARDOUR::Playlist::add_region
Editor::bounce_range_selection
```

Except. it seems automation is moved incorrectly in this case..
2021-04-29 21:17:22 +02:00
a8c47da364
Fix realtime export loudness normalization
TmpFileRt::get_samples_written() returns the number of
samples written *to disk*. It is only valid after the FileFlushed
signal is emitted.

This fixes an assert() with Limiter and Analyzer being configured
with a too low total sample-count, leading to an overflow in
the analysis graph array.
2021-04-29 19:05:09 +02:00
5014b20c5f
Inform user if there have been dropouts during export 2021-04-29 17:50:46 +02:00