#include #include #include #include #include #include #include #include #include #include #include #include #include #include "prelude.h" #include "prelude_protos.h" #include "prelude_pragmas.h" extern long file_length(char *file); extern void out_put(char *s); extern void itoa(int n,char s[]); extern void ltoa(long n,char s[]); extern void reverse(char *s); struct PreludeBase *PreludeBase; char template[] ="Filename/A,FREQ/K,LENGTH/K,MSB16/S,LSB16/S,8BIT/S,ADPCM/S,MONO/S,CARDID/K,GAIN/K,BUFSIZE/K,LINE/S,AUX1/S,MIC/S"; char version_string[]="$VER: PrlRec (25.06.97)"; char no_memory[]="\nSorry - I need SOME MORE bytes of memory.\n"; char no_file[]="\nSorry - I need something to record to.\n"; #define a_filename 0 #define a_freq 1 #define a_length 2 #define a_msb16 3 #define a_lsb16 4 #define a_8bit 5 #define a_adpcm 6 #define a_mono 7 #define a_cardid 8 #define a_volume 9 #define a_bufsize 10 #define a_line 11 #define a_aux1 12 #define a_mic 13 UWORD PlayMode,PlayFreq,CardID,Volume; ULONG Offset,BufSize; long Length; ULONG signal,signals; long args[14]; struct RDArgs *myargs; STRPTR FileName; APTR buffer[2]; BPTR fhandle; struct TagItem tags[]= { PRL_INPUT_LEFT,0, // 0 PRL_INPUT_RIGHT,0, // 1 PRL_ING_LEFT,0, // 2 PRL_ING_RIGHT,0, // 3 PRL_SMPL_MODE,0, // 4 PRL_FREQUENCY,0, // 5 TAG_DONE,0 // 6 }; struct TagItem rectags[]={ PRL_BUFF1,0, // [0] PRL_BUFF2,0, // [1] PRL_BUFF_LENGTH,0, // [2] PRL_SIG_TASK,0, // [3] PRL_SIG_MASK,0, // [4] PRL_SIG_ADR,1, // [5] TAG_DONE,0 }; main() { int i,actbuf; for(i=0;i<11;i++) args[i]=0; PreludeBase=(struct PreludeBase *)OpenLibrary("prelude.library",1); if(!PreludeBase) printf("Sorry, no Prelude available\n"); signal=AllocSignal(-1); if(!signal) { PreludeBase->PrlCtrl->PL_SigTask=0; CloseLibrary((struct Library *)PreludeBase); return(0); }; rectags[3].ti_Data=(ULONG)FindTask((UBYTE *)NULL); rectags[4].ti_Data=1L<PrlCtrl->PL_SigTask=0; FreeSignal(signal); CloseLibrary((struct Library *)PreludeBase); return(0); }; fhandle=Open(FileName,MODE_NEWFILE); if(!fhandle) { if(buffer[0]) FreeVec(buffer[0]); if(buffer[1]) FreeVec(buffer[1]); if(FileName) FreeVec(FileName); printf("%s\n",no_file); PreludeBase->PrlCtrl->PL_SigTask=0; FreeSignal(signal); CloseLibrary((struct Library *)PreludeBase); return(0); }; tags[4].ti_Data=PlayMode; tags[5].ti_Data=PlayFreq; SetPrlCtrl(tags); PrlRecord(rectags); for(actbuf=0;;actbuf=1-actbuf) { signals=Wait(1L<fib_Size; UnLock((BPTR)lock); FreeVec(fib_ptr); if(!length) length--; return(length); } void itoa(n,s) register int n; register char s[]; { ltoa((long)(n),s); } void ltoa(n,s) register long n; register char s[]; { register int i = 0, vorz = 0; if(n<0) { vorz=TRUE; n=-1; }; do { s[i++] = n % 10 + '0'; } while((n/=10)>0); if(vorz) s[i++]='-'; s[i]=0; reverse(s); } void reverse(s) register char *s; { register int c,i,j; for(i=0,j=strlen(s)-1;i