[vorbis-dev] Ogg MIDI proposal

Kenneth Arnold
Sat, 25 Aug 2001 15:01:43 -0000

On Sat, Aug 25, 2001 at 06:34:30PM -0600, Jack Moffitt
wrote:
> This is a proposal for Ogg MIDI streams.  It will also help other
> stream additions to Vorbis, as they should follow a similar model.
> Ralph has done much of the work on this, and also is working on MNG
> Ogg streams.

[...]

> There are three foramts of standard MIDI files, Format 0, 1, and 2.
> Format 2 is not a song, but multiple idependent patterns, so is
> irrelevant to this discussion.  Format 0 files are one track, and
> Foramt 1 files are multiple tracks (note that these are logical
> divisions for sequencers, and all the data of a format 1 file could be
>  represented in one track).  Since tracks are stored serially, which
> breaks streaming, Ogg MIDI will use only format 0 MIDI files, which means
> any Format 1 files will have to be collapsed into Format 0.

How about allowing multiple Format 0 streams (thus representing Format
1 and even (partially?) Format 2) in an Ogg stream, so long as the
pages are small enough and spaced properly so everything is
simultaneous (if the application requires it)?

> Changes to Vorbis
> -----------------
> libvorbisfile will need to be modified to recognize substreams and ignore
> all but the first valid Vorbis stream.

I think it's about time to get the full Ogg stream interleave format
together. I have not seen the MNG work (Ralph, could you commit it to
CVS?), but I suspect this has already addressed some of the issues
I'll propose for getting this together:

* generic Ogg codec interface
  - whether codec is video or audio or MIDI or metadata or what
  - functions that player program must call to submit pages and read
    out data in the appropriate format
  - how to seek with that codec, or in general how to tell what time
    position corresponds to which page
* interleave library
  - to replace / extend libvorbisfile -- a liboggfile or something
    like that, to handle encoding, decoding, cutting, splicing,
    tagging, seeking, etc. in an Ogg stream of multiple codecs
  - this would include all logic to play back and seek like
    vorbisfile, and encode like vorbisenc, and manipulating like vcut,
    vorbiscomment, ogginfo, or possibly leave these as separate
    utilities
* table of contents header
  - to provide information about what codecs are used in the stream,
    for player selection or desktop environments -- more of a
    future-proofing than actually needed now
* metadata
  - this has been discussed in some detail in the past; I'll only
    mention that it's about time to get this standardized.

One final concern: will hardware players using libvorbis 1.0 or even
rc1 be able to play back these future Ogg streams, or at least
intelligently skip past what they don't know about and just play the
audio?

I have done only preliminary work on the generic Ogg codec interface;
it'll need a lot more thought and work before it becomes
usable. Anyone else doing any of the other things already?

comments? suggestions?


--
Kenneth Arnold <ken@arnoldnet.net> / kcarnold / Linux user #180115
http://arnoldnet.net/~kcarnold/





application/pgp-signature attachment: stored

-------------- next part --------------
A non-text attachment was scrubbed...
Name: part
Type: application/octet-stream
Size: 233 bytes
Desc: not available