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.