src/wave/waveread

Types

WaveRead = ref object
  
WaveRead is a Wave object of fmRead mode. WaveRead doesn't have a writing functions.

Procs

proc `$`(self: WaveRead): string {....raises: [], tags: [], forbids: [].}
proc bitsPerSample(self: WaveRead): uint16 {....raises: [], tags: [], forbids: [].}
Returns a bitsPerSample of FormatSubChunk.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.bitsPerSample == 8'u16
wav.close()
proc blockAlign(self: WaveRead): uint16 {....raises: [], tags: [], forbids: [].}
Returns a blockAlign of FormatSubChunk.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.blockAlign == 1'u16
wav.close()
proc byteRate(self: WaveRead): uint32 {....raises: [], tags: [], forbids: [].}
Returns a byteRate of FormatSubChunk.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.byteRate == 8000'u32
wav.close()
proc close(self: WaveRead) {....raises: [IOError, OSError], tags: [WriteIOEffect],
                             forbids: [].}
proc dataSubChunkSize(self: WaveRead): uint32 {....raises: [], tags: [],
    forbids: [].}
Returns a size of DataSubChunk.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.dataSubChunkSize == 80'u16
wav.close()
proc numChannels(self: WaveRead): uint16 {....raises: [], tags: [], forbids: [].}
Returns a numChannels of FormatSubChunk. You can use Monaural or Stereo.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.numChannels == numChannelsMono
proc numFrames(self: WaveRead): uint32 {....raises: [], tags: [], forbids: [].}
Returns a count of sound frame.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.numFrames == 80
wav.close()
proc openWaveReadFile(file: string): WaveRead {....raises: [IOError, OSError,
    WaveRIFFChunkDescriptorError, WaveFormatSubChunkError,
    WaveDataSubChunkError, WaveFactSubChunkError, WaveFormatError],
    tags: [ReadIOEffect], forbids: [].}
Opens file and returns WaveRead object. Last, you must close WaveRead object.
proc pos(self: WaveRead): int {....raises: [IOError, OSError], tags: [],
                                forbids: [].}
Returns a position of data of DataSubChunk.
proc pos=(self: WaveRead; n: int) {....raises: [IOError, OSError], tags: [],
                                    forbids: [].}
Set a position to data of DataSubChunk.
proc readFrames(self: WaveRead; n = 1): seq[byte] {....raises: [IOError, OSError],
    tags: [ReadIOEffect], forbids: [].}
Read sound frames from data of DataSubChunk. A position of data moves when you use this proc.
proc rewind(self: WaveRead) {....raises: [IOError, OSError], tags: [], forbids: [].}
Set audioStartPos to data.pos of DataSubChunk.
proc riffChunkDescriptorSize(self: WaveRead): uint32 {....raises: [], tags: [],
    forbids: [].}
Returns a size of RiffChunkDescriptor. It equals WAV filesize - 8 byte.

Example:

## sample1.wav is 124 byte.
var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.riffChunkDescriptorSize == 116
wav.close()
proc sampleRate(self: WaveRead): uint32 {....raises: [], tags: [], forbids: [].}
Returns a sampleRate of FormatSubChunk.

Example:

var wav = openWaveReadFile("tests/testdata/sample1.wav")
doAssert wav.sampleRate == 8000'u32
wav.close()

Exports

