Commit Graph

19554 Commits

Author SHA1 Message Date
7e5fe695d0 Increase coreMIDI robustness, do not drop late events
see also https://discourse.ardour.org/t/ardour-not-getting-all-messages-from-midi-keyboard/107618/13
2022-09-24 02:29:50 +02:00
0cd87a917c push2: apply concept in 0af0e3a8e8 to push2 code (unused follow action icon) 2022-09-22 09:20:01 -06:00
af28394bfd push2: fix an apparent bug in cairo when drawing follow action icons
It seems that using ::move_to() followed by Pango::Layout::show_in_cairo_context() leaves
the context in a state that is not correctly restored when using ::restore(). Therefore,
clear the path to avoid leaving any dangling current point
2022-09-22 00:43:38 -06:00
luz paz
7f06beda50 Fix typos
Found via `codespell -q 3 -S *.po,./.git,./share/patchfiles,./libs,./msvc_extra_headers,./share/web_surfaces,*.patch  -L acount,ba,buss,busses,discreet,doubleclick,hsi,ontop,retrn,ro,scrollin,seh,siz,sord,sur,te,trough,ue`
2022-09-21 19:09:55 -06:00
9b65be0e17
Add debug information for coreMIDI events 2022-09-22 00:42:56 +02:00
7d75ac0f14
Add Lua binding to remove plugin-preset 2022-09-21 18:21:27 +02:00
0b0f49412d remove some debug output 2022-09-21 09:13:26 -06:00
2316df357b remove some debug output 2022-09-21 09:13:17 -06:00
86f0f0ca11
Fix VST2 state restore for plugins without custom UI
VST preset restore has to happen in the GUI thread, specifically
the plugin's own UI event-loop (which on Linux and Windows is
not usually Ardour's Thread 1). However if there is no plugin
GUI, it should be safe to use Ardour's UI thread.
2022-09-21 16:13:18 +02:00
3ad819da4c
Add Lua binding to create/save plugin presets 2022-09-21 14:48:04 +02:00
3ca0f4e43d
Prepare API to resample session to engine when SR mismatches 2022-09-21 00:34:03 +02:00
f76e63fd89
Update size-request when font/style is set 2022-09-20 03:33:15 +02:00
5ef2d04cd8
Remove unused size_request-for_text helpers 2022-09-20 03:33:12 +02:00
8508b3dba4
Allow multiple sizing texts for ArdourButton/Dropdown
A widget's style (font) is only set after the widget has been
packed and inherits relevant information from the top-level window.

`set_size_request_to_display_given_text()` produces incorrect
results when it is called for widgets without a top-level
(here ARDOUR_UI::setup_windows() _main_window.add(), changes the
font from "Sans 11" to "Sans 9" for ArdourDropdowns).

`set_size_request_to_display_given_text()` must subscribe to
`signal_style_changed()`, however in case of ArdourButton UI-scaling
of elements also needs to be taken into account. It is preferable
to allow for multiple sizing-texts directly.
2022-09-20 02:35:26 +02:00
45cd07aa5a
Remove old layered-record-mode config 2022-09-19 22:50:47 +02:00
e38cb08901
Use new record-mode pref (1/2) 2022-09-19 22:50:06 +02:00
cade07472f
Add RecordMode enum to replace layered_record_mode 2022-09-19 22:49:47 +02:00
8b0ab38675
Copy region properties (1/2)
RegionFactory::create(Region&,..) copies all region properties.

There are however various operations that use a new Source
as intermediate to create a new Region from another Region.
Those operations should also inherit various region properties
(such as mute, opaque, locked, ..)
2022-09-19 22:49:39 +02:00
ac53f7e95a
Apple+H (hide window) shortcut does not work, so hide it
This likely broke in 3.x when Ardour migrated to context dependent
shortcuts (rather than GTK managed menu shortcuts).

While there is Gtkmm2ext::Application::hide, there is currently no
bindable action and hence no way to add a dedicated
shortcut. Furthermore, since this is a special NSApplication menu,
updating the menu-item when the action is bound is not trivial.

