13
0
Commit Graph

25970 Commits

Author SHA1 Message Date
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
c3acf2bf22 git ignore patch-error/orig files 2017-09-29 21:05:39 +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