13
0
Commit Graph

13774 Commits

Author SHA1 Message Date
47246c86e2 add missing lock (for audition + mon section) 2017-10-10 22:12:54 +02:00
514c43278b OSC clean up route observer 2017-10-07 20:23:48 -07:00
ad226cf2bb For 'Route::send_pan_azi_controllable()' (when building non-Mixbus) I'm assuming the intention was to return an empty object
(i.e. similar to 'Route::send_enable_controllable()')
2017-10-07 10:11:12 +01:00
2107d09454 US2400: add us2400 files to repository. 2017-10-05 10:55:45 -05:00
0e12c967ea US2400: add us2400 to surfaces. 2017-10-05 10:03:09 -05:00
28d8f2f6b9 US2400: send_pan_azimuth lookup function (currently mb-only) 2017-10-05 09:59:03 -05:00
e156ec28bb US2400: add debug bits 2017-10-05 09:55:32 -05:00
9c3983a7a5 Fix various edge-cases with session-archives
* prevent duplicate names when pulling-in external sources
* drop "origin" after including external sources
* don't include unused playlists
  (they may reference sources that are not included)
* likewise exclude unused regions
2017-10-04 05:06:47 +02:00
e31f5d9998 Clean up State API:
* Processor implement get_state(), classes derived from Processor
  implement protected ::state() -- as documented in processor.h
