13
0
Commit Graph

21114 Commits

Author SHA1 Message Date
46fa056da6 add unrounded rectangle methods to Gtkmm2ext for use in truly boxy buttons 2024-04-25 13:03:52 -06:00
354e60d657
Drop session's monitor bus reference when removing the bus 2024-04-25 19:18:06 +02:00
848832f8b0
Flush GraphNode RCU when removing Routes
Since 44610c787 RCU keeps references until another write happens.
even before then, some shared_ptr references may have been kept.

When using a process graph, a route's activision-set can
hold references to other graph-nodes (routes). This lead
to Routes not being deleted until a second graph-reorder
flushed the RCU.
2024-04-25 19:18:06 +02:00
4665cdcb6b
Add icons for livetrax (lock, mixer, meter) 2024-04-25 02:21:10 +02:00
b00ddcfe1c
Fix -Waddress (and expand tabs)
The expansion of the macro resulted in:
"the comparison will always evaluate as 'true' for the address of .."
2024-04-24 18:06:27 +02:00
agfline
41587d3c06
Update libaaf to v1.0-11-gb04c547 2024-04-24 17:13:00 +02:00
895fe2f753
Fix Windows builds 2/2 (amend b2d4280e0) 2024-04-24 06:08:26 +02:00
df12126909
Fix Windows builds 1/2 (amend bcbb4393fc) 2024-04-24 06:02:13 +02:00
457238ec2e
Per [Audio] Region Fx
* apply effects during region-read in non-rt context
* Add multi-channel audioregion read cache
  to process stereo effects
2024-04-23 21:56:15 +02:00
1996945353
Add custom RegionFxPlugin
Less than a PluginInsert but more than an IOPlug.
2024-04-23 21:56:10 +02:00
b04fa05f20
NO-OP: sort debug bits 2024-04-23 21:55:59 +02:00
59b2369736
Remove unused gain-buffer for master-read (NOOP) 2024-04-23 21:52:02 +02:00
f3823e8d7c
Fix redeclaration of DnDVbox 2024-04-23 21:51:55 +02:00
2bb4a9ac4e
Add API to configure plugins for non-realtime offline processing 2024-04-23 21:51:50 +02:00
f858316503
Plugins: Ignore offset for scratch/silent buffers
This allows to process buffers at an offset, as long
as the number of processed samples is less or equal to the
current buffersize.
2024-04-23 21:51:19 +02:00
2ca5f28910
NO-OP: whitespace 2024-04-23 21:51:07 +02:00
2f6a428f05
Overhaul and optimize thread-buffer allocation
Every route calls Session::ensure_buffers when configuring
processors. Previously that unconditionally invoked the
BufferManager, even if no change was required.

This also fixes a potential issue when bouncing tracks.
::write_one_track() increases the buffersize to 8k, but only for
the ChanCount required to bounce. This was never properly reset.

Furthermore this is in preparation for RegionFX which may
need to increase the ChanCount of Threadbuffers.
2024-04-23 21:51:04 +02:00
6dfcb60763
Automatable find_next/prev_ac_event requires no context
This allows to use the functions from a class that
does not inherit from Automatable but has AutomationControls
with an AutomationList.
2024-04-23 21:50:58 +02:00
f111f200c1
Fix signal analysis when buffer-size changes
PI::signal-analysis buffers were not updated when a user
changes the buffersize.

