13
0
Commit Graph

14639 Commits

Author SHA1 Message Date
ac50d66da9 rework name/canonical-name stuff for MIDI port info 2019-03-07 22:05:40 -07:00
15cd1163fc
Pass stderr mode properly to vfork wrapper 2019-03-07 23:51:04 +01:00
df8097e31e
Fix mp3 export
For reasons yet to be investigated, closing stderr when using a
pipe into ffmpeg results in ffmpeg's stderr being written
verbatim in the output file.
2019-03-07 23:51:01 +01:00
99462a50e6 save/restore MIDI port pretty names, but prefer backend pretty name if available 2019-03-07 13:30:54 -07:00
f7802325dc redesign naming and reload of MIDI port information (library edition) 2019-03-07 12:01:27 -07:00
8b212bfa12 a more nuanced version of the "do-not-automatically-disconnect-selection-follows-input 2019-03-07 12:01:27 -07:00
b774ef1e20
Remove unused fluidsynth setting (since fluidsynth 2.0) 2019-03-06 23:50:07 +01:00
ce961d73f3
Use unique midi-port names for Ardour's Dummy backend 2019-03-06 23:48:07 +01:00
8ccc45d44d
Ardour/ALSA allow multiple MIDI devices with the same name 2019-03-06 23:41:15 +01:00
51674b0307
Add missing newline on error message 2019-03-06 17:09:29 +01:00
a24252e0d0
Fix typo 2019-03-06 17:09:12 +01:00
Jan Lentfer
dfda5eab82 LCXL:Disable global mute/solo/recarm in device mode 2019-03-06 09:28:25 +01:00
1af123465c
Tweak session load
Listen positions are already correctly set when the route state
is restored. The Route directly uses the Config.

This skips duplicate calls to re-configure all processors on all Routes
during RCConfiguration::map_parameters() on session-load, twice
(pfl-position, listen-position)
2019-03-06 01:04:29 +01:00
883ee9c2a0
Allow to call set_state() on existing routes
Delaylines are not saved in the XML and internal-return is an
invisible processor not explicitly re-added when the state is restored.

They are [re]inserted during Route::setup_invisible_processors().
So this method need to be called after restoring processor state
(indirectly via configure_processors_unlocked as needed).

PS. During route creation this call happens explicitly and on session load
hookup_io() -> Route::output_change_handler() implicitly sets this up.
2019-03-06 00:57:49 +01:00
6a7750a55d
Tweak, optimize route setup
Speed up route creation: add_processor() takes a process-lock
and calls configure_processors() but this is done explicitly at the
end of init() already.
2019-03-06 00:03:46 +01:00
8b5437301b
Close stderr of child processes on MacOS
This fixes a bug on some modern mac systems. Related to
setup_logging() changing stderr to use ASL and write to com.apple.console.

