Commit graph

16436 commits

Author SHA1 Message Date
Luciano Iam
4a4734fbb1
WebSockets: properly release strips and plugins when removed
This should fix some crashes reported by the beta testing team
2020-08-30 19:29:27 +02:00
Robin Gareus
7cdefbe8e7
Amend 0c7895298d, fix parameter order #8388
Plugin parameters may only be added, but no re-ordered since
Ardour uses numeric indices for automation.
2020-08-30 19:15:59 +02:00
Robin Gareus
dc553c49b4
Revert "Rename a-eq a-comp a-exp a-delay a-reverb to ACE (Ardour Community Effects)"
This reverts commit 0036785d5a.
2020-08-30 19:15:59 +02:00
Len Ovens
87f7dcc5f6 OSC Panner feedback crash with no panner
both select and route feedback now test for both
	route and panner (not VCA)
2020-08-29 17:08:56 -07:00
mx
262281bc1f
Use soundtouch for vocal audio time stretching (1/2) 2020-08-26 19:04:58 +02:00
Robin Gareus
34159e4594
Fix ARM runtime NEON detection 2020-08-24 22:03:28 +02:00
Robin Gareus
a0a4477c84
Fix aarch64 builds 2020-08-24 21:26:38 +02:00
Ayan Shafqat
1f878636c8
Adding NEON detection during runtime 2020-08-24 02:06:35 +02:00
Robin Gareus
773a1a0725
Fix optimized armhf builds
Apparently gcc-6.2 with -O3 and -mfpu=neon can use ARM instructions
that requires 64bit alignment (here vst1.64) with data that
is not 64bit aligned (g->strcache) https://i.imgur.com/vYktsUn.png

So we need to be able to build "arm_neon_functions.cc" with
-mfpu=neon, while not automatically using NEON for the rest
of the codebase, unless explicitly asked for.
2020-08-22 02:35:19 +02:00
Robin Gareus
22065b4331
Inform about NEON acceleration 2020-08-21 21:12:32 +02:00
Robin Gareus
8875e8b1d9
Fix aarch64 builds
the proper check using compiler flags would be
  defined(__ARM_NEON) || defined(__aarch64__)
however explicit wscript defined "ARM_NEON_SUPPORT" is prefereable.
2020-08-21 08:16:11 +02:00
Robin Gareus
fb5abde677
Use specific build-target for ARM/NEON routines 2020-08-21 03:39:56 +02:00
Ayan Shafqat
98023fcfe8
NO-OP: whitespace 2020-08-21 03:30:20 +02:00
Ayan Shafqat
c8c57f14bf
Adding ARM NEON optimized routines
This commit adds ARM NEON optimized routines for the following procedures
below:

*_compute_peak
*_find_peaks
*_apply_gain_to_buffer
*_mix_buffers_with_gain
*_mix_buffers_no_gain
*_copy_vector

NEON optimized routines have a prefix of: arm_neon_
2020-08-21 03:29:39 +02:00
Len Ovens
1cc9573dba OSC toggle roll make return to zero optional 2020-08-20 16:26:07 -07:00
Len Ovens
b8da1d0265 fix toggle_roll will only start but not stop PH 2020-08-20 16:26:07 -07:00
harrison
365cc92cba Check whether a VST param should be automated when building the list of automatables 2020-08-20 12:52:42 -05:00
Ben Loftis
0036785d5a Rename a-eq a-comp a-exp a-delay a-reverb to ACE (Ardour Community Effects) 2020-08-20 12:52:42 -05:00
Ben Loftis
e53db181d2 a-comp, a-exp: threshold should be referenced to the input (bottom) axis 2020-08-20 12:52:42 -05:00
Ben Loftis
b80cb0f382 a-comp, a-exp: the moving dot should represent input-to-output 2020-08-20 12:52:42 -05:00
Ben Loftis
01ac9d63e8 a-comp, a-exp: Tweak meter bar range for consistency with inline-ui 2020-08-20 12:52:42 -05:00
Robin Gareus
dfe2270c9f
Revert "WebSockets: properly release strips and plugins when removed"
This reverts commit f007ba6b46.
2020-08-19 23:59:38 +02:00
Robin Gareus
aa69fe49f5
Fix crash when removing master-bus output channels #8371
Previously when the master-bus had more outputs than inputs,
Ardour crashed when the monitor-section was set up.

