summaryrefslogtreecommitdiff
path: root/libs/ardour/smf_source.cc
AgeCommit message (Collapse)Author
2018-07-05remove debug outputPaul Davis
2018-07-05catch various libsmf errors rethrown as exceptionsPaul Davis
2017-09-24convert codebase to use Temporal for various time typesPaul Davis
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
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
2017-04-19Use XMLNode::set_property API in ARDOUR::SMFSource classTim Mayberry
2016-12-03Fix event type and parameter type confusionDavid Robillard
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.
2016-12-03Remove Evoral::MIDIEventDavid Robillard
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.
2016-12-03Fix Sequence/Event const-correctness issuesDavid Robillard
2016-11-10Correct the #includes for 'ardour/midi_cursor.h' (see commit #ec12fccf08)John Emmas
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.
2016-11-10#include <ardour/midi_cursor.h> in a couple of placesJohn Emmas
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 ?!?
2016-09-29Remove _length_pulse from MidiSource.nick_m
2016-09-13change all MIDI read-from-source to map all events into the loop-range for ↵Paul Davis
seamless looping (if using)
2016-08-31Add length_pulse to MidiSource, usr quarter-notes in midi_read().nick_m
- MidiSource _length_beats is in quarter notes. Here we duplicate length_beats for backwards compatibility
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2015-10-05use quotes for in-tree pbd/glib wrapper includeRobin Gareus
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-10-04globally remove all trailing whitespace from ardour code base.Paul Davis
Paul Davis was responsible for introducing almost all of this.
2015-09-18NOOP - SMF debugging.Robin Gareus
2015-09-17use pbd's gstdio compatibility wrapperRobin Gareus
2015-04-20add a pure virtual FileSource::close() method so that FileSource::set_path() ↵Paul Davis
can ensure we no longer have a handle open
2015-04-20remove _file_path member from Evoral::SMFPaul Davis
2015-03-29Fix mute of MIDI tracks with channel forcing.David Robillard
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.
2015-01-07MusicalTime => Beats.David Robillard
2014-12-20Maintain correct tracker state on MIDI overwrite.David Robillard
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...
2014-12-17Fix various MIDI locking issues.David Robillard
Attempt to make mistakes much less likely in the future by statically requiring caller to pass scoped locks where necessary.
2014-12-10remove file manager LRU cache from code.Paul Davis
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.
2014-12-06Invalidate iterator whenever model changes.David Robillard
I suspect this is an underlying cause of several tricky to reproduce bugs, but we'll have to wait around and see...
2014-11-30Add missing namespace qualifiers.David Robillard
2014-11-22Wrap MusicalTime in a class.David Robillard
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.
2014-11-20Fix lost MIDI note offs and controllers.David Robillard
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.
2014-11-19Fix dropped MIDI events, especially with record enabled.David Robillard
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.
2014-11-14Fix out of order event errors on save with overlapping notes.David Robillard
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.
2014-11-02Automation of LV2 plugin properties.David Robillard
Work towards ParameterDescriptor being used more universally to describe control characteristics.
2014-09-15fix up condition where a MIDI filesource is marked empty, not found, and its ↵Paul Davis
_path member is not set correctly
2014-09-15tentative fix for losing (empty) MIDI files. Incomplete because testing ↵Paul Davis
shows issues with some workflows
2014-07-08initial implementation of "bring all media into session folder". Incomplete ↵Paul Davis
but basically functional for audio files
2014-07-01merge with master.Paul Davis
Manually resolved conflicts in import.cc and session.cc
2014-06-17Remove unused header includesTim Mayberry
2014-06-03Keep this #include consistent with similar onesJohn Emmas
(evoral/evoral doesn't get used anywhere else)
2014-06-02merge with master and fix 4 conflicts by handPaul Davis
2014-06-02substantive changes to the logic and safety for naming of (audio/MIDI) ↵Paul Davis
sources, especially when created via import
2014-04-29Fixed problem where importing invalid midi files caused crash.3.5.380Damien Zammit
2014-04-28add new SMFSource constructor to be used for existing-external files. Fixes ↵Paul Davis
#5919. Needs merging with CC
2014-04-14merge 5764970709f15e85ec30c9cea89c318eb8114c58 from cairocanvas as final(?) ↵Paul Davis
change related to data loss
2014-04-14further code simplification and rationalization related to MIDI source/file ↵Paul Davis
renaming
2014-04-14after cloning a MIDI region, mark the source file as non-removable. Fixes ↵Paul Davis
reports about missing MIDI files on the forums and IRC
2014-04-14more work on linking file existence and removabilityPaul Davis
2014-04-14further code simplification and rationalization related to MIDI source/file ↵Paul Davis
renaming
2014-04-04after cloning a MIDI region, mark the source file as non-removable. Fixes ↵Paul Davis
reports about missing MIDI files on the forums and IRC
2014-02-27(backport from cairocanvas branch) do not crash when considering a directory ↵Paul Davis
called midi (with any case) as an apparent MIDI file