This also remove a single use Session API.
2024-04-23 21:49:48 +02:00
df8106bd85
PluginInsert match I/O: skip div by zero 2024-04-23 21:49:41 +02:00
92183430b9
IOPlug: various small fixes (port-names, VST compat, etc) 2024-04-23 21:49:28 +02:00
5216a6d987
Refactor and consolidate setting and copying plugin state 2024-04-21 16:32:47 +02:00
f5b53a6d14
Consolidate PluginInsert Match, move to parent class 2024-04-21 16:32:47 +02:00
2da3141706
Consolidate plugin_factory, move to parent class 2024-04-21 16:32:47 +02:00
d2bdf440c8
Consolidate PluginControl Code
This code was (for the most part) duplicated, and with
preparation for Region FX, a third copy motivated this
consolidation.
2024-04-21 16:32:47 +02:00
6191f89d55
Properly update Solo state when setting multiple ctrls 2024-04-21 16:32:13 +02:00
bcbb4393fc
Allow Lua [session] script to directly set controllables 2024-04-21 16:32:10 +02:00
894e6d27a4 NOOP: whitespace cleanup 2024-04-19 10:43:10 -06:00
c96e12ba58 expand null/destroyed tests for gdk objects in NSView methods 2024-04-19 10:42:59 -06:00
e64a071e39
(YDK) amend previous commit, call parent method 2024-04-19 16:46:49 +02:00
08e394f681
(YDK) possible fix for Catalina event loop crashes
```
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libydk.dylib 0x0000000110d8942d -[GdkQuartzView setNeedsDisplay:] + 93
1 com.apple.AppKit 0x00007fff34af6848 -[NSView(NSViewContentStyle) _recursivelyInvalidateCachedContentStyle] + 120
2 com.apple.AppKit 0x00007fff34af60fb -[NSView _setSuperview:] + 521
3 com.apple.AppKit 0x00007fff34b200a6 -[NSView removeFromSuperview] + 140
4 com.apple.AppKit 0x00007fff34ba882f -[NSView removeFromSuperviewWithoutNeedingDisplay] + 36
5 com.apple.AppKit 0x00007fff34b27168 -[NSView _finalize] + 977
6 com.apple.AppKit 0x00007fff34b26c0c -[NSView dealloc] + 121
7 com.apple.AppKit 0x00007fff34e30db4 -[NSFrameView dealloc] + 119
8 com.apple.AppKit 0x00007fff34e30d36 -[NSTitledFrame dealloc] + 62
9 com.apple.AppKit 0x00007fff34e30ce9 -[NSThemeFrame dealloc] + 603
10 com.apple.Foundation 0x00007fff39ed5992 NSKVODeallocate + 172
11 com.apple.AppKit 0x00007fff34d85884 -[NSWindow dealloc] + 1083
12 com.apple.AppKit 0x00007fff34d85442 -[NSWindow _dealloc] + 76
13 libobjc.A.dylib 0x00007fff6f6f3054 AutoreleasePoolPage::releaseUntil(objc_object**) + 134
14 libobjc.A.dylib 0x00007fff6f6d7dba objc_autoreleasePoolPop + 175
15 com.apple.CoreFoundation 0x00007fff377c9cb5 _CFAutoreleasePoolPop + 22
16 com.apple.Foundation 0x00007fff39e7d04e -[NSAutoreleasePool drain] + 126
17 libydk.dylib 0x0000000110d8ef29 gdk_event_prepare + 73
18 libglib-2.0.0.dylib 0x00000001110ded45 g_main_context_prepare + 533
19 libglib-2.0.0.dylib 0x00000001110df800 g_main_context_iterate + 128
20 libglib-2.0.0.dylib 0x00000001110dfcc2 g_main_loop_run + 210
21 libytk.dylib 0x0000000110a4f11f gtk_main + 191
22 libgtkmm2ext.dylib 0x00000001104cef1e Gtkmm2ext::UI::run(Receiver&) + 318
23 com.harrisonconsoles.Mixbus10 0x000000010dc6fb9c main + 2652
```
2024-04-19 15:38:12 +02:00
136b7f42d5
Skip tags for plugins that are not installed
This prevents empty sub-menus in the "By Tag" Plugin menu.
2024-04-18 17:07:12 +02:00
Edgar Aichinger
c9c419213f
update german translation 2024-04-14 00:42:09 +02:00
e7b3b61dbc fix bad redraws caused by TrackingText on canvas
Probably Item::set_position() should call Item::set_bbox_dirty() but
this will do as a first pass at that
2024-04-12 18:50:03 -06:00
44610c7877
Fix RCU race condition (see source for details) 2024-04-12 00:26:51 +02:00
fe7fd146aa macOS: fix crash when trying to enter fullscreen while already in fullscreen
YDK2 uses SetSystemUIMode() for fullscreen. This also uses space
otherwise reserved for the menu bar at the top, and is apparently
preferable for Ardour's UI.

However when a user manually enters fullscreen using the window
title-bar's green button (NSWindow toggleFullScreen). YDK will crash
when the user then also tries to use YDK's fullscreen mode:

```
NSWindowStyleMaskFullScreen cleared on a window outside of a full screen transition.
called from
  [NSWindow setStyleMask:]
  gdk_window_set_decorations
  gdk_window_fullscreen
```

