|
WaveIOX is
a Delphi unit for easy handling of WAV files, especially
in the 32-bit floating point VST environment! It
reads and
writes WAV files of almost any format and is also able
to convert them into 32-bit floating point buffers.
The basic structure is from the WaveIO unit
by Carlos Barbosa and
was used with permission. You can
get the original I/O routines from his site http://www.carlosb.com.
I extended his
unit to WaveIOX (extended wave input/output),
adding several useful high- and low-level interface
routines for reading, writing and converting wave files.
What formats
does the loader support? I looked through many different
documents about the RIFF/WAV structure and I hope I
have implemented the most important ones: -
samplerate: all (even ultralow like 4096 or superhigh
like 96 kHz) - bits: 8, 16, 20, 24, 32 bit supported,
integer and float - 32-bit float native VST format
supported - mono or stereo, but can be adapted to
read multichannel interleaved - correct skipping
over additional or wrong RIFF info blocks
1. low-level
routines: TWaveStream, TMemoryWaveStream, TFileWaveStream:
these are streams to load, manipulate and
save wave files directly
TPCMWAVReader:
this is an interface to Microsoft's PCM/ACM reader/converter
installed with Windows
2. high-level
routines: TWavWriter: a class that allows you
to create a wav file and sequentially write data
into
it
LoadWAVFile:
loads a WAV file from disk, converts it to floating
point data and returns a pointer to the data in
memory
LoadWAVFileMono:
same as above, but converts stereo files to mono first
SaveWAVFile:
saves a floating point data block in memory as WAV
SaveWAVFileSeparateStereo:
saves two floating point data blocks in memory as WAV
to disk, merging them on the fly (this is useful
for converting stereo blocks to a mono stream)
GetWAVFileInfo:
retrieves format info from a WAV file on disk
|