From: kramm Date: Sun, 13 Jan 2002 14:12:51 +0000 (+0000) Subject: Example file for sound generation. X-Git-Tag: release-0-2-2~29 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=9d2fbab24fcd0e005419a7c8c01c1915c4cb9575 Example file for sound generation. --- diff --git a/lib/example/sound.c b/lib/example/sound.c new file mode 100644 index 0000000..8ddf34f --- /dev/null +++ b/lib/example/sound.c @@ -0,0 +1,73 @@ +/* sound.c + + Generates a sine wave and tries to create an swf which + plays it as mp3 sound. + + Part of the swftools package. + + Copyright (c) 2002 Matthias Kramm + + This file is distributed under the GPL, see file COPYING for details +*/ + +#include +#include +#include +#include "../rfxswf.h" + +int main (int argc,char ** argv) +{ SWF swf; + RGBA rgb; + SRECT r; + S32 width=300,height = 300; + U16 block[1152*2]; + TAG * tag; + FILE* fi = fopen("test.mp3","wb"); + FILE* fi2 = fopen("test2.wav","wb"); + + int f,i,ls1,fs1; + int count; + int t; + + memset(&swf,0x00,sizeof(SWF)); // set global movie parameters + + swf.fileVersion = 4; // make flash 4 compatible swf + swf.frameRate = 19*256; // about 19 frames per second + + swf.movieSize.xmax = 20*width; // flash units: 1 pixel = 20 units ("twips") + swf.movieSize.ymax = 20*height; + + swf.firstTag = swf_InsertTag(NULL,ST_SETBACKGROUNDCOLOR); + tag = swf.firstTag; + rgb.r = 0xff; + rgb.g = 0xff; + rgb.b = 0xff; + swf_SetRGB(tag,&rgb); + + tag = swf_InsertTag(tag, ST_SOUNDSTREAMHEAD2); + swf_SetSoundStreamHead(tag, 1152); + + for(t=0;t<64;t++) { + int s; + tag = swf_InsertTag(tag, ST_SOUNDSTREAMBLOCK); + for(s=0;s<1152*2;s++) { + block[s] = (int)(32767*sin((s*16*3.14159)/1152)); + } + swf_SetSoundStreamBlock(tag, block, 1152,1); + swf_SetSoundStreamBlock(tag, &block[1152], 1152,0); + fwrite(&tag->data[4], tag->len-4, 1, fi); + fwrite(block, 1152*2*2, 1, fi2); + tag = swf_InsertTag(tag, ST_SHOWFRAME); + } + fclose(fi); + fclose(fi2); + + f = open("sound.swf",O_WRONLY|O_CREAT|O_TRUNC, 0644); + if FAILED(swf_WriteSWF(f,&swf)) fprintf(stderr,"WriteSWF() failed.\n"); + close(f); + + swf_FreeTags(&swf); // cleanup + return 0; +} + +