diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2012-02-11 19:10:29 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2012-02-11 19:10:29 +0100 |
| commit | a33518b5353b33935a255680ba8c7ad40c9980cc (patch) | |
| tree | 8e9dbf584d2d40402eb6bd853a6506631267f18f | |
| parent | a24097ba8118181886a9f0765e76d5fac99f6056 (diff) | |
specify filename as argument
| -rw-r--r-- | sam_player.c | 26 | ||||
| -rw-r--r-- | wave.h | 2 | ||||
| -rw-r--r-- | 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 <filename.wav> <text>\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; } @@ -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 <sndfile.h> -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); |
