32template <
size_t transfer_size>
80 wavheader_.
ByteRate = CalcByteRate();
85 wavheader_.
FileSize = CalcFileSize();
95 for(
int i = 0; i < cfg_.
channels; i++)
102 tp = (int16_t *)transfer_buff;
103 tp[wptr_ + i] =
f2s16(in[i]);
106 case 32: transfer_buff[wptr_ + i] =
f2s32(in[i]);
break;
113 = cfg_.
bitspersample == 16 ? kTransferSamps * 2 : kTransferSamps;
114 if(wptr_ == cap_point)
118 if(wptr_ >= cap_point * 2)
135 f_write(&fp_, &transfer_buff[offset], transfer_size, &bw);
152 if(remaining_size >
sizeof(transfer_buff))
154 remaining_size =
sizeof(transfer_buff);
156 f_write(&fp_, transfer_buff, remaining_size, &bw);
159 wavheader_.
FileSize = CalcFileSize();
161 f_write(&fp_, &wavheader_,
sizeof(wavheader_), &bw);
165 memset(transfer_buff, 0,
sizeof(transfer_buff));
175 if(f_open(&fp_, name, FA_WRITE | FA_CREATE_ALWAYS) == FR_OK)
178 if(f_write(&fp_, &wavheader_,
sizeof(wavheader_), &bw) == FR_OK)
195 return (
float)num_samps_ / (float)cfg_.
samplerate;
200 inline uint32_t CalcFileSize()
208 inline uint32_t CalcByteRate()
213 static constexpr int kTransferSamps = transfer_size /
sizeof(int32_t);
215 WAV_FormatTypeDef wavheader_;
216 uint32_t num_samps_, wptr_;
218 int32_t transfer_buff[kTransferSamps * 2];
Definition WavWriter.h:34
void Sample(const float *in)
Definition WavWriter.h:93
BufferState
Definition WavWriter.h:60
uint32_t GetLengthSamps()
Definition WavWriter.h:190
bool IsRecording() const
Definition WavWriter.h:187
WavWriter()
Definition WavWriter.h:36
void SaveFile()
Definition WavWriter.h:142
void OpenFile(const char *name)
Definition WavWriter.h:173
~WavWriter()
Definition WavWriter.h:37
Result
Definition WavWriter.h:41
float GetLengthSeconds()
Definition WavWriter.h:193
void Write()
Definition WavWriter.h:126
void Init(const Config &cfg)
Definition WavWriter.h:67
FORCE_INLINE int16_t f2s16(float x)
Definition daisy_core.h:128
FORCE_INLINE int32_t f2s32(float x)
Definition daisy_core.h:163
Hardware defines and helpers for daisy field platform.
Definition index.h:2
const uint32_t kWavFileChunkId
Definition wav_format.h:15
const uint32_t kWavFileSubChunk2Id
Definition wav_format.h:18
const uint32_t kWavFileWaveId
Definition wav_format.h:16
@ WAVE_FORMAT_PCM
Definition wav_format.h:30
const uint32_t kWavFileSubChunk1Id
Definition wav_format.h:17
Definition WavWriter.h:49
int32_t bitspersample
Definition WavWriter.h:52
float samplerate
Definition WavWriter.h:50
int32_t channels
Definition WavWriter.h:51