
CSound is the 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
other relevant 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 removal 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.  
Changing the size of the audio pools is done through methods in the CSound class.

The derived ASoundTranslator class should implement the abstract 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.




