summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_diskstream.cc
AgeCommit message (Collapse)Author
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-05-07fix LocaleGuard contstructor (3dc77280)Robin Gareus
2016-05-05we always only use the "C" locale when saving.Robin Gareus
2015-11-29fix seamless midi-looping - fixes #5438Robin Gareus
well, now... - Midi-Ports have a midi-buffer. - Midi-Tracks have a midi-buffer. - Midi-tracks have a diskstream. - Midi-diskstream has a midi-ring-buffer. - Midi-tracks have a delivery - The delivery can get a reference to the actual backend-ports - The delivery calls the Midi-Port's flush() buffer to send out queued events at the end of a cycle all clear ? :) - when splitting the process-cycle: only the Ports are informed. all other objects see a "normal" short process cycle starting at "0". The offset needs to be applied early on, so that internally routed buffers push the event at the correct time when combining the buffer with immediate and async events. Luckily Port::port_offset() is a static member, available to all, objects, which allows to bridge the conceptual gap between the diskstream and the delivery. There's a snag: When there's a note-on directly at the beginning of the loop it coincides with the panic message sent when looping. The panic comes before note events, so it *should* be good. Also the final note-offs (state tracker end of loop/region) are sent 1 sample too early (smells like an off-by-one), and are hence dropped. (no matter we send a panic right after it). It should really be at the same time, just before the panic.
2015-10-05remove unused fstream includesRobin 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-06-29add initial support for vari-fillPaul Davis
When refilling playback buffer, try to fill it completely, or at least using the next-lowest power-of-2 as the amount to read. When locating, where we use do_refill_with_alloc(), only partially fill the buffer. Work not yet finished, but possibly promising.
2015-06-16add Record-Safe feature to libardour (from Nikolay Polyanovskii)Paul Davis
2015-06-12We were 2 more debug "bits" away from overflow, so recast PBD::DEBUG ↵Paul Davis
mechanism away from a 64bit integer and toward std::bitset. Clean up a few minor related PBD::DEBUG issues along the way
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-03-24Resolve only active notes when muted/non-soloed.David Robillard
Fixes bug #6206.
2015-03-12amend 7bb9d04, fix midi loopingRobin Gareus
2015-03-12cont’d work on a16dd7c, fixes #6170Robin Gareus
2015-03-12explain midi starvation, issue #6170Robin Gareus
this is not a fix yet, just some comments and code cleanup done while reading/investigating: * limit reads to available write-space * skip inactive tracks * handle potential unsigned + negative value.
2015-03-10MIDI vari-speed playbackRobin Gareus
2015-03-10prototype basic midi varispeedRobin Gareus
2015-02-12fix midi-capture filterRobin Gareus
diskstream reads directly from port, Route use prefilled buffer-set.
2015-01-23split apart read and write chunk size and offer platform-dependent sizes for ↵Paul Davis
reading. Write chunk size should remain unchanged from before.
2015-01-19use C locale, because POSIX locale is not supported on windows, and ↵Ben Loftis
operation is undefined. C works on all platforms
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-01Comments in various call-sites of coverage()Colin Fletcher
Comments in various call sites of Evoral::coverage() marking things I think are dubious (with XXX). Also straightened up the alignment of some ASCII art in libs/ardour/diskstream.cc
2014-11-30Trim the include tree.David Robillard
2014-11-30Move EventRingBuffer to libardour.David Robillard
This is not used anywhere in Evoral and is just a wrapper around the PBD RingBuffer anyway. Towards a (once again?) independently buildable/testable Evoral and fewer cross-dependencies.
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-07-01merge with master.Paul Davis
Manually resolved conflicts in import.cc and session.cc
2014-06-26allow to set custom file name for each diststreamRobin Gareus
2014-06-15plug some leaksRobin Gareus
2014-06-08reset accumulated capture offset on file roll-over.Robin Gareus
(previously it was not reset as long as rec-arm and rec-enable remained enabled)
2014-06-08implement midi capture alignment:Robin Gareus
For audio: not writing frames to the capture ringbuffer offsets the recording. For midi: we need to keep track of the record range and subtract the accumulated difference from the event time.
2014-06-02substantive changes to the logic and safety for naming of (audio/MIDI) ↵Paul Davis
sources, especially when created via import
2014-04-14further code simplification and rationalization related to MIDI source/file ↵Paul Davis
renaming
2014-04-14dramatic change in logic and naming for operations related to adding a MIDI ↵Paul Davis
region on demand and cloning/unlinking Existing code would cause data loss due to creation of two Source objects referring the same path, one with removable flags and one without. Careful code review suggested a variety of thinkos, function naming problems and other confusion that caused this. I have tried ot extensively comment what is going on with these operations, because it is one key area in which MIDI differs from audio: with audio, capture is the only way to add a new audio region, but for MIDI there are GUI input events that can add a new region.
2014-04-14redesign technique for naming/creating regions for MIDI clone (or other ↵Paul Davis
non-capture driven MIDI region creation operations). See comments in Session::new_midi_source_name() for details.
2014-04-14further code simplification and rationalization related to MIDI source/file ↵Paul Davis
renaming
2014-04-14dramatic change in logic and naming for operations related to adding a MIDI ↵Paul Davis
region on demand and cloning/unlinking Existing code would cause data loss due to creation of two Source objects referring the same path, one with removable flags and one without. Careful code review suggested a variety of thinkos, function naming problems and other confusion that caused this. I have tried ot extensively comment what is going on with these operations, because it is one key area in which MIDI differs from audio: with audio, capture is the only way to add a new audio region, but for MIDI there are GUI input events that can add a new region.
2014-04-10redesign technique for naming/creating regions for MIDI clone (or other ↵Paul Davis
non-capture driven MIDI region creation operations). See comments in Session::new_midi_source_name() for details.
2013-09-21Merge remote-tracking branch 'remotes/origin/cairocanvas' into windowsJohn Emmas
Conflicts (hopefully resolved): gtk2_ardour/marker.cc gtk2_ardour/midi_region_view.h gtk2_ardour/region_gain_line.h gtk2_ardour/utils.cc gtk2_ardour/video_image_frame.cc gtk2_ardour/wscript libs/backends/jack/wscript
2013-09-14fix merge conflicts with masterPaul Davis
2013-09-12incomplete merge of master into windows (requires upcoming changes to master ↵Paul Davis
to be complete)
2013-08-24fix merge conflicts from masterPaul Davis
2013-08-14some const_cast<> additions for OS X where gcc believes that volatile int* ↵Paul Davis
means const int*
2013-08-09more purging of JACK as an explicit name from libardourPaul Davis
2013-08-08advance track's play-position even if processing is lockedRobin Gareus
fixes * http://tracker.ardour.org/view.php?id=5628 * http://tracker.ardour.org/view.php?id=5561
2013-08-08Revert "Remove non-portable and unnused header includes"Paul Davis
This reverts commit 7ef79d3f4b02e3d2e71d6888fbedd9b3f9c325c7.
2013-08-08Remove non-portable and unnused header includesPaul Davis
2013-08-05fix conflicts after merge with masterPaul Davis
2013-08-03advance track's play-position even if processing is lockedRobin Gareus
fixes * http://tracker.ardour.org/view.php?id=5628 * http://tracker.ardour.org/view.php?id=5561