* likewise for Route, Track: make ::state() a protected interface
* removal of "full_state", use explicit "template_save"
* use RAII/Unwind to skip saving automation-state
2017-10-04 00:54:55 +02:00
5dd9acf9ab Fix another hardcoded "tar.xz" -> ARDOUR::session_archive_suffix 2017-10-03 18:03:40 +02:00
0802a0872f API change: expose session-archive compression-level 2017-10-03 02:24:16 +02:00
7613c9cb34 Fix session-archive edge-cases, prepare uncompressed archives
* don't fork/clone midi regions (default snapshot)
* properly handle encoding embedded/external multi-channel files
* use dedicated file-extension (prepare for uncompressed archive)
2017-10-03 02:24:10 +02:00
df83c0381e Prepare support for compression levels (archive + flac) 2017-10-03 02:22:42 +02:00
3f48d00081 use new CubicInterpolation API 2017-10-02 12:46:12 -04:00
45b1f6f6b8 change API and implementation for CubicInterpolation and Interpolation.
Also remove LinearInterpolation which is not used
2017-10-02 12:44:52 -04:00
4b9bf57b39 remove cruft 2017-10-02 12:44:52 -04:00
7921f6dc4d DiskReader should do nothing at all if there are no channels 2017-10-02 12:44:52 -04:00
4cc5958960 remove cruft 2017-10-02 12:43:34 -04:00
a2703ea503 remove midi_interpolation member of DiskIOProcessor (was used only to call ::distance() method 2017-10-02 12:43:34 -04:00
54f9edaf4b NO-OP: comment format change and whitespace 2017-10-02 12:43:34 -04:00
ee3090dff6 remove cruft from DiskIOProcessor header 2017-10-02 12:43:34 -04:00
318600d05e use constructor syntax 2017-10-02 12:43:34 -04:00
275756e96a remove leftover cruft related to wrap buffers from DiskIOProcessor 2017-10-02 12:43:34 -04:00
2153449400 tracks no longer need to be notified about speed changes 2017-10-02 12:43:34 -04:00
9775c5c9f1 set owner or disk-i/o processors
This fixes a race-condition. These plugins may be run w/o being
re-configured which sets the ownershi. currently debug msgs use
owner()->name()
2017-10-01 20:54:40 +02:00
c5a92ef813 Fix MIDI rec-region display
gui_feed_buffer is used for DiskWriter -> GUI notifications.
It was wrongly migrated from MidiDiskstream to DiskReader in 7fb6807
2017-10-01 03:30:02 +02:00
05ab7a46b5 Fix recording MIDI
- 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-10-01 03:03:44 +02:00
0431ed3d3e Disk-writer: don't record immediate/oob events 2017-09-30 23:38:41 +02:00
93d11d155c Make MIDI disk-reader a bit less buggy :)
* 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-30 23:30:52 +02:00
eb0dded095 Immediate-event/out-of-band injection update & tweak clearing buffers
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-30 23:16:04 +02:00
97c637e399 MIDI debugging. 2017-09-30 22:44:44 +02:00
37eb68e817 Remove unused IO::process_input() API
This was only needed in order to run the meter on inputs when Ardour did
no processing at all.
2017-09-30 18:56:54 +02:00
56edd3767c NO-OP, re-order code, put all *roll() methods next to each other. 2017-09-30 18:54:47 +02:00
dec10f2f3c First part of consolidating ::roll(), ::no_roll()
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-30 18:53:02 +02:00
0fc3bbddb2 remove unused Route::_silent 2017-09-30 18:46:24 +02:00
de4c0eb27c Remove Input-meter special-case
Now that disk is no longer topper-most but a processor, the special
case is no longer needed.
2017-09-30 18:01:45 +02:00
45336723f9 Re-initialize MMC devices when the preference is enabled 2017-09-30 16:48:30 +02:00
5fa9f8b399 Towards fixing no_roll()
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-30 16:45:45 +02:00
697d29cdc2 Fix thinko in 8139becb -- route split cycle
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-30 13:10:17 +02:00
61f8e53b7e Disk-reader don't silence buffers when not rolling
Doing so may clear out-of-band data which is injected into the
data-stream.
2017-09-30 05:35:12 +02:00
5ada17eba0 Fix MIDI port offsets.
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-30 05:25:27 +02:00
72fb8a5342 Align punch in/out recording with latency-compensation 2017-09-30 02:45:13 +02:00
915b308a88 amend ccedb2d44 2017-09-29 21:15:51 +02:00
bf41b7cfcb remove cruft 2017-09-29 21:05:46 +02:00
70c4977ab3 remove *.orig files (accidentally added in cba53a202) 2017-09-29 21:05:06 +02:00
ccedb2d44e Remove unused punch+preroll API
This API was not used, also superseded by record w/preroll.
2017-09-29 21:02:22 +02:00
33811b51b2 Convert Diskstream/Playlist from A5 session format 2017-09-29 06:48:27 +02:00
27b02b672a remove cruft 2017-09-29 06:32:10 +02:00
1339d42c78 Add DiskIOProc & Latency related Lua bindings & scripts 2017-09-29 05:03:48 +02:00
2b20f30d81 Aux-Send Latency compensation, part 2 & code-consolidation 2017-09-29 05:03:48 +02:00
9f9e948d84 Update Send: Include internal 'thru' delay-line
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-29 05:03:48 +02:00
ddd4e3cf1d Aux-Send Latency compensation, part 1: latent sources 2017-09-29 05:03:48 +02:00
f974cd5401 Update Timecode Generator/Slave alignment 2017-09-29 05:03:48 +02:00
eb6df8939d Delayline: report if set_delay() actually changed the delay 2017-09-29 05:03:48 +02:00
5a2ea4d0e2 Delayline naming -- for debug purposes 2017-09-29 05:03:48 +02:00
24ec0b974d Properly aligned export (Stem + Session)
Delay ports being exported by their playback latency.
2017-09-29 05:03:48 +02:00
a6cc58d757 Remove unused mechanism 2017-09-29 05:03:48 +02:00
519576c31f Update the Metronome, align to output 2017-09-29 05:03:48 +02:00
8139becb18 Ongoing work on latency compensation
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-29 05:03:48 +02:00
8ff3b5ecf6 Add API to query IO latencies
IO::connected_latency() is relevant once Ardour publishes individual
per Port latency.

IO::public_latency() is only for debug purposes.
2017-09-29 05:03:48 +02:00
491523d6b7 Add Processor API for global session-transport alignment
These are only relevant for DiskIO Processors, however more
use-cases may present themselves (e.g. LuaDSP)
2017-09-29 05:03:48 +02:00
69b9ad6bcc Prepare removal of initial_delay 2017-09-29 05:03:48 +02:00
3d1e1d7213 clean up route header, NO-OP (except variable re-order) 2017-09-29 05:03:48 +02:00
abb7cb90e7 NO-OP: Whitespace 2017-09-29 05:03:48 +02:00
2fa1f1b0b3 Remove code related to capture-offset. 2017-09-29 05:03:48 +02:00
d98f87d542 No more disk-reader roll-delay
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-29 05:03:48 +02:00
bcdb3aec3a Check in a few MSVC projects to accommodate the change from libtimecode to 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-28 12:27:56 +01:00
7f327905a0 Accommodate newly added/removed source(s) in our MSVC project (libwidgets) 2017-09-28 12:27:55 +01:00
b2032938b1 Accommodate newly added/removed source(s) in our MSVC project (libtemporal) 2017-09-28 12:27:54 +01:00
657ba64ad2 Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to 'libs/temporal/MSVCtemporal/temporal.vcproj' 2017-09-28 12:27:54 +01:00
2750f7f485 Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal' 2017-09-28 12:27:53 +01:00
7e2c002ef6 Propagate Latency to backend/system ports (Dummy backend)
amend ab3889ff (which implements this for other backends)
2017-09-28 13:14:11 +02:00
b137a2982f Export needs to offset buffers when processing partial cycle 2017-09-26 17:52:43 +02:00
a80c8e1bb7 Fix FixedDelayline, default configuration increased set max-delay 2017-09-26 17:52:35 +02:00
61be0990fa change libtemporal to be versioned like all others 2017-09-25 12:13:54 -04:00
dcb55c508e additional changes to follow library name change from timecode -> temporal 2017-09-25 12:13:54 -04:00
f27ff4c8b8 Retire ClickBox + AutoSpin
After over 17 years of honorable service to the Ardour Codebase.
ClickBox and AutoSpin are retiring into the git nirvana.

