summaryrefslogtreecommitdiff
path: root/libs/ardour/session_process.cc
AgeCommit message (Collapse)Author
2017-07-16Consistent Automation evaluation:Robin Gareus
Rule #89: The *owner* of each automation-control is responsible to evaluate automation of automated automation-controls (and emit Changed() signals to notify the GUI and slaved controls). This can happen during run(), when the Processor evaluates automation (eg. PluginInsert does that), but needs to regardless, every cycle. Emit Changed signal for GainControl This follow the same concept as PluginInsert: The Changed signal is called on demand when evaluating automation.
2017-07-04Fix session-event queue (multiple writer, single reader)Robin Gareus
The reading is done in rt-process thread, but multiple UIs (surfaces, GUI) can produce events to be queued.
2017-04-30Fix vari-speed and non-locked slave modesRobin Gareus
A transport-speed-change is no reason to skip processing. Prior to this change cannot_process() silently skipped in the process cycle of the speed-change (which may have been every process-cycle), without moving the transport or doing any processing.
2017-01-19Rework preroll-rec API:Robin Gareus
* rename: indicate that recording happens after preroll, punch-in * move API into libardour: rec+roll (no separate setup, seek, roll APIs)
2017-01-18Implement record with prerollRobin Gareus
2017-01-17Implement Count-In (before recording), fixed BPM, up to 2 barsRobin Gareus
2017-01-02allow Lua session scripts to inject [immediate] RT-eventsRobin Gareus
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-02-23Implement Lua session-scriptsRobin Gareus
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-09-15only apply transport declicking if requested to do so (default is to do so)Paul Davis
2015-04-30session: add signal to indicate batch updatesRobin Gareus
…to tell the UI to not redraw.
2015-04-29delegate signal emission to dedicated thread.Robin Gareus
This works around abysmal performance (~.15ms) of boost::function and boost::bind (in PBD::Signal). The overall load is probably higher but the realtime thread remains unaffected.
2015-04-27click-less processor re-ordering.Robin Gareus
2015-04-26clickless meter-point changesRobin Gareus
2015-04-24send LTC during process_with_events()Robin Gareus
fixes #6277 This indicates a deeper problem though. Even removing a punch-range never clears out the events. and ession::process_with_events() does not use process_without_events() until re-start.
2015-01-29stop transport when process_routes fails, even when using the parallel graph ↵Paul Davis
execution model
2014-12-10remove ugly and unnecessary debugging outputPaul Davis
2014-12-09more DEBUG::Butler output, formatting corrections, and a warning on cerr if ↵Paul Davis
capture/playback buffers are too full/empty
2014-11-18Fix potential use of uninitialized value.David Robillard
2014-11-14add abort() to non-reached codeRobin Gareus
This cleans up a lot of false-positives in static analysis and also helps compilers to optimize code paths in general. (tagging the fatal stingstream operator as ‘noreturn’ is far less trivial)
2014-10-10subtle changes to accomplish two goals (1) playhead should stop where the ↵Paul Davis
user pressed stopped (2) captured regions should end where the playhead ends
2014-09-17use Config->get_skip_playback() when handling Skip eventsPaul Davis
2014-09-17add new Skip event to SessionEventsPaul Davis
2014-07-02add a method to cancel a pending play_range. this is needed when we are ↵Ben Loftis
modifying the range with keyboard commands.
2014-04-28merge (squash) with scenechange topic branch to provide MIDI-driven scene ↵Paul Davis
change markers
2014-04-17new transport option, "loop-is-mode" which optionally changes the role of ↵Paul Davis
the "play loop" button. If enabled, then the button simply changes the behaviour of the "play" button rather than actually starting playback. If disabled transport behaviour should be unchanged from before.
2014-01-16allow auditioning via the monitor section to work.Paul Davis
Ideally, we would feed the monitor section via an internal (aux) send/return, but this is an improvement over what we had before
2014-01-03don't split process cycle at endRobin Gareus
Keep in mind: While this is the correct thing to do, it hides another another bug under the hood, related to _global_port_buffer_offset in MidiPort::flush_buffers. For debugging the latter issue, revert this.
2013-12-02don't run MIDI clock "tick" if session is silent (e.g. due to a locate)Paul Davis
2013-08-13fixes to get MTC (and probably MIDI clock) slaving working againPaul Davis
incoming MIDI data has to be parsed EVERY process cycle, not just when Slave::speed_and_position() is called. The private MIDI::Parser owned by the MTC and MClck slaves was irrelevant, since the port has its own. See comments in midi_port.h on the strangled inheritance heirarchy.
2013-08-07major redesign of MIDI port heirarchy and management (part 2)Paul Davis
2013-07-10remove another instance of xmmintrin.hPaul Davis
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-04-05ignore "external timecode is sync locked" for non timecode slaves.Robin Gareus
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-24we ain't stop for nothin' when slaved to ext time source.Robin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13985 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-23Revert "fix for problem when reverse playback hits 00:00:00:00 (may be ↵Robin Gareus
incomplete)" This reverts commit 13708 -- because it's the wrong approach to fix this. git-svn-id: svn://localhost/ardour2/branches/3.0@13713 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-21fix for problem when reverse playback hits 00:00:00:00 (may be incomplete)Robin Gareus
should fix #5221 git-svn-id: svn://localhost/ardour2/branches/3.0@13708 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-14merge robin gareus' libltc into ardour source tree for conveniencePaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13665 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-26LTC generator checks itself if to send LTC or not.Robin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13348 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-26clean up consequences of using IO/Port/Buffer for LTC output, and in related ↵Paul Davis
work, move calls to Session::ltc_tx_send_time_code_for_cycle() into Session::no_roll() to cover most cases where we "do not roll" git-svn-id: svn://localhost/ardour2/branches/3.0@13343 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-23fix backwards playback position calculationRobin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13322 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-21add LTC generatorRobin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13315 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-20LTC slave rewrite #2Robin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13313 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-16prepare for non-seekahead [LTC] slave. fix state machineRobin Gareus
locate() will call realtime_stop which will reset the slave-state. git-svn-id: svn://localhost/ardour2/branches/3.0@13290 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12tweaks to be ready for more information timecode display in Timecode clock modePaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13264 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-10move timecode-is-clock-synced option to global configuration parameters, not ↵Paul Davis
per session git-svn-id: svn://localhost/ardour2/branches/3.0@13235 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-10ignore slave/engine time-delta when recording.Robin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13227 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