Paul Davis [Mon, 6 Jan 2020 01:47:59 +0000 (18:47 -0700)]
remove the (unused) concept of a MIDI patchfile folder per session
Paul Davis [Mon, 6 Jan 2020 01:34:40 +0000 (18:34 -0700)]
move MidiPatchManager initialization into ARDOUR "global" scope, rather than per session
Paul Davis [Mon, 6 Jan 2020 00:51:18 +0000 (17:51 -0700)]
use glibmm threads for the midnam load thread, instead of raw pthreads (for portability)
Paul Davis [Mon, 6 Jan 2020 00:50:06 +0000 (17:50 -0700)]
remove unnecessary call to xmlKeepBlanksDefault()
Paul Davis [Mon, 6 Jan 2020 00:49:35 +0000 (17:49 -0700)]
move call to xmlKeepBlanksDefault(0) to before the creation of an XML parser context
the value is used by the parser context; the old code called it only after the *first* parser context
was created. therefore the first XMLTree::read() call has its behavior determined by libxml2's default
for this value, rather than by our explicit choice (do not treat whitespace as a note). All subequent
read() calls will use our value.
This variable inside libxml2 is actually per-thread, which just increases the stakes for calling
xmlKeepBlanksDefault() at the right time
Robin Gareus [Mon, 6 Jan 2020 00:30:19 +0000 (01:30 +0100)]
Add Lua bindings for UIConfiguration variables
Paul Davis [Sun, 5 Jan 2020 18:40:59 +0000 (11:40 -0700)]
repeat
baf0cdcbef1 but for BaseUI, thus covering all control protocols
Paul Davis [Sun, 5 Jan 2020 18:25:23 +0000 (11:25 -0700)]
fix handling of flags in the OSC input handler
Some builds of glib on macOS end up delivering IO_PRI when IO_IN is also set. This differs from our own build stack
version, but it isn't really an error, so we should handle it.
Robin Gareus [Sun, 5 Jan 2020 18:22:14 +0000 (19:22 +0100)]
Allow public access to the editor-mixer-strip
This is currently used by Mixbus to sync visibility of switches on
the editor-mixer-strip with the main mixer.
John Emmas [Sun, 5 Jan 2020 10:29:35 +0000 (10:29 +0000)]
Add a missing semicolon
Robin Gareus [Sat, 4 Jan 2020 22:22:34 +0000 (23:22 +0100)]
Pixel-pushing: editor-meter size and alignment
Previously the "reset peaks" button expanded to incredible height
when the GUI was scaled. Now the meter fills available space instead.
Paul Davis [Sat, 4 Jan 2020 01:41:24 +0000 (18:41 -0700)]
add extensive comment for posterity
Robin Gareus [Fri, 3 Jan 2020 23:29:48 +0000 (00:29 +0100)]
Return of image-surface backed canvas (windows graphics performance)
This partially reverts
2edbda252619b.
Using cairo-groups increases performance on MacOS, and retains
retina-resolution.
However it adds a performance regression for MS Windows graphics
rendering. cairo-groups use a "similar" surface, not an image surface.
Empirically this adds significant overhead compared to rendering
using the CPU and using bitblt.
Paul Davis [Fri, 3 Jan 2020 23:18:55 +0000 (16:18 -0700)]
fix recent bad commit
Paul Davis [Fri, 3 Jan 2020 23:12:45 +0000 (16:12 -0700)]
fix DiskReader::overwrite_existing_audio()
Several math/geometry errors here
Paul Davis [Fri, 3 Jan 2020 23:10:58 +0000 (16:10 -0700)]
NOOP: line refolding
Robin Gareus [Fri, 3 Jan 2020 03:33:33 +0000 (04:33 +0100)]
Fix linux installer script
Robin Gareus [Fri, 3 Jan 2020 01:22:11 +0000 (02:22 +0100)]
installer-script ARM CPU support
Robin Gareus [Thu, 2 Jan 2020 18:06:21 +0000 (19:06 +0100)]
Unconditionally save instant.xml on session-close
This forces saving session-specific GUI settings (Playhead
position, zoom/scroll with stationary PH, window and pane
positions, etc.
While many GUI operations immediately cause an instant.xml
save, changing the playhead-pos in particular does not, nor
mark the session as modified.
This fixes an issue:
1. open session
2. move playhead
3. close session
4. re-open session, expect playhead at position from (2)
Robin Gareus [Wed, 1 Jan 2020 20:56:12 +0000 (21:56 +0100)]
Fix crash when X11 is not available for VST UIs
This should not happen -- VST gui_event_loop is only
started if LXVST_XDisplay is not NULL.
However the eventloop itself checks if LXVST_XDisplay is set,
so this might happen with headless builds that still have
access to a display, or due to some async event.
Robin Gareus [Wed, 1 Jan 2020 19:52:07 +0000 (20:52 +0100)]
Remove debug output
Robin Gareus [Wed, 1 Jan 2020 12:41:27 +0000 (13:41 +0100)]
Bump (C) year: the year of Ardour
Paul Davis [Tue, 31 Dec 2019 19:06:00 +0000 (12:06 -0700)]
convert GenericMIDI into a real control protocol module, with its own event loop and ports
Paul Davis [Tue, 31 Dec 2019 19:05:06 +0000 (12:05 -0700)]
ensure that xmlKeepBlankDefault() is called early in instance-life, from PBD::init()
See comment for details on why
Paul Davis [Mon, 30 Dec 2019 18:49:20 +0000 (11:49 -0700)]
remove MIDI Control input and output ports from session-level objects
John Emmas [Tue, 31 Dec 2019 10:11:18 +0000 (10:11 +0000)]
Fix two more cases of of C99 strtoll()
Robin Gareus [Mon, 30 Dec 2019 18:05:10 +0000 (19:05 +0100)]
Fix MSVC builds, use C89 strtol() instead of C99 strtoll()
For the case at hand (plugin scale-points) it's highly unlikely to
encounter numbers > INT_MAX.
Paul Davis [Mon, 30 Dec 2019 17:36:04 +0000 (10:36 -0700)]
restore early-return from fixup_bundle_environment() on macOS if not running from a bundle
Mistakenly removed while getting stdout/stderr logging to work
Paul Davis [Mon, 30 Dec 2019 16:49:23 +0000 (09:49 -0700)]
use a local version (copy) of the G_SOURCE_FUNC macro, since it is not available in the GTK+ version we use for the official build stack
Robin Gareus [Mon, 30 Dec 2019 15:05:25 +0000 (16:05 +0100)]
Fix formatting samplecnt_t (aka int64_t aka long long int)
Robin Gareus [Mon, 30 Dec 2019 15:00:22 +0000 (16:00 +0100)]
Revert "fix a cast warning (as recommended in GTK+ docs"
This reverts commit
af30a6f001f0758155b3ece040fc2baa643a29de
because it breaks OSX/MacOS builds:
libs/surfaces/mackie/mackie_control_protocol.cc:945: error: 'G_SOURCE_FUNC' was not declared in this scope
Paul Davis [Mon, 30 Dec 2019 02:38:04 +0000 (19:38 -0700)]
move Transport Masters prefs tab under Transport, with LTC and MTC as subtabs
Paul Davis [Mon, 30 Dec 2019 01:53:22 +0000 (18:53 -0700)]
expand use of new BasicUI API for transport button state to all control surfaces
Paul Davis [Mon, 30 Dec 2019 01:43:37 +0000 (18:43 -0700)]
use new Session API to deal with transport state
Transition to use BasicUI button state API to come
Paul Davis [Mon, 30 Dec 2019 01:43:07 +0000 (18:43 -0700)]
use new BasicUI and Session API to deal with transport state
Paul Davis [Mon, 30 Dec 2019 01:42:34 +0000 (18:42 -0700)]
provide new methods for BasicUI that wrap the "complexity" of how to show transport state via lit buttons
Paul Davis [Mon, 30 Dec 2019 01:41:46 +0000 (18:41 -0700)]
recomment a DEBUG_TRACE statement that generates too much output with -D transport
Paul Davis [Mon, 30 Dec 2019 01:41:23 +0000 (18:41 -0700)]
add EMIT_SIGNAL comment
Paul Davis [Mon, 30 Dec 2019 01:41:02 +0000 (18:41 -0700)]
add Session::transport_stopped_or_stopping()
Session::TransportStateChanged notifies about transport stop before the stop is complete (i.e. at the start of the declick).
Various other objects (notably control surfaces) connect to this signal and use it to modify their displayed state.
We need a method that can tell them we are stopped (or stopping) even though we are not "fully" stopped yet. This is
that method
Paul Davis [Mon, 30 Dec 2019 00:48:18 +0000 (17:48 -0700)]
fix a cast warning (as recommended in GTK+ docs
Robin Gareus [Sun, 29 Dec 2019 18:48:45 +0000 (19:48 +0100)]
Use human-numeric-sort for plugin scale-points
Robin Gareus [Sun, 29 Dec 2019 18:47:48 +0000 (19:47 +0100)]
Add a numerically_less compare operator
This is similar to sort(1) --human-numeric-sort,
as opposed to naturally_less() negative numbers, hex-prefixes
and SI metric prefixes are taken into account.
Paul Davis [Sat, 28 Dec 2019 04:15:16 +0000 (21:15 -0700)]
fix JACK transport sync
key change: to sync with JACK always locate jack-position PLUS buffer-sized-rounded-worst_latency_preroll() ahead
Paul Davis [Sat, 28 Dec 2019 04:11:38 +0000 (21:11 -0700)]
add new Session method to return the worst_latency_preroll() value rounded up to the nearest buffer size
Paul Davis [Sat, 28 Dec 2019 04:10:27 +0000 (21:10 -0700)]
register TransportState enum for use with enumwriter
Robin Gareus [Fri, 27 Dec 2019 17:42:20 +0000 (18:42 +0100)]
NO-OP: whitespace
Robin Gareus [Fri, 27 Dec 2019 11:46:32 +0000 (12:46 +0100)]
Consolidate mini-timeline rendering
Robin Gareus [Thu, 26 Dec 2019 22:57:04 +0000 (23:57 +0100)]
Preferences/Config changes for image-surface settings
Robin Gareus [Thu, 26 Dec 2019 22:55:44 +0000 (23:55 +0100)]
Replace explicit image-surface with cairo pattern/group
For MacOS/X this is equivalent, rendering happens using a
CGBitmapContext + image-surface. Windows and Linux needs profiling
for respective equivalent surfaces.
Robin Gareus [Thu, 26 Dec 2019 17:19:21 +0000 (18:19 +0100)]
Allow for per-widget image-surface backing
This is an intermediate commit, before replacing image surfaces with
cairo pattern groups.
The eventual goal is to reduce flickering and/or use
CPU + bitblt for specific widgets instead of cairo
graphics-cards accel.
This also removes excessive calls to getenv() for every rendering
operation.
Paul Davis [Fri, 27 Dec 2019 17:50:56 +0000 (10:50 -0700)]
remove unused member
Note: there is no global state for "the" transport master, since we have several at all times now
Paul Davis [Fri, 27 Dec 2019 17:49:14 +0000 (10:49 -0700)]
variable rename
Paul Davis [Fri, 27 Dec 2019 16:29:28 +0000 (09:29 -0700)]
improve parseability of a comment
Robin Gareus [Thu, 26 Dec 2019 11:17:20 +0000 (12:17 +0100)]
Vkeybd: force release notes on panic
If key(s) are still being pressed, a key-repeat will re-trigger
the most recently pressed note (depending on keyboard settings).
Robin Gareus [Wed, 25 Dec 2019 17:00:57 +0000 (18:00 +0100)]
Use weak-ptr for source added/removed signals (2/2)
Robin Gareus [Wed, 25 Dec 2019 16:59:38 +0000 (17:59 +0100)]
Use weak-ptr for source added/removed signals (1/2)
This might fix a "SessionHandleRef exists across session deletion",
when the shared_ptr was be pushed onto a x-thread pool, and not
invalidated in time before the session was closed.
Robin Gareus [Wed, 25 Dec 2019 16:57:10 +0000 (17:57 +0100)]
Prevent copy-construction of sources to be destroyed list
destroy_sources () is only called from Session::remove_last_capture ().
The list of sources to be destroyed is the local scope of that method
and will hold a reference to the object.
copy-construct the list and removing elements one by one from the
copy is only unnecessary overhead.
Robin Gareus [Wed, 25 Dec 2019 16:52:02 +0000 (17:52 +0100)]
NO-OP: comment signal emission
Robin Gareus [Wed, 25 Dec 2019 11:46:34 +0000 (12:46 +0100)]
Vkeybd: improve velocity dropdown usability
Limit velocity dropdown to a subset of most used values, but
allow to select any value using mouse-wheel
Robin Gareus [Tue, 24 Dec 2019 17:15:09 +0000 (18:15 +0100)]
Vkeybd: use ArdourWidgets for all GUI elements
Remove Gtk widgets and improve look&feel consistency.
Paul Davis [Mon, 23 Dec 2019 17:26:33 +0000 (10:26 -0700)]
use new method in MidiPatchManager to use MIDNAM data when setting a MidiTimeAxisView
Paul Davis [Mon, 23 Dec 2019 17:26:05 +0000 (10:26 -0700)]
add a mechanism to use existing MIDNAM info and connect to PatchesChanged in future, atomically
The atomically is with respect to the initial thread-based MIDNAM loading
Paul Davis [Thu, 19 Dec 2019 20:30:18 +0000 (13:30 -0700)]
basics of threaded MIDNAM loading
Robin Gareus [Thu, 19 Dec 2019 22:02:19 +0000 (23:02 +0100)]
Vkeybd: numeric only spinboxes for octave and velocity
based on a patch by Alex Mitchell
Paul Davis [Thu, 19 Dec 2019 20:14:19 +0000 (13:14 -0700)]
slightly enhanced error handling when loading MIDNAM data
Paul Davis [Thu, 19 Dec 2019 20:11:43 +0000 (13:11 -0700)]
handle MIDI rendering correctly when there are no regions
Robin Gareus [Thu, 19 Dec 2019 03:27:54 +0000 (04:27 +0100)]
Vkeybd simplification
* remove Y-axis dependent velocity (difference between
black/white keys made this not very usable
* remove Bank/Patch selector (there are already three other
Bank/Patch UIs
* move keyboard-layout selection into Preferences > MIDI
Robin Gareus [Wed, 18 Dec 2019 14:01:46 +0000 (15:01 +0100)]
Vkeybd: re-layout, prepare config & patch pane removal
Robin Gareus [Wed, 18 Dec 2019 14:01:17 +0000 (15:01 +0100)]
Vkeybd: add a mod-wheel
Paul Davis [Thu, 19 Dec 2019 16:09:42 +0000 (09:09 -0700)]
fix thinko ... we're checking if a DiskReader handles audio
Paul Davis [Thu, 19 Dec 2019 02:56:38 +0000 (19:56 -0700)]
further improve debug message
Paul Davis [Thu, 19 Dec 2019 02:50:32 +0000 (19:50 -0700)]
fix thinko in MidiRegion::render()
MidiSource::read() wants a length, not an end-sample.
This should fix (at least) some cases where notes past the region end
get included/played
Paul Davis [Thu, 19 Dec 2019 02:49:34 +0000 (19:49 -0700)]
remove debug message
Paul Davis [Thu, 19 Dec 2019 02:49:09 +0000 (19:49 -0700)]
fix debug message
Paul Davis [Thu, 19 Dec 2019 01:00:53 +0000 (18:00 -0700)]
fix Temporal::Beats::operator*
Paul Davis [Thu, 19 Dec 2019 01:00:33 +0000 (18:00 -0700)]
tweak debug output
Paul Davis [Thu, 19 Dec 2019 00:34:39 +0000 (17:34 -0700)]
do not try to process audio in a diskreader with no audio playlist
Paul Davis [Wed, 18 Dec 2019 22:05:35 +0000 (15:05 -0700)]
fix crash when looping with a MIDI track
Robin Gareus [Wed, 18 Dec 2019 14:04:41 +0000 (15:04 +0100)]
Remove VST plugin discovery option from first-start wizard
Because (a) it makes the startup seem "very long and complicated",
and (b) sometimes fails or crashes weirdly,
or (c) a plugin dialog gets hidden behind the main window, or ...
Overall the first impression of the program may be horrible when
the first step includes discovering VST plugins.
Robin Gareus [Tue, 17 Dec 2019 23:54:11 +0000 (00:54 +0100)]
Fix DSP load sorting with inactive plugins
Robin Gareus [Tue, 17 Dec 2019 21:54:55 +0000 (22:54 +0100)]
Cont'd work on Playlists import from old 2.x sessions
v2.0.0 sessions don't save empty playlists. So missing playlists
for a give diskstream are fine. Just use a default empty one.
Paul Davis [Tue, 17 Dec 2019 20:21:33 +0000 (13:21 -0700)]
a new stop command while in the middle of declick-to-stop is not a bad transition
Robin Gareus [Tue, 17 Dec 2019 16:17:27 +0000 (17:17 +0100)]
Directly apply MIDI automation state changes
Previously "play/off" and "discrete/linear" changes had no effect
until the MIDI playlist was edited and MIDI re-read into RAM.
Robin Gareus [Tue, 17 Dec 2019 15:47:46 +0000 (16:47 +0100)]
VKeybd: exponential pitch-wheel/bend interpolation
Robin Gareus [Tue, 17 Dec 2019 04:56:49 +0000 (05:56 +0100)]
Fix MIDI port i/o when vari-speeding
Robin Gareus [Tue, 17 Dec 2019 00:53:33 +0000 (01:53 +0100)]
Indicate current Disk-I/O setting
Robin Gareus [Mon, 16 Dec 2019 23:34:26 +0000 (00:34 +0100)]
Convert Disksteam & Playlists from old 2.x sessions
Paul Davis [Mon, 16 Dec 2019 23:18:30 +0000 (16:18 -0700)]
remove mistakenly left-in debug stacktrace
Paul Davis [Mon, 16 Dec 2019 23:13:27 +0000 (16:13 -0700)]
reinstate missing latency initialization code
Removed (mistakenly) during work on transportFSM
Paul Davis [Mon, 16 Dec 2019 23:13:02 +0000 (16:13 -0700)]
expand DEBUG_TRACE output
Robin Gareus [Mon, 16 Dec 2019 21:16:40 +0000 (22:16 +0100)]
Remove cruft, unused API
Robin Gareus [Mon, 16 Dec 2019 17:30:09 +0000 (18:30 +0100)]
Parse v2 session-information
Robin Gareus [Mon, 16 Dec 2019 17:29:32 +0000 (18:29 +0100)]
Lua bindings for well-known send controls
Nikolaus Gullotta [Mon, 16 Dec 2019 19:06:04 +0000 (13:06 -0600)]
Add additional roll check in transport_record
Previously there was no check for roll in case Session::Enabled this
can cause issues with "latched-record-enable" and "transport-roll"
Paul Davis [Mon, 16 Dec 2019 17:24:38 +0000 (10:24 -0700)]
fix logic error that prevented MIDI playlists from being rendered at load time
An edit was required to force the render
Robin Gareus [Mon, 16 Dec 2019 14:37:08 +0000 (15:37 +0100)]
Vkeybd: fix octave up/down direction, speed up pitch-bend
John Emmas [Mon, 16 Dec 2019 14:34:41 +0000 (14:34 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)
Robin Gareus [Mon, 16 Dec 2019 14:02:39 +0000 (15:02 +0100)]
Vkeybd: grab all key-events and use timer instead of key-repeat
This fixes an issue with arrow-keys (up/down, left/right). Those
were previously only handled when the Virtual Keyboard window itself
had focus.
Also key-repeat for pitch-bend is now ignored and a dedicated timer
is used to queue events. This fixes an issue with the first repeat
taking longer than successive ones, and makes this feature independent
of any desktop user settings.
Robin Gareus [Mon, 16 Dec 2019 01:30:33 +0000 (02:30 +0100)]
Vkeybd: Experiment with key-repeat for pitch-bend
Robin Gareus [Sun, 15 Dec 2019 19:34:14 +0000 (20:34 +0100)]
VKeybd: Pass on primary (Ctrl/Cmd) shortcuts
This allows Ctrl/Cmd+s (save) and Ctrl/Cmd+z (undo) etc shortcuts
to work, even though the virtual-keyboard is visible.