Commit Graph

540 Commits

Author SHA1 Message Date
Robin Gareus
99c1f50a72 Really remove gtk+ option (see also 1e28ee9cc9)
After patching gtk/ytk to add touch support and macOS rendering,
upstream gtk+2 is no longer an option
2025-07-06 15:20:20 +02:00
Nils Philippsen
3c63a81c1c Don’t install test programs
Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2025-05-06 23:42:07 +02:00
Ayan Shafqat
19e00c575a Add optimized NEON implementations for Aarch64
Introduce optimized NEON implementations for audio peak detection,
buffer mixing, scaling, and copy functions on AArch64.

For benchmark results, see ardour-neon-functions [1].

Provide a dedicated `aarch64_neon_functions.cc` for Aarch64 target.
provide backwards compatibility with armhf targets with
`arm_neon_fuctions.cc`.

[1] https://github.com/ashafq/ardour-neon-functions
2025-03-07 02:52:52 +01:00
Robin Gareus
ba4d9709c6 Properly check for syscall (#9845) 2024-11-06 04:08:19 +01:00
Mads Kiilerich
e520cf6bac wscript: Actually invoke autowaf.build_i18n_pot in i18n_pot_func 2024-10-22 00:37:39 +02:00
Mads Kiilerich
3228a61e62 wscript: the i18n worker functions do not define the i18n waf commands
Rename the worker functions to make it clear that their name in this
case isn't magic. These functions "are not" the waf commands. It is the
custom build context class definitions that define the i18n commands ...
which will invoke these top level worker functions which in turn invoke
the others recursively.

The bare printing of the build environment in the top level i18n command
seems to be old debug code that safely can be removed.
2024-10-20 19:52:14 -06:00
Alejandro Domínguez
1ffb70f670 Replace boost::scoped_ptr with std::unique_ptr (1/2) 2024-10-19 01:04:14 +02:00
Paul Davis
ac4bb55f13 first functioning MIDI clip recording (libs) 2024-10-17 07:44:32 -06:00
Paul Davis
107706af8a some tiny steps towards using new data structures for clip recording 2024-10-17 07:44:32 -06:00
Paul Davis
8e4edd0c07 Revert "separate out all bounds/position info from Region into "Slice""
This reverts commit f3da2cfd8b9dc077ee35fc3bbaf133adec23d463.
2024-10-17 07:44:29 -06:00
Paul Davis
45328723b0 separate out all bounds/position info from Region into "Slice"
The idea here is to be able to describe region size, start and position
independently of an actual Region object.
2024-10-17 07:44:29 -06:00
Robin Gareus
520bbfe515 Add proper API to expose plugin tailtime
This is in preparation to display current tail time,
and allow a user to override it.

This is similar to existing processor latency API.
2024-08-31 02:55:04 +02:00
Robin Gareus
cb5b955a74 Use C++ for LV2 event buffer
This will allow to throw fatal exceptions when malloc fails.
2024-07-20 17:37:09 +02:00
Robin Gareus
8f3794f0ca Remove unused CubicInterpolation 2024-05-26 05:37:05 +02:00
Robin Gareus
9d046af47a Update Lua allocator for sessions scripts
* increase memory pool (bindings alone require 1.5 MB), and all session
  scripts have a shared memory pool.
* use TLSF (like Lua DSP processors) - this fixes an issue with atomics
  (notably int62_t, temporal) on macOS and ARM, which need to be
  aligned.
2024-05-15 20:18:21 +02:00
Robin Gareus
170b915038 Prepare for parallel Disk I/O 2024-04-30 00:01:32 +02:00
Robin Gareus
2af2df3516 Raise the butler's I/O priority
This likely won't make much difference on modern systems,
since it requires a kernel based I/O scheduler. which is
disabled (set to "none" for NVMe and SSDs).
2024-04-29 21:46:06 +02:00
Robin Gareus
1996945353 Add custom RegionFxPlugin
Less than a PluginInsert but more than an IOPlug.
2024-04-23 21:56:10 +02:00
Robin Gareus
20d813cd17 Enable SurroundSend Mute point when loading old sessions 2024-02-16 00:04:23 +01:00
Robin Gareus
ad51c7c2ba Localize stripped down gtk2
This is intended mainly for GNU/Linux distros who will remove
GTK2 support in the near future.
2024-01-06 21:52:48 +01:00
Robin Gareus
b84cd4fb5a Vapor: Implement Surround Send/Return 2024-01-06 20:24:23 +01:00
Robin Gareus
0ada2df2e6 Implement [surround] LUFS meter 2024-01-06 20:21:06 +01:00
Robin Gareus
3ce2cf937e Revert "wscript: drop unnecessary str() on configure variables"
This reverts commit 615326be9b because it
breaks windows builds.

```
File "/home/ardour/ardour-w64/wscript", line 1462, in configure
  set_compiler_flags (conf, Options.options)
File "/home/ardour/ardour-w64/wscript", line 522, in set_compiler_flags
  if re.search ('x86_64-w64', conf.env['CC']) is not None:
File "/usr/lib/python2.7/re.py", line 146, in search
  return _compile(pattern, flags).search(string)
TypeError: expected string or buffer
```
2023-10-16 21:15:25 +02:00
Mads Kiilerich
2973e82a90 wscript: sanitize strings from fetch_*_revision_date early instead of applying str() all over
This can perhaps be simplified further when Python2 support is dropped.
2023-10-15 10:47:16 -06:00
Mads Kiilerich
615326be9b wscript: drop unnecessary str() on configure variables
CC is already set to a string. (And if it ever should be None, we want
to handle that explicitly.)

(And #autowaf.display_msg handle Booleans just fine.)
2023-10-15 10:47:16 -06:00
Mads Kiilerich
6b61b03434 wscript: drop traces of shutdown() handling
autowaf has no real shutdown functionality anyway. The automatic
shutdown function that could have been called wouldn't work anyway, as
it takes an argument.

The only reason it doesn't fail is that the top level wscript has no
shutdown handling and doesn't recurse to other scripts, so it is all
dead code.
2023-10-15 10:47:16 -06:00
Mads Kiilerich
88cecdfaef wscript: drop repeated autowaf.set_options - it is enough to set at top level 2023-10-15 10:47:16 -06:00
Mads Kiilerich
f1bb18ae53 wscript: drop unused path_prefix
It is not referenced anywhere, and also not set consistently.
2023-09-17 07:34:55 -06:00
Mads Kiilerich
d220f477ed wscript: drop unused "mandatory variables" 'top' and 'out' in libs
Variables by these names are only used from the local wscript and when
running "waf configure", which already for other reasons only can run at
the top-level.

These variables are thus not mandatory and not used.
2023-09-17 07:34:55 -06:00
Mads Kiilerich
69e987909e wscript: inline top = '.' for build_i18n
'top' was a constant that was set to '.', even when inside
subdirectories. It is thus not really top.

I don't know if the intent was to use the actual top (which is available
as bld.top_dir), but for now we make it explicit what we have and do.
2023-09-17 07:34:55 -06:00
Mads Kiilerich
2e367de4f0 wscript: drop unused imports, manual
Manual fix of pyflake warnings:
libs/ardour/wscript:3:1 'waflib.Tools' imported but unused
wscript:9:1 'waflib.Build.Context' imported but unused
2023-09-17 07:34:55 -06:00
Mads Kiilerich
7737c17d52 wscript: drop unused imports, scripted
Done with ad hoc scripting hacks processing unused imports found by pyflakes:

for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Logs.* but unused' | cut -d: -f1 | while read f; do sed -i 's/^import waflib.Logs as Logs,/import/g' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Options.* but unused' | cut -d: -f1 | while read f; do sed -i 's/import waflib.Options as Options, /import /g' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Options.* but unused' | cut -d: -f1 | while read f; do sed -i 's/^from waflib import Options,/from waflib import/g' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep ' imported but unused$' | sed "s/^\([^:]*\):[0-9]*:[0-9]* '\(.*\)'.*/\1 \2/g" | while read f lib; do sed -i "/^import $lib$/d" $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Options.* but unused' | cut -d: -f1 | while read f; do sed -i '/from waflib import Options$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.TaskGen.* but unused' | cut -d: -f1 | while read f; do sed -i '/from waflib import TaskGen$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Task.Task.* but unused' | cut -d: -f1 | while read f; do sed -i '/^from waflib.Task import Task$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Tools.winres.* but unused' | cut -d: -f1 | while read f; do sed -i '/^from waflib.Tools import winres$/d' $f; done
for f in $( find * -name wscript ); do echo; pyflakes $f; done | grep 'waflib.Utils.* but unused' | cut -d: -f1 | while read f; do sed -i '/^import waflib.Utils as Utils$/d' $f; done
2023-09-17 07:34:55 -06:00
Robin Gareus
dd4e5dfc96 Build-system: remove duplicate dis/en/able options
e.g. we had both --vst3 (default) and --no-vst3.
A user could specify both, which is confusing.
2023-08-21 19:25:26 +02:00
Paul Davis
1d117aa372 give MIDI tracks a (n automatable) velocity control 2023-06-26 14:18:17 -06:00
Robin Gareus
65f2be76f6 Move Ardour::Progress to PBD::Progress
This will allow PBD::Filearchive to properly report progress.
It is also a generally useful API and deserves to be in libpbd.

Temporarily keep Ardour::Progress as alias
2023-05-19 00:35:20 +02:00
Robin Gareus
bf4decbfe7 Add LV2 header include compatibility (1/2)
For whatever reason LV2 changes #include header locations
in a micro version release and disables backwards compatibly
by default.
2023-05-06 16:20:01 +02:00
Robin Gareus
97272481b8 CPM: Activate hotplugged libusb ctrl-surface 2023-05-04 00:20:31 +02:00
Robin Gareus
7f198c7c2f Amend 4dc4d53: fix missing use/lib includes for luabindings 2023-04-22 02:18:05 +02:00
Robin Gareus
4dc4d53004 Fix windows debug builds (obj file too large)
This fixes a "too many sections" issue
```
Fatal error: can't write 159 bytes to section .text of build/libs/ardour/luabindings.cc.1.o: 'file too big'
x86_64-w64-mingw32-as: build/libs/ardour/luabindings.cc.1.o: too many sections (36781)
```
2023-04-22 02:03:20 +02:00
Paul Davis
39ed528e25 std-ize: convert all boost shared/weak ptr includes to <memory>
Also fix stdint.h -> cstdint and alphabetically order std includes
2023-03-24 14:19:15 -06:00
Robin Gareus
fbb175df4e Enable avx512f support for windows builds 2023-02-06 21:36:09 +01:00
Ayan Shafqat
6b766e41f4 Integrate AVX512F support into Ardour
The current implementation is just a stub of AVX and is not
utilizing AVX512F.
2023-02-04 23:07:17 +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
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
3ba999b9d7 Also use LDRF (and aubio4) on Windows 2022-12-29 01:58:11 +01:00
Robin Gareus
c53b19c039 Add zeroconf/mdns support 2022-12-02 17:32:11 +01:00
Robin Gareus
d521c2ede6 src-tree cleanup: separate surfaces from libraries
libardourcp and now libardour_midisurface are not control
surfaces, but helper libraries for those.
They need to be deployed to the library folder (shared between
ctrl surfaces) and not scanned as ctrl surfaces at runtime.
2022-11-19 00:09:17 +01:00
Robin Gareus
2e860cd10d Move SimpleExport to libardour, add Lua bindings
This allows to export a session from the commandline tool

```Lua
AudioEngine:set_backend("None (Dummy)", "", "")
s = load_session ("/path/to/session", "snapshot")
assert (s);
e = s:simple_export()
assert (e:check_outputs ())
e:run_export ()
e = nil
```
2022-10-21 19:50:26 +02:00
Robin Gareus
e42de1e229 Bump session format version for MIDI region transparency 2022-09-14 02:44:52 +02:00
Robin Gareus
5579cf3289 Remove ancient unused check for FLAC/OGG support
Our build-systems do not even have sndfile-info, and we use
pkg-config now
2022-09-08 02:22:21 +02:00