Chrispy
High-performance multichannel ADC sampling and audio recording.
Loading...
Searching...
No Matches
WavHeader.h
Go to the documentation of this file.
1#pragma once
2
3#include <limits.h>
4#include <stdint.h>
5
6#include "Adc.h"
7
9
10#define U8_BITS CHAR_BIT
11#define U16_BITS (2 * U8_BITS)
12
20struct WavHeader {
24 const char chunk_id[4] = {'R', 'I', 'F', 'F'};
29 uint32_t chunk_size = 36;
33 const char format[4] = {'W', 'A', 'V', 'E'};
37 const char subchunk_id[4] = {'f', 'm', 't', ' '};
41 const uint32_t subchunk_size = 16;
45 const uint16_t audio_format = 1;
52 const uint16_t num_channels = 1;
56 uint32_t sample_rate = 0;
62 uint32_t byte_rate = 0;
68 uint16_t block_align = 2;
77 const char sub_chunk_2_id[4] = {'d', 'a', 't', 'a'};
83 uint32_t sub_chunk_2_size = 0;
84
92 void fill(BitResolution res, uint32_t file_size, uint32_t sample_rate);
93};
BitResolution
Supported bit resolutions for ADC sampling.
Definition Adc.h:13
Header of a standard PCM WAV file.
Definition WavHeader.h:20
uint16_t bits_per_sample
Number of bits per sample.
Definition WavHeader.h:73
const char subchunk_id[4]
Subchunk ID (always "fmt ").
Definition WavHeader.h:37
uint32_t chunk_size
Size of (entire file in bytes - 8 bytes) or (data size + 36) Gets rewritten after data is fully writt...
Definition WavHeader.h:29
uint16_t block_align
Byte alignment of each sample.
Definition WavHeader.h:68
const char format[4]
Format identifier (always "WAVE").
Definition WavHeader.h:33
const uint16_t audio_format
Audio format code (PCM = 1).
Definition WavHeader.h:45
uint32_t byte_rate
Byte rate.
Definition WavHeader.h:62
const char chunk_id[4]
RIFF chunk identifier ("RIFF").
Definition WavHeader.h:24
uint32_t sub_chunk_2_size
Size of data chunk.
Definition WavHeader.h:83
const uint32_t subchunk_size
Size of the "fmt " subchunk (always 16).
Definition WavHeader.h:41
uint32_t sample_rate
Sampling rate in hertz (samples per second).
Definition WavHeader.h:56
const uint16_t num_channels
Number of channels.
Definition WavHeader.h:52
void fill(BitResolution res, uint32_t file_size, uint32_t sample_rate)
Fill in WAV header fields once all details are known.
Definition WavHeader.cpp:3
const char sub_chunk_2_id[4]
Subchunk 2 ID.
Definition WavHeader.h:77