When a forked application writes to stderr while ASL is used,
the child is terminated for some reason.
2019-03-05 22:52:53 +01:00
e1ffe7857f
Use enum for exec stderr parameter (1/2) 2019-03-05 22:49:15 +01:00
fdf74cf850
Enable de-click in disk-reader
This breaks auto-return and other post-transport locates until
such transport-states wait for de-click before seek().
2019-03-05 22:49:08 +01:00
f1dfc6d2a2 do not disconnect MidiPortSelection-flagged ports from everything when (MIDI track) selection changes
If the user manually connects such a port to something, then it is
up the user to disconnect it too
2019-03-04 18:23:06 -07:00
2cf57e9257
Fix recursive WriteLock crash due to signal emission
Route::processors_changed() signal connects to a same thread session-slot
Session::route_processors_changed() which can end up iterating over
Routes and Processors to re-calculate latency.
This takes a ReadLock after WriteLock, which eventually leads a duplicate
unlock and segfault.
2019-03-05 00:25:53 +01:00
bb6408d553
Make it compile again
ISO C++ forbids applying 'sizeof' to an expression of function type
2019-03-04 21:42:21 +01:00
d3657a8944 Add/remove source(s) in our MSVC project (audiographer) 2019-03-04 12:16:47 +00:00
6dad858620 remove double assignments and one debug trace output; tweak second debug trace output 2019-03-03 13:19:01 -07:00
7c820af42f debug trace output tweaks 2019-03-03 13:17:42 -07:00
cd3c72bffe remove debug output 2019-03-03 13:17:30 -07:00
033699a4cd remove conditional surrounding wait-for-master-to-catch-us logic 2019-03-03 13:16:30 -07:00
64b6ea4341 remove debug output 2019-03-03 13:15:12 -07:00
1568cd4411 do not initialize LTC timecode rate from session FPS 2019-03-03 11:39:56 -07:00
5b0d98abcd fix decision about sending MTC to be based not just on whether the transport master is locked, but whether it is external 2019-03-03 10:27:38 -07:00
564796b6c0 audioengine skip should trigger full LTC_Slave::reset(), not just feed silence to the decoder 2019-03-03 10:26:48 -07:00
920fc66540 LTC_Slave: count frames since reset 2019-03-03 10:26:22 -07:00
18f75c9f8a debug trace output tweaks (including avoiding stderr/stdout issues) 2019-03-03 10:24:02 -07:00
42f93487b5 LTC_Slave::reset() should change _current.speed back to zero 2019-03-03 10:22:22 -07:00
a000faaa47 NO-OP: brace position 2019-03-03 10:21:07 -07:00
cbc93c3487 NO-OP: brace position 2019-03-03 10:20:49 -07:00
7fd05ff051 expand scope of LTC_Slave::reset() to include more object state 2019-03-03 10:20:27 -07:00
5146d93853 fix semantics of LTC_Slave::locked() - we must have detected FPS to be considered locked 2019-03-03 10:19:45 -07:00
d2d349a30b fix initialization order 2019-03-03 10:19:06 -07:00
477628a884 rename LTC_Slave::prev_sample to prev_frame, correcting s/frame/sample/ changes 2019-03-03 10:17:46 -07:00
86cac37680 removed _locked property from TransportMaster (it's a method, not a property) 2019-03-03 10:12:08 -07:00
84aedbb532 remove ill-conceived use-session-timecode-format option 2019-03-03 09:59:05 -07:00
8b2a8fa42a
Remove another unused include 2019-03-02 14:32:54 +01:00
9a8464ff40
Add a signal to indicate VCA creation
As opposed to VCAAdded this is not emitted when re-loading a session
and only emitted when a user creates a new VCA.
2019-03-01 18:56:56 +01:00
1854a72b80
Revert Monitor-Section to be per session
This partially reverts 639dff3a7c. When loading a session,
the monitor-bus that was saved with the session is used.

This changes semantics of the monitor-section/config.

Config::set_use_monitor_bus(bool) is used to initiate a change!
Notification about the change is sent asynchronously by
Session::MonitorBusAddedOrRemoved

It is no longer possible to directly call add/remove_monitor_section()
and leave the session + config in an inconsistent state.
2019-03-01 16:45:42 +01:00
6064c75fd5
NO-OP: whitespace 2019-03-01 16:02:08 +01:00
63200eab05
Don't use c99 (amend 959947e7f8) 2019-03-01 16:02:08 +01:00
93d23f7e49 Add/remove source(s) in our MSVC project (libardour) 2019-03-01 08:39:50 +00:00
bc8286c7eb simplifications to the logic and additional comments for code that handles auto-return at transport stop 2019-02-28 17:18:28 -07:00
7ea51298da
NO-OP: whitespace 2019-02-28 23:57:44 +01:00
fc7dc6a214
Abort when Action cast failed
Previously the action-manager only called ::abort() when
an action could no be found. This add a further restriction
that the expected class must match.
2019-02-28 23:57:32 +01:00
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