ardour.git
5 years agoAdd a time+layer equivalence check
Robin Gareus [Tue, 12 Mar 2019 14:15:44 +0000 (15:15 +0100)]
Add a time+layer equivalence check

This is more useful than exact_equivalent() since _start offset
may not match in some cases (compounds, import, record with different
capture latencies).

However shared group editing (range, copy/paste) does result in
consistent layers and matching position+length.

5 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Mon, 11 Mar 2019 10:25:29 +0000 (10:25 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

5 years agoUpdate french translation
Julien "_FrnchFrgg_" RIVAUD [Mon, 11 Mar 2019 10:08:28 +0000 (11:08 +0100)]
Update french translation

Fix some mistakes (mostly mixes between nouns and verbs) and tweak some
translations. Also reuse existing translations in some places because
they were better.

5 years agoUpdate from POT, no content change
Julien "_FrnchFrgg_" RIVAUD [Mon, 11 Mar 2019 09:26:19 +0000 (10:26 +0100)]
Update from POT, no content change

5 years agoRemove redundant call, fix VST bypass indicator
Robin Gareus [Mon, 11 Mar 2019 03:18:35 +0000 (04:18 +0100)]
Remove redundant call, fix VST bypass indicator

PlugUIBase c'tor already sets the correct value, using
PluginInsert::enabled. That also correctly shows bypass state of VSTs
that support effSetBypass

5 years agoUse VST's print_parameter() when applicable.
Robin Gareus [Mon, 11 Mar 2019 01:56:08 +0000 (02:56 +0100)]
Use VST's print_parameter() when applicable.

5 years agoRemove generic parameter-printer
Robin Gareus [Mon, 11 Mar 2019 01:10:50 +0000 (02:10 +0100)]
Remove generic parameter-printer

This has been superseded by value_as_string() along with meta-data
from parameter-descriptor, which is supported by all standards, except VST.

5 years agoRemove cruft, unused variable
Robin Gareus [Mon, 11 Mar 2019 00:49:43 +0000 (01:49 +0100)]
Remove cruft, unused variable

5 years agoRemove unused value parameter printers
Robin Gareus [Mon, 11 Mar 2019 00:48:40 +0000 (01:48 +0100)]
Remove unused value parameter printers

5 years agoFixes 2 mistakes in the German translation file
Olivier Humbert [Fri, 8 Mar 2019 17:15:39 +0000 (18:15 +0100)]
Fixes 2 mistakes in the German translation file

5 years agoFrench and German fixes
Olivier Humbert [Fri, 8 Mar 2019 17:00:46 +0000 (18:00 +0100)]
French and German fixes

5 years agoWork-around crash when printing bindings
Robin Gareus [Sat, 9 Mar 2019 20:58:45 +0000 (21:58 +0100)]
Work-around crash when printing bindings

(ardour -b or Keyboard-Shortcuts > Print Bindings)
see also https://github.com/Ardour/ardour/pull/447

5 years agodo not save MIDI port info unnecessarily
Paul Davis [Sat, 9 Mar 2019 00:51:00 +0000 (17:51 -0700)]
do not save MIDI port info unnecessarily

5 years agoon engine (re)start, just mark MIDI port info dirty
Paul Davis [Sat, 9 Mar 2019 00:50:32 +0000 (17:50 -0700)]
on engine (re)start, just mark MIDI port info dirty

5 years agoadd runtime warning message
Paul Davis [Sat, 9 Mar 2019 00:08:29 +0000 (17:08 -0700)]
add runtime warning message

5 years agoavoid crazy levels of work when MIDI Port Info preferences panel is not visible
Paul Davis [Sat, 9 Mar 2019 00:04:43 +0000 (17:04 -0700)]
avoid crazy levels of work when MIDI Port Info preferences panel is not visible

5 years agodrop silly canonical name stuff from MIDI port info, and just store backend name...
Paul Davis [Fri, 8 Mar 2019 19:10:32 +0000 (12:10 -0700)]
drop silly canonical name stuff from MIDI port info, and just store backend name (GUI version)

5 years agodrop silly canonical name stuff from MIDI port info, and just store backend name...
Paul Davis [Fri, 8 Mar 2019 19:10:22 +0000 (12:10 -0700)]
drop silly canonical name stuff from MIDI port info, and just store backend name (libs version

5 years agorework name/canonical-name stuff for MIDI port info (GUI edition)
Paul Davis [Fri, 8 Mar 2019 04:58:04 +0000 (21:58 -0700)]
rework name/canonical-name stuff for MIDI port info (GUI edition)

5 years agorework name/canonical-name stuff for MIDI port info
Paul Davis [Fri, 8 Mar 2019 04:57:53 +0000 (21:57 -0700)]
rework name/canonical-name stuff for MIDI port info

5 years agoFrench translation update
Olivier Humbert [Fri, 8 Mar 2019 01:43:34 +0000 (02:43 +0100)]
French translation update

5 years agoReduce #includes - avoid ardour_ui.h
Robin Gareus [Fri, 8 Mar 2019 00:53:55 +0000 (01:53 +0100)]
Reduce #includes - avoid ardour_ui.h

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