Robin Gareus [Wed, 4 Dec 2019 21:59:51 +0000 (22:59 +0100)]
Allow using ArdourSans as optional default font
Robin Gareus [Wed, 4 Dec 2019 18:02:16 +0000 (19:02 +0100)]
Clear AudioEngine Error at app start
Robin Gareus [Wed, 4 Dec 2019 18:02:00 +0000 (19:02 +0100)]
Bundle ArdourSans with packages
Robin Gareus [Wed, 4 Dec 2019 18:01:44 +0000 (19:01 +0100)]
Load and register ArdourSans font at application start
Robin Gareus [Wed, 4 Dec 2019 18:01:20 +0000 (19:01 +0100)]
Bundle a common Sans Font
ArdourSans is based on Oxygen from https://fonts.google.com/
Copyright (c) 2012, vernon adams (vern@newtypography.co.uk)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
Robin Gareus [Tue, 3 Dec 2019 21:02:46 +0000 (22:02 +0100)]
Remove cruft - amend
279faad7
Robin Gareus [Tue, 3 Dec 2019 16:55:37 +0000 (17:55 +0100)]
New approach for Lua bindings to avoid LuaBridge_API in GUI code
Declare DoubleArray in GUI context so that runtime uses the symbol
from the .exe (not the .dll).
This is mainly for the benefit of MSVC, that does not allow to use
LuaBridge_API in .exe
Robin Gareus [Tue, 3 Dec 2019 02:29:35 +0000 (03:29 +0100)]
Amend
1caef183 (Windows Lua bindings)
Robin Gareus [Tue, 3 Dec 2019 01:29:37 +0000 (02:29 +0100)]
Libardour part of
1caef18 (Windows Lua bindings)
Robin Gareus [Tue, 3 Dec 2019 01:27:44 +0000 (02:27 +0100)]
Fix Windows builds
This fixes a missing symbol error due to the weird way how
Windows maps the same, identical symbols using different addresses
in .dll and .exe. Here specifically for
int luabridge::CFunc::vectorToArray<double, std::vector<double, std::allocator<double> > >(lua_State*)
which was added in
5e1a73a28c07 resulting in
gtk2_ardour/luainstance.cc error: explicit instantiation of 'static const void* luabridge::ClassInfo<T>::getStaticKey() [with T = std::vector<double>]' but no definition available [-fpermissive]
gtk2_ardour/luainstance.cc error: explicit instantiation of 'static const void* luabridge::ClassInfo<T>::getClassKey() [with T = std::vector<double>]' but no definition available [-fpermissive]
gtk2_ardour/luainstance.cc error: explicit instantiation of 'static const void* luabridge::ClassInfo<T>::getConstKey() [with T = std::vector<double>]' but no definition available [-fpermissive]
Robin Gareus [Mon, 2 Dec 2019 23:22:33 +0000 (00:22 +0100)]
Amend previous commit, fluidsynth tables
Robin Gareus [Mon, 2 Dec 2019 22:58:15 +0000 (23:58 +0100)]
Update to fluidsynth-2.1
see https://github.com/FluidSynth/fluidsynth/releases/tag/v2.1.0
- new, less "ringing" reverb engine
- new, stereophonic chorus engine
- improved integrity checking of SoundFont modulators
...
Robin Gareus [Sun, 1 Dec 2019 20:32:51 +0000 (21:32 +0100)]
Lua MIDI genertors
Robin Gareus [Sun, 1 Dec 2019 20:32:10 +0000 (21:32 +0100)]
Add Lua typecast from C++ vector to C-Array
This is useful for MIDI bytes amongst other things
Robin Gareus [Fri, 29 Nov 2019 15:27:37 +0000 (16:27 +0100)]
Use a detached window for Preferences at first run
Once a user explicitly attaches the Window as Tab, we
expect the user to know about tabbing, tab-cycling, related
window/tab actions, and relevant shortcuts.
Otherwise it can confusing:
https://discourse.ardour.org/t/cant-get-out-of-preferences/102147
Robin Gareus [Wed, 27 Nov 2019 23:54:30 +0000 (00:54 +0100)]
Update tomsloop script for A6 - Thanks to Tom Brand
Robin Gareus [Tue, 26 Nov 2019 22:49:06 +0000 (23:49 +0100)]
Reset paste-count, paste-offset on undo/redo
This fixes an workflow edge-case when undoing a paste in order
to paste at a different location on the same track or automation lane.
After undo, any accumulated paste-offset needs to be reset
Stefan Westerfeld [Tue, 26 Nov 2019 10:22:04 +0000 (11:22 +0100)]
Fix thread-safety issue in a-fluidsynth.
This fix ensures that the a-fluidsynth "synth" object is not used in two
threads at the same time during midi event handling (run() in RT thread vs.
load_sf2() in worker thread), which could result in crashes.
Robin Gareus [Tue, 26 Nov 2019 16:02:41 +0000 (17:02 +0100)]
Update Lua scripts to use new transport request API
Paul Davis [Sun, 24 Nov 2019 18:32:34 +0000 (11:32 -0700)]
fix crash when using Region > Loop
Robin Gareus [Sun, 24 Nov 2019 17:20:49 +0000 (18:20 +0100)]
Remember Virtual-Keyboard window size and position
Paul Davis [Sat, 23 Nov 2019 22:54:34 +0000 (15:54 -0700)]
remove debug output
Paul Davis [Sat, 23 Nov 2019 22:54:21 +0000 (15:54 -0700)]
remove debug output
Paul Davis [Sat, 23 Nov 2019 22:54:09 +0000 (15:54 -0700)]
tweak comment text
Paul Davis [Sat, 23 Nov 2019 22:53:54 +0000 (15:53 -0700)]
2nd part of fix for autoloop event removal when loop bounds are changed while looping
Paul Davis [Sat, 23 Nov 2019 22:52:49 +0000 (15:52 -0700)]
remove debug message about LOCATE WITHOUT DECLICK. This behavior is normal and legal when looping
Paul Davis [Sat, 23 Nov 2019 22:52:05 +0000 (15:52 -0700)]
fix incorrect removal of autoloop event when loop bounds are changed while looping
Paul Davis [Sat, 23 Nov 2019 22:51:30 +0000 (15:51 -0700)]
fix locate-while-rolling
Paul Davis [Sat, 23 Nov 2019 20:37:00 +0000 (13:37 -0700)]
fix startup crash if no loop range is defined
Paul Davis [Sat, 23 Nov 2019 07:09:46 +0000 (00:09 -0700)]
more tweaks to correctly (or more correctly) reload disk reader buffers when loop fade choice changes
Paul Davis [Sat, 23 Nov 2019 06:41:56 +0000 (23:41 -0700)]
redesign of declicking and fades around loop boundaries
Robin Gareus [Fri, 22 Nov 2019 21:12:48 +0000 (22:12 +0100)]
Enable some key release event forwarding
This is needed for the virtual MIDI keyboard to trigger note-off events
Robin Gareus [Fri, 22 Nov 2019 21:11:55 +0000 (22:11 +0100)]
Virtual MIDI keyboard, when visible, gets to handle keyboard input first
Robin Gareus [Fri, 22 Nov 2019 19:06:43 +0000 (20:06 +0100)]
Save VST paths after successful scan
Ardour only saves Config when the session is saved.
When changing the VST Path and starting a plugin-scan the newly
discovered plugins would otherwise not be avalable unless
the session is explicitly saved after a scan.
Robin Gareus [Fri, 22 Nov 2019 19:05:04 +0000 (20:05 +0100)]
Inform LV2 plugins about main window ID
Robin Gareus [Fri, 22 Nov 2019 19:01:32 +0000 (20:01 +0100)]
Add support for LV2/KX transient-ID option
Robin Gareus [Thu, 21 Nov 2019 22:37:31 +0000 (23:37 +0100)]
Fix buffer-overflow when vari-speeding
Session::process() can call split-cycle which offset the
buffer pointers. When vari-speeding at speed > 1.0, the
engine also splits the cycle every n_samples, to not exceed
the configured buffersize. This needs to take prior buffer
offsets into account.
Robin Gareus [Thu, 21 Nov 2019 16:49:20 +0000 (17:49 +0100)]
GUI: Use new boost::optional API
get_value_or() has been deprecated since boost 1.56
Robin Gareus [Thu, 21 Nov 2019 16:48:56 +0000 (17:48 +0100)]
Use new boost::optional API
get_value_or() has been deprecated since boost 1.56
Robin Gareus [Thu, 21 Nov 2019 16:43:32 +0000 (17:43 +0100)]
Bump boost version requirement
1.56 is needed for boost::optional::value_or
Robin Gareus [Thu, 21 Nov 2019 01:54:19 +0000 (02:54 +0100)]
Fix multi-channel de-click
_declick_amp gain needs to be reset for each channel before
the test (_declick_amp.gain() != target_gain) if de-clicking
is needed.
Paul Davis [Wed, 20 Nov 2019 16:37:14 +0000 (09:37 -0700)]
add mixer actions for toggle disk & input monitoring; bind to d and i in mixer bindings
Robin Gareus [Tue, 19 Nov 2019 15:20:28 +0000 (16:20 +0100)]
Fix declick offset position for multi-channel tracks
Paul Davis [Tue, 19 Nov 2019 04:38:46 +0000 (21:38 -0700)]
DiskReader::_declick_offs should only advance once per ::run() call
Paul Davis [Tue, 19 Nov 2019 04:38:25 +0000 (21:38 -0700)]
DiskReader::_declick_amp needs to repeat the same work for each audio channel handled
Paul Davis [Tue, 19 Nov 2019 04:29:32 +0000 (21:29 -0700)]
fix transport FSM to stop first and declick later
Paul Davis [Tue, 19 Nov 2019 03:47:47 +0000 (20:47 -0700)]
small changes to make declick out triggered by just stopping
Robin Gareus [Tue, 19 Nov 2019 02:33:28 +0000 (03:33 +0100)]
Fix some script icons for non-square buttons
Robin Gareus [Tue, 19 Nov 2019 02:19:08 +0000 (03:19 +0100)]
Fix Lua Pangolayout ellipsis width
Robin Gareus [Tue, 19 Nov 2019 01:52:35 +0000 (02:52 +0100)]
Consistent toolbar button height
Robin Gareus [Tue, 19 Nov 2019 01:47:11 +0000 (02:47 +0100)]
Improve toolbar layout consistency
Directly pack Lua Script buttons into top-level table,
use same size-constraints.
Use consistent Lua Action button width, in particular for buttons 10..12.
prefer "a" instead of "10" for default numeric label
Paul Davis [Mon, 18 Nov 2019 22:38:18 +0000 (15:38 -0700)]
unset _reversed whenever RTMidiBuffer gets ::clear()'ed
Paul Davis [Mon, 18 Nov 2019 20:06:16 +0000 (13:06 -0700)]
add missing NULL check
Robin Gareus [Mon, 18 Nov 2019 19:21:40 +0000 (20:21 +0100)]
Latency compensation is independent of transport-logic
This also fixes a concurrency issue when when non-realtime-stop
and graph-reorder or other rt-latency changes coincide.
Paul Davis [Mon, 18 Nov 2019 19:01:26 +0000 (12:01 -0700)]
use reverse-reading of MIDI data in DiskReader
Paul Davis [Mon, 18 Nov 2019 18:40:59 +0000 (11:40 -0700)]
support backwards reading of MIDI from RTMidiBuffer
Paul Davis [Mon, 18 Nov 2019 18:40:06 +0000 (11:40 -0700)]
fix typo/thinko in logic to decide if MIDI buffers in DiskWriter require the butler (to write to disk)
Robin Gareus [Mon, 18 Nov 2019 14:10:15 +0000 (15:10 +0100)]
Fix automation lookup when rolling backwards
Robin Gareus [Mon, 18 Nov 2019 14:09:43 +0000 (15:09 +0100)]
NO-OP: simplify code
find_next_ac_event, needs to find the next event *after* (but not
at) start.
std::upper_bound returns an iterator pointing to the first element
in the range [first, last) that is greater than value.
This is equivalent to using std::lower_bound an iterating until
finding the first element greater than.
Robin Gareus [Mon, 18 Nov 2019 14:06:59 +0000 (15:06 +0100)]
Automation event lookup when rolling backwards
When rolling backwards we need to be able to find
the *next* event before "start".
Robin Gareus [Sun, 17 Nov 2019 13:51:33 +0000 (14:51 +0100)]
Tweak LFO script
* thin automation to prevent too dense events
* add icon (cosine wave)
Paul Davis [Sat, 16 Nov 2019 03:42:15 +0000 (20:42 -0700)]
remove debug output
Paul Davis [Sat, 16 Nov 2019 03:40:23 +0000 (20:40 -0700)]
fix questionable and not entirely intended change that was a part of
dad47e445cb349
Paul Davis [Fri, 15 Nov 2019 22:58:29 +0000 (15:58 -0700)]
better transport master behavior when working with sample-clock-synced transport masters
Paul Davis [Fri, 15 Nov 2019 22:57:13 +0000 (15:57 -0700)]
improve behavior when synced to JACK transport
Heuristic and actions when a locate is needed are different for
JACK transport than TC
Paul Davis [Fri, 15 Nov 2019 22:54:41 +0000 (15:54 -0700)]
improve initial coordinate with JACK transport state
Paul Davis [Fri, 15 Nov 2019 22:52:20 +0000 (15:52 -0700)]
better debugging message
Paul Davis [Fri, 15 Nov 2019 22:51:58 +0000 (15:51 -0700)]
consolidate setting of "get roll after locate" in TFSM
Paul Davis [Fri, 15 Nov 2019 22:50:33 +0000 (15:50 -0700)]
NO-OP: move brace
Paul Davis [Fri, 15 Nov 2019 22:50:05 +0000 (15:50 -0700)]
when synced to JACK transport, transport requests go there first.
Paul Davis [Fri, 15 Nov 2019 22:49:08 +0000 (15:49 -0700)]
fix behavior of Session::maybe_stop() when synced to JACK Transport
Paul Davis [Fri, 15 Nov 2019 22:48:29 +0000 (15:48 -0700)]
make comment more accurate
Paul Davis [Fri, 15 Nov 2019 22:47:29 +0000 (15:47 -0700)]
consolidate Session::locate() and Session::do_locate()
The first no longer needs to handle requests by passing them to
JACK transport
Paul Davis [Fri, 15 Nov 2019 22:16:50 +0000 (15:16 -0700)]
no need for MidiClockTransportMaster::starting() method
Paul Davis [Fri, 15 Nov 2019 22:15:41 +0000 (15:15 -0700)]
improve behavior of JACK transport sync callback.
Do not call transport actions directly, just report back to JACK
on transport status.
Paul Davis [Fri, 15 Nov 2019 22:14:54 +0000 (15:14 -0700)]
add a bit of debugging to JACK transport code
Paul Davis [Fri, 15 Nov 2019 22:14:09 +0000 (15:14 -0700)]
fix resampling ratio when stopped (corner case - not typically called)
Paul Davis [Fri, 15 Nov 2019 22:12:49 +0000 (15:12 -0700)]
move DiskReader::inc_no_disk_output() into .cc to allow for easier debugging
Paul Davis [Tue, 12 Nov 2019 01:23:22 +0000 (18:23 -0700)]
fix crash with -D slave caused by too-early use of a transport master's _port member
Paul Davis [Tue, 12 Nov 2019 01:22:45 +0000 (18:22 -0700)]
fix oddly damaged code (vs. 5.x) for EngineSlave core methods (JACK transport)
Paul Davis [Tue, 12 Nov 2019 01:21:47 +0000 (18:21 -0700)]
eliminate hacky design for being able to deliver the correct time as JACK timebase master
Paul Davis [Tue, 12 Nov 2019 01:02:37 +0000 (18:02 -0700)]
fix up the creation & state restore of the TransportMasterManager
Paul Davis [Tue, 12 Nov 2019 00:52:48 +0000 (17:52 -0700)]
put JACK time master option back in the menus
Daniel Appelt [Thu, 14 Nov 2019 09:08:13 +0000 (10:08 +0100)]
Add script to create LFO-like plugin automation
Robin Gareus [Thu, 14 Nov 2019 20:50:00 +0000 (21:50 +0100)]
Fix cycle-end position when not rolling
When stopped start_sample == end_sample.
This fixes accidental automation lookup,
as well as plugin time/position information.
Robin Gareus [Thu, 14 Nov 2019 20:37:14 +0000 (21:37 +0100)]
Relax LV2 time-info re-transmission condition
Allow beat (quarter-note count) to drift by 1/100 beat before re-sync.
This prevents excessive re-transmissions
Robin Gareus [Thu, 14 Nov 2019 20:15:30 +0000 (21:15 +0100)]
LV2 extension for host's time-scale vari-speed
Ardour 6 internally always runs at speed 1.0 (or -1.0, or stopped 0.0).
There is no vari-speed that scale "BPM" or "n_sample" time progression
per cycle.
Instead Ardour 6 vari-speed mechanism transparently re-samples I/O.
So process-time is scaled only relative to wall-clock time.
From a plugin's POV this is similar to "freewheeling": The plugin
processes data as if the host plays at speed 1.0. While the host
plays this data at a different rate.
Some plugins may like to be informed about the host's actual
playback rate.
Currently this is mainly for the benefit of github.com/x42/repitch.lv2.git
Robin Gareus [Thu, 14 Nov 2019 19:03:22 +0000 (20:03 +0100)]
Initialize uninitialized variables
This also ensures that musical-time information is initially
transmitted to a plugin.
Robin Gareus [Thu, 14 Nov 2019 18:39:48 +0000 (19:39 +0100)]
Allow vari-speed slowdown down to 2%
Robin Gareus [Wed, 13 Nov 2019 22:00:12 +0000 (23:00 +0100)]
Fix MIDNAM device list for plugin-provided names
Robin Gareus [Wed, 13 Nov 2019 21:14:19 +0000 (22:14 +0100)]
Amend previous commit - latch toggles only while rolling
Robin Gareus [Wed, 13 Nov 2019 21:02:07 +0000 (22:02 +0100)]
Automation watch toggle buttons and enforce latch
Robin Gareus [Wed, 13 Nov 2019 16:21:51 +0000 (17:21 +0100)]
Remove boolean automation special case
Previously setting a boolean-control to "write" and roll did not
create an automation-point.
The state was not correctly captured.
The boolean-control needed to be toggled explicitly to create
an automation point.
Robin Gareus [Wed, 13 Nov 2019 15:57:28 +0000 (16:57 +0100)]
Fix automation-write when locating
When locating while writing automation, begin a new write-pass,
and add a guard point at the locate target position.
NB set_in_write_pass takes 3 arguments: (write_enable, add_point, when)
the last two default to false, 0.
Robin Gareus [Wed, 13 Nov 2019 15:53:46 +0000 (16:53 +0100)]
Fix bool-automation anchor
Typo sneaked in from
ff2f93497...
cc7de475f2
Robin Gareus [Tue, 12 Nov 2019 18:34:12 +0000 (19:34 +0100)]
Tweak layout of Plugin-Preset dialog
Robin Gareus [Tue, 12 Nov 2019 16:00:50 +0000 (17:00 +0100)]
Allow to override plugin-provided MIDNAM
Robin Gareus [Tue, 12 Nov 2019 05:29:05 +0000 (06:29 +0100)]
Skip custom MIDNAM files in generic MTAV list
Robin Gareus [Tue, 12 Nov 2019 05:28:02 +0000 (06:28 +0100)]
Add API to query if a given MIDNAM is plugin-provided
Robin Gareus [Mon, 11 Nov 2019 23:07:51 +0000 (00:07 +0100)]
Indicate the numeric peak-hold is always digital-peak