ardour.git
4 years agoSession should not be accessed when not there.
Len Ovens [Wed, 6 Nov 2019 16:27:21 +0000 (08:27 -0800)]
Session should not be accessed when not there.

4 years agoremove debug message
Paul Davis [Wed, 6 Nov 2019 16:28:23 +0000 (09:28 -0700)]
remove debug message

4 years agomove at-exit messages about pool utilization to DEBUG_TRACE
Paul Davis [Wed, 6 Nov 2019 16:27:49 +0000 (09:27 -0700)]
move at-exit messages about pool utilization to DEBUG_TRACE

4 years agoresolved notes need to use cycle-relative time
Paul Davis [Wed, 6 Nov 2019 16:07:12 +0000 (09:07 -0700)]
resolved notes need to use cycle-relative time

4 years agobe sure to move effective_start while loop-reading MIDI
Paul Davis [Wed, 6 Nov 2019 16:03:55 +0000 (09:03 -0700)]
be sure to move effective_start while loop-reading MIDI

4 years agofix DiskReader::get_midi_playback() when looping
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

4 years agoimprove comment about warning message
Paul Davis [Wed, 6 Nov 2019 15:56:50 +0000 (08:56 -0700)]
improve comment about warning message

4 years agofix a bad transition in the transportFSM.
Paul Davis [Mon, 4 Nov 2019 21:35:18 +0000 (14:35 -0700)]
fix a bad transition in the transportFSM.

4 years agoavoid use of Port::port_offset() everywhere except Port::flush_buffers() and Port...
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.

4 years agorename method argument to better reflect its intended role
Paul Davis [Mon, 4 Nov 2019 19:52:34 +0000 (12:52 -0700)]
rename method argument to better reflect its intended role

4 years agowhen resolving notes for a locate, use zero as the timestamp, not the current Port...
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()

4 years agoVirtual-keyboard: momentary pedal (no toggle)
Robin Gareus [Sun, 3 Nov 2019 16:48:36 +0000 (17:48 +0100)]
Virtual-keyboard: momentary pedal (no toggle)

4 years agoanother notable cleanup/simplification of DiskReader's MIDI handling
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

4 years agocomment fix
Paul Davis [Sun, 3 Nov 2019 16:20:00 +0000 (09:20 -0700)]
comment fix

4 years agoimmediate events time reference for zero is the start of the run() cycle, not absolut...
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

4 years agoCorrectly flush MIDI buffers on cycle-split
Robin Gareus [Sun, 3 Nov 2019 14:18:04 +0000 (15:18 +0100)]
Correctly flush MIDI buffers on cycle-split

4 years agoClarify MIDI-port event-timestamp debug-message
Robin Gareus [Sun, 3 Nov 2019 14:02:00 +0000 (15:02 +0100)]
Clarify MIDI-port event-timestamp debug-message

4 years agoFix timecode generation after split-cycles
Robin Gareus [Sun, 3 Nov 2019 13:42:10 +0000 (14:42 +0100)]
Fix timecode generation after split-cycles

4 years agoAdd/remove source(s) in our MSVC project (libardour)
John Emmas [Sun, 3 Nov 2019 13:45:24 +0000 (13:45 +0000)]
Add/remove source(s) in our MSVC project (libardour)

4 years agoAccommodate some recently moved/renamed folders and source files (libevoral)
John Emmas [Sun, 3 Nov 2019 13:42:21 +0000 (13:42 +0000)]
Accommodate some recently moved/renamed folders and source files (libevoral)

4 years agoFix build -- 'printf' was not declared in this scope
Robin Gareus [Sun, 3 Nov 2019 13:15:11 +0000 (14:15 +0100)]
Fix build -- 'printf' was not declared in this scope

4 years agoFix compiler warning
Robin Gareus [Sun, 3 Nov 2019 03:11:43 +0000 (04:11 +0100)]
Fix compiler warning

4 years agofor now, show how long MIDI rendering takes
Paul Davis [Sun, 3 Nov 2019 01:35:35 +0000 (19:35 -0600)]
for now, show how long MIDI rendering takes

4 years agouse playback filter when rendering MIDI; respond to changes in filter by re-rendering
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

4 years agoAuto-connect input should not disconnect other ports
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.

4 years agoVirtual-keyboard: "Tab" to sustain (still undocumented)
Robin Gareus [Sat, 2 Nov 2019 22:52:29 +0000 (23:52 +0100)]
Virtual-keyboard: "Tab" to sustain (still undocumented)

4 years agopart 1 of replicating semantics of ARDOUR_UI::toggle_roll() in BasicUI::toggle_roll()
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

4 years agoimprove operation of ARDOUR_UI::toggle_roll() for loop mode (particularly when loop...
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)

4 years agocomment update
Paul Davis [Sat, 2 Nov 2019 22:12:08 +0000 (16:12 -0600)]
comment update

4 years agouse new API to make locate happen
Paul Davis [Sat, 2 Nov 2019 22:11:56 +0000 (16:11 -0600)]
use new API to make locate happen

4 years agodon't locate when enabling loop if loop-is-mode
Paul Davis [Sat, 2 Nov 2019 22:11:34 +0000 (16:11 -0600)]
don't locate when enabling loop if loop-is-mode

4 years agoallow explicit "with-roll" argument to a locate to override Session::should_roll_afte...
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()

4 years agoremove unused parameter from Session::set_play_loop() API
Paul Davis [Sat, 2 Nov 2019 22:10:38 +0000 (16:10 -0600)]
remove unused parameter from Session::set_play_loop() API

4 years agolovely simplification of DiskReader::get_midi_playback()
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

4 years agomake it more likely that debug messages are printed without x-thread interruption
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

4 years agoNOOP: newline removed
Paul Davis [Wed, 30 Oct 2019 03:36:09 +0000 (21:36 -0600)]
NOOP: newline removed

4 years agoremove unused (empty) API
Paul Davis [Wed, 30 Oct 2019 03:25:04 +0000 (21:25 -0600)]
remove unused (empty) API

4 years agoremove unused API
Paul Davis [Wed, 30 Oct 2019 03:20:11 +0000 (21:20 -0600)]
remove unused API

4 years agoadd another conditional to decide if we should merge disk MIDI data into input MIDI...
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

4 years agoremove commented line
Paul Davis [Wed, 30 Oct 2019 03:19:29 +0000 (21:19 -0600)]
remove commented line

4 years agohelpful variable rename
Paul Davis [Wed, 30 Oct 2019 02:48:44 +0000 (20:48 -0600)]
helpful variable rename

4 years agoclarify clarifying comment
Paul Davis [Wed, 30 Oct 2019 02:46:21 +0000 (20:46 -0600)]
clarify clarifying comment

4 years agoremove MidiPlaylist::read() API
Paul Davis [Sun, 27 Oct 2019 01:54:10 +0000 (19:54 -0600)]
remove MidiPlaylist::read() API

4 years agocomment out actual action in MidiPlaylistSource::read()
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.

4 years agouse a different MidiBuffer API to move data from RT MidiBuffer into MidiBuffer during...
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()

