libnjb: The EAX (and volume) manipulation API

libnjb 2.2.7

- Main Page
- Modules
- Data Structures
- Files
- Examples

Functions
The EAX (and volume) manipulation API

## Functions
void | NJB_Reset_Get_EAX_Type (njb_t *njb)
njb_eax_t * | NJB_Get_EAX_Type (njb_t *njb)
void | NJB_Destroy_EAX_Type (njb_eax_t *eax)
void | NJB_Adjust_EAX (njb_t *njb, u_int16_t eaxid, u_int16_t patchindex, int16_t scalevalue)

## Detailed Description

## Function Documentation

void NJB_Adjust_EAX | ( | njb_t * | njb,
|  | u_int16_t | eaxid,
|  | u_int16_t | patchindex,
|  | int16_t | scalevalue
| ) |  |

This adjusts an EAX control. The magic numbers needed are to be found in `njb_eax_t` structs retrived with the `NJB_Get_EAX_Type()` function. In theory, EAX controls could be both selectable (different `patchindex` can be selected) and scaleable (different `scalevalue` can be set) but in practice all controls are either selectable or scaleable.

Parameters

  njb | a pointer to the `njb_t` object to manipulate the EAX settings on
  eaxid | a unique ID for the EAX effect to manipulate
  patchindex | a patch index to set for the EAX effect. If the effect is not selectable, you can set this to 0.
  scalevalue | a scale value to set for the EAX effect. If the effect is not scaleable, you can set this to 0. Note that this is a signed integer, and may very well be supplied with negative numbers!

See Also
  NJB_Get_EAX_Type()

References njb_struct::device_type, njb3_state_t::eax_processor_active, njb3_control_eax_processor(), NJB_DEVICE_NJB1, and njb_struct::protocol_state.

void NJB_Destroy_EAX_Type | ( | njb_eax_t * | eax | ) |

This destroys an EAX Type and frees all memory used by it.

Parameters

  eax | the EAX Type to destroy

Examples:
  dumpeax.c.

References destroy_eax_type().

njb_eax_t* NJB_Get_EAX_Type | ( | njb_t * | njb | ) |

This retrieves an EAX type from the device. EAX types include volume controls, so this is essential for most player gadgets. Adjustment of the EAX controls according to the values found in `njb_eax_t` objects is done using the `NJB_Ajust_EAX()` function.

Parameters

  njb | a pointer to the `njb_t` object to reset the EAX retrieveal pointer for

Returns
  a pointer to a newly allocaed EAX type. This should be freed with `NJB_Destroy_EAX_Type()` after use.

See Also
  NJB_Reset_Get_EAX_Type()
  NJB_Adjust_EAX()
  njb_eax_t

Examples:
  dumpeax.c.

References njb_struct::device_type, NJB_DEVICE_NJB1, and njb_get_nexteax().

void NJB_Reset_Get_EAX_Type | ( | njb_t * | njb | ) |

This function resets the retrieveal of EAX types. It should typically be called before any subsequent calls to `NJB_Get_EAX_Type()`.

Typical usage:

    njb_t *njb;
    njb_eax_t *eax;

    NJB_Reset_Get_EAX_Type(njb);
    while ( (eax = NJB_Get_EAX_Type(njb)) != NULL ) {
       // Do something with all the EAX types...
       NJB_Destroy_EAX_Type(eax);
    }

Parameters

  njb | a pointer to the `njb_t` object to reset the EAX retrieveal pointer for

See Also
  NJB_Get_EAX_Type()

Examples:
  dumpeax.c.

References njb_struct::device_type, NJB_DEVICE_NJB1, and njb_read_eaxtypes().