Click here to Skip to main content
15,889,335 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: c programing project on rejistration Pin
molesworth11-Jun-09 12:13
molesworth11-Jun-09 12:13 
AnswerRe: c programing project on rejistration Pin
Rajesh R Subramanian11-Jun-09 12:55
professionalRajesh R Subramanian11-Jun-09 12:55 
AnswerRe: c programing project on rejistration Pin
chirag_chauhan11-Jun-09 18:00
chirag_chauhan11-Jun-09 18:00 
QuestionReduce the noise in the program Pin
Nikhil_777711-Jun-09 11:27
Nikhil_777711-Jun-09 11:27 
AnswerRe: Reduce the noise in the program Pin
Nikhil_777711-Jun-09 11:28
Nikhil_777711-Jun-09 11:28 
AnswerRe: Reduce the noise in the program Pin
Michael Schubert12-Jun-09 0:00
Michael Schubert12-Jun-09 0:00 
GeneralRe: Reduce the noise in the program Pin
Nikhil_777712-Jun-09 4:31
Nikhil_777712-Jun-09 4:31 
GeneralRe: Reduce the noise in the program Pin
Nikhil_777712-Jun-09 5:00
Nikhil_777712-Jun-09 5:00 
<code>#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include "aviriff.h"
#include <iostream>
#include <mmsystem.h>
using namespace std;

//WAV format def

int sps = 22050; // sample per seconds
int channels = 1; //numbers of channels
int bits = 8; //Bit rate. Why does it not works with 16?
int wav_length_sec = 60; //Rec length (sec)

int WAVBUFFERLENGTH((channels * bits * sps * wav_length_sec)/8);
WAVEFORMATEX g_WavFmt = {0};

//Wave header length

int HEADERLENGTH (sizeof(RIFFLIST) + sizeof(RIFFCHUNK) + sizeof(WAVEFORMATEX) + sizeof(RIFFCHUNK));

void InitWavFmt(void)
{
g_WavFmt.wFormatTag = WAVE_FORMAT_PCM;
g_WavFmt.nChannels = 1;
g_WavFmt.nSamplesPerSec = 8000;
g_WavFmt.wBitsPerSample = 16;
g_WavFmt.nBlockAlign = g_WavFmt.nChannels * g_WavFmt.wBitsPerSample / 8;
g_WavFmt.nAvgBytesPerSec = g_WavFmt.nChannels * g_WavFmt.wBitsPerSample / 8 * g_WavFmt.nSamplesPerSec;
g_WavFmt.cbSize = 0;

/*g_WavFmt.wFormatTag = WAVE_FORMAT_PCM;
g_WavFmt.nChannels = channels;
g_WavFmt.nSamplesPerSec = sps;
g_WavFmt.wBitsPerSample = bits;
g_WavFmt.nBlockAlign = 1;
g_WavFmt.nAvgBytesPerSec = g_WavFmt.nChannels * g_WavFmt.wBitsPerSample / bits * g_WavFmt.nSamplesPerSec;*/
// g_WavFmt.nBlockAlign = g_WavFmt.nChannels * g_WavFmt.wBitsPerSample / 8;

// g_WavFmt.nAvgBytesPerSec = g_WavFmt.nChannels * g_WavFmt.wBitsPerSample / bits * g_WavFmt.nSamplesPerSec;

// g_WavFmt.nAvgBytesPerSec = g_WavFmt.nSamplesPerSec * g_WavFmt.nBlockAlign;

g_WavFmt.cbSize = 0;
}




