WAV Viewer & Soundboard enhancements (8 or 16-bit WAV files) (#1849)

* WAV Viewer & Soundboard enhancements
* Reduced width of sample rate field
This commit is contained in:
Mark Thompson
2024-02-06 04:33:00 -06:00
committed by GitHub
parent bc035cff6a
commit 5ea1bff1e6
6 changed files with 129 additions and 58 deletions

View File

@@ -30,7 +30,8 @@
void AudioTXProcessor::execute(const buffer_c8_t& buffer) {
if (!configured) return;
int32_t audio_sample_m;
buffer_s16_t audio_buffer{audio_data, AUDIO_OUTPUT_BUFFER_SIZE, sampling_rate};
int16_t audio_sample_s16;
// Zero-order hold (poop)
for (size_t i = 0; i < buffer.count; i++) {
@@ -46,15 +47,16 @@ void AudioTXProcessor::execute(const buffer_c8_t& buffer) {
if (bytes_per_sample == 1) {
sample = audio_sample - 0x80;
audio_sample_m = sample * 256;
audio_sample_s16 = sample * 256;
} else {
audio_sample_m = audio_sample;
audio_sample_s16 = (int16_t)audio_sample;
sample = audio_sample_s16 / 256;
}
// Output to speaker too
if (!tone_key_enabled) {
uint32_t imod32 = i & (AUDIO_OUTPUT_BUFFER_SIZE - 1);
audio_data[imod32] = audio_sample_m;
audio_data[imod32] = audio_sample_s16;
if (imod32 == (AUDIO_OUTPUT_BUFFER_SIZE - 1))
audio_output.write_unprocessed(audio_buffer);
}
@@ -133,6 +135,7 @@ void AudioTXProcessor::replay_config(const ReplayConfigMessage& message) {
void AudioTXProcessor::sample_rate_config(const SampleRateConfigMessage& message) {
resample_inc = (((uint64_t)message.sample_rate) << 16) / baseband_fs; // 16.16 fixed point message.sample_rate
sampling_rate = message.sample_rate;
}
int main() {

View File

@@ -51,11 +51,10 @@ class AudioTXProcessor : public BasebandProcessor {
uint32_t audio_sample{};
int32_t sample{0}, delta{};
int8_t re{0}, im{0};
int8_t bytes_per_sample{1};
int16_t audio_sample_s16{};
uint8_t bytes_per_sample{1};
uint32_t sampling_rate{48000};
int16_t audio_data[AUDIO_OUTPUT_BUFFER_SIZE];
buffer_s16_t audio_buffer{audio_data, AUDIO_OUTPUT_BUFFER_SIZE, 48000};
AudioOutput audio_output{};
size_t progress_interval_samples = 0, progress_samples = 0;