Ben Loftis [Wed, 30 Aug 2017 15:20:29 +0000 (10:20 -0500)]
Gracefully handle templates that lack contents in their description or created_with node.
Ben Loftis [Wed, 30 Aug 2017 14:32:21 +0000 (09:32 -0500)]
Avoid assert() when loading xml: Throw an XMLerror if attribute_value fails.
Julien "_FrnchFrgg_" RIVAUD [Wed, 30 Aug 2017 14:07:02 +0000 (16:07 +0200)]
Change the autostate button width of all controls
John Emmas [Wed, 30 Aug 2017 08:53:33 +0000 (09:53 +0100)]
Accommodate recently removed source(s) in our MSVC project (portaudio_audiobackend)
Robin Gareus [Tue, 29 Aug 2017 18:35:36 +0000 (20:35 +0200)]
Abstract definition of rt-scheduler policy
pthread-w32 does not support pthread_setschedparam() with
SCHED_FIFO and bails out. While pthread_create() simply ignores the policy
and sets the priority regadless.
This only affects ctrl-surface event-loops & AutomationWatch on Windows.
Robin Gareus [Tue, 29 Aug 2017 15:23:19 +0000 (17:23 +0200)]
Consolidate _realtime_pthread_create() into libpbd.
Robin Gareus [Tue, 29 Aug 2017 15:16:03 +0000 (17:16 +0200)]
Set Automationwatch thread priority (needs to be higher than GUI)
This fixes an issue with sparse automation touch/write when the CPU is
busy (stationary playhead, waveform rendering, or just high DSP load)
Robin Gareus [Tue, 29 Aug 2017 15:14:34 +0000 (17:14 +0200)]
Add a PBD API to set pthread priority
Julien "_FrnchFrgg_" RIVAUD [Tue, 29 Aug 2017 10:00:20 +0000 (12:00 +0200)]
Use small Astate buttons for plugins with many controls
The generic plugin UI uses spelled-out automation state buttons for
controls, which is good for readability and usability, but some plugins
have a very big amount of controls which means we need a lot of columns.
For those plugins, prefer one-letter automation states, to save width.
Julien "_FrnchFrgg_" RIVAUD [Tue, 29 Aug 2017 09:25:38 +0000 (11:25 +0200)]
GenericUI: rationalize Autostate button sizing
When there was a knobtable in the ControlUI, the behavior of the
automation state button changed by displaying one-char state as in track
headers. Factor out that logic to depend on a new boolean property of
the ControlUI, which should be set with set_short_autostate().
This regroups sizing logic in a single place and avoids future
discrepancies between the actual caption and the size allocated for it,
when several use-cases for smaller buttons are added.
Julien "_FrnchFrgg_" RIVAUD [Tue, 29 Aug 2017 08:42:00 +0000 (10:42 +0200)]
Compare bundle ports per-type
This addresses the XXX comment in Bundle::has_same_ports()
Julien "_FrnchFrgg_" RIVAUD [Tue, 29 Aug 2017 08:33:53 +0000 (10:33 +0200)]
Make Bundle::disconnect() more robust
Instead of asserting or crashing if the number of channels of both
bundles don't match, just try to disconnect as much as possible.
Julien "_FrnchFrgg_" RIVAUD [Mon, 28 Aug 2017 17:43:28 +0000 (19:43 +0200)]
Refactor update_io_button
Check, in order, if the io is connected to another Ardour route, then a
user bundle, then some physical ports with simple configuration, and
lastly another client.
Before, Routes were considered connected as long as every io port
connected to that route, even if the channel order was mixed or worse if
all ports were connected to the same channel. Now Routes and Bundles are
considered connected if they are exclusively connected, in the right
order, to all their ports with matching datatype.
Julien "_FrnchFrgg_" RIVAUD [Mon, 28 Aug 2017 10:18:02 +0000 (12:18 +0200)]
Make Bundle::connected_to() optionally check for exclusivity
If the new optional argument is true, then the first bundle will also
check if it has other connections than to the given bundle.
Julien "_FrnchFrgg_" RIVAUD [Mon, 28 Aug 2017 10:13:01 +0000 (12:13 +0200)]
Make Bundle::connected_to() able to check only a single DataType
Also use the same iteration logic than in Bundle::connect to avoid
mismatched port types.
Len Ovens [Sun, 27 Aug 2017 21:15:05 +0000 (14:15 -0700)]
OSC: Change jog mode should not stop transport
unless started by scrub or shuttle.
Ben Loftis [Sun, 27 Aug 2017 15:25:09 +0000 (10:25 -0500)]
Editor zoom: add 2hour and 24hour zoom limits.
Ben Loftis [Sun, 27 Aug 2017 04:32:02 +0000 (23:32 -0500)]
Editor zooming: right-click on summary -> context menu -> reset to session extents.
Ben Loftis [Sun, 27 Aug 2017 04:06:29 +0000 (23:06 -0500)]
Editor zoom: add zoom_to_extents()
Ben Loftis [Sun, 27 Aug 2017 03:44:48 +0000 (22:44 -0500)]
Editor zooming: Config preference to define how much zooming will be easily allowed beyond the session_ui_extents()
Ben Loftis [Sun, 27 Aug 2017 03:19:04 +0000 (22:19 -0500)]
Editor zooming:
Add config setting for playhead-scroll-speed.
Default to 100% for now, but for new users we might later default it to something slower.
If you want to scroll quickly, it is preferred to zoom out first, then scroll.
Ben Loftis [Sun, 27 Aug 2017 02:56:42 +0000 (21:56 -0500)]
Editor zooming: Tweak the Summary to stop at right edge, use session_gui_extents().
Ben Loftis [Sun, 27 Aug 2017 02:05:40 +0000 (21:05 -0500)]
Editor zooming: refactor zoom-limiting code into editor::session_gui_extents.
Ben Loftis [Sun, 27 Aug 2017 02:00:45 +0000 (21:00 -0500)]
Editor zooming:
New function session_gui_extents() reports the extents of all playlists.
ToDo: include region playlists, when they become available.
also: slow-down autoscroll (ToDo: make a config variable for this)
Ben Loftis [Sun, 27 Aug 2017 01:59:05 +0000 (20:59 -0500)]
Editor zooming: Initialize leftmost_frame, for sessions that start at high timecodes.
Robin Gareus [Sat, 26 Aug 2017 13:41:20 +0000 (15:41 +0200)]
mp4chaps Lua script: don't clutter global environment
Robin Gareus [Sat, 26 Aug 2017 13:38:41 +0000 (15:38 +0200)]
Fix too restrictive Lua sandbox
Don't limit the environment when evaluating bytecode (factory function).
John Emmas [Sat, 26 Aug 2017 12:07:45 +0000 (13:07 +0100)]
Fix a compiler problem when building 'gtk2_ardour/template_dialog.cc' with MSVC
When setting up the 'TemplatesImported' signal, these 2 calls appear in the c'tor for class TemplateDialog:-
boost::bind (&RouteTemplateManager::init, route_tm)
boost::bind (&SessionTemplateManager::init, session_tm)
However - '&RouteTemplateManager::init' and '&SessionTemplateManager::init' are in fact the address of the same function. This seems to be causing a problem, either for boost::bind, or MSVC (or both).
In earlier builds they were 2 separate functions. So let's put them back that way (since the current code actually crashes the compiler!!)
Julien "_FrnchFrgg_" RIVAUD [Thu, 24 Aug 2017 20:51:53 +0000 (22:51 +0200)]
Remove unneeded test
The for loop will not be executed if |port_connections| is empty, no
need to check beforehand.
Ben Loftis [Fri, 25 Aug 2017 19:37:37 +0000 (14:37 -0500)]
Secondary clock visibility is a global pref, not a per-session setting.
Len Ovens [Fri, 25 Aug 2017 17:22:42 +0000 (10:22 -0700)]
OSC: same fix for /select/*
Len Ovens [Fri, 25 Aug 2017 16:44:08 +0000 (09:44 -0700)]
OSC: account for user sending the wrong number of paramters gracefully
Ben Loftis [Fri, 25 Aug 2017 14:19:17 +0000 (09:19 -0500)]
Some fixes for ruler-visibility. Secondary-clock coming soon.
Ben Loftis [Fri, 25 Aug 2017 14:01:57 +0000 (09:01 -0500)]
Templates: attempt to set ruler and clock visibility. Not working.
Ben Loftis [Fri, 25 Aug 2017 02:21:38 +0000 (21:21 -0500)]
Track Templates: tweaks to MIDI Bus description text.
Robin Gareus [Thu, 24 Aug 2017 21:41:21 +0000 (23:41 +0200)]
Allow to send immediate PC messages without closing the dialog.
Perhaps every change should trigger a PC (without "Apply") button?!
Robin Gareus [Thu, 24 Aug 2017 14:20:51 +0000 (16:20 +0200)]
Julien "_FrnchFrgg_" RIVAUD [Thu, 24 Aug 2017 09:54:15 +0000 (11:54 +0200)]
Make clicks on io menu bundles always connect
If a bundle was already connected, a click on the corresponding entry
disconnected it, essentially giving toggle semantics to the io menus.
This behavior has three problems:
— When clicking on a not yet connected bundle, the new bundle replaces
any already connected one. This is not consistent with a toggle mode.
— It is a less discoverable and less easy way to disconnect a bundle
than the already present "Disconnect" menu entry.
— Bundles that match the I/O channels only partially (recently added to cater
for e.g. MIDI+STEREO tracks connecting to Master) are never
considered "connected" because the channels are not connected 1:1.
Those will thus never toggle, making the behavior inconsistent.
Change the semantics to ensure a bundle is connected on click instead.
Julien "_FrnchFrgg_" RIVAUD [Thu, 24 Aug 2017 09:40:19 +0000 (11:40 +0200)]
Remove all manual accounting of connected user bundles
IO used to manually keep a list of user bundles it was connected to, but
it didn't work correctly: sometimes it didn't notice that a bundle
wasn't connected anymore, and the list wasn't correctly persisted across
save/reloads among other things.
Moreover, it wasn't needed at all, since the user bundles are correctly
listed by _session.bundles() and IO already notices they are connected !
Remove all occurrences of |_bundles_connected| and |check_bundles_connected|.
Paul Davis [Thu, 24 Aug 2017 13:31:45 +0000 (09:31 -0400)]
when connecting to sigc signals, use sigc methods, not boost::bind
Robin Gareus [Thu, 24 Aug 2017 13:26:14 +0000 (15:26 +0200)]
fix waf template install
Ben Loftis [Wed, 23 Aug 2017 18:13:00 +0000 (13:13 -0500)]
Track Templates:
* Re-rename Track Wizard to Live Band.
* Various ui tweaks to Live Band template script.
Robin Gareus [Thu, 24 Aug 2017 00:56:33 +0000 (02:56 +0200)]
Lua Script Example to toggle monitor section
Robin Gareus [Thu, 24 Aug 2017 00:08:32 +0000 (02:08 +0200)]
Fix session-open after selecting new, template, then back
Robin Gareus [Wed, 23 Aug 2017 21:54:51 +0000 (23:54 +0200)]
Deploy Session-templates
Julien "_FrnchFrgg_" RIVAUD [Wed, 23 Aug 2017 20:04:54 +0000 (22:04 +0200)]
Make the output menu able to connect partial matches
Use the new partial connection feature of IO::connect_ports_to_bundle.
Julien "_FrnchFrgg_" RIVAUD [Wed, 23 Aug 2017 20:03:20 +0000 (22:03 +0200)]
Make IO::connect_ports_to_bundle able to partially connect
Forward the optional |allow_partial| boolean to |Bundle::connect|.
Julien "_FrnchFrgg_" RIVAUD [Wed, 23 Aug 2017 20:01:08 +0000 (22:01 +0200)]
Make Bundle::connect able to connect only some DataTypes
When |allow_partial| is true, only when the number of channels of a
given DataType is the same for both bundles are the corresponding
channels connected together.
When |allow_partial| is false (the default), the number of channels must
match for each DataType (the ChanCounts must be equal) for the
connection to be attempted.
This also fixes the logic in case two bundles have the same number of
channels, or even the same ChanCounts, but not with the DataTypes in the
same order (so connecting the ith channel of the bundle to the ith
channel of the other bundle makes no sense).
Julien "_FrnchFrgg_" RIVAUD [Wed, 23 Aug 2017 18:40:11 +0000 (20:40 +0200)]
Improve getting a Bundle total channel count
|Bundle::nchannels()| creates a ChanCount on demand, by iterating over
the |_channel| member variable. The sum of all |nchannels().n(t)| over
all non-NIL DataTypes |t| is thus equal to |_channel.size()|.
Consequently, calling |nchannels().n_total()| is a convoluted (and slow)
way of getting |_channel.size()|. Add a method |Bundle::n_total()| that
directly returns the latter.
Julien "_FrnchFrgg_" RIVAUD [Tue, 22 Aug 2017 14:04:16 +0000 (16:04 +0200)]
Populate strips output menus with a more user-friendly heuristic
Ensure the master bus is the first proposed bundle if it is present.
Also propose internal route inputs before physical outs or other
software via JACK.
Last, but not least, add to the menu not only exactly matching bundles,
but also bundles that have the same number of channels than the route
output when considering only the DataType we think the user wants to
use. This covers both the case of a MIDI+STEREO instrument track
connecting to master, and the case of a STEREO track connecting to a
MIDI+STEREO vocoder track.
Julien "_FrnchFrgg_" RIVAUD [Tue, 22 Aug 2017 14:02:04 +0000 (16:02 +0200)]
Improve maybe_add_bundle_to_output_menu
Avoid proposing the monitor section in the list if the current route is
not the master bus. Also allow the caller to pass a DataType as argument
to allow partial bundle match on that datatype only.
Julien "_FrnchFrgg_" RIVAUD [Mon, 21 Aug 2017 16:04:25 +0000 (18:04 +0200)]
Use port enumeration instead of manual indexed loop
Julien "_FrnchFrgg_" RIVAUD [Mon, 21 Aug 2017 13:41:29 +0000 (15:41 +0200)]
Generalise heuristic for user-intended main type of a route's IO
The heuristic currently used to display port connections in a
compact user-friendly way only considers Audio and MIDI data types.
Replace it by a better heuristic that does essentially the same thing
with all DataTypes, assuming they are ordered by likeliness of usage.
Currently the result is the same since there are only two DataTypes.
Julien "_FrnchFrgg_" RIVAUD [Wed, 23 Aug 2017 20:44:32 +0000 (22:44 +0200)]
Add a method to get the first DataType
Also put a comment about the ordering of DataTypes.
Julien "_FrnchFrgg_" RIVAUD [Mon, 21 Aug 2017 15:48:04 +0000 (17:48 +0200)]
Remove never changing and/or unused arguments
Julien "_FrnchFrgg_" RIVAUD [Sun, 20 Aug 2017 14:18:58 +0000 (16:18 +0200)]
Use DataType iteration instead of assuming integers
Robin Gareus [Wed, 23 Aug 2017 19:32:53 +0000 (21:32 +0200)]
Fix Route-template file suffix
Robin Gareus [Wed, 23 Aug 2017 17:39:23 +0000 (19:39 +0200)]
Example Stereo to 2 x Mono track Lua script
Robin Gareus [Wed, 23 Aug 2017 17:38:43 +0000 (19:38 +0200)]
Use new separate_by_channel API
Robin Gareus [Wed, 23 Aug 2017 17:37:45 +0000 (19:37 +0200)]
Update "separate_by_channel" API & add Lua bindings
This breaks compilation (GUI)
Ben Loftis [Wed, 23 Aug 2017 17:13:40 +0000 (12:13 -0500)]
Track Templates: remove uninteresting script.
Robin Gareus [Wed, 23 Aug 2017 10:43:48 +0000 (12:43 +0200)]
Use literal for compatibility
Stefan Müller-Klieser [Mon, 21 Aug 2017 18:44:16 +0000 (20:44 +0200)]
backends: jack: display playback only devices
When starting ardour using the jack backend, playback only devices
currently do not get displayed. Mixing and Mastering only workspaces
with e.g. a single USB Dac should be a common use case. Take this use
case into account by adding them to the device list. Tested on Linux
with jack-alsa.
Ben Loftis [Tue, 22 Aug 2017 21:20:26 +0000 (16:20 -0500)]
Track Templates: Add verbose descriptions for the built-in track types.
Ben Loftis [Tue, 22 Aug 2017 19:35:50 +0000 (14:35 -0500)]
Track templates: clean-up widget sensitivity based on selection.
Robin Gareus [Tue, 22 Aug 2017 15:28:08 +0000 (17:28 +0200)]
RouteDialog: implicit "Add (+close)" on <enter> or double-click
Robin Gareus [Tue, 22 Aug 2017 15:07:42 +0000 (17:07 +0200)]
Reset RouteDialog: name edited by-user
* after each "Add" operation
* when cleaning the name field
Robin Gareus [Tue, 22 Aug 2017 14:45:14 +0000 (16:45 +0200)]
Tweak RouteDialog bottom area
Ben Loftis [Tue, 22 Aug 2017 14:19:02 +0000 (09:19 -0500)]
Track Templates: yet another layout tweak.
Robin Gareus [Tue, 22 Aug 2017 13:06:21 +0000 (15:06 +0200)]
Remove cruft
Len Ovens [Tue, 22 Aug 2017 03:06:44 +0000 (20:06 -0700)]
OSC cue button up events should not be errors, fixed
Robin Gareus [Tue, 22 Aug 2017 02:12:18 +0000 (04:12 +0200)]
Mark session dirty after applying MIDI transform
Robin Gareus [Tue, 22 Aug 2017 02:09:19 +0000 (04:09 +0200)]
MIDI Transform channel-count 1..16 (not 0..15)
Robin Gareus [Tue, 22 Aug 2017 01:12:07 +0000 (03:12 +0200)]
Add Lua bindings for ArdourUI's translate_order()
e.g. calculate the route insert position:
print (ArdourUI.translate_order (ArdourUI.InsertAt.BeforeSelection))
Robin Gareus [Tue, 22 Aug 2017 00:17:22 +0000 (02:17 +0200)]
RouteDialog: retain prior type selection
Robin Gareus [Tue, 22 Aug 2017 00:11:56 +0000 (02:11 +0200)]
remove debug output
Robin Gareus [Tue, 22 Aug 2017 00:03:47 +0000 (02:03 +0200)]
RouteDialog: Move built-in types into template list experiment
Len Ovens [Mon, 21 Aug 2017 19:09:48 +0000 (12:09 -0700)]
OSC: /cue/enable feedback not changing fixed
Julien "_FrnchFrgg_" RIVAUD [Mon, 21 Aug 2017 17:44:41 +0000 (19:44 +0200)]
Fix spacing in french usage strings
Len Ovens [Mon, 21 Aug 2017 15:40:22 +0000 (08:40 -0700)]
OSC: aux bus detection fixed for mixbus
Robin Gareus [Mon, 21 Aug 2017 15:07:54 +0000 (17:07 +0200)]
Catch Lua exception when scanning scripts
Paul Hedderly [Mon, 21 Aug 2017 14:08:22 +0000 (15:08 +0100)]
prh: Small fix to /cue/send/enable feedback string
Robin Gareus [Mon, 21 Aug 2017 14:10:20 +0000 (16:10 +0200)]
AddRouteDialog: Indicate Type: template
John Emmas [Mon, 21 Aug 2017 08:22:44 +0000 (09:22 +0100)]
Accommodate newly introduced source(s) in our MSVC project (gtk2_ardour)
Robin Gareus [Sun, 20 Aug 2017 20:26:54 +0000 (22:26 +0200)]
Fix some GUI side XML node mem-leaks
Robin Gareus [Sun, 20 Aug 2017 20:23:10 +0000 (22:23 +0200)]
Fix a tiny memory leak
Johannes Mueller [Sun, 20 Aug 2017 17:53:42 +0000 (19:53 +0200)]
Strip trailing whitespace in template descriptions
Johannes Mueller [Sun, 20 Aug 2017 17:10:50 +0000 (19:10 +0200)]
TemplateDialog: Lable the RESPONSE_OK button "Done" rather than "Ok"
Labeling it "Ok" would imply that by clicking it, descriptions would be saved
without further interaction. If we did so, we would also need to add a
cancel-button or handle simple closing of the dialog window appropriately.
Johannes Mueller [Sun, 20 Aug 2017 12:35:29 +0000 (14:35 +0200)]
TemplateDialog tweaks
* don't ask whether to save the description when renaming the template
* sane behavior when a template is deleted
Johannes Mueller [Sat, 19 Aug 2017 23:36:11 +0000 (01:36 +0200)]
Clear and deactivate description editor widget when nothing is selected
Johannes Mueller [Sat, 19 Aug 2017 22:54:19 +0000 (00:54 +0200)]
TemplateDialog: keep private things private and header files simple
Johannes Mueller [Sat, 19 Aug 2017 22:39:50 +0000 (00:39 +0200)]
Make literals in libs/ardour/template_utils.cc translatable
Johannes Mueller [Sat, 19 Aug 2017 22:29:46 +0000 (00:29 +0200)]
Ask user whether to save or discard unsaved template descriptions
Johannes Mueller [Sat, 19 Aug 2017 17:45:08 +0000 (19:45 +0200)]
Remove the template description XMLNode before saving the template
... to avoid that the new template description is concatenated to the old one.
Johannes Mueller [Sat, 19 Aug 2017 17:42:38 +0000 (19:42 +0200)]
Extract the route template descriptions
... and put them into the template info list.
Johannes Mueller [Sat, 19 Aug 2017 12:52:38 +0000 (14:52 +0200)]
Pass session description or route comment as default description
... to SaveTemplateDialog
Johannes Mueller [Sat, 19 Aug 2017 12:52:14 +0000 (14:52 +0200)]
Use const wherever you can
Johannes Mueller [Sat, 19 Aug 2017 12:51:14 +0000 (14:51 +0200)]
Name tweak (more consistent with other code)
Johannes Mueller [Sat, 19 Aug 2017 11:49:33 +0000 (13:49 +0200)]
Let user add a route template description on saving route templates
Johannes Mueller [Fri, 18 Aug 2017 17:53:46 +0000 (19:53 +0200)]
Let the user add a template description on saving session templates