Robin Gareus
9b797dc4c1
PortAudio: fix latency reporting, disable custom MIDI cfg
...
This correctly sets audio port I/O latency using the
portaudio API.
Per MIDI device port settings are not completely implemented.
En/disabling MIDI devices or setting custom MIDI port latency
is not functional as-is.
2023-06-17 05:49:11 +02:00
Robin Gareus
639696c1a8
ALSA: fix adding n_period playback latency
...
Use playback port, not capture port.
2023-06-17 00:53:22 +02:00
Robin Gareus
7b1da19581
Sort events when merging MIDI regions ( #9313 )
...
Sequence<Time>::append() expects events to be sorted.
Previously this only worked for non-overlapping region,
or if all events in the later region(s) are after than the
last even in any earlier region.
2023-06-16 21:31:07 +02:00
Paul Davis
7dc9bf157b
fix measure line drawing (convert to window coords for intersection check)
2023-06-16 09:16:53 -06:00
Paul Davis
248e37ac0c
canvas LineSet: fix rendering to get coordinates precisely correct
2023-06-15 20:10:32 -06:00
Robin Gareus
a2975bb4b7
Fix opaque MIDI region rendering
...
This issue was introduced in e79d8b00f9 .
2023-06-14 19:42:00 +02:00
Robin Gareus
7aad0bbe15
CoreMIDI: use dedicated packet buffer on stack
2023-06-13 16:50:53 +02:00
Paul Davis
bb97ade440
temporal: special case editing of the initial tempo ( #9339 )
2023-06-12 16:46:13 -06:00
Paul Davis
50232a23a7
temporal: hide superclock_t variant of TempoMap::metric_at()
...
This fixes several callsites that were passing samplepos_t to get a TempoMetric,
some of them somewhat significant (e.g. VST plugins that want tempo information).
Bad API design on my part, apologies.
This commit combines libs/ and gtk2_ardour because the new private status
of the ::metric_at() call would be a blocking point for git bisect
2023-06-12 12:36:16 -06:00
Paul Davis
12c3daa46b
JACK: fix reported tempo & meter when functioning as JACK timebase master
...
TempoMap::metric_at() has a superclock_t variant that was being called
with a samplepos_t value. Full check (and removal, hopefully) coming up.
2023-06-12 12:10:26 -06:00
Robin Gareus
3a60de5d54
Add track playlist-state function for undo/redo
2023-06-10 15:03:46 +02:00
Robin Gareus
a3e64445de
Amend bb54bc0d (prevent bad_weak_ptr)
2023-06-10 04:00:46 +02:00
Robin Gareus
884b4f3046
Playlist cut/copy always produces hidden playlists
2023-06-10 03:33:51 +02:00
Robin Gareus
f95c9216b1
Fix playlist use-count 2/2
...
* Use an atomic reference count since the freeze-thread
can call use_playlist.
* Remove explicit argument to construct unused playlist
because playlists are unused by default. This also
lead to use-count becoming negative (or rather UINT32_MAX)
2023-06-10 03:33:51 +02:00
Robin Gareus
8489810cfb
NO-OP: whitespace
2023-06-10 03:33:51 +02:00
Robin Gareus
bb54bc0d40
Yet another attempt at fixing #9361
2023-06-10 03:33:51 +02:00
Robin Gareus
3fbc89e4ee
Remove unused overloaded method
2023-06-10 03:33:51 +02:00
Robin Gareus
4abdb09c00
Remove unused API
2023-06-10 03:33:50 +02:00
Robin Gareus
5965fd15e5
Fix tiny memory leak
2023-06-10 03:33:39 +02:00
Robin Gareus
55afdc2aa4
amend 7c7bf6c88b, do not notify UI during cleanup
...
This fixes a rare crash where the signal causes a
cxa_pure_virtual in PBD::Signal1 during destruction.
2023-06-09 16:17:40 +02:00
Robin Gareus
ad49de022a
Too many drop-references handlers ( #9363 )
...
This fixes a random crash with stop-and-forget capture.
When aborting capture, the disk-writer can emit
midi_write_source->drop_references ()
in the butler thread, which leads to a direct call to
Session::remove_source.
This can happen before or after Region::source_deleted
is called which is initiated from the same signal.
Furthermore it was possible that Region::source deleted
was called concurrently from the UI thread via SourceRemoved
for whole file regions, which lead to memory corruption.
2023-06-09 16:17:37 +02:00
Robin Gareus
03e0eea744
Playlist paste, always pastes on top
2023-06-09 00:48:42 +02:00
Robin Gareus
c61fc45689
Retain region layering for cut/copy/paste
2023-06-09 00:03:49 +02:00
Robin Gareus
7c7bf6c88b
Fix TransportMasterManager crash at exit
...
TransportMasterManager::destroy () destroys any remaining
TransportMasters which in turn unregister their ports.
However the PortEngine was already destroyed.
2023-06-08 22:50:15 +02:00
Paul Davis
733d59c65b
temporal: unit testing more like unit testing
...
But still not really.
2023-06-08 14:01:17 -06:00
Paul Davis
01b8187cd3
temporal: add rudimentary paste test
2023-06-08 14:01:17 -06:00
Paul Davis
1cf4f9293c
temporal: paste needs to add to _points
2023-06-08 14:01:17 -06:00
Paul Davis
24f6c51de6
temporal: more nuances for ::cut_copy()
2023-06-08 14:01:17 -06:00
Paul Davis
a09a37049b
temporal: get guard point values before altering the tempo map
2023-06-08 14:01:17 -06:00
Paul Davis
6039cea3dc
temporal: improve cut buffer slightly by using different meters
2023-06-08 14:01:17 -06:00
Robin Gareus
d0f5fdb224
Fix deadlock and remove debug message
...
get_extent() takes a RegionReadLock, but ::partition_internal
already holds a RegionWriteLock (use ::_get_extent)
2023-06-08 21:32:53 +02:00
Robin Gareus
49aa046824
Cut/Copy Section also needs to operate on unused playlists
2023-06-08 20:42:07 +02:00
Robin Gareus
61b41fd5d0
A user initiated locate cancels play-range ( #9360 )
2023-06-08 18:38:25 +02:00
Robin Gareus
6aa2ad26b5
Clear transport sub-state at RangeStop, disable play-range
2023-06-08 18:06:28 +02:00
Robin Gareus
cd2d0448a9
Fix Play Range ( #9360 )
...
When starting RangePlay while the transport is already rolling
the transport is now stopped (and de-clicked) before locating.
This should not clear the RangeStop event when it is caused
by a RangePlay request.
2023-06-08 16:51:24 +02:00
Paul Davis
d761ccb59b
temporal: the second variant of shift() (untested)
2023-06-07 11:25:44 -06:00
Paul Davis
e6b6340f3e
temporal: more nuances for shift()
2023-06-07 11:25:44 -06:00
Paul Davis
ad45778edc
temporal: shift() with BBT must allow negative motion
2023-06-07 11:25:44 -06:00
Paul Davis
a456a10cdf
temporal: first guess at a TempoMap::shift() implementation
2023-06-07 11:25:44 -06:00
Robin Gareus
5e9d98dbf9
Debug Port reconnect
2023-06-07 18:13:27 +02:00
Robin Gareus
d2365daafe
Remove unused API, prefer Session::possible_states
2023-06-07 17:39:29 +02:00
Paul Davis
9d3ae4fc8d
temporal: fix position of end guard points during map paste
2023-06-06 09:52:29 -06:00
Paul Davis
9e4b1d59a7
temporal: do something when pasting the cut buffer guard points
...
Don't think this is quite right yet - we get guard points even when
they are not really necessary
2023-06-06 09:04:34 -06:00
Robin Gareus
6865615af8
Fix recursive lock introduced in fbfeff4168 ( #9359 )
2023-06-06 15:39:54 +02:00
Robin Gareus
4529a17617
Implement Section Delete/Insert
2023-06-06 02:42:43 +02:00
Paul Davis
f5f87f86d4
temporal: adjust cut buffer API to better deal with start/end "guard points"
2023-06-05 17:27:12 -06:00
Paul Davis
7789df5b1c
temporal: get cut/copy/paste test code slightly more useful
2023-06-05 16:35:17 -06:00
Robin Gareus
522c8f9426
Improve port-engine debug messages
...
try to get to the bottom of "unregister_port: Failed to find port"
errors.
2023-06-05 19:10:10 +02:00
Robin Gareus
e938d4936f
Further speed up Windows freewheel export
2023-06-05 01:42:24 +02:00
Robin Gareus
c24b456211
Windows: unconditionally request high timer resolution
...
Previously timeBeginPeriod() was only called when MIDI
system was set to WinMME. It was also possible that
it was never unset in case starting the engine failed.
This significantly speeds up freewheel export which uses
Glib::usleep(100) when MIDI is disabled.
see also: https://randomascii.wordpress.com/2020/10/04/windows-timer-resolution-the-great-rule-change/
2023-06-05 00:02:54 +02:00