Commit graph

19574 commits

Author SHA1 Message Date
Robin Gareus
8b84a0c36f
Add explicit BBT_Offset print function (like timeline.h has) 2022-09-28 18:46:58 +02:00
Robin Gareus
c8ddfd5637 Fix C++ memory layout for the TempoMap
Usually C++ class instance has the same mem address as its first parent.
LuaBridge uses this to for derived classes. A TemopPoint instance has
the same address as its parent Tempo. However due to virtual inheritance
this was not the case due to a lack of virtual d'tor.

Now the following Lua code works correctly
```
tm = Temporal.TempoMap.read()
tp = Temporal.timepos_t (0)
print (tm:tempo_at(tp):note_type())
```

Previously the last line failed calling Tempo::note_type()
on a TempoPoint instance, due to memory offset e.g.
TempoPoint: 0x600000ff90e0 Tempo: 0x600000ff90e8
2022-09-28 04:12:11 +02:00
Robin Gareus
1abf6a77d6
Even more Lua bindings 2022-09-27 20:00:50 +02:00
Paul Davis
bf0a525647 remove unused variable 2022-09-27 09:32:19 -06:00
Robin Gareus
395bf4a650
Cont'd work on nutempo Lua bindings 2022-09-27 13:06:16 +02:00
Robin Gareus
8c83149c4c
Fix time stretch if region-start > 0
For some reason applying the property change
  plist.add (Properties::start, std::numeric_limits<timepos_t>::min());
does not correctly reset the offset of the newly created region.
2022-09-27 13:06:13 +02:00
Robin Gareus
28d11df6f6
operator% is a const operation 2022-09-27 13:04:49 +02:00
Robin Gareus
36aa661a1d
Add explicit BBT/Beat print functions (like timeline.h has)
This is in preparation for Lua bindings to allow print()ing
the value. We cannot use PBD::to_string() here.
2022-09-27 02:23:11 +02:00
Robin Gareus
f79f3ee301
Remove unused API 2022-09-27 00:40:35 +02:00
Paul Davis
3f812ca1a3 fix behavior of region gain envelope when performing a separate action (2-point split)
This was a simple typo, using pos1 rather than pos2. Also removed now-irrelevant comment line
2022-09-26 16:40:08 -06:00
Paul Davis
6ff57ca37b improve accuracy of DEBUG_TRACE output 2022-09-26 16:40:08 -06:00
Paul Davis
60aaccb2f9 a likely better fix than 8ba21e7fff for the same problem 2022-09-26 16:40:08 -06:00
Robin Gareus
831fd9c4b2
Amend eb85b336c, remove Lua binding of declared but not implemented method 2022-09-26 23:33:38 +02:00
Robin Gareus
eb85b336c8
Add additional nutempo Lua bindings
Particularly it is now possible to sum timepos + timecnt
and subtract, calling distance() as appropriate.
2022-09-26 22:18:35 +02:00
Robin Gareus
e98fe4729e
LuaBridge - add API to try convert a value
This in in preparation to overload operators
2022-09-26 21:39:21 +02:00
Robin Gareus
8ba21e7fff
Fix region-gain when trimming, cutting or partitioning regions
The during trim-front, the call order is
 1. Region::set_position_internal
 2. Region::set_length_internal

::set_position_internal sets `_last_length.set_position (position());`
but the later call ::set_length_internal does `_last_length = _length;`
This sets last_position() == position(), and later Region::mid_thaw()
does not call Region::recompute_at_start().

Region gain envelope was not updated.

see also 00a1b7cb24 and 13d10582f0
2022-09-26 14:57:25 +02:00
Paul Davis
f2eddd404b downloader: create destdir if it does not already exist, throw exception if this fails 2022-09-26 01:10:20 -06:00
Robin Gareus
e09913ced7
Set SMF::open option, do not scan when loading the model 2022-09-25 02:46:59 +02:00
Robin Gareus
0457646387
Allow to scan midi file during file read
This partially reverts eced764480. In many places Ardour uses
SMF directly, without loading the MIDI model in a libardour SMFSource.

In this case no information (track, channel-count) was available,
after eced764480, and worse various members were not initialized
and showed random numbers.

This fixes various import options.
2022-09-25 02:46:09 +02:00
Paul Davis
7428f13e15 MIDI: unlinked region copies get sources that are copies of the original
Previously, the copied source file only contained data within the initial region bounds. This
meant that you could not trim the (unlinked) copy to beyond its initial bounds. Seems wrong.
2022-09-24 15:38:45 -06:00
Robin Gareus
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
Paul Davis
0cd87a917c push2: apply concept in 0af0e3a8e8 to push2 code (unused follow action icon) 2022-09-22 09:20:01 -06:00
Paul Davis
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
Robin Gareus
9b65be0e17
Add debug information for coreMIDI events 2022-09-22 00:42:56 +02:00
Robin Gareus
7d75ac0f14
Add Lua binding to remove plugin-preset 2022-09-21 18:21:27 +02:00
Paul Davis
0b0f49412d remove some debug output 2022-09-21 09:13:26 -06:00
Paul Davis
2316df357b remove some debug output 2022-09-21 09:13:17 -06:00
Robin Gareus
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
Robin Gareus
3ad819da4c
Add Lua binding to create/save plugin presets 2022-09-21 14:48:04 +02:00
Robin Gareus
3ca0f4e43d
Prepare API to resample session to engine when SR mismatches 2022-09-21 00:34:03 +02:00
Robin Gareus
f76e63fd89
Update size-request when font/style is set 2022-09-20 03:33:15 +02:00
Robin Gareus
5ef2d04cd8
Remove unused size_request-for_text helpers 2022-09-20 03:33:12 +02:00
Robin Gareus
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
Robin Gareus
45cd07aa5a
Remove old layered-record-mode config 2022-09-19 22:50:47 +02:00
Robin Gareus
e38cb08901
Use new record-mode pref (1/2) 2022-09-19 22:50:06 +02:00
Robin Gareus
cade07472f
Add RecordMode enum to replace layered_record_mode 2022-09-19 22:49:47 +02:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
e42de1e229
Bump session format version for MIDI region transparency 2022-09-14 02:44:52 +02:00
Robin Gareus
b277244b12
Convert MIDI region transparency when loading old sessions 2022-09-14 02:44:49 +02:00
Robin Gareus
44bacae43d
Allow for silent session format updates 2022-09-14 02:44:44 +02:00
Paul Davis
be24b51a6b downloader: remove unnecessary header 2022-09-13 14:15:24 -06:00
Paul Davis
d087cd9465 downloader: use PBD::Thread instead of std::thread 2022-09-13 14:14:53 -06:00
Paul Davis
aeccb137fd threaded archive inflation for library mgmt 2022-09-13 13:53:45 -06:00
Paul Davis
4b25264db1 remove inflater and downloader from libardour 2022-09-13 13:53:45 -06:00
Paul Davis
375daf4810 libpbd: new threader Inflater and Downlaoder classes 2022-09-13 13:53:45 -06:00
Paul Davis
2061c3780d FileArchive: minor fixes to get progress reporting working 2022-09-13 13:53:45 -06:00
Robin Gareus
be096edd8c
Use rubberband 3.0 API if available 2022-09-13 06:44:41 +02:00
Robin Gareus
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