13
0
Commit Graph

14639 Commits

Author SHA1 Message Date
959947e7f8
NO-OP: whitespace (remove vi modelines) 2019-02-28 20:56:23 +01:00
9131cd17a0
Consolidate gdither noise code 2019-02-28 20:40:45 +01:00
2a8d3ff4f0
Amazing PCM byte/array convert functions, unused. 2019-02-28 18:52:10 +01:00
be3fa5a635
Remove unused RDF in RIFF prototype 2019-02-28 18:30:06 +01:00
c83ba53399
Remove ancient, unmaintained xcode project files 2019-02-28 18:12:44 +01:00
7ae1825a3c
Remove cruft, unused files 2019-02-28 18:04:42 +01:00
c6e2e0a948
Clean up remnants from a half eaten apple 2019-02-28 18:00:08 +01:00
d2b73141af
Fix analysis plugin when using plugin-presets 2019-02-28 04:49:27 +01:00
5d4fbcb1ea
Allow to special case plugins used for IR analysis
This is relevant for some VST specifics (e.g connected pins) or
similar audioMasterCallbacks that use either global or plugin-insert
specific data.
2019-02-28 04:49:00 +01:00
2ee2b8481c
Copy state when replicating an AU plugin
This is only used for plugin-analysis, AU plugins are otherwise not
replicated, and variable-i/o is used instead
2019-02-28 04:48:48 +01:00
4397ec9ce6
Properly copy LV2 plugin instances on replication
This fixes issues for stateful plugins and plugins with
previously loaded preset.
2019-02-28 04:48:32 +01:00
5714e390f8
Take latency into account when analyzing live signal 2019-02-28 04:20:12 +01:00
72e6a79b69
Prefer to expose the virtual method for VCA and Route 2019-02-27 16:43:52 +01:00
20c36c9979
Expose Lua bindings to check VCA assignments 2019-02-27 16:33:59 +01:00
47c265f2ec clarifying comment 2019-02-26 10:17:23 -07:00
eddac2e3b2 enhanced debug trace output 2019-02-26 09:02:42 -07:00
5fad2efa10 reorder call to ::track_transport_master() so that delta is computed correctly 2019-02-26 09:02:42 -07:00
eefc2d774c enhanced debug trace output 2019-02-26 09:02:42 -07:00
a84164cd94 enhanced debug trace output 2019-02-26 09:02:42 -07:00
d26a835d35
ExportFormatFFMPEG supports tagging meta-data 2019-02-26 17:01:37 +01:00
267dfea02c
Disable ffmpeg/metadata by default, use "tag-metadata" 2019-02-26 17:01:37 +01:00
bc9bf87dde
Debug AudioGrapher::CmdPipeWriter<> command 2019-02-26 17:01:37 +01:00
Nikolaus Gullotta
711965b1a9 Amend d61efbee3 - remove check for Mixbus 2019-02-26 09:45:58 -06:00
Nikolaus Gullotta
d61efbee3e Route::save_as_template() needs call state() with true, and add modified-with node to state for template-files 2019-02-26 09:42:30 -06:00
7048d86d6c
Remove unused define 2019-02-26 03:49:02 +01:00
6920e5d653
Prefer vfork() over system() when opening an URI
see also https://github.com/surge-synthesizer/surge/issues/657
2019-02-26 03:47:36 +01:00
b8a6f7b052
TimeFx-Filter: do not create a region when operation is canceled 2019-02-26 03:07:49 +01:00
5f1e2d4961
Fix never-ending timestretch
This is relevant when time-stretch is canceled. In that case
stretcher.process() is never called with final=true, and hence
stretcher.available() will always return a value >=0.
2019-02-26 01:57:02 +01:00
75134e8ccf
Update Fluidsynth to v2.0.4
see https://github.com/FluidSynth/fluidsynth/releases/tag/v2.0.4
2019-02-23 18:41:05 +01:00
63fdfd9e85 remove PostTransportWorkCurveReallocate (no longer used) 2019-02-22 14:54:34 -07:00
11ef82954e
Sort route-templates by name 2019-02-22 22:33:01 +01:00
59c856c2c0
Remove unused API, unused variable 2019-02-21 16:11:32 +01:00
8006057279
Avoid dynamic-cast, prefer virtual inheritance for performance reasons 2019-02-21 16:10:45 +01:00
522f28b3c5
Add API to check for ongoing de-click 2019-02-21 01:34:58 +01:00
e48fe0fd42
Remove more cruft (unused rf-scale) 2019-02-21 00:24:56 +01:00
c3a7c7c452
Remove cruft (unused PostTransportInputChange) 2019-02-20 19:23:37 +01:00
69322ccd1b
Add unified API to select plugins to show on control-surfaces
e.g. Mixbus channelstrip should be hidden, also mixbus' built-in
effects are exposed as well-known controls
2019-02-20 16:26:51 +01:00
125a38bdbf Add/remove source(s) in our MSVC project (libardour) 2019-02-18 10:12:57 +00:00
bb4d769310
Remain silent while a disk-buffer is overwritten
This catches a case where a user-operation results in a complete
buffer re-fill during playback (e.g. split or move regions while playing)
2019-02-18 02:18:13 +01:00
6d7bc4ea30
Emit signal when plugin latency changes 2019-02-17 02:22:03 +01:00
2ec28f3ce7
Clean up Latency API (Processor vs Plugin)
Plugins are only a source of Latency (Plugin delay).
The API to query, signal and override Latency is managed
by PluginInsert.
2019-02-17 01:51:49 +01:00
23a98e5f4d remove references to "Editor_menus" which is an action that no longer exists 2019-02-16 13:12:45 -07:00
56e950b189 rename Main_menu action to Main menu
So that if it ever does show up in a list, it looks nice
2019-02-16 13:05:41 -07:00
35609bcfed
Fix some signed/unsigned warnings 2019-02-16 01:10:50 +01:00
fb8505a4ad
NO-OP: whitespace 2019-02-16 01:10:50 +01:00
3cffaeac74
Prepare to allow to disable latency-compensation
Previously "zero custom/user latency" meant "default plugin latency".
This is now saved in a separate boolean allowing a user to reduce a
processor's latency to zero.

