summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
AgeCommit message (Collapse)Author
2017-09-09Prepare for singleton patch-selector per midi-track UI (mixer, editor,..)Robin Gareus
2017-09-09LV2/midnam tweaks - fix race conditionsRobin Gareus
* Emit signal once midnam was actually updated * only re-read midnam if was it changed. This allows idempotent calls to read_midnam() - from the same thread. At session-load a synth-plugin may load a soundfont in the background and emit midnam_update() after the synth was initialized but before the GUI thread connects to the signal. By making the call idempotent the GUI can call read_midnam() after connecting to the signal to catch up.
2017-09-09Allow to send MIDI data directly to a pluginRobin Gareus
2017-09-08Add LV2 extension to notify host about midi-bank/pgm state.Robin Gareus
2017-08-28Make Bundle::connected_to() optionally check for exclusivityJulien "_FrnchFrgg_" RIVAUD
If the new optional argument is true, then the first bundle will also check if it has other connections than to the given bundle.
2017-08-28Make Bundle::connected_to() able to check only a single DataTypeJulien "_FrnchFrgg_" RIVAUD
Also use the same iteration logic than in Bundle::connect to avoid mismatched port types.
2017-08-24Remove all manual accounting of connected user bundlesJulien "_FrnchFrgg_" RIVAUD
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|.
2017-08-23Make IO::connect_ports_to_bundle able to partially connectJulien "_FrnchFrgg_" RIVAUD
Forward the optional |allow_partial| boolean to |Bundle::connect|.
2017-08-23Make Bundle::connect able to connect only some DataTypesJulien "_FrnchFrgg_" RIVAUD
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).
2017-08-23Improve getting a Bundle total channel countJulien "_FrnchFrgg_" RIVAUD
|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.
2017-08-23Add a method to get the first DataTypeJulien "_FrnchFrgg_" RIVAUD
Also put a comment about the ordering of DataTypes.
2017-08-23Use DataType iteration instead of assuming integersJulien "_FrnchFrgg_" RIVAUD
2017-08-23Update "separate_by_channel" API & add Lua bindingsRobin Gareus
This breaks compilation (GUI)
2017-08-22Remove cruftRobin Gareus
2017-08-20Let user add a route template description on saving route templatesJohannes Mueller
2017-08-20Let the user add a template description on saving session templatesJohannes Mueller
2017-08-20Don't use references for constant c-typesRobin Gareus
This fixes various Lua-scripts: There are no explicit bindings to turn int64_t, uint64_t into a const reference. Besides it doesn't make sense to use a reference for constant _t that can be directly loaded in CPU register or on the stack.
2017-08-18Add Lua binding to un/assign VCAsRobin Gareus
2017-08-18Remove old destructive API (non layered is a dynamic mode) 2/2Robin Gareus
2017-08-18Redesign Session+Route Template Meta Script APIRobin Gareus
Remove special-cased script types. Allow Action-Scripts to be re-used for session-setup or route-templates.
2017-08-18NO-OP: whitespaceRobin Gareus
2017-08-18Expose Lua bindings to create/delete VCAsRobin Gareus
2017-08-17Track Templates: initial lua backend support.Ben Loftis
2017-08-17Check major session file format version.Robin Gareus
Don't allow to load sessions created with a newer version of Ardour with an old one (no forward compatibility).
2017-08-16The Auditioner is not in the Session's RouteListRobin Gareus
Remove various checks, add assert() for now (perhaps some old sessions?) This fixes an off-by one issue when adding tracks (presentation info order in add_routes_inner)
2017-08-16Separate "add master bus" (and add Lua bindings)Robin Gareus
This is in preparation for "advanced session setup" allow a SessionSetup Lua script to create the master-bus.
2017-08-16Clean up BusProfile:Robin Gareus
* requested_physical_in/out was unused * input/output Autoconnect just overrides Preference/Config (can be done by a template script) * master_out_channels is kept for compatibility (allow to create new empty session)
2017-08-14Change the template pulldown menu into a tree list. Populate the ↵Ben Loftis
Description view when a template is selected.
2017-08-14Session Metadata: add a Description field.Ben Loftis
* This is a multi-line text field. * If the session is a template, we might show this in the New Session dialog.
2017-08-12use a lock to set/get AutomationList automation statePaul Davis
It isn't 100% clear that we should use the list's data lock, but it seems quite likely that this is the correct design, because of the interlock between data being present and automation state
2017-08-11Prepare for templates w/descriptionRobin Gareus
2017-08-11Add a new script type for meta-templates: SessionSetupRobin Gareus
2017-08-07fix a -WattributesRobin Gareus
2017-08-07Add Lua Bindings to clone/copy regionsRobin Gareus
2017-08-06Emit SelectionChange when VCA is removedRobin Gareus
chicken/egg: Stripable d'tor which calls remove_stripable_by_id() will only be called when the Stripable is destroyed. But as long as the GUI selection holds a shared-ptr reference to the Stripable, it won't be destroyed.
2017-08-05Update backend API: read-only MIDI input buffersRobin Gareus
2017-08-04Graph profiling: allow to override max DSP thread count & calc avg.Robin Gareus
2017-08-01Fix LTC encoder removalRobin Gareus
Fixed a crash if an x-run or graph-reorder happens after the LTC encoder has been destroyed (possible at session-close or after disabling the encoder). This also fixes duplicate callbacks in case the encoder was re-enabled times in an active session.
2017-07-31Signal wish to show inline display in gui by lv2:optionalFeatureJohannes Mueller
... in .ttl file rather than by extension_data() in code. That's more in the spirit of LV2.
2017-07-31Indicate whether to show plugin's inline display in GUIJohannes Mueller
This is currently done by an extension data similarly to LV2_INLINEDISPLAY__interface.
2017-07-30Turn AutomationCtrl into a SessionHandleRefRobin Gareus
This fixes a crash with GUI elements which are only deleted during GUI Idle and hold a Reference to a Controllable, The session is already destroyed at that point: ARDOUR::CoreSelection::remove_control_by_id(PBD::ID const&) ARDOUR::AutomationControl::~AutomationControl() ARDOUR::SlavableAutomationControl::~SlavableAutomationControl() ARDOUR::MonitorControl::~MonitorControl() boost::detail::sp_counted_base::destroy() boost::detail::sp_counted_impl_p<AudioGrapher::Interleaver<float>::Input>::dispose() boost::detail::sp_counted_base::release() boost::detail::shared_count::~shared_count() boost::shared_ptr<PBD::Controllable>::~shared_ptr() boost::shared_ptr<PBD::Connection>::~shared_ptr() ArdourWidgets::BindingProxy::~BindingProxy() ArdourWidgets::ArdourButton::~ArdourButton() VCAMasterStrip::~VCAMasterStrip() int idle_delete<VCAMasterStrip>(VCAMasterStrip*)
2017-07-26Fix initial sync to LTC with small buffersizesRobin Gareus
Ardour follow_slave() does nothing (not even seek) if the slave is not locked. The LTC-slave assumes it's locked if LTC is stable for 5 continuous process-calls. If the difference of Ardour's transport-position to the LTC-timecode is large (> 2sec), the slave reset itself (assuming drift, seek don't vari- speed). A LTC-slave does reset does reset the locked counter. Hence: If initially Ardour's transport differs > 2 sec and the buffersize is small (many process-callbacks), the slave kept resetting itself never informing Ardour that it locked to the external TC, and Ardour never issued a seek.
2017-07-24Update WritePass logic + AutomationList UndoRobin Gareus
Fixes various issues when changing AutomationState while rolling.
2017-07-24Remove unused "mark" parameter from stop_touch() APIRobin Gareus
2017-07-22NO-OP: whitespaceRobin Gareus
2017-07-22AutomationWatch: single DropReferences connection per ACRobin Gareus
2017-07-22NO-OP: consistent [internal] API name for AutomatablesRobin Gareus
2017-07-22NO-OP: Consistent API nameRobin Gareus
2017-07-22Rework tempo marker editing menu functionsnick_m
Setting a tempo to 'Continue' via right click puts it in a permanent state of continuing the previous section's end tempo (basically what 'Lock Continue' should have been). This can be disabled (unlocked) by selecting 'Don't Continue'. Remove the previous temporary 'Continue' function. Reorganise menu to separate position lock style from more commonly used functions.
2017-07-22Calculate clamped tempo stretch ratios using the correct (musical) domainnick_m