PDF Viewer With OSC Control

Some more ostensibly cogent thoughts (again, specific to scripted theatre (and maybe music)):

* Whoever is Master -- the Stage Manager, usually -- needs to be able to navigate their *own* script independently from sending a Next Page command to everyone else
* Next/Prev Page probably really ought to always be (implemented as) GoToPage N, from Master to Clients
* Clients need to keep and queue GoToPage N commands, even if they're paused
* Everyone's display should probably show the global current page number, even if that's also in the PDF image, and even if they're paused (possibly also the page number they're actually paused at, separately)
* Rehearsal requires more control, and more use of the control, than performances. You get out later, too.
* To make user-lookahead easier, I would always like to run all PDFs as 2-page spreads, but with the current page *always* on the left, whether even or odd; the script would appear to slide horizontally as the pages turn. Sheet music players might prefer a 2-page turn, or only seeing a single page; that's pretty well plumbed design by now, I suspect.
* What the FAA calls RAIM -- Receiver Autonomous Integrity Monitoring -- seems useful: the Master sends a packet no less often than once a second, and each client shows some color coded indication that's green if they've seen a packet in the last 2 seconds or less, yellow to maybe 4-5 seconds, or red past that point, so you know as quickly as possible that you've fallen off, and have to change pages manually (a possible and useful fallback, since each client has the entire PDF file locally).

After that, the use cases and features of interest start to get into annotation (SM can see every department's markup with toggle buttons, each department only sees their own, users can make notes both local and global) and other things that, being mostly content-oriented, dive much more deeply into the PDF file content than this navigation stuff does.

[ And in case you're wondering, yes, I've been a systems analyst/designer for 35 years or so. :) ]
 
Allowing the master reader to jump around without sending the updated page number will need some thought about the implementation.

Yes, sending the page changes would be the absolute page number, not a "next" command. Otherwise things could get out of sync.

Adding a button to quickly switch between synced and independent mode should be easy enough. I don't know that a queue would be required though, as you'd only need to know the last page number.

I currently have the current page number in the title bar. It also shows the total number of pages (Current/Total), but I'm thinking of making that format configurable in settings.

The next release has moved to a new PDF display component and I'm still exploring what page views it can do. It may be that 2 windows of the same PDF are displayed side by side in double page mode so I can ensure that is always shows the current page on the left side.

I have already done other projects where heartbeat packets are sent so you know you're still connected. That should be simple enough to implement.
 
Allowing the master reader to jump around without sending the updated page number will need some thought about the implementation.
Well, if the master's own display is uncoupled from the Global Current Page, it would only be a question of making sure the SM knew which thing they were Next'ing, reliably, right?

Adding a button to quickly switch between synced and independent mode should be easy enough. I don't know that a queue would be required though, as you'd only need to know the last page number.
Yeah; "queue" is probably not the best way I could have phrased that. :-}

I currently have the current page number in the title bar. It also shows the total number of pages (Current/Total), but I'm thinking of making that format configurable in settings.
As the guy who writes the page numbers 3/4" tall in the corner of the page in Sharpie, let me gently suggest that the type size in the window title bar is probably not big enough -- at least not for my confidence indicator. On that note, if a user has their display paused, the indicator for that should be REALLY NOTICEABLE -- like, make the entire page background light pink or something. :)

The next release has moved to a new PDF display component and I'm still exploring what page views it can do. It may be that 2 windows of the same PDF are displayed side by side in double page mode so I can ensure that is always shows the current page on the left side.
Yeah, I know that some display components might be uncooperative about non-traditional spread displays...

I have already done other projects where heartbeat packets are sent so you know you're still connected. That should be simple enough to implement.
Cool.

BTW: are these components Win32 only? Is the framing in something portable so they could run on other platforms? My house is mostly Mac, and tablets are also pretty common nowadays...
 
I guess the master can simply suspend sending page changes (but continue to send a heartbeat). They would have to return back to the current page number before resuming sending page changes. Maybe when they suspend the current page number is stored and used to jump back to (for the master) before resuming?

At present Windows is the only target. I do have the tools to do multi platform development, but that will have to wait. I can see tablets being a handy platform. For me, Windows is easy, Android would be next, but iOS is a lot messier and costly, certainly distribution wise.
 
I guess the master can simply suspend sending page changes (but continue to send a heartbeat). They would have to return back to the current page number before resuming sending page changes. Maybe when they suspend the current page number is stored and used to jump back to (for the master) before resuming?
Yeah, that's about what I was aiming at: the SM can pause and nav *their own* reader, while the Global Page Number stays fixed (and broadcast), and when they unpause, their own reader jumps back just like a client... unless they hit the "Jump To Here" button.


At present Windows is the only target. I do have the tools to do multi platform development, but that will have to wait. I can see tablets being a handy platform. For me, Windows is easy, Android would be next, but iOS is a lot messier and costly, certainly distribution wise.
Gotcha. I'm an android guy, but with both MixPad SQ and Mixing Station on Windows, I have more motivation to find a used Surface for that work, so... :)
 
Last edited:
I had an "exciting" performance not too long ago that involved skipping about a third of the script in 2-3 big jumps--then suddenly throwing in one scene from the skipped section just before the end of the show. There was a lot of mad page turning that would have been absolute chaos if everyone was synced.
I know what you mean, and I *think* I just addressed that in a followup comment: the SM can go into "Local Nav" mode as well, to find where everyone is, and *their* 'scaffold' can extract whatever page number they land on, and push it to the Global Current Page, whence everyone will follow (maybe with some visual alert of a Big Jump).

I'm thinking either a "Pause Syncing" button or a "Sync Now" button would help cover those sorts of edge cases. I'd probably lean towards running it in an individual mode by default with occasional use of the "Sync Now" button, but I could see plenty of people preferring the opposite default. Giving all the individual users a "Sync to SM" button could be useful too...
Well, if you're going to run it individually, then you don't need Dave's Fancy OSC Scaffold. :)

But yeah, I'd also suggested a local Pause button, that lets you nav locally, and then resyncs when you unpause. I don't *think* you want to uncouple those, but maybe I'm wrong.
 
I have the 2 page mode working with a side by side layout. Would there be any need for a 2 page mode where the pages are one above the other?
 

Users who are viewing this thread

Back