
ASound is the base class that represents a manipulatable set of audio data within ReZound.  Its
contents are PCM data in a specific format.  Any supported file format is to be implemented by
deriving from ASoundTranslator and performing the necessary logic to read/write the audio data from 
the foreign format, translate it into the native format and write into or read out of  a given 
CSound.

The CSound has a TPoolFile object which is used for the working space of all the audio and relatively
small other information.  TPoolFile maps physical space in a file to a contiguous logical address 
space and gives methods which simply modify the logical address space to give the appearance of a 
very quick remove of space or adding of space inserted into the middle of the whole space.

CSound has a getAudio method which returns a TPoolFileAccessor that allows access to the data.  It
also has methods to manipulate the size of the data which manages how to add/remove space when an 
action which changes the size of the data but the action was not applied to all channels.

The derived ASoundTranslator class should implement the methods... In short, it should just call 
createWorkingPoolFile given the numer of channels, sample rate, and length.  Then it should read the 
audio out of the foreign format and use the getAudio's returned TPoolFileAccessor to copy data into
the audio pools.  Then if there is any available other data like user notes or cue positions/names 
there are methods in the CSound class to add that information.

The native .rez ReZound file format is actually just a TPoolFile, so the loading and saving of it
requires little work.

TPoolFile is explained more in TPoolFile.cpp/h, but basically it is a container of arbitrary
data, but manages its space in chunks which allow it to add and remove space very quickly.  
Hence, delete or adding space anywhere in the sound file is not laborious, as the new space
can be added physically whereever there is available space, but logically anywhere else, and 
deleted space just becomes logically unused.  All the data lives on disk, except there is 
considerable caching which speeds up usual data access.  However, TPoolFile has a higher 
level of organization called 'pools' in which a TPoolFile is a collection of many pools where
ASound maintains PCM data of one channel in a pool named 'Channel 1' and data of another channel
in 'Channel 2' etc.  Also, format information about the PCM data is in a pool named 'Format'.  
Calculated peak data is also in pools called 'Peak Channel 1'...
Additional pools in the future may be used to contain other information without interfering with
the current implementation.




