Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Game::Load_Wave_File(char *fname)
- {
- FILE *fp;
- fp = fopen(fname,"rb");
- if (fp)
- {
- char id[4], *sound_buffer; //four chars to hold 'RIFF'
- for(int i = 0; i < 4; i++)
- id[i] = '\0';
- DWORD size; //32 bit value to hold file size
- short format_tag, channels, block_align, bits_per_sample; //our 16 values
- DWORD format_length, sample_rate, avg_chars_sec, data_size, i; //our 32 bit values
- fread(id, sizeof(char), 4, fp); //read in first four chars
- //int n =memcmp((char*)id, "RIFF",4);
- //if (!strncmp( (char*)id, "RIFF", 4 ))
- if(!strncmp(id, "RIFF",4))
- { //we had 'RIFF' let's continue
- fread(&size, sizeof(DWORD), 1, fp); //read in 32bit size value
- fread(id, sizeof(char), 4, fp); //read in 4 char string now
- if (!strncmp((char*)id,"WAVE",4))
- { //this is probably a wave file since it contained "WAVE"
- fread(id, sizeof(char), 4, fp); //read in 4 chars "fmt ";
- fread(&format_length, sizeof(DWORD),1,fp);
- fread(&format_tag, sizeof(short), 1, fp); //check mmreg.h (i think?) for other
- // possible format tags like ADPCM
- fread(&channels, sizeof(short),1,fp); //1 mono, 2 stereo
- fread(&sample_rate, sizeof(DWORD), 1, fp); //like 44100, 22050, etc...
- fread(&avg_chars_sec, sizeof(short), 1, fp); //probably won't need this
- fread(&block_align, sizeof(short), 1, fp); //probably won't need this
- fread(&bits_per_sample, sizeof(short), 1, fp); //8 bit or 16 bit file?
- fread(id, sizeof(char), 4, fp); //read in 'data'
- fread(&data_size, sizeof(DWORD), 1, fp); //how many chars of sound data we have
- sound_buffer = ((char *) malloc (sizeof(char) * data_size)); //set aside sound buffer space
- fread(sound_buffer, sizeof(char), data_size, fp); //read in our whole sound data chunk
- }
- else
- printf("Error: RIFF file but not a wave file\n");
- }
- else
- printf("Error: not a RIFF file\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement