Age | Commit message (Collapse) | Author |
|
|
|
loop ends)
|
|
Replacement to follow in subsequent commit
|
|
Previously use-monitor-fades was unused in A6, and transition
between monitoring states used the use-transport-fades preference.
|
|
|
|
The disk-reader assumes that all playback ringbuffers are in sync
and have the same fill_level.
|
|
Port (or Tracks) can be safely added during playback, however
the disk-reader's playback buffer is initially empty. This lead to
false-positive Underrun() signals when processing takes place
before or concurrently with re-filling the disk-buffer for the new
channels.
Now new empty buffers are ignored, and produce silence until the
initial refill is complete. There is however no per-channel
de-click in, yet.
This fixes: play some audio track, ctrl+drag a region to the
drop-zone, creating a new track while playing.
|
|
position in a DiskReader, pay attention to loop status
If the last read was not looped, but the new one should be, we need to ignore the heuristic. Ditto for vice-versa.
This isomorphic with the read-reversed case
|
|
"shift" offset
There is still a bug related to "shift" that causes a playback discontinuity
|
|
|
|
was done last time we read from disk
|
|
This reverts commit b2bc934e218a8ed05b6f37edc5585191e60ca288.
The commit does causes issues when a user manually removes channels:
The disk-reader's ::can_support_io_configuration() at first ignores
the user's request, forcing the output channel count to match the
DR's current channel config.
However, when configuring the DiskReader after that, channels is updated
to match the new input-count.
Even though the DR itself only plays back using the confgured I/O,
all processors after it still use the old channel count.
Only a later, second re-configuration step will apply the actual removal
to plugins and port.
PS. the original commit was mainly intended to fix a crash when
adding an instrument plugin *between* disk-writer and disk-reader
on a MIDI track.
|
|
|
|
overwrite_queued == true is equivalent to _pending_overwrite != 0
|
|
rbuf allocation/use is protected by process_lock
|
|
We just don't do this anymore
|
|
Also address issues with MIDI and also atomicity of _pending_overwrite
|
|
The file_sample[AUDIO] member was not updated to reflect the last-read sample in the
switched-to buffer.
Also move several methods and members from DiskIO to DiskReader where they belong.
|
|
|
|
|
|
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() -
::get_midi_playback() has already taken care of this. But when not looping, we need this. So,
add an argument to tell all interested parties whether the locate is for a loop end or not
|
|
|
|
|
|
This may still be missing a few changes (i.e. they do not cause re-rendering)
|
|
|
|
MIDI track
|
|
boost::shared_ptr<Track> rather than Route
(this the raw pointers used inside SessionEvent)
|
|
resolving
|
|
|
|
|
|
|
|
Make _pending_overwrite atomic (butler + process thread).
This also addresses a potential seek before override race.
Seeking will fill the buffers and by the time overwrite_existing_buffers()
is called from there is no space to overwrite anymore.
|
|
|
|
This allows to specify a shorter fade-duration than default
Amp::apply_gain(), also allows to unroll and vectorize the loop
|
|
|
|
This is mainly a NO-OP, introducing a new PlaybackBuffer type
and preparing for its use.
At this point in time, the buffer is just a power-of-two sized
ringbuffer and the disk-reader's read-logic is still unchanged.
Eventually the read and write sample position that are currently
private to the disk-reader can be migrated to be owned by the buffer.
Also Diskreader::read() positions can be matched to read-position ..
+/- buffer reservation and de-click can read w/o committing the read.
|
|
|
|
|
|
This allows to use different types for write and read buffers, in
preparation for a dedicated reader-buffer.
|
|
* 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
|
|
gui_feed_buffer is used for DiskWriter -> GUI notifications.
It was wrongly migrated from MidiDiskstream to DiskReader in 7fb6807
|
|
* 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 ..
|
|
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.
|
|
This reverts commit 92c2e06eb72950f91ca943a5219e2caeaeecda9f.
|
|
|
|
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
|
|
|
|
implementation of DiskIOPoint
|
|
is needed); split into by-type array to deal with different rate of audio & MIDI i/o
|
|
|