We're glad for the duty, decency, reliability, dignity, respect which
these classes brought to Arodur and look back in gratitude on their years
of service.



PS. First one to say "cruft" will be fired.
2017-09-25 15:45:27 +02:00
74c986534b Simplify the logic of on_scroll_event 2017-09-24 22:58:59 +02:00
564fcb2132 Make ArdourFader's scroll handler obey to Alignment increments
Currently, the scroll handler obeys to the page increment, but instead
of using the step increment for more precise scroll, it uses an
hardcoded one tenth of the page increment.

Use the step increment instead since it has been filled with sensible
values by ArdourFader's users.
2017-09-24 22:58:59 +02:00
b9c6ffac21 fix header order and space alignment 2017-09-24 12:57:27 -04:00
7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
9283bee867 new header file for audio-based time types 2017-09-24 12:03:13 -04:00
48d402c960 part two of initial libtemporal creation 2017-09-24 10:48:00 -04:00
b62c305f20 change libtimecode to libtemporal, add Evoral::Beats, positional types and superclock headers 2017-09-24 10:47:28 -04:00
39fb5762b0 Add API set bar-controller spinbox digits
..and reduce default to 4 digits.
2017-09-23 19:39:36 +02:00
a9c8a25fc4 prefer floor() over round(), this avoids "-0"
GUI interface values are always in the range 0..1 so there's no abiguity
with trunc()
2017-09-23 18:59:39 +02:00
d50c738203 NO-OP: whitespace 2017-09-23 02:31:52 +02:00
94cce9e06e Fix changing playlist (Track is responsible for signal emission) 2017-09-23 02:31:00 +02:00
e39a8b90d9 amend ab3889ff: portaudio backend uses a vector for connections 2017-09-23 01:06:10 +02:00
13cf4da011 Consolidate check for internal/non-removable processors 2017-09-23 00:34:01 +02:00
ab3889fff8 Propagate Latency to backend/system ports
Set accumulated capture-latency for physical-outputs
and accumulated playback-latency for physical-inputs
after Ardour is done setting all non-physical port latencies.

This will be needed for latency-compensation of the complete graph.
2017-09-23 00:34:01 +02:00
25f45022db Fix order of [initial] latency-computation
Session::post_playback_latency() sets the actual route latency,
so that playback latency notifications need to come after capture-
latency (backends follow the same rule: capture first).


NB. Session::initialize_latencies() was already using the correct order
2017-09-23 00:34:01 +02:00
c681e9d4d7 NO-OP: whitespace 2017-09-23 00:34:01 +02:00
aac8040e95 Enforce disk-reader to be after the disk-writer
If disk-monitoring is disabled: disk-reader position is not relevant.
If Rec-arm is off: disk-writer position is not relevant.

But...

   Play -> [plugins] -> Record

is basically a bounce and best done using the bounce operation.
(faster than realtime).

   Input + Play -> Record -> Output

Ardour would need to align playback with the Input to be recorded
and at the same time align it with output, so that a player can play
along on the same track. That's not possible without a time-machine (or
a 2nd play processor).