Removing a master-bus output port calls
  Route::output_change_handler (master-bus)
 -> Session::reset_monitor_section
which first removes the corresponding monitor-section input,
then output port. The latter triggers
  ARDOUR::Route::output_change_handler (monitor-bus).

All with the process-lock held, so at this point in time Ardour
has removed the port-reference but the port still exists in the
backend.

Now the monitor-bus processors are re-configured and
the channel-count is updated. The port that was just removed
and triggered the ::output_change_handler() callback is
re-created.

unable to create port 'Monitor/audio_out 2': failed constructor

This fix changes the monitor-section to use strict-i/o (for plugins)
and also use master-bus output (not input) when configuring
processors.
2020-08-19 22:26:36 +02:00
Robin Gareus
481cf37052
RT-safe jack transport time-master
Prefer a try-lock, instead of locking the tempo-map.
2020-08-19 19:07:41 +02:00
Stefan Westerfeld
ad8eb4d05b
Set JACK transport bar_start_tick field. 2020-08-19 19:04:11 +02:00
Emilio Norrmann
d21337a3a4
fixed typo 2020-08-19 19:02:37 +02:00
Luciano Iam
f007ba6b46
WebSockets: properly release strips and plugins when removed
This should fix some crashes reported by the beta testing team
2020-08-19 19:01:18 +02:00
Len Ovens
c8bc9a25b3 Added strip feedback for new automation states
for mute, trim and panner
2020-08-19 09:45:44 -07:00
Len Ovens
5ce796f0b5 Added strip feedback for new automation states
for mute, trim and panner
2020-08-19 09:45:44 -07:00
Len Ovens
ab0217f3a2 Added touch to more stripable controls
pan azimuth and width
	mute and trim
2020-08-19 09:45:44 -07:00
Len Ovens
d5016f80d3 Added automation control to the rest stripable controls
Pan azimuth
	Pan Width
	trim
	mute
2020-08-19 09:45:44 -07:00
Robin Gareus
fcd347fe0c
Fix --no-nls, i18n include order in libs -- #8361
Ardour's "pbd/i18n.h" needs to be included last,
after any include that may indirectly pull in getext or libintl.

For that reason "pbd/i18n.h" must not be used in header files either.
2020-08-19 17:39:32 +02:00
Robin Gareus
af254b8ff9
Fix Lua AudioRom read (buffer overflow) 2020-08-19 00:17:45 +02:00
Robin Gareus
65ecc1b40e
Do not interpolate away explicit MIDI automation points #8362 2020-08-15 01:57:01 +02:00
Robin Gareus
e4c56a0371
Remove unused API
These are longer be used since Seuqnce has a "force_discrete"
boolen that needs to be taken into account in addition to
user-configurable ControlList _interpolation mode.
2020-08-15 01:56:42 +02:00
Len Ovens
7ab67c42dc Fixes OSC panner issues: 8338 and 8246
8338 - crash with midi and no audio strip
		detect no panner
	8246 - send feedback of panner type
2020-08-12 08:08:39 -07:00
Robin Gareus
68f1ec348d
AVX gcc compatibility
`_mm256_cvtss_f32` is only available in avxintrin.h of gcc-8 or
later. There it is defined as

```
extern __inline float
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtss_f32 (__m256 __A)
{
  return __A[0];
}
```

While explicit `vcurrent[0]` works with gcc-5 and gcc-6,
older gcc-4 fails with the following
 error: invalid types 'float __vector__[int]' for array subscript
2020-08-11 16:14:19 +02:00
Robin Gareus
01dbbb86c3
AVX/SSE compatibility
This fixes symbol mangle for window builds, and offers backwards
compatibility with older systems where the inline _mm256_cvtss_f32
is not defined in avxintrin.h
2020-08-11 15:12:50 +02:00
Ayan Shafqat
03abc1076e
Adding AVX optimized routines for Linux
This commit adds AVX optimized routines for the following
procedures below:

