Module libif:audiolib }}} - RMoX audio library

RMoX audio library. This file (libif/audiolib.occ) contains various procedures that can be used by kernel and application code inside RMoX for simple audio functions. This includes reading .wav files and suchlike.

For dynamically loaded code: #INCLUDE "audiolib.inc" #INCLUDE "audiolib_if.inc"

For statically linked code: #INCLUDE "audiolib.inc" #USE "libif/audiolib"

Index

Declarations

audiolib.occ:84Process audio.riff.headers

PROC audio.riff.headers (CT.FILE! file, CHAN P.RIFF.CHUNK.OUT out!)

Read RIFF chunk descriptors from a file. This outputs 'chunk' descriptors followed by an 'end' marker when the end-of-file is reached.

Parameters:

CT.FILE! file Handle on RIFF file.
CHAN P.RIFF.CHUNK.OUT out Output channel.

audiolib.occ:166Process audio.riff.read.chunks

PROC audio.riff.read.chunks (CT.FILE! file, VAL [4]BYTE chkid, RESULT MOBILE []RIFF.CHUNK.INFO data, RESULT INT result)

Read specific RIFF chunk descriptors from a file.

Parameters:

CT.FILE! file Open file handle.
VAL [4]BYTE chkid Chunk ID to look for (4 bytes).
RESULT MOBILE []RIFF.CHUNK.INFO data Returned mobile array of matching chunk descriptors.
RESULT INT result Indicates success or failure.

audiolib.occ:234Process audio.riff.read.chunk.data

PROC audio.riff.read.chunk.data (CT.FILE! file, VAL RIFF.CHUNK.INFO chunk, VAL BOOL include.header, RESULT MOBILE []BYTE data, RESULT INT result)

Read the contents of a single RIFF chunk.

Parameters:

CT.FILE! file Open file handle.
VAL RIFF.CHUNK.INFO chunk Chunk contents to read.
VAL BOOL include.header Whether to include the 8-byte RIFF chunk header.
RESULT MOBILE []BYTE data Returned data.
RESULT INT result Indicates success or failure.

audiolib.occ:278Process audio.wave.file.info

PROC audio.wave.file.info (CT.FILE! file, RESULT WAV.INFO winfo, RESULT INT result)

Read WAVE file parameters (sample rate, channels, etc.) from file handle.

Parameters:

CT.FILE! file Open file handle.
RESULT WAV.INFO winfo Returned .wav file information.
RESULT INT result Indicates success or failure.

audiolib.occ:370Process audio.wave.file.reader

PROC audio.wave.file.reader (CT.FILE! file, VAL INT blk.size, CHAN P.WAVEREADER.OUT out!)

Read WAVE file, info and data.

Parameters:

CT.FILE! file Open file handle.
VAL INT blk.size Block size for chunks read.
CHAN P.WAVEREADER.OUT out Channel where data is sent.

audiolib.occ:449Process audio.wave.path.info

PROC audio.wave.path.info (VAL []BYTE path, SHARED CT.KERNEL! krnl, RESULT WAV.INFO winfo, RESULT INT result)

Read WAVE file parameters (sample rate, channels, etc.) from named file.

Parameters:

VAL []BYTE path Path to file.
SHARED CT.KERNEL! krnl Link to kernel.
RESULT WAV.INFO winfo .wav file information.
RESULT INT result Error status, winfo only defined if ERR.SUCCESS.

audiolib.occ:477Process audio.wave.path.infodata

PROC audio.wave.path.infodata (VAL []BYTE path, SHARED CT.KERNEL! krnl, RESULT WAV.INFO winfo, RESULT MOBILE []BYTE data, RESULT INT result)

Read WAVE file parameters (sample rate, channels, etc.) and sample data from named file. Note: this is not a good idea for large files.

Parameters:

VAL []BYTE path Path to file.
SHARED CT.KERNEL! krnl Link to kernel.
RESULT WAV.INFO winfo .wav file information.
RESULT MOBILE []BYTE data .wav file sample data.
RESULT INT result Error status, winfo only defined if ERR.SUCCESS.