While it can work in theory under some special circumstances, allowing
the disk-reader before the disk-writer is really just confusing,
error prone and valid uses cases are better handled by dedicated
operations.
2017-09-22 03:47:38 +02:00
431b2f15c6 NO-OP: whitespace 2017-09-22 01:52:48 +02:00
7a51d8f768 AlignmentChoise is a Track Property
The DiskWriter uses AlignStyle which is set dynamically
by the Track and may depend on I/O connections.
2017-09-22 01:52:37 +02:00
506a29e2d3 Don't recurse into MacVST bundle-folders during plugin-scan 2017-09-21 20:02:11 +02:00
4e5423b348 fix clang compilation (include header ordering)
"i18n.h" needs to be included last, after types have been defined or
clang bails out:
"call to function 'operator<<' is not visible in the template definition"
2017-09-21 19:38:13 +02:00
87f5cd30d1 Fix crash when unloading a partially loaded session. 2017-09-21 17:35:52 +02:00
0fd861d8de s/created with/modified with/
Once a session has been saved by a more recent version or a different
variant, the session file is tied to that version/variant.

The created-with version is only for debug purposes and internal use.
2017-09-21 02:01:12 +02:00
7d559de3d0 fix boolean logic for roll_delay vs. disk_samples_to_consume 2017-09-19 21:39:46 -04:00
0a4b9ffba5 do not advance DiskReader's idea of playback_sample while waiting for _roll_delay to expire 2017-09-19 21:38:59 -04:00
bda2e9738f clearer catastrophic error message, rather than assert() 2017-09-19 21:38:59 -04:00
48d11000e5 attempt to fix roll delay logic by moving it into DiskReader (the only place it matters) 2017-09-19 18:53:27 -04:00
59ccf91eea Revert some more frame/sample API issues 2017-09-19 18:40:29 +02:00
ebf6856579 Revert "remove unusued roll_delay member of DiskReader"
This reverts commit 92c2e06eb72950f91ca943a5219e2caeaeecda9f.
2017-09-19 11:15:22 -04:00
e44ae422eb remove unusued roll_delay member of DiskReader 2017-09-19 11:15:22 -04:00
21aa2f529f Fix nightly typos'n'thinkos: initial-delay calculation 2017-09-19 17:03:28 +02:00
R. Mattes
f7e35024b6 Fixed typo 2017-09-19 08:34:04 -04:00
2c31867c8a Accommodate newly added/removed source(s) in our MSVC project (libardour) 2017-09-19 12:22:06 +01:00
16f9f58057 More s/frame/sample/ - fixes unit-test compilation
"frame" in #include file-names was replaced, this actually renames
the files to follow suit.
2017-09-19 05:37:58 +02:00
666aa5a557 More Coreaudio SDK fixes, after 30b087ab3 2017-09-19 05:20:05 +02:00
29e553ab86 Amend c8a9b28d3 and 40aebce. Fix gain automation edge-cases:
* drop Trim/Fader automation for bypassed processor
* Trim/Fader automation for Busses is always active when rolling
2017-09-19 04:54:42 +02:00
1ec471c961 partially revert 30b087ab3, CoreAudio SDK uses "Frames" 2017-09-19 04:47:10 +02:00
c8a9b28d3b remove getter for Amp::_apply_automation_gain; reset member to false after use, and true after ::setup_automation_gain
runs successfully
2017-09-18 22:21:27 -04:00
40aebce699 consolidate roll methods into Route::roll()
We want Track to shrink, and logic consolidation is always good. Route already knew about
disk_reader and disk_writer, now it knows about _monitoring_control too
2017-09-18 21:28:02 -04:00
10b76ae631 Various updates and fixes for Latency Compensation
* centralize signal_latency_at_***_position to processors
* update initial-delay/roll-delay when processor order changes
* consolidate signal-latency calculation: use the same method
  for processor-changes and session's post_playback_latency.
* include relative output-delay in roll-delay
* fix capture processor position & optimize stem-export latency

