Commit Graph

12559 Commits

Author SHA1 Message Date
Robin Gareus 38c613cd9a Towards arranging sections
This allows to move or copy whole sections of the timline (everything
you hear) to a differnt position on the timeline.

NB. Markers and tempo-map are not yet moved, and interpolated MIDI
events are lost.
2023-01-23 04:07:46 +01:00
Robin Gareus efe943c98e Reimplement Route::shift, move all automation 2023-01-23 04:02:08 +01:00
Robin Gareus 79033d8ee5 Resample when engine and session sample-rates mismatch 2023-01-22 20:51:44 +01:00
Robin Gareus 5130a43d87 Remove direct use of audio-engine rate (1/2)
This is in preparation for sample-rate independence.
2023-01-22 20:06:14 +01:00
Robin Gareus a1dee6cba2 Fix printing from Lua DSP context (#9202) 2023-01-21 01:42:33 +01:00
Robin Gareus a3095162de Prevent auditioner from writing files to disk 2023-01-21 00:37:41 +01:00
Robin Gareus e6230bfd98 Add enum to configure Apple NSGLView mode 2023-01-20 21:46:11 +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 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
Robin Gareus e66a757154
Fix simple export when there is no session range 2023-01-17 00:23:08 +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 b8d07b8be2
Export CmdPipeWriter: add option to use tmpfile
Investigate issues with mp3 export (#9193)
2023-01-16 05:10:32 +01: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 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 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 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 27e136dcfc
Cont'd tweaks of ffmpeg export pipe 2023-01-05 03:32:40 +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 41325a75fe
Add a debug message to track down crash scanning LV1 plugins 2023-01-03 02:26:50 +01:00
Robin Gareus 0f22f5e319
Identify surfaces by ID (not name) 2023-01-02 21:15:19 +01:00
Marijn Kruisselbrink bf7f6386d5
Re-enable lib/ardour/test/session_test.
This test seems to be compiling and passing just fine (when run in
isolation), so turning it back on seems like a good idea. To make it
pass when run as part of the full ardour test suite, this does remove
the WebSockets control surface from the control surfaces test though, as
that control surface messes up the event loop of the main thread, which
would otherwise cause use-after-free crashes in the session test.
2023-01-02 20:31:12 +01:00
Robin Gareus 208aedaeaa
Fix "Invalid Source port" error with default config 2023-01-02 04:27:20 +01:00
Robin Gareus d0b95b7685
Do not truncate pretty bundle names
This also fixes a potential buffer overlow on Windows.
Window _snprintf does not null terminate the string in case
the formatted length is longer than the given buffer size.
http://msdn.microsoft.com/en-us/library/2ts7cx93%28v=vs.110%29.aspx
(mingw's uses _vsnprintf under the hood which is also affected).

Alternatively we could rely in g_snprintf() to truncate the
string.
2023-01-01 17:44:43 +01:00
Marijn Kruisselbrink ef253d3fc9
Use pretty names of ports not just for mono bundles, but also stereo.
Session::setup_bundles() creates mono and stereo bundles from hardware
inputs and outputs. For mono bundles the name of the bundle was based on
the pretty name of the port (if the port has a pretty name), however
stereo bundles always used the indices of ports to make the name.
When using pipewire (or otherwise having multiple jack clients exposing
physical ports) the indices are even less meaningful than otherwise (as
different devices could appear in arbitrary order), so also using pretty
names for stereo bundles makes the UI less confusing in places where
these bundle names are used (for example the menu when clicking on an
IOButton).
2023-01-01 17:26:14 +01:00
Robin Gareus 24597de7a2
Make RDF info/warning messages translatable 2022-12-30 19:10:07 +01:00
Robin Gareus a4036b9590
Set non_rt_pending no-roll parameter (previously uninitialized) 2022-12-30 19:09:16 +01:00
Robin Gareus 36d640c8bc
Yet another attempt to fix Windows/LADSPA presets 2022-12-29 19:02:15 +01:00
Robin Gareus 55ac803701
Fix Windows builds (user_cache_directory) 2022-12-29 18:29:51 +01:00
Robin Gareus 4bb7e43008
x-platform LADSPA user preset files
This fixes saving/loading custom user presests on Windows
2022-12-29 18:22:48 +01:00
Robin Gareus 3ba999b9d7
Also use LDRF (and aubio4) on Windows 2022-12-29 01:58:11 +01:00
Robin Gareus 58ade46de3
Fix loading LADSPA RDF files x-platform
Searchpath on Windows uses backslash as folder separator,
however file URLs use forward-slash file://C:/foo/bar/
2022-12-28 20:06:00 +01:00
Robin Gareus 478338854d
Improve peak-file debug output, print affected source-name 2022-12-27 13:35:53 +01:00
Robin Gareus 140b373cac
Clean up ExportAnalysis code
* only zero limiter_pk array on initialization
  (other data is explicitly initialized)
* resize peak-data vector to at least 800 bins
2022-12-26 14:34:25 +01:00
Robin Gareus 7b3cbaf68f
Inform User when audio-read failed (debug builds)
Previously AudioPlaylist::read always returned the timecnt that
it was supposed to read into the buffer, regardless if the given
number of samples was read. The check in DiskReader::refill_audio
`if (nread != to_read)` never triggered.

This can happen when changing an audio-region's time-domain to
music-time (glue to bars/beats). Region-length (beats converted
to samples) can exceed the actual audio-source length (in samples).
2022-12-26 13:40:05 +01:00
Ben Loftis 3e19363c4c fix typo in prior 10d125: sort presets 2022-12-19 10:04:29 -06:00
Robin Gareus f058f910f4
Actually use overloaded get_presets() implementations 2022-12-19 16:43:42 +01:00
Robin Gareus 10d12599dd
Sort plugin presets by default 2022-12-19 16:41:41 +01:00
Robin Gareus ae321721cf
Also thin automation after touch/latch
AutomationList::start_touch must not start a write-pass.
That function is also called when the transport is no rolling.
A write-pass is started via AutomationWatch::add_automation_watch.
2022-12-18 01:45:04 +01:00
Robin Gareus 028c19cd10
Remove hardcoded thinning factor 2022-12-18 00:55:28 +01:00