ardour.git
5 years agoFix some more Gtk::Menu memory leaks
Robin Gareus [Fri, 8 Mar 2019 00:44:30 +0000 (01:44 +0100)]
Fix some more Gtk::Menu memory leaks

5 years agoPass stderr mode properly to vfork wrapper
Robin Gareus [Thu, 7 Mar 2019 20:40:14 +0000 (21:40 +0100)]
Pass stderr mode properly to vfork wrapper

5 years agoFix mp3 export
Robin Gareus [Thu, 7 Mar 2019 20:39:51 +0000 (21:39 +0100)]
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.

5 years agoRequest for comment: Bug or feature?
Robin Gareus [Thu, 7 Mar 2019 16:00:47 +0000 (17:00 +0100)]
Request for comment: Bug or feature?

5 years agoFix some Gtk::Menu memory leaks
Robin Gareus [Thu, 7 Mar 2019 16:02:12 +0000 (17:02 +0100)]
Fix some Gtk::Menu memory leaks

A Gtk::manage()d widget will be deleted when its parent container
is destroyed. Top-level context menus are not inside a container and
hence need to be manually deallocated.

The solution here is to use a shared Gtk::Menu pointer that is
centrally de/re-allocated.

This works because the GUI is single-threaded and at most one
context menu is visible at a time.

5 years agoCleanup Editor/Marker context-menu
Robin Gareus [Thu, 7 Mar 2019 20:24:15 +0000 (21:24 +0100)]
Cleanup Editor/Marker context-menu

This could have caused crashes previously:
::build_range_marker_menu() may have created range_marker_menu
while the GUI wanted transport_marker_menu.

5 years agoPrefer using RAII to suspend signals
Robin Gareus [Thu, 7 Mar 2019 15:42:04 +0000 (16:42 +0100)]
Prefer using RAII to suspend signals

5 years agoFix some Gtk::Menu related memory leaks
Robin Gareus [Thu, 7 Mar 2019 15:40:16 +0000 (16:40 +0100)]
Fix some Gtk::Menu related memory leaks

A Gtk::manage()d widget will be deleted when its parent container
is destroyed. Top-level context menus are not inside a container and
hence need to be manually deallocated.

This adds explicit delete calls for menus where there is a
member variable reference to the Menu.

5 years agoRemove cruft: unused members
Robin Gareus [Thu, 7 Mar 2019 15:07:02 +0000 (16:07 +0100)]
Remove cruft: unused members

5 years agoRemove unused region_edit_menu & edit-point action
Robin Gareus [Thu, 7 Mar 2019 15:04:05 +0000 (16:04 +0100)]
Remove unused region_edit_menu & edit-point action

5 years agosave/restore MIDI port pretty names, but prefer backend pretty name if available
Paul Davis [Thu, 7 Mar 2019 20:30:54 +0000 (13:30 -0700)]
save/restore MIDI port pretty names, but prefer backend pretty name if available

