2013-02-11 10 views
1

간단한 레코드를 구현하고 WAV 파일을 재생하고 녹음 할 수있는 응용 프로그램을 재생합니다.Windows 7에서 녹음하는 동안 마이크 사운드 레벨 가져 오기

1) 윈도우 7, 비주얼 스튜디오 2010 (또는 2012), C#을
2) 기록, 사양 정보와 WAV 파일을 재생가 : 22,050, 모노 samplerate
3 16 bitspersample), 다음과 같이
요구 사항은

1로

)과 (2)를 기록하면서 3

[DllImport("winmm.dll")] 
private static extern long mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); 

// Open file to play 
public void open(string file) 
{ 
    string command = "open \"" + file + "\" type waveaudio alias MyWav"; 
    mciSendString(command, null, 0, 0); 
} 

// Start playing 
public void play() 
{ 
    string command = "play MyWav"; 
    mciSendString(command, null, 0, 0); 
} 

// Stop playing 
public void stop() 
{ 
    string command = "stop MyWav"; 
    mciSendString(command, null, 0, 0); 

    command = "close MyWav"; 
    mciSendString(command, null, 0, 0); 
} 

// Start recording 
public void record() 
{ 
    string command = "open new Type waveaudio Alias MyRec"; 
    mciSendString(command, "", 0, 0); 

    command = "set capture time format ms bitspersample 16 channels 1 samplespersec 22050 alignment 4"; 
    mciSendString(command, "", 0, 0); 

    command = "record MyRec"; 
    mciSendString(command, "", 0, 0); 
} 

// Stop recording 
public void stoprec() 
{ 
    string fileName = @"""D:\Rec1.wav"""; 

    string command = "stop MyRec"; 
    mciSendString(command, "", 0, 0); 

    command = @"save MyRec " + fileName; 

    Debug.WriteLine(command); 
    mciSendString(command, "", 0, 0); 

    command = "close MyRec"; 
    mciSendString(command, "", 0, 0); 
} 

다음과 같이, I는 I도 사용할))를 LIB (winmm.dll) 및 mciSendString을 (사용) 마이크로 사운드 레벨을 표시 할 mciSendString. 다음 명령 (상태)을 찾았습니다.

string command = "status MyRec level "; 
long mci_ret = mciSendString(command, "", 0, 0); 

위의 명령에서 볼륨을 얻는 방법을 모르겠지만 아무에게도 말할 수 있습니까?

참조 : mciSendString에서 상태 명령은() 마이크로 소프트의 문서에서 발견된다 : 는 http://msdn.microsoft.com/en-us/library/windows/desktop/dd798683%28v=vs.85%29.aspx
은 말한다 : 수준 : 현재 PCM 오디오 샘플 값을 돌려줍니다.

+0

[비스타 코어 오디오 API 마스터 볼륨 컨트롤 (HTTP CodeProject의에 어떤 좋은 articales 있습니다 //www.codeproject가. co.kr/Articles/18520/Vista-Core-Audio-API-Master-Volume-Control? fid = 410669 & fr = 126 # xx0xx) – sees

+0

또는 [Visual C++에서 마스터 볼륨 변경] (http://www.codeproject.com/Tips)/233484/변경 - 마스터 - 볼륨 - 비주얼 - Cplusplus) – sees

답변

0

나는 녹음/재생 (track1)과 레벨 (waveLevel)을 얻는 두 개의 장치를 열어 레벨을 모니터링합니다. 아래는 foxpro입니다.

* OPEN WAVE DEVICE FOR LEVEL READINGS 
= mciSendString("open new type waveaudio alias waveLevel", '0&', 0, 0) 

* START RECORDING 
= mciSendString("open new type waveaudio alias track1", '0&', 0, 0) 

는 내가 waveLevel 장치를 사용 TRACK (트랙)의 레벨을 얻을 수

= mciSendString("status waveLevel level", @cBuff, LEN(cBuff) ,0) 
+0

조언 주셔서 감사합니다. 나는 내 작업을 위해 NAudio를 사용하게된다. 모든 코드를 읽고 올바른 방법을 찾으십시오. Windows 7 및 8 (Professional, Enterprise, Home Premium, .etc와 같은 일부 버전에서 확인) – sees