Commit Graph

16395 Commits

Author SHA1 Message Date
Robin Gareus
8eb4dcb675 Fix websocket C++11ism 2020-08-30 21:15:33 +02:00
Robin Gareus
af79240c81 Namespace libwebsocket surface classes
Using the global names-pace for classes named "Json", "TypedValue",
"ArdourTransport", "ArdourMixerPlugin" etc is not acceptable.
2020-08-30 21:15:07 +02:00
Luciano Iam
665e0686e5 WS: noop use a namespace for JSON utilities
Instead of a class with static methods

Also correct some whitespace to prevent triggering of OCD cycles
2020-08-30 19:29:28 +02:00
Luciano Iam
aa38491b7d WS: move VCA detection to mixer strip interface
Expose the wrapped Stripable the least as possible
2020-08-30 19:29:28 +02:00
Luciano Iam
e510c0cb75 WS: consistent naming of strip/plugin/param identifiers
Rename all {object}_n variables and arguments to {object}_id

Parts of code were using the former convention, now use the latter everywhere
Another step towards supporting visual position agnostic identifiers in the future
2020-08-30 19:29:28 +02:00
Luciano Iam
c32a5917f3 WS: handle strips and plugins removal 2020-08-30 19:29:27 +02:00
Luciano Iam
a8f917e7e2 WS: prepare for handling object disconnections
Use maps instead of vectors for holding strips and plugins
This allows to deal with "holes" after objects are removed

Also paves the way for a future improved way of identifying
individual strips and plugins
2020-08-30 19:29:27 +02:00
Luciano Iam
7521d8ab6f WS: add some meaningful error messages 2020-08-30 19:29:27 +02:00
Luciano Iam
3509fe1589 WS: use an object-oriented internal API for the mixer
- This allows to better handle strips & plugins connection lifecycles
- Coherent with the JS client design
2020-08-30 19:29:27 +02:00
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