This also prepares for a global switch to use zero latency throughout
the whole session.
2019-02-16 01:10:50 +01:00
a858f199a1
Simply debugging port-registration failures 2019-02-15 18:27:22 +01:00
edc34b8d05
Optimize DSP-load calculation, pre-calculate fall-off once 2019-02-14 00:04:29 +01:00
08f51e72d5 midi-audition-synth-uri is deprecated (libardour part). 2019-02-12 13:04:59 -06:00
14c69e869f Hard-code GMsynth as the fallback, and allow UI to select the audition synth on-the-fly. 2019-02-12 13:04:59 -06:00
688bd28458 Session-range behavior (libardour part) 2019-02-12 11:35:48 -06:00
37d28c63db Selection-after-split behavior ( libardour part ) 2019-02-12 11:34:50 -06:00
983875ffc8
Fix llabs() ambiguity
some older systems (e.g. OSX/PPC) fail to compile with
  error: call of overloaded 'llabs(long long int)' is ambiguous
  candidates are:
      long long int llabs(long long int)
      long long int __gnu_cxx::llabs(long long int)
2019-02-09 03:33:32 +01:00
3f66bac4d0
Fix MIDI-bypass for inplace plugins -- #7722 2019-02-09 00:38:36 +01:00
865a33f7b9
Properly initialize atomic variable 2019-02-08 19:33:23 +01:00
796ac29cf2
Fix some disk-buffer threading issues
Make _pending_overwrite atomic (butler + process thread).
This also addresses a potential seek before override race.

