Category : C Source Code
Archive   : SOX.ZIP
Filename : SKEL.C

 
Output of file : SKEL.C contained in archive : SOX.ZIP
/*
* July 5, 1991
* Copyright 1991 Lance Norskog And Sundry Contributors
* This source code is freely redistributable and may be used for
* any purpose. This copyright notice must be maintained.
* Lance Norskog And Sundry Contributors are not responsible for
* the consequences of using this software.
*/

/*
* Sound Tools skeleton file format driver.
*/

#include "st.h"

/* Private data for SKEL file */
typedef struct skelstuff {
int rest; /* bytes remaining in current block */
} *skel_t;

extern float volume, amplitude;
extern int summary, verbose;

/*
* Do anything required before you start reading samples.
* Read file header.
* Find out sampling rate,
* size and style of samples,
* mono/stereo/quad.
*/
skelstartread(ft)
ft_t ft;
{
skel_t sk = (skel_t) ft->priv;

/* If you need to seek around the input file. */
if (! ft->seekable)
fail("SKEL input file must be a file, not a pipe");

/*
* If your format specifies or your file header contains
* any of the following information.
*/
ft->rate =
ft->size = BYTE or WORD ...;
ft->style = UNSIGNED or SIGN2 ...;
ft->channels = 1 or 2 or 4;
}

/*
* Read up to len samples from file.
* Convert to signed longs.
* Place in buf[].
* Return number of samples read.
*/

skelread(ft, buf, len)
ft_t ft;
long *buf, len;
{
skel_t sk = (skel_t) ft->priv;
int abs;
float amp;
int done = 0;

char c;
unsigned char uc;
short s;
unsigned short us;
long l;
unsigned long ul;
float f;
double d;

for(; done < len; done++) {
if no more samples
break
get a sample
l = sample converted to signed long
*buf++ = l;
}
return done;
}

/*
* Do anything required when you stop reading samples.
* Don't close input file!
*/
skelstopread(ft)
ft_t ft;
{
}

skelstartwrite(ft)
ft_t ft;
{
skel_t sk = (skel_t) ft->priv;

/* If you have to seek around the output file */
if (! ft->seekable)
fail("Output .skel file must be a file, not a pipe");

/* If your format specifies any of the following info. */
ft->rate =
ft->size = BYTE or WORD ...;
ft->style = UNSIGNED or SIGN2 ...;
ft->channels = 1 or 2 or 4;
/* Write file header, if any */

}

skelwrite(ft, buf, len)
ft_t ft;
long *buf, len;
{
skel_t sk = (skel_t) ft->priv;
register int datum;
int abs;
int done = 0;

while(len--)
putc((*buf++ >> 24) ^ 0x80, ft->fp);
/* If you cannot write out all of the supplied samples, */
/* fail("SKEL: Can't write all samples to %s", ft->filename); */

}

skelstopwrite(ft)
ft_t ft;
{
/* All samples are already written out. */
/* If file header needs fixing up, for example it needs the */
/* the number of samples in a field, seek back and write them here. */
}



  3 Responses to “Category : C Source Code
Archive   : SOX.ZIP
Filename : SKEL.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/