mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-18 11:28:46 +02:00
102 lines
2.9 KiB
C++
102 lines
2.9 KiB
C++
#ifndef STK_FILEWVOUT_H
|
|
#define STK_FILEWVOUT_H
|
|
|
|
#include "WvOut.h"
|
|
#include "FileWrite.h"
|
|
|
|
namespace stk {
|
|
|
|
/***************************************************/
|
|
/*! \class FileWvOut
|
|
\brief STK audio file output class.
|
|
|
|
This class inherits from WvOut. It provides a "tick-level"
|
|
interface to the FileWrite class.
|
|
|
|
FileWvOut writes samples to an audio file and supports
|
|
multi-channel data. It is important to distinguish the tick()
|
|
method that outputs a single sample to all channels in a sample
|
|
frame from the overloaded one that takes a reference to an
|
|
StkFrames object for multi-channel and/or multi-frame data.
|
|
|
|
See the FileWrite class for a description of the supported audio
|
|
file formats.
|
|
|
|
Currently, FileWvOut is non-interpolating and the output rate is
|
|
always Stk::sampleRate().
|
|
|
|
by Perry R. Cook and Gary P. Scavone, 1995-2012.
|
|
*/
|
|
/***************************************************/
|
|
|
|
class FileWvOut : public WvOut
|
|
{
|
|
public:
|
|
|
|
//! Default constructor with optional output buffer size argument.
|
|
/*!
|
|
The output buffer size defines the number of frames that are
|
|
accumulated between writes to disk.
|
|
*/
|
|
FileWvOut( unsigned int bufferFrames = 1024 );
|
|
|
|
//! Overloaded constructor used to specify a file name, type, and data format with this object.
|
|
/*!
|
|
An StkError is thrown for invalid argument values or if an error occurs when initializing the output file.
|
|
*/
|
|
FileWvOut( std::string fileName,
|
|
unsigned int nChannels = 1,
|
|
FileWrite::FILE_TYPE type = FileWrite::FILE_WAV,
|
|
Stk::StkFormat format = STK_SINT16,
|
|
unsigned int bufferFrames = 1024 );
|
|
|
|
//! Class destructor.
|
|
virtual ~FileWvOut();
|
|
|
|
//! Open a new file with the specified parameters.
|
|
/*!
|
|
If a file was previously open, it will be closed. An StkError
|
|
will be thrown if any of the specified arguments are invalid or a
|
|
file error occurs during opening.
|
|
*/
|
|
void openFile( std::string fileName,
|
|
unsigned int nChannels,
|
|
FileWrite::FILE_TYPE type,
|
|
Stk::StkFormat format );
|
|
|
|
//! Close a file if one is open.
|
|
/*!
|
|
Any data remaining in the internal buffer will be written to
|
|
the file before closing.
|
|
*/
|
|
void closeFile( void );
|
|
|
|
//! Output a single sample to all channels in a sample frame.
|
|
/*!
|
|
An StkError is thrown if an output error occurs.
|
|
*/
|
|
void tick( const StkFloat sample );
|
|
|
|
//! Output the StkFrames data.
|
|
/*!
|
|
An StkError will be thrown if an output error occurs. An
|
|
StkError will also be thrown if _STK_DEBUG_ is defined during
|
|
compilation and there is an incompatability between the number of
|
|
channels in the FileWvOut object and that in the StkFrames object.
|
|
*/
|
|
void tick( const StkFrames& frames );
|
|
|
|
protected:
|
|
|
|
void incrementFrame( void );
|
|
|
|
FileWrite file_;
|
|
unsigned int bufferFrames_;
|
|
unsigned int bufferIndex_;
|
|
unsigned int iData_;
|
|
|
|
};
|
|
|
|
} // stk namespace
|
|
|
|
#endif
|