Seeking will fill the buffers and by the time overwrite_existing_buffers()
is called from there is no space to overwrite anymore.
2019-02-08 19:33:23 +01:00
b5587e5e43
NO-OP: clarify internal API, prepare for overwrite queue 2019-02-08 19:33:19 +01:00
a6e7abb7fa Accommodate newly introduced source(s) in our MSVC project (libpbd) 2019-02-08 10:17:57 +00:00
bea9f5adc3
Remove disk-reader local MIDI vari-speed
Vari-speed is now handled by the engine, on port-level
2019-02-07 21:32:20 +01:00
8dda9f4ca8
Prefer AudioBuffer reference over raw buffer
This allows for consistent libardour API usage, in particular Amp.
2019-02-07 15:28:30 +01:00
18af4dd55a
Prepare dedicated Disk-reader de-click gain-stage
This allows to specify a shorter fade-duration than default
Amp::apply_gain(), also allows to unroll and vectorize the loop
2019-02-07 15:28:25 +01:00
3c96ba1de6
Allow reading future data without read-commit
This is in preparation for de-click, fade-out. A disk-reader
can keep going, reading buffered data (if any) without changing the
read-index.
2019-02-07 01:31:15 +01:00
243412d930 do not use green for "OK" deltas in transport master dialog and drop delta character 2019-02-06 15:04:33 -07:00
68897a742f use correct value for silent sample count delivered to LTC decoder 2019-02-06 13:54:05 -07:00
5e1484bf18
Fix rolling backwards
When speed is -1,  start_sample >= end_sample and _transport_sample
needs to be decremented.

Session::process_with_events() did this correctly, this change makes
Session::process_without_events() behave identically.
2019-02-06 20:26:44 +01:00
1845dff4c8
Implement backwards micro-locates 2019-02-06 20:22:22 +01:00
dcd612f8a7
Prepare Disk-reader for bi-directional micro-locates 2019-02-06 19:22:46 +01:00
6975b5ca54
Prepare buffer for seeking
Keep track of safe reservation:
Data has been read (or was skipped) previously can be read again
up to the allocated "reservation" (which is never overwritten).
2019-02-06 19:00:15 +01:00
b3fda6236a
Optimize buffer zero-filling 2019-02-06 17:02:20 +01:00
007c4ffdc0
Towards a new disk-reader ringbuffer
This is mainly a NO-OP, introducing a new PlaybackBuffer type
and preparing for its use.

At this point in time, the buffer is just a power-of-two sized
ringbuffer and the disk-reader's read-logic is still unchanged.

Eventually the read and write sample position that are currently
private to the disk-reader can be migrated to be owned by the buffer.
Also Diskreader::read() positions can be matched to read-position ..
+/- buffer reservation and de-click can read w/o committing the read.
2019-02-05 23:29:31 +01:00
3cc3074dc7 use ::reset() not ::update() 2019-02-04 11:24:23 -07:00
90e5220fa6 reset "current" in LTC transport master when necessary 2019-02-04 11:23:56 -07:00
5b12cc9bad correctly initialize LTC transport master port latency (reversed boolean error) 2019-02-04 11:23:35 -07:00
6f81552011 NOOP: whitespace in function call 2019-02-04 11:22:25 -07:00
a18250905c fully initialize all LTC transport master members
at least the ones that can be done via initialization statements
2019-02-04 11:22:04 -07:00
3a43c6375d remove debug output 2019-02-04 11:21:07 -07:00
dae7ea5382 add DEBUG::Destruction output for Port 2019-02-04 11:20:49 -07:00
8edd03e68b extend debug output statement 2019-02-04 11:20:32 -07:00
55e2542193 add new DEBUG_TRACE output for transport masters 2019-02-04 11:20:19 -07:00
ae1bd6bbd0 remove commented code 2019-02-04 11:19:56 -07:00
64ed049567 force execution of ARDOUR::init_post_engine() before any handlers of AudioEngine::Running() 2019-01-27 14:02:03 -07:00
e7b34d7f18 do not reset ControlProtocol state for every engine restart, it is not necessary 2019-01-27 14:01:05 -07:00
1be3301342 new approach to handling Transport Masters when engine is restarted
Trust that ::reset() works for all transport masters, and call it when engine is stopped. This way
the transport masters are ready to be called again as soon as the engine restarts.
2019-01-25 09:23:08 -07:00
28f211c5d2
NO-OP: whitespace 2019-01-23 12:59:17 +01:00
87602e7fb3
system-exec read: allow 1 byte for null termination -- #7715 2019-01-23 12:44:10 +01:00
145d7f8d0a
LV2: Immediately respond after processing scheduled work in sync exec mode
This allows for sample-accuracy when the work is triggered by sequenced
events in offline rendering mode.
2019-01-22 21:54:22 +01:00
586792fcc9
NO-OP: whitespace 2019-01-21 14:36:59 +01:00
657e976a80
NO-OP: remove unused code 2019-01-21 14:34:19 +01:00
d97364736c
ISO-C++ compat, see cd70c6bda5, 91ed9840d 2019-01-21 14:33:08 +01:00
d5241c6194
Use correct playlist when loading Ardour5 session
Ardour5 identifies playlists by playlist-name, not by diskstream name.
2019-01-19 12:08:54 +01:00
bf728520ca
Optimize exponential interpolation. 2019-01-19 12:08:54 +01:00
616ee4e43b OSC: remove unused variable 2019-01-18 10:24:13 -08:00
da347c3b37 Hmm, balanced panner didn't seem to make it in 2019-01-18 10:24:13 -08:00
80df6b84b0 foldback sends should have unlinked balanced panner
Or 1+2 for mono sends.
2019-01-18 10:24:13 -08:00
c7787690f6 OSC: shorten foldbackbus names 2019-01-18 10:24:13 -08:00
4c064081af (libs) call ARDOUR::init_post_engine() from within libardour rather than requiring "users" of the library to arrange for it 2019-01-16 15:29:38 -06:00
cd70c6bda5
Fix ambiguity introduced in 91ed9840d
(bool) false == 0 == (const char*) NULL