Ideally we'd set NSApp presentation flags so that the toplevel window
would allow one to zoom (maximize), but not to enter fullscreen. Like it
used to be on OSX. It is unclear how to achieve this on macOS for
resizable windows, short of marking the top-level window a dialog or
utility window.
2024-04-10 20:41:49 +02:00
6b3fbefd26
Revert "Debug AVX512f crashes"
This reverts commit 0eed49b48e.
2024-04-10 15:44:40 +02:00
0eed49b48e
Debug AVX512f crashes 2024-04-10 03:22:05 +02:00
3d375f12ed
NOOP: whitespace 2024-04-10 03:10:43 +02:00
d023ea0d77
Fix potential memory corruption in AVX512f DSP 2024-04-10 03:09:27 +02:00
8a7d92f196
Fix MonotorProc's channel_solo_control
Previously only ::set_solo() worked. Directly using the
controllable did not update `solo_cnt` and other channels
were not muted.
2024-04-09 22:02:31 +02:00
cde26c5205
Set default time domain to Audiotime to sidestep various MusicTime issues 2024-04-09 18:36:43 +02:00
ecd22e9aa8 Remove call to deprecated userSpaceScaleFactor
userSpaceScaleFactor is a missing symbol on some recent versions of macOS.
2024-04-09 06:06:58 +02:00
826103f08c
Pitch bend is not unreasonable 2024-04-09 02:10:19 +02:00
2e991b0067
Fix thinko in bda7041643 2024-04-04 17:32:50 +02:00
3b0e421de4
Use proper _POSIX_C_SOURCE constant 2024-04-04 17:06:31 +02:00
bda7041643
Fix #9642 - fdopen(3) requires _POSIX_C_SOURCE
Without this, fdopen() returns some garbage FILE* which
causes a crash when used.
2024-04-04 17:06:28 +02:00
6d29a0e99b amend b96d556451 by using g_alloca() rather than non-standard variable-size array 2024-04-01 15:11:59 -06:00
b96d556451 avoid heap allocation by std::vector in realtime context 2024-04-01 15:00:11 -06:00
e29ac27c59
Tweak binarual port names 2024-04-01 17:39:08 +02:00
719debf292 if we're asked to use RF64_WAV, actually enabled libsndfile's downgrade capability
Note that this does not alter the filename, which we might also want to consider
2024-03-27 17:32:23 -06:00
e0db21d484
Save versioned backups in backup/ folder
This makes it harder for users to accidentally open session
files which are intended to be used only with older versions
of Ardour.

Note that backup/ is not included in ::find_all_sources_across_snapshots
so Session > Cleanup can remove files used in old backups.
2024-03-27 21:38:09 +01:00
26b6bece95
Fix a -Wunused-variable 2024-03-27 00:38:02 +01:00
93934dfb92
Really fix Windows build (amend prev. commit) 2024-03-26 21:08:42 +01:00
1c55cc6ee2
Fix Windows builds (amend 980eb595)
```
undefined reference to `luabridge::ClassInfo<std::shared_ptr<ARDOUR::PluginInsert> >::getClassKey
``
2024-03-26 19:28:10 +01:00
Florian Walpen
845171807f
Fix undefined symbol when built with VST3 disabled.
Commit cd5369c added some cleanup code to `libs/ardour/session.cc`,
which drags in the type info symbol of VST3PluginInfo. When built
with `--no-vst3`, the resulting binary dies at startup:

```
ld-elf.so.1: /usr/local/lib/ardour8/libardour.so.3: Undefined symbol
"_ZTIN6ARDOUR14VST3PluginInfoE"
```

Make that code compile conditional on VST3_SUPPORT.
Occurs on FreeBSD 14.0-RELEASE, clang 16.0.6, amd64.
2024-03-25 16:41:36 +01:00
980eb595cf
Add Lua API to query plugin properties 2024-03-24 23:09:53 +01:00
cfa45be99f
Add Lua API to set plugin properties 2024-03-24 23:09:53 +01:00
adfba3d39d allow runtime control over cairo save/restore around item rendering
This is to allow easier debugging of whether a given item's render method fails to leave a cairo
context in the same state it received it in
2024-03-22 13:39:03 -06:00
6c38e0a4e3 explicitly initialize the needs_display_region member of a GDK quartz window
This may not be necessary but it is better to have it be explicit
2024-03-22 13:13:16 -06:00
fe6a635c3a provide a GDK function to enable/disable use of Cocoa-provided rect in drawRect 2024-03-22 13:13:16 -06:00
7324070628 gdk/quartz: add some additional GDK_NOTE debugging 2024-03-22 13:13:16 -06:00
73fea85381
Vapor: set surround-send level range to +/-20 dB 2024-03-21 14:23:43 +01:00
4883867f2b
Update libaaf to v1.0-10-g13f0b0a 2024-03-19 20:59:04 +01:00
da4218c2db
YTK: remove unused code
This addresses a missing `readlink` due to missing
`_POSIX_C_SOURCE=200809` define when including unistd.h
2024-03-18 22:02:54 +01:00
Mads Kiilerich
a2bb1a3511 Fix more -Wincompatible-pointer-types
c10154ad23 showed the direction  but was not correct and insufficient
for building with Fedora 40 and gcc 14.0.1 .
2024-03-18 21:24:46 +01:00
c10154ad23
Fix a -Wincompatible-pointer-types 2024-03-18 20:29:19 +01:00
e64af8e4ed add a test for an environment variable before switching canvas single-expose off 2024-03-18 11:28:16 -06:00
4b563ae518 move CairoCanvas::render() implementation for ArdourCanvas::Canvas into source
Note that this implementation only redraws a single (cairo_rectangle_t-defined) rect, and cannot
provide sub-rects the way that a normal GDK/GTK expose-driven redraw can
2024-03-18 10:50:36 -06:00
71e085d825 ensure that the canvas fully redraws after style/visibility events 2024-03-18 10:49:15 -06:00
802d9fa487 correctly implement canvas expose redraw for both single- and multi-expose contexts 2024-03-18 10:47:31 -06:00
9efd521ea6 (GDK) keep our own record of invalidated rectangles for GdkQuartzView
macOS has broken its exposure/redraw model at least twice by always providing the entire area
of an NSView for every call to drawRect, and cannot provide the list of rects. This change
expands the tracking done using the needs_display_region, and does so directly via the
objective C methods of an NSView (and its derived children like GdkQuartzView).

