Ben Loftis [Fri, 31 May 2019 18:35:40 +0000 (13:35 -0500)]
(Source List) Add forall_regions function, used by Region and Source lists.
Ben Loftis [Fri, 7 Dec 2018 18:44:15 +0000 (12:44 -0600)]
(Source List) No need to show the path when file is internal to session.
Ben Loftis [Wed, 29 May 2019 21:18:23 +0000 (16:18 -0500)]
(Source List) merge fixes
Ben Loftis [Thu, 15 Nov 2018 15:33:44 +0000 (09:33 -0600)]
(Source List) Clean up the natural_position implementation (gtk2 part).
Ben Loftis [Thu, 15 Nov 2018 15:33:54 +0000 (09:33 -0600)]
(Source List) Clean up the natural_position implementation (libardour part).
Ben Loftis [Thu, 8 Nov 2018 19:07:52 +0000 (13:07 -0600)]
(Source List) Implement remove_selected_sources when the user clicks Delete key.
Paul Davis [Thu, 8 Nov 2018 16:43:39 +0000 (11:43 -0500)]
(Source List) NOOP: whitespace cleanup
remove debug output
Ben Loftis [Thu, 15 Nov 2018 15:30:22 +0000 (09:30 -0600)]
(Source List) Fix drag-n-drop.
Ben Loftis [Thu, 15 Nov 2018 15:29:55 +0000 (09:29 -0600)]
(Source List) RegionFactory should return an empty region here.
Ben Loftis [Mon, 22 Oct 2018 21:46:44 +0000 (16:46 -0500)]
(Source List) Source list, Region List: Resolve various action+behaviors between the 2 lists.
Duplicate the remove_unsued_region action in the Session->Cleanup menu, for discoverability.
Region list should use the same Region actions as the canvas...
OK, now resolve the change in use-cases of Region List and Source List. tentative.
Rough-in remove_selected_sources (Delete in Sources list).
Column tweaks.
Ben Loftis [Thu, 15 Nov 2018 15:27:04 +0000 (09:27 -0600)]
(Source List) Region Tags (gtk2 part)
Ben Loftis [Sat, 20 Oct 2018 01:02:44 +0000 (20:02 -0500)]
(Source List) Region Tags (libardour part)
Rough-in: Region-Tags.
More correct implementation of tags property (libardour).
Region Tags (libardour part)
Ben Loftis [Thu, 18 Oct 2018 23:51:45 +0000 (18:51 -0500)]
(Source List) Make clock change func more explicit.
Ben Loftis [Thu, 15 Nov 2018 15:24:37 +0000 (09:24 -0600)]
(Source List) Region List rewrite (gtk2 part)
See: https://docs.google.com/document/d/1sI7p9RoRVZtNx2n67RvBa0_16fuZblV_lNkkKN2g93s/edit?usp=sharing
Ben Loftis [Tue, 16 Oct 2018 22:44:11 +0000 (17:44 -0500)]
(Source List) Region List rewrite (libardour part)
Ben Loftis [Thu, 15 Nov 2018 15:21:55 +0000 (09:21 -0600)]
(Source List) Source property signals (gtk2 part)
See: https://docs.google.com/document/d/1sI7p9RoRVZtNx2n67RvBa0_16fuZblV_lNkkKN2g93s/edit?usp=sharing
Ben Loftis [Thu, 15 Nov 2018 15:21:31 +0000 (09:21 -0600)]
(Source List) Source property signals (libardour part)
Ben Loftis [Sat, 13 Oct 2018 13:36:43 +0000 (08:36 -0500)]
(Source List) Take-ID: new (working) implementation.
Robin Gareus [Thu, 1 Aug 2019 16:31:44 +0000 (18:31 +0200)]
Update clang-format to match ardour-style
Robin Gareus [Wed, 31 Jul 2019 02:48:52 +0000 (04:48 +0200)]
Fix C++11 NSDMI
Robin Gareus [Tue, 30 Jul 2019 19:17:15 +0000 (21:17 +0200)]
Update MIDI Event precedence
A patch-change that is concurrent with a note-on event should be sent
before the given Note-on event.
As follow up: CCs also need to be prioritize to send bank-select first.
see also https://discourse.ardour.org/t/midi-strangeness-patch-setting-and-first-notes/101415
John Emmas [Mon, 29 Jul 2019 15:56:45 +0000 (16:56 +0100)]
Another try at fixing our 'spinlock_t' compatibility
Robin Gareus [Mon, 29 Jul 2019 02:45:29 +0000 (04:45 +0200)]
Partially undo
6d4b94df13 for MSVC and C++98 compat
Robin Gareus [Mon, 29 Jul 2019 01:55:31 +0000 (03:55 +0200)]
Fix random off-by-one issue when vertically zooming a waveform
To mitigate concurrent rendering, the waveform cache adds a random
range of pixels centered around the visible waveform.
Alignment is using integer half_width = width_samples / 2;
This always aligns the left-edge to the left-most cairo-pixel.
This fixes an issue with moving moiree patterns in waveforms when
zooming vertically (which invalidates the cache and uses a
different random number of pixels),
Robin Gareus [Mon, 29 Jul 2019 01:48:52 +0000 (03:48 +0200)]
Fix rendering of region waveform left-edge
The left-most part may be a partial block of a given "sample per pixel"
range. Also previously there was an off-by-one [block] in case
sample_pos was an even multiple of samples_per_visual_peak.
Robin Gareus [Mon, 29 Jul 2019 01:28:53 +0000 (03:28 +0200)]
NO-OP: whitespace
Robin Gareus [Sun, 28 Jul 2019 18:10:09 +0000 (20:10 +0200)]
Reduce compiler warnings when boost uses std-atomics
This works around for compilers with non-static-data-member
initialization.
spinlock_t is-a struct { lockType _; } and BOOST_DETAIL_SPINLOCK_INIT
initializes the first member of the struct.
All defines of BOOST_DETAIL_SPINLOCK_INIT include c-style curly braces
to initialize the struct's data member.
However, modern C++ compiler interpret the braces differently resulting
in copy constriction of the initializer.
Robin Gareus [Sun, 28 Jul 2019 16:37:57 +0000 (18:37 +0200)]
Yet another spinlock init hack for g++8 std::atomics
Perhaps we should rather implement this ourselves,
using <boost/atomic.hpp>
Robin Gareus [Sun, 28 Jul 2019 13:02:04 +0000 (15:02 +0200)]
Prevent spinlock copy construction
Robin Gareus [Sun, 28 Jul 2019 13:01:40 +0000 (15:01 +0200)]
Another attempt at improving spinlock init
Robin Gareus [Sun, 28 Jul 2019 12:57:51 +0000 (14:57 +0200)]
Follow up
d8ae3fd
Depending on implementation,
d8ae3fd may only construct the spinlock
once to `sl_init`. Later it is only copy-constructed and that leads to
compile and/or runtmime errors.
e.g. gcc-8.3 fails to compile
error: use of deleted function ‘boost::detail::spinlock::spinlock(const boost::detail::spinlock&)’
John Emmas [Sat, 27 Jul 2019 11:31:15 +0000 (12:31 +0100)]
MSVC requires an already initialized object to initialize our boost::detail::spinlock (rather than the simpler #define)
Hopefully this'll work for the other builds too.
Robin Gareus [Fri, 26 Jul 2019 19:40:39 +0000 (21:40 +0200)]
Correctly initialize spintlock_t
Depending on underlying implementation, boost::detail::spinlock
needs to be explicitly initialized
Robin Gareus [Fri, 26 Jul 2019 19:38:40 +0000 (21:38 +0200)]
PA-backend: Flush buffer and wake up main thread at stop
Robin Gareus [Fri, 26 Jul 2019 14:44:43 +0000 (16:44 +0200)]
Prefix env variable with "ARDOUR_" 2/2
Robin Gareus [Fri, 26 Jul 2019 14:44:29 +0000 (16:44 +0200)]
Prefix all env variable with "ARDOUR_"
In particular "CONCURRENCY" can be problematic. But in general
it's good practice to use a namespace prefix for app-specifics.
Robin Gareus [Fri, 26 Jul 2019 02:43:56 +0000 (04:43 +0200)]
Launch pavucontrol as PA's control app
Robin Gareus [Thu, 25 Jul 2019 23:58:01 +0000 (01:58 +0200)]
Fix time_t <> long int ambiguity (OSX gcc builds)
This fixes an issue with
* XMLNode::get_property(const char*, T&)
* XMLNode::set_property(const char*, const T&)
resulting in
string_convert.h:77: error: 'long int' is not a class,
struct, or union type
Robin Gareus [Thu, 25 Jul 2019 20:37:13 +0000 (22:37 +0200)]
Linux-bundle: use build-stack only
This fixes an issue with libpulse indirectly adding libasync
Robin Gareus [Thu, 25 Jul 2019 19:24:36 +0000 (21:24 +0200)]
Fix PA: unlock mainloop on abort
Robin Gareus [Thu, 25 Jul 2019 19:00:12 +0000 (21:00 +0200)]
Package PA backend when available
Robin Gareus [Thu, 25 Jul 2019 14:39:23 +0000 (16:39 +0200)]
Puls der Zeit
Prototype a basic stereo-playback only pulseaudio backend.
Robin Gareus [Thu, 25 Jul 2019 12:33:08 +0000 (14:33 +0200)]
Fix engine-dialog for backends without MIDI options
Ben Loftis [Wed, 24 Jul 2019 16:49:32 +0000 (11:49 -0500)]
Add device file for Behringer X-Touch One
Robin Gareus [Wed, 24 Jul 2019 14:30:42 +0000 (16:30 +0200)]
ALSA backend: fix play/capture device param detection
Robin Gareus [Wed, 24 Jul 2019 14:29:59 +0000 (16:29 +0200)]
Fix ALSA available buffersize detection:
buffer-size = periods * period-size
Previously, buffersize was used for period-size.
This fixes an issue with a dedicated .asoundrc configuring a specific
period-size or buffer-size that has to be exact.
Ardour's device configuration failed in this case.
This has not been an issues since most hardware devices offer a wide
range: 8 < period-size < 262144 ; 16 < buffer-size < 524288.
Only a subset of which (32 .8192) is allowed by Ardour.
Nikolaus Gullotta [Mon, 22 Jul 2019 20:47:17 +0000 (15:47 -0500)]
Location timestamp changes - can now sort by location creation date: gtk part
Nikolaus Gullotta [Mon, 22 Jul 2019 20:47:01 +0000 (15:47 -0500)]
Location timestamp changes - can now sort by location creation date: lib ardour part
John Emmas [Fri, 19 Jul 2019 14:40:06 +0000 (15:40 +0100)]
'ARDOUR::LuaScripting::Sorter()' needs to be exportable (since it gets used outside of libardour)
Robin Gareus [Fri, 19 Jul 2019 00:10:27 +0000 (02:10 +0200)]
Refine Stem-Export selection options
Allow to exclude muted, or hidden tracks from stem-export
selection actions.
Paul Davis [Thu, 18 Jul 2019 20:01:09 +0000 (14:01 -0600)]
remove -C,-E and -U command line options
Paul Davis [Thu, 18 Jul 2019 19:35:27 +0000 (13:35 -0600)]
reverse part of a previous change to session dialog
Back-button sensitive has a more complex semantic than the change
took into account
Paul Davis [Thu, 18 Jul 2019 19:38:43 +0000 (13:38 -0600)]
Revert "fix use of session-creation via template, when just template name is given"
This reverts commit
ce7add1481f54eb12b32e5f46af4ea36140eb932.
Paul Davis [Thu, 18 Jul 2019 18:27:00 +0000 (12:27 -0600)]
fix use of session-creation via template, when just template name is given
Paul Davis [Thu, 18 Jul 2019 16:44:10 +0000 (10:44 -0600)]
some cleanups to the use of "require_new" in the SessionDialog
This removes some redundant code and makes the logic slightly
easier to read
Paul Davis [Thu, 18 Jul 2019 16:42:58 +0000 (10:42 -0600)]
remove debug output
Paul Davis [Thu, 18 Jul 2019 16:17:43 +0000 (10:17 -0600)]
don't bother with session dialog if user has already provided the name
This recognizes that if a template is desired, it can be also be
set from the cmdline
Paul Davis [Thu, 18 Jul 2019 16:17:05 +0000 (10:17 -0600)]
if a user specifies just a session name (not path) and it does not exist, use the default session folder
Robin Gareus [Thu, 18 Jul 2019 14:30:08 +0000 (16:30 +0200)]
Allow to use session-init/setup scripts from the commandline
Robin Gareus [Thu, 18 Jul 2019 14:16:11 +0000 (16:16 +0200)]
Fix --template commandline option
This fixed an issue with incorrect ".template" suffix on path itself,
and also correctly hides the dialog's template list.
Robin Gareus [Thu, 18 Jul 2019 11:11:17 +0000 (13:11 +0200)]
Add session-util to create new session
Robin Gareus [Thu, 18 Jul 2019 13:50:34 +0000 (15:50 +0200)]
Consolidate code: use libardour API to sort scripts
Robin Gareus [Thu, 18 Jul 2019 13:49:48 +0000 (15:49 +0200)]
Sort Lua scripts case-insensitive and expose sort-struct
Robin Gareus [Thu, 18 Jul 2019 13:45:53 +0000 (15:45 +0200)]
Remove debug output
Robin Gareus [Thu, 18 Jul 2019 03:22:17 +0000 (05:22 +0200)]
Add Lua bindings to query&reset x-run count
Robin Gareus [Wed, 17 Jul 2019 23:31:30 +0000 (01:31 +0200)]
Expose mixer window screenshot method as Lua binding
Robin Gareus [Wed, 17 Jul 2019 22:05:32 +0000 (00:05 +0200)]
Tweak Mixer screenshot method, include VCA, master-bus
Robin Gareus [Wed, 17 Jul 2019 20:57:30 +0000 (22:57 +0200)]
Prepare screenshot of all mixer-strips
This will allow to create a PNG of all mixer-strips, even those currently
off-screen due to scrolling. It currently shows the main scroll-pane
page only (master-bus, VCAs are not included).
This method is not yet exposed.
Robin Gareus [Wed, 17 Jul 2019 20:21:08 +0000 (22:21 +0200)]
Use an explicit class-member for the mixer-strip container
Robin Gareus [Wed, 17 Jul 2019 15:25:56 +0000 (17:25 +0200)]
Re-use existing latency display method
Robin Gareus [Wed, 17 Jul 2019 15:04:25 +0000 (17:04 +0200)]
Update Latency GUI behavior
This allows to set the current nominal latency as custom latency.
Previously it was not possible to use the "initial_value" as custom
parameter.
Robin Gareus [Wed, 17 Jul 2019 15:08:00 +0000 (17:08 +0200)]
Track/Bus Inspector: remove unused latency "apply" button
Latency changes, and reset, are always directly applied.
LatencyGUI::finish is invoked by every change
Robin Gareus [Wed, 17 Jul 2019 14:37:01 +0000 (16:37 +0200)]
NO-OP: whitespace
Robin Gareus [Wed, 17 Jul 2019 14:36:01 +0000 (16:36 +0200)]
Fix patch-change bank update loop
Without an object, the Unwinder has no scope and the "ignore" variable
is never set.
In this case: When the patch-bank was changed externally this
lead to a duplicate recursive call to "refill_banks".
Robin Gareus [Wed, 17 Jul 2019 14:29:54 +0000 (16:29 +0200)]
Fix meter type/position context-menu issues
Robin Gareus [Wed, 17 Jul 2019 14:22:44 +0000 (16:22 +0200)]
FFT analysis: use actual latency
Ardour allows to override a plugin's reported latency. So far this
was not taken into account when plotting the phase/freq response.
Robin Gareus [Sun, 14 Jul 2019 22:55:51 +0000 (00:55 +0200)]
Fix deadlock when removing routes (initialization issues)
_setup_chain needs to point to the unused graph-chain, and not
_current_chain. Otherwise Graph::clear_other_chain() waits forever.
Robin Gareus [Sun, 14 Jul 2019 16:39:50 +0000 (18:39 +0200)]
Remember MIDI-track note-range -- #7773
Previously only manual changes of the note-range using the scroomer.
The NoteRangeChanged() was ignored for implicit changes (e.g. while
recording, step-entry) and automatic-fit that didn't involve a drag
event.
Robin Gareus [Sun, 14 Jul 2019 16:37:11 +0000 (18:37 +0200)]
Remove cruft: unused callback
John Emmas [Sat, 13 Jul 2019 12:57:57 +0000 (13:57 +0100)]
Implement a derived function for 'GainMeter::redraw_metrics()'
I'm not sure why exactly but at this line in 'GainMeter::set_controls ()' :-
model_connections, invalidator (*this), boost::bind (&GainMeter::redraw_metrics, this), gui_context()
MSVC will not allow us to pass a base class function to boost::bind(). I tried explicitly specifying the base class and I also tried making the function public / making it virtual etc but the only thing which works is to implement a derived function.
It's somehow related to changing the signal from 'TypeChanged' to 'MeterTypeChanged' but I don't entirely understand why... :-(
Robin Gareus [Thu, 11 Jul 2019 20:58:27 +0000 (22:58 +0200)]
Hide "Add MIDI Port" in the GUI if there is already one
Robin Gareus [Thu, 11 Jul 2019 20:57:34 +0000 (22:57 +0200)]
Prevent adding a 2nd MIDI input/output port
Ardour's Tracks/Routes are not capable of handing more than one
MIDI port per per route properly. Most Plugin standards don't support
this either.
However, at this point in time IO::ensure_ports_locked() is not
limited by this restriction!
It is still possible to indirectly add a 2nd MIDI data-buffer
and output-port via plugin pin-management, or simply plugins with
two MIDI output ports when using flexible I/O.
Robin Gareus [Wed, 10 Jul 2019 17:11:07 +0000 (19:11 +0200)]
Re-work process-graph to use lock-free queues
This removes the trigger_mutex which was used for exclusive access
of the work-queue for concurrent processing.
Robin Gareus [Wed, 10 Jul 2019 17:07:43 +0000 (19:07 +0200)]
Add lock-free multiple producer multiple reader queue
Robin Gareus [Wed, 10 Jul 2019 18:19:53 +0000 (20:19 +0200)]
Fix process-thread naming
Robin Gareus [Sat, 6 Jul 2019 16:10:36 +0000 (18:10 +0200)]
Tweak dump-playlist script to indicate current playlist
Robin Gareus [Sat, 6 Jul 2019 16:09:07 +0000 (18:09 +0200)]
Add Lua binding to set/create track playlists
Robin Gareus [Thu, 4 Jul 2019 20:35:07 +0000 (22:35 +0200)]
NO-OP: whitespace
Robin Gareus [Thu, 4 Jul 2019 20:34:04 +0000 (22:34 +0200)]
Cleanup headless getopt
Robin Gareus [Thu, 4 Jul 2019 20:22:27 +0000 (22:22 +0200)]
Delay headless startup, allow background threads to start
Robin Gareus [Thu, 4 Jul 2019 20:21:49 +0000 (22:21 +0200)]
Use exit-status macros for compatibility 3/3
Robin Gareus [Thu, 4 Jul 2019 20:21:35 +0000 (22:21 +0200)]
Use exit-status macros for compatibility 2/3
Robin Gareus [Thu, 4 Jul 2019 20:21:14 +0000 (22:21 +0200)]
Use exit-status macros for compatibility 1/3
Robin Gareus [Thu, 4 Jul 2019 20:02:52 +0000 (22:02 +0200)]
headless: Use direct x-thread wakeup instead of sleep/spin
Robin Gareus [Tue, 2 Jul 2019 18:18:26 +0000 (20:18 +0200)]
Mixbus uses K14 (not K20) master meter by default (see also
297ed001d)
Robin Gareus [Tue, 2 Jul 2019 18:15:03 +0000 (20:15 +0200)]
Remove unused API -- there is no default backend.
Robin Gareus [Tue, 2 Jul 2019 18:14:27 +0000 (20:14 +0200)]
Improve headless Ardour somewhat
* Allow to exit cleanly (using access-action)
* Terminate when the backend is halted
* Handle various commandline arguments as advertised
- print version
- disable hardware optimization
- set client-name
- prevent port-connections
* Use JACK -- previously hardour only worked if
Ardour was compiled with JACK as *only* backend.
Other backends are listed before JACK, set_default_backend()
never picks JACK unless it's the only one.
Other backends need configuration, or EngineState from config.
This is currently handled in the GUI's engine-dialog..
Robin Gareus [Tue, 2 Jul 2019 15:33:56 +0000 (17:33 +0200)]
Consolidate headless startup scripts and make hardev work again
This fixes an issue with inconsistent startup scripts.
LD_LIBRARY_PATH was incomplete since at least 5.0 (5.12 is broken, too)
likewise ctrl surface path were outdated, etc.
Prefer to use `gtk2_ardour/ardev_common.sh.in` as the central
point to define environment variables for running Ardour from
the source-tree.
Other start scripts e.g. `vst/ardevst` already did this.
Robin Gareus [Tue, 2 Jul 2019 14:48:07 +0000 (16:48 +0200)]
Remove non-existent backend-paths from start-script
Robin Gareus [Tue, 2 Jul 2019 14:12:06 +0000 (16:12 +0200)]
Mixbus/master is always using K20 by default
This only affects the meter-bridge, toolbar and editor track-header
(Mixbus' mixer is always using DPM, which is always enabled).