error: ISO C++ says that these are ambiguous, even though the worst
conversion for the first is better than the worst conversion for the second:

actions.h:92: note: candidate 1: Glib::RefPtr<Gtk::Action> ActionManager::get_action(const char*, const char*, bool)
actions.h:91: note: candidate 2: Glib::RefPtr<Gtk::Action> ActionManager::get_action(const std::string&, bool)
2019-01-16 01:17:52 +01:00
8b71967be9
ALSA: add locks to safely add/remove MIDI devices
Theoretically this could be lock-free by using a queue of device
ports to be added/remove in sync in the process-callback, but
realistically adding/removing devices doesn't have to be rt-safe.
2019-01-14 22:33:31 +01:00
8f9e63575f Clarify which version of 'ActionManager::get_action()' we're calling
For MSVC, the parameter 'false' (i.e. 0) can be considered as either a bool or a pointer - so it'll map to both declarations of ActionManager::get_action()
2019-01-14 14:14:23 +00:00
e5ae620c0b adjust debug/trace output for key bindings 2019-01-13 12:00:31 -06:00
f974ff594a additional API to make it nicer to get an existing action group 2019-01-13 11:59:18 -06:00
b67bb8165b do not crash if an unknown action is used by US2400 support 2019-01-11 12:54:44 -06:00
91ed9840d0 do not crash if an unknown action is used by Mackie Control support 2019-01-11 12:39:07 -06:00
Jan Lentfer
ff0ee75a56 LCXL: Fix a problem in switch_bank 2019-01-03 19:22:56 +01:00
Jan Lentfer
45f83beb17 LCXL: fix special 32C handling for autom. lanes 2019-01-03 19:22:15 +01:00
86a78dc100
Fix a -Wunused-but-set-variable 2019-01-02 18:59:03 +01:00
552ede7695
Include Volume Paths in Ardour's PathsDialog Widget
This fixes an issue on MacOS/X. Show non-root volumes to the sidebar
as shortcuts.
2019-01-02 17:40:03 +01:00
ac9329f907
Update Fluidsynth to v2.0.3
see https://github.com/FluidSynth/fluidsynth/releases/tag/v2.0.3
2019-01-02 16:48:03 +01:00
e353bd982b
NO-OP: whitespace 2018-12-28 17:32:38 +01:00
Alex Pilon
53c6b7f909
Check whether punch-in is enabled and record is enabled in addition to if we are actively recording when deciding whether to run count-in clicks 2018-12-28 17:30:09 +01:00
04ccd328dc remove configure-time --no-lv2 option. LV2 is integral to what we do 2018-12-28 09:47:55 -05:00
923d07be31 remove debug output 2018-12-27 17:18:21 -05:00
b09ac181e0 div wrapping 2018-12-27 17:18:21 -05:00
d50d8b9d33
C++98 compatible map erase 2018-12-27 12:45:36 +01:00
7d1a7b076f
NO-OP: whitespace 2018-12-24 02:30:00 +01:00
a0994b16dd
Update Convolver/LuaConvolver
* Add API to allow per-channnel gain and delay
* Fix channel-mapping for stereo IRs w/o true-stereo
2018-12-24 02:29:24 +01:00
517b5f091f
Use same has for ALSA-seq and ALSA-raw devices 2018-12-23 21:58:56 +01:00
79e247e00a
Dynamic ALSA MIDI I/O device discovery and re/connect 2018-12-23 21:58:56 +01:00
217ef4d365
Use hash for ALSA-MIDI device name/ID 2018-12-23 21:58:55 +01:00
c3c85e9ecd
Fix cases where there's no MIDI buffer (e.g. audio audition) 2018-12-23 01:58:19 +01:00
6fa1c58cec
Add guard-points when shifting automation 2018-12-22 02:04:17 +01:00
616f7f40b6
Properly remove-time automation
Previously "remove time" was able to produce overlapping, not
ordered automation.
2018-12-22 01:09:24 +01:00
df666326f7
Fix insert/remove time duplicate automation move -- #7712
Editor::insert_time(), Editor::remove_time() handle automation
directly because time may be inserted to Routes without playlists
and combined undo-operation with marker, and tempo-changes.