(roll-delay fixes pending Route:roll() update)
2017-09-19 02:11:22 +02:00
013088ca5f remove debug output 2017-09-18 14:59:11 -04:00
d381714510 amend prev. commit 2017-09-18 20:41:43 +02:00
d36e909ad4 Tweak default config
* disable MMC by default
* auto-detect audition-synth at first run (prefer gmsynth if available)
2017-09-18 20:30:40 +02:00
0a53b13de5 Disk IO "pre-fader" means pre-trim, not post-trim 2017-09-18 13:41:28 -04:00
c755a6c12c NO-OP: reindent 2017-09-18 13:24:04 -04:00
7a477fb9d6 manually fix up comments in libs/timecode/src/time.cc that got edited by f2s 2017-09-18 13:19:12 -04:00
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
cb956e3e48 fix issue with initialization of a BBT_Time variable. 2017-09-18 11:53:47 -04:00
cba53a2023 add _locked() variants to new tempo experiment 2017-09-18 11:40:54 -04:00
6f553ce988 changes required to operate with the Evoral::Beats ticktime commit 2017-09-18 11:40:53 -04:00
5ef0135283 remove Evoral types.cpp since it is no longer required 2017-09-18 11:40:53 -04:00
89f105892c new header file for superclock stuff 2017-09-18 11:40:53 -04:00
176cdecd03 extend/fix/improve operator overloads and methods for Timecode::BBT_Time 2017-09-18 11:40:53 -04:00
9ea43bd5ad extend/fix/improve operator overloads and methods for Evoral::Beats 2017-09-18 11:40:53 -04:00
f4f0e70320 NOOP: formatting 2017-09-18 11:40:53 -04:00
3f50ace767 ::find_next_event() does not need to be a pure virtual in ControlSet (it can originate in AutomatableSequence) 2017-09-18 11:40:53 -04:00
789b98e6f2 remove locate debugging output 2017-09-18 11:40:53 -04:00
ac8dc40035 fix for loading older sessions, where the rest for "is-track" was "has-diskstream", rather than "has-playlist" 2017-09-18 11:40:53 -04:00
de7963941d Don't build ni-maschine support by default
While the pads work, overall integration is still not present, mainly
because the device does not lend itself for editing & mixing in a
DAW environment.
2017-09-18 11:40:53 -04:00
a71171786f Maschine2 UI: basic widgets 2017-09-18 11:40:53 -04:00
0a6d1ab06e Skeleton for NI Maschine2 Surface 2017-09-18 11:40:53 -04:00
eeeb8563c2 sort of no-op ... remove debug output ... just basically put it in git so that i can fetch it on another machine 2017-09-18 11:40:53 -04:00
f8de3e0c6e reinstate "restart seek" behaviour but use a new Session::_seek_counter member variable for this 2017-09-18 11:40:53 -04:00
828b95b526 no more locate-restart based on mismatch transport_frame and locate target 2017-09-18 11:40:53 -04:00
8033fd9912 remove tests for locate_pending() before deciding whether to increment transport position 2017-09-18 11:40:53 -04:00
9836cd3943 more verbose debug output for slave debugging 2017-09-18 11:40:53 -04:00
7149d72625 verbose debug output for slave debugging 2017-09-18 11:40:53 -04:00
b5e1877297 attempt fix for LTC slave when locating 2017-09-18 11:40:53 -04:00
b61146365f delete slave during Session::destroy 2017-09-18 11:40:53 -04:00
d3404f3684 fix logic error that prevent input monitoring during slave wait states 2017-09-18 11:40:53 -04:00
2212403431 don't attempt MIDI playback if there are no MIDI buffers provided for processing 2017-09-18 11:40:53 -04:00
b115a04bab additional DEBUG_TRACE output for slave/diskreader 2017-09-18 11:40:53 -04:00
5c0ce7311a reset DiskReader "no disk output" flag in a couple of exceptional cases 2017-09-18 11:40:53 -04:00
9d423bb12c remove debug output 2017-09-18 11:40:53 -04:00
650953ed14 Non-layered MIDI recording
hand-adapted version of d977cc3238 from master

