/* Include ma_vocoder_node.h after miniaudio.h */ #ifndef miniaudio_vocoder_node_h #define miniaudio_vocoder_node_h #include "../../../miniaudio.h" #include "voclib.h" #ifdef __cplusplus extern "C" { #endif /* The vocoder node has two inputs and one output. Inputs: Input Bus 0: The source/carrier stream. Input Bus 1: The excite/modulator stream. The source (input bus 0) and output must have the same channel count, and is restricted to 1 or 2. The excite (input bus 1) is restricted to 1 channel. */ typedef struct { ma_node_config nodeConfig; ma_uint32 channels; /* The number of channels of the source, which will be the same as the output. Must be 1 or 2. The excite bus must always have one channel. */ ma_uint32 sampleRate; ma_uint32 bands; /* Defaults to 16. */ ma_uint32 filtersPerBand; /* Defaults to 6. */ } ma_vocoder_node_config; MA_API ma_vocoder_node_config ma_vocoder_node_config_init(ma_uint32 channels, ma_uint32 sampleRate); typedef struct { ma_node_base baseNode; voclib_instance voclib; } ma_vocoder_node; MA_API ma_result ma_vocoder_node_init(ma_node_graph* pNodeGraph, const ma_vocoder_node_config* pConfig, const ma_allocation_callbacks* pAllocationCallbacks, ma_vocoder_node* pVocoderNode); MA_API void ma_vocoder_node_uninit(ma_vocoder_node* pVocoderNode, const ma_allocation_callbacks* pAllocationCallbacks); #ifdef __cplusplus } #endif #endif /* miniaudio_vocoder_node_h */