On August 12, 2014 12:26:04 PM Fons Adriaensen wrote:
On Mon, Aug 11, 2014 at 08:01:40PM -0400, Tim E. Real
wrote:
Mm, do you know about the 'slow-sync'
Jack callback function?
Of course I do. Do you really think I'd comment on anything without
knowing it inside out ?
Apologies, wasn't sure :-)
That very 'feature' is the problem.
Or do you
propose something slightly different?
As in, able to report readiness anytime all the time even in stop mode?
Yes. Together with the requirement that any app using the transport API
should be ready to start running (playback and/or recording previously
armed tracks) instantly a reasonable time (at most a few seconds) after it
has been repositioned or reconfigured. Or at least have a state - PAUSE -
in which this is the case [1].
Interesting... a pause state.
In fact any app used for audio recording or playback in a production
context should have that property even when used separately, without
Jack transport. All professional audio or video equipment I've ever
used could do that, even in the tape days [2]. It's a rather basic
requirement, and not at all difficult to implement.
In other words, the not-ready state should be transient, it will
revert to ready ASAP, and it serves mainly as a warning to the user.
As soon as everybody reports ready, you know you can start instantly,
which is very reassuring in a live context.
OK I think I understand now:
With the current system, the user 'presses play button', but the button
then flashes informing the user it will be a few moments before we're
actually running, then it stops flashing and system runs.
With your proposal, the 'play' button flashes informing the user the
system is busy - BUT - at least when it stops flashing, he is /guaranteed/
that the system will start immediately.
I would add: If play is flashing he shouldn't have to press it again when it
stops flashing, so let the system remember that he did in fact press play.
The
'slow-sync' Jack callback function is a great feature for
holding up the transport until all the apps report they are
'ready to roll'.
To be able to start 'on cue' they must be ready when the start
command arrives and NOT delay it. Starting on cue is a very
common thing in broadcasting, theatre sound, live shows, audio
drama production,... to name just the few cases I've encountered
in my work.
Agreed.
But... not
ready for what? The app cannot know what the
next transport intention is until the actual command
comes down the line.
Ready to do what would be required 'on cue', i.e. playback.
Recording on pre-armed tracks is no more difficult, so I'd
include that as well. All the rest (repositioning, preparing
to record) can take any time you want, nobody expects that
to be 'instant'.
I don't think that a global RECORD command or state should
be part of a shared transport control, it's local thing for
each of the controlled items. Those that have RECORD enabled
will record when started.
Yeah. Traditionally play is a mechanical state (as in "forward ho!") and
record is not really a mechanical state but just a switch commanded
to turn on the record circuit and head etc.
That's why I tried to eek out some definitions yesterday but had trouble.
Still, to satisfy the OP request, there could be a global record ENABLE,
while still granting that record ARM is strictly a local thing.
To rephrase your last sentence could be:
Those that have local RECORD ARM enabled will record when started,
provided global record ENABLE is on.
Punch in/out can be controlled
locally, and today it will be preprogrammed anyway. [3]
Not sure about global punch in/out. Maybe.
But as with the record functions, each app would have to have a way of
letting the user elect to participate in the global override(s) or not.
But, if the mechanism by which record functions could be added
could easily include other commands such as punch in/out, why not eh?
Caio,
[Speaking my language here - Pro repair tech, 30+ years]:
[1] Video tape recorders used to have a separate PAUSE
state
since leaving the tape static against the rotating drum for
too long would damage it. Audio tape recorders usually did
not have a separate PAUSE state, they could start instantly
from STOP.
[2] I know of one professional tape recorder that would spin down
the capstan when idle for more than a few minutes. But even that
one would warn you a few seconds before doing that, and hitting
STOP would override the spindown and keep the transport ready to
start instantly.
How would these decks be told by software to come out of deep-pause mode?
To use my understanding of your proposal, paragraph above, the user's
(software) play button would flash indefinitely (meaning not ready)
until he presses it, and it'll be a moment until the VCR can be ready
to play again.
From the software POV, the play command would have to
be sent and
then we wait for a signal from the deck that it's ready.
Which is what the slow-sync callback does.
Seems both it and your proposal would be good to have?
Ah... But you will say: A system where one of the decks is in deep-pause
mode is not ready at all - it needs to be (manually) taken out or kept out
of that mode when anticipating that recording will take place soon,
to satisfy the instant run requirement. Right?
[3] In the 24-track tape days punch in/out could be done either
by pre-arming the required tracks and then using the global RECORD
at the right time(s), or by starting with RECORD enabled and then
using the per-track controls to punch in and out. The latter would
be difficult in a software DAW, unless the tracks are prepared in
some way previously (which happens implicitly when using the first
method). But it's not really required, the first method works OK,
even more so if things can be pre-programmed as in Ardour.
MusE has pre-programmed punch in/out.
Can't recall if can be activated remotely.
Pleasure rappin' with ya.
Tim.