Commit Graph

35701 Commits

Author SHA1 Message Date
Robin Gareus 6089ae9314
Use group_override_inverts preference in the GUI 2022-07-14 16:37:29 +02:00
Robin Gareus 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
Robin Gareus c0ec11db8e
Cleanup code, return early, don't nest 2022-07-14 01:25:06 +02:00
Robin Gareus 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
Robin Gareus 2848cc5f38
Disambiguate clip/sample/slot 2022-07-14 00:06:48 +02:00
Robin Gareus 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
Robin Gareus 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
Robin Gareus 95fceceeb4
Engine-dialog: move MIDI system to advanced (amend 0a5b62a9e1b0) 2022-07-11 21:45:55 +02:00
Robin Gareus 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
Robin Gareus b77eedf53e
Suggest WinMME as default (enable MIDI by default) 2022-07-11 21:45:55 +02:00
Robin Gareus fe6aa0610c
ALSA: suggest ALSA Sequencer by default 2022-07-11 21:45:54 +02:00
Robin Gareus 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
Robin Gareus 8f4aab9584
NO-OP: clang-format 2022-07-11 21:45:54 +02:00
Robin Gareus 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
Robin Gareus 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
Robin Gareus 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
Robin Gareus 2970cd4b70
Engine Dialog: move start/stop button to action-area 2022-07-11 21:45:54 +02:00
Robin Gareus 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
Ben Loftis 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
Paul Davis 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
Paul Davis 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
Paul Davis 97317f3f86 triggerbox: correct an error in the computation of "frames covered" for audio triggers 2022-07-07 16:45:01 -06:00
Paul Davis 4a30d8cebb NO-OP: add copyright notice 2022-07-07 16:45:01 -06:00
Robin Gareus 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
Robin Gareus 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
Robin Gareus baeb5cbafd
Consistent mixer-scene query dialog (use Yes/No question) 2022-07-07 17:07:46 +02:00
Robin Gareus 6631273356
Fix inverted mixer-scene-clear Cancel/OK dialog response 2022-07-07 16:49:36 +02:00
Robin Gareus 9e11ef4f39
MixerScene: handle edge-case with midi-cc/bender controllables 2022-07-07 16:06:08 +02:00
Robin Gareus 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
Robin Gareus 8418e7c954
NO-OP: clang-format 2022-07-07 05:21:49 +02:00
Robin Gareus a8a4695466
Dump SessionEvent cross-thread pool when it overflows 2022-07-07 05:21:44 +02:00
Robin Gareus 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
Robin Gareus 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
Robin Gareus 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
Robin Gareus 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
Paul Davis 6678cd74f4 peak amplitude thread needs tempo map 2022-07-05 19:27:55 -06:00
Robin Gareus 3ea5fd5d91
Fix incorrect use of timepos_t::increment API 2022-07-06 01:49:51 +02:00
Robin Gareus 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
Robin Gareus 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
Paul Davis 0d70be3a05 miscellaneous fixes for warnings from -Wconversion 2022-07-04 22:01:48 -06:00
Robin Gareus 811f625623
transcode debug should not print (null) array termination 2022-07-04 18:05:49 +02:00
Robin Gareus b5947dd0a8
Use AudioTime for region-fade envelopes (see also 86e6df15cc) 2022-07-04 18:05:46 +02:00
Robin Gareus cc07cde142
Simplify 86e6df15cc using a dedicated method 2022-07-04 18:05:43 +02:00
Robin Gareus 86e6df15cc
Fix region-gain when region is glued to bar/beats
The region-gain envelop is an Automation list that uses AudioTime
regardless of the regions own position.

Since the actual audio data is using always using samples this
results in reliable envelopes without the reduced granularity of
BeatTime.

All points the list have to be in the AudioTime domain.

Previously it was possible to have a mixed-domain list e.g.

- add 2h:30min long source
- lock it to music-time
- set grid and snap to 1/8 note
- range select some range shortly after 2:25
- draw region-gain for range

<events>
a0 1
a492113664000 1.0000001192092896
a492113737500 0
a494032822500 0
a494032896000 1.0000003048365
b34560000 1.0000003048365
</events>
2022-07-04 00:58:07 +02:00
Paul Davis d932d9365f fix crash in a debug build caused by trying to print debug info about a negative time value that will never be used 2022-07-03 16:53:30 -06:00
Robin Gareus 0295e05d04
Force latency update callback after measuring port-insert latency 2022-07-03 02:16:11 +02:00
Alexandre Prokoudine cbba298ca2 Remove user-visible excess colons in Preferences 2022-07-02 19:58:37 +03:00
luz paz 54a4002b2b Add missing comma to luasession/wscript
"Omitting a comma between strings causes implicit concatenation which is confusing in a list."
2022-07-01 17:50:09 -04:00
Ben Loftis 4ecb19d9ee send_to_bus script: fix typo in prior commit 2022-07-01 10:11:05 -05:00
Ben Loftis 2b250a5639 send_to_bus script: fix for mixbus or other cases where master bus inputs=0 2022-07-01 09:01:43 -05:00