home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
XBD2_SRC.ZIP
/
XBD2_SRC
/
CONVERT.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-02-04
|
2KB
|
127 lines
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
#include <process.h>
#include <malloc.h>
#include "sound.h"
#define SIZE 32768L
byte convTab[256];
void convertFile(char *inSound, unsigned int wave, char *outSound, char *name)
{
int inFd;
int outFd;
int mult = 1;
byte _huge *inPtr;
struct stat fStat;
unsigned int part = SIZE;
unsigned int tmp;
unsigned int newWave = wave;
struct sound header;
if (wave < 15000) {
while (newWave < 22000) {
mult++;
newWave = wave * mult;
}
wave = newWave;
}
if (mult > 4) {
printf("Frequency to low\n");
exit(1);
}
if (stat(inSound,&fStat) != 0) {
perror(inSound);
exit(1);
}
inPtr = (byte _huge *)halloc(SIZE, sizeof(byte));
if (inPtr == NULL) {
perror("Can't allocate memory");
exit(1);
}
if (_dos_open(inSound, O_RDONLY, &inFd) != 0) {
perror(inSound);
exit(1);
}
if (_dos_creatnew(outSound, _A_NORMAL, &outFd)) {
perror(outSound);
exit(1);
}
_dos_close(outFd);
if (_dos_open(outSound, O_RDWR, &outFd) != 0) {
perror(outSound);
exit(1);
}
strcpy(header.ident,IDENT);
header.mult = mult;
header.nbValues = 0;
header.hertz = wave;
header.timer = (1193180L / wave);
strncpy(header.memo, name, 254);
_dos_write(outFd, &header, sizeof(struct sound), &tmp);
while (part == SIZE) {
_dos_read(inFd, inPtr, (unsigned int)SIZE, &part);
header.nbValues += part;
_dos_write(outFd, inPtr, part, &tmp);
}
lseek(outFd, SEEK_SET, 0);
_dos_write(outFd, &header, sizeof(struct sound), &tmp);
_dos_close(inFd);
_dos_close(outFd);
hfree(inPtr);
}
main(int argc, char *argv[])
{
if (argc != 5) {
printf ("\nusage : convert <inFile> <hertz> <outFile> <name>\n");
printf (" inFile : name of source file\n");
printf (" hertz : frequency of source file\n");
printf (" outFile : name of converted file\n");
printf (" name : comment for converted file\n");
exit (1);
}
if (strlen(argv[4]) > 250) {
printf("Name is limited to 250 characters.\n");
exit (-1);
}
convertFile(argv[1], atoi(argv[2]), argv[3], argv[4]);
exit(1);
}