Commit Graph

16741 Commits

Author SHA1 Message Date
Robin Gareus
8386874a03 OSC: Allow to specify marker name #8543
Patch from atsampson
2021-01-18 23:36:35 +01:00
Robin Gareus
983c577945 Fix send panner when copying sends
* Unlinked panners now retain their state during copy/paste.
 * Linked send panners can no longer override parent route panning
 * Unlinked panner state is retained across link/unlink.
2021-01-18 18:58:10 +01:00
Robin Gareus
9c06f693e9 Fix mp3 and video-export (ffmpeg/ffprobe detection)
A call to `transcoder_exe (unused, unused)` passes the same
string reference for `ffmpeg` and `ffprobe`. If this happens
during the first call of this function, the path for the latter
is cached for both external tools.
2021-01-18 17:21:26 +01:00
Robin Gareus
528cf92ed5 Hide "Midi Through" on Linux only
Note HAVE_ALSA is mandatory for Linux builds, even when only
using JACK.
2021-01-18 16:16:25 +01:00
Robin Gareus
c02169a6c8 Micro-optimization: pre-calculate pan-law
powf() is very expensive to call, and as long as the pan-law
is fixed, there is no need to re-calculate coefficient scale
factor on every update.
2021-01-18 16:14:16 +01:00
Robin Gareus
1fc8b55314 Fix Intel/AMD FMA mix_buffers_with_gain()
_mm256_fmadd_ps (a, b, c) performs (a * b + c)
2021-01-18 16:07:21 +01:00
Robin Gareus
097e5a7145 Implement dynamic input port meters
This is a revision of the initial API 8ba7df9105, to
address issues with dynamica ports (fa791ae9cc).

* Group meter + scope/monitor per port (atomic access)
* Use shared pointer to allow access while ports change
* Use RCU to update port map
* Add/remove ports without clearing the map
* Add signal to notify GUI about Input Port changes
2021-01-18 03:18:21 +01:00
Robin Gareus
c5b986f420 ALSA: set pretty port names for audio I/O 2021-01-18 03:18:21 +01:00
Robin Gareus
bbb6851468 Subscribe to pretty-port name changes (surfaces) 2021-01-18 03:18:20 +01:00
Robin Gareus
21e66216be Separate user-set pretty-names from hardware I/O names
This allow to restore original engine port-names as set
by the backend. ALSA MIDI, CoreAudio, CoreMIDI and PortAudio
drivers can provide human readable physical port names for
some devices.
2021-01-18 03:18:20 +01:00
Robin Gareus
01502c6805 Allow to set pretty name for all port 2021-01-18 03:18:20 +01:00
Damien Zammit
0890b638b9 ptformat: Update to upstream 232ba25 2021-01-17 13:19:54 +11:00
Damien Zammit
ec5a809f54 pt import: Fix crash with bringing in material
Hopefully the weird pt import crash is now gone!
2021-01-17 13:19:54 +11:00
Damien Zammit
772512a62d pt import: Correct the log warning message when at least one audio file failed to load 2021-01-17 13:19:54 +11:00
Damien Zammit
2645ab2e73 pt import: Fix import -> cancel -> import by clearing status 2021-01-17 13:19:54 +11:00
Damien Zammit
5d0de7e037 pt import: Fix progress bar to span the whole import 2021-01-17 13:19:54 +11:00
Damien Zammit
ea8b855b4a pt import: Clean up track naming 2021-01-17 13:19:54 +11:00
Damien Zammit
12d62cd16e pt import: Fix race condition/threading, don't call new_audio_track() in bg thread 2021-01-17 13:19:54 +11:00
Robin Gareus
21822a45fb Remove duplicate rdfs label in a-comp 2021-01-14 18:35:07 +01:00
Robin Gareus
0c81ba33d2 JACK latency compensation for newly created tracks #8472
Ardour native backends trigger a latency-callback when ports_changed.
This was lost for JACK when the shared port engine was implemented.
2021-01-14 03:22:25 +01:00
Robin Gareus
fa791ae9cc Static input port meters, ignore dynamic ports for now
Hotplugging devices will need to be special-cased.
Currently there is no API to notify the PortManager about
hotplugged devices.
2021-01-14 01:54:40 +01:00
Robin Gareus
c803911873 Sort input port signal meters by port name 2021-01-11 00:07:08 +01:00
John Emmas
6c1dea8df2 Add/remove source(s) in our MSVC project (libardour) 2021-01-10 18:45:25 +00:00
Robin Gareus
36d2b4ea2e Fix C++11ism 2021-01-09 05:18:50 +01:00
Robin Gareus
0257804c57 Fix default track name patterns, remove additional space 2021-01-08 22:50:50 +01:00
Robin Gareus
5974e61854 Add option to skip MIDI track input auto-connect 2021-01-08 22:50:45 +01:00
Robin Gareus
038307fef6 Allow Lua bindings up to 11 args 2021-01-08 22:50:37 +01:00
Robin Gareus
548db7a9a4 NO-OP: code formatting and cleanup, thanks clang-format 2021-01-08 18:39:57 +01:00
Robin Gareus
e644cb4577 Do not hold RegionWriteLock while emitting signals
Various playlist operations can change region-properties
which results in Region::send_change being emitted while
the Playlist::RegionWriteLock is held.

