SDIF Utilities We'd Love People to Write


  • viewers
  • editors
  • converters to/from other common formats
  • sanity checkers
  • Phase continuity checkers
  • Time tag statistics for each stream: uniformity of time sampling, max,
    min, average inter-frame intervals, etc.
  • Interpolators: add new frames to an SDIF file by interpolating between
    (or extrapolating from) existing frames
  • etc.

What's a phase continuity checker?

A phase continuity checking utility would check the "reasonableness"
of phase values based on the frequencies. Such a program would start with
the initial phase for each partial at the beginning of the file or when
the partial is born. It would then look for the next frame with that partial,
interpolate the partial's frequency values between the two frames, integrate
the instantaneous frequency over time, add to the initial phase, and take
modulo 2 * pi. If the resulting value is close or equal to the phase in
the second frame, the phase would be considered "reasonable";
if the computed phase differs drastically from the nominal phase, it would
be considered less reasonable.

Adding to the Spec

Here are some ideas we'd like to add to SDIF eventually, but which we've
decided to leave out of the spec until after the first version of SDIF has
been accepted.

The Time Table Frame


  • This frame is optional.
  • It is meant to provide a fast random access of the data in respect of time.
  • Since some studies have to be made for finding the optimal algorithm and
    representation we do not specify a certain structure for a first implementation
    of the SDIF format.

Breakpoint Functions

SDIF's frame-based structure easily supports representations where all
of the data for a particular sound description are sampled at the same time
points. Other representations approximate each parameter by envelopes that
connect values at arbitrary time points into continuous functions. These
arbitrarily-sampled parameter values are called breakpoints. A key feature
of breakpoints is that they do not necessarily come at the same time for
each parameter. For example, breakpoint functions representing sinusoidal
tracks might consist of one partial whose frequency goes from 100 Hz to
110 Hz over the first second, while another partial goes from 200 Hz at
time 0 to 300 Hz at time 0.1 s, then to 250 Hz at time 0.7 s, then to 232
Hz at time 1.2 s, etc.

We need to define an SDIF frame type that can represent data as breakpoint
functions. We envision one large frame containing all of the breakpoint data
for a good-sized period of time; it would be too cumbersome to make every breakpoint
be its own SDIF frame. Inside this frame, breakpoint points are specified by
relative times with respect to the time of the frame. (That way, if the frame's
time changes, all the breakpoints change together.)


The SNDAN
project, associated with James Beauchamp at the University of Illinois at
Urbana-Champaign, uses breakpoint functions; a goal of the SDIF breakpoint
function frame type would be to support data from that system.