summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-10-01Fix MIDI rec-region displayRobin Gareus
gui_feed_buffer is used for DiskWriter -> GUI notifications. It was wrongly migrated from MidiDiskstream to DiskReader in 7fb6807
2017-10-01Fix recording MIDIRobin Gareus
- Fix API call to add region(midi_region) -- set count to "1" - Forward DataRecorded() signal - remove botched merge/rebase" a4a87f56 accidentally brought back code from old-destructive API which was removed in af103cf3 and 08c13007 There is no per track NonLayered record mode anymore, it's session global. - set can_record correctly to not accidentally clear last capture sources for cont'd recording (toggle track's rec-arm)
2017-09-30Disk-writer: don't record immediate/oob eventsRobin Gareus
2017-09-30Make MIDI disk-reader a bit less buggy :)Robin Gareus
* use start/end frame * differentiate nframes and disk_samples_to_consume * add global Port::port_offset () when writing data. * add a note about b0rked vari-speed ..
2017-09-30Immediate-event/out-of-band injection update & tweak clearing buffersRobin Gareus
Immediate events are used for MIDI-Panic and to inject GUI generated events e.g. patch-changes, note-events from the track-header (scroomer-keyboard) and patch-change audition. Current behavior: - snapshot copy immediate events from ringbuffer into a buffer at the beginning of each the cycle. - Inject immediate events into input-buffer directly after reading the input - process "normally" - pass immediate event-buffer to disk-writer, so it can skip them (don't write immediate events to disk) - if the Route is not monitoring input: clear buffer before disk-reader and re-inject (original) immediate events after the disk-reader - immediate events process normally and are also sent to outputs.
2017-09-30MIDI debugging.Robin Gareus
2017-09-30Remove unused IO::process_input() APIRobin Gareus
This was only needed in order to run the meter on inputs when Ardour did no processing at all.
2017-09-30NO-OP, re-order code, put all *roll() methods next to each other.Robin Gareus
2017-09-30First part of consolidating ::roll(), ::no_roll()Robin Gareus
This moves common code (get and fill buffers) into ::passthru() and renames ::passthru() to ::run_route(). passthru_silence() is no longer used (it was only needed A5 style Track::no_roll_unlocked for no-roll + disk-monitoring)
2017-09-30remove unused Route::_silentRobin Gareus
2017-09-30Remove Input-meter special-caseRobin Gareus
Now that disk is no longer topper-most but a processor, the special case is no longer needed.
2017-09-30Re-initialize MMC devices when the preference is enabledRobin Gareus
2017-09-30Towards fixing no_roll()Robin Gareus
Currently ::roll() may actually be a ::no_roll() under some circumstances. This can also happen during count-in: transport_stopped () == transport_rolling() and during latency-preroll: Global session-transport speed != 0, some tracks already roll, read data from disk and feed latent plugins. but other non-latent tracks or busses don't roll and still have to behave like the switch from no_roll() to roll() has not yet happened. This changes the game WRT to monitoring as well, previously, Route:roll() called Route::no_roll_unlocked () for conditions outlined above. Now Track::no_roll_unlocked is called and in some cases wrongly clears the buffers before the signal hits the disk-writer. (more work is needed related to 61f8e53b) On the upside this also fixes an issue with MidiTrack::no_roll not keeping a lock while pushing data into the step-edit-ringbuffer. This is also a step towards consolidating all entry points: ::roll(), ::no_roll(), ::silent_roll() in the Route class.
2017-09-30Fix thinko in 8139becb -- route split cycleRobin Gareus
Individual Routes cannot split the process-cycle in no_roll(); roll() by themselves. Each of the calls will flush output buffers (and offset port-buffers). If a route feeds another route the inputs of the other route will only see partial data.
2017-09-30Disk-reader don't silence buffers when not rollingRobin Gareus
Doing so may clear out-of-band data which is injected into the data-stream.
2017-09-30Fix MIDI port offsets.Robin Gareus
AudioPort::get_audio_buffer() can offset the buffer simply by offsetting a pointer. This allows to get an offset buffer for a given port. For MIDI there's no such concept. A method writing to a MIDI buffer which is backed by a Port can at best offset it by the global port-buffer offset (static Port::port_offset), but not by the individual target port's offset.
2017-09-30Align punch in/out recording with latency-compensationRobin Gareus
2017-09-29amend ccedb2d44Robin Gareus
2017-09-29remove cruftRobin Gareus
2017-09-29git ignore patch-error/orig filesRobin Gareus
2017-09-29remove *.orig files (accidentally added in cba53a202)Robin Gareus
2017-09-29Remove unused punch+preroll APIRobin Gareus
This API was not used, also superseded by record w/preroll.
2017-09-29Convert Diskstream/Playlist from A5 session formatRobin Gareus
2017-09-29remove cruftRobin Gareus
2017-09-29Add DiskIOProc & Latency related Lua bindings & scriptsRobin Gareus
2017-09-29Aux-Send Latency compensation, part 2 & code-consolidationRobin Gareus
2017-09-29Update Send: Include internal 'thru' delay-lineRobin Gareus
This allows to push latency upstream and delay the source in case the destination has a longer latency. Also add a signal to notify the Session in case this happens, intended to queue a latency-recompute.
2017-09-29Aux-Send Latency compensation, part 1: latent sourcesRobin Gareus
2017-09-29Update Timecode Generator/Slave alignmentRobin Gareus
2017-09-29Delayline: report if set_delay() actually changed the delayRobin Gareus
2017-09-29Delayline naming -- for debug purposesRobin Gareus
2017-09-29Properly aligned export (Stem + Session)Robin Gareus
Delay ports being exported by their playback latency.
2017-09-29Remove unused mechanismRobin Gareus
2017-09-29Update the Metronome, align to outputRobin Gareus
2017-09-29Ongoing work on latency compensationRobin Gareus
The general goal is to align transport-sample to be the audible frame and use that as "anchor" for all processing. transport_sample cannot become negative (00:00:00:00 is the first audible frame). Internally transport pre-rolls (read-ahead) before the transport starts to move. This allows inputs and disk to prefill the pipeline. When starting to roll, the session counts down a global "remaning preroll" counter, which is the worst-latency from in-to-out. Each route in turn will start processing at its own output-latency. Route::process_output_buffers() - which does the actual processing incl disk i/o - begins by offsetting the "current sample" by the route's process-latency and decrements the offset for each latent processor. At the end of the function the output will be aligned and match transport-sample - downstream-playback-latency (if any). PS. This commit is a first step only: transport looping & vari-speed have not yet been implemented/updated.
2017-09-29Add API to query IO latenciesRobin Gareus
IO::connected_latency() is relevant once Ardour publishes individual per Port latency. IO::public_latency() is only for debug purposes.
2017-09-29Add Processor API for global session-transport alignmentRobin Gareus
These are only relevant for DiskIO Processors, however more use-cases may present themselves (e.g. LuaDSP)
2017-09-29Prepare removal of initial_delayRobin Gareus
2017-09-29clean up route header, NO-OP (except variable re-order)Robin Gareus
2017-09-29NO-OP: WhitespaceRobin Gareus
2017-09-29Remove code related to capture-offset.Robin Gareus
2017-09-29No more disk-reader roll-delayRobin Gareus
It was not working in sdio/6.0-pre anyway and with upcoming changes to latency compensation the concept of per disk[stream/reader] will go away.
2017-09-28Check in a few MSVC projects to accommodate the change from libtimecode to ↵John Emmas
libtemporal This is mostly to see if there'll be any problems when merging these changes into Mixbus. I'm guessing there'll be some conflicts in these projects (and a lot more to follow...)
2017-09-28Accommodate newly added/removed source(s) in our MSVC project (libwidgets)John Emmas
2017-09-28Accommodate newly added/removed source(s) in our MSVC project (libtemporal)John Emmas
2017-09-28Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to ↵John Emmas
'libs/temporal/MSVCtemporal/temporal.vcproj'
2017-09-28Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal'John Emmas
2017-09-28Propagate Latency to backend/system ports (Dummy backend)Robin Gareus
amend ab3889ff (which implements this for other backends)
2017-09-27Update session-utils ReadmeRobin Gareus
2017-09-27Minor refinement of new session utilRobin Gareus