summaryrefslogtreecommitdiff
path: root/tools/aif2pcm/main.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2016-09-08 17:57:29 -0700
committerMarcus Huderle <huderlem@gmail.com>2016-09-08 17:57:29 -0700
commitb96fa854e1845deb52a7918395ac337fc8b69560 (patch)
tree372abe5dab904ec2466dc668f401643c87bb01ef /tools/aif2pcm/main.c
parent9bc34addc5bc5b7820095f4cadad21e0c25c6404 (diff)
Use .aif files for programmable wave instruments.
Diffstat (limited to 'tools/aif2pcm/main.c')
-rw-r--r--tools/aif2pcm/main.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c
index b1bdf7a98..b834b984a 100644
--- a/tools/aif2pcm/main.c
+++ b/tools/aif2pcm/main.c
@@ -152,7 +152,6 @@ AifData *read_aif(char * aif_file_data, unsigned long aif_file_data_size)
double sample_rate = ieee754_read_extended((unsigned char*)(aif_file_data + pos));
pos += 10;
- aif_data->num_samples = num_sample_frames;
aif_data->sample_rate = sample_rate;
}
else if (strcmp(chunk_name, "MARK") == 0)
@@ -184,6 +183,10 @@ AifData *read_aif(char * aif_file_data, unsigned long aif_file_data_size)
{
loop_start = marker_position;
}
+ else if (strcmp(marker_name, "END") == 0)
+ {
+ aif_data->num_samples = marker_position;
+ }
free(marker_name);
}
@@ -224,12 +227,12 @@ AifData *read_aif(char * aif_file_data, unsigned long aif_file_data_size)
void aif2pcm(const char *aif_filename)
{
// Get .pcm filename.
- char pcm_filename[strlen(aif_filename)];
+ char pcm_filename[strlen(aif_filename) + 1];
strcpy(pcm_filename, aif_filename);
change_file_extension(pcm_filename, "pcm");
// Get .metadata filename.
- char metadata_filename[strlen(aif_filename)];
+ char metadata_filename[strlen(aif_filename) + 1];
strcpy(metadata_filename, aif_filename);
change_file_extension(metadata_filename, "bin");
@@ -275,6 +278,8 @@ void aif2pcm(const char *aif_filename)
unsigned long pitch_adjust = (unsigned long)(aif_data->sample_rate * 1024);
fwrite(&pitch_adjust, sizeof(unsigned long), 1, metadata_file);
fwrite(&(aif_data->loop_offset), sizeof(unsigned long), 1, metadata_file);
+ unsigned long adjusted_num_samples = aif_data->num_samples - 1;
+ fwrite(&adjusted_num_samples, sizeof(unsigned long), 1, metadata_file);
fclose(metadata_file);
free(aif_data->samples);