This can result in recursive lock and/or deadlocks or crashes. e.g.
Insert time -> Playlist::shift -> Region::RegionPropertyChanged
-> EditorSummary::set_background_dirty -> Editor::session_gui_extents
-> Playlist::get_extent -> read-lock is taken after write-lock.
2021-01-08 18:39:57 +01:00
Robin Gareus
ba123dfe87 Cache playlist extents
Calculating the extents iterates over all regions which
can be expensive. Ardour's GUI calls this periodically to
calculate session_gui_extents().
2021-01-08 18:39:56 +01:00
Robin Gareus
8ba7df9105 Add input port signal meters, scopes and monitors 2021-01-08 18:39:56 +01:00
Robin Gareus
9a7379dfff Add a CircularSampleBuffer for input port scopes 2021-01-08 18:39:56 +01:00
Robin Gareus
303d7bb2e8 Do not allow feedback override on foldback sends
FoldbackStrip::update_send_box() GUI relies on ->fed_by() to
determine if a FB bus has a send from a route.

Under the hood this uses direct_feeds_according_to_reality()
and InternalSend::feeds(). When `allow_feedback` is set a send is
assumed to not directly feed a target (to allow loopbacks).

This mode must not be used for foldback sends.
2021-01-08 18:39:07 +01:00
Robin Gareus
728d2a3771 VKeybd: include port-name in dropdown #8535 2021-01-08 16:33:29 +01:00
Robin Gareus
af29e7483b VKeybd: use a non-translatable port-name (1/2)
This improves session portability, only the "pretty name" should
be visible to the user.
2021-01-08 16:33:29 +01:00
John Emmas
ef7a5e1b00 For 64-bit compilation, MSVC no longer supports inline assembly 2021-01-07 09:22:43 +00:00
Martin Vlk
e84cec0842 Fix "R/L". 2021-01-06 18:40:45 +01:00
Paul Davis
20029ec7e6 canvas/ruler: provide option for a second font to be used for "major" marks 2021-01-03 16:50:18 -07:00
Robin Gareus
d92d707180 Extend plugin parameter Lua bindings 2021-01-03 17:24:21 +01:00
Robin Gareus
9ff3dc8251 NO-OP: cleanup API, reorder and re-indent code 2021-01-02 16:48:59 +01:00
Robin Gareus
cd72bbb2d4 Make AVX/FMA support optional
Older compilers do not yet have fmaintrin.h. This fixes compile errors:
```
x86_functions_fma.cc:51:39: error: '_mm_fmadd_ss' was not declared in this scope
x86_functions_fma.cc:85:35: error: '_mm256_fmadd_ps' was not declared in this scope
x86_functions_fma.cc:106:35: error: '_mm256_fmadd_ps' was not declared in this scope
x86_functions_fma.cc:129:39: error: '_mm_fmadd_ss' was not declared in this scope
```
2021-01-02 16:41:43 +01:00
Ayan Shafqat
c856a862af Add unit test for FMA extension routine 2021-01-01 21:08:06 +01:00
Ayan Shafqat
407882d23d Add support for Intel/AMD's FMA extension
By supporting FMA extension, the number of instruction needed
for multiply accumulate to mix channels are reduced. Since,
this extension has been around since middle of 2012, more
computers have this instruction set available.
2021-01-01 21:05:16 +01:00
Robin Gareus
4a9a4bf3de VST3: pre-allocate AudioBusBuffers
This also reverts 768d8362cd since it causes crashes
with various plugins (eg. surge.vst3).

Ardour now provides AudioBusBuffers for all audio I/O busses,
regardless of Ardour using those busses.

This fixes crashes of plugins that ignore ProcessData::numInputs
or ProcessData::numOutputs. Those plugins are expected to check
numChannels and channelBuffers for those excess channels, which are
0, NULL for unused busses.

ProcessData numInputs, numOutputs does correctly reflect actual
busses that are in-use (at most one main and one aux for each direction).
2020-12-30 21:25:03 +01:00
Robin Gareus
7f9d5be11c ACE Fluidsynth: consistent port-names 2020-12-30 19:01:58 +01:00
Robin Gareus
768d8362cd VST3: Amend 15864be609 set numI/O correctly 2020-12-30 18:52:16 +01:00
Robin Gareus
f3e6ca7c1a Ignore inline-display unless plugin-meta data explicitly mentions it 2020-12-30 18:50:02 +01:00
Robin Gareus
1ade88edef Fix ACE.lv2 inline-display meta-data 2020-12-30 18:48:47 +01:00
Robin Gareus
15864be609 VST3: always pass buffers for all audio busses
This should fix an issue with yabridge and MCompressor.
The plugin has two kMain inputs and expects ProcessData:inputs
to always have two entries, even if the second bus is explicitly
disabled.

see https://hastebin.com/ekewojiqep.txt
```
IComponent::activateBus(type = 0, dir = 0, index = 1, state = false)
data.numInputs = 1;
```

TODO: optimize (pre-allocate) if it works as expected
2020-12-30 18:10:17 +01:00
Robin Gareus
62ac7c6a80 VST3: Announce IPlugFrame interface support 2020-12-30 14:36:26 +01:00