13
0
Commit Graph

25935 Commits

Author SHA1 Message Date
5c24db2402 Fix pre-roll cycle-split
previously this worked as long as the cycle was only
needed to be split once.
2017-10-12 01:49:05 +02:00
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
32c725115d US2400: add us2400 to surfaces path, in ardev 2017-10-05 10:47:32 -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
b73eac450a Fix session-archive file extension filter 2017-10-03 03:09:25 +02:00
f9710f4624 Update Session-Archive Dialog: add compression-option 2017-10-03 02:24:19 +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
86d3735ea8 Fix MIDI Automation interpolation options 2017-10-03 02:20:57 +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
d554dcc096 These are "Frames" :) 2017-10-01 04:00:50 +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