summaryrefslogtreecommitdiff
path: root/libs/ardour/smf_source.cc
AgeCommit message (Collapse)Author
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
2014-02-27do not crash when considering a directory called midi (with any case) as an ↵Paul Davis
apparent MIDI file
2014-01-23fix merge conflict with masterPaul Davis
2014-01-22take all tracks inside a midi-file into account when loading modelRobin Gareus
* fixes [region] length calculation, * prepare for auditioning midi files (one track plays it all)
2014-01-22open external [read-only] midi-files on constructionRobin Gareus
2013-07-15use g_unlink() rather than unlink() universally, requires <glib/gstdio.h> in ↵Paul Davis
several files
2013-03-14match *.[mM][iI][dD][iI]$ as well as *.[mM][iI][dD] files when looking for ↵Paul Davis
MIDI files
2013-01-21Fix MIDI loop recording.David Robillard
This changes how things work a bit, but I am committing it for 3.0 since the previous revision often crashed (and never worked), this one seems to work fine, and the code is quite a bit more cogent. I have tested the following use cases with live input and audible output: * Non-loop recording, armed before roll * Non-loop recording, arm while rolling * Loop recording, armed before roll * Loop recording, arm during roll In the last case, the source/region is created starting at the loop start rather than the current transport frame as usual so time makes sense when it wraps around. See the documentation added to the code for details, but the basic idea here is to simply push MIDI events to the source with increasing monotonic time, ignoring looping altogether. Essentially we pretend the loop does not exist, but the source knows all the details so it can implement whatever behaviour is appropriate. Currently, this is simply recording a complete non-destructive copy of the input, which is a good thing. Perhaps not what the user expects of loop recording, but at least it works and is one sensible option. We will need to add more later. Display while recording is a little bit wacky, but whatever. git-svn-id: svn://localhost/ardour2/branches/3.0@13940 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-21More style-only changes.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@13939 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-16use regex to match [mM][iI][dD] file extension for MIDI files, thus making ↵Paul Davis
it case-insensitive (fixes #5231) git-svn-id: svn://localhost/ardour2/branches/3.0@13855 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-10add -Wpointer-arith -Wcast-qual -Wcast-align and others to compile flags, ↵Paul Davis
and fix const cast warnings generated by new flags git-svn-id: svn://localhost/ardour2/branches/3.0@13124 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25convert from Glib:: to Glib::Threads for all thread-related APIPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-17lots more fidgety work on automation. sort of works now, but undo/redo needs ↵Paul Davis
attention git-svn-id: svn://localhost/ardour2/branches/3.0@13047 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-23Remove two unnecessary header includes of pbd/mountpoint.hTim Mayberry
git-svn-id: svn://localhost/ardour2/branches/3.0@12826 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24Remove over 500 unnecessary includes (including 54 of session.h).David Robillard
It's slightly possible that this causes trivial build failures on different configurations, but otherwise shouldn't cause any problems (i.e. no actual changes other than include/naming/namespace stuff). I deliberately avoided removing libardour-config.h since this can mysteriously break things, though a few of those do seem to be unnecessary. This commit only targets includes of ardour/*.h. There is also a very large number of unnecessary includes of stuff in gtk2_ardour; tackling that should also give a big improvement in build time when things are modified. git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf