In short, the Audio class has three basic attributes (SampleRate, BeginTime, and Size), and one buffer. The Size attribute is a structural attribute, therefore a change in its value implies a change in the size of the existing buffer. On the other hand, the attributes BeginTime and SampleRate are purely informative and thus, a change in their value only implies a change in the attributes but not on the buffer.

The Audio class has some additional interface for working with time tags instead of indices or sizes. The Getters/Setters for EndTime and Duration do not belong to an associated attribute but are rather different ways of changing the size of the Audio.

There is also an interface for working with audio chunks and audio slices. An audio chunk is defined as another Audio object that has a copy of a subset of the data in the original audio. An audio slice is also an Audio object that has the same values as those found in a portion of the original Audio. But in this case instead of holding a copy, the audio slice references a position in memory of the original one.