yahew.com MIDI & site music

MIDI & site music

A twenty track arrangement in 7.6 kilobytes. Not a recording of a song, a set of instructions for playing one, and your machine supplied the orchestra.

Sheep May Safely Graze J. S. Bach, BWV 208, c. 1713 10,217 bytes
0:00

    Reading the file...

    Everything above was drawn from the file itself, parsed in your browser. Nothing here is a recording. The notes are instructions and the sound is being generated from oscillators as you listen, which is roughly what a 1996 sound card was doing, badly.


    The page could not start that on its own, and that is the ending

    In 1997 the music began before you had done anything. Here is the incantation, copied off a real GeoCities page:

    <EMBED SRC="Pardon_Me.mid" LOOP=TRUE AUTOSTART=TRUE HIDDEN=TRUE>
    <NOEMBED><BGSOUND SRC="Pardon_Me.mid" LOOP=INFINITE></NOEMBED>
    </EMBED>

    Two vendors, two tags, two loop keywords, one song. <EMBED> is Netscape's plugin tag driving LiveAudio. <BGSOUND> is Microsoft's, IE only, doing the identical job with a different vocabulary: LOOP=INFINITE rather than LOOP=TRUE. <NOEMBED> holds what a browser shows when it ignores <EMBED>, so IE fell through to the tag inside. The author shipped both and let the browser decide. Nobody designed this. It accreted.

    Try it. The button below does exactly what AUTOSTART=TRUE did, and then reports what your browser actually did about it.

    That is not this page being polite. It is not allowed. The Web Audio specification says an audio context will always begin in the suspended state and may only start once the page has what the spec calls sticky activation, meaning you did something first. Chrome has gated it since version 71. This plate is forced to render a play button, and that forcing is the end of the story it is telling.


    Hide it, or put an operating system in the middle of a sentence

    Authors had two options and no third. HIDDEN=TRUE above is the first. This is the second, from another GeoCities page, verbatim:

    <FONT SIZE=6 FACE="BAUM">Come into <embed src="bard.mid" width=140 height=40 autostart="true" ALIGN="TOP"> Talon's Nest</FONT>

    width=140 height=40 is the LiveAudio control panel, and the tag sits between two words. It rendered roughly like this, in the middle of the running text:

    Come into ❙❙ Talon's Nest

    A chunk of operating system chrome, sitting in a sentence as though it were a word. Given those two choices, hiding won, and that is why a generation of people remember the web as a place that suddenly started playing music at them.


    What a song weighed

    FileWhere fromBytesTracks
    bard.mid GeoCities, Area51/1210 7,673 20
    Sheep.midplayable Mutopia, Bach BWV 208 10,217 6
    kw_syn01.mid windows95.com theme 34,384 18
    Pardon_Me.mid GeoCities, TimesSquare/1090 69,128 9

    Twenty tracks in 7,673 bytes. The median of these four is around 22 KB, and one of them is 69 KB, so a whole song in 30 KB is fair and a whole song in 8 KB is also true, but always under 30 KB is not. A single JPEG on the same page usually outweighed the music.


    Why this plate plays Bach and Joplin and not the ones it is about

    A MIDI file carries two independent copyright layers: the composition, and the sequence itself, which is a fixation of a series of sounds and can be protected on its own.

    So Bach dying in 1750 does not make a 1997 hobbyist's Bach MIDI free. The distinction is whether a person made creative choices: the instruments, their relative volumes, the pitches, the timing. A file mechanically generated from a score has thin claim to originality. A hand-sequenced performance is a derivative work with its own author, and that author is usually anonymous and unreachable.

    This is not theoretical. One of the most prolific Bach sequencers of the 1990s documented someone taking his files, adjusting the tempi, presenting them as their own, registering copyright in the United States, and then threatening sites that would not carry them. The song was public domain and the recording of it was not, which is the argument streaming has been having ever since.

    Every one of the six pieces at the top of this page is from the Mutopia Project, generated from typeset source with LilyPond rather than performed by a person, and marked Public Domain on its own catalog record: composition, edition and sequence. That is the entire reason the playlist is a Bach aria and five Joplin rags. Ragtime is not what was playing on GeoCities, and this plate is not going to pretend otherwise for atmosphere. These are simply the pieces that can honestly sit on a public page.

    The four files in the table above are the ones this plate is actually about, and not one of them can be played here, by this site or by anybody else, without tracing an anonymous sequencer from 1997 and the rightsholder of whatever they were arranging. They stay in the reference folder. That gap, between what the playlist can offer and what the subject actually was, is the clearest thing on this page.


    Field marks

    How to spot site music.

    <EMBED ...>
      <NOEMBED>...</NOEMBED>
    </EMBED>

    A closing </EMBED> tag

    <EMBED> was never a container, but wrapping the fallback inside it is what made the fallthrough work. Its presence means somebody was targeting both browsers deliberately.

    LOOP=TRUEvsLOOP=INFINITE

    LOOP=TRUE next to LOOP=INFINITE

    The same instruction in two vendors' vocabularies, in the same document, because there was no agreed word for forever.

    ❙❙

    HIDDEN=TRUE, or a 140 by 40 gap in the text

    Those were the choices. A small gray rectangle interrupting a sentence is a control panel, not a design decision.

    <BGSOUND SRC="theme.mid" LOOP=INFINITE>

    The music starts at the splash page

    Site music and the threshold page were one gesture, not two. The same file usually carried both.

    midifarm.com

    A link to a MIDI archive in the footer

    midifarm and its relatives were the supply chain, and crediting them was normal.

    bard.mid  7,673 bytes  20 tracks

    A file under 30 KB doing the work of a whole arrangement

    If the audio is smaller than the images, it is a sequence, not a recording.

    What it solved, and what took it

    Music on a page in 1996 was arithmetic. A minute of audio was megabytes and nobody had the bandwidth, so instead of shipping sound you shipped instructions and let the listener's hardware perform them. Ten kilobytes bought a whole aria, because the file describes what to play rather than what it sounded like. It is the same idea as a font file, and for the same reason.

    What took it was bandwidth arriving, which made real audio possible, and taste arriving, which made unrequested audio unacceptable. Browsers eventually agreed with the taste and made autoplay impossible. What went with it is the part worth noticing: your machine used to be an instrument that a page could ask to perform, and now it is a speaker that a server streams at.

    A whole song, over a modem, in less space than one photograph.

    Back to the directory.

    Sources, and what is deliberately absent

    Prev <marquee> & <blink> Next The splash page