From a33518b5353b33935a255680ba8c7ad40c9980cc Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Sat, 11 Feb 2012 19:10:29 +0100 Subject: specify filename as argument --- sam_player.c | 26 +++++++------------------- wave.h | 2 +- wave_linux.c | 4 ++-- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/sam_player.c b/sam_player.c index ee604e7..9b2292c 100644 --- a/sam_player.c +++ b/sam_player.c @@ -12,35 +12,23 @@ static wave_t wave = { 1, 44100, 8, 0, 1, wave_buffer }; int main(int argc, char **argv) { - int argi; - char *arg, c, buf[200], *p; unsigned int wave_length; - p = buf; - for(argi = 1;argi < argc;argi++) + + if(argc != 3) { - arg = argv[argi]; - do - { - c = *(arg++); - if(c >= 'a' && c <= 'z') - c = (c - 'a') + 'A'; - if(c != '\"') - { - if(p < &buf[sizeof(buf) - 1]) - *(p++) = (c != '\0') ? c : ' '; - } - }while(c != '\0'); + printf("Usage: %s \n", argv[0]); + return 1; } - *p = '\0'; + sam_init(); wave_length = sizeof(wave_buffer); - sam_recite(buf, wave.samples_per_sec, wave_buffer, &wave_length); + sam_recite(argv[2], wave.samples_per_sec, wave_buffer, &wave_length); if(wave_length > 0) { if(wave_length > sizeof(wave_buffer)) wave_length = sizeof(wave_buffer); wave.frame_size = wave_length; - (void)wave_out(&wave); + wave_out(&wave, argv[1]); } return 0; } diff --git a/wave.h b/wave.h index 3798996..2804517 100644 --- a/wave.h +++ b/wave.h @@ -13,6 +13,6 @@ typedef struct __wave const void *frame_data; // pointer to the buffer containing sample frames }wave_t; -int wave_out(wave_t *wave); +void wave_out(wave_t *wave, const char* filename); #endif diff --git a/wave_linux.c b/wave_linux.c index f960a9b..90fc3a6 100644 --- a/wave_linux.c +++ b/wave_linux.c @@ -2,7 +2,7 @@ #include "wave.h" #include -int wave_out(wave_t *wave) +void wave_out(wave_t *wave, const char* filename) { SNDFILE* out; SF_INFO info; @@ -11,7 +11,7 @@ int wave_out(wave_t *wave) info.channels = wave->channels; info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_U8; - out = sf_open("out.wav", SFM_WRITE, &info); + out = sf_open(filename, SFM_WRITE, &info); sf_write_raw(out, wave->frame_data, wave->frame_size); sf_close(out); -- cgit v1.2.3