Age | Commit message (Collapse) | Author |
|
|
|
The Auditioner is not part of the session route-list and the
auditioner route's I/O latency is never updated.
Session::process_audition() does not handle pre-roll either,
so it need to be zeroed, otherwise Route::roll skips samples.
This has lead to initial samples being skipped, IFF the
auditioner's output-port had non-zero latency.
Since private port-latencies are usually only set for routes
in the route-list, and _remaining_latency_preroll is reset
at transport-stop, this *usually* worked...
Last but not least, MIDI notes need to be resolved when seeking.
|
|
|
|
DiskReader::seek() no longer fills MIDI buffers.
MIDI is now read into memory via DR:overwrite_existing_buffers()
There is still some edge-case remaining to be fixed. For
some reasons the synth does not receive initial patch/program
changes when starting auditioning.
|
|
|
|
|
|
on-the-fly.
|
|
remove_processor() also calls drop_references, when successful.
|
|
|
|
This saves some memory (gmsynth loads a 30MB soundfont), and also
re-initializes the synth every time to gm defaults in case some
.mid changes patches or parameters.
|
|
De-click will be per disk-reader, latency compensated and buffer-size
independent. Cue-monitoring should not be affected by de-click.
|
|
|
|
|
|
|
|
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.
|
|
use, and true after ::setup_automation_gain
runs successfully
|
|
* disable MMC by default
* auto-detect audition-synth at first run (prefer gmsynth if available)
|
|
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
|
|
auditioner
|
|
audition
|
|
|
|
|
|
|
|
|
|
separated disk i/o changes.
THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
|
|
|
|
The monitor section connection is implicit and done by default.
This fixes an issue with the auditioner connections being lost when
switching between sessions that use/don't use the monitor-section.
Previously:
1) load session with monitor section, save session
-> global config explicitly saved
"auditioner-output-left" -> "ardour:Monitor/audio_in 1"
2) Load a session w/o monitor-section. The config is parsed,
"ardour:Monitor/audio_in" port does not exist, connection was lost.
|
|
When a monitor-section is added, the auditioner automatically connects to
its input. However on session-reload, the connection is explicit
(by saved port-name) and Auditioner::needs_monitor() was not set.
Session::process_audition() didn't run the monitor-route. Silence.
|
|
This does not fix the ordering issues caused by things happening
before the monitor section gaining ports
|
|
|
|
|
|
|
|
remote control ID and "order keys" have been removed.
|
|
|
|
|
|
This really brings into focus the question of whether any of the "varifill" code should
really remain. This was probably one of the only remaining places where a partial-fill
operation was done and the code was broken for this case. What we know about disk i/o
streaming doesn't support varifill much at all. Something to think about.
|
|
|
|
|
|
|
|
|
|
|
|
no repetitive messages.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* "downgrade" auditioner from AudioTrack to Track.
* add relevant methods from both AudioTrack and MidiTrack.
|