Writes samples to an audio file stream.
More...
#include <juce_AudioFormatWriter.h>
|
virtual | ~AudioFormatWriter () |
| Destructor. More...
|
|
virtual bool | flush () |
| Some formats may support a flush operation that makes sure the file is in a valid state before carrying on. More...
|
|
int | getBitsPerSample () const noexcept |
| Returns the bit-depth of the data being written. More...
|
|
const String & | getFormatName () const noexcept |
| Returns a description of what type of format this is. More...
|
|
int | getNumChannels () const noexcept |
| Returns the number of channels being written. More...
|
|
double | getSampleRate () const noexcept |
| Returns the sample rate being used. More...
|
|
bool | isFloatingPoint () const noexcept |
| Returns true if it's a floating-point format, false if it's fixed-point. More...
|
|
virtual bool | write (const int **samplesToWrite, int numSamples)=0 |
| Writes a set of samples to the audio stream. More...
|
|
bool | writeFromAudioReader (AudioFormatReader &reader, int64 startSample, int64 numSamplesToRead) |
| Reads a section of samples from an AudioFormatReader, and writes these to the output. More...
|
|
bool | writeFromAudioSampleBuffer (const AudioBuffer< float > &source, int startSample, int numSamples) |
| Writes some samples from an AudioBuffer. More...
|
|
bool | writeFromAudioSource (AudioSource &source, int numSamplesToRead, int samplesPerBlock=2048) |
| Reads some samples from an AudioSource, and writes these to the output. More...
|
|
bool | writeFromFloatArrays (const float *const *channels, int numChannels, int numSamples) |
| Writes some samples from a set of float data channels. More...
|
|
Writes samples to an audio file stream.
A subclass that writes a specific type of audio format will be created by an AudioFormat object.
After creating one of these with the AudioFormat::createWriterFor() method you can call its write() method to store the samples, and then delete it.
- See also
- AudioFormat, AudioFormatReader
{Audio}
◆ AudioFormatWriter() [1/2]
juce::AudioFormatWriter::AudioFormatWriter |
( |
OutputStream * |
destStream, |
|
|
const String & |
formatName, |
|
|
double |
sampleRate, |
|
|
unsigned int |
numberOfChannels, |
|
|
unsigned int |
bitsPerSample |
|
) |
| |
|
protected |
Creates an AudioFormatWriter object.
- Parameters
-
destStream | the stream to write to - this will be deleted by this object when it is no longer needed |
formatName | the description that will be returned by the getFormatName() method |
sampleRate | the sample rate to use - the base class just stores this value, it doesn't do anything with it |
numberOfChannels | the number of channels to write - the base class just stores this value, it doesn't do anything with it |
bitsPerSample | the bit depth of the stream - the base class just stores this value, it doesn't do anything with it |
◆ AudioFormatWriter() [2/2]
juce::AudioFormatWriter::AudioFormatWriter |
( |
OutputStream * |
destStream, |
|
|
const String & |
formatName, |
|
|
double |
sampleRate, |
|
|
const AudioChannelSet & |
audioChannelLayout, |
|
|
unsigned int |
bitsPerSample |
|
) |
| |
|
protected |
Creates an AudioFormatWriter object.
- Parameters
-
destStream | the stream to write to - this will be deleted by this object when it is no longer needed |
formatName | the description that will be returned by the getFormatName() method |
sampleRate | the sample rate to use - the base class just stores this value, it doesn't do anything with it |
audioChannelLayout | the channel layout to use for the writer - the base class just stores this value, it doesn't do anything with it |
bitsPerSample | the bit depth of the stream - the base class just stores this value, it doesn't do anything with it |
◆ ~AudioFormatWriter()
virtual juce::AudioFormatWriter::~AudioFormatWriter |
( |
| ) |
|
|
virtual |
◆ flush()
virtual bool juce::AudioFormatWriter::flush |
( |
| ) |
|
|
virtual |
Some formats may support a flush operation that makes sure the file is in a valid state before carrying on.
If supported, this means that by calling flush periodically when writing data to a large file, then it should still be left in a readable state if your program crashes. It goes without saying that this method must be called from the same thread that's calling write()! If the format supports flushing and the operation succeeds, this returns true.
◆ getBitsPerSample()
int juce::AudioFormatWriter::getBitsPerSample |
( |
| ) |
const |
|
inlinenoexcept |
Returns the bit-depth of the data being written.
◆ getFormatName()
const String& juce::AudioFormatWriter::getFormatName |
( |
| ) |
const |
|
inlinenoexcept |
Returns a description of what type of format this is.
E.g. "AIFF file"
◆ getNumChannels()
int juce::AudioFormatWriter::getNumChannels |
( |
| ) |
const |
|
inlinenoexcept |
Returns the number of channels being written.
◆ getSampleRate()
double juce::AudioFormatWriter::getSampleRate |
( |
| ) |
const |
|
inlinenoexcept |
Returns the sample rate being used.
◆ isFloatingPoint()
bool juce::AudioFormatWriter::isFloatingPoint |
( |
| ) |
const |
|
inlinenoexcept |
Returns true if it's a floating-point format, false if it's fixed-point.
◆ write()
virtual bool juce::AudioFormatWriter::write |
( |
const int ** |
samplesToWrite, |
|
|
int |
numSamples |
|
) |
| |
|
pure virtual |
Writes a set of samples to the audio stream.
Note that if you're trying to write the contents of an AudioBuffer, you can use writeFromAudioSampleBuffer().
- Parameters
-
samplesToWrite | an array of arrays containing the sample data for each channel to write. This is a zero-terminated array of arrays, and can contain a different number of channels than the actual stream uses, and the writer should do its best to cope with this. If the format is fixed-point, each channel will be formatted as an array of signed integers using the full 32-bit range -0x80000000 to 0x7fffffff, regardless of the source's bit-depth. If it is a floating-point format, you should treat the arrays as arrays of floats, and just cast it to an (int**) to pass it into the method. |
numSamples | the number of samples to write |
◆ writeFromAudioReader()
Reads a section of samples from an AudioFormatReader, and writes these to the output.
This will take care of any floating-point conversion that's required to convert between the two formats. It won't deal with sample-rate conversion, though.
If numSamplesToRead < 0, it will write the entire length of the reader.
- Returns
- false if it can't read or write properly during the operation
◆ writeFromAudioSampleBuffer()
◆ writeFromAudioSource()
bool juce::AudioFormatWriter::writeFromAudioSource |
( |
AudioSource & |
source, |
|
|
int |
numSamplesToRead, |
|
|
int |
samplesPerBlock = 2048 |
|
) |
| |
Reads some samples from an AudioSource, and writes these to the output.
The source must already have been initialised with the AudioSource::prepareToPlay() method
- Parameters
-
source | the source to read from |
numSamplesToRead | total number of samples to read and write |
samplesPerBlock | the maximum number of samples to fetch from the source |
- Returns
- false if it can't read or write properly during the operation
◆ writeFromFloatArrays()
bool juce::AudioFormatWriter::writeFromFloatArrays |
( |
const float *const * |
channels, |
|
|
int |
numChannels, |
|
|
int |
numSamples |
|
) |
| |
Writes some samples from a set of float data channels.
◆ ThreadedWriter
◆ bitsPerSample
unsigned int juce::AudioFormatWriter::bitsPerSample |
|
protected |
The bit depth of the file.
◆ channelLayout
The audio channel layout that the writer should use.
◆ formatName
String juce::AudioFormatWriter::formatName |
|
private |
◆ numChannels
unsigned int juce::AudioFormatWriter::numChannels |
|
protected |
The number of channels being written to the stream.
◆ output
The output stream for use by subclasses.
◆ sampleRate
double juce::AudioFormatWriter::sampleRate |
|
protected |
The sample rate of the stream.
◆ usesFloatingPointData
bool juce::AudioFormatWriter::usesFloatingPointData |
|
protected |
True if it's a floating-point format, false if it's fixed-point.
The documentation for this class was generated from the following file: