Commit graph

10369 commits

Author SHA1 Message Date
Robin Gareus
82d1d7ef0b various transient-detection fixes (split region, trim, move, undo,..)
* all API calls use session-time (allow region-lists)
* per-region transients are separated in
  - Onset (Rhythm Rodent, Aubio)
  - User-added
  - internal/source (QM), used as fallback for next/prev (read-only)
2016-05-01 02:02:04 +02:00
Robin Gareus
791ac8f843 API call to be removed 2016-05-01 00:28:54 +02:00
Paul Davis
8b52b69810 make BasicUI (for control surfaces) loop toggle work like the GUI 2016-04-30 10:54:40 -04:00
Robin Gareus
6d49e24503 implement lua plugin presets 2016-04-29 18:34:27 +02:00
Robin Gareus
69bd02bd25 remove skeleton backend (superseded by portaudio) 2016-04-29 16:43:09 +02:00
Robin Gareus
69f99ee184 I wanna be nasty, I wanna be cruel,..
Somme disastrous signal generators for QA.
2016-04-29 16:10:09 +02:00
Robin Gareus
e56c8f0309 don't special case lua processors, use plugin-manager 2016-04-29 02:57:42 +02:00
Robin Gareus
17d782829e flush pending Session Events at session close
This prevents a memory leak: The session is closed.
The session-butler drops memory pool trash. The Engine keeps running.

Once the AudioEngine is taken down (sample-rate switch, or at exit),
the backend process-thread is terminated but there is no trash-can anymore.

If there are unprocessed SessionEvents, this calls
free_per_thread_pool() -> cp->parent()->add_to_trash (cp).
"parent()" in this case the trash-can the butler emptied.
2016-04-28 21:37:18 +02:00
Robin Gareus
633f218911 fix a deadlock with jack2 when inserting a plugin adds ports.
When adding a processor, the processor may add ports leading to
a call to jack_port_register(). while Ardour holds a WritertLock on the
processor-list (this commit removes this WriterLock).

with jack2 that results in a graph-reorder callback (WHY?)

jack2 issues that graph-reorder in a separate thread BUT
port-registration does not return until the graph-reorder is complete.

On Ardour's side, graph_reordered() calls Session::resort_routes ()
which eventually checks Route::direct_feeds_according_to_reality()
which needs a ReadLock on the processor-list to check I/O.

Since jack_port_register() does not return, this constitutes a deadlock.

THE ACTUAL PROBLEM IS JACK2's THREAD DESIGN!
Why does jack_port_register() trigger a graph-order in jack2?
No connections are made.
..and why does it block jack_port_register() from returning if
that graph-order callback is in a different thread?
http://pastebin.com/DZANXJLz
2016-04-28 21:15:26 +02:00
Robin Gareus
d81547efb4 add a debug message for LV2 per port buffer allocation 2016-04-28 12:27:53 +02:00
Ben Loftis
b961c1d8f2 another attempt to use platform-specific path for the default VST path 2016-04-27 17:39:38 -05:00
Robin Gareus
370b507d45 amend c1c81a239c after testing 2016-04-27 23:52:34 +02:00
Robin Gareus
c30b47f0eb allow to customize variable i/o plugin inputs 2016-04-27 23:34:55 +02:00
Ben Loftis
b191408f98 fix default 64bit Windows VST path ( untested ) 2016-04-27 14:56:19 -05:00
Robin Gareus
c1c81a239c probable fix for 64bit VST signal latency 2016-04-27 21:45:00 +02:00
Len Ovens
4a226385b6 OSC: Fix Solo to work with both SIP and Listen. 2016-04-27 09:06:46 -07:00
Robin Gareus
4005ef9db6 tweak LV2 atom buffer allocation strategy
Allow to re-use Midi buffers for GUI communication. Honor
resize-port extension for all Atom Sequence buffers.
(following example of http://lv2plug.in/book/#_sampler)
2016-04-27 14:46:24 +02:00
Paul Davis
9634888bf3 add the concept of a "state mask" that determines what info a WindowProxy will save 2016-04-27 00:03:14 -04:00
Robin Gareus
559860f016 make -D VSTCallbacks readable 2016-04-27 01:44:55 +02:00
Robin Gareus
da26a55b31 canvas tooltips, too 2016-04-27 01:24:37 +02:00
Robin Gareus
49e5494907 also hide persistent tooltips
debatable, since most of them are not "help/tool info" but rather
"current value display".
Then again tooltip is tooltip and can be annoying or not wanted.
2016-04-27 01:07:53 +02:00
Robin Gareus
cda5b48b96 initialize output data ports for cases where the plugin is not run
(e.g. load session with inactive track, or instantiate an audio plugin
on a midi track before the synth)
2016-04-26 22:21:00 +02:00
Robin Gareus
4b8bc84e4a let GMainContext clean up after us.
this fixes a potential crash in
AsyncMIDIPort::~AsyncMIDIPort() -> CrossThreadChannel::~CrossThreadChannel()
2016-04-26 19:45:06 +02:00
Robin Gareus
43e620504a port 93eac8b0 to ALSA and CoreAudio 2016-04-26 18:19:48 +02:00
Robin Gareus
59f7df38a2 allow to duplicate tracks with sends or load templates with sends/inserts 2016-04-26 18:16:14 +02:00
Robin Gareus
5227f57f2e implement missing PortManager methods and lua-bind them 2016-04-26 18:16:14 +02:00
John Emmas
7f8c7d8647 #define HAVE_JACK_PORT_RENAME when building with MSVC
This means needing to build against libjack v1.9.11 (or later) although that's probably not a bad thing.
2016-04-26 15:02:20 +01:00
John Emmas
93eac8b068 Use 'const_iterator' to prevent MSVC from complaining 2016-04-26 14:58:16 +01:00
Robin Gareus
01286b442e don't show engine dialog when loading a session..
..and the engine is running at the desired samplerate
2016-04-26 12:56:52 +02:00
Robin Gareus
7cbc6cf8a2 styleguide #10
sigc keeps a reference to the shared_ptr, AsyncMidiPorts were never
unregistered, causing issues when loading a new session w/o Engine
restart.
2016-04-26 04:02:58 +02:00
Robin Gareus
2169de3975 keep portmap & portindex in sync when renaming ports
Fixes crash on session re-load (introduced in 800c8182 and fde99e68)
2016-04-26 02:26:20 +02:00
Robin Gareus
11a69068af PortManager lua bindings (to debug lingering ports) 2016-04-26 02:21:09 +02:00
Robin Gareus
4f3f966276 update [lua bindings] documentation 2016-04-25 13:06:40 +02:00
Robin Gareus
f4f9963cdd add missing header for luadoc 2016-04-25 02:35:45 +02:00
Robin Gareus
fde99e68f7 ..and CoreAudio. 2016-04-24 20:45:50 +02:00
Robin Gareus
800c8182c6 O(log(n)) port and connection lookup for ALSA 2016-04-24 20:45:37 +02:00
Robin Gareus
ce052ba20a now with C++98 compat 2016-04-24 18:34:31 +02:00
Robin Gareus
a3856d44b2 delayline: use boost::shared_array 2016-04-24 18:26:39 +02:00
Robin Gareus
d1874d4685 optimize port lookup, adding/removing/reconnecting routes
xxxAudioBackend::connected_to() is called O(N^2) when building the graph.
Mitigate this by using an O(log(N)) lookup.

This duplicates the storage (both set and map and both are kept in sync.
Changing this to a boost:bidirectional might be nice, before updating
other backends.
2016-04-24 18:26:39 +02:00
Robin Gareus
1321701189 reduce debug-build overhead. 2016-04-24 18:26:39 +02:00
Robin Gareus
36a928f0ae we need the process lock after all.. 2016-04-24 18:26:39 +02:00
Robin Gareus
f80c0faa24 some new lua-bindings and session-lua (creating sessions) 2016-04-24 14:43:18 +02:00
Robin Gareus
667a4aafb5 fix mismatched delete/delete[] 2016-04-24 14:43:18 +02:00
Robin Gareus
f6a621346c some notes on mem-leaks... 2016-04-24 14:43:18 +02:00
Robin Gareus
e3536fbefe hand over automationlist undo state ownership (mem-leak) 2016-04-24 14:43:18 +02:00
Robin Gareus
e3607a4c8b plug some memory leaks in libardour 2016-04-24 14:43:18 +02:00
Robin Gareus
4fe7d1ea08 further tweaks to session close 2016-04-24 02:53:01 +02:00
Robin Gareus
f317451609 lua bindings for track/bus and session creation 2016-04-24 00:25:34 +02:00
Robin Gareus
f8936ebcb1 Disconnect Signals before dropping ports
significantly speeds up session close
2016-04-24 00:24:43 +02:00
Robin Gareus
2a7a64a873 delegate port-connections to low priority thread.
This prevents a deadlock with (some versions) jack:
 * add new instrument track with instrument
 * configure processors (takes processor lock)
 * add I/Os (delivery) -> create ports
 * auto-connect ports
 * jack port-connect -> jack graph re-order
 * Ardour graph-re-order
 * needs processor lock (to check sends)
2016-04-23 22:11:48 +02:00