KallistiOS git master
Independent SDK for the Sega Dreamcast
Loading...
Searching...
No Matches
Microphone

Maple driver for microphone input devices More...

Files

file  sip.h
 Definitions for using the Sound Input Peripheral.
 

Data Structures

struct  sip_state_t
 SIP status structure. More...
 

Macros

#define SIP_SUBCOMMAND_GET_SAMPLES   0x01
 Get recorded samples from the microphone device.
 
#define SIP_SUBCOMMAND_BASIC_CTRL   0x02
 Start and stop sampling.
 
#define SIP_MIN_GAIN   0x00
 Minimum microphone gain.
 
#define SIP_DEFAULT_GAIN   0x0F
 Default microphone gain.
 
#define SIP_MAX_GAIN   0x1F
 Maximum microphone gain.
 
#define SIP_SAMPLE_16BIT_SIGNED   0x00
 Record 16-bit signed integer samples.
 
#define SIP_SAMPLE_8BIT_ULAW   0x01
 Record 8-bit ulaw samples.
 
#define SIP_SAMPLE_11KHZ   0x00
 Record samples at 11.025kHz.
 
#define SIP_SAMPLE_8KHZ   0x01
 Record samples at 8kHz.
 

Typedefs

typedef void(* sip_sample_cb) (maple_device_t *dev, uint8 *samples, size_t len)
 Type for a microphone sample callback.
 

Functions

int sip_set_gain (maple_device_t *dev, unsigned int g)
 Set the microphone's gain value.
 
int sip_set_sample_type (maple_device_t *dev, unsigned int type)
 Set the sample type to be recorded by the microphone.
 
int sip_set_frequency (maple_device_t *dev, unsigned int freq)
 Set the sample frequency to be recorded by the microphone.
 
int sip_start_sampling (maple_device_t *dev, sip_sample_cb cb, int block)
 Start sampling on a microphone.
 
int sip_stop_sampling (maple_device_t *dev, int block)
 Stop sampling on a microphone.
 

Detailed Description

Maple driver for microphone input devices

Macro Definition Documentation

◆ SIP_DEFAULT_GAIN

#define SIP_DEFAULT_GAIN   0x0F

Default microphone gain.

◆ SIP_MAX_GAIN

#define SIP_MAX_GAIN   0x1F

Maximum microphone gain.

◆ SIP_MIN_GAIN

#define SIP_MIN_GAIN   0x00

Minimum microphone gain.

◆ SIP_SAMPLE_11KHZ

#define SIP_SAMPLE_11KHZ   0x00

Record samples at 11.025kHz.

◆ SIP_SAMPLE_16BIT_SIGNED

#define SIP_SAMPLE_16BIT_SIGNED   0x00

Record 16-bit signed integer samples.

◆ SIP_SAMPLE_8BIT_ULAW

#define SIP_SAMPLE_8BIT_ULAW   0x01

Record 8-bit ulaw samples.

◆ SIP_SAMPLE_8KHZ

#define SIP_SAMPLE_8KHZ   0x01

Record samples at 8kHz.

◆ SIP_SUBCOMMAND_BASIC_CTRL

#define SIP_SUBCOMMAND_BASIC_CTRL   0x02

Start and stop sampling.

This subcommand is used with the MAPLE_COMMAND_MICCONTROL command to start and stop sampling on the microphone.

◆ SIP_SUBCOMMAND_GET_SAMPLES

#define SIP_SUBCOMMAND_GET_SAMPLES   0x01

Get recorded samples from the microphone device.

This subcommand is used with the MAPLE_COMMAND_MICCONTROL command to fetch samples from the microphone.

Typedef Documentation

◆ sip_sample_cb

typedef void(* sip_sample_cb) (maple_device_t *dev, uint8 *samples, size_t len)

Type for a microphone sample callback.

This is the signature that is required for a function to accept samples from the microphone as it is sampling. This function will be called about once per frame, and in an interrupt context (so it should be pretty quick to execute). Basically, all you should do in one of these is copy the samples out to your own buffer – do not do any processing on the samples in your callback other than to copy them out!

Parameters
devThe device the samples are coming from.
samplesPointer to the sample buffer.
lenThe number of bytes in the sample buffer.

Function Documentation

◆ sip_set_frequency()

int sip_set_frequency ( maple_device_t * dev,
unsigned int freq )

Set the sample frequency to be recorded by the microphone.

This function sets the sample frequency that the microphone will record. The default value for this is about 11.025kHz samples. You must call this prior to sip_start_sampling() if you wish to change it from the default.

Parameters
devThe microphone device to set sample type on.
freqThe type of samples requested.
Return values
MAPLE_EOKOn success.
MAPLE_EINVALIDIf freq is invalid.
MAPLE_EFAILIf the microphone is sampling.
See also
SIP_SAMPLE_11KHZ
SIP_SAMPLE_8KHZ

◆ sip_set_gain()

int sip_set_gain ( maple_device_t * dev,
unsigned int g )

Set the microphone's gain value.

This function sets the gain value of the specified microphone device to the value given. This should only be called prior to sampling so as to keep the amplification constant throughout the sampling process, but can be changed on the fly if you really want to.

Parameters
devThe microphone device to set gain on.
gThe value to set as the gain.
Return values
MAPLE_EOKOn success.
MAPLE_EINVALIDIf g is out of range.
See also
SIP_MIN_GAIN
SIP_DEFAULT_GAIN
SIP_MAX_GAIN

◆ sip_set_sample_type()

int sip_set_sample_type ( maple_device_t * dev,
unsigned int type )

Set the sample type to be recorded by the microphone.

This function sets the sample type that the microphone will return. The default value for this is 16-bit signed integer samples. You must call this prior to sip_start_sampling() if you wish to change it from the default.

Parameters
devThe microphone device to set sample type on.
typeThe type of samples requested.
Return values
MAPLE_EOKOn success.
MAPLE_EINVALIDIf type is invalid.
MAPLE_EFAILIf the microphone is sampling.
See also
SIP_SAMPLE_16BIT_SIGNED
SIP_SAMPLE_8BIT_ULAW

◆ sip_start_sampling()

int sip_start_sampling ( maple_device_t * dev,
sip_sample_cb cb,
int block )

Start sampling on a microphone.

This function informs a microphone it should start recording samples.

Parameters
devThe device to start sampling on.
cbA callback to call when samples are ready.
blockSet to 1 to wait for the SIP to start sampling. Otherwise check the is_sampling member of the status for dev to know when it has started.
Return values
MAPLE_EOKOn success.
MAPLE_EAGAINIf the command couldn't be sent, try again later.
MAPLE_EFAILIf the microphone is already sampling or the callback function is NULL.
MAPLE_ETIMEOUTIf the command timed out while blocking.

◆ sip_stop_sampling()

int sip_stop_sampling ( maple_device_t * dev,
int block )

Stop sampling on a microphone.

This function informs a microphone it should stop recording samples.

Parameters
devThe device to stop sampling on.
blockSet to 1 to wait for the SIP to stop sampling. Otherwise check the is_sampling member of the status for dev to know when it has finished.
Return values
MAPLE_EOKOn success.
MAPLE_EAGAINIf the command couldn't be sent, try again later.
MAPLE_EFAILIf the microphone is not sampling.
MAPLE_ETIMEOUTIf the command timed out while blocking.