However when the preference "automation_follows_regions" is enabled,
the playlist already moves the automation of region under any region
(possibly overriding future automation).

This resulted in possibly lossy, duplicate automation moves.
2018-12-21 17:33:59 +01:00
19a2d384fc
NO-OP: whitespace
* Remove leading and trailing whitespace.
* use tabs to indent, space to align

/* prefer C-style comments like this,
 * always use an asterisk on every line, this
 * way small ASCII-graphics are always aligned
 * using spaces after the asterisk.
 *
 *            ^
 *           / \
 *          /   \
 *         /     \
 *        /       \
 *       /         \
 *      /  /\       \
 *     /__/  \_/\_^__\
 *       A R D O U R
 *
     << NO asterisk, there may be tabs :(
 *
 */
2018-12-21 17:33:55 +01:00
9ec031cfce
Remove duplicate automation shift
Amp, Trim are now processors, moving processor-automation takes care
of gain automation.
2018-12-21 17:33:51 +01:00
58db958839
Fix crash for external windows
eg. LV2 externalUI windows are not managed by ardour; Ardour cannot
intercept mapped() or delete_event() signals and hence also not
create a visibility-tracker.

First call to WindowProxy::toggle() creates the window, and the 2nd call
crashed since 6ca8ec5141, due to missing vistracker.

