Δ playdocs· doc instrument

ready — this page is loaded as its own document.

    the deck — source, transport, level, meters, time, scope, voice, lamps; closed, the page is the text and the reader
    SOURCE this page LANE self BLOCKS 0 WORDS 0

    playdocs

    Read this as a description of the instrument you are inside. playdocs is a document player. Give it a URL, or nothing, and it takes the page apart into blocks, has them spoken once by a voice from the DeltaVerse cast, keeps the resulting audio as a file, and plays that file every time after. While it plays, the block being spoken is lit in the text, the word inside it is marked, and everything drawn around the text is a measurement of the sound you are hearing. The block is measured, from the exact second it starts in the file. The word is estimated from its place in the block, so it is close rather than exact, and this text says so.

    The field and the two buttons

    At the top is one field and two buttons. Fetch reads the URL in the field, first with your own browser and only if the browser is refused through this host. Leave the field empty and Fetch reads this page. Play plays what has been rendered, and if nothing has been rendered yet it renders first and then plays. Under the field a short feed says what the page is doing: each lane a fetch tries and what it read, and each render as a single line that updates in place, with the block being synthesised, the seconds of audio made in the seconds of work, the realtime factor measured on this very render, and the estimate of what is left. To the right of that line are three quick voices, Neural, Jaimla and Leader, one press each, a green dot on any that already has a file for this document and a slow shimmer across it, and under them a Settings button.

    The deck

    Under the feed is a bar that says DreamKnob. It is closed when the page loads, so the page is the text and the reader. Press it and the deck opens as a large panel over the page, most of the height, that you drag by its grip and resize by its corner; double click the grip and it fills the screen, double click again and it returns. It is an analog control surface with a section for the source, a transport with play on the left and pause on the right and stop between them, a fader for the position in the take, a level knob and meters, clocks, the scope zoom, the voice, and a row of lamps that name the state of the measurement. Every knob on the deck drives the same value as a plain control somewhere else on the page, so nothing depends on the deck loading. In the source section, to the right of Render, is Settings. That opens the rack settings, a large panel you can drag by its header and resize by its corner, whose menus tile into as many columns as its width allows. Double click its header and it fills the screen; double click again and it returns. Inside are the document controls, the voice cast, audio, scope, record and about. It is closed until you ask.

    The voices

    Two voices are saved and are not edited: Neural, the reference, a British male voice, and Jaimla, the British female voice. Every other voice in the cast is measured against one of them. Under each voice in the settings the cast says what has been done for it on this document: active while it renders, with a bar of blocks done over blocks total and the arithmetic beside it, rendered once a file exists, or nothing if nothing has happened. Change the voice while a document is playing and, if that voice is already held, the switch is seamless: the other file is loaded and placed on the same word before the old one stops. If it is not held yet, it renders, keeps the old voice reading until the new file is ready, and continues on the same block.

    The library

    Every document you render is kept in this browser as a record of where its audio lives, keyed on the exact text and the voice. Come back to the same document and it plays from the file without rendering again, and each voice you have rendered a document in is kept separately, so switching back to a voice you have already heard costs no render. The host keeps the same recordings in its own store, so a second browser gets the file too. Change a word of the document and the key changes with it, so a recording of other words is never served for these. The library is listed in the document settings, and a recording the host has since pruned is dropped from it the moment it fails to play.

    What is around you

    The border is a substrate: nine stations, eight on the ring, each lit by one band of the spectrum of the voice that is playing, the bands log spaced from eighty hertz to eight kilohertz because a voice does not live in the top half of a linear split. The ground behind this text is the same voice drawn three ways at once: the waveform, the spectrum, and the inflection, which is the rate of change of pitch and the thing you hear as delivery. It is always in exactly one of four declared states and never hides which. Live means an analyser is attached and carrying signal, and every pixel is measured. Resting means the analyser is there and the audio is silent, so it draws a flat line. Untapped means there is no analyser to read at all, and it draws a slow synthetic wave shaped to look nothing like a voice. Unknown means reading the analyser failed this frame, and the absence of a measurement is deliberately not the same word as silence.

    Untapped is the state this page loads in. The audio graph is built on your first play, record or render, because a graph built without a gesture reads zeroes forever. Until you press something there is nothing to measure, and what moves behind this paragraph is arithmetic rather than anyone speaking.

    The bottom of the page

    At the bottom is a second deck with two boxes: an oscilloscope with an honest state badge, and the waveform, drawn as a minimum to maximum envelope with the loudness band over it, down to the individual sample when you zoom far enough. Either box can be detached into a floating panel that you drag by its header and resize by its corner, and docked back with the same button. Double click the header of a floating panel and it fills the screen; double click again and it returns to where it was, and it drags and resizes the whole time. Drag on the waveform to select, and the selection can be looped, zoomed to, or measured.

    What leaves this machine

    To this host: the text you asked to have spoken, and the requests that read the audio back. The recorder is entirely local, and a take never leaves the browser. To anyone else: nothing, until you point the field at a page on another host, and then your own browser fetches that page directly and this host never learns what you read. What comes back is parsed inert and reduced to text, so nothing on the far page can run here.

    The keyboard

    Space plays and pauses. J and L skip five seconds. The square brackets zoom. F fits the whole take to the width. Escape closes the settings. Keys are ignored while the URL field has focus, because the space bar belongs to it there.

    Oscilloscope untapped · generated
    Waveform no take