## SDIF Future Work

### 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.

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.

### Stuff to put in the SDIF library

Data structures and operations to keep track of the set of Stream IDs already seen.

back to SDIF Main Page