gtk_application_hide() is only implemented for macOS and
there is likely a better use for "H" shortcut anyway.
2022-09-18 16:33:29 +02:00
e42de1e229
Bump session format version for MIDI region transparency 2022-09-14 02:44:52 +02:00
b277244b12
Convert MIDI region transparency when loading old sessions 2022-09-14 02:44:49 +02:00
44bacae43d
Allow for silent session format updates 2022-09-14 02:44:44 +02:00
be24b51a6b downloader: remove unnecessary header 2022-09-13 14:15:24 -06:00
d087cd9465 downloader: use PBD::Thread instead of std::thread 2022-09-13 14:14:53 -06:00
aeccb137fd threaded archive inflation for library mgmt 2022-09-13 13:53:45 -06:00
4b25264db1 remove inflater and downloader from libardour 2022-09-13 13:53:45 -06:00
375daf4810 libpbd: new threader Inflater and Downlaoder classes 2022-09-13 13:53:45 -06:00
2061c3780d FileArchive: minor fixes to get progress reporting working 2022-09-13 13:53:45 -06:00
be096edd8c
Use rubberband 3.0 API if available 2022-09-13 06:44:41 +02:00
46deb15d12
ALSA: request device to query its settings
Querying available buffersizes and sample-rates requires access
to the device. Almost all ALSA devices are limited to
a single user-space application so we unconditionally try
to request access to the device.
2022-09-12 16:34:25 +02:00
18474d89f8
SystemExec try SIGINT before SIGKILL
Even though SIGINT is intended to be sent from terminals only,
it is more successful at terminating various child processes than
closing stdin and sending SIGTERM.
2022-09-12 16:17:55 +02:00
f85b4fef15
Distinct stderr messages from ARD 2022-09-12 16:15:10 +02:00
ea335eedeb
Clarify library URL pref name (amend d4532973) 2022-09-12 01:31:49 +02:00
d453297381
Parameterize clip library URL
Also prefer http since our distributed builds may or may not
be able to find SSL certificates on a given target system.
2022-09-11 20:14:35 +02:00
38c5ae4237
Reread MIDI region when time-domain changes
This effectively triggers a Session::request_overwrite_buffer
via Playlist::notify_contents_changed when the time-domain of a
Region changes.

When the time domain of a MIDI region changes, Region boundaries
and events positions change ever so slightly. The playlist has
to be rendered again to take this into account.

When MIDI regions with different time-domains are layered, notes
may not be resolved in correct order. Previously changing time-domains
to address this did not result in the playlist being reread.
2022-09-11 00:57:12 +02:00
9cfcca8ba4 library downloading: various fixes to download process 2022-09-10 15:19:02 -06:00
16ef3dd6b1
Fix MR:render_range debug output (nutempo) 2022-09-10 18:19:58 +02:00
644136bca0
NO-OP: re-indent EventsSortByTimeAndType 2022-09-10 18:19:58 +02:00
c457dd2eac
Fix EventsSortByTimeAndType (type/event-type API mismatch)
Correct use would be
`parameter_is_midi (midi_parameter_type (ev->type()))`
However that only checks for control params. Note events
are excluded.
2022-09-10 18:19:58 +02:00
b67b18483c
Implement MIDI region automation (CC, PGM, PB) opaqueness
This adds a special case of "flush/resolve" to restore the
state of an upper layer opaque MIDI region while at the same time
resolving notes of a lower layer region.
2022-09-10 18:19:58 +02:00
5ad7361b28
MidiStateTracker::flush restore CC (bank) before PGM 2022-09-10 18:19:57 +02:00
John Emmas
5737468768 libardour: some new classes get used in gtk2_ardour (so need to get exported) 2022-09-10 11:39:53 +01:00
John Emmas
7418da4703 Add a missing #include
(needed for call to std::back_insert_iterator)
2022-09-10 10:20:37 +01:00
6f7188dc49
Add Lua bindings for MIDI channel mode/mask 2022-09-10 04:28:55 +02:00
edd7800009 remove unused variable 2022-09-09 16:32:42 -06:00
ed2a436f15 remove debug output from MidiSource:midi_read() 2022-09-09 16:32:42 -06:00
95eb936daf
Stop MIDI notes at opaque region bounds above a layered region 2022-09-09 22:27:59 +02:00
94637272e1
Mark MIDI regons as transparent by default, and convert old sessions 2022-09-09 19:07:49 +02:00
f3cb657179
Implement MIDI region opaqueness (part 1)
This honors transparent/opaque property of MIDI regions.
Previously all MIDI regions played as if they were unconditionally
transparent.

Further work is needed for backwards compatibility (and default
setting).
2022-09-09 18:37:34 +02:00
e62f1093ea
Add playlist APIs to find audible regions
This traverses the layered region stack at a given time,
taking both mute and transparency into account.
2022-09-09 17:31:20 +02:00