Paul Davis [Sun, 3 Nov 2019 01:35:35 +0000 (19:35 -0600)]
for now, show how long MIDI rendering takes
Paul Davis [Sun, 3 Nov 2019 01:35:25 +0000 (19:35 -0600)]
use playback filter when rendering MIDI; respond to changes in filter by re-rendering
Robin Gareus [Sat, 2 Nov 2019 23:28:53 +0000 (00:28 +0100)]
Auto-connect input should not disconnect other ports
This fixes an issue with existing MIDI routing between MIDI tracks
and/or busses. Automatic MIDI connections should only dis/re-connect
ports that are explicitly configured in Preferences > MIDI Ports
and leave all other connections alone.
Robin Gareus [Sat, 2 Nov 2019 22:52:29 +0000 (23:52 +0100)]
Virtual-keyboard: "Tab" to sustain (still undocumented)
Paul Davis [Sat, 2 Nov 2019 22:20:32 +0000 (16:20 -0600)]
part 1 of replicating semantics of ARDOUR_UI::toggle_roll() in BasicUI::toggle_roll()
This can be done better, even without sharing code
Paul Davis [Sat, 2 Nov 2019 22:12:28 +0000 (16:12 -0600)]
improve operation of ARDOUR_UI::toggle_roll() for loop mode (particularly when loop-is-mode)
Paul Davis [Sat, 2 Nov 2019 22:12:08 +0000 (16:12 -0600)]
comment update
Paul Davis [Sat, 2 Nov 2019 22:11:56 +0000 (16:11 -0600)]
use new API to make locate happen
Paul Davis [Sat, 2 Nov 2019 22:11:34 +0000 (16:11 -0600)]
don't locate when enabling loop if loop-is-mode
Paul Davis [Sat, 2 Nov 2019 22:11:10 +0000 (16:11 -0600)]
allow explicit "with-roll" argument to a locate to override Session::should_roll_after_locate()
Paul Davis [Sat, 2 Nov 2019 22:10:38 +0000 (16:10 -0600)]
remove unused parameter from Session::set_play_loop() API
Paul Davis [Wed, 30 Oct 2019 17:48:48 +0000 (11:48 -0600)]
lovely simplification of DiskReader::get_midi_playback()
This is made possible by knowing that it is never called upon to read across
loop boundaries. The session splits the process cycle for the end of the loop
Paul Davis [Wed, 30 Oct 2019 04:07:18 +0000 (22:07 -0600)]
make it more likely that debug messages are printed without x-thread interruption
Paul Davis [Wed, 30 Oct 2019 03:36:09 +0000 (21:36 -0600)]
NOOP: newline removed
Paul Davis [Wed, 30 Oct 2019 03:25:04 +0000 (21:25 -0600)]
remove unused (empty) API
Paul Davis [Wed, 30 Oct 2019 03:20:11 +0000 (21:20 -0600)]
remove unused API
Paul Davis [Wed, 30 Oct 2019 03:19:54 +0000 (21:19 -0600)]
add another conditional to decide if we should merge disk MIDI data into input MIDI data
Paul Davis [Wed, 30 Oct 2019 03:19:29 +0000 (21:19 -0600)]
remove commented line
Paul Davis [Wed, 30 Oct 2019 02:48:44 +0000 (20:48 -0600)]
helpful variable rename
Paul Davis [Wed, 30 Oct 2019 02:46:21 +0000 (20:46 -0600)]
clarify clarifying comment
Paul Davis [Sun, 27 Oct 2019 01:54:10 +0000 (19:54 -0600)]
remove MidiPlaylist::read() API
Paul Davis [Sun, 27 Oct 2019 01:51:47 +0000 (19:51 -0600)]
comment out actual action in MidiPlaylistSource::read()
See comment and remember that we do not MidiPlaylistSource at this time.
Paul Davis [Sat, 26 Oct 2019 03:14:43 +0000 (21:14 -0600)]
use a different MidiBuffer API to move data from RT MidiBuffer into MidiBuffer during ::read()
Paul Davis [Fri, 25 Oct 2019 19:41:33 +0000 (13:41 -0600)]
move evoral/src/* to evoral/
Paul Davis [Fri, 25 Oct 2019 19:13:51 +0000 (13:13 -0600)]
rename all Evoral source from .(hpp|cpp)$ to .(h|cc)
Paul Davis [Fri, 25 Oct 2019 18:59:24 +0000 (12:59 -0600)]
NO-OP: whitespace
Paul Davis [Sat, 19 Oct 2019 02:05:22 +0000 (20:05 -0600)]
use a note tracker to resolve notes cut off during render by the end of the region
Paul Davis [Fri, 18 Oct 2019 23:28:36 +0000 (17:28 -0600)]
remove a mistakenly left-in declaration
Paul Davis [Fri, 18 Oct 2019 23:21:51 +0000 (17:21 -0600)]
various adjustments so that a MidiPlaylist gets re-rendered whenever it changes.
This may still be missing a few changes (i.e. they do not cause re-rendering)
Paul Davis [Fri, 18 Oct 2019 23:19:48 +0000 (17:19 -0600)]
do not initiate transport stop during loading when setting capture/playback buffer sizes
Paul Davis [Fri, 18 Oct 2019 16:26:30 +0000 (10:26 -0600)]
add a new "contents" pseudo-property to Region
The type of this property doesn't matter - it only exists so that we can
signal a change to the (MIDI) contents of a Region via PropertyChanged
Paul Davis [Fri, 18 Oct 2019 15:44:16 +0000 (09:44 -0600)]
NOOP: whitespace change
Paul Davis [Fri, 18 Oct 2019 05:39:38 +0000 (23:39 -0600)]
fix thinko when dealing with non-MIDI tracks
Paul Davis [Fri, 18 Oct 2019 05:16:55 +0000 (23:16 -0600)]
start removal of NoteFixer code
Plan is to always read MIDI directly from rendered version. MidiPlaylistSource needs
attention before MidiPlaylist::read() can be removed
Paul Davis [Fri, 18 Oct 2019 05:15:53 +0000 (23:15 -0600)]
move ownership of an RT MIDI buffer from DiskIO to MidiPlaylist
Paul Davis [Fri, 18 Oct 2019 05:11:23 +0000 (23:11 -0600)]
fix reallocation/copy sizes for direct index and blob pool
Paul Davis [Thu, 17 Oct 2019 23:34:00 +0000 (17:34 -0600)]
clear RTMidiBuffer before re-rendering into it
Paul Davis [Thu, 17 Oct 2019 23:32:56 +0000 (17:32 -0600)]
alter where note resolution happens when a re-rendering is scheduled for a MIDI track
Paul Davis [Thu, 17 Oct 2019 21:44:57 +0000 (15:44 -0600)]
refactor SessionEvent and DiskIO so that we pass around boost::shared_ptr<Track> rather than Route
(this the raw pointers used inside SessionEvent)
Paul Davis [Thu, 17 Oct 2019 21:43:44 +0000 (15:43 -0600)]
remove unnecessary fwd decl
Paul Davis [Thu, 17 Oct 2019 21:19:05 +0000 (15:19 -0600)]
add RAII-style write protection while rendering MIDI playlist into RTMidiBuffer
Paul Davis [Thu, 17 Oct 2019 05:07:29 +0000 (23:07 -0600)]
change MidiPlaylist::dump() into ::render(); change type of initial argument
Paul Davis [Wed, 16 Oct 2019 14:18:53 +0000 (08:18 -0600)]
fix initialization order
Paul Davis [Wed, 16 Oct 2019 14:18:43 +0000 (08:18 -0600)]
add extra info to output of RTMidiBuffer::dump()
Paul Davis [Wed, 16 Oct 2019 14:12:04 +0000 (08:12 -0600)]
correct size computation for RTMidiBuffer, and reduce expansion amount
Paul Davis [Wed, 16 Oct 2019 14:04:23 +0000 (08:04 -0600)]
remove unused member variable
Paul Davis [Wed, 16 Oct 2019 03:34:03 +0000 (21:34 -0600)]
reimplement RTMidiBuffer using a highly optimized data structure
Reduces load time of Glass MIDI piece with 48k note events by about 35%. Improves data
locality. Omits size for all 3 byte or less MIDI events, uses implicit size. No limit
on size of sysex.
Relies on the fact that the data structure is always filled linearly in time, and
never modified.
Paul Davis [Tue, 15 Oct 2019 22:57:23 +0000 (16:57 -0600)]
add a MidiStateTracker to DiskReader and use to handle transport stop note resolving
Paul Davis [Tue, 15 Oct 2019 03:28:43 +0000 (21:28 -0600)]
trivial cleanups
Paul Davis [Tue, 15 Oct 2019 01:00:32 +0000 (19:00 -0600)]
introduce new all-in-RAM MIDI datastructure and use it for MIDI playback
Ben Loftis [Sat, 2 Nov 2019 19:57:44 +0000 (14:57 -0500)]
Remove complicated panner theme logic.
Robin Gareus [Sat, 2 Nov 2019 17:47:59 +0000 (18:47 +0100)]
Fan-out multi-channel instruments to tracks (not busses)
Robin Gareus [Sat, 2 Nov 2019 15:33:14 +0000 (16:33 +0100)]
Enable fan-out by default
When adding a new multi-channel instrument, assume the
user wants to pan the outputs independently.
Paul Davis [Sat, 2 Nov 2019 03:14:40 +0000 (21:14 -0600)]
fix the way Session::auto_loop_changed() works to put back various things removed since 5.x
Paul Davis [Sat, 2 Nov 2019 03:13:39 +0000 (21:13 -0600)]
if a complete refill is called for, DiskReader cannot internal seek
Robin Gareus [Sat, 2 Nov 2019 01:43:56 +0000 (02:43 +0100)]
Make virtual-keyboard messages translatable -- #7834
Paul Davis [Fri, 1 Nov 2019 21:57:50 +0000 (15:57 -0600)]
last piece of seamless-loop removal
Paul Davis [Fri, 1 Nov 2019 21:56:06 +0000 (15:56 -0600)]
don't send TFSM event LocateDone after a locate-for-loop-end
See comment for explanation
Paul Davis [Fri, 1 Nov 2019 21:48:16 +0000 (15:48 -0600)]
fix logic error with contents of session dialog shown after "Close"
Paul Davis [Fri, 1 Nov 2019 20:04:16 +0000 (14:04 -0600)]
remove seamless looping as an option (it's now the only kind of looping we support)
Paul Davis [Fri, 1 Nov 2019 19:25:18 +0000 (13:25 -0600)]
cut down on DEBUG::Transport noise
Paul Davis [Fri, 1 Nov 2019 19:24:37 +0000 (13:24 -0600)]
if looping, squish DiskReader::playback_sample into loop range
Paul Davis [Fri, 1 Nov 2019 19:24:05 +0000 (13:24 -0600)]
transportFSM: when locating due to end-of-loop, skip declick and do not transition states
Robin Gareus [Fri, 1 Nov 2019 19:43:41 +0000 (20:43 +0100)]
Disable direct master-send on fan-out
Ben Loftis [Fri, 1 Nov 2019 15:35:53 +0000 (10:35 -0500)]
Fix thinko in aux-fader color.
Robin Gareus [Fri, 1 Nov 2019 14:49:46 +0000 (15:49 +0100)]
Handle Lua DSP script load failure (unknown plugin)
This handles a very specific edge-case: A script that was
successfully parsed before, fails load on session state restore.
Robin Gareus [Fri, 1 Nov 2019 14:39:44 +0000 (15:39 +0100)]
Fix XML-writer edge-case (empty content)
Robin Gareus [Fri, 1 Nov 2019 04:40:30 +0000 (05:40 +0100)]
Fix MIDI Timestretch
* skip notes outside of region-range (source-start, region-length)
* handle tempo-ramps properly, apply map to stretch-fraction
* fix region properties after stretching
(position needs to be re-set first, to set a midi-region's
quarter-note position, which is used by the length calc)
Robin Gareus [Thu, 31 Oct 2019 22:57:46 +0000 (23:57 +0100)]
Consolidate more automation-mode texts
Robin Gareus [Thu, 31 Oct 2019 17:47:08 +0000 (18:47 +0100)]
Fix copy/paste mess in
ab298f035ae
Robin Gareus [Thu, 31 Oct 2019 15:33:56 +0000 (16:33 +0100)]
Remove unused string translation
Robin Gareus [Thu, 31 Oct 2019 14:55:46 +0000 (15:55 +0100)]
Consolidate automation and meter-point strings
This also properly selects texts in dropdown-menus on the mixer-strip,
panner and plugin-controls, gain-meters.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:38:26 +0000 (14:38 +0100)]
Highlight the currently selected item in ArdourDropdown & co
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:21:57 +0000 (14:21 +0100)]
Workaround a GTKMenu bug in ArdourDropdown & co.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 10:34:36 +0000 (11:34 +0100)]
Work around an initialization bug of GTK menus
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:42:37 +0000 (10:42 +0100)]
Update |offset| instead of changing the formula
So that the test to see if it fits also takes the new offset into
account.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:27:16 +0000 (10:27 +0100)]
Align vertical centers of widget and active menuitem
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:26:06 +0000 (10:26 +0100)]
Fix a thinko in x position of menu popups
This has lasted without being noticed because menus that big are not
common.
Robin Gareus [Wed, 30 Oct 2019 23:22:26 +0000 (00:22 +0100)]
NO-OP: whitespace
Robin Gareus [Wed, 30 Oct 2019 23:22:12 +0000 (00:22 +0100)]
Declare helper function static (don't export)
Julien "_FrnchFrgg_" RIVAUD [Wed, 30 Oct 2019 22:53:49 +0000 (23:53 +0100)]
Try harder to put the active item under the mouse (ArdourDropdown)
Robin Gareus [Wed, 30 Oct 2019 22:51:53 +0000 (23:51 +0100)]
Update latency-compensation when re-ordering processors
When re-ordering processors, the route's own latency does not
change (at first).
But it might if sends or plugins with side-chains a involved.
Robin Gareus [Wed, 30 Oct 2019 22:45:27 +0000 (23:45 +0100)]
NO-OP: whitespace/comments
Robin Gareus [Wed, 30 Oct 2019 14:35:23 +0000 (15:35 +0100)]
Suggest multi-out of instruments by default
When a user picks a N-channel instrument with strict i/o.
Offer N-channel (with optional fan-out) as default.
Paul Davis [Wed, 30 Oct 2019 00:20:55 +0000 (18:20 -0600)]
fix vanished audio/MIDI setup window after "Start" is clicked anytime other than during startup
Paul Davis [Wed, 30 Oct 2019 00:09:55 +0000 (18:09 -0600)]
fix appearance of SessionDialog presented after Session > New
Needed to be told "require_new" to make sure the correct display is shown
Paul Davis [Tue, 29 Oct 2019 22:19:54 +0000 (16:19 -0600)]
missing part of working looping
Paul Davis [Tue, 29 Oct 2019 22:16:20 +0000 (16:16 -0600)]
get looping to work again
Paul Davis [Tue, 29 Oct 2019 22:15:38 +0000 (16:15 -0600)]
fix handling of deferred events in transportFSM
tfsm events live on intrusive lists, with only 1 hook, which means they
can only be on one list at a time, and cannot be deleted while part of
the list. This wasn't being addressed properly when deferring (and
undeferring) events.
Robin Gareus [Mon, 19 Mar 2018 00:33:13 +0000 (01:33 +0100)]
Customize Lua GC, add object-memory-lock API.
Add custom API to prevent Lua Objects from being garbage collected.
This is intended to for Ardour LuaBridge bindings (~1MB Objects:
tables, functions and userdata).
The bindings are persistent and the gc can skip them in mark & sweep
phases. This is a significant performance improvement for garbage
collection.
Note. The next version of Lua (5.4) will come with a generational-gc
rather than an incremental, so extending the API at this point in time
is acceptable.
Robin Gareus [Tue, 29 Oct 2019 04:36:24 +0000 (05:36 +0100)]
Update Lua to upstream 5.3.5
Paul Davis [Mon, 28 Oct 2019 23:34:38 +0000 (17:34 -0600)]
improve debug output
Paul Davis [Mon, 28 Oct 2019 23:34:23 +0000 (17:34 -0600)]
fix thinko
Paul Davis [Mon, 28 Oct 2019 23:24:21 +0000 (17:24 -0600)]
limit waveview render threads to 8
Paul Davis [Mon, 28 Oct 2019 23:23:54 +0000 (17:23 -0600)]
provide a mechanism to decide if Session::update_latency_compensation() is being called as part of a callback from the backend.
If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock
Paul Davis [Mon, 28 Oct 2019 23:21:46 +0000 (17:21 -0600)]
fix mistakenly-placed semi-colon
Paul Davis [Mon, 28 Oct 2019 22:55:29 +0000 (16:55 -0600)]
to avoid deadlock in JACK1 scenarios, do not invoke AudioEngine::update_latencies() from update_latency_compensation() if called from a process thread
Paul Davis [Mon, 28 Oct 2019 22:53:00 +0000 (16:53 -0600)]
better comments
Paul Davis [Mon, 28 Oct 2019 22:52:18 +0000 (16:52 -0600)]
add new debug bit (DebugTimestamps) that adds timestamps to all debug messages
Paul Davis [Mon, 28 Oct 2019 22:07:38 +0000 (16:07 -0600)]
add DEBUG_TRACE for all (?) backend callbacks