Len Ovens [Wed, 6 Nov 2019 16:27:21 +0000 (08:27 -0800)]
Session should not be accessed when not there.
Paul Davis [Wed, 6 Nov 2019 16:28:23 +0000 (09:28 -0700)]
remove debug message
Paul Davis [Wed, 6 Nov 2019 16:27:49 +0000 (09:27 -0700)]
move at-exit messages about pool utilization to DEBUG_TRACE
Paul Davis [Wed, 6 Nov 2019 16:07:12 +0000 (09:07 -0700)]
resolved notes need to use cycle-relative time
Paul Davis [Wed, 6 Nov 2019 16:03:55 +0000 (09:03 -0700)]
be sure to move effective_start while loop-reading MIDI
Paul Davis [Wed, 6 Nov 2019 15:58:09 +0000 (08:58 -0700)]
fix DiskReader::get_midi_playback() when looping
Although at the Session level we never run "through" the loop end,
latency compensation means that that start/end sample values passed to
Processor::run() may cross the loop end. Fix how we handle this so
that we do not read data from after the end of the loop
Paul Davis [Wed, 6 Nov 2019 15:56:50 +0000 (08:56 -0700)]
improve comment about warning message
Paul Davis [Mon, 4 Nov 2019 21:35:18 +0000 (14:35 -0700)]
fix a bad transition in the transportFSM.
Paul Davis [Mon, 4 Nov 2019 19:57:19 +0000 (12:57 -0700)]
avoid use of Port::port_offset() everywhere except Port::flush_buffers() and Port::get_buffer()
Split cycles are run as if they are an entire self-contained cycle, starting at zero and running for "nframes".
We adjust the timing and position of data only when retrieving and writing it to Port buffers.
Paul Davis [Mon, 4 Nov 2019 19:52:34 +0000 (12:52 -0700)]
rename method argument to better reflect its intended role
Paul Davis [Sun, 3 Nov 2019 17:55:47 +0000 (10:55 -0700)]
when resolving notes for a locate, use zero as the timestamp, not the current Port::port_offset()
All _immediate_events data gets written to the output buffer at the end of the current (split) cycle anyway, so the
timestamp is irrelevant (as long as it is zero, and will therefore be read by ::snapshot_out_of_band_data()
Robin Gareus [Sun, 3 Nov 2019 16:48:36 +0000 (17:48 +0100)]
Virtual-keyboard: momentary pedal (no toggle)
Paul Davis [Sun, 3 Nov 2019 16:20:50 +0000 (09:20 -0700)]
another notable cleanup/simplification of DiskReader's MIDI handling
Note that we resolve notes from the tracker directly into the output buffer. This happens
after an edit causes a buffer overwrite
Paul Davis [Sun, 3 Nov 2019 16:20:00 +0000 (09:20 -0700)]
comment fix
Paul Davis [Sun, 3 Nov 2019 14:58:28 +0000 (07:58 -0700)]
immediate events time reference for zero is the start of the run() cycle, not absolute sample time
Robin Gareus [Sun, 3 Nov 2019 14:18:04 +0000 (15:18 +0100)]
Correctly flush MIDI buffers on cycle-split
Robin Gareus [Sun, 3 Nov 2019 14:02:00 +0000 (15:02 +0100)]
Clarify MIDI-port event-timestamp debug-message
Robin Gareus [Sun, 3 Nov 2019 13:42:10 +0000 (14:42 +0100)]
Fix timecode generation after split-cycles
John Emmas [Sun, 3 Nov 2019 13:45:24 +0000 (13:45 +0000)]
Add/remove source(s) in our MSVC project (libardour)
John Emmas [Sun, 3 Nov 2019 13:42:21 +0000 (13:42 +0000)]
Accommodate some recently moved/renamed folders and source files (libevoral)
Robin Gareus [Sun, 3 Nov 2019 13:15:11 +0000 (14:15 +0100)]
Fix build -- 'printf' was not declared in this scope
Robin Gareus [Sun, 3 Nov 2019 03:11:43 +0000 (04:11 +0100)]
Fix compiler warning
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.