char* AddWavHdr(char *pinBuffer, int inWavLength)
{
BYTE *pWavHdr = NULL;
RIFFLIST *pRiffWave = NULL;
RIFFCHUNK *pRiffFmt = NULL;
RIFFCHUNK *pRiffData = NULL;
char* outWavBuffer = NULL;
if (NULL == pinBuffer)
{
return NULL;
}
pWavHdr = new BYTE[HEADERLENGTH];
if ( NULL == pWavHdr)
{
return NULL;
}
else
{
memset(pWavHdr, 0, sizeof(BYTE) * HEADERLENGTH);
}
pRiffWave = (RIFFLIST*)pWavHdr;
pRiffFmt = (RIFFCHUNK*)(pRiffWave + 1);
pRiffData = (RIFFCHUNK*)(((BYTE*)(pRiffFmt + 1)) + sizeof(WAVEFORMATEX));
pRiffWave->fcc = FCC('RIFF');
pRiffWave->cb = inWavLength + HEADERLENGTH - sizeof(RIFFCHUNK);
pRiffWave->fccListType = FCC('WAVE');
pRiffFmt->fcc = FCC('fmt ');
pRiffFmt->cb = sizeof(WAVEFORMATEX);
pRiffData->fcc = FCC('data');
// pRiffData->cb = inWavLength;
memcpy(pRiffFmt + 1, &g_WavFmt, pRiffFmt->cb);
outWavBuffer = (char*)new BYTE[inWavLength+HEADERLENGTH];
if (NULL == outWavBuffer)
{
return NULL;
}
else
{
memset(outWavBuffer, 0, sizeof(BYTE) * (inWavLength + HEADERLENGTH));
}
memcpy(outWavBuffer, pWavHdr, sizeof(BYTE) * HEADERLENGTH);
memcpy(outWavBuffer + HEADERLENGTH, pinBuffer, (sizeof(BYTE) * inWavLength));
return outWavBuffer;
}


void main ()
{
HWAVEIN hWavIn;
WAVEHDR WavHdr;
char *pBuffer = NULL;
char *pWavBuffer = NULL;
MMRESULT ret;
FILE *fpPCMFile;
FILE *fpWavFile;
MMTIME MMTime = {0};
unsigned int numwritten = 0;
MMTime.wType = TIME_BYTES;
InitWavFmt();
cout << "NumDev = " << waveInGetNumDevs() << endl;
if ( waveInGetNumDevs()==0)
{
cout << "Audio device not found!\n";
exit(0);
}
ret = waveInOpen(&hWavIn, WAVE_MAPPER, &g_WavFmt, 0, 0, WAVE_FORMAT_QUERY);
if (MMSYSERR_NOERROR != ret)
{
cout << "Unsupported WAV format.\n";
exit(0);
}
ret = waveInOpen(&hWavIn, WAVE_MAPPER, &g_WavFmt, 0, 0, CALLBACK_NULL);
if (MMSYSERR_NOERROR != ret)
{
exit(0);
}
pBuffer = (char*)malloc(WAVBUFFERLENGTH);
if ( NULL != pBuffer)
{
memset(pBuffer, 0, WAVBUFFERLENGTH);
}
else
{
exit(0);
}
WavHdr.lpData = pBuffer;
WavHdr.dwBufferLength = WAVBUFFERLENGTH;
WavHdr.dwBytesRecorded = 0;
WavHdr.dwUser = 0;
WavHdr.dwFlags = 0;
WavHdr.dwLoops = 1;
WavHdr.lpNext = 0;
WavHdr.reserved = 0;
ret = waveInPrepareHeader(hWavIn,&WavHdr,sizeof(WAVEHDR));
// res=waveInPrepareHeader(hWaveIn,&WaveHeader,sizeof(WAVEHDR));
if (MMSYSERR_NOERROR != ret)
{
free(pBuffer);
exit(0);
}
ret = waveInAddBuffer(hWavIn,&WavHdr,sizeof(WAVEHDR));
if (MMSYSERR_NOERROR != ret)
{
free(pBuffer);
exit(0);
}
cout <<"Press any key to start recording...\n";
_getch();
cout << "Recording now\n";
ret = waveInStart(hWavIn);
if (MMSYSERR_NOERROR != ret)
{
free(pBuffer);
exit(0);
}
cout << "Press any key to stop Recording\n";
_getch();
waveInGetPosition(hWavIn, &MMTime, sizeof(MMTime));
waveInReset(hWavIn);
// cout << "sizeof MMTime = " << sizeof(MMTime) << endl;
waveInUnprepareHeader(hWavIn,&WavHdr,sizeof(WAVEHDR));
waveInClose(hWavIn);
/*fpPCMFile = fopen("pcm","w");
if (NULL == fpPCMFile)
{
cout <<"Creating PCM file failed\n";
free(pBuffer);
exit(0);
}
numwritten = fwrite(pBuffer, sizeof(char), MMTime.u.cb, fpPCMFile);
cout <<"Recording done, %d bytes recorded, %d bytes written: " << MMTime.u.cb << endl << " numwritten: " << numwritten;
fclose(fpPCMFile);*/
pWavBuffer = AddWavHdr(pBuffer, MMTime.u.cb);
if ( NULL == pWavBuffer)
{
cout <<"Add header failed\n";
}
else
{
fpWavFile = fopen("testfile.wav", "w");
if (NULL == fpWavFile)
{
cout <<"Creating WAV file failed\n";
}
else
{
numwritten = fwrite(pWavBuffer, sizeof(char), sizeof(BYTE) * (HEADERLENGTH + MMTime.u.cb), fpWavFile);
// cout <<"%d bytes of WAV file written\n", numwritten;
fclose(fpWavFile);
free(pWavBuffer);
}
}



free(pBuffer);
_getch();
return;
}



