Types
WaveRead = ref object
- WaveRead is a Wave object of fmRead mode. WaveRead doesn't have a writing functions.
Procs
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 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 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