Corrigendum 1 comments

From: Robin Davies (rerdavies@hotmail.com)
Date: Sat Mar 10 2001 - 00:44:01 EST


I'm still working my way through the corrigendum, implementing the changes
in Sfx. I haven't made it through the opcode changes yet, but the grammar
and semantic changes have been implemented, for the most part, without
problems.

I have found one issue in the corrigendum that I would like to raise for
discussion.

COR 1 sec. 1.33.2 (addition of 5.14.3.2.15)
The Midi Master Channel.

A severe technical problem: The given procedure for determining the MIDI
channel can't be implement on SAOL compilers that support streaming data.
The problem is that if the MP4 file (yeah, yeah, I know) is streamed over a
network connection, the SAOL compiler can't determine whether there are MIDI
events in an SA_Access_Unit until the end of the stream is reached. However,
the compiler must decide whether to use channel zero of a static MIDI file
section as soon as the orchestra starts.

An aesthetic comment: The requirement that MIDI files be fully pre-parsed
for channel zero midi events seems overly complex, also, for only a very
small gain in functionality. Truthfully, I can't think of why you would
*want* this functionality. What should be a very simple operation becomes a
very complex one.

I'd like to propose the following replacement:

---

If one or more MIDI file sections are present in the bitstream, then SASL events shall share the same MIDI control parameter set as channel zero of the first MIDI file section.

If no MIDI file sections are present, then SASL events shall share the same MIDI control parameter set as channel zero MIDI events found in SA_Access_units.

Realtime MIDI events shall share the same extended channels as MIDI events found in SA_Access_units.

----

The advantage of this scheme is that it yeilds a very straightforward implementation (not that this particular implementation is required by the text as given).

1) SASL events are always played on extended channels 0 through fifteen.

2) To render midi files: nExtendedSection = 0; for each midi file section { queue midi file events, placing midi events placing events on channel nChannel + nExtendedSection

nExtendedSection += 16; }

3) Thereafter, all other midi events (streamed or realtime) run on channel (nExtendedSection + channel).

Note that with this implementation, all static MIDI and SASL events can be decoded and queued for execution in one decode pass on the static section of the bitstream.

_________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.



This archive was generated by hypermail 2b29 : Mon Jan 28 2002 - 12:11:07 EST