*_compute_peak
*_find_peaks
*_apply_gain_to_buffer
*_mix_buffers_with_gain
*_mix_buffers_no_gain

AVX optimized routine has the prefix of: x86_sse_avx_

Note: mix_buffer_with_gain and mix_buffers_no_gain may prefer
SSE implementaion over AVX if source and destination pointers
are aligned to 16 byte boundaries. Therefore, it will be optimal if
_all_ audio buffers are allocated to 32 byte boundaries to take
full advantage of AVX ISA extension.
2020-08-11 02:28:28 +02:00
Robin Gareus
0ddaf3fe68
Get previous commit to actually compile :) 2020-08-10 19:18:01 +02:00
Robin Gareus
ac97e5710a
Fix edge-cases when loading old (v2, v3) sessions
Previously when loading old session Route::init() of the master-bus
was called without the "MasterOut" or "MonitorOut" flag being set.

Various conditions that relied on is_master() or is_monitor()
during initialization failed when loading those sessions, leading
to subtle breakage.
2020-08-10 19:12:32 +02:00
Len Ovens
90f8212af7 Merge branch 'fb-sys' 2020-08-09 09:10:58 -07:00
Robin Gareus
d3685784aa
Fix numeric sort: use decimal or hex (but not octal)
This fixes sort order of plugin-presets or parameter
scale-points with leading zeros.
2020-08-09 14:45:39 +02:00
Len Ovens
5c6e8954ed Add pre/post fader to foldback send creation
add position param to send creation
	default all to prefader as first step
2020-08-08 18:41:03 -07:00
Robin Gareus
5193052d8a Fix OSX builds (i18n)
i18n must be included last, after all template  specialization.
Otherwise the following happens:

In file included from ../libs/pbd/pbd/i18n.h:22:
../libs/pbd/pbd/compose.h:122:6: error: call to function 'operator<<' that is neither visible in the template definition nor found by argument-dependent lookup
2020-08-06 21:38:00 +02:00
Robin Gareus
c54b36c3ff AU: only set render callbacks for connected busses
This fixes an issue with Renoise Redux. The plugin reports the following:

Reported Channel Capabilities (explicit):
      [2, 2]  [1, 2]  [0, 2]

When it is added to an Arodur MIDI track, the 0 in, 2 output variant is
chosen, since Ardour MIDI tracks don't have audio by default.

However the render callback was set uncondionally for all busses. This
lead to issues with this specific plugin.
2020-08-06 20:30:44 +02:00
Robin Gareus
357095b920
AU scan: only update config when discovering new plugins
When reading cached info only, crash protection is not needed.
2020-08-06 17:59:16 +02:00
Robin Gareus
56934284e7
Start engine for plugin scan test
This is needed for various cases. The sample-rate needs to be known,
and reading/writing config includes TFSM state, which needs an engine.
2020-08-06 17:56:08 +02:00
Robin Gareus
c6a8b848c9
Do not run plugin discovery for unit-tests
This fixes issues on MacOS (and Windows) unit-tests. The
unit-test run readless without proper UI thread. Discovering new
AU or VST can stall the app indefinitely or cause crashes.

NB. LADSPA, LV2 (and Lua) plugins are scanned regardless. Also
VST and AU cache files are read. The unit-test however only lists
LADSPA plugins.
2020-08-06 16:51:27 +02:00
Robin Gareus
6742a0961c
Ask LuaProc to drop references
This fixes a circular shared_ptr<> reference that prevents
plugin destruction.

LuaProc may hold references to Route that contains the plugin
or the PluginInsert of the LuaPlugin. These are only dropped
when the interpreter collects garbage.

Previously this happened in the d'tor or LuaProc, but while the
Plugin has a reference to the Insert, the Insert is not deleted
and the d'tor is never called.
2020-08-05 22:39:06 +02:00