rhino/demo/c/dr_libs/tests/wav/dr_wav_encoding.c
Go to the documentation of this file.
1 #define DR_WAV_IMPLEMENTATION
2 #include "../../dr_wav.h"
3 #include <math.h>
4 
5 void generate_sine_wave(float* pOutput, drwav_uint64 frameCount, drwav_uint32 channels, drwav_uint32 sampleRate, float frequency, float* t)
6 {
7  float x = *t;
8  float a = 1.0f / sampleRate;
9  drwav_uint64 iFrame;
10  drwav_uint32 iChannel;
11 
12  for (iFrame = 0; iFrame < frameCount; iFrame += 1) {
13  float s = (float)(sin(3.1415965*2 * x * frequency) * 0.25);
14  for (iChannel = 0; iChannel < channels; iChannel += 1) {
15  pOutput[iFrame*channels + iChannel] = s;
16  }
17 
18  x += a;
19  }
20 
21  *t = x;
22 }
23 
24 int main(int argc, char** argv)
25 {
26  drwav_data_format format;
27  drwav wav;
28  float t = 0;
29  float tempFrames[4096];
30  drwav_uint64 totalFramesToWrite;
31  drwav_uint64 totalFramesWritten = 0;
32 
33 
34  if (argc < 2) {
35  printf("No output file specified.\n");
36  return -1;
37  }
38 
41  format.channels = 2;
42  format.sampleRate = 44100;
43  format.bitsPerSample = 32;
44  if (!drwav_init_file_write(&wav, argv[1], &format, NULL)) {
45  printf("Failed to open file.\n");
46  return -1;
47  }
48 
49  totalFramesToWrite = format.sampleRate * 1;
50  totalFramesWritten = 0;
51 
52  while (totalFramesToWrite > totalFramesWritten) {
53  drwav_uint64 framesRemaining = totalFramesToWrite - totalFramesWritten;
54  drwav_uint64 framesToWriteNow = drwav_countof(tempFrames) / format.channels;
55  if (framesToWriteNow > framesRemaining) {
56  framesToWriteNow = framesRemaining;
57  }
58 
59  generate_sine_wave(tempFrames, framesToWriteNow, format.channels, format.sampleRate, 400, &t);
60  drwav_write_pcm_frames(&wav, framesToWriteNow, tempFrames);
61 
62  totalFramesWritten += framesToWriteNow;
63  }
64 
65  drwav_uninit(&wav);
66 
67  return 0;
68 }
NULL
#define NULL
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/extras/speex_resampler/thirdparty/resample.c:92
drwav_countof
#define drwav_countof(x)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:46302
s
XmlRpcServer s
drwav_uint64
unsigned long long drwav_uint64
Definition: porcupine/demo/c/dr_libs/dr_wav.h:152
drwav_data_format::format
drwav_uint32 format
Definition: porcupine/demo/c/dr_libs/dr_wav.h:438
drwav_data_format::channels
drwav_uint32 channels
Definition: porcupine/demo/c/dr_libs/dr_wav.h:439
drwav_data_format::container
drwav_container container
Definition: porcupine/demo/c/dr_libs/dr_wav.h:437
drwav_container_riff
@ drwav_container_riff
Definition: porcupine/demo/c/dr_libs/dr_wav.h:276
drwav_data_format::bitsPerSample
drwav_uint32 bitsPerSample
Definition: porcupine/demo/c/dr_libs/dr_wav.h:441
drwav_uninit
DRWAV_API drwav_result drwav_uninit(drwav *pWav)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:49216
drwav_uint32
unsigned int drwav_uint32
Definition: porcupine/demo/c/dr_libs/dr_wav.h:139
drwav_init_file_write
DRWAV_API drwav_bool32 drwav_init_file_write(drwav *pWav, const char *filename, const drwav_data_format *pFormat, const drwav_allocation_callbacks *pAllocationCallbacks)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:49030
main
int main(int argc, char **argv)
Definition: rhino/demo/c/dr_libs/tests/wav/dr_wav_encoding.c:24
drwav
Definition: porcupine/demo/c/dr_libs/dr_wav.h:805
python.test_porcupine.argv
argv
Definition: test_porcupine.py:158
drwav_data_format::sampleRate
drwav_uint32 sampleRate
Definition: porcupine/demo/c/dr_libs/dr_wav.h:440
DR_WAVE_FORMAT_IEEE_FLOAT
#define DR_WAVE_FORMAT_IEEE_FLOAT
Definition: porcupine/demo/c/dr_libs/dr_wav.h:256
generate_sine_wave
void generate_sine_wave(float *pOutput, drwav_uint64 frameCount, drwav_uint32 channels, drwav_uint32 sampleRate, float frequency, float *t)
Definition: rhino/demo/c/dr_libs/tests/wav/dr_wav_encoding.c:5
drwav_data_format
Definition: porcupine/demo/c/dr_libs/dr_wav.h:435
drwav_write_pcm_frames
DRWAV_API drwav_uint64 drwav_write_pcm_frames(drwav *pWav, drwav_uint64 framesToWrite, const void *pData)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:49558


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