Frequenzen erkennen



  • Jetzt habe ich nur noch ein Problem und zwar: in dem Array stehen keine Zahlen von 0-256 sonder sehr große und sehr kleine auch negative Zahlen.



  • erst nach dem casten? und wenn du Zahlen zw. 0 und 255 willst solltest du für pBuff unsigned char verwenden 🙂



  • Wenn ich mit Hilfe einer Timernachricht alle 25 oder 50 ms den Puffer fülle gibt es immer eine kleine Unterbrechung des Sound wie kann ich das denn verhindern ? Ich mal irgendwas mit einem Thread gesehen weiß aber nicht wie genau ich das anstellen muss das es auch wirklich funktioniert.



  • Hallo ! Wenn ich mir den Puffer so füllen lasse dann höre ich gar nichts mehr !
    Was ist ist denn da nur falsch ? Ich werde bald verrückt.

    #define SAMPLERATE 44100
    
    VOID PrepareAnalyzer()
    {
    	MMRESULT mmR;
    
    	lpWaveFormatEx.cbSize         =0;
    	lpWaveFormatEx.nAvgBytesPerSec=SAMPLERATE*2;
    	lpWaveFormatEx.nBlockAlign    =2;
    	lpWaveFormatEx.nChannels	  =1;
    	lpWaveFormatEx.nSamplesPerSec =SAMPLERATE;
    	lpWaveFormatEx.wBitsPerSample =16;
    	lpWaveFormatEx.wFormatTag     =WAVE_FORMAT_PCM;
    
    	mmR=waveInOpen(&hWaveIn,WAVE_MAPPER,&lpWaveFormatEx,(DWORD)g_hWnd,0L,CALLBACK_WINDOW);
    	CHECK_MMR(mmR);
    
    	lpWaveHdr.dwBufferLength=WAVEDATA;
    	lpWaveHdr.dwBytesRecorded=0;
    	lpWaveHdr.dwFlags=0L;
    	lpWaveHdr.dwLoops=0L;
    	lpWaveHdr.dwUser=0L;
    	lpWaveHdr.lpData=(LPSTR)chWaveData;
    
    	mmR=waveInPrepareHeader(hWaveIn,&lpWaveHdr,sizeof(WAVEHDR));
    	CHECK_MMR(mmR);
    
    	mmR=waveInAddBuffer(hWaveIn,&lpWaveHdr,sizeof(WAVEHDR));
    	CHECK_MMR(mmR);
    }
    
    VOID GetAudioData()
    {
    	MMRESULT mmR;
    
    	mmR=waveInStart(hWaveIn);
    	CHECK_MMR(mmR);
    }
    
    VOID CloseAnalyzer()
    {
    	if(hWaveIn!=NULL)
    	{
            waveInUnprepareHeader(hWaveIn,&lpWaveHdr,sizeof(WAVEHDR));
    		waveInReset(hWaveIn);
    		waveInClose(hWaveIn);
    	}
    }
    
    LRESULT CALLBACK WindowProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    	switch(msg)
    	{
    	case WM_COMMAND:
    		{
    			switch(LOWORD(wParam))
    			{
    			case BTN_GETAUDIODATA:
    				{
    					GetAudioData();
    					return 0;
    				}
                                    return 0;
                            }
    		}
    	case WM_DESTROY:
    		{
    			CloseAnalyzer();
    
    			return 0;
    		}
    	case MM_WIM_DATA:
    		{
    			waveInAddBuffer(hWaveIn,&lpWaveHdr,sizeof(WAVEHDR));
    
    			return 0;
    		}
    	}
    
    	return DefWindowProc(hWnd,msg,wParam,lParam);
    }
    


  • Kommen die Nachrichten denn an? Und sind hWaveIn und lpWaveHdr dort gültig?



  • Ja ich komme an den Puffer ran es ist auch alles gültig nur der Sound kommt nicht.


Anmelden zum Antworten