Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
|
|
|
|
I'm not sure if this is really the best way to do event types (should it
just be a completely static enum in evoral, or completely dynamic and
provided by the type map, or a mix like currently?), but previously the
event type was frequently set to either total garbage, or parameter
types, which are a different thing.
This fixes all those cases, and makes Evoral::EventType an enum so the
compiler will warn about implicit conversions from int.
|
|
It is slightly questionable whether type specific methods like
velocity() belong on Event at all, these may be better off as free
functions. However the code currently uses them as methods in many
places, and it seems like a step in the right direction, since, for
example, we might some day have events that have a velocity but aren't
stored as MIDI messages (e.g. if Ardour uses an internal musical model
that is more expressive).
In any case, the former inheritance and plethora of sloppy casts is
definitely not the right thing.
|
|
|
|
There are a couple of header files where we use a reference to class ARDOUR::MidiCursor (rather than a pointer). To keep MSVC happy we need to #include its header file, rather than simply using a forward reference.
|
|
I'm not entirely sure why it's needed in 'smf_source.cc' but MSVC fails to link the compiled module if I don't #include it ?!?
|
|
|
|
seamless looping (if using)
|
|
- MidiSource _length_beats is in quarter notes.
Here we duplicate length_beats for backwards compatibility
|
|
|
|
|
|
|
|
Paul Davis was responsible for introducing almost all of this.
|
|
|
|
|
|
can ensure we no longer have a handle open
|
|
|
|
This moves MIDI channel filtering into a reusable class and moves filtering to
the source, rather than modifying the buffer afterwards. This is necessary so
that the playlist trackers reflect the emitted notes (and thus are able to stop
them in situations like mute).
As a perk, this is also faster because events are just dropped on read, rather
than pushed into a buffer then later removed (which is very slow).
Really hammering on mute or solo still seems to produce stuck notes
occasionally (perhaps related to multiple-on warnings). I am not yet sure why,
but occasional beats always.
|
|
|
|
This is a little hard-edged in that edits while rolling will prematurely chop
off any playing notes, but at least the state of things actually reflects
reality. More sophisticated solution hopefully to come...
|
|
Attempt to make mistakes much less likely in the future by statically requiring
caller to pass scoped locks where necessary.
|
|
This was a very clever attempt to fix a non-problem. If the platform doesn't have enough file descriptors available
then the platform is broken and we're not going to hack around trying to fix it.
|
|
I suspect this is an underlying cause of several tricky to reproduce bugs, but
we'll have to wait around and see...
|
|
|
|
This lets us get a more explicit handle on time conversions, and is the main
step towards using actual beat:tick time and getting away from floating point
precision problems.
|
|
Fix initial read of discrete MIDI controllers.
Fix spurious note offs when starting to play in the middle of a note.
Faster search for initial event when cached iterator is invalid.
So much for dropping the cached iterator. The iterator is responsible for
handling note offs, so that doesn't work. This design means we have some stuck
note issues at the source read level, but they should be taken care of by the
state tracker anyway.
|
|
I am not precisely sure why the cached iterator was causing this problem, it
shouldn't be invalidated, and the times make sense. It may be some lock
related issue since the iterator holds a lock on the source.
In any case, this cached iterator was just to avoid repeated linear search of
the model, but since the model has a logarithmic search, instead just scrap all
this problematic persistent state and search for the appropriate start time
every read. No need to be careful about invalidating when anything changes.
|
|
Another consequence of fuzzy Sequence timing, but if the difference is less
than a tick this should handle things correctly. If the difference is more
than a tick, something's wrong, and it might be okay to just bump forward
anyway, but I can't reproduce this and it could lead to corruption so I'm
leaving that case noisy.
|
|
Work towards ParameterDescriptor being used more universally to describe control characteristics.
|
|
_path member is not set correctly
|
|
shows issues with some workflows
|
|
but basically functional for audio files
|
|
Manually resolved conflicts in import.cc and session.cc
|
|
|
|
(evoral/evoral doesn't get used anywhere else)
|
|
|
|
sources, especially when created via import
|
|
|
|
#5919. Needs merging with CC
|
|
change related to data loss
|
|
renaming
|
|
reports about missing MIDI files on the forums and IRC
|
|
|
|
renaming
|
|
reports about missing MIDI files on the forums and IRC
|
|
called midi (with any case) as an apparent MIDI file
|