audiolib.occ:538Process audio.wave.path.reader

PROC audio.wave.path.reader (VAL []BYTE path, SHARED CT.KERNEL! krnl, VAL INT blk.size, CHAN P.WAVEREADER.OUT out!)

Read a wave file information and data. This is a handy way of extracting .wav file contents in a piecemeal way. The info tag is output first, along with a WAV.INFO structure, followed by any number of data tags (whose maximum size is limited to the specified blk.size), and finally an end tag.

Parameters:

VAL []BYTE path Path to file to read.
SHARED CT.KERNEL! krnl Link to kernel.
VAL INT blk.size Maximum data block size.
CHAN P.WAVEREADER.OUT out Channel where info and data-blocks are sent.

audiolib.occ:602Process audio.init.buffer.triwave

PROC audio.init.buffer.triwave ([]BYTE buffer, VAL AUDIO.FMT format, VAL INT rate, freq.1, freq.2)

Generates a triangular waveform of the specified frequency. This is useful for generating test waveforms. The format parameter gives the encoding and number of channels (only PCM 8-bit and 16-bit, 1 or 2 channels supported). For mono (single channel) samples, only the first frequency (freq.1) is used.

Parameters:

[]BYTE buffer Sample buffer.
VAL AUDIO.FMT format Audio format settings (see ).
VAL INT rate Sample rate.
VAL INT freq.1 Mono or left-channel frequency.
VAL INT freq.2 Right-channel frequency for stereo.

audiolib.occ:695Process audio.init.buffer.silent

PROC audio.init.buffer.silent ([]BYTE buffer, VAL AUDIO.FMT format)

Generates a silent waveform pattern.

Parameters:

[]BYTE buffer Sample buffer.
VAL AUDIO.FMT format Audio format settings (see ).

audiolib.occ:727Process audio.resolve.mixer.device

PROC audio.resolve.mixer.device (BOOL ok, MOBILE.CHAN mc, RESULT CT.AUDIO.MIXER! mix)

Resolves a MOBILE.CHAN to a specific CT.AUDIO.MIXER device type. Always leaves the resulting channel defined (even if duff connections).

Parameters:

BOOL ok Test and set success.
MOBILE.CHAN mc MOBILE.CHAN to resolve.
RESULT CT.AUDIO.MIXER! mix Returned mixer device.

audiolib.occ:761Process audio.resolve.stream.device

PROC audio.resolve.stream.device (BOOL ok, MOBILE.CHAN mc, RESULT CT.AUDIO.STREAM! stream)

Resolves a MOBILE.CHAN to a specific CT.AUDIO.STREAM device type. Always leaves the resulting channel defined (even if duff connections).

Parameters:

BOOL ok Test and set success.
MOBILE.CHAN mc MOBILE.CHAN to resolve.
RESULT CT.AUDIO.STREAM! stream Returned stream device.

audiolib.occ:797Process audio.connect.mixer.device

PROC audio.connect.mixer.device (BOOL ok, SHARED CT.KERNEL! to.kernel, VAL []BYTE device, RESULT CT.AUDIO.MIXER! mix)

Connect to an audio mixer device.

Parameters:

BOOL ok Test and set success.
SHARED CT.KERNEL! to.kernel Link to kernel.
VAL []BYTE device Device name (fully formed, e.g. "audio.blaster0.mixer0").
RESULT CT.AUDIO.MIXER! mix Returned mixer device.

audiolib.occ:900Process audio.connect.stream.device

PROC audio.connect.stream.device (BOOL ok, SHARED CT.KERNEL! to.kernel, VAL []BYTE device, RESULT CT.AUDIO.STREAM! stream)

Connect to an audio stream device.

Parameters:

BOOL ok Test and set success.
SHARED CT.KERNEL! to.kernel Link to kernel.
VAL []BYTE device Device name (fully formed, e.g. "audio.blaster0.mixer0").
RESULT CT.AUDIO.STREAM! stream Returned stream device.