1
/*******************************************/
2
/* RawWvOut Output Class */
3
/* by Gary P. Scavone, 1999 */
5
/* This object spits samples into a raw */
6
/* 16-bit data (signed integer) file. */
8
/* STK RawWave files are assumed to be */
9
/* monaural and big-endian. */
10
/*******************************************/
13
#ifdef __LITTLE_ENDIAN__
17
RawWvOut :: RawWvOut(char *fileName, int chans)
23
sprintf(msg, "RawWvOut: STK rawwave files are always monaural (channels = %d not supported)!\n", chans);
24
throw StkError(msg, StkError::FUNCTION_SYNTAX);
27
strcpy(tempName,fileName);
28
if (strstr(tempName,".raw") == NULL) strcat(tempName,".raw");
29
fd = fopen(tempName,"wb");
31
sprintf(msg, "RawWvOut: Could not create soundfile: %s\n", tempName);
32
throw StkError(msg, StkError::FILE_ERROR);
34
printf("\nCreating soundfile: %s\n", tempName);
35
data_length = FILE_BUFFER_SIZE*channels;
36
data = (INT16 *) new INT16[data_length];
39
RawWvOut :: ~RawWvOut()
43
fwrite(data,2,counter,fd);
44
temp = (double) totalCount * ONE_OVER_SRATE;
45
printf("%f Seconds Computed\n\n", temp);
49
void RawWvOut :: tick(MY_FLOAT sample)
51
data[counter] = (INT16) (sample * 32000.0);
52
#ifdef __LITTLE_ENDIAN__
53
swap16 ((unsigned char *)&data[counter]);
58
if (counter == data_length) {
59
fwrite(data,2,data_length,fd);
64
void RawWvOut :: mtick(MY_MULTI samples)
66
data[counter] = (INT16) (*samples * 32000.0);
67
#ifdef __LITTLE_ENDIAN__
68
swap16 ((unsigned char *)&data[counter]);
73
if (counter == data_length) {
74
fwrite(data,2,data_length,fd);