13
0
Commit Graph

35808 Commits

Author SHA1 Message Date
79f8606b2d
LV2: announce bufz:boundedBlockLength feature (#8942) 2022-07-18 15:42:44 +02:00
4556f55d8e
Fix Trim-drag abort
When no movement has occurred, TrimDrag::motion was never called
and `begin_reversible_command()` was not called. There is nothing
to undo. This fixes
`commit_reversible_command(Command*): Assertion `_current_trans' failed`
2022-07-17 16:02:53 +02:00
ef08c819da
Fix crash on port unregistration
pr->erase (*i); deletes the iterator, it cannot be safely
dereferenced again later.
2022-07-16 20:26:56 +02:00
b9419aa405 another attempt to catch details of a rare region-gain undo crash 2022-07-16 10:01:33 -05:00
1f65c66727
MCU: fix mixer-strip buttons (see also 0d9656ef82) 2022-07-15 23:46:28 +02:00
2de84c97d0
Fix Temporal::Range::squish reduced to samples
Loop Location start="a1665678660" end="b145920"
Loop-end (at 122BPM) is a2109859636
at 48kHz this is sample 1794098.32

Now play the loop and play sample 1794098 = a2109859248
Range::squish start: a1665678660 end: a2109859636 squish: a2109859248

squish() does nothing, since there are still 388 superclock-ticks
until the end of the loop.

However, DiskReader::get_midi_playback convertes the value back
to samples(), this leads to effective_start == loop_end;
resulting in an endless loop.

Thanks to MikeLupe to provide a session to reproduce this issue.
2022-07-15 19:54:21 +02:00
419f934ecd support group-override when starting a new Range selection 2022-07-14 17:28:07 -05:00
6089ae9314
Use group_override_inverts preference in the GUI 2022-07-14 16:37:29 +02:00
e1c6a19d06
Add a preference to set group-override behavior
So far group-override "inverts" group behavior. Disabled groups
(or group settings) are enabled and vice-versa.

When the setting is disabled, groups can only ever be disabled
(Controllable::NoGroup) and group-override will not enable them
(Controllable::InverseGroup).
2022-07-14 16:23:31 +02:00
c0ec11db8e
Cleanup code, return early, don't nest 2022-07-14 01:25:06 +02:00
b4a7c8a17d
Better version of 6a57baf193
This also fixes Menu > Edit Delete "delete MIDI" operation.
Pressing backspace/delete calls "Delete Selection" which is
unrelated to MRV::cut_copy_clear.
2022-07-14 01:23:04 +02:00
2848cc5f38
Disambiguate clip/sample/slot 2022-07-14 00:06:48 +02:00
6a57baf193
Fix MIDI note cut
1. Editor::cut_copy() calls begin_reversible_command ("cut MIDI")
2. Editor::cut_copy_midi calls mrv->cut_copy_clear()
3. MidiRegionView::cut_copy_clear calls start_note_diff_command()
4. second call to  begin_reversible_command()
- debug builds assert() here, optimized builds continue
5. abort_reversible_command() is called, _current_trans = NULL;
6. MidiModel::apply_diff_command_as_subcommand()
7. Session::add_command, segfault because _current_trans == NULL

```
An UNDO transaction was started while a prior command was underway.
Aborting command (midi edit) and prior (cut MIDI)
```
2022-07-13 22:12:30 +02:00
e6570b2247
No longer save deprecated property
Now that the session-state version has changed, it is no longer
required.
2022-07-12 21:08:41 +02:00
95fceceeb4
Engine-dialog: move MIDI system to advanced (amend 0a5b62a9e1b0) 2022-07-11 21:45:55 +02:00
0b2be03196
Overhaul Engine Dialog
* Update Layout
* Move action buttons to action-area
* Hide insensitive "Control App" button
* Set MIDI device option from backend
* Hide Latency Setup in Expander by default
2022-07-11 21:45:55 +02:00
b77eedf53e
Suggest WinMME as default (enable MIDI by default) 2022-07-11 21:45:55 +02:00
fe6aa0610c
ALSA: suggest ALSA Sequencer by default 2022-07-11 21:45:54 +02:00
ddca042b7b
Engine Dialog: fix memory-leak, do not manage Labels
Gtk::manage only destroys managed widgets when the parent container
is destroyed. In Ardour's case this is not the case since
Gtkmm2ext::container_clear() is used to unpack/repack widgets
as required.
2022-07-11 21:45:54 +02:00
8f4aab9584
NO-OP: clang-format 2022-07-11 21:45:54 +02:00
ee63b65df8
Engine Dialog: append monitor-model option
The Monitor Model usually depends on the studio setup (hardware
mixing desk), but also to some extent on the audio interface (zero-
latency monitoring). Since a user may also use different interfaces
(e.g. with a laptop), it makes sense to expose the monitor model
preference in the engine-dialog.

NB. It is not part of the engine-state (!), but still a preference.
2022-07-11 21:45:54 +02:00
f587f7f2cd
Simplify and Cleanup New User Wizard
* Remove Monitor Model Option
* Remove Monitor Section Option

These days those can be toggled after setup, even while the
session is loaded and engine is running. There is no need to bother
a user very early on with this question about Monitoring.
2022-07-11 21:45:54 +02:00
bdf6570ea6
Engine Dialog: remove I/O channel count setting
This has no been useful since years. Both Ardour and JACK
backends always use all available ports and the setting was
only useful to "hide" excess ports.
2022-07-11 21:45:54 +02:00
2970cd4b70
Engine Dialog: move start/stop button to action-area 2022-07-11 21:45:54 +02:00
45fddc8533
Slightly improve rendering of muted regions
A fully transparent waveform (with only a semi-transparent outline)
looks very odd with all themes.

Perhaps this was a typo and the initially intended rendering was
supposed to be 31% transparent, however this is not distinguishable
from non-opaque regions (27% transparency).
2022-07-11 21:45:26 +02:00
82bdddb829 fix Follow-Count widget in clip properties GUI
* add follow_count to all_trigger_props so widget gets updated on selection
2022-07-08 11:10:46 -05:00
15f67632ee CueEntry must inherit from sigc::trackable
It connects to the ParameterChanged (sigc++) signal, and to ensure automated
disconnection on object death, sigc::trackable is required in the
inheritance tree
2022-07-07 18:23:51 -06:00
28279e120f TriggerMaster must inherit from sigc::trackable
It connects to the ParameterChanged (sigc++) signal, and to ensure automated
disconnection on object death, sigc::trackable is required in the
inheritance tree
2022-07-07 17:29:55 -06:00
97317f3f86 triggerbox: correct an error in the computation of "frames covered" for audio triggers 2022-07-07 16:45:01 -06:00
4a30d8cebb NO-OP: add copyright notice 2022-07-07 16:45:01 -06:00
25d1209bb4
Only dump SessionEvent pool in debug builds
This ensures that the user will see a "POOL OUT OF MEMORY" message.
In rare case dumping the pool can segfault when printing the Event,
The pool is zero initialized and only ever contains events, so
in theory it is safe to print them..
2022-07-07 22:34:11 +02:00
ef2c1d990b
Prevent accumulating events during freewheel export
When exporting many ranges, locate and restarting transport for
every ranged a SessionEvent::TransportStateChange event is queued.
Since freewheel export does not process events. Those events
can accumulate:
https://discourse.ardour.org/t/pipewire-jack-export-freeze/107383/18?u=x42

During export those requests can be safely ignored because the only
purpose is to emit a TransportStateChange() signal when the playhead
passes a given location and notify the UI.
2022-07-07 18:28:27 +02:00
baeb5cbafd
Consistent mixer-scene query dialog (use Yes/No question) 2022-07-07 17:07:46 +02:00
6631273356
Fix inverted mixer-scene-clear Cancel/OK dialog response 2022-07-07 16:49:36 +02:00
9e11ef4f39
MixerScene: handle edge-case with midi-cc/bender controllables 2022-07-07 16:06:08 +02:00
effc209070
Place Pool in PBD namespace
A public class named "Pool" in the global namespace just
calls for symbol name conflicts.
2022-07-07 05:21:54 +02:00
8418e7c954
NO-OP: clang-format 2022-07-07 05:21:49 +02:00
a8a4695466
Dump SessionEvent cross-thread pool when it overflows 2022-07-07 05:21:44 +02:00
1694c71cd5
Implement memory-pool debug-dump
This will allow to trace "POOL OUT OF MEMORY" and see
which events fill up the event/memory pool.
2022-07-07 05:21:31 +02:00
c7ec2bbe1f
Consistent monitor-choice text
This uses uppercase like the application-name and matches the
label "Record monitoring handled by: ..."
2022-07-06 23:27:26 +02:00
8ead1439d8
Fix ruler/canvas separator
The track-header (gtk) is packed with 1px box spacing. This
is added at the top of each box (best seen by looking at the
group-tab vs track-header alignment in the editor).

However the actual track separator line on the canvas is at the
bottom of each track, aligning with the top of the next track
or automation-lane.

The first track however lacks a separator at the top, which
needs to be provided by the ruler. Once the canvas is scrolled
this ruler/canvas separator overlaps with the bottom separator of
each TAV.

Using ruler Rectangle::set_outline had various issues.
The outline extends outside the rectangle. It bled into the
video-timeline instead of the canvas' top y-axis pixel.

Also the separator was above the video-timeline, not above the
canvas. Hence a dedicated separator Line is preferable.
It also provides a consistent separator if no rulers are visible.
2022-07-06 20:50:06 +02:00
87d17f6624
Prevent rendering outside of canvas scroll groups
This fixes automation lanes bleeding into the ruler area.

The bounding box of all items in the main canvas group starts
at -0.5, and the cursor-scroll-group at -1.5. This is calculated
to include line-width, and outlines outside the item(s).

A scroll-group however must not extend its render area to
render those.
2022-07-06 20:50:03 +02:00
6678cd74f4 peak amplitude thread needs tempo map 2022-07-05 19:27:55 -06:00
3ea5fd5d91
Fix incorrect use of timepos_t::increment API 2022-07-06 01:49:51 +02:00
2220280776
Only create coverage frames to cover muted parts
Do not create transparent coverage frames for audible sections.
This should improve rendering of stacked region views.
2022-07-06 01:49:51 +02:00
0bd1d9bc17
Fix layered region non-playing shade (timepos_t API)
Before nutempo, ::find_next_region_boundary() used to return -1
when no boundary was found (now timepos_t::max is returned).

timepos_t::increment() returns the incremented value, not increments
the variable itself.
2022-07-06 01:49:50 +02:00
0d70be3a05 miscellaneous fixes for warnings from -Wconversion 2022-07-04 22:01:48 -06:00
811f625623
transcode debug should not print (null) array termination 2022-07-04 18:05:49 +02:00
b5947dd0a8
Use AudioTime for region-fade envelopes (see also 86e6df15cc) 2022-07-04 18:05:46 +02:00
cc07cde142
Simplify 86e6df15cc using a dedicated method 2022-07-04 18:05:43 +02:00