ardour.git
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.

4 years agoNO-OP: whitespace
Robin Gareus [Wed, 30 Oct 2019 23:22:26 +0000 (00:22 +0100)]
NO-OP: whitespace

4 years agoDeclare helper function static (don't export)
Robin Gareus [Wed, 30 Oct 2019 23:22:12 +0000 (00:22 +0100)]
Declare helper function static (don't export)

4 years agoTry harder to put the active item under the mouse (ArdourDropdown)
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)

4 years agoUpdate latency-compensation when re-ordering processors
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.

4 years agoNO-OP: whitespace/comments
Robin Gareus [Wed, 30 Oct 2019 22:45:27 +0000 (23:45 +0100)]
NO-OP: whitespace/comments

4 years agoSuggest multi-out of instruments by default
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.

4 years agofix vanished audio/MIDI setup window after "Start" is clicked anytime other than...
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

4 years agofix appearance of SessionDialog presented after Session > New
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

4 years agomissing part of working looping
Paul Davis [Tue, 29 Oct 2019 22:19:54 +0000 (16:19 -0600)]
missing part of working looping

4 years agoget looping to work again
Paul Davis [Tue, 29 Oct 2019 22:16:20 +0000 (16:16 -0600)]
get looping to work again

4 years agofix handling of deferred events in transportFSM
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.

4 years agoCustomize Lua GC, add object-memory-lock API.
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.

4 years agoUpdate Lua to upstream 5.3.5
Robin Gareus [Tue, 29 Oct 2019 04:36:24 +0000 (05:36 +0100)]
Update Lua to upstream 5.3.5

4 years agoimprove debug output
Paul Davis [Mon, 28 Oct 2019 23:34:38 +0000 (17:34 -0600)]
improve debug output

4 years agofix thinko
Paul Davis [Mon, 28 Oct 2019 23:34:23 +0000 (17:34 -0600)]
fix thinko

4 years agolimit waveview render threads to 8
Paul Davis [Mon, 28 Oct 2019 23:24:21 +0000 (17:24 -0600)]
limit waveview render threads to 8

4 years agoprovide a mechanism to decide if Session::update_latency_compensation() is being...
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

4 years agofix mistakenly-placed semi-colon
Paul Davis [Mon, 28 Oct 2019 23:21:46 +0000 (17:21 -0600)]
fix mistakenly-placed semi-colon

4 years agoto avoid deadlock in JACK1 scenarios, do not invoke AudioEngine::update_latencies...
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

4 years agobetter comments
Paul Davis [Mon, 28 Oct 2019 22:53:00 +0000 (16:53 -0600)]
better comments

4 years agoadd new debug bit (DebugTimestamps) that adds timestamps to all debug messages
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

4 years agoadd DEBUG_TRACE for all (?) backend callbacks
Paul Davis [Mon, 28 Oct 2019 22:07:38 +0000 (16:07 -0600)]
add DEBUG_TRACE for all (?) backend callbacks