pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.c
Go to the documentation of this file.
1 
2 #define VERBLIB_IMPLEMENTATION
3 #include "ma_reverb_node.h"
4 
6 {
8 
10  config.nodeConfig = ma_node_config_init(); /* Input and output channels will be set in ma_reverb_node_init(). */
11  config.channels = channels;
12  config.sampleRate = sampleRate;
13  config.roomSize = verblib_initialroom;
14  config.damping = verblib_initialdamp;
16  config.wetVolume = verblib_initialwet;
17  config.dryVolume = verblib_initialdry;
19 
20  return config;
21 }
22 
23 
24 static void ma_reverb_node_process_pcm_frames(ma_node* pNode, const float** ppFramesIn, ma_uint32* pFrameCountIn, float** ppFramesOut, ma_uint32* pFrameCountOut)
25 {
26  ma_reverb_node* pReverbNode = (ma_reverb_node*)pNode;
27 
28  (void)pFrameCountIn;
29 
30  verblib_process(&pReverbNode->reverb, ppFramesIn[0], ppFramesOut[0], *pFrameCountOut);
31 }
32 
34 {
36  NULL,
37  1, /* 1 input channels. */
38  1, /* 1 output channel. */
39  MA_NODE_FLAG_CONTINUOUS_PROCESSING /* Reverb requires continuous processing to ensure the tail get's processed. */
40 };
41 
42 MA_API ma_result ma_reverb_node_init(ma_node_graph* pNodeGraph, const ma_reverb_node_config* pConfig, const ma_allocation_callbacks* pAllocationCallbacks, ma_reverb_node* pReverbNode)
43 {
44  ma_result result;
45  ma_node_config baseConfig;
46 
47  if (pReverbNode == NULL) {
48  return MA_INVALID_ARGS;
49  }
50 
51  MA_ZERO_OBJECT(pReverbNode);
52 
53  if (pConfig == NULL) {
54  return MA_INVALID_ARGS;
55  }
56 
57  if (verblib_initialize(&pReverbNode->reverb, (unsigned long)pConfig->sampleRate, (unsigned int)pConfig->channels) == 0) {
58  return MA_INVALID_ARGS;
59  }
60 
61  baseConfig = pConfig->nodeConfig;
62  baseConfig.vtable = &g_ma_reverb_node_vtable;
63  baseConfig.pInputChannels = &pConfig->channels;
64  baseConfig.pOutputChannels = &pConfig->channels;
65 
66  result = ma_node_init(pNodeGraph, &baseConfig, pAllocationCallbacks, &pReverbNode->baseNode);
67  if (result != MA_SUCCESS) {
68  return result;
69  }
70 
71  return MA_SUCCESS;
72 }
73 
74 MA_API void ma_reverb_node_uninit(ma_reverb_node* pReverbNode, const ma_allocation_callbacks* pAllocationCallbacks)
75 {
76  /* The base node is always uninitialized first. */
77  ma_node_uninit(pReverbNode, pAllocationCallbacks);
78 }
ma_reverb_node_config_init
MA_API ma_reverb_node_config ma_reverb_node_config_init(ma_uint32 channels, ma_uint32 sampleRate)
Definition: pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.c:5
MA_INVALID_ARGS
#define MA_INVALID_ARGS
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1661
NULL
#define NULL
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/extras/speex_resampler/thirdparty/resample.c:92
ma_reverb_node::reverb
verblib reverb
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:33
ma_reverb_node_init
MA_API ma_result ma_reverb_node_init(ma_node_graph *pNodeGraph, const ma_reverb_node_config *pConfig, const ma_allocation_callbacks *pAllocationCallbacks, ma_reverb_node *pReverbNode)
Definition: pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.c:42
verblib_initialize
int verblib_initialize(verblib *verb, unsigned long sample_rate, unsigned int channels)
verblib_initialdamp
#define verblib_initialdamp
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/verblib.h:136
verblib_process
void verblib_process(verblib *verb, const float *input_buffer, float *output_buffer, unsigned long frames)
ma_reverb_node
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:30
ma_reverb_node_uninit
MA_API void ma_reverb_node_uninit(ma_reverb_node *pReverbNode, const ma_allocation_callbacks *pAllocationCallbacks)
Definition: pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.c:74
MA_API
#define MA_API
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.h:174
ma_node
void ma_node
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:874
ma_reverb_node_config
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:14
ma_node_vtable
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:892
ma_reverb_node_process_pcm_frames
static void ma_reverb_node_process_pcm_frames(ma_node *pNode, const float **ppFramesIn, ma_uint32 *pFrameCountIn, float **ppFramesOut, ma_uint32 *pFrameCountOut)
Definition: pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.c:24
ma_allocation_callbacks
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1823
verblib_initialwet
#define verblib_initialwet
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/verblib.h:137
verblib_initialdry
#define verblib_initialdry
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/verblib.h:138
ma_reverb_node_config::channels
ma_uint32 channels
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:17
verblib_initialwidth
#define verblib_initialwidth
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/verblib.h:139
ma_result
int ma_result
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1658
ma_reverb_node::baseNode
ma_node_base baseNode
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:32
ma_node_init
MA_API ma_result ma_node_init(ma_node_graph *pNodeGraph, const ma_node_config *pConfig, const ma_allocation_callbacks *pAllocationCallbacks, ma_node *pNode)
ma_node_config_init
MA_API ma_node_config ma_node_config_init(void)
ma_node_config::vtable
const ma_node_vtable * vtable
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:937
ma_reverb_node_config::sampleRate
ma_uint32 sampleRate
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:18
verblib_initialroom
#define verblib_initialroom
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/verblib.h:135
ma_node_config::pOutputChannels
const ma_uint32 * pOutputChannels
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:942
ma_node_uninit
MA_API void ma_node_uninit(ma_node *pNode, const ma_allocation_callbacks *pAllocationCallbacks)
verblib_initialmode
#define verblib_initialmode
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/verblib.h:140
g_ma_reverb_node_vtable
static ma_node_vtable g_ma_reverb_node_vtable
Definition: pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.c:33
ma_uint32
uint32_t ma_uint32
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1503
MA_NODE_FLAG_CONTINUOUS_PROCESSING
#define MA_NODE_FLAG_CONTINUOUS_PROCESSING
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:879
ma_node_config
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:935
ma_node_graph
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:1053
ma_node_config::pInputChannels
const ma_uint32 * pInputChannels
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/miniaudio_engine.h:941
config
static sai_transceiver_t config
Definition: imxrt1050/imxrt1050-evkb/source/pv_audio_rec.c:75
MA_SUCCESS
#define MA_SUCCESS
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1659
MA_ZERO_OBJECT
#define MA_ZERO_OBJECT(p)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:774
ma_reverb_node.h
ma_reverb_node_config::nodeConfig
ma_node_config nodeConfig
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/research/_extras/nodes/ma_reverb_node/ma_reverb_node.h:16


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:13:56