Commit Graph

37047 Commits

Author SHA1 Message Date
83d7114597 transport master: fix think in 58c5f75fc9 which stopped checking both port arguments 2023-02-20 17:35:24 -07:00
6721fe4697 mclk: fix debug output arguments 2023-02-20 17:35:24 -07:00
luzpaz
44a869732c Fix various typos
Found via `codespell`
2023-02-20 17:35:24 -07:00
cd6c88c964
Fix loading VST2 presets at instantiation time
This fixes a crash when dragging a VST2 presets from
the mixer-sidebar to a track.
2023-02-21 01:33:47 +01:00
78c89fcbae
Fix MIDI Clock transport master (#8750)
MIDI Start and Position messages need to leave
the clock timestamp alone. They are not relevant
to compute BPM.
2023-02-19 22:49:23 +01:00
cf0b119b45
Towards fixing MClk transport master (#8750)
* Honor MCLk stop messages, do not auto-start as soon as
  the tempo is locked (after 3 clock ticks).
* Retain MIDI beat position, do not rewind in ::update_midi_clock
  Do not directly start when receiving the position message,
  transport speed should be zero (regardless of clock speed),
  until the "continue" message arrives.
* Mclk start needs to rewind (not reset)

There is still an issue with start, when
_session->transport_sample() is not zero. Ardour ends up
constantly locating, rolling for a short time and re-syncing
by locating again.
2023-02-19 18:19:18 +01:00
e83898cf88
Use correct flag for MMC 2023-02-19 18:09:01 +01:00
c1c913be9d
Fix MClk generator position 2023-02-19 18:08:58 +01:00
b6f0e547bb
Pick a more sensible arbitrary number 2023-02-18 18:44:40 +01:00
cba8fd090f Fix widget retina scaling (#9243)
For normal cairo-widgets ardour should not use image surfaces on macOS,
because that bypasses retina scaling. In theory explicit upsampling could
be performed (compere to openGL/cairo), but for the case at hand that is
overkill and inconvenient.

Performance critical widgets that render periodically can enable openGL
backing. Casual widgets (buttons with text, knobs, sliders etc) can be
rendered directly without any significant performance penalty.
2023-02-17 15:57:32 +01:00
9df3058cd8 Add Graphics Acceleration heading to prefs on macOS 2023-02-17 15:57:32 +01:00
5b6bc3f358 Revert "tempo map: use lookup tables to speed up time conversions"
This reverts commit 644ebe37a8.

Adding entries to the lookup table is (a) not thread safe (b) not appropriate
from RT context.
2023-02-16 18:25:23 -07:00
cfb31e3257 AU: update to new tempo-map API (amend 259499fc) 2023-02-17 01:19:10 +01:00
edbcaa24fb
VST3: initially only enable default-active busses
This works around a problem with some JUCE plugins, notably
https://github.com/surge-synthesizer/surge/issues/6847
2023-02-16 20:43:03 +01:00
31a3c3c6f3 temporal: fix bad escape sequence in test source code 2023-02-15 18:36:23 -07:00
a59059c15e temporal: map used for ::reftime() must be the one pointed at by TempoMetric 2023-02-15 18:36:23 -07:00
92f5046ae6
Update BBT Lua bindings, add missing BBT_Argument 2023-02-16 02:20:18 +01:00
ee64390c48 fix libtemporal tests after API changes to the library 2023-02-15 17:51:28 -07:00
644ebe37a8 tempo map: use lookup tables to speed up time conversions 2023-02-15 16:02:56 -07:00
6f095b91ce tempo map: add data structure and methods for (fast?) lookup tables
As of this commit, none of the data structures are used.
2023-02-15 16:02:56 -07:00
92bd8461ca tempomap: provide improved reftime() method for TempoMetric
This now looks backwards in time for a BBT_Marker or the start of the
tempo map, whichever comes first.
2023-02-15 16:02:56 -07:00
6cde958480 BBT_Time: provide conversion to/from integer format
This is not guaranteed to be lossless, but with 44 bits for bars,
256 beats per bar and up to 4095 ticks per beat, it should be fine.
2023-02-15 16:02:56 -07:00
2c7bfa9ead require use of BBT_Argument as both parameter and return type from most methods (GUI edition) 2023-02-15 16:02:56 -07:00
259499fc5f require use of BBT_Argument as both parameter and return type from most methods (libs edition) 2023-02-15 16:02:56 -07:00
f033b5717d tempo map: fix lookup of tempo/meter for a BBT time
Find the first point/tempo/meter after the reference time of the BBT argument
2023-02-15 16:02:56 -07:00
43c8fae709 initial addition and use of BBT_Argument
Currently this is interchangeable with BBT_Time, but soon will
be handled differently
2023-02-15 16:02:56 -07:00
3c57085756
VST3: fix deadlock when loading a preset in some plugins
Some plugins call back to restartComponent() directly from
IEditController::setComponentState.

This lead to a deadlock since VST3Plugin::load_preset
takes a lock (since 7.2-85 b27467157b), and restartComponent
takes the same mutex again.
2023-02-15 23:50:50 +01:00
8f248bd0ba update C++ preferences metadata object 2023-02-14 10:15:18 -07:00
9107c6d70c lots more preferences metadata 2023-02-14 10:15:06 -07:00
62d4e0789a tempo map: fix error in TempoMap::copy_points() that fails to reset _map ptr
This left the _map ptr of all points in a copy of a map pointing
to an old/dead TempoMap.
2023-02-14 10:14:55 -07:00
3dd9b2c201 rationalize single call to TempoMap::use() in AudioClock::set_bbt() 2023-02-14 10:14:39 -07:00
72bc6ac43d some edits for preferences metadata 2023-02-14 10:13:26 -07:00
423a921301
VST3: prevent deadlock when restartComponent is called from Process
This fixes an issue with Blendeq (and likely other plugins)
that call `restartComponent(Vst::kLatencyChanged) from the
in realtime context from plugin's process
2023-02-13 17:32:21 +01:00
8a23015ffb Update Russian translation 2023-02-13 04:56:58 +03:00
b8c4034af5 Fix a user-visible typo 2023-02-13 03:05:38 +03:00
168344a3f9
Indicate sample-rate mismatch in the status-bar 2023-02-12 16:23:42 +01:00
adf1eb34fb
Fix drawing percussive hits (#9234)
* HitCreateDrag::start_grab does not need to do anything
  a hit cannot be past end of region. Drawing at or past
  the end of a region will create a new region (not an event)
* HitCreateDrag::finished now calculates the position like
  NoteCreateDrag::finished.
* the selection does not need to be cleared. Creating new
  notes/hits selectes the newly created ones.
2023-02-11 20:27:43 +01:00
21d86b264a
VST3: synchronize AC when plugin's internal state changes
e.g. loading a u-he zebra preset using the plugin's GUI
internally changes the controller state without using the
`performEdit` API, but instead calls `restartComponent` wit
the `kParamValuesChanged` flag to perform a a batch update.
This now also updates Ardour's AutomationControl to match.
2023-02-11 13:36:23 +01:00
83d6b87249
VST3: load custom state after setting parameters (#9206)
This broke in b27467157b. Control port changes were
postponed (written to ringbuffer) and only evaluated
at first run.
2023-02-11 13:31:27 +01:00
f1d784afbb deep fix to the way automation control point drags are handled/computed
The old code could not snap to the grid, because it had a lot of confusion about pixels vs. time,
and between line-origin-relative time and absolute time
2023-02-10 11:11:51 -07:00
03b32cb4a0 remove unused "beats" variable and computation from Editor::metric_get_bbt() 2023-02-10 11:11:51 -07:00
441a6ec069
Revert "Prefer symbols from plugins"
This reverts commit 102c48d7a1.
This breaks various plugins, notably all JUCE based ones,
during instantiation.
2023-02-09 23:39:34 +01:00
102c48d7a1
Prefer symbols from plugins
Now that we can require glibc 2.3.4, we can use RTLD_DEEPBIND.
This can help with plugins that do no hide symbols for their
contained statically linked libraries, and instead would use
use symbols.

Note: This only works on Linux.
2023-02-09 21:08:36 +01:00
eeaf0bdadc
Fix non-intel arch builds (cpuid.h header) 2023-02-09 20:54:46 +01:00
907b0bbfa0
Fix time-stretch dialog clock
This broke in 45e21de209, the clock is not yet visible,
so the value has to be forced.
2023-02-09 00:35:27 +01:00
Ayan Shafqat
bb31125c94
Fix CPUID to detect AVX512F
CPUID is part of x86_64 ISA to query CPU features. In order to determine
AVX512F ISA extension, EAX and ECX needs to be set to 7 and 0
respectively before invoking `cpuid` instruction. This commit also
removes inline assembly for __cpuid in favor of using compiler provided
intrinsic functions. Both GCC and clang provides __cpuid like function
via __cpuid_count intrinsic.

This commit also creates a portable wrapper over compiler intrinsic
functions, __cpuid and __cpuidex. `cpuid' provides base level ISA query
and `cpuidex` provides extra extension information like AVX512F. These
wrappers lean towards MSVC like API.

References:
CPUID Docs: https://en.wikipedia.org/wiki/CPUID

GCC's ``docs" on __cpuid_count:
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/i386/cpuid.h

Clang's docs on __cpuid_count:
https://clang.llvm.org/doxygen/cpuid_8h.html

MSVC's docs on __cpuid and __cpuidex:
https://learn.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex
2023-02-08 23:20:20 +01:00
445e5162fd
VST3: assume left-only is Mono (#9229)
VST3 speaker arrangements (ie port is connected) can distinguish
between left only pin (of stereo pair) and Mono.
2023-02-08 22:53:26 +01:00
4429697799
VST3: deactivate plugin before calling setBusArrangements
This may currently happen from rt-context, further work
may be needed.
2023-02-08 04:42:57 +01:00
515881653d
VST3: debug setBusArrangements 2023-02-08 04:41:42 +01:00
b069b504f6
VST3: add SpeakerArr debug messages 2023-02-08 03:51:42 +01:00