Commit graph

494 commits

Author SHA1 Message Date
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
Paul Davis
d388a50579 loop libraries: tentative steps towards fetching and installing ardour.org loop libs 2022-09-07 17:03:08 -06:00
Robin Gareus
c713841f39
Re-implement RTTaskList using Graph Threads
There is no longer an extra set of rt-threads, but existing
process-graph threads are reused.

There are two main benefits to this approach: graph-threads
have a SessioEvent pool and ProcessThread buffers. They are
also joined to work-groups (on macOS), or  JACK created threads
(cgroups).
2022-06-04 17:22:50 +02:00
Robin Gareus
bdc5711c31
Implement mixer-scene class 2022-05-19 20:08:24 +02:00
Robin Gareus
aa09a445e3
Bootstrap MIDI export writer
This leans on the AudioGrapher API for IdentityVertex.
2022-05-16 04:54:17 +02:00
Robin Gareus
74f71c6683
Session-wide plugin support (IOPlug)
The idea is to run a plugin outside the process graph, and provide
its I/O as port (much like an external JACK app).

The intended use-case is NDI (provide additional I/O), but it could
also be useful for other cases.
2022-05-09 17:39:05 +02:00
Robin Gareus
9ad154f265
Untangle Graph from Route
The process-graph should only be concerned with GraphNodes,
which may or may not be Routes.

This also removes intrinsic connection information from
the graph-node. Connection information is to be kept separate
from the nodes.

When the graph is re-calculated in the background, old information
has to be retained until the new graph becomes active.

Previously *new* information was already stored in the nodes
while the graph is sorted, even though the new graph was not
active.
2022-05-06 14:02:34 +02:00
Robin Gareus
217f51e6fb
Break out common plugin-insert state methods
This is in preparation for IO-Plug, and should also come
in handy later for per region plugins.
2022-04-14 20:08:22 +02:00
Mads Kiilerich
5b7431f243 wscript: drop unnecessary trailing ";" 2022-04-09 12:16:41 +02:00
Mads Kiilerich
49855e52aa wscript: consistently have at most one empty separator line 2022-04-09 12:16:40 +02:00
Mads Kiilerich
bac32a8c2d wscript: consistently use 4 spaces for indentation 2022-04-09 12:16:40 +02:00
luz paz
59320b378f
wscript: fix 'testing equality is none' issue
ref: https://lgtm.com/rules/7900090/
2022-04-08 18:27:10 +02:00
Robin Gareus
3689068561
Clip Library support
This allows to export Regions to a shared folder.
2022-01-29 16:22:47 +01:00
Mads Kiilerich
8bb91099c5 wscript: drop configure statements already present in the top level wscript
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!)                   : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler)                      : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
Robin Gareus
8e7810f40c
Disable session unit-tests for now
Converting, loading old sessions/templates fails:

#0  0x00005555568a2590 in  ()
#1  0x00007ffff7b8dfd9 in ARDOUR::SessionEventManager::merge_event(ARDOUR::SessionEvent*) (this=0x55555d89c3f0, ev=0x555555cfb510) at ../libs/ardour/session_events.cc:204
#2  0x00007ffff7bb1c79 in ARDOUR::Session::queue_event(ARDOUR::SessionEvent*) (this=0x55555d89c260, ev=0x555555cfb510) at ../libs/ardour/session_process.cc:836
#3  0x00007ffff7b8d780 in ARDOUR::SessionEventManager::clear_events(ARDOUR::SessionEvent::Type, boost::function<void ()>) (this=0x55555d89c3f0, type=ARDOUR::SessionEvent::Skip, after=...)
    at ../libs/ardour/session_events.cc:156
#4  0x00007ffff7b17991 in ARDOUR::Session::sync_locations_to_skips() (this=0x55555d89c260) at ../libs/ardour/session.cc:1752
#5  0x00007ffff7b175bd in ARDOUR::Session::update_skips(ARDOUR::Location*, bool) (this=0x55555d89c260, loc=0x0, consolidate=false) at ../libs/ardour/session.cc:1701
#6  0x00007ffff7b18bed in ARDOUR::Session::_locations_changed(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)
    (this=0x55555d89c260, locations=empty std::__cxx11::list) at ../libs/ardour/session.cc:1877
#7  0x00007ffff7b3ff7d in ARDOUR::Locations::apply<ARDOUR::Session>(ARDOUR::Session&, void (ARDOUR::Session::*)(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)) const (this=0x55555e19ed10, obj=..., method=
    (void (ARDOUR::Session::*)(ARDOUR::Session * const, const ARDOUR::Locations::LocationList &)) 0x7ffff7b18b38 <ARDOUR::Session::_locations_changed(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)>) at ../libs/ardour/ardour/location.h:263
