Commit Graph

36868 Commits

Author SHA1 Message Date
Robin Gareus a3095162de Prevent auditioner from writing files to disk 2023-01-21 00:37:41 +01:00
Robin Gareus 02515c2176 Set "image surface" preference sensitivity 2023-01-21 00:35:43 +01:00
Robin Gareus 54c765ad2a Expose preference to use NSGLView on macOS 2023-01-20 21:54:11 +01:00
Robin Gareus e6230bfd98 Add enum to configure Apple NSGLView mode 2023-01-20 21:46:11 +01:00
Robin Gareus db63f8320e
Plugin Setup dropdown heuristics, limit dropdown entries
The Plugin Pin dialog still shows all options, which can
potentially be a very large dropdown. During initial setup
however, we only need the common "stereo" and "all", options.
2023-01-17 22:02:11 +01:00
Robin Gareus b410ed992b
Consolidate code duplication 2023-01-17 22:02:10 +01:00
Robin Gareus 2226da1385
VST3: retain I/O from older versions (bump session format)
A VST3 plugin can have additional busses which were not
available in older versions of Ardour. For compatibility
reasons those should remain unconnected. This is achieved
by using a custom I/O config  (same way a user would configure
this).
2023-01-17 22:02:10 +01:00
Robin Gareus e5e9b477d0
Force rescan of VST3 plugins 2023-01-17 22:02:10 +01:00
Robin Gareus f221a5e47f
VST3: offer output bus configurations 2023-01-17 22:02:10 +01:00
Robin Gareus 1cbd2d3468
VST3: support VST I/O busses
This unconditionally enable all busses with connected pins.
It does not provide re/configurable I/O (like Audio Unit), nor
implement dynamic Vst::kIoChanged callbacks. But regardless
this allows for plugins with multiple I/O busses (e.g. drum synths).
2023-01-17 22:02:10 +01:00
Robin Gareus 0063211b4e
Indicate plugin-busses in the plugin pin dialog 2023-01-17 22:02:10 +01:00
Robin Gareus 617ec6f54f
Include bus number in IOPortDescription 2023-01-17 22:02:10 +01:00
Robin Gareus e87b989501
Inform plugins about connected input pins
When not using inplace processing (because I/O pins connections
are not an identity matrix), dedicated inplace-buffers are used.
Those buffers contain silence on unused ports, and hence always
valid to use. However it is still useful for plugins to know
if a plugin-port is actually used. VST3 can disable busses
for unconnected pins.
2023-01-17 22:02:10 +01:00
Robin Gareus f6eac0f03a
Clarify that plugin replication is exclusive to re-configurable I/O 2023-01-17 22:02:07 +01:00
John Emmas 7433ca7e8b Correct a couple of typos when calling 'g_fopen()' 2023-01-17 10:32:36 +00:00
Robin Gareus e66a757154
Fix simple export when there is no session range 2023-01-17 00:23:08 +01:00
Paul Davis b8e9e67f78 tweak ::define_one_bar() API to allow correct undo/redo command name 2023-01-16 14:57:23 -07:00
Paul Davis db987cf046 fix deadlock in Editor::define_one_bar() 2023-01-16 14:57:23 -07:00
Robin Gareus 58594e2554
Fix SMF read/write when compiled on Windows 2023-01-16 22:57:03 +01:00
Robin Gareus c44b40afd7
Indicate UTF8 literals - fixes glyph rendering with MSVC (2/2) 2023-01-16 21:41:22 +01:00
Robin Gareus 2c7f8eeb97
Indicate UTF8 literals - fixes glyph rendering with MSVC (1/2) 2023-01-16 21:41:09 +01:00
Robin Gareus c635d15cf0
Use pipe with CmdPipeWriter (see b8d07b8) 2023-01-16 16:41:28 +01:00
Robin Gareus 2522deabda
SystemExec: tweak writing to stdin of child process 2023-01-16 16:39:37 +01:00
Robin Gareus e5eafea128
Fix small memory leak
g_file_open_tmp() requires the caller to free the filename.
2023-01-16 05:11:49 +01:00
Robin Gareus b8d07b8be2
Export CmdPipeWriter: add option to use tmpfile
Investigate issues with mp3 export (#9193)
2023-01-16 05:10:32 +01:00
Robin Gareus d1b72b28ec
NO-OP: remove unused code 2023-01-13 21:20:21 +01:00
Marijn Kruisselbrink b0f5fea53a
Fix minor errors in temporal/wscript 2023-01-12 20:58:24 +01:00
Marijn Kruisselbrink aa163b05ca
Fix some minor copy-paste errors in ardour_ui_dependents.cc 2023-01-12 11:08:56 -08:00
Robin Gareus 0083c8fb9f Remove "using namespace" from header (part 2) 2023-01-12 19:19:41 +01:00
Robin Gareus 3a6f822381
Remove "using namespace" from header 2023-01-12 19:01:48 +01:00
Robin Gareus 6407ca51cd
Fix region-fade, time-stretch and other scaling operations (#9057)
This resolves an ambiguity between abs(int) and std::abs(T) which
depends on context and compiler version and optimization.

In context of #9057, (gcc-6.3 -O3) math.h `abs(int)` was used. This
truncated the superclock value to 31 bit in ControlList::extend_to.
2023-01-12 16:17:39 +01:00
Robin Gareus 117cfc844b
Fix 128 bit integer math rounding (#9057)
The previous code only used the 1st multiplicand was use to
determine the direction of rounding, breaking commutative property

`muldiv_round (1, 3, 4) != muldiv_round (3, 1, 4)`
2023-01-12 16:08:53 +01:00
Robin Gareus 1ff5592731
Remove UI side grid limit
This concept from 2007 is no longer required Temporal::get_grid
already limits the number of grid-lines depending on the step
size (mod-bar, beat_div) and start/end positions.
2023-01-11 00:32:47 +01:00
Robin Gareus 34e12a5d78
Fix grid when tempo marker is not on a mod_bar/beat_div
Previously the current iterator bbt was moved to p->bbt().

From then on, no grid line is reached if the point p is not on
a bar and mod_bar != 0 or the point is not on an expected beat_div.

e.g. when using bbt += mod_bar, and a tempo-change is at 5|2|0.
iterations continues 6|2|0 7|2|0  is_bar() is always false
and no more grid-lines were added.

Rather than trying
   bbt = round-up-to-next-grid-mod-div
and then finding the metric for that position, this
approach only does the latter using the already incremented
BBT position.
2023-01-11 00:25:23 +01:00
Robin Gareus b0a679a1af
Fix grid after last tempo-marker when showing bars
This is a copy/paste bug, compare to d77db816de
2023-01-11 00:06:43 +01:00
Robin Gareus d322cfabdc
Use same time-domain for all drag copied regions
When copying regions from multiple tracks, use the same
time domain for each region (depends on grid).

The primary region position is set the time-domain from
RegionMotionDrag::_last_position replacing the region's
prior time-domain. Other regions should follow suit and not
retain their time-domain.

Fixes: Enable snap-to-grid, select regions on multiple tracks,
ctrl+drag copy them.
2023-01-10 22:39:44 +01:00
Robin Gareus f658a4c0b2
Fix Region lock style property (#9191)
This allows to properly toggle "Glue to Bars/Beats".

Editor::toggle_region_lock_style uses Region::position_time_domain(),
However Region::set_position_time_domain() checked the duration's
time-domain.

Furthermore timecnt_t::set_time_domain() changes both the
position and the duration's time domain. This can lead to
various issues. We only need to change the time-domain of
the timepos_t _position.
2023-01-10 20:07:05 +01:00
Robin Gareus 9d46bbab7b
Add 1/4 note symbol to ArdourMono 2023-01-09 22:56:33 +01:00
Robin Gareus 88a2c1123d
Fix windows builds, export pipe (amend 7ffd7a8c) 2023-01-08 17:09:55 +01:00
Robin Gareus 7ffd7a8c62
Convert filename for Windows commandline 2023-01-07 22:36:17 +01:00
Robin Gareus ebf7afc482
Fix reporting tempo and time-signature to VST plugins #9188 2023-01-07 05:16:14 +01:00
Robin Gareus 3ae7295142
Allow to disable cairo render groups (performance test) 2023-01-06 21:15:43 +01:00
Robin Gareus b27467157b
VST3: synchronize parameter-changes
IParameterChanges (_input_param_changes) queue should not be
modified while the plugin processes. Doing so can lead to invalid
iterators.

Also activate/deactivate and state restore must not happen
concurrently with processing.
2023-01-06 03:31:07 +01:00
Robin Gareus a0452eeb57
VST3: dynamically grow ParameterChanges
Some plugins (e.g. Roland JD-800) have zero controls, but
MIDI control with are not directly accounted for. This
results in a zero-size ParameterChanges queue, which later produced
a segfault when trying to enqueue a MIDI change:

```
input_param_changes.addParameterData (id, index)->addPoint (sample_off, value, index);
```
2023-01-06 03:29:55 +01:00
Robin Gareus a6107fc1af
Fix preference name/variable mismatch #9192 2023-01-05 19:00:56 +01:00
Robin Gareus 09b0734028
Increase system-exec stdout bufsiz (from 512 to 8k) 2023-01-05 04:54:07 +01:00
Robin Gareus 27e136dcfc
Cont'd tweaks of ffmpeg export pipe 2023-01-05 03:32:40 +01:00
Robin Gareus 3da7f71fb6
Windows process: allow for binary data output
Do not rely on null termination.
2023-01-04 20:28:22 +01:00
Robin Gareus bb4394b8a5
Use pipe through ffmpeg, use glib to write output
This is intended to fix an issue with odd filenames on Windows,
particularly forward and backwards single quotes as part of a filename.

Previously the filename was passed as parameter to ffmpeg as
UTF-8 string to SystemExec::make_wargs, which is fragile on Windows
in absence of a execve() call.
2023-01-04 17:26:43 +01:00
Robin Gareus 16a476ee5f
Fix foldback bus duplication
signal_sources() can traverse upwards. e.g. when creating a
foldback send to the master-bus, everything that feeds the master
also feeds the foldback (even if there is no direct send).
2023-01-04 04:00:36 +01:00