- add more debugging output detecting regions whose
beat and frame position do not align on a playlist.
this is required as a check as we have never used
frame rounding on constant tempi before 8884a5723dc
- moves frame rounding up to TempoMap, which is needed
in order to calculate pulse distance without frame rounding.
- the time unit for tempo is still minute, but this now also
applies to meter sections. (new audio locked meter sections no
longer require a frame position).
- there is no longer a discontinuity
in the pulse for audio-locked meter/tempi.
- temporarily add debugging output in Region::set_position()
to test for region beat not matching region frame.
* expose Route IOs, Panner and Instrument
* add plugin + processor ChanCount
* bind IOPortDescription
* remove Port::**(Port*) API because there's no Port* but only
boost::shared_ptr<Port>
Fixes the multiple reader issue #6541 properly without resorting to a
linear search kludge.
All the read state has been pulled out into a MidiCursor which the
caller is required to pass. The playlist keeps cursors for all the
regions it is reading, any number of cursors are allowed at a time.
MidiCursor should probably be made a smarter and more fool-proof
object (and/or possibly merged with some of the other tracker/fixer
stuff) but for now I wanted to keep it simple.
Windows key generates Mod4+Super (at least with the version of Gdk we use on
linux) so for bindings using the Windows key to work, GDK_SUPER_MASK has to be
added to modifier mask.
- quarter note precision is greater than the frame-based
_position. using it as a reference may cause a rounding error
if the region is locked to MusicTime.
- also fixes a _start position bug when trimming midi regions.
- we really need a better api for this kind of thing.
- in combination with the previous two patches, this should fix
various missing first note issues.
This allows to flush an async MIDI port's ringbuffer at cycle-start,
to makes its data available as "input/source" during process(), while
collecting data in the background for the next cycle.
This facilitates virtual MIDI Ports for eg. Control Surface Pads:
output from a surface, input to Ardour channels.