e.g. externalUI plugin windows, the processor-box uses WindowProxy
for all plugin-UIs incl. externalUIs.
2018-12-20 19:41:57 +01:00
a48d6a37b3
Amend e4304f3bf, plugin-preset, preset-record 2018-12-20 16:56:49 +01:00
560054dfd6 Use lilv_world_get()
Leaves the now-trivial get_value() helper there since it keeps the call sites
shorter and nicer to read.
2018-12-19 20:08:47 -05:00
79c9c62154 Remove conditional support for ancient versions of Lilv
This updates the dependency to 0.24.2, which was released in January 2017 and
is the most recent version in Debian 9 (stretch).
2018-12-19 20:08:47 -05:00
55bc0eec91 adjustments for latest boost shared_ptr debug patch 2018-12-19 17:19:51 -05:00
1528df2f5a
Compliant LV2 state path-mapping
lv2 state mandates that
>  The plugin MUST use this function [ absolute_path] in order to
>  actually open or otherwise use any paths loaded from plugin state.
Previously the plugin uses the value directly. Also
>  The caller is responsible for freeing the returned value with free().
is now implemented on systems other than windows (where this is not
possible, since the memory must be free()ed in the same module where it
was allocated.
2018-12-19 22:28:40 +01:00
e4304f3bf2
Wouldn't it be nice if plugin presets had a description/comment? 2018-12-18 14:13:15 +01:00
0a3fc4a87f
Add LV2 option/extension for plugin thread sched priority
This allows plugins that need threads to process to configure their
thread priority to not interfere with the host's process threads.
2018-12-18 13:30:31 +01:00
0d55dad045 MSVC won't allow us to erase an item that's managed by 'const_iterator' 2018-12-17 09:32:19 +00:00
6c8abb26c8 ptformat: Update to 877fa28 - more endian resilient && pt5 fixes 2018-12-16 15:08:23 +11:00
f28ccd5e3a
NO-OP: whitespace 2018-12-16 04:25:25 +01:00
6a171eb847
Remove cruft: previous set_value_unchecked optimization 2018-12-16 04:25:24 +01:00
6b1b72a247
Optimize automation-event process splitting
Use RCU of automated parameter when looking for next automation event
to use for split processing. This speeds up PluginInsert processing
when rolling for plugins with many not-automated parameters.
2018-12-16 04:25:24 +01:00
e4d3ebfb66
Optimize plugin-processing for non-automated params
Keep a dedicated list of automated parameters to evaluate in realtime.
This fixes a performance issue with plugins that have many controls
with only few of them being automated.
2018-12-16 04:25:20 +01:00
95a61717fa
Fix ExportFormatSpecification copy-c'tor
This initialize some otherwise uninitalized variables and may fix
cue/toc export oddities
2018-12-13 17:07:08 +01:00
Jan Lentfer
5d2a03578c
LCXL: some more small tweaks
* assign Pan knob to Comp thresh as secondary function
    * make cancel_all_solo and cancel_all_mute work in device mode, too
2018-12-12 18:14:48 +01:00
360261f110 replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls 2018-12-12 11:12:48 -05:00
758d0ca263 replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls 2018-12-12 10:08:01 -05:00
639dff3a7c make session/Config now responsible for adding/removing a monitor section 2018-12-11 12:22:28 -05:00
e1b7a43139 add ActionManager::get_actions() to fetch all actions created in ActionGroups with a given "owner" value 2018-12-11 05:05:09 -05:00
1de181479f add basic concept of an "owner" for an action group, to allow later grouping 2018-12-10 18:40:31 -05:00
4b0f0f913b fix Window->Common move for show-mixer 2018-12-10 18:40:16 -05:00
ab61c6837f add ActionManager::set_sensitive() for Gtk::ActionGroup 2018-12-10 18:40:00 -05:00
00df619d21 use ActionManager namespace, rather than ActionMap objects 2018-12-10 08:34:01 -05:00
d1d8fd197d change ActionManager::find_action() back to ActionManager::get_action()
This avoids dozens or hundreds of unnecessary changes in gtk2_ardour code
2018-12-10 08:34:01 -05:00
ad002d0de0 consolidate ActionMap and ActionManager APIs into a single namespace 2018-12-10 08:34:01 -05:00
39c253c590 provide (Static)ActionMapOwner::action_map() 2018-12-10 08:34:00 -05:00
dd2e80467b
"only" 1048576 -- sounds like it's not sufficient 2018-12-09 01:27:55 +01:00
9004a0df7a
Properly keep track of Window Visibility, action state
This fixes inconsistent WM::Proxy state when a window is destroyed
Specifically "session-options-editor" when the session is unloaded;
previously "toggle-session-options-editor" was never unset.
2018-12-08 22:38:03 +01:00
19cb8cf138
Fix progress report when resampling to fixed-point on import 2018-12-07 04:41:22 +01:00
0284203551
Fix importing to a fixed-point format with resampling
ResampledImportableSource::read() returns audio-frames;
multiplication by number of channels read beyond the buffer.
2018-12-07 04:16:28 +01:00
dd4c788d3e add syntactic sugar for fetching toggle and radio actions 2018-12-06 22:12:34 -05:00
eb48c14ec4 some ActionMap infrastructure to start removing ActionManager 2018-12-05 17:33:05 -05:00
4d7e9d5706 add new variant of ActionMap::find_action()
This is more useful when replacing ActionManager::get_action
2018-12-05 17:33:05 -05:00
c2652437da
Skip silent sources on session-archive -- fixes #7699 2018-12-05 16:54:13 +01:00
863a6ade9e
Prevent endless read of silent files
This fixes issues with analysis and archiving that rely on a readable
to return 0.

Note however that createSilent() uses max_samplecnt (INT64_MAX) by
default. This relies on a region setting the length of its missing
source.
2018-12-05 16:04:29 +01:00
5f3672eef0
Use atomic read for an atomic variable
This probably no real world effect since there is a mutex in the
loop that acts as a memory barrier.
2018-12-04 22:12:43 +01:00
aa8128cdf5
Fix logic-error in d1cf2163: hide info for optimized builds 2018-12-04 17:06:13 +01:00
d1cf21634f
Special case Mixbus Chanstrip for load calculation
These processors don't have a UI, so their load stats are not easily
visible. The stats can still be queried via Lua API or DSP-load
overview window, so we retain this for debug builds.
2018-12-03 22:43:02 +01:00
b285559767
Consistent AU factory Preset IDs
Use AU's preset->presetNumber as identifier since std::map are sorted
this also indirectly sorts presets by preset-number. (user presets
start with a '/' and are listed first, sorted by name).

Since Presets are now identified by URI on session load (53a0199a0)
and AU user-presets can added/be removed (since ae4604a24b), simple
sequential numbering is no longer an option.
2018-12-03 20:45:06 +01:00
6877ac820b
Don't invalidate AU preset on load
This works around async parameter-changed signal emission when loading
an AU preset. A simple timeout is used to delay making the preset
as modified.
2018-12-02 02:04:21 +01:00
ae4604a24b
Implement AU plugin-preset removal 2018-12-02 01:37:33 +01:00
53a0199a06
Restore actual plugin-preset on session-load
This checks if the preset is actually available on the given system
and also sets the user-flag correctly.
2018-12-02 01:36:32 +01:00
3c7dea43af
Towards fixing AU preset invalidation
This is a step in the right direction: first load the preset and
only if preset-loading was successful mark it as loaded.

This still does not properly unset "parameter_changed_since_last_preset".
AU signals "kAudioUnitEvent_ParameterValueChange" later in the event-loop.
2018-12-02 00:26:57 +01:00
d53af10c92
AU: mark preset dirty when parameter changes 2018-12-01 05:36:33 +01:00
b66726fdc1
Fix AU preset handling
load_property_list() takes a file-path (not URI). Actually it's not
clear why we've ever used a `file:///` URI internally.
2018-12-01 05:33:26 +01:00
f443626daa
Fix a tiny memory leak, add_instant_xml() copies the node 2018-11-29 14:25:52 +01:00
fc24b9f0b7
Fix uninitialized variable 2018-11-29 02:10:08 +01:00
a22a501537
NO-OP: whitespace 2018-11-29 02:07:29 +01:00
1759d1c9c9
Fix a tiny memory-leak when calling vfork 2018-11-29 02:06:42 +01:00
6fc2804414
Disk I/O: only allocate midi-buffer if needed
This fixes a memory-leak (_midi_buf was allocated in DiskIOProc
but only delete in DiskReader). Also skip midi-refill early on
2018-11-29 02:05:26 +01:00
dfbda9e0f6
Fix a potential memory-corruption
Disk-writer run() can concurrently use the ringbuffer after it was
free()ed by the butler thread.
2018-11-28 21:41:30 +01:00
076e9fddd4
Remove ambiguous API implementation
* PortEngine::available() implementation
* AudioEngine::connected() wrapper

Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
2018-11-28 15:32:40 +01:00
81857a947c
Consolidate ambiguous engine API calls
available(), connected(), running() were ill-defined and
used interchangeably.
2018-11-28 15:24:47 +01:00
5531a440c9
Fix stuck connection block when template load fails.
Session::new_route_from_template() unconditionally calls
IO::disable_connecting(), and needs to be reverted likewise
(no RAII here).
2018-11-26 21:45:06 +01:00
dce81aecc5
Prevent deadlock when removing routes w/o engine 2018-11-26 03:31:02 +01:00
ae2a6175cc
Don't allow to add/remove monitor-section w/o engine
Adding/removing the Monitor section changes port-connections,
a port-engine is needed to establish connections.

Ideally we'd allow this and queue for connection changes. This
will however require deep changes.

Also toggling the monitor-section on/off/on w/o engine can later
result in failure to register ports. Due to lack of engine-signals
not all shared_ptr<> port references are dropped.
2018-11-26 03:15:14 +01:00
13c984c216
Fix various issues when the engine disconnects:
Previously Port::PortDrop was never handled.
The signal was disconnected directly when the connection
is re-used by Port::PortSignalDrop.

Ports::drop() was not called when the engine was stopped
or disconnected, and port-handles were not invalidated.

This lead to crashes whenever a port-related operation was performed
while the engine was stopped. e.g. adding/removing tracks or plugins
(latency recompute, notify port-engine) and various other operations.
2018-11-26 02:39:55 +01:00
cf98a75558
Do not allocate MIDI buffers for signal analysis
At this point in time MIDI buffers are vastly over-sized.
They include VST and LV2 event structure. This added about a MB per
plugin for no benefit.
2018-11-25 17:43:15 +01:00
5273c636ab
Fix Linux/PPC64 runtime
This fixes an error while loading shared libraries: libardour.so

  R_PPC64_ADDR32 reloc at 0x... for symbol `' out of range

Treating a local as an immediate value in asm code makes the library
non-relocatable.
2018-11-25 16:57:51 +01:00
3fd8dad9d6
Allow compilation with winpthreads -- closes #7691 2018-11-25 16:51:24 +01:00
01e0472481 Auditioner: check if removing synth succeeds
remove_processor() also calls drop_references, when successful.
2018-11-24 02:01:16 +01:00
948c5d0706 Handle some midnam edge-cases
Whitespace between XML nodes can result in "text" children.
Those need to be skipped in the patch-name list.
2018-11-23 22:43:26 +01:00
771ddcc86f NO-OP: whitespace and re-organization 2018-11-23 22:09:13 +01:00
2e3e183204 Load audition synth on demand
This saves some memory (gmsynth loads a 30MB soundfont), and also
re-initializes the synth every time to gm defaults in case some
.mid changes patches or parameters.
2018-11-23 22:00:04 +01:00
8c4c97d1e2 Update Fluidsynth to v2.0.2 2018-11-23 16:05:19 +01:00
afee22d5fa Add/remove source(s) in our MSVC project (audiographer) 2018-11-23 07:27:32 +00:00
b7317eb1b3 Add/remove source(s) in our MSVC project (libardour) 2018-11-23 07:25:54 +00:00
04fe6d6fb4 Amend prev. commit, actually remove (1.0 - x) as was documented 2018-11-22 21:05:03 +01:00
7ed37d67ff Backwards compatible sndfile support
SFC_SET_COMPRESSION_LEVEL was only added in 2012 and only available in
libsndfile 1.0.26 or later.
2018-11-22 20:36:41 +01:00
f795462100 Save LV2 Port Property values locally
This keeps track of lv2:Parameter properties modified with Port:Set,
currently file-paths.
2018-11-22 14:58:44 +01:00
9326ced760 Allow to revert export-format from disk
This allows to restore ProfileManager's ExportFormatSpec without
re-instantiating the ProfileManager.
2018-11-21 23:14:52 +01:00
3d366053e2 Set encoder quality for existing ExportFormatSpecs 2018-11-21 21:19:01 +01:00
d6a92dc521 Include session-metadata in external/ffmpeg export 2018-11-21 00:03:36 +01:00
d169864b5b Prepare session-metadata export to external command 2018-11-20 23:56:12 +01:00