Commit graph

36801 commits

Author SHA1 Message Date
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
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
Olivier HUMBERT
4cb67f83a7
Make some string translatable 2023-01-01 19:41:43 +01:00
Olivier HUMBERT
84640d4f7d
Update French translation 2023-01-01 19:36:11 +01:00
Marijn Kruisselbrink
7a4ddf5cce
Group system ports by common prefix.
Extra "other" ("External") ports were already being grouped by their
common prefix into bundles to better display ports coming from different
jack clients. This commit factors out that logic into a separate method
to also apply this logic to extra "system" ("Hardware") ports. This way
hardware ports from different devices/clients (for example when using
pipewire as jack backend) are grouped by device rather than all being
listed as one bundle.
2023-01-01 18:19:14 +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
345008bdfd
Ardour celebrates the arrival of 2023 2023-01-01 01:30:20 +01:00
Robin Gareus
0be3a509af
MIDI-Tracer: allow to directly trace physical ports 2022-12-31 03:09:24 +01:00
Robin Gareus
78ec9294e1
TempoDialog: MIDI port fixes
* hide TempoTap MIDI port
* fall back to port-name (without client name) if pretty-name
  is unset.
* use namespace
2022-12-31 02:53:12 +01:00
Robin Gareus
54e1827e79
Allow to tap-tempo using a MIDI keyboard 2022-12-31 00:07:09 +01:00
Robin Gareus
1ad22e9ce9
Make engine dialog non-resizable (remove resize workarounds) 2022-12-30 23:43:35 +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
b6a4a6a84f
Sort simple-export range-list by range start-time. 2022-12-30 16:21:59 +01:00