The result is that when we send an expose signal, GDK/GTK code can obtain an accurate
list of the invalidated rects if desired, and thus avoiding redrawing the entire contents
of a window
2024-03-18 10:40:42 -06:00
2224aca75c
Fix SNAFU in 20d813cd17 (surround mute point) 2024-03-13 23:00:59 +01:00
f1ecd8c124
Vapor: mute master (not monitor), the latter is used for audition, etc 2024-03-13 22:19:17 +01:00
9e9fd201b5
Prevent crashes when trying to add/remove IOPlug ports
IOPlugins pinout is not [yet] configurable. Trying to add ports
resuled in a segfault since the BufferSet was not resized
(nor the plugin reconfigured)
2024-03-13 03:56:01 +01:00
069bf034ab
Accumulate IO port-change signals return values
This was already done for IO::remove_port, but not yet for
::add_port
2024-03-13 03:54:52 +01:00
16fb29d576
Vaporgate: special case content creation
This allows to change behavior to match some other notable DAW
which can only send automation events at cycle boundaries.
2024-03-12 17:43:38 +01:00
682f4dafd3
Vapor: add additional options for ADM export 2024-03-12 00:32:35 +01:00
5d60c2668c
Add Lua bindings to set session range 2024-03-11 22:07:07 +01:00
c012ab19e0 Fix AAF compilation with clang (macOS) 2024-03-11 18:52:45 +01:00
310e7f2279 make a distinction between total channels with or without the embedded bed chans 2024-03-11 08:29:56 -05:00
agfline
bd937366fd
Update libaaf to v1.0-1-gdef35bf 2024-03-10 22:11:47 +01:00
5e2f027ee9
NO-OP: whitespace 2024-03-09 23:35:39 +01:00
258b22c9f1 remove signal emission from run() func 2024-03-08 11:48:16 -06:00
e907aad05c ObjectCount signal should include the count 2024-03-08 11:31:44 -06:00
24b18c889b allow SurroundReturn to publish the number of channels in use 2024-03-06 18:34:33 -06:00
42dc033636
Vapor: work-around stem export alignment
This is a somewhat fragile solution to ensure that
processor reset happens in the same cycle in which
the actual data arrives at the start of the cycle.
2024-03-07 01:28:22 +01:00
77e7470270
Vapor: handle export abort 2024-03-06 18:35:08 +01:00
922ad14217
Gap-less overwrite_existing_audio
AudioPlaylist::read first clears the buffer passed to it, in
order to sum all layered regions into the buffer.

This cleared data in the ringbuffer that is concurrently being
used for playback.
2024-03-06 02:33:39 +01:00
6df34a307d
Match surround panner automation line convention
move to the left -> automation line moves upwards
move to the front -> automation line moves upwards
2024-03-05 14:59:26 +01:00
53b951f6a9
Vapor: Properly name sync&aling API 2024-03-04 16:53:33 +01:00
37d130f6e1
Fix Aux-send gain automation latency compensation 2024-03-03 01:08:07 +01:00
2fe22eeab5
Fix header include, potential fix for #9649 2024-02-29 03:09:00 +01:00
8d0704dda2
Vapor: add option to sync processing to a 512 sample cycle 2024-02-27 23:16:54 +01:00
734d365949
Add additional Lua bindings for interpolation 2024-02-27 17:05:10 +01:00
301d2954c5
Vapor: pass program meta-data to plugin 2024-02-27 00:01:49 +01:00
4acd0e9f29
Vapor: add API to query channel count 2024-02-26 22:15:05 +01:00
305b2778b4
Vapor: parse and use additional meta-data from adm 2024-02-25 17:43:56 +01:00
4bd2de2f72
Vapor: prepare for additional meta-data 2024-02-25 16:26:15 +01:00
22094c6caa Vapor: expose Apple Spatial Mixer contols (via Lua) 2024-02-24 19:47:56 +01:00