summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
AgeCommit message (Collapse)Author
2013-07-31another amend to 00f26394a9Robin Gareus
2013-07-16zero meters for inactive tracksRobin Gareus
2013-07-16fix "monitor mode 11"Robin Gareus
see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV2.pdf the overall logic can probably be simplified somewhat track-rec-enable on -> always monitor input
2013-07-16fix input metering:Robin Gareus
if meter==input, meter depends on In/Disk see also 29108187ed
2013-04-06rename Route::is_hidden() to Route::is_auditioner() and Route::Hidden to ↵Paul Davis
Route::Auditioner. this has been the meaning of these terms for years now and it would be better to make it explicit
2013-03-29major fixes for MIDI patch change and note undo/redo. Patch change handling ↵Paul Davis
was completely broken because of the use of absolute floating point comparisons for time comparison, and serialization/deserialization of patch change property changes was borked because of int/char conversions by stringstream. Note undo/redo would fail for note removal if a note had been moved and/or had its note number changed as the next operation after it was added, because time-based lookup would fail. Similar small changes made for sysex messages, which just needed the musical_time comparisons and nothing else
2013-03-27Squashed commit of the following:Paul Davis
commit fdbae82077db53add90df7448a06869dac89acc6 Author: Paul Davis <paul@linuxaudiosystems.com> Date: Wed Mar 27 21:45:28 2013 -0400 mammoth changes in basic signal flow, total redesign of MIDI channel filtering and more. commit 59343a8283698e02bc0f622313b29e98f449e4c8 Author: Paul Davis <paul@linuxaudiosystems.com> Date: Wed Mar 27 01:58:53 2013 -0400 initial working version after changes to MIDI channel filtering. may affect metering input too. testing not yet finished this commit merges many deep changes in ardour's internal architecture, combined with a total redesign of how MIDI channel filtering works. data in a track used to flow from JACK port buffers to diskstream's ringbuffers and was then copied from the ringbuffers into a BufferSet for use during Route::process_output_buffers(). The butler thread would handle the movement of data between the ringbuffers and disk. with this commit, data now flows from JACK port buffers into the BufferSet used for Route processing, and is copied from the BufferSet into the diskstream's ringbuffers (the butler thread continues to handle interactions with disk as usual). this change allowed a dramatic consolidation of code and simplification of most aspects of Track/Route::roll() and Track/Route::no_roll(). in particular, see Route::fill_buffers_with_input() which now concisely describes how we move data from JACK port buffers into the BufferSet for all Route types (including Tracks). this work was initially motivated by changing MIDI channel filtering so that we can process capture and playback independently. there is now a very clean pathway for this - see MidiTrack::roll() (NOTE: This needs implementing in the no-roll case too - a TODO item). the channel selector for MIDI tracks has been moved out of the track header and is now accessible via the context menu. more work is likely here, to make it (more) obvious to the user when filtering is going on.
2013-01-20Show matching controller name in automation lane header.David Robillard
Completely eliminate static MIDI controller name code. Reduce dependency on midnam_patch.h (which would have saved me several hours if I did it earlier). Store controller name numbers as an integer. Keep controller names in a map keyed by int instead of a list for fast lookup. More cleanup of MIDI::Name code. git-svn-id: svn://localhost/ardour2/branches/3.0@13927 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-08tentative redesign of MIDI looping, will probably fix #5050 but needs more ↵Paul Davis
extensive testing; remove several unused parameter names git-svn-id: svn://localhost/ardour2/branches/3.0@13810 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-19prevent MIDI tracks from ever being in MonitoringSilence state, allows use ↵Paul Davis
of piano roll whether rolling or not git-svn-id: svn://localhost/ardour2/branches/3.0@13679 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-12finalize fix for MIDI track monitoringPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13646 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-05tentative fix for MIDI monitoring bug - just use existing monitoring code, ↵Paul Davis
i.e. treat MIDI tracks just like audio... needs feedback from MIDI users (also #5060 reporter) git-svn-id: svn://localhost/ardour2/branches/3.0@13602 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12tidyHans Baier
git-svn-id: svn://localhost/ardour2/branches/3.0@13253 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-13dramatic overhaul of automation. too long to explain here. this work is not ↵Paul Davis
finished - write/touch passes do not correctly overwrite existing data because the semantics of ControlList::insert_iterator need clarification. more to follow git-svn-id: svn://localhost/ardour2/branches/3.0@13038 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-04Revert erroneous commit 12922 and replace with a better fixCarl Hetherington
(should fix #4947, #4963, #4987). git-svn-id: svn://localhost/ardour2/branches/3.0@12986 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-18make switching between input+disk monitoring work "right" for MIDI tracks; ↵Paul Davis
also fix a bug that led to messages about notes already being on at program start because of a double seek with no read in between git-svn-id: svn://localhost/ardour2/branches/3.0@12762 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-17Remove believed-unnecessary and broken MIDI thru option;Carl Hetherington
should fix #4749. git-svn-id: svn://localhost/ardour2/branches/3.0@12746 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
2012-04-23Get the _note_mode set up correctly in a MidiDiskstreamCarl Hetherington
before the initial buffer fill, so that percussive mode tracks play properly from the off (#4737). git-svn-id: svn://localhost/ardour2/branches/3.0@12068 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-15A few tweaks to make Ardour build in GCC -std=c++0x mode.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11983 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-14Fix a few framecnt / framepos type confusions.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-11Remove unused parameter to Port::flush_buffers().Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11906 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-15radically rethink export/bounce/freeze code design. probably not 100% done ↵Paul Davis
by freeze+unfreeze now work and behave sensibly w.r.t. processors that do routing git-svn-id: svn://localhost/ardour2/branches/3.0@11701 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-30Fix non-summon of butler when a track that needs it is followed by a track ↵Carl Hetherington
that does not (in the single-process-thread-CPU case). Should fix #4677. git-svn-id: svn://localhost/ardour2/branches/3.0@11391 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-09add MIDITrack specific ::monitoring_state() methodPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@11207 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26a grab bag of changes correcting and improving the way MIDI note on/off ↵Paul Davis
tracking is done. may/should fix a number of problem with spurious note-offs under a variety of circumstances git-svn-id: svn://localhost/ardour2/branches/3.0@11074 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26Tidy up monitoring slightly so that it matches oofus' truthCarl Hetherington
table for the various different states. Should fix #4533. git-svn-id: svn://localhost/ardour2/branches/3.0@11073 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-23Rename a few bits and fix a undeclared method.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11066 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-22main fix: when transport stops, clear per-region per-playlist note trackers ↵Paul Davis
even if there is no capture data to process; side effects: remove unused MidiBuffer::merge() and add DEBUG::MidiTrackers as well as more and better MIDI debug tracing facilities git-svn-id: svn://localhost/ardour2/branches/3.0@11057 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-14send sustain=off and all-notes-off when a MIDI track is muted (may fix #4295)Paul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@11005 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-13fix up mess with unassigned Playlist::orig_track_idPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@10998 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-21Remove unused with_processors parameter toCarl Hetherington
process_output_buffers; functionality to return elsewhere. git-svn-id: svn://localhost/ardour2/branches/3.0@10722 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-16Remove set_state / _set_state dance in Route hierarchyCarl Hetherington
that seems to have been a hangover from when _set_state was called in constructors. git-svn-id: svn://localhost/ardour2/branches/3.0@10654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-04Remove non-RT-safe alloc in the MIDI process() call.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10441 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-31Fix compensation of roll delay with MIDI tracks; dataCarl Hetherington
should be obtained from playback_sample, not transport_frame (should fix #4172). git-svn-id: svn://localhost/ardour2/branches/3.0@10362 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-31Take commit() out of process() in both types ofCarl Hetherington
diskstream, and call commit() where appropriate. git-svn-id: svn://localhost/ardour2/branches/3.0@10361 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-28Use shared_ptr for Port in the AudioEngine; improves thread-safety of the ↵Carl Hetherington
audio engine's port list as a writer cannot destroy a port in one thread while the port list is being iterated in another. git-svn-id: svn://localhost/ardour2/branches/3.0@10327 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24Move some code up from {Midi,Audio}Track to Track.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10303 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-24Remove unused call_base parameter from Route::_set_state.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10302 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-21correctly track monitoring changes in libardour and the GUI; required ↵Paul Davis
removing propagation of session rec-enabled status through process chain and replacing it with call to Session::actively_recording() where necessary (may require a new RT event) git-svn-id: svn://localhost/ardour2/branches/3.0@10265 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-21save&restore for track monitor statePaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@10263 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-19flush_buffers on all of a route's deliveries so that MIDI sends work.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10231 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-10-07Fix crash on "Consolidate Range" on MIDI tracks (#4226).David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@10200 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-18Remove unused rec_monitors_input variables.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10091 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-09-16Remove unused parameter.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@10090 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-02Fix some set-but-not-used variable warnings from gcc 4.6Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@9783 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-07-01add MIDI input control column to editor route list; tweak SVG for MIDI not DINPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@9779 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-28basic infrastructure for enabling/disabling MIDI input to a given trackPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@9772 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01Fix broken whitespace. I'd apologize for the compile times if it was my ↵David Robillard
fault :D git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf