13
0
Commit Graph

29168 Commits

Author SHA1 Message Date
f9131d24d3 for now, show how long MIDI rendering takes 2019-11-02 19:38:01 -06:00
9a6350b9c9 use playback filter when rendering MIDI; respond to changes in filter by re-rendering 2019-11-02 19:38:01 -06:00
ee67d2d749
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.
2019-11-03 00:28:53 +01:00
db08810164
Virtual-keyboard: "Tab" to sustain (still undocumented) 2019-11-02 23:56:40 +01:00
7b25a89944 part 1 of replicating semantics of ARDOUR_UI::toggle_roll() in BasicUI::toggle_roll()
This can be done better, even without sharing code
2019-11-02 16:32:18 -06:00
3e443bc237 improve operation of ARDOUR_UI::toggle_roll() for loop mode (particularly when loop-is-mode) 2019-11-02 16:32:18 -06:00
5025b939c6 comment update 2019-11-02 16:32:18 -06:00
003fed93bf use new API to make locate happen 2019-11-02 16:32:18 -06:00
abf5f2bae0 don't locate when enabling loop if loop-is-mode 2019-11-02 16:32:18 -06:00
eee8eb1005 allow explicit "with-roll" argument to a locate to override Session::should_roll_after_locate() 2019-11-02 16:32:18 -06:00
5241cdcf03 remove unused parameter from Session::set_play_loop() API 2019-11-02 16:32:18 -06:00
31fea25005 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
2019-11-02 16:32:18 -06:00
cd2618246a make it more likely that debug messages are printed without x-thread interruption 2019-11-02 16:32:18 -06:00
5e13770e1f NOOP: newline removed 2019-11-02 16:32:18 -06:00
81b38c110a remove unused (empty) API 2019-11-02 16:32:18 -06:00
3ec845b1ef remove unused API 2019-11-02 16:32:18 -06:00
4d5fd1af4b add another conditional to decide if we should merge disk MIDI data into input MIDI data 2019-11-02 16:32:18 -06:00
1a2820a886 remove commented line 2019-11-02 16:32:18 -06:00
1bbbbd62fd helpful variable rename 2019-11-02 16:32:18 -06:00
e8a12a1a29 clarify clarifying comment 2019-11-02 16:32:18 -06:00
6e0c5483b2 remove MidiPlaylist::read() API 2019-11-02 16:32:18 -06:00
7dfae40e3b comment out actual action in MidiPlaylistSource::read()
See comment and remember that we do not MidiPlaylistSource at this time.
2019-11-02 16:32:18 -06:00
17ba6d319f use a different MidiBuffer API to move data from RT MidiBuffer into MidiBuffer during ::read() 2019-11-02 16:32:18 -06:00
eaae38ba84 move evoral/src/* to evoral/ 2019-11-02 16:32:18 -06:00
a855119bdd rename all Evoral source from .(hpp|cpp)$ to .(h|cc) 2019-11-02 16:32:18 -06:00
63b909211d NO-OP: whitespace 2019-11-02 16:32:18 -06:00
bc706064c6 use a note tracker to resolve notes cut off during render by the end of the region 2019-11-02 16:32:18 -06:00
5d40ab22fd remove a mistakenly left-in declaration 2019-11-02 16:32:18 -06:00
b83ef09947 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)
2019-11-02 16:32:18 -06:00
6128d1759c do not initiate transport stop during loading when setting capture/playback buffer sizes 2019-11-02 16:32:18 -06:00
a08012214f 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
2019-11-02 16:32:18 -06:00
f21dd03a0f NOOP: whitespace change 2019-11-02 16:32:18 -06:00
ff7e952942 fix thinko when dealing with non-MIDI tracks 2019-11-02 16:32:18 -06:00
c0a1aec516 start removal of NoteFixer code
Plan is to always read MIDI directly from rendered version. MidiPlaylistSource needs
attention before MidiPlaylist::read() can be removed
2019-11-02 16:32:18 -06:00
addebc3240 move ownership of an RT MIDI buffer from DiskIO to MidiPlaylist 2019-11-02 16:32:18 -06:00
5c0fd05c52 fix reallocation/copy sizes for direct index and blob pool 2019-11-02 16:32:18 -06:00
604fc35e16 clear RTMidiBuffer before re-rendering into it 2019-11-02 16:32:18 -06:00
0573e7cdf0 alter where note resolution happens when a re-rendering is scheduled for a MIDI track 2019-11-02 16:32:18 -06:00
2cf9ad8f8c refactor SessionEvent and DiskIO so that we pass around boost::shared_ptr<Track> rather than Route
(this the raw pointers used inside SessionEvent)
2019-11-02 16:32:18 -06:00
5b92ef4353 remove unnecessary fwd decl 2019-11-02 16:32:18 -06:00
5cd9c86d58 add RAII-style write protection while rendering MIDI playlist into RTMidiBuffer 2019-11-02 16:32:18 -06:00
c55e23e7aa change MidiPlaylist::dump() into ::render(); change type of initial argument 2019-11-02 16:32:18 -06:00
3f8fbf22e6 fix initialization order 2019-11-02 16:32:18 -06:00
73e9560eef add extra info to output of RTMidiBuffer::dump() 2019-11-02 16:32:18 -06:00
b017f20141 correct size computation for RTMidiBuffer, and reduce expansion amount 2019-11-02 16:32:18 -06:00
08ab8fc58a remove unused member variable 2019-11-02 16:32:18 -06:00
088e4bca5a 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.
2019-11-02 16:32:18 -06:00
e87e0ec028 add a MidiStateTracker to DiskReader and use to handle transport stop note resolving 2019-11-02 16:32:18 -06:00
67beff22ce trivial cleanups 2019-11-02 16:32:18 -06:00
22da779322 introduce new all-in-RAM MIDI datastructure and use it for MIDI playback 2019-11-02 16:32:18 -06:00