namespace std{ inline namespace audio{ //working context for audio flow template class audio_context; /* *The context in which all audio data is centered. *Contains: sampling rate, buffer size, frame size, etc... *The values of ain,aout,afin,afout refer to the endpoints defined by the context, when applied to routing on a porocess tied to the context *think of a context as the program level driver object */ //audio streams (think like std::fstream and its friends) class astream;//audio stream class oastream;//output audio stream class iastream;//input audio stream class oafstream;//output audio file stream class iafstream;//input audio file stream //stream endpoints class ain;//audio input endpoint class aout;//audio output endpoint class afin;//audio file input endpoint class afout//audio file output endpoint //stream processing template class astream_process;//a dsp process applied to a stream template class process_group;//a group of processes that will act as one //containers template class frame_buffer;//a sequence container that is resizeable at runtime, but only with explicit resize calls. contains frames(see below) /*Implementation note on frame_buffer *frame_buffer is intended to hold N number of frames which themselves can hold M number of samples *meaning that the total size in samples if frame_buffer = N * M *ideally frame_buffers representation of its sample data will be continuous in memory */ template class frame;//a container that holds samples, thin array wrapper //hardware representation class device;//an audio device as recognized by the OS class input_device;//an input device class output_device;//an output device // audio file formats enum class afformat{ raw,//raw headerless audio bytes, interpreted only by the settings of the context. //best used for temporary storage within the life of a context wav, flac//etc... } } }