Re: Is SFront deterministic ?

From: Eric Scheirer (eds@media.mit.edu)
Date: Thu Aug 26 1999 - 10:15:30 EDT


>of whether Life, the Universe and Everything are ;-) In other words, will
>every generated program produce _exactly_ the same output wave when
submitted
>to the same MIDI events occurring at the same frame accurate times ?

It depends on exactly which instructions in SAOL you use. It is possible
to write orchestra code that is exactly sample-by-sample deterministic,
and will generate the same output sound (bit-for-bit) each time you run
it on sfront, saolc, and any other compliant SAOL decoder. John and I
have done a great deal of cross-testing to ensure that saolc and sfront
produce identical output for these kinds of orchestras.

Some of the functions in the SAOL standard are not defined so precisely,
for example "reverb()", and "lopass()". If you want to guarantee bit-
identical output, you should not use reverb(), but instead write your
own reverbs as user-defined opcodes. Similarly, don't use lopass(),
but write your filters as networks of biquad(), which is precisely
defined. There are many other parallels, where doing things "the easy
way" is not bit-exact, but there's a more precise way that is.

If you only use the precisely-defined functions (and I can produce a
complete list with some time if you'd like, or maybe Giorgio has one
sitting around), then each output wave is exactly the same in the way
you need. And will be the same whether you're using sfront, saolc,
or any other implementation.

>If it isn't (I guess the answer depends largely on how random number
>generators are seeded), could it be made so ?

The noise generators are truly random from the point of view of the
content author. There is no way using the built-in generators to
generate the same sequence twice. If you need to do this, you should
write your own random-number generators as user-defined opcodes
using one of the standard algorithms. Then you should post it to
saol-users, because I and others would probably want to use it. :)

>I honestly think there are other good points for repeatability, such as
going
>some way towards justifying calling Structured Audio a "lossless
compression" technique.

Yes, indeed. As long as you don't use the random-number generators,
decoding is repeatable on a particular implementation. And if you
stick to the strictly-normative set of opcodes, it will be the same
from implementation to implementation as well.

Best,

 -- Eric

+-----------------+
| Eric Scheirer |A-7b5 D7b9|G-7 C7|Cb C-7b5 F7#9|Bb |B-7 E7|
|eds@media.mit.edu| < http://sound.media.mit.edu/~eds >
| 617 253 0112 |A A/G# F#-7 F#-/E|Eb-7b5 D7b5|Db|C7b5 B7b5|Bb|
+-----------------+



This archive was generated by hypermail 2b29 : Wed May 10 2000 - 12:15:28 EDT