diff --git a/src/Makefile.am b/src/Makefile.am index a8473b1..3d1240d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -21,6 +21,7 @@ SIMPLEAUDIO_SRC = \ simpleaudio.h \ simpleaudio_internal.h \ simpleaudio.c \ + simple-tone-generator.c \ simpleaudio-pulse.c \ simpleaudio-sndfile.c diff --git a/src/Makefile.in b/src/Makefile.in index aad6866..165b7b1 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -56,8 +56,8 @@ am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__objects_1 = baudot.$(OBJEXT) am__objects_2 = fsk.$(OBJEXT) -am__objects_3 = simpleaudio.$(OBJEXT) simpleaudio-pulse.$(OBJEXT) \ - simpleaudio-sndfile.$(OBJEXT) +am__objects_3 = simpleaudio.$(OBJEXT) simple-tone-generator.$(OBJEXT) \ + simpleaudio-pulse.$(OBJEXT) simpleaudio-sndfile.$(OBJEXT) am_minimodem_OBJECTS = minimodem.$(OBJEXT) $(am__objects_1) \ $(am__objects_2) $(am__objects_3) minimodem_OBJECTS = $(am_minimodem_OBJECTS) @@ -171,6 +171,7 @@ SIMPLEAUDIO_SRC = \ simpleaudio.h \ simpleaudio_internal.h \ simpleaudio.c \ + simple-tone-generator.c \ simpleaudio-pulse.c \ simpleaudio-sndfile.c @@ -262,6 +263,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/baudot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minimodem.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-tone-generator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simpleaudio-pulse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simpleaudio-sndfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simpleaudio.Po@am__quote@ diff --git a/src/simple-tone-generator.c b/src/simple-tone-generator.c new file mode 100644 index 0000000..6a3ca33 --- /dev/null +++ b/src/simple-tone-generator.c @@ -0,0 +1,57 @@ +/* + * simple-tone-generator.c + * + * Copyright (C) 2011 Kamal Mostafa + * + * NO LICENSE HAS BEEN SPECIFIED OR GRANTED FOR THIS WORK. + * + */ + + +#include +#include +#include + +#include "simpleaudio.h" + + +/* "current" phase state of the tone generator */ +static float sa_tone_cphase = 0.0; + +void +simpleaudio_tone_reset() +{ + sa_tone_cphase = 0.0; +} + +void +simpleaudio_tone(simpleaudio *sa_out, float tone_freq, size_t nsamples_dur) +{ +#define TONE_GEN_BUFSIZE (10*48000) // FIXME + float buf[TONE_GEN_BUFSIZE]; + + assert ( nsamples_dur <= TONE_GEN_BUFSIZE ); + + if ( tone_freq != 0 ) { + + float wave_nsamples = 48000.0 / tone_freq; // FIXME rate + + size_t i; + for ( i=0; i 0 ); +} + diff --git a/src/simpleaudio.h b/src/simpleaudio.h index cd5c1c8..677b717 100644 --- a/src/simpleaudio.h +++ b/src/simpleaudio.h @@ -55,4 +55,15 @@ void simpleaudio_close( simpleaudio *sa ); +/* + * simpleaudio tone generator + */ + +void +simpleaudio_tone_reset(); + +void +simpleaudio_tone(simpleaudio *sa_out, float tone_freq, size_t nsamples_dur); + + #endif