#8  0x00007ffff7b18b35 in ARDOUR::Session::locations_changed() (this=0x55555d89c260) at ../libs/ardour/session.cc:1858
#9  0x00007ffff7bc4914 in ARDOUR::Session::set_state(XMLNode const&, int) (this=0x55555d89c260, node=..., version=7000) at ../libs/ardour/session_state.cc:1666
2022-01-03 01:11:54 +01:00
Robin Gareus
987df219e0
Fix building libardour unit-tests, disable BBT tests for now 2022-01-03 01:11:54 +01:00
Robin Gareus
6c3c38e924
Replace Tabs with Space in python script 2022-01-02 14:34:53 +01:00
Paul Davis
483bdd99cc libardour: new SegmentDescriptor type added (but not used) 2021-12-12 10:55:05 -07:00
Paul Davis
d4d4298320 triggerbox: add Chris Cannam's minibpm and use to determine tempo and thus stretch 2021-10-06 15:21:44 -06:00
Paul Davis
41796ecc14 soundtouch support is not enabled by default and currently will not compile 2021-08-13 16:19:47 -06:00
Paul Davis
1927e4673b remove StepSequencer, BeatBox and BeatBoxGUI from wscripts and #ifdef code occurences. Files remain 2021-08-13 12:51:36 -06:00
Paul Davis
b8a3b25dee add TriggerBox processor (extremely prototypical)
This takes some barely working ideas from the old ableton branch and turns it into a processor instead of a separate track object
2021-08-13 12:51:36 -06:00
Paul Davis
73ad70648d bump session file version 2021-08-13 12:51:35 -06:00
Paul Davis
47246b0179 libs/ardour/superclock.cc is not needed 2021-08-13 12:51:30 -06:00
Paul Davis
256eb2d1d3 changes for lv2 plugin/new tempo map 2021-08-13 12:51:29 -06:00
Paul Davis
f67029bd02 random commit to facilitate trivial move of work from laptop back to main system 2021-08-13 12:51:29 -06:00
Paul Davis
eae9d276fe libardour: conversion to use timeline types (mega-commit) 2021-08-13 12:51:29 -06:00
Paul Davis
f42bd3fe47 add per-thread sample rate variable and libardour method to update it 2021-08-13 12:51:28 -06:00
Paul Davis
6905a705a9 initial landing of new internal StepSequencer object 2021-08-13 12:51:26 -06:00
Paul Davis
6b39febabc meet the beatbox 2021-08-13 12:51:26 -06:00
Robin Gareus
82c536ec81
Fix test/profiling tools
* use dummy-backend (don't expect engine to be running)
* add required TestUI / Receiver

Lots of regions: add scope to prevent SessionHandleRef
  existing across session deletion

RunPC: take process-lock before processing, prevents various
  assert() and concurrency issues.
2021-07-16 18:47:13 +02:00
Robin Gareus
d4212da693
AU: standalone scanner tool 2021-07-03 19:07:26 +02:00
Robin Gareus
39fd3ff62a
VST2: use new scanner 2021-07-03 19:07:26 +02:00
Robin Gareus
a74b4e8ef0
No more wine 2021-07-03 19:07:25 +02:00
Robin Gareus
fce374fd41
Foundation for plugin-manager, persistent logs 2021-07-03 19:07:24 +02:00
Marijn Kruisselbrink
0a54f96a44
Add M4A support to the audio import dialog using FFMPEG.
This uses the existing optional runtime ffmpeg dependency to add support
for m4a files (and in theory whatever other file formats ffmpeg
supports) to the import audio dialog.

The same functionality is mostly already available via Session -> Open
Video, with the "import audio only" selection (even though m4a isn't
currently included as one of the video formats, it still works). Having
this in the import audio dialog however seems much more user friendly.
2021-06-21 02:30:36 +02:00
Robin Gareus
65cc9264c8
Create regions with property changes suspended
This fixes various issues with signal emission(s) when creating
regions from withing playlist operations.

eg. Playlist::duplicate() takes RegionWriteLock() and then calls
RegionFactory::create().

see also 6a82aa392c
2021-04-30 18:43:36 +02:00
Robin Gareus
114d5f20e6
Add Monitor Return
This is a special case of an Internal Return processor
dedicated to the monitor-section. The main use-case will
be to collect signals from physical ports in a realtime-safe
manner (no connections or Port creation)
2021-02-22 00:59:59 +01:00
Robin Gareus
f2d2ea4baa
Refactor Solo/Mute release
This is in preparation to move RoueUI::SoloMuteRelease
to libardour to reuse the implementation in various places.
This also prepares the solo logic for exclusive port-monitoring.
2021-02-22 00:59:58 +01:00
Robin Gareus
ecdaf7136d
Add dedicated Monitor Port
This allows for rt-safe monitoring, collecting data
directly from input-ports without requiring a dedicated connection
or dynamic ARDOUR::AudioPort creation.
2021-02-22 00:59:57 +01:00
Robin Gareus
24f69d5174
Fix linking with gcc-10.2
Explicit libardour/fftw3f is needed for thread-safe-planner
2021-01-22 18:36:59 +01:00
Robin Gareus
9a7379dfff
Add a CircularSampleBuffer for input port scopes 2021-01-08 18:39:56 +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
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
e6fe0e8cca
Prepare for static CP API removal 2/2
This partially reverts bc78629788
2020-10-18 14:28:45 +02:00
Robin Gareus
01c278a00c
Fix unit-test builds
For the time being (since bc78629788) vst3 plugin uses
the Control Protocol API for track selection and focus, and
hence users of libardour also need to use libardour_cp
2020-10-17 18:18:05 +02:00
Robin Gareus
e391352b6d
Use predefined "testcommon" target for unit-tests 2020-10-16 02:32:30 +02:00