here is the code. May be someone can give me directions.

Thanks
QuestionExecuting an Oracle Query from C++ using OLEDB Pin
JaeBeam11-Jun-09 10:44
JaeBeam11-Jun-09 10:44 
AnswerRe: Executing an Oracle Query from C++ using OLEDB Pin
led mike11-Jun-09 10:57
led mike11-Jun-09 10:57 
AnswerRe: Executing an Oracle Query from C++ using OLEDB Pin
Ozer Karaagac11-Jun-09 13:26
professionalOzer Karaagac11-Jun-09 13:26 
QuestionIs there an easy way to change "... text ..." to _T("... text ...") for whole project? [modified] Pin
transoft11-Jun-09 9:32
transoft11-Jun-09 9:32 
AnswerRe: Is there an easy way to change "... text ..." to _T("... text ...") for whole project? PinPopular
Randor 11-Jun-09 10:24
professional Randor 11-Jun-09 10:24 
GeneralThank you very much, Pin
transoft11-Jun-09 10:37
transoft11-Jun-09 10:37 
GeneralRe: Is there an easy way to change "... text ..." to _T("... text ...") for whole project? Pin
Rajesh R Subramanian11-Jun-09 10:45
professionalRajesh R Subramanian11-Jun-09 10:45 
QuestionProblem with sending keystroke to game. [modified] Pin
dirwir11-Jun-09 9:26
dirwir11-Jun-09 9:26 
AnswerRe: Problem with sending keystroke to game. Pin
Rajesh R Subramanian11-Jun-09 10:21
professionalRajesh R Subramanian11-Jun-09 10:21 
GeneralRe: Problem with sending keystroke to game. Pin
dirwir11-Jun-09 13:05
dirwir11-Jun-09 13:05 
Questioncreating a linked list Pin
steve_rm11-Jun-09 7:18
steve_rm11-Jun-09 7:18 
AnswerRe: creating a linked list Pin
Maximilien11-Jun-09 7:59
Maximilien11-Jun-09 7:59 
AnswerRe: creating a linked list Pin
David Crow11-Jun-09 8:26
David Crow11-Jun-09 8:26 
QuestionRe: creating a linked list Pin
steve_rm11-Jun-09 16:30
steve_rm11-Jun-09 16:30 
AnswerRe: creating a linked list Pin
David Crow12-Jun-09 3:29
David Crow12-Jun-09 3:29 
QuestionRe: creating a linked list Pin
led mike11-Jun-09 8:28
led mike11-Jun-09 8:28 
AnswerRe: creating a linked list Pin
steve_rm11-Jun-09 16:35
steve_rm11-Jun-09 16:35 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.