4 years agomove evoral/src/* to evoral/
Paul Davis [Fri, 25 Oct 2019 19:41:33 +0000 (13:41 -0600)]
move evoral/src/* to evoral/

4 years agorename all Evoral source from .(hpp|cpp)$ to .(h|cc)
Paul Davis [Fri, 25 Oct 2019 19:13:51 +0000 (13:13 -0600)]
rename all Evoral source from .(hpp|cpp)$ to .(h|cc)

4 years agoNO-OP: whitespace
Paul Davis [Fri, 25 Oct 2019 18:59:24 +0000 (12:59 -0600)]
NO-OP: whitespace

4 years agouse a note tracker to resolve notes cut off during render by the end of the region
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

4 years agoremove a mistakenly left-in declaration
Paul Davis [Fri, 18 Oct 2019 23:28:36 +0000 (17:28 -0600)]
remove a mistakenly left-in declaration

4 years agovarious adjustments so that a MidiPlaylist gets re-rendered whenever it changes.
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)

4 years agodo not initiate transport stop during loading when setting capture/playback buffer...
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

4 years agoadd a new "contents" pseudo-property to Region
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

4 years agoNOOP: whitespace change
Paul Davis [Fri, 18 Oct 2019 15:44:16 +0000 (09:44 -0600)]
NOOP: whitespace change

4 years agofix thinko when dealing with non-MIDI tracks
Paul Davis [Fri, 18 Oct 2019 05:39:38 +0000 (23:39 -0600)]
fix thinko when dealing with non-MIDI tracks

4 years agostart removal of NoteFixer code
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

4 years agomove ownership of an RT MIDI buffer from DiskIO to MidiPlaylist
Paul Davis [Fri, 18 Oct 2019 05:15:53 +0000 (23:15 -0600)]
move ownership of an RT MIDI buffer from DiskIO to MidiPlaylist

4 years agofix reallocation/copy sizes for direct index and blob pool
Paul Davis [Fri, 18 Oct 2019 05:11:23 +0000 (23:11 -0600)]
fix reallocation/copy sizes for direct index and blob pool

4 years agoclear RTMidiBuffer before re-rendering into it
Paul Davis [Thu, 17 Oct 2019 23:34:00 +0000 (17:34 -0600)]
clear RTMidiBuffer before re-rendering into it

4 years agoalter where note resolution happens when a re-rendering is scheduled for a MIDI track
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

4 years agorefactor SessionEvent and DiskIO so that we pass around boost::shared_ptr<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)

4 years agoremove unnecessary fwd decl
Paul Davis [Thu, 17 Oct 2019 21:43:44 +0000 (15:43 -0600)]
remove unnecessary fwd decl

4 years agoadd RAII-style write protection while rendering MIDI playlist into RTMidiBuffer
Paul Davis [Thu, 17 Oct 2019 21:19:05 +0000 (15:19 -0600)]
add RAII-style write protection while rendering MIDI playlist into RTMidiBuffer

4 years agochange MidiPlaylist::dump() into ::render(); change type of initial argument
Paul Davis [Thu, 17 Oct 2019 05:07:29 +0000 (23:07 -0600)]
change MidiPlaylist::dump() into ::render(); change type of initial argument

4 years agofix initialization order
Paul Davis [Wed, 16 Oct 2019 14:18:53 +0000 (08:18 -0600)]
fix initialization order

4 years agoadd extra info to output of RTMidiBuffer::dump()
Paul Davis [Wed, 16 Oct 2019 14:18:43 +0000 (08:18 -0600)]
add extra info to output of RTMidiBuffer::dump()

4 years agocorrect size computation for RTMidiBuffer, and reduce expansion amount
Paul Davis [Wed, 16 Oct 2019 14:12:04 +0000 (08:12 -0600)]
correct size computation for RTMidiBuffer, and reduce expansion amount

4 years agoremove unused member variable
Paul Davis [Wed, 16 Oct 2019 14:04:23 +0000 (08:04 -0600)]
remove unused member variable

4 years agoreimplement RTMidiBuffer using a highly optimized data structure
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.

4 years agoadd a MidiStateTracker to DiskReader and use to handle transport stop note resolving
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

4 years agotrivial cleanups
Paul Davis [Tue, 15 Oct 2019 03:28:43 +0000 (21:28 -0600)]
trivial cleanups

4 years agointroduce new all-in-RAM MIDI datastructure and use it for MIDI playback
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

4 years agoRemove complicated panner theme logic.
Ben Loftis [Sat, 2 Nov 2019 19:57:44 +0000 (14:57 -0500)]
Remove complicated panner theme logic.

4 years agoFan-out multi-channel instruments to tracks (not busses)
Robin Gareus [Sat, 2 Nov 2019 17:47:59 +0000 (18:47 +0100)]
Fan-out multi-channel instruments to tracks (not busses)

4 years agoEnable fan-out by default
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.

4 years agofix the way Session::auto_loop_changed() works to put back various things removed...
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

4 years agoif a complete refill is called for, DiskReader cannot internal seek
Paul Davis [Sat, 2 Nov 2019 03:13:39 +0000 (21:13 -0600)]
if a complete refill is called for, DiskReader cannot internal seek

4 years agoMake virtual-keyboard messages translatable -- #7834
Robin Gareus [Sat, 2 Nov 2019 01:43:56 +0000 (02:43 +0100)]
Make virtual-keyboard messages translatable -- #7834

4 years agolast piece of seamless-loop removal
Paul Davis [Fri, 1 Nov 2019 21:57:50 +0000 (15:57 -0600)]
last piece of seamless-loop removal

4 years agodon't send TFSM event LocateDone after a locate-for-loop-end
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

4 years agofix logic error with contents of session dialog shown after "Close"
Paul Davis [Fri, 1 Nov 2019 21:48:16 +0000 (15:48 -0600)]
fix logic error with contents of session dialog shown after "Close"

4 years agoremove seamless looping as an option (it's now the only kind of looping we support)
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)

4 years agocut down on DEBUG::Transport noise
Paul Davis [Fri, 1 Nov 2019 19:25:18 +0000 (13:25 -0600)]
cut down on DEBUG::Transport noise

4 years agoif looping, squish DiskReader::playback_sample into loop range
Paul Davis [Fri, 1 Nov 2019 19:24:37 +0000 (13:24 -0600)]
if looping, squish DiskReader::playback_sample into loop range

4 years agotransportFSM: when locating due to end-of-loop, skip declick and do not transition...
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

4 years agoDisable direct master-send on fan-out
Robin Gareus [Fri, 1 Nov 2019 19:43:41 +0000 (20:43 +0100)]
Disable direct master-send on fan-out

4 years agoFix thinko in aux-fader color.
Ben Loftis [Fri, 1 Nov 2019 15:35:53 +0000 (10:35 -0500)]
Fix thinko in aux-fader color.

4 years agoHandle Lua DSP script load failure (unknown plugin)
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.

4 years agoFix XML-writer edge-case (empty content)
Robin Gareus [Fri, 1 Nov 2019 14:39:44 +0000 (15:39 +0100)]
Fix XML-writer edge-case (empty content)

4 years agoFix MIDI Timestretch
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)

4 years agoConsolidate more automation-mode texts
Robin Gareus [Thu, 31 Oct 2019 22:57:46 +0000 (23:57 +0100)]
Consolidate more automation-mode texts

4 years agoFix copy/paste mess in ab298f035ae
Robin Gareus [Thu, 31 Oct 2019 17:47:08 +0000 (18:47 +0100)]
Fix copy/paste mess in ab298f035ae

4 years agoRemove unused string translation
Robin Gareus [Thu, 31 Oct 2019 15:33:56 +0000 (16:33 +0100)]
Remove unused string translation

4 years agoConsolidate automation and meter-point strings
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.

4 years agoHighlight the currently selected item in ArdourDropdown & co
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:38:26 +0000 (14:38 +0100)]
Highlight the currently selected item in ArdourDropdown & co

4 years agoWorkaround a GTKMenu bug in ArdourDropdown & co.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:21:57 +0000 (14:21 +0100)]
Workaround a GTKMenu bug in ArdourDropdown & co.

4 years agoWork around an initialization bug of GTK menus
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 10:34:36 +0000 (11:34 +0100)]
Work around an initialization bug of GTK menus

4 years agoUpdate |offset| instead of changing the formula
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.

4 years agoAlign vertical centers of widget and active menuitem
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:27:16 +0000 (10:27 +0100)]
Align vertical centers of widget and active menuitem

4 years agoFix a thinko in x position of menu popups
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.