Robin Gareus [Sun, 2 Dec 2018 00:38:14 +0000 (01:38 +0100)]
GUI Updates for plugin save/delete operations
Robin Gareus [Sun, 2 Dec 2018 00:37:33 +0000 (01:37 +0100)]
Implement AU plugin-preset removal
Robin Gareus [Sun, 2 Dec 2018 00:36:32 +0000 (01:36 +0100)]
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.
Robin Gareus [Sat, 1 Dec 2018 23:26:57 +0000 (00:26 +0100)]
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.
Robin Gareus [Sat, 1 Dec 2018 04:36:33 +0000 (05:36 +0100)]
AU: mark preset dirty when parameter changes
Robin Gareus [Sat, 1 Dec 2018 04:33:26 +0000 (05:33 +0100)]
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.
Robin Gareus [Sat, 1 Dec 2018 02:21:45 +0000 (03:21 +0100)]
Night of the typos III (amend prev 2 commits)
Robin Gareus [Sat, 1 Dec 2018 02:13:59 +0000 (03:13 +0100)]
Also use xjadeo 64bit windows version
Robin Gareus [Fri, 30 Nov 2018 23:56:20 +0000 (00:56 +0100)]
Harvid and xjadeo now feature 32/64bit window version(s)
Robin Gareus [Fri, 30 Nov 2018 17:10:35 +0000 (18:10 +0100)]
Freeze harvid/xjadeo PPC version
Paul Davis [Thu, 29 Nov 2018 22:36:19 +0000 (17:36 -0500)]
fix incorrect accumulation of export video options each time the dialog is used
Robin Gareus [Thu, 29 Nov 2018 13:25:52 +0000 (14:25 +0100)]
Fix a tiny memory leak, add_instant_xml() copies the node
Robin Gareus [Thu, 29 Nov 2018 13:25:22 +0000 (14:25 +0100)]
Delete temporary Window Proxy for dialogs
There are two cases:
(A) Proxy is created first, dialog is created later on demand
(B) Dialog is created and directly registers its window as proxy
In (B) the dialog is usually on the stack and destroyed when the
ArdourDialog instances leaves scope. In that case ~ArdourDialog()
is called and the proxy remained.
Destroying the proxy does destroy the registered window in ~WindowProxy()
If ArdourDialog's d'tor itself deletes the proxy it would recurse into
itself. Existing APIs e.g. drop_window() likewise delete the window and
cannot be safely called from ~ArdourDialog.
Robin Gareus [Thu, 29 Nov 2018 01:10:08 +0000 (02:10 +0100)]
Fix uninitialized variable
Robin Gareus [Thu, 29 Nov 2018 01:07:29 +0000 (02:07 +0100)]
NO-OP: whitespace
Robin Gareus [Thu, 29 Nov 2018 01:06:42 +0000 (02:06 +0100)]
Fix a tiny memory-leak when calling vfork
Robin Gareus [Thu, 29 Nov 2018 01:05:26 +0000 (02:05 +0100)]
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
Robin Gareus [Wed, 28 Nov 2018 20:41:08 +0000 (21:41 +0100)]
Fix a potential memory-corruption
Disk-writer run() can concurrently use the ringbuffer after it was
free()ed by the butler thread.
Robin Gareus [Wed, 28 Nov 2018 14:32:40 +0000 (15:32 +0100)]
Remove ambiguous API implementation
* PortEngine::available() implementation
* AudioEngine::connected() wrapper
Eventually we may re-introduce PortEngine::available along
with a libardour internal port-engine.
Robin Gareus [Wed, 28 Nov 2018 14:24:47 +0000 (15:24 +0100)]
Consolidate ambiguous engine API calls
available(), connected(), running() were ill-defined and
used interchangeably.
Robin Gareus [Wed, 28 Nov 2018 14:19:39 +0000 (15:19 +0100)]
Consolidate API, prefer ->running()
Robin Gareus [Wed, 28 Nov 2018 14:17:57 +0000 (15:17 +0100)]
Consolidate two more engine-checks
Robin Gareus [Wed, 28 Nov 2018 13:56:04 +0000 (14:56 +0100)]
NO-OP: Clarify function name
Robin Gareus [Tue, 27 Nov 2018 23:02:57 +0000 (00:02 +0100)]
Use central method to check for engine for processor operations
Robin Gareus [Tue, 27 Nov 2018 23:01:50 +0000 (00:01 +0100)]
Use central method to check for engine where required
These are generally places where tracks/busses are created or port
connections change.
Robin Gareus [Tue, 27 Nov 2018 22:57:53 +0000 (23:57 +0100)]
Prepare central engine check and user notification
Robin Gareus [Tue, 27 Nov 2018 12:19:34 +0000 (13:19 +0100)]
Catch potential exceptions when adding tracks/busses
Robin Gareus [Tue, 27 Nov 2018 12:18:39 +0000 (13:18 +0100)]
GUI limitation: Require engine to add/remove tracks/busses
Robin Gareus [Mon, 26 Nov 2018 20:45:06 +0000 (21:45 +0100)]
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).
Robin Gareus [Mon, 26 Nov 2018 02:31:02 +0000 (03:31 +0100)]
Prevent deadlock when removing routes w/o engine
Robin Gareus [Mon, 26 Nov 2018 02:06:22 +0000 (03:06 +0100)]
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.
Robin Gareus [Mon, 26 Nov 2018 01:39:55 +0000 (02:39 +0100)]
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.
Robin Gareus [Sun, 25 Nov 2018 23:32:29 +0000 (00:32 +0100)]
Fix a double-free, introduced in
b06713bd8e57
~OptionEditor() already frees all components on every page.
Robin Gareus [Sun, 25 Nov 2018 16:22:46 +0000 (17:22 +0100)]
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.
Robin Gareus [Sun, 25 Nov 2018 15:57:51 +0000 (16:57 +0100)]
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.
Robin Gareus [Sun, 25 Nov 2018 15:51:24 +0000 (16:51 +0100)]
Allow compilation with winpthreads -- closes #7691
Robin Gareus [Sun, 25 Nov 2018 15:40:28 +0000 (16:40 +0100)]
Bundle x42-limiter with binaries
Robin Gareus [Sat, 24 Nov 2018 01:01:16 +0000 (02:01 +0100)]
Auditioner: check if removing synth succeeds
remove_processor() also calls drop_references, when successful.
Robin Gareus [Fri, 23 Nov 2018 21:43:26 +0000 (22:43 +0100)]
Handle some midnam edge-cases
Whitespace between XML nodes can result in "text" children.
Those need to be skipped in the patch-name list.
Robin Gareus [Fri, 23 Nov 2018 21:09:13 +0000 (22:09 +0100)]
NO-OP: whitespace and re-organization
Robin Gareus [Fri, 23 Nov 2018 21:00:04 +0000 (22:00 +0100)]
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.
Robin Gareus [Fri, 23 Nov 2018 13:36:52 +0000 (14:36 +0100)]
Update Fluidsynth to v2.0.2
John Emmas [Fri, 23 Nov 2018 07:28:17 +0000 (07:28 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Fri, 23 Nov 2018 07:27:32 +0000 (07:27 +0000)]
Add/remove source(s) in our MSVC project (audiographer)
John Emmas [Fri, 23 Nov 2018 07:25:54 +0000 (07:25 +0000)]
Add/remove source(s) in our MSVC project (libardour)
Robin Gareus [Thu, 22 Nov 2018 20:05:03 +0000 (21:05 +0100)]
Amend prev. commit, actually remove (1.0 - x) as was documented
Robin Gareus [Thu, 22 Nov 2018 19:36:41 +0000 (20:36 +0100)]
Backwards compatible sndfile support
SFC_SET_COMPRESSION_LEVEL was only added in 2012 and only available in
libsndfile 1.0.26 or later.
Robin Gareus [Thu, 22 Nov 2018 14:02:35 +0000 (15:02 +0100)]
Extend LV2UI-Request-Parameter File/Path GUI
This is a bit of a playground implementation, the various `#if 0`
code-blocks should be removed.
Robin Gareus [Thu, 22 Nov 2018 13:58:44 +0000 (14:58 +0100)]
Save LV2 Port Property values locally
This keeps track of lv2:Parameter properties modified with Port:Set,
currently file-paths.
Robin Gareus [Thu, 22 Nov 2018 05:12:54 +0000 (06:12 +0100)]
Fix LV2UI_Request_Parameter Feature URI
Robin Gareus [Wed, 21 Nov 2018 22:21:52 +0000 (23:21 +0100)]
Update codec-quality display when ExportFormat changes
Robin Gareus [Wed, 21 Nov 2018 22:21:13 +0000 (23:21 +0100)]
Properly revert FormatSpec changes on "cancel"
Previously the ExportFormatDialog saved changes to disk on "save" but
did nothing on "cancel". The format changed *remained* modified in
memory, just not saved (until the ExportProfileManager is re-instantiated)
Robin Gareus [Wed, 21 Nov 2018 22:14:52 +0000 (23:14 +0100)]
Allow to revert export-format from disk
This allows to restore ProfileManager's ExportFormatSpec without
re-instantiating the ProfileManager.
Robin Gareus [Wed, 21 Nov 2018 20:19:01 +0000 (21:19 +0100)]
Set encoder quality for existing ExportFormatSpecs
Robin Gareus [Wed, 21 Nov 2018 01:26:33 +0000 (02:26 +0100)]
Early prototype for _LV2UI_Request_Parameter extension
Olivier Humbert [Tue, 20 Nov 2018 22:13:17 +0000 (23:13 +0100)]
Fix a window size potential issue
Robin Gareus [Tue, 20 Nov 2018 23:05:13 +0000 (00:05 +0100)]
Update GUI, use/remove meta-data methods that have been migrated to the backend
Robin Gareus [Tue, 20 Nov 2018 23:03:36 +0000 (00:03 +0100)]
Include session-metadata in external/ffmpeg export
Robin Gareus [Tue, 20 Nov 2018 22:56:12 +0000 (23:56 +0100)]
Prepare session-metadata export to external command
Robin Gareus [Tue, 20 Nov 2018 02:35:25 +0000 (03:35 +0100)]
Vorbis Quality Config GUI
Robin Gareus [Tue, 20 Nov 2018 02:21:17 +0000 (03:21 +0100)]
Implement vorbis encoder quality
This also prepares for codec-quality defaults, but
ExportFormatSpecification does not yet set those for previously unset
or new formats/presets.
Robin Gareus [Mon, 19 Nov 2018 23:38:18 +0000 (00:38 +0100)]
Handle port-export report of unplayable files
Robin Gareus [Mon, 19 Nov 2018 23:21:51 +0000 (00:21 +0100)]
Add some mp3 export presets
Robin Gareus [Mon, 19 Nov 2018 22:45:26 +0000 (23:45 +0100)]
FFMPEG/MP3 encoder quality select GUI
Robin Gareus [Mon, 19 Nov 2018 22:44:50 +0000 (23:44 +0100)]
Implement FFMPEG/MP3 export-format spec and profile
Robin Gareus [Mon, 19 Nov 2018 21:26:16 +0000 (22:26 +0100)]
Prepare export-format codec-quality setting
Robin Gareus [Mon, 19 Nov 2018 11:50:38 +0000 (12:50 +0100)]
Fix Windows and Mac Builds
* missing include for locale_to_utf8 (amend
4c6ff5f7e7)
* avoid void* arithemtic (amend
103ef2ba)
Robin Gareus [Mon, 19 Nov 2018 04:21:17 +0000 (05:21 +0100)]
Initial backend support for external export encoder
This adds an experimental pipe to ffmpeg to encode mp3. Currently
quality is hardcoded and various aspects remain to be implemented.
However, it is sufficient for initial testing.
Robin Gareus [Mon, 19 Nov 2018 02:30:40 +0000 (03:30 +0100)]
Add Pipe-to-command export backend
A first step towards allowing external encoders without intermediate
temporary file.
Robin Gareus [Mon, 19 Nov 2018 02:20:11 +0000 (03:20 +0100)]
Use libardour video-tool path (2/2)
Robin Gareus [Mon, 19 Nov 2018 01:42:52 +0000 (02:42 +0100)]
Move video-tool paths to libardour (1/2)
This is in preparation to allow calling ffmpeg, or similar (sox, lame,..)
directly from libardour.
Robin Gareus [Mon, 19 Nov 2018 01:26:43 +0000 (02:26 +0100)]
Add API to write raw data to child processes.
Robin Gareus [Fri, 16 Nov 2018 23:13:12 +0000 (00:13 +0100)]
Lower impact of periodic backup script.
Robin Gareus [Fri, 16 Nov 2018 23:12:43 +0000 (00:12 +0100)]
Update classkeys to match new total LuaSignal count (windows only)
Robin Gareus [Fri, 16 Nov 2018 23:12:10 +0000 (00:12 +0100)]
Add a 1Hz Lua Callback Signal
Robin Gareus [Thu, 15 Nov 2018 22:05:07 +0000 (23:05 +0100)]
Properly limit generic-UI window size
Initially screen() is not unset, the window only exists after the
scroller has been realized. Also prevent initially over-sized window.
Robin Gareus [Mon, 12 Nov 2018 22:59:09 +0000 (23:59 +0100)]
Add headless split benchmark script
Robin Gareus [Mon, 12 Nov 2018 22:14:48 +0000 (23:14 +0100)]
LuaSession: allow multi-line commands and functions
Len Ovens [Tue, 13 Nov 2018 06:29:27 +0000 (22:29 -0800)]
Make foldback bus match foldback sends namewise
to avoid confusion with listener sends or monitor bus
Len Ovens [Tue, 13 Nov 2018 05:40:29 +0000 (21:40 -0800)]
Changed send/deliver role "Personal" to "Foldback" so bus type can match
Len Ovens [Thu, 8 Nov 2018 02:21:40 +0000 (18:21 -0800)]
OSC: New personal monitor buses no longer need to be hidden
Len Ovens [Thu, 8 Nov 2018 02:09:50 +0000 (18:09 -0800)]
OSC: logic thinko fix
Robin Gareus [Mon, 12 Nov 2018 01:30:46 +0000 (02:30 +0100)]
Fix load/save Lua Editor scripts
* callbacks are unregistered during session-deletion, skip saving them
during session destruction.
* prevent duplicate state restore, re-load script with the session, not
window instance.
Robin Gareus [Mon, 12 Nov 2018 01:06:23 +0000 (02:06 +0100)]
Fix saving Lua Callbacks when un/register succeeds
This fix an issue introduce in
9971e718
Robin Gareus [Mon, 12 Nov 2018 00:58:12 +0000 (01:58 +0100)]
amend
02f92300, skip backup snapshot when recording
Robin Gareus [Sun, 11 Nov 2018 20:28:15 +0000 (21:28 +0100)]
Add Lua script to benchmark region-split operation
Robin Gareus [Sun, 11 Nov 2018 20:26:50 +0000 (21:26 +0100)]
Add callback script to periodically save a backup snapshot
Jan Lentfer [Thu, 8 Nov 2018 17:01:08 +0000 (18:01 +0100)]
LCXL: some final fixes
Robin Gareus [Sun, 11 Nov 2018 18:51:56 +0000 (19:51 +0100)]
Another engine dialog edge-case fix to set the samplerate
Honor the sesssion's sample-rate when showing the dialog with the engine
stopped. This can happen when then engine dies or hide/show the dialog
after manually stopping the engine.
Robin Gareus [Sun, 11 Nov 2018 17:50:01 +0000 (18:50 +0100)]
Fix sample-rate override when changing backends or devices
This indirectly honors session_loaded() and prevents that restoring
engine-state can change the sample-rate dropdown when a session is loaded.
Robin Gareus [Sun, 11 Nov 2018 02:38:34 +0000 (03:38 +0100)]
Fix playhead smoothing when auditioning.
Don't use timer to keep moving the playhead when auditioning.
This fixes playhead jiggling during audition.
Len Ovens [Wed, 7 Nov 2018 23:35:33 +0000 (15:35 -0800)]
OSC: specify which stiripable type we want
Len Ovens [Wed, 7 Nov 2018 21:05:05 +0000 (13:05 -0800)]
Change get_routes to get_routelist where appropriate.
Len Ovens [Wed, 7 Nov 2018 21:02:49 +0000 (13:02 -0800)]
get_stripables and get_routelist are now presentationinfo aware
Robin Gareus [Wed, 7 Nov 2018 22:37:10 +0000 (23:37 +0100)]
Consolidate VST Plugin Info
This unifies common PluginManager VST code to construct *VSTPluginInfo
and also provides a dedicated is_instrument() method for VST plugins.
Robin Gareus [Wed, 7 Nov 2018 22:05:54 +0000 (23:05 +0100)]
Force VST category to be "Instrument" for instruments.
This way it is picked up by the default PluginInfo::is_instrument()
method.
Robin Gareus [Wed, 7 Nov 2018 20:37:59 +0000 (21:37 +0100)]
Honor effFlagsIsSynth and always assume those VSTs are instruments
This will incorrectly list some vocders or reaktor and the likes of
plugins with audio + midi input as Instruments IFF they also announce
effFlagsIsSynth flag.
NB. this is a first step only. we still need to override PluginInfo
Robin Gareus [Wed, 7 Nov 2018 18:53:23 +0000 (19:53 +0100)]
GUI options to select FLAC as media format
Robin Gareus [Wed, 7 Nov 2018 18:21:39 +0000 (19:21 +0100)]
Add support for recording to .flac
Robin Gareus [Wed, 7 Nov 2018 18:21:10 +0000 (19:21 +0100)]
NO-OP: whitespace