ardour.git
5 years agoOptimize buffer zero-filling
Robin Gareus [Wed, 6 Feb 2019 15:59:41 +0000 (16:59 +0100)]
Optimize buffer zero-filling

5 years agoTowards a new disk-reader ringbuffer
Robin Gareus [Tue, 5 Feb 2019 19:51:33 +0000 (20:51 +0100)]
Towards a new disk-reader ringbuffer

This is mainly a NO-OP, introducing a new PlaybackBuffer type
and preparing for its use.

At this point in time, the buffer is just a power-of-two sized
ringbuffer and the disk-reader's read-logic is still unchanged.

Eventually the read and write sample position that are currently
private to the disk-reader can be migrated to be owned by the buffer.
Also Diskreader::read() positions can be matched to read-position ..
+/- buffer reservation and de-click can read w/o committing the read.

5 years agouse ::reset() not ::update()
Paul Davis [Mon, 4 Feb 2019 18:24:23 +0000 (11:24 -0700)]
use ::reset() not ::update()

5 years agoreset "current" in LTC transport master when necessary
Paul Davis [Mon, 4 Feb 2019 18:23:56 +0000 (11:23 -0700)]
reset "current" in LTC transport master when necessary

5 years agocorrectly initialize LTC transport master port latency (reversed boolean error)
Paul Davis [Mon, 4 Feb 2019 18:23:35 +0000 (11:23 -0700)]
correctly initialize LTC transport master port latency (reversed boolean error)

5 years agoNOOP: whitespace in function call
Paul Davis [Mon, 4 Feb 2019 18:22:25 +0000 (11:22 -0700)]
NOOP: whitespace in function call

5 years agofully initialize all LTC transport master members
Paul Davis [Mon, 4 Feb 2019 18:22:04 +0000 (11:22 -0700)]
fully initialize all LTC transport master members

at least the ones that can be done via initialization statements

5 years agoremove debug output
Paul Davis [Mon, 4 Feb 2019 18:21:07 +0000 (11:21 -0700)]
remove debug output

5 years agoadd DEBUG::Destruction output for Port
Paul Davis [Mon, 4 Feb 2019 18:20:49 +0000 (11:20 -0700)]
add DEBUG::Destruction output for Port

5 years agoextend debug output statement
Paul Davis [Mon, 4 Feb 2019 18:20:32 +0000 (11:20 -0700)]
extend debug output statement

5 years agoadd new DEBUG_TRACE output for transport masters
Paul Davis [Mon, 4 Feb 2019 18:20:19 +0000 (11:20 -0700)]
add new DEBUG_TRACE output for transport masters

5 years agoremove commented code
Paul Davis [Mon, 4 Feb 2019 18:19:56 +0000 (11:19 -0700)]
remove commented code

5 years agoforce execution of ARDOUR::init_post_engine() before any handlers of AudioEngine...
Paul Davis [Sun, 27 Jan 2019 21:02:03 +0000 (14:02 -0700)]
force execution of ARDOUR::init_post_engine() before any handlers of AudioEngine::Running()

5 years agodo not reset ControlProtocol state for every engine restart, it is not necessary
Paul Davis [Sun, 27 Jan 2019 21:01:05 +0000 (14:01 -0700)]
do not reset ControlProtocol state for every engine restart, it is not necessary

5 years agoremove debug output
Paul Davis [Fri, 25 Jan 2019 18:09:31 +0000 (11:09 -0700)]
remove debug output

5 years agominor refactorization of how the transport master widget is rebuilt
Paul Davis [Fri, 25 Jan 2019 05:05:56 +0000 (22:05 -0700)]
minor refactorization of how the transport master widget is rebuilt

5 years agonew approach to handling Transport Masters when engine is restarted
Paul Davis [Fri, 25 Jan 2019 05:05:20 +0000 (22:05 -0700)]
new approach to handling Transport Masters when engine is restarted

Trust that ::reset() works for all transport masters, and call it when engine is stopped. This way
the transport masters are ready to be called again as soon as the engine restarts.

5 years agoKill the last remaining buses
Robin Gareus [Wed, 23 Jan 2019 15:05:21 +0000 (16:05 +0100)]
Kill the last remaining buses