This does not merge MIDI data, but trims MIDI regions at rec-stop like
non-layered audio-recording does.
2017-09-18 11:40:53 -04:00
2a192dbbd6 remove debug output 2017-09-18 11:40:53 -04:00
38e9487564 when calculating average slave/master delta, use absolute value.
We're interested in average distance between slave/master, the direction is irrelevant and
using sign as direction causes the computed average to be absurd
2017-09-18 11:40:53 -04:00
e9dd575ca5 remove all code related to "silent roll" concept. some debug output added 2017-09-18 11:40:53 -04:00
24df2b5594 NO-OP: mark various state property names as explicitly non-translated 2017-09-18 11:40:53 -04:00
13d44c4d76 move disk_{writer,reader} into Route to allow for simple, sensible implementation of DiskIOPoint 2017-09-18 11:40:53 -04:00
9d355f1390 don't (re)create disk reader/writer if they already exist 2017-09-18 11:40:53 -04:00
6038ef44f9 auditioner always runs at normal speed, independent of transport speed 2017-09-18 11:40:53 -04:00
fb430a7738 add to LUA API (new Stripable API) 2017-09-18 11:40:53 -04:00
9da08b5f19 use const 2017-09-18 11:40:53 -04:00
2c0b35fbb1 remove unused + commented line 2017-09-18 11:40:53 -04:00
29d2754c9a subtle change to _need_butler logic to ensure correct result in mixed-type contexts 2017-09-18 11:40:53 -04:00
59be854f79 reinstate use of a MidiTrack's MIDI filter when reading from disk 2017-09-18 11:40:53 -04:00
8f4d432d73 channel config changes during ::configure_io() must be scoped to ensure they are complete before signals are sent 2017-09-18 11:40:53 -04:00
ece52d3278 move _file_frame from DiskIOProcessor into DiskReader (only place where it is needed); split into by-type array to deal with different rate of audio & MIDI i/o 2017-09-18 11:40:53 -04:00
4dc5be0936 MidiTrack needs to set it's "need butler" status 2017-09-18 11:40:53 -04:00
8b8ce09e9f use a more useful and accurate heuristic to get ::input_streams() for the auditioner 2017-09-18 11:40:53 -04:00
7a0b53f75e clear regions from "other" playlist type in auditioner when starting a new audition 2017-09-18 11:40:53 -04:00
6c14f96ddc auditioner does not care about the state of its diskwriter processor 2017-09-18 11:40:53 -04:00
aaac1e489b change callers of changed Track::use_new_playlist() API and its implementation 2017-09-18 11:40:53 -04:00
a7431e21db remove Auditioner::prepare_playlist() - not used 2017-09-18 11:40:53 -04:00
6bc95465d6 add Track::use_default_new_playlist() 2017-09-18 11:40:53 -04:00
1f53c861b8 remove Track::hidden(); replace with Stripable::is_private_route() 2017-09-18 11:40:53 -04:00
838655bd39 emit required signal 2017-09-18 11:40:53 -04:00
4bfc5ddf71 mechanism to allow Track (or other Route-derived type) to add its own processors at the right time 2017-09-18 11:40:53 -04:00
e5ea6d81d8 add enum registration for DiskIOPoint 2017-09-18 11:40:53 -04:00
9885f04fe6 tweaks to disk io point mechanisms 2017-09-18 11:40:53 -04:00
dc4f730ac9 initial (incomplete) framework for DiskIOPoint manipulation 2017-09-18 11:40:53 -04:00
03e99e9866 fix longstanding compiler warning 2017-09-18 11:40:53 -04:00
c431b527ec new enums for disk i/o positioning 2017-09-18 11:40:53 -04:00
66c5fe41ee framework for silent-roll-while-slave-syncing 2017-09-18 11:40:53 -04:00
144f95c305 do not queue multiple Locate or LocateRoll events 2017-09-18 11:40:53 -04:00
3d183dc462 debug instrumentation for locate time 2017-09-18 11:40:53 -04:00
e6576e2934 probable fix for out-of-sync issue across tracks after locate 2017-09-18 11:40:53 -04:00
646d6bec7e when DiskReader checks to see if a locate is in progress, it must be atomic with respect to all DiskReaders 2017-09-18 11:40:53 -04:00
fb9dd1a411 DiskWriter needs to drop source refs in its destructor.
SerializedRCUManager can't do this by itself
2017-09-18 11:40:53 -04:00
f76c05851f change visible name of disk i/o processors 2017-09-18 11:40:53 -04:00
871428576c do not change Session::_transport_frame is a locate is pending 2017-09-18 11:40:53 -04:00
6fb212a6f6 restart non-RT locate if a new request has been processed by RT context since we started 2017-09-18 11:40:53 -04:00
58ea3d3d8c adjust debug trace output message 2017-09-18 11:40:53 -04:00
bdf3067a59 comment out debug trace output 2017-09-18 11:40:53 -04:00
5ec3e036ff comment out debug trace output 2017-09-18 11:40:53 -04:00
8101d9884f don't bother to re-seek/locate/refill buffers when disk IO processor config changes unless it actually changed 2017-09-18 11:40:53 -04:00
b0c6273f90 add new debug trace output 2017-09-18 11:40:53 -04:00
3dd6144ff5 comment out debug trace output 2017-09-18 11:40:53 -04:00
9edfe24399 fix logic bug in deciding if there is outstanding disk i/o work in butler 2017-09-18 11:40:53 -04:00
0c51230b9f comment out debug trace output 2017-09-18 11:40:53 -04:00
9df314d6d5 add new debug trace output 2017-09-18 11:40:53 -04:00
04c43ffd7e NOOP: remove line split for conditional 2017-09-18 11:40:53 -04:00