summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsteven-na <noreply.github@stvnc.dev>2026-08-03 01:20:36 -0700
committersteven-na <noreply.github@stvnc.dev>2026-08-03 01:20:36 -0700
commitbc4a38a4612c8b32a38fb46296931b9ed4c830fb (patch)
treecd06da166eb8d811d406d9370000901cc868a54d /src
parent4a3d2ea795e5a13ce3b0ce96fcee55fd2c2f5a80 (diff)
Fix wav_load api
Diffstat (limited to 'src')
-rw-r--r--src/wav.c14
-rw-r--r--src/wav.h7
2 files changed, 15 insertions, 6 deletions
diff --git a/src/wav.c b/src/wav.c
index cdfc44a..80c8407 100644
--- a/src/wav.c
+++ b/src/wav.c
@@ -99,7 +99,7 @@ wav_fmt_chunk_t make_wav_fmt_chunk(u32 num_channels, u32 sample_rate, u16 bits_p
return o;
}
-u64 wav_load(smrt_arena_t *arena, FILE *wav, f64 ***samples_o, u16 *channel_count_o) {
+void wav_load(smrt_arena_t *arena, FILE *wav, f64 ***samples_o ,u16 *channel_count_o ,u64 *sample_count_o, u32 *sample_rate_o) {
smrta_temp_t scratch = smrta_scratch_start(NULL, 0);
wav_master_chunk_t m;
@@ -145,7 +145,7 @@ u64 wav_load(smrt_arena_t *arena, FILE *wav, f64 ***samples_o, u16 *channel_coun
c);
break;
default:
- perror("Only PCM integer 8,16,24 bits can be read.");
+ perror("Only PCM integer 8,16,24 bits data can be read.");
goto failed;
}
break;
@@ -158,7 +158,7 @@ u64 wav_load(smrt_arena_t *arena, FILE *wav, f64 ***samples_o, u16 *channel_coun
c);
break;
default:
- perror("Only 32 bits float can be read.");
+ perror("Only 32 bits float data can be read.");
goto failed;
}
break;
@@ -170,13 +170,17 @@ u64 wav_load(smrt_arena_t *arena, FILE *wav, f64 ***samples_o, u16 *channel_coun
}
smrta_scratch_end(scratch);
- return data.sample_count;
+ *sample_count_o = data.sample_count;
+ *sample_rate_o = f.sample_rate;
+ return;
failed:
smrta_scratch_end(scratch);
smrt_arena_pop_to_mark(arena);
*samples_o = NULL;
- return 0;
+ *sample_count_o = 0;
+ *sample_rate_o = 0;
+ return;
}
f64 *read_8bps_data(smrt_arena_t *arena, wav_data_t data, u16 num_channels, u16 channel) {
diff --git a/src/wav.h b/src/wav.h
index 76c15f7..9fe412c 100644
--- a/src/wav.h
+++ b/src/wav.h
@@ -58,7 +58,12 @@ wav_fmt_chunk_t make_wav_fmt_chunk(u32 num_channels ,
u32 sample_rate ,
u16 bits_per_sample);
-u64 wav_load(smrt_arena_t *arena, FILE *wav, f64 ***samples_o, u16 *channel_count_o);
+/// Load WAV data into [-1.0, 1.0] f64 amplitudes. populates *o inputs with information.
+/// samples will be amplitude data for each channel from the WAV file, of length sample_count.
+void wav_load(smrt_arena_t *arena, FILE *wav, f64 *** samples_o ,
+ u16 *channel_count_o ,
+ u64 * sample_count_o ,
+ u32 * sample_rate_o);
f64 * read_8bps_data(smrt_arena_t *arena, wav_data_t data, u16 num_channels, u16 channel);
f64 * read_16bps_data(smrt_arena_t *arena, wav_data_t data, u16 num_channels, u16 channel);