5 years agoselection must be enabled to allow editable columns :((
Paul Davis [Thu, 7 Mar 2019 20:30:24 +0000 (13:30 -0700)]
selection must be enabled to allow editable columns :((

5 years agoredesign naming and reload of MIDI port information (GUI edition)
Paul Davis [Thu, 7 Mar 2019 19:01:03 +0000 (12:01 -0700)]
redesign naming and reload of MIDI port information (GUI edition)

5 years agoredesign naming and reload of MIDI port information (library edition)
Paul Davis [Thu, 7 Mar 2019 19:00:51 +0000 (12:00 -0700)]
redesign naming and reload of MIDI port information (library edition)

5 years agoa more nuanced version of the "do-not-automatically-disconnect-selection-follows...
Paul Davis [Thu, 7 Mar 2019 02:46:51 +0000 (19:46 -0700)]
a more nuanced version of the "do-not-automatically-disconnect-selection-follows-input

5 years agoFix thinko: if the entered_regionview is already part of the selection, do not treat...
Ben Loftis [Thu, 7 Mar 2019 15:50:00 +0000 (09:50 -0600)]
Fix thinko:  if the entered_regionview is already part of the selection, do not treat it as a special case when splitting.

5 years agoRemove unused fluidsynth setting (since fluidsynth 2.0)
Robin Gareus [Wed, 6 Mar 2019 22:50:07 +0000 (23:50 +0100)]
Remove unused fluidsynth setting (since fluidsynth 2.0)

5 years agoUse unique midi-port names for Ardour's Dummy backend
Robin Gareus [Wed, 6 Mar 2019 22:48:07 +0000 (23:48 +0100)]
Use unique midi-port names for Ardour's Dummy backend

5 years agoArdour/ALSA allow multiple MIDI devices with the same name
Robin Gareus [Wed, 6 Mar 2019 22:41:15 +0000 (23:41 +0100)]
Ardour/ALSA allow multiple MIDI devices with the same name

5 years agoRetain generated plugin menu
Robin Gareus [Wed, 6 Mar 2019 20:21:29 +0000 (21:21 +0100)]
Retain generated plugin menu

Fixes occasional crash when Menu is re-used.
PluginSelector::plugin_menu() is called every time the processor box
shows the context-menu. The provided menu needs to remain valid
regardless of usage.

5 years agoAdd missing newline on error message
Robin Gareus [Wed, 6 Mar 2019 16:09:29 +0000 (17:09 +0100)]
Add missing newline on error message

5 years agoFix typo
Robin Gareus [Wed, 6 Mar 2019 16:09:12 +0000 (17:09 +0100)]
Fix typo

5 years agoLCXL:Disable global mute/solo/recarm in device mode
Jan Lentfer [Wed, 6 Mar 2019 08:12:08 +0000 (09:12 +0100)]
LCXL:Disable global mute/solo/recarm in device mode

5 years agoTweak session load
Robin Gareus [Wed, 6 Mar 2019 00:01:03 +0000 (01:01 +0100)]
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)

5 years agoAllow to call set_state() on existing routes
Robin Gareus [Tue, 5 Mar 2019 23:57:49 +0000 (00:57 +0100)]
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.

5 years agoProperly map MonitorSection state on session load
Robin Gareus [Tue, 5 Mar 2019 23:47:59 +0000 (00:47 +0100)]
Properly map MonitorSection state on session load

5 years agoTweak, optimize route setup
Robin Gareus [Tue, 5 Mar 2019 23:03:46 +0000 (00:03 +0100)]
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.

5 years agoClose stderr of child processes on MacOS
Robin Gareus [Tue, 5 Mar 2019 18:11:10 +0000 (19:11 +0100)]
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.

5 years agoUse enum for exec stderr parameter (2/2)
Robin Gareus [Tue, 5 Mar 2019 18:06:29 +0000 (19:06 +0100)]
Use enum for exec stderr parameter (2/2)

5 years agoUse enum for exec stderr parameter (1/2)
Robin Gareus [Tue, 5 Mar 2019 18:06:15 +0000 (19:06 +0100)]
Use enum for exec stderr parameter (1/2)

5 years agoEnable de-click in disk-reader
Robin Gareus [Tue, 5 Mar 2019 13:44:47 +0000 (14:44 +0100)]
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().

5 years agodo not disconnect MidiPortSelection-flagged ports from everything when (MIDI track...
Paul Davis [Tue, 5 Mar 2019 01:23:06 +0000 (18:23 -0700)]
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

5 years agoFix recursive WriteLock crash due to signal emission
Robin Gareus [Mon, 4 Mar 2019 23:25:53 +0000 (00:25 +0100)]
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.

5 years agoMake it compile again
Robin Gareus [Mon, 4 Mar 2019 20:42:21 +0000 (21:42 +0100)]
Make it compile again

ISO C++ forbids applying 'sizeof' to an expression of function type

5 years agoAdd/remove source(s) in our MSVC project (audiographer)
John Emmas [Mon, 4 Mar 2019 12:16:47 +0000 (12:16 +0000)]
Add/remove source(s) in our MSVC project (audiographer)

5 years agoremove double assignments and one debug trace output; tweak second debug trace output
Paul Davis [Sun, 3 Mar 2019 20:19:01 +0000 (13:19 -0700)]
remove double assignments and one debug trace output; tweak second debug trace output

5 years agodebug trace output tweaks
Paul Davis [Sun, 3 Mar 2019 20:17:42 +0000 (13:17 -0700)]
debug trace output tweaks

5 years agoremove debug output
Paul Davis [Sun, 3 Mar 2019 20:17:30 +0000 (13:17 -0700)]
remove debug output

5 years agoremove conditional surrounding wait-for-master-to-catch-us logic
Paul Davis [Sun, 3 Mar 2019 20:16:30 +0000 (13:16 -0700)]
remove conditional surrounding wait-for-master-to-catch-us logic

5 years agoremove debug output
Paul Davis [Sun, 3 Mar 2019 20:15:12 +0000 (13:15 -0700)]
remove debug output

5 years agodo not initialize LTC timecode rate from session FPS
Paul Davis [Sun, 3 Mar 2019 18:39:56 +0000 (11:39 -0700)]
do not initialize LTC timecode rate from session FPS

5 years agofix decision about sending MTC to be based not just on whether the transport master...
Paul Davis [Sun, 3 Mar 2019 17:27:38 +0000 (10:27 -0700)]
fix decision about sending MTC to be based not just on whether the transport master is locked, but whether it is external

5 years agoaudioengine skip should trigger full LTC_Slave::reset(), not just feed silence to...
Paul Davis [Sun, 3 Mar 2019 17:26:48 +0000 (10:26 -0700)]
audioengine skip should trigger full LTC_Slave::reset(), not just feed silence to the decoder

5 years agoLTC_Slave: count frames since reset
Paul Davis [Sun, 3 Mar 2019 17:26:22 +0000 (10:26 -0700)]
LTC_Slave: count frames since reset

5 years agodebug trace output tweaks (including avoiding stderr/stdout issues)
Paul Davis [Sun, 3 Mar 2019 17:24:02 +0000 (10:24 -0700)]
debug trace output tweaks (including avoiding stderr/stdout issues)

5 years agoLTC_Slave::reset() should change _current.speed back to zero
Paul Davis [Sun, 3 Mar 2019 17:22:22 +0000 (10:22 -0700)]
LTC_Slave::reset() should change _current.speed back to zero

5 years agoNO-OP: brace position
Paul Davis [Sun, 3 Mar 2019 17:21:07 +0000 (10:21 -0700)]
NO-OP: brace position

5 years agoNO-OP: brace position
Paul Davis [Sun, 3 Mar 2019 17:20:49 +0000 (10:20 -0700)]
NO-OP: brace position

5 years agoexpand scope of LTC_Slave::reset() to include more object state
Paul Davis [Sun, 3 Mar 2019 17:20:27 +0000 (10:20 -0700)]
expand scope of LTC_Slave::reset() to include more object state

5 years agofix semantics of LTC_Slave::locked() - we must have detected FPS to be considered...
Paul Davis [Sun, 3 Mar 2019 17:19:45 +0000 (10:19 -0700)]
fix semantics of LTC_Slave::locked() - we must have detected FPS to be considered locked

5 years agofix initialization order
Paul Davis [Sun, 3 Mar 2019 17:19:06 +0000 (10:19 -0700)]
fix initialization order

5 years agorename LTC_Slave::prev_sample to prev_frame, correcting s/frame/sample/ changes
Paul Davis [Sun, 3 Mar 2019 17:17:46 +0000 (10:17 -0700)]
rename LTC_Slave::prev_sample to prev_frame, correcting s/frame/sample/ changes

5 years agoremoved _locked property from TransportMaster (it's a method, not a property)
Paul Davis [Sun, 3 Mar 2019 17:12:08 +0000 (10:12 -0700)]
removed _locked property from TransportMaster (it's a method, not a property)

5 years agoremove ill-conceived use-session-timecode-format option
Paul Davis [Sun, 3 Mar 2019 16:59:05 +0000 (09:59 -0700)]
remove ill-conceived use-session-timecode-format option

5 years agoAdd GUI option to include session-meta-data when exporting mp3
Robin Gareus [Sat, 2 Mar 2019 13:39:10 +0000 (14:39 +0100)]
Add GUI option to include session-meta-data when exporting mp3

5 years agoFFmpeg/MP3 export supports tagging
Robin Gareus [Sat, 2 Mar 2019 13:38:19 +0000 (14:38 +0100)]
FFmpeg/MP3 export supports tagging

5 years agoRemove another unused include
Robin Gareus [Sat, 2 Mar 2019 13:32:54 +0000 (14:32 +0100)]
Remove another unused include

5 years agoShow VCA pane when a new VCA is created.
Robin Gareus [Fri, 1 Mar 2019 18:02:38 +0000 (19:02 +0100)]
Show VCA pane when a new VCA is created.

5 years agoAdd a signal to indicate VCA creation
Robin Gareus [Fri, 1 Mar 2019 17:56:56 +0000 (18:56 +0100)]
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.

5 years agoRevert "Show VCA pane whan adding a VCA"
Robin Gareus [Fri, 1 Mar 2019 17:44:52 +0000 (18:44 +0100)]
Revert "Show VCA pane whan adding a VCA"

This reverts commit 9a0260148d7c582037bdc13aab6b412379638ab3.

5 years agoShow VCA pane whan adding a VCA
Robin Gareus [Fri, 1 Mar 2019 17:00:11 +0000 (18:00 +0100)]
Show VCA pane whan adding a VCA

5 years agoPrefix an asterisk to indicate plugin replication
Robin Gareus [Fri, 1 Mar 2019 16:48:46 +0000 (17:48 +0100)]
Prefix an asterisk to indicate plugin replication

This saves space compared to "(NxN) ", especially with narrow
mixer-strips

5 years agoReplicated plugin instances may or may not be mono
Robin Gareus [Fri, 1 Mar 2019 16:43:44 +0000 (17:43 +0100)]
Replicated plugin instances may or may not be mono

5 years agoGUI updates to handle monitor-section changes
Robin Gareus [Fri, 1 Mar 2019 15:51:08 +0000 (16:51 +0100)]
GUI updates to handle monitor-section changes

This fixes various MS related action sensitivity issues, as well
as action-states.

Also manually adding a monitor-section to a session now always
immediately shows it, regardless of prior ToggleMonitorSection
visibility.

5 years agoUpdate scripts, monitor-section API change
Robin Gareus [Fri, 1 Mar 2019 15:46:08 +0000 (16:46 +0100)]
Update scripts, monitor-section API change

5 years agoRevert Monitor-Section to be per session
Robin Gareus [Fri, 1 Mar 2019 15:45:42 +0000 (16:45 +0100)]
Revert Monitor-Section to be per session

This partially reverts 639dff3a7c7. 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.

5 years agoNO-OP: whitespace
Robin Gareus [Fri, 1 Mar 2019 14:59:41 +0000 (15:59 +0100)]
NO-OP: whitespace

5 years agoDon't use c99 (amend 959947e7f84a)
Robin Gareus [Fri, 1 Mar 2019 14:51:17 +0000 (15:51 +0100)]
Don't use c99 (amend 959947e7f84a)

5 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Fri, 1 Mar 2019 08:40:18 +0000 (08:40 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

5 years agoAdd/remove source(s) in our MSVC project (libardour)
John Emmas [Fri, 1 Mar 2019 08:39:50 +0000 (08:39 +0000)]
Add/remove source(s) in our MSVC project (libardour)

5 years agosimplifications to the logic and additional comments for code that handles auto-retur...
Paul Davis [Fri, 1 Mar 2019 00:18:08 +0000 (17:18 -0700)]
simplifications to the logic and additional comments for code that handles auto-return at transport stop

5 years agoauto-return is still available if using JACK transport
Paul Davis [Thu, 28 Feb 2019 23:46:42 +0000 (16:46 -0700)]
auto-return is still available if using JACK transport

5 years agoRemove unused RulerType
Robin Gareus [Thu, 28 Feb 2019 23:52:36 +0000 (00:52 +0100)]
Remove unused RulerType

5 years agoNO-OP: whitespace
Robin Gareus [Thu, 28 Feb 2019 22:57:44 +0000 (23:57 +0100)]
NO-OP: whitespace

5 years agoAbort when Action cast failed
Robin Gareus [Thu, 28 Feb 2019 22:57:32 +0000 (23:57 +0100)]
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.

5 years agoConsolidate ToggleAction cast, use new API
Robin Gareus [Thu, 28 Feb 2019 22:54:42 +0000 (23:54 +0100)]
Consolidate ToggleAction cast, use new API

Furthermore we can assume that all Actions are registered and
Unregistered actions will ::abort() execution.

5 years agoInitialize per session instant state
Robin Gareus [Thu, 28 Feb 2019 21:56:35 +0000 (22:56 +0100)]
Initialize per session instant state

Per session (instant.xml) GUI options do not have a sigc::slot<> backed
configuration interface to initialize the Actions.

This fixes a first-time start issue (no instant.xml) where GUI panes
may be visible (default) while the actions are "off" (default).

This is a tentative solution, instant.xml backed ToggleAction
initialization needs to be consolidated somehow.

5 years agox-fade uses cairo-generated icons, remove XPM
Robin Gareus [Thu, 28 Feb 2019 20:30:45 +0000 (21:30 +0100)]
x-fade uses cairo-generated icons, remove XPM

5 years agoNO-OP: whitespace (remove vi modelines)
Robin Gareus [Thu, 28 Feb 2019 19:56:23 +0000 (20:56 +0100)]
NO-OP: whitespace (remove vi modelines)

5 years agoConsolidate gdither noise code
Robin Gareus [Thu, 28 Feb 2019 19:40:45 +0000 (20:40 +0100)]
Consolidate gdither noise code

5 years agoAmazing PCM byte/array convert functions, unused.
Robin Gareus [Thu, 28 Feb 2019 17:52:10 +0000 (18:52 +0100)]
Amazing PCM byte/array convert functions, unused.

5 years agoThe end of long and winding "road to compiling" cdc2d055f
Robin Gareus [Thu, 28 Feb 2019 17:41:57 +0000 (18:41 +0100)]
The end of long and winding "road to compiling" cdc2d055f

5 years agoRemove unused RDF in RIFF prototype
Robin Gareus [Thu, 28 Feb 2019 17:30:06 +0000 (18:30 +0100)]
Remove unused RDF in RIFF prototype

5 years agoRemove even more cruft
Robin Gareus [Thu, 28 Feb 2019 17:28:44 +0000 (18:28 +0100)]
Remove even more cruft

http://lv2plug.in/ns/dev/host-info# doesn't exist, and nobody needs
a config.guess from 2005 :)

5 years agoMove bug-tool into the Python Museum
Robin Gareus [Thu, 28 Feb 2019 17:21:05 +0000 (18:21 +0100)]
Move bug-tool into the Python Museum

5 years agoRemove ancient, unmaintained xcode project files
Robin Gareus [Thu, 28 Feb 2019 17:12:44 +0000 (18:12 +0100)]
Remove ancient, unmaintained xcode project files

5 years agoRemove cruft, unused files
Robin Gareus [Thu, 28 Feb 2019 17:04:42 +0000 (18:04 +0100)]
Remove cruft, unused files

5 years agoClean up remnants from a half eaten apple
Robin Gareus [Thu, 28 Feb 2019 17:00:08 +0000 (18:00 +0100)]
Clean up remnants from a half eaten apple

5 years agoAdd phase labels -180..180 deg for analysis display
Robin Gareus [Thu, 28 Feb 2019 03:15:37 +0000 (04:15 +0100)]
Add phase labels -180..180 deg for analysis display

5 years agoNO-OP: whitespace
Robin Gareus [Thu, 28 Feb 2019 02:43:22 +0000 (03:43 +0100)]
NO-OP: whitespace

5 years agoNO-OP: whitespace
Robin Gareus [Thu, 28 Feb 2019 02:12:04 +0000 (03:12 +0100)]
NO-OP: whitespace

5 years agoFix analysis plugin when using plugin-presets
Robin Gareus [Thu, 28 Feb 2019 03:19:16 +0000 (04:19 +0100)]
Fix analysis plugin when using plugin-presets

5 years agoAllow to special case plugins used for IR analysis
Robin Gareus [Thu, 28 Feb 2019 03:46:25 +0000 (04:46 +0100)]
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.

5 years agoCopy state when replicating an AU plugin
Robin Gareus [Thu, 28 Feb 2019 03:47:48 +0000 (04:47 +0100)]
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

5 years agoProperly copy LV2 plugin instances on replication
Robin Gareus [Thu, 28 Feb 2019 03:17:54 +0000 (04:17 +0100)]
Properly copy LV2 plugin instances on replication

This fixes issues for stateful plugins and plugins with
previously loaded preset.

5 years agoTake latency into account when analyzing live signal
Robin Gareus [Thu, 28 Feb 2019 02:09:33 +0000 (03:09 +0100)]
Take latency into account when analyzing live signal

5 years agoNO-OP: whitespace
Robin Gareus [Thu, 28 Feb 2019 02:08:21 +0000 (03:08 +0100)]
NO-OP: whitespace

5 years agoRe-work plugin-analysis (fix crashes)
Robin Gareus [Thu, 28 Feb 2019 00:26:21 +0000 (01:26 +0100)]
Re-work plugin-analysis (fix crashes)

Plugin-analysis uses a fixed number of samples, which may be larger
than the session's block-size. This caused problems for some VST
plugins that use audioMasterCallback to query the session's block-size.

Plugin FFT analysis now processes in chunks of the session's block-size
to avoid this issue. This also allows to increase accuracy for
all plugin standards (FFT size was increased to 8192).

5 years agoMore slaved_to() replacements, fix typo
Robin Gareus [Wed, 27 Feb 2019 15:49:29 +0000 (16:49 +0100)]
More slaved_to() replacements, fix typo

5 years agoConsolidate code, use dedicated API
Robin Gareus [Wed, 27 Feb 2019 15:46:16 +0000 (16:46 +0100)]
Consolidate code, use dedicated API