From da332ab43bac0f343504852cc1ff78f77e78c35b Mon Sep 17 00:00:00 2001 From: Norayr Chilingarian Date: Mon, 3 Feb 2014 20:27:18 +0400 Subject: [PATCH] added audio example Former-commit-id: f77ccb00588038263cfc91f6241c4ee18f123077 --- src/test/sound/Readme.md | 3 +++ src/test/sound/beep.Mod | 58 ++++++++++++++++++++++++++++++++++++++++ src/test/sound/makefile | 9 +++++++ 3 files changed, 70 insertions(+) create mode 100644 src/test/sound/Readme.md create mode 100644 src/test/sound/beep.Mod create mode 100644 src/test/sound/makefile diff --git a/src/test/sound/Readme.md b/src/test/sound/Readme.md new file mode 100644 index 00000000..6d6c60ce --- /dev/null +++ b/src/test/sound/Readme.md @@ -0,0 +1,3 @@ +This is a modified example of sound generation taken from www.waltzballs.org/other/prog.html#audio + + diff --git a/src/test/sound/beep.Mod b/src/test/sound/beep.Mod new file mode 100644 index 00000000..1c23bddb --- /dev/null +++ b/src/test/sound/beep.Mod @@ -0,0 +1,58 @@ +MODULE beep; +IMPORT Files := OakFiles, rm:=oocRealMath, Unix; + +CONST (*pi2=6.28318;*) +pi2 = 6.2831802368164062; +rate=44.1E3; +lf=20.0; +seconds=2.0; + +VAR t,a,b,freq,xkm1,ykm1,est,gf:REAL; + i,e:LONGINT; + ai:INTEGER; + outvar: Files.File; + outfile: Files.Rider; + first: BOOLEAN; + +PROCEDURE highpass(t,fhp,xk:REAL;VAR yk:REAL); +BEGIN +IF first THEN + est:=rm.exp(-pi2*fhp*t); + gf:=(1+est)/(1-est);first:=FALSE; +END(*IF*); + +yk:=(xk-xkm1)/2; +xkm1:=xk; +xk:=yk; +yk:=est*ykm1+(1-est)*xk; +ykm1:=yk; +yk:=gf*yk; +END highpass; + +BEGIN +t:=1.0/rate; xkm1:=0.0; ykm1:=0.0; first:=TRUE; + +outvar:=Files.New("beepfile"); +IF outvar # NIL THEN + Files.Set(outfile, outvar, 0); +ELSE + HALT(1) +END; + +e:=ENTIER(rate*seconds);freq:=1000; + +FOR i:=1 TO e DO + a:=3000*rm.sin(pi2*freq*i/rate); +(* highpass(t,lf,a,b);*) +(* ai:=SHORT(ENTIER(b));*) + ai:=SHORT(ENTIER(a)); + IF i>ENTIER(rate*10/lf)THEN + Files.WriteInt(outfile, ai);; + END; +END; + +Files.Register(outvar); +i:=Unix.System("oggenc -r -C 1 beepfile"); +i:=Unix.System("ogg123 beepfile.ogg"); +END beep. + diff --git a/src/test/sound/makefile b/src/test/sound/makefile new file mode 100644 index 00000000..26d21ebc --- /dev/null +++ b/src/test/sound/makefile @@ -0,0 +1,9 @@ + +VOC = /opt/voc/bin/voc + +all: + $(VOC) -M beep.Mod + +clean: + rm *.o + rm *.c