pvrecorder/src/miniaudio/examples/simple_playback_sine.c
Go to the documentation of this file.
1 /*
2 Demonstrates playback of a sine wave.
3 
4 Since all this example is doing is playing back a sine wave, we can disable decoding (and encoding) which will slightly
5 reduce the size of the executable. This is done with the `MA_NO_DECODING` and `MA_NO_ENCODING` options.
6 
7 The generation of sine wave is achieved via the `ma_waveform` API. A waveform is a data source which means it can be
8 seamlessly plugged into the `ma_data_source_*()` family of APIs as well.
9 
10 A waveform is initialized using the standard config/init pattern used throughout all of miniaudio. Frames are read via
11 the `ma_waveform_read_pcm_frames()` API.
12 
13 This example works with Emscripten.
14 */
15 #define MA_NO_DECODING
16 #define MA_NO_ENCODING
17 #define MINIAUDIO_IMPLEMENTATION
18 #include "../miniaudio.h"
19 
20 #include <stdio.h>
21 
22 #ifdef __EMSCRIPTEN__
23 #include <emscripten.h>
24 
25 void main_loop__em()
26 {
27 }
28 #endif
29 
30 #define DEVICE_FORMAT ma_format_f32
31 #define DEVICE_CHANNELS 2
32 #define DEVICE_SAMPLE_RATE 48000
33 
34 void data_callback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount)
35 {
36  ma_waveform* pSineWave;
37 
39 
40  pSineWave = (ma_waveform*)pDevice->pUserData;
41  MA_ASSERT(pSineWave != NULL);
42 
43  ma_waveform_read_pcm_frames(pSineWave, pOutput, frameCount);
44 
45  (void)pInput; /* Unused. */
46 }
47 
48 int main(int argc, char** argv)
49 {
50  ma_waveform sineWave;
51  ma_device_config deviceConfig;
53  ma_waveform_config sineWaveConfig;
54 
56  ma_waveform_init(&sineWaveConfig, &sineWave);
57 
59  deviceConfig.playback.format = DEVICE_FORMAT;
60  deviceConfig.playback.channels = DEVICE_CHANNELS;
61  deviceConfig.sampleRate = DEVICE_SAMPLE_RATE;
62  deviceConfig.dataCallback = data_callback;
63  deviceConfig.pUserData = &sineWave;
64 
65  if (ma_device_init(NULL, &deviceConfig, &device) != MA_SUCCESS) {
66  printf("Failed to open playback device.\n");
67  return -4;
68  }
69 
70  printf("Device Name: %s\n", device.playback.name);
71 
73  printf("Failed to start playback device.\n");
75  return -5;
76  }
77 
78 #ifdef __EMSCRIPTEN__
79  emscripten_set_main_loop(main_loop__em, 0, 1);
80 #else
81  printf("Press Enter to quit...\n");
82  getchar();
83 #endif
84 
86 
87  (void)argc;
88  (void)argv;
89  return 0;
90 }
main
int main(int argc, char **argv)
Definition: pvrecorder/src/miniaudio/examples/simple_playback_sine.c:48
ma_device_uninit
void ma_device_uninit(ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27425
ma_device_start
ma_result ma_device_start(ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27485
NULL
#define NULL
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/extras/speex_resampler/thirdparty/resample.c:92
ma_device::channels
ma_uint32 channels
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3626
ma_waveform_config
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:5361
data_callback
void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uint32 frameCount)
Definition: pvrecorder/src/miniaudio/examples/simple_playback_sine.c:34
ma_device_type_playback
@ ma_device_type_playback
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3012
ma_device_config::dataCallback
ma_device_callback_proc dataCallback
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3110
device
ma_device device
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/tests/test_deviceio/ma_test_deviceio.c:57
ma_waveform_init
ma_result ma_waveform_init(const ma_waveform_config *pConfig, ma_waveform *pWaveform)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:45445
ma_device::pUserData
void * pUserData
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3592
DEVICE_CHANNELS
#define DEVICE_CHANNELS
Definition: pvrecorder/src/miniaudio/examples/simple_playback_sine.c:31
MA_ASSERT
#define MA_ASSERT(condition)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:770
ma_waveform_config_init
ma_waveform_config ma_waveform_config_init(ma_format format, ma_uint32 channels, ma_uint32 sampleRate, ma_waveform_type type, double amplitude, double frequency)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:45369
ma_waveform_type_sine
@ ma_waveform_type_sine
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:5359
ma_device::name
char name[256]
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3620
ma_uint32
uint32_t ma_uint32
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1503
ma_waveform
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:5373
DEVICE_FORMAT
#define DEVICE_FORMAT
Definition: pvrecorder/src/miniaudio/examples/simple_playback_sine.c:30
ma_device_config::format
ma_format format
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3128
ma_device_config_init
ma_device_config ma_device_config_init(ma_device_type deviceType)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27034
DEVICE_SAMPLE_RATE
#define DEVICE_SAMPLE_RATE
Definition: pvrecorder/src/miniaudio/examples/simple_playback_sine.c:32
ma_device_config::channels
ma_uint32 channels
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3129
ma_waveform_read_pcm_frames
ma_uint64 ma_waveform_read_pcm_frames(ma_waveform *pWaveform, void *pFramesOut, ma_uint64 frameCount)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:45751
python.test_porcupine.argv
argv
Definition: test_porcupine.py:158
ma_device_init
ma_result ma_device_init(ma_context *pContext, const ma_device_config *pConfig, ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27048
ma_device
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3584
ma_device_config
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3100
ma_device_config::sampleRate
ma_uint32 sampleRate
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3103
MA_SUCCESS
#define MA_SUCCESS
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1659
ma_device_config::playback
struct ma_device_config::@97 playback
ma_device::playback
struct ma_device::@115 playback
ma_device_config::pUserData
void * pUserData
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3112


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:14:50