In Ardour's world, the plural of a "Bus[Bar]" is "Busses".
(some day we may or may not search/replace 'em all to "buses")

5 years agoNO-OP: whitespace
Robin Gareus [Wed, 23 Jan 2019 11:59:17 +0000 (12:59 +0100)]
NO-OP: whitespace

5 years agosystem-exec read: allow 1 byte for null termination -- #7715
Robin Gareus [Wed, 23 Jan 2019 11:44:10 +0000 (12:44 +0100)]
system-exec read: allow 1 byte for null termination -- #7715

5 years agoLV2: Immediately respond after processing scheduled work in sync exec mode
Robin Gareus [Tue, 22 Jan 2019 20:54:22 +0000 (21:54 +0100)]
LV2: Immediately respond after processing scheduled work in sync exec mode

This allows for sample-accuracy when the work is triggered by sequenced
events in offline rendering mode.

5 years agoNO-OP: whitespace
Robin Gareus [Mon, 21 Jan 2019 13:36:59 +0000 (14:36 +0100)]
NO-OP: whitespace

5 years agoNO-OP: remove unused code
Robin Gareus [Mon, 21 Jan 2019 13:34:19 +0000 (14:34 +0100)]
NO-OP: remove unused code

5 years agoISO-C++ compat, see cd70c6bda5b, 91ed9840d
Robin Gareus [Mon, 21 Jan 2019 13:33:08 +0000 (14:33 +0100)]
ISO-C++ compat, see cd70c6bda5b91ed9840d

5 years agoUse correct playlist when loading Ardour5 session
Robin Gareus [Sat, 19 Jan 2019 11:04:45 +0000 (12:04 +0100)]
Use correct playlist when loading Ardour5 session

Ardour5 identifies playlists by playlist-name, not by diskstream name.

5 years agoOptimize exponential interpolation.
Robin Gareus [Sat, 19 Jan 2019 09:24:25 +0000 (10:24 +0100)]
Optimize exponential interpolation.

5 years agoOSC: remove unused variable
Len Ovens [Tue, 27 Nov 2018 21:13:19 +0000 (13:13 -0800)]
OSC: remove unused variable

5 years agoHmm, balanced panner didn't seem to make it in
Len Ovens [Thu, 15 Nov 2018 22:11:05 +0000 (14:11 -0800)]
Hmm, balanced panner didn't seem to make it in

5 years agofoldback sends should have unlinked balanced panner
Len Ovens [Tue, 13 Nov 2018 23:15:18 +0000 (15:15 -0800)]
foldback sends should have unlinked balanced panner
Or 1+2 for mono sends.

5 years agoOSC: shorten foldbackbus names
Len Ovens [Tue, 13 Nov 2018 21:43:23 +0000 (13:43 -0800)]
OSC: shorten foldbackbus names

5 years agoClarify auto-connect preference
Robin Gareus [Thu, 17 Jan 2019 17:12:39 +0000 (18:12 +0100)]
Clarify auto-connect preference

5 years agoremove unnecessary call to init_post_engine() (now called from libardour)
Paul Davis [Thu, 17 Jan 2019 15:18:53 +0000 (09:18 -0600)]
remove unnecessary call to init_post_engine() (now called from libardour)

5 years ago(libs) call ARDOUR::init_post_engine() from within libardour rather than requiring...
Paul Davis [Wed, 16 Jan 2019 21:29:25 +0000 (15:29 -0600)]
(libs) call ARDOUR::init_post_engine() from within libardour rather than requiring "users" of the library to arrange for it

5 years ago(libs) call ARDOUR::init_post_engine() from within libardour rather than requiring...
Paul Davis [Wed, 16 Jan 2019 21:29:21 +0000 (15:29 -0600)]
(libs) call ARDOUR::init_post_engine() from within libardour rather than requiring "users" of the library to arrange for it

5 years agoFix ambiguity introduced in 91ed9840d
Robin Gareus [Wed, 16 Jan 2019 00:17:52 +0000 (01:17 +0100)]
Fix ambiguity introduced in 91ed9840d

(bool) false == 0 == (const char*) NULL

error: ISO C++ says that these are ambiguous, even though the worst
conversion for the first is better than the worst conversion for the second:

actions.h:92: note: candidate 1: Glib::RefPtr<Gtk::Action> ActionManager::get_action(const char*, const char*, bool)
actions.h:91: note: candidate 2: Glib::RefPtr<Gtk::Action> ActionManager::get_action(const std::string&, bool)

5 years agoALSA: add locks to safely add/remove MIDI devices
Robin Gareus [Mon, 14 Jan 2019 21:07:51 +0000 (22:07 +0100)]
ALSA: add locks to safely add/remove MIDI devices

Theoretically this could be lock-free by using a queue of device
ports to be added/remove in sync in the process-callback, but
realistically adding/removing devices doesn't have to be rt-safe.

5 years agoClarify which version of 'ActionManager::get_action()' we're calling
John Emmas [Mon, 14 Jan 2019 14:14:23 +0000 (14:14 +0000)]
Clarify which version of 'ActionManager::get_action()' we're calling

For MSVC, the parameter 'false' (i.e. 0) can be considered as either a bool or a pointer - so it'll map to both declarations of ActionManager::get_action()

5 years agore-order startup process, registering actions early
Paul Davis [Sun, 13 Jan 2019 18:01:18 +0000 (12:01 -0600)]
re-order startup process, registering actions early

Mostly to stop an error when UIConfiguration::map_parameters()
looks for an action that has not yet been registered

5 years agoadjust debug/trace output for key bindings
Paul Davis [Sun, 13 Jan 2019 18:00:31 +0000 (12:00 -0600)]
adjust debug/trace output for key bindings

5 years agoadditional API to make it nicer to get an existing action group
Paul Davis [Sun, 13 Jan 2019 17:59:18 +0000 (11:59 -0600)]
additional API to make it nicer to get an existing action group

5 years agodo not crash if an unknown action is used by US2400 support
Paul Davis [Fri, 11 Jan 2019 18:54:44 +0000 (12:54 -0600)]
do not crash if an unknown action is used by US2400 support

5 years agodo not crash if an unknown action is used by Mackie Control support
Paul Davis [Fri, 11 Jan 2019 18:39:07 +0000 (12:39 -0600)]
do not crash if an unknown action is used by Mackie Control support

5 years agomixer recall script will now remember the last used recall settings
Nikolaus Gullotta [Fri, 4 Jan 2019 17:58:09 +0000 (11:58 -0600)]
mixer recall script will now remember the last used recall settings

5 years agotype is a protected word.
Nikolaus Gullotta [Fri, 4 Jan 2019 17:14:23 +0000 (11:14 -0600)]
type is a protected word.

5 years agoLCXL: Fix a problem in switch_bank
Jan Lentfer [Wed, 2 Jan 2019 23:03:31 +0000 (00:03 +0100)]
LCXL: Fix a problem in switch_bank

5 years agoLCXL: fix special 32C handling for autom. lanes
Jan Lentfer [Mon, 31 Dec 2018 16:22:15 +0000 (17:22 +0100)]
LCXL: fix special 32C handling for autom. lanes

5 years agoAdd an example plugin to demonstrate Lua global variables
Robin Gareus [Wed, 2 Jan 2019 21:26:19 +0000 (22:26 +0100)]
Add an example plugin to demonstrate Lua global variables

Note: this only works when loading the script action.
Window > Scripting doesn't run the factory method for upindex variables

5 years agoFix a -Wunused-but-set-variable
Robin Gareus [Wed, 2 Jan 2019 17:59:03 +0000 (18:59 +0100)]
Fix a -Wunused-but-set-variable

5 years agoInclude Volume Paths in Ardour's PathsDialog Widget
Robin Gareus [Wed, 2 Jan 2019 16:38:34 +0000 (17:38 +0100)]
Include Volume Paths in Ardour's PathsDialog Widget

This fixes an issue on MacOS/X. Show non-root volumes to the sidebar
as shortcuts.

5 years agoAdd external drive references for most file-browsers
Robin Gareus [Wed, 2 Jan 2019 16:37:03 +0000 (17:37 +0100)]
Add external drive references for most file-browsers

This fixes an issue on MacOS/X to only show non-root volumes in
the file-open dialog. They're just as valid for save-as, export, video
files etc.

In case of a 2nd internal disk, it is also a valid choice as default
folder for new sessions.

5 years agoUpdate Fluidsynth to v2.0.3
Robin Gareus [Wed, 2 Jan 2019 14:33:23 +0000 (15:33 +0100)]
Update Fluidsynth to v2.0.3

see https://github.com/FluidSynth/fluidsynth/releases/tag/v2.0.3

5 years agoremove dangling --lv2 waf configure option
Paul Davis [Wed, 2 Jan 2019 13:10:54 +0000 (08:10 -0500)]
remove dangling --lv2 waf configure option

5 years agoR/W test scripts are bash scripts
Robin Gareus [Tue, 1 Jan 2019 22:12:37 +0000 (23:12 +0100)]
R/W test scripts are bash scripts

5 years agoAdd Midnam for Yamaha MX 49/61/88
Julio Martinez [Tue, 1 Jan 2019 20:36:02 +0000 (21:36 +0100)]
Add Midnam for Yamaha MX 49/61/88

Midnam file with presets

5 years agoBump main program's (C) year
Robin Gareus [Tue, 1 Jan 2019 15:19:40 +0000 (16:19 +0100)]
Bump main program's (C) year

5 years agoNo interest in bug-reports for alpha-releases
Robin Gareus [Tue, 1 Jan 2019 15:19:05 +0000 (16:19 +0100)]
No interest in bug-reports for alpha-releases

So far all 6.0-pre bug reports are known issues due to incomplete
work-in-progress. There is no manpower to triage those.

5 years agoAdd a script to list all plugins in the session
Robin Gareus [Sun, 30 Dec 2018 21:39:20 +0000 (22:39 +0100)]
Add a script to list all plugins in the session

5 years agoNO-OP: whitespace
Robin Gareus [Fri, 28 Dec 2018 16:32:38 +0000 (17:32 +0100)]
NO-OP: whitespace

5 years agoCheck whether punch-in is enabled and record is enabled in addition to if we are...
Alex Pilon [Thu, 27 Dec 2018 21:26:01 +0000 (16:26 -0500)]
Check whether punch-in is enabled and record is enabled in addition to if we are actively recording when deciding whether to run count-in clicks

5 years agoObserve preference to prompt for names when adding range markers
Alex Pilon [Fri, 28 Dec 2018 01:58:24 +0000 (20:58 -0500)]
Observe preference to prompt for names when adding range markers

5 years agoremove configure-time --no-lv2 option. LV2 is integral to what we do
Paul Davis [Fri, 28 Dec 2018 14:47:55 +0000 (09:47 -0500)]
remove configure-time --no-lv2 option. LV2 is integral to what we do

5 years agonew version of Boost shared ptr debugging patch
Paul Davis [Fri, 28 Dec 2018 14:35:06 +0000 (09:35 -0500)]
new version of Boost shared ptr debugging patch

5 years agoremove debug output
Paul Davis [Thu, 27 Dec 2018 22:17:58 +0000 (17:17 -0500)]
remove debug output

5 years agofix silly cycling-show-hide bug with step editing
Paul Davis [Thu, 27 Dec 2018 22:07:17 +0000 (17:07 -0500)]
fix silly cycling-show-hide bug with step editing

5 years agodiv wrapping
Paul Davis [Sat, 22 Dec 2018 22:40:26 +0000 (17:40 -0500)]
div wrapping

5 years agoC++98 compatible map erase
Robin Gareus [Thu, 27 Dec 2018 11:45:36 +0000 (12:45 +0100)]
C++98 compatible map erase

5 years agoNO-OP: whitespace
Robin Gareus [Mon, 24 Dec 2018 01:30:00 +0000 (02:30 +0100)]
NO-OP: whitespace

5 years agoUpdate Convolver/LuaConvolver
Robin Gareus [Mon, 24 Dec 2018 01:29:24 +0000 (02:29 +0100)]
Update Convolver/LuaConvolver

* Add API to allow per-channnel gain and delay
* Fix channel-mapping for stereo IRs w/o true-stereo

5 years agoUse same has for ALSA-seq and ALSA-raw devices
Robin Gareus [Sun, 23 Dec 2018 20:57:28 +0000 (21:57 +0100)]
Use same has for ALSA-seq and ALSA-raw devices

5 years agoEngine Dialog MIDI tweaks
Robin Gareus [Sun, 23 Dec 2018 20:51:09 +0000 (21:51 +0100)]
Engine Dialog MIDI tweaks

* Allow to dynamically en/disable MIDI devices when running
* Push midi latencies directly to running backend

5 years agoDynamic ALSA MIDI I/O device discovery and re/connect
Robin Gareus [Sun, 23 Dec 2018 20:48:07 +0000 (21:48 +0100)]
Dynamic ALSA MIDI I/O device discovery and re/connect

5 years agoEngine-dialog: skip audio device update when running
Robin Gareus [Sun, 23 Dec 2018 18:51:17 +0000 (19:51 +0100)]
Engine-dialog: skip audio device update when running

Only update MIDI devices list, which can be dynamic. Audio devices
which are in-use can't be updated, and the GUI may no longer show
the current device (since it is in use).

5 years agoUse hash for ALSA-MIDI device name/ID
Robin Gareus [Sun, 23 Dec 2018 18:40:48 +0000 (19:40 +0100)]
Use hash for ALSA-MIDI device name/ID

5 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Sun, 23 Dec 2018 13:29:36 +0000 (13:29 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

5 years agoFix dead-link to manual
Robin Gareus [Sun, 23 Dec 2018 03:50:58 +0000 (04:50 +0100)]
Fix dead-link to manual

5 years agoFix cases where there's no MIDI buffer (e.g. audio audition)
Robin Gareus [Sun, 23 Dec 2018 00:57:38 +0000 (01:57 +0100)]
Fix cases where there's no MIDI buffer (e.g. audio audition)

5 years agoIncrease pitch-shifting quality a bit
Robin Gareus [Sun, 23 Dec 2018 00:57:16 +0000 (01:57 +0100)]
Increase pitch-shifting quality a bit

OptionPitchHighQuality - Use the highest quality
 method for pitch shifting.  This method has a CPU cost
 approximately proportional to the required frequency shift

5 years agodeal with end-of-step-editing in a better way
Paul Davis [Sat, 22 Dec 2018 21:48:16 +0000 (16:48 -0500)]
deal with end-of-step-editing in a better way

5 years agoadd explanatory comments
Paul Davis [Sat, 22 Dec 2018 20:11:52 +0000 (15:11 -0500)]
add explanatory comments

5 years agomake StepEntry into a singleton.
Paul Davis [Sat, 22 Dec 2018 19:45:28 +0000 (14:45 -0500)]
make StepEntry into a singleton.

More work to follow to clean up the details, and more comments to
explain the relationship between StepEntry and StepEditor.

5 years agoremove unused declaration
Paul Davis [Sat, 22 Dec 2018 19:44:52 +0000 (14:44 -0500)]
remove unused declaration

5 years agoAdd guard-points when shifting automation
Robin Gareus [Sat, 22 Dec 2018 01:04:17 +0000 (02:04 +0100)]
Add guard-points when shifting automation

5 years agoProperly remove-time automation
Robin Gareus [Sat, 22 Dec 2018 00:09:24 +0000 (01:09 +0100)]
Properly remove-time automation

Previously "remove time" was able to produce overlapping, not
ordered automation.

5 years agoCleanup LV2 file-dialog extension
Robin Gareus [Fri, 21 Dec 2018 23:34:31 +0000 (00:34 +0100)]
Cleanup LV2 file-dialog extension

<drobilla> "This function returns immediately"

5 years agoFix plugin-preset description markup
Robin Gareus [Fri, 21 Dec 2018 23:32:49 +0000 (00:32 +0100)]
Fix plugin-preset description markup

5 years agoFix insert/remove time duplicate automation move -- #7712
Robin Gareus [Fri, 21 Dec 2018 16:15:38 +0000 (17:15 +0100)]
Fix insert/remove time duplicate automation move -- #7712

Editor::insert_time(), Editor::remove_time() handle automation
directly because time may be inserted to Routes without playlists
and combined undo-operation with marker, and tempo-changes.

However when the preference "automation_follows_regions" is enabled,
the playlist already moves the automation of region under any region
(possibly overriding future automation).

This resulted in possibly lossy, duplicate automation moves.

5 years agoNO-OP: whitespace
Robin Gareus [Fri, 21 Dec 2018 15:35:07 +0000 (16:35 +0100)]
NO-OP: whitespace

* Remove leading and trailing whitespace.
* use tabs to indent, space to align

/* prefer C-style comments like this,
 * always use an asterisk on every line, this
 * way small ASCII-graphics are always aligned
 * using spaces after the asterisk.
 *
 *            ^
 *           / \
 *          /   \
 *         /     \
 *        /       \
 *       /         \
 *      /  /\       \
 *     /__/  \_/\_^__\
 *       A R D O U R
 *
     << NO asterisk, there may be tabs :(
 *
 */

5 years agoRemove duplicate automation shift
Robin Gareus [Fri, 21 Dec 2018 16:32:46 +0000 (17:32 +0100)]
Remove duplicate automation shift

Amp, Trim are now processors, moving processor-automation takes care
of gain automation.

5 years agoFix crash for external windows
Robin Gareus [Thu, 20 Dec 2018 18:41:57 +0000 (19:41 +0100)]
Fix crash for external windows

eg. LV2 externalUI windows are not managed by ardour; Ardour cannot
intercept mapped() or delete_event() signals and hence also not
create a visibility-tracker.

First call to WindowProxy::toggle() creates the window, and the 2nd call
crashed since 6ca8ec5141c, due to missing vistracker.

e.g. externalUI plugin windows, the processor-box uses WindowProxy
for all plugin-UIs incl. externalUIs.

5 years agoAdd a plugin-preset list/selector GUI
Robin Gareus [Thu, 20 Dec 2018 15:56:34 +0000 (16:56 +0100)]
Add a plugin-preset list/selector GUI

This is currently only used for "Preset only" plugins, generic UI.
And also depends on plugin-presets having a description.

5 years agoAmend e4304f3bf, plugin-preset, preset-record
Robin Gareus [Thu, 20 Dec 2018 13:13:03 +0000 (14:13 +0100)]
Amend e4304f3bf, plugin-preset, preset-record

5 years agoUse lilv_world_get()
David Robillard [Thu, 20 Dec 2018 01:06:53 +0000 (20:06 -0500)]
Use lilv_world_get()

Leaves the now-trivial get_value() helper there since it keeps the call sites
shorter and nicer to read.

5 years agoRemove conditional support for ancient versions of Lilv
David Robillard [Thu, 20 Dec 2018 01:04:50 +0000 (20:04 -0500)]
Remove conditional support for ancient versions of Lilv

This updates the dependency to 0.24.2, which was released in January 2017 and
is the most recent version in Debian 9 (stretch).

5 years agomake StepEntry actions be static.
Paul Davis [Wed, 19 Dec 2018 22:15:23 +0000 (17:15 -0500)]
make StepEntry actions be static.

Unfinished, because bindings are problematic.

5 years agoexplicitly clear ProcessorEntries from ProcessorBox when the latter's Route is destroyed
Paul Davis [Wed, 19 Dec 2018 22:15:15 +0000 (17:15 -0500)]
explicitly clear ProcessorEntries from ProcessorBox when the latter's Route is destroyed

5 years agocast_dynamic<> => get_toggle_action()
Paul Davis [Wed, 19 Dec 2018 21:44:35 +0000 (16:44 -0500)]
cast_dynamic<> => get_toggle_action()

5 years agoadjustments for latest boost shared_ptr debug patch
Paul Davis [Wed, 19 Dec 2018 21:19:38 +0000 (16:19 -0500)]
adjustments for latest boost shared_ptr debug patch

5 years agomove #include directive
Paul Davis [Wed, 19 Dec 2018 21:17:05 +0000 (16:17 -0500)]
move #include directive

5 years agomore organized and coherent handling of route control connections in MonitorSection
Paul Davis [Sun, 16 Dec 2018 17:50:29 +0000 (12:50 -0500)]
more organized and coherent handling of route control connections in MonitorSection

5 years agoCompliant LV2 state path-mapping
Robin Gareus [Wed, 19 Dec 2018 21:28:40 +0000 (22:28 +0100)]
Compliant LV2 state path-mapping

lv2 state mandates that
>  The plugin MUST use this function [ absolute_path] in order to
>  actually open or otherwise use any paths loaded from plugin state.
Previously the plugin uses the value directly. Also
>  The caller is responsible for freeing the returned value with free().
is now implemented on systems other than windows (where this is not
possible, since the memory must be free()ed in the same module where it
was allocated.