#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct head
{
	char ChunkID[4];
	long int ChunkSize;
	char Format[4];

	char SubChunkID[4];
	long int SubChunkSize;
	short int AudioFormat;
	short int NumChannels;
	long int SampleRate;
	long int BytesRate;
	short int  BlockAlign;
	short int BitsPerSample;

	char SubChunk2ID[4];
	long int SubChunk2Size;
}head;

void put_it(char * ptr, int size)
{
	char * dest = (char*) ptr;
	int i;
	for (i=0;i<size;i++)
	{
		putchar(*(dest+i));
	} 
}

void print_head()
{
	printf(head.ChunkID);
	printf("\n%d\n",head.ChunkSize);
	printf(head.Format);
	printf("\n");
	printf(head.SubChunkID);
	printf("\n");
	printf("%d\n",head.SubChunkSize);
	printf("%d\n",head.AudioFormat);
	printf("%d\n",head.NumChannels);
	printf("%d\n",head.SampleRate);
	printf("%d\n",head.BytesRate);
	printf("%d\n",head.BlockAlign);
	printf("%d\n",head.BitsPerSample);
	printf(head.SubChunk2ID);
	printf("\n%d\n",head.SubChunk2Size);
}

int format = 8;

int main(int argc, char * argv[])
{
	if (argc == 2)
	{
		if (atoi(argv[1]) == 16)
		{
			format = 16;
		}
	}
	head.BitsPerSample = format;

	char word[20];
	int wc = 0;
	
	int cur_chan = 1;
	int cur_samp = 0;
	int cur_sec = 0;
	
	char c;
	while (c != EOF)
	{
		c = getchar();
		if (c != '_')
		{
			if ((c != EOF)&&(c != '\n')&&(c != ' ')&&(c != ':'))
			{
				word[wc] = c;
				wc++;	
			}		
			else
			{
				double pitch = atof(word);
				int teger;
				if (format == 8)
				{
					signed char vol = (signed char)(127-(pitch*127));
					putchar(vol);
				}
				if (format == 16)
				{
					signed char low = (signed char)((pitch*32767));
					signed char hi = (signed char)((pitch*127));
					putchar(low);
					putchar(hi); 
				}

				//clear the string
				for (wc = 0;wc < 20; wc++)
				{
					word[wc] = ' ';
				}	
				wc = 0;	
			}
		}
		else
		{
			c = EOF;
		}
	}
	
	
	
	return 0;
}