WAVE_FORMAT_LH_CODEC, WAVE_FORMAT_PROSODY_1612, WAVE_FORMAT_VOXWARE_RT29HW, WAVE_FORMAT_DIGITAL_G723, WAVE_FORMAT_DOLBY_AC3_SPDIF, WAVE_FORMAT_G726_ADPCM, WAVE_FORMAT_AUDIOFILE_AF10, $, WAVE_FORMAT_VOXWARE_BYTE_ALIGNED, WAVE_FORMAT_APTX, WAVE_FORMAT_CANOPUS_ATRAC, noteSubChunkId, WAVE_FORMAT_G722_ADPCM, WaveDataIsEmptyError, WaveFormatSubChunkError, WaveDataSubChunkError, WAVE_FORMAT_MPEG, WaveRIFFChunkDescriptorError, WAVE_FORMAT_CIRRUS, WAVE_FORMAT_GSM610, WAVE_FORMAT_XEBEC, WAVE_FORMAT_IMA_ADPCM, WAVE_FORMAT_CU_CODEC, numChannelsMono, WAVE_FORMAT_RT24, WAVE_FORMAT_DIGISTD, WAVE_FORMAT_ONLIVE, WAVE_FORMAT_UNKNOWN, WAVE_FORMAT_DOLBY_AC2, dataSubChunkId, FactSubChunk, WAVE_FORMAT_LRC, WAVE_FORMAT_ALAW, WAVE_FORMAT_DVM, WAVE_FORMAT_DSAT_DISPLAY, DataSubChunk, WAVE_FORMAT_SIERRA_ADPCM, WAVE_FORMAT_PAC, smplSubChunkId, WAVE_FORMAT_RHETOREX_ADPCM, listSubChunkId, WAVE_FORMAT_G728_CELP, plstSubChunkId, WAVE_FORMAT_PACKED, WAVE_FORMAT_G723_ADPCM, WAVE_FORMAT_DSPGROUP_TRUESPEECH, $, WAVE_FORMAT_DF_G726, WAVE_FORMAT_INTERWAV_VSC112, WAVE_FORMAT_ROCKWELL_DIGITALK, WAVE_FORMAT_MULAW, WAVE_FORMAT_SOFTSOUND, WAVE_FORMAT_OLIOPR, WAVE_FORMAT_VOXWARE_TQ40, WAVE_FORMAT_MEDIAVISION_ADPCM, instSubChunkId, WAVE_FORMAT_CONTROL_RES_VQLPC, IBM_FORMAT_ALAW, IBM_FORMAT_ADPCM, WAVE_FORMAT_NORRIS, WAVE_FORMAT_ANTEX_ADPCME, WAVE_FORMAT_YAMAHA_ADPCM, WAVE_FORMAT_VOXWARE_VR12, WAVE_FORMAT_IBM_CVSD, WAVE_FORMAT_MVI_MV12, cueSubChunkId, WAVE_FORMAT_CREATIVE_FASTSPEECH10, WAVE_FORMAT_OKI_ADPCM, WAVE_FORMAT_VOXWARE_RT24, WAVE_FORMAT_QUARTERDECK, WAVE_FORMAT_DIGIREAL, WAVE_FORMAT_VSELP, WAVE_FORMAT_DIALOGIC_OKI_ADPCM, $, WAVE_FORMAT_BZV_DIGITAL, WAVE_FORMAT_G729A, WAVE_FORMAT_PCM, WAVE_FORMAT_G721_ADPCM, WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS, WaveFactSubChunkError, WAVE_FORMAT_VOXWARE_AC10, WAVE_FORMAT_ZYXEL_ADPCM, WAVE_FORMAT_AUDIOFILE_AF36, WAVE_FORMAT_VIVO_SIREN, WAVE_FORMAT_CREATIVE_FASTSPEECH8, riffChunkDescriptorId, WAVE_FORMAT_VOXWARE_VR18, WAVE_FORMAT_SONARC, WAVE_FORMAT_DSAT, formatSubChunkId, WAVE_FORMAT_IEEE_FLOAT, WAVE_FORMAT_DIGIFIX, WaveFormatError, WAVE_FORMAT_VOXWARE_AC8, newDataSubChunk, numChannelsStereo, WAVE_FORMAT_SBC24, WAVE_FORMAT_LUCENT_G723, riffChunkDescriptorType, WAVE_FORMAT_MPEGLAYER3, WAVE_FORMAT_VOXWARE_AC20, WAVE_FORMAT_VOXARE_TQ60, WAVE_FORMAT_ECHOSC3, WAVE_FORMAT_ESPCM, $, WAVE_FORMAT_CONTROL_RES_CR10, WAVE_FORMAT_MEDIASPACE_ADPCM, WAVE_FORMAT_NMS_VBXADPCM, WAVE_FORMAT_PHILIPS_LPCBB, newFormatSubChunk, WAVE_FORMAT_VOXWARE, WAVE_FORMAT_MSNAUDIO, newRIFFChunkDescriptor, WAVE_FORMAT_ROLAND_RDAC, lablSubChunkId, factSubChunkId, WAVE_FORMAT_DIGIADPCM, WAVE_FORMAT_VOXWARE_RT29, WAVE_FORMAT_MSRT24, WAVE_FORMAT_OLIGSM, IBM_FORMAT_MULAW, WAVE_FORMAT_EXTENSIBLE, WAVE_FORMAT_MS_ADPCM, WAVE_FORMAT_CREATIVE_ADPCM, ltxtSubChunkId, WAVE_FORMAT_FM_TOWNS_SND, WAVE_FORMAT_ROCKWELL_ADPCM, WAVE_FORMAT_ECHOSC1, FormatSubChunk, WAVE_FORMAT_VOXWARE_AC16, RIFFChunkDescriptor, WAVE_FORMAT_MSG723, WAVE_FORMAT_OLIADPCM, WAVE_FORMAT_OLISBC, WAVE_FORMAT_OLICELP, WAVE_FORMAT_DF_GSM610, WAVE_FORMAT_VIVO_G723, WAVE_FORMAT_VME_VMPCM