|
AudioDataLib
A C++ library of classes supporting a variety of audio-data tasks.
|
This class knows how to read (and one day write) sound-font files. More...
#include <SoundFontFormat.h>
Public Member Functions | |
| SoundFontFormat () | |
| virtual | ~SoundFontFormat () |
| virtual bool | ReadFromStream (ByteStream &inputStream, FileData *&fileData, Error &error) override |
| virtual bool | WriteToStream (ByteStream &outputStream, const FileData *fileData, Error &error) override |
Public Member Functions inherited from AudioDataLib::FileFormat | |
| FileFormat () | |
| virtual | ~FileFormat () |
Additional Inherited Members | |
Static Public Member Functions inherited from AudioDataLib::FileFormat | |
| static std::shared_ptr< FileFormat > | CreateForFile (const std::string &filePath) |
This class knows how to read (and one day write) sound-font files.
Not all sound-font file features are supported here, but enough are to be useful in the goal of sound synthesis. The SF2 file specification is quite extensive and lays out its own synthesis model. I chose not to follow this model and instead, just extract just enough of the relevant information needed to perform my own method of synthesis. This means getting at the sample data, knowing how it's looped, knowing what the key and velocity ranges are, etc. For now, I assume only one instrament per sound-font file, which I know is not generally correct. I plan to revise this class once I get my hands on a sound-font file that contains multiple instruments.
| SoundFontFormat::SoundFontFormat | ( | ) |
|
virtual |
|
overridevirtual |
The given file data pointer is assigned an instance of some derivative of the FileData class which is, in turn, populated with the data found in the given stream.
| [in,out] | inputStream | This must be a ByteStream derivative that can handle read operations. |
| [out] | fileData | On success, this pointer is assigned a heap allocation the user is reponsible for freeing. |
| [out] | error | This will contain error information if false is returned. |
Implements AudioDataLib::FileFormat.
|
overridevirtual |
The given file data is written to the given stream.
| [out] | outputStream | This must be a ByteStream derivative that can accept write operations. |
| [in] | fileData | This is the file data to be written to the stream. |
| [out] | error | This will contain error information if false is returned. |
Implements AudioDataLib::FileFormat.