2 #include "CInputWave.h"
11 ////////////////////////////////////////////////////////////////////////////////
12 //
\83R
\83\93\83X
\83g
\83\89\83N
\83^
13 ////////////////////////////////////////////////////////////////////////////////
14 CInputWave::CInputWave()
16 // Wave
\83f
\83o
\83C
\83X
\83n
\83\93\83h
\83\8b
19 // Wave
\83w
\83b
\83_
\81[
20 m_WaveHeader.lpData = NULL;
21 m_WaveHeader.dwBufferLength = 0;
22 m_WaveHeader.dwFlags = 0;
26 //
\83f
\83o
\83C
\83X
\82ð
\83I
\81[
\83v
\83\93\82µ
\82Ä
\82¢
\82é
32 ////////////////////////////////////////////////////////////////////////////////
33 //
\83f
\83X
\83g
\83\89\83N
\83^
34 ////////////////////////////////////////////////////////////////////////////////
35 CInputWave::~CInputWave()
41 ////////////////////////////////////////////////////////////////////////////////
42 //
\93ü
\97Í
\83f
\83o
\83C
\83X
\82Ì
\8fó
\91Ô
\82ð
\92m
\82ç
\82¹
\82é
\83R
\81[
\83\8b\83o
\83b
\83N
\8aÖ
\90\94
43 ////////////////////////////////////////////////////////////////////////////////
44 void CALLBACK CInputWave::waveInProc(HWAVEIN in_hWaveIn, UINT in_Message, DWORD in_Instance, DWORD in_Param1, DWORD in_Param2)
46 // waveInOpen
\8e\9e\82Éin_Instance
\82É
\83N
\83\89\83X
\82Ì
\83|
\83C
\83\93\83^
\82ð
\8ai
\94[
\82µ
\82Ä
\82¨
\82
48 CInputWave* a_pInputWave = reinterpret_cast<CInputWave*>(in_Instance);
49 a_pInputWave->procedureWave(in_hWaveIn, in_Message, in_Instance, in_Param1, in_Param2);
52 ////////////////////////////////////////////////////////////////////////////////
54 ////////////////////////////////////////////////////////////////////////////////
55 void CInputWave::initialize()
59 ////////////////////////////////////////////////////////////////////////////////
60 //
\83f
\83o
\83C
\83X
\82ð
\8aJ
\82
61 ////////////////////////////////////////////////////////////////////////////////
62 bool CInputWave::open()
64 //
\98A
\91±
\82Å
\8dÄ
\90¶
\82·
\82é
\8fê
\8d\87\82Í
\83_
\83u
\83\8b\83o
\83b
\83t
\83@
\82ð
\8eg
\97p
\82·
\82é
\81H
66 //
\83f
\83o
\83C
\83X
\82ð
\8aJ
\82
67 //
\8aJ
\82
\83f
\83o
\83C
\83X
\82à
\88ø
\90\94\82Å
\8ew
\92è
\82Å
\82«
\82é
\82æ
\82¤
\82É
\82·
\82é
68 if(waveInOpen(&m_hWaveIn, WAVE_MAPPER, m_pWaveData->getWaveFormat(), reinterpret_cast<DWORD>(waveInProc), reinterpret_cast<DWORD>(this), CALLBACK_FUNCTION) != MMSYSERR_NOERROR) {
69 //MessageBox(NULL, TEXT("WAVE
\83f
\83o
\83C
\83X
\82Ì
\83I
\81[
\83v
\83\93\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B"), NULL, MB_ICONWARNING);
70 throw "WAVE
\83f
\83o
\83C
\83X
\82Ì
\83I
\81[
\83v
\83\93\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B";
74 // Wave
\83w
\83b
\83_
\81[
75 m_WaveHeader.lpData = m_pWaveData->getWaveBuffer();
76 m_WaveHeader.dwBufferLength = m_pWaveData->getBufferSize();
77 m_WaveHeader.dwFlags = 0;
79 if(m_WaveHeader.lpData == NULL){
83 //
\83w
\83b
\83_
\81[
\82ð
\8f\80\94õ
\82·
\82é
84 waveInPrepareHeader(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR));
85 //
\83o
\83b
\83t
\83@
\82ð
\93n
\82·
86 waveInAddBuffer(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR));
92 ////////////////////////////////////////////////////////////////////////////////
93 //
\83f
\83o
\83C
\83X
\82ð
\95Â
\82¶
\82é
94 ////////////////////////////////////////////////////////////////////////////////
95 bool CInputWave::close()
101 //
\83w
\83b
\83_
\81[
\89ð
\95ú
\97p
\8aÖ
\90\94
102 waveInUnprepareHeader(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR));
103 //
\83f
\83o
\83C
\83X
\83N
\83\8d\81[
\83Y
\8aÖ
\90\94
104 waveInClose(m_hWaveIn);
109 ////////////////////////////////////////////////////////////////////////////////
110 //
\93ü
\97Í
\81i
\98^
\89¹
\81j
\82ð
\8aJ
\8en
\82·
\82é
111 ////////////////////////////////////////////////////////////////////////////////
112 bool CInputWave::start()
114 //
\83f
\83o
\83C
\83X
\82ð
\8aJ
\82¢
\82Ä
\82¢
\82È
\82¢
\82©
\81A
\98^
\89¹
\92\86\82È
\82çfalse
\82ð
\95Ô
\82·
115 if(!m_isOpen || m_isInput){
119 //
\83o
\83b
\83t
\83@
\82ð
\8dÄ
\82Ñ
\93n
\82³
\82È
\82¢
\82Æ
\90V
\82½
\82É
\98^
\89¹
\82Å
\82«
\82È
\82¢
\82ç
\82µ
\82¢
120 //
\83w
\83b
\83_
\81[
\82ð
\8f\80\94õ
\82·
\82é
121 switch(waveInPrepareHeader(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR))){
123 case MMSYSERR_NOERROR:
126 //
\95Ê
\82Ì
\83X
\83\8c\83b
\83h
\82ª
\83n
\83\93\83h
\83\8b\82ð
\8eg
\97p
\92\86\82Å
\82 \82é
127 case MMSYSERR_HANDLEBUSY:
128 throw "waveInPrepareHeader:
\95Ê
\82Ì
\83X
\83\8c\83b
\83h
\82ª
\83n
\83\93\83h
\83\8b\82ð
\8eg
\97p
\92\86\82Å
\82 \82é ";
130 //
\83f
\83o
\83C
\83X
\83n
\83\93\83h
\83\8b\82ª
\96³
\8cø
\82Å
\82 \82é
131 case MMSYSERR_INVALHANDLE:
132 throw "waveInPrepareHeader:
\83f
\83o
\83C
\83X
\83n
\83\93\83h
\83\8b\82ª
\96³
\8cø
\82Å
\82 \82é";
134 //
\83f
\83o
\83C
\83X
\83h
\83\89\83C
\83o
\82ª
\82È
\82¢
135 case MMSYSERR_NODRIVER:
136 throw "waveInPrepareHeader:
\83f
\83o
\83C
\83X
\83h
\83\89\83C
\83o
\82ª
\82È
\82¢";
138 //
\83\81\83\82\83\8a\82ð
\8a\84\82è
\93\96\82Ä
\82ç
\82ê
\82È
\82¢
\81A
\82Ü
\82½
\82Í
\83\8d\83b
\83N
\82Å
\82«
\82È
\82¢
140 throw "waveInPrepareHeader:
\83\81\83\82\83\8a\82ð
\8a\84\82è
\93\96\82Ä
\82ç
\82ê
\82È
\82¢
\81A
\82Ü
\82½
\82Í
\83\8d\83b
\83N
\82Å
\82«
\82È
\82¢";
144 //
\83o
\83b
\83t
\83@
\82ð
\93n
\82·
145 switch(waveInAddBuffer(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR))){
147 case MMSYSERR_NOERROR:
150 //
\95Ê
\82Ì
\83X
\83\8c\83b
\83h
\82ª
\83n
\83\93\83h
\83\8b\82ð
\8eg
\97p
\92\86\82Å
\82 \82é
151 case MMSYSERR_HANDLEBUSY:
152 throw "waveInAddBuffer:
\95Ê
\82Ì
\83X
\83\8c\83b
\83h
\82ª
\83n
\83\93\83h
\83\8b\82ð
\8eg
\97p
\92\86\82Å
\82 \82é";
155 //
\83f
\83o
\83C
\83X
\83n
\83\93\83h
\83\8b\82ª
\96³
\8cø
\82Å
\82 \82é
156 case MMSYSERR_INVALHANDLE:
157 throw "waveInAddBuffer:
\83f
\83o
\83C
\83X
\83n
\83\93\83h
\83\8b\82ª
\96³
\8cø
\82Å
\82 \82é";
160 //
\83f
\83o
\83C
\83X
\83h
\83\89\83C
\83o
\82ª
\82È
\82¢
161 case MMSYSERR_NODRIVER:
162 throw "waveInAddBuffer:
\83f
\83o
\83C
\83X
\83h
\83\89\83C
\83o
\82ª
\82È
\82¢";
165 //
\83\81\83\82\83\8a\82ð
\8a\84\82è
\93\96\82Ä
\82ç
\82ê
\82È
\82¢
\81A
\82Ü
\82½
\82Í
\83\8d\83b
\83N
\82Å
\82«
\82È
\82¢
167 throw "waveInAddBuffer:
\83\81\83\82\83\8a\82ð
\8a\84\82è
\93\96\82Ä
\82ç
\82ê
\82È
\82¢
\81A
\82Ü
\82½
\82Í
\83\8d\83b
\83N
\82Å
\82«
\82È
\82¢";
170 //
\83o
\83b
\83t
\83@
\82ª
\8f\80\94õ
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
171 case WAVERR_UNPREPARED:
172 throw "waveInAddBuffer:
\83o
\83b
\83t
\83@
\82ª
\8f\80\94õ
\82³
\82ê
\82Ä
\82¢
\82È
\82¢";
177 waveInStart(m_hWaveIn);
182 ////////////////////////////////////////////////////////////////////////////////
183 //
\93ü
\97Í
\81i
\98^
\89¹
\81j
\82ð
\92â
\8e~
\82·
\82é
184 ////////////////////////////////////////////////////////////////////////////////
185 bool CInputWave::stop()
187 //
\98^
\89¹
\92\86\82Å
\82È
\82¢
\82È
\82çfalse
\82ð
\95Ô
\82·
193 waveInStop(m_hWaveIn);
199 ////////////////////////////////////////////////////////////////////////////////
200 //
\93ü
\97Í
\83f
\83o
\83C
\83X
\82Ì
\8fó
\91Ô
\82ð
\92m
\82ç
\82¹
\82é
\83R
\81[
\83\8b\83o
\83b
\83N
\8aÖ
\90\94
201 ////////////////////////////////////////////////////////////////////////////////
202 void CInputWave::procedureWave(HWAVEIN in_hWaveIn, UINT in_Message, DWORD in_Instance, DWORD in_Param1, DWORD in_Param2)
204 //
\83\81\83b
\83Z
\81[
\83W
\82Ì
\8eí
\97Þ
\82²
\82Æ
\82Ì
\8f\88\97\9d\82ð
\8ds
\82¤
206 //
\83f
\83o
\83C
\83X
\82ª waveInClose
\8aÖ
\90\94\82Å
\83N
\83\8d\81[
\83Y
\82³
\82ê
\82½
\82Æ
\82«
\82É
\91\97\90M
\82³
\82ê
\82Ü
\82·
\81B
208 std::cout << "WIM_CLOSE" << std::endl;
210 //
\83f
\83o
\83C
\83X
\82ª
\81AwaveInAddBuffer
\8aÖ
\90\94\82Å
\91\97\90M
\82³
\82ê
\82½
\83f
\81[
\83^
\83u
\83\8d\83b
\83N
\82Ì
\8f\88\97\9d\82ð
\8fI
\97¹
\82µ
\82½
\82Æ
\82«
\82É
\91\97\90M
\82³
\82ê
\82Ü
\82·
\81B
213 std::cout << "WIM_DATA" << std::endl;
215 //
\83f
\83o
\83C
\83X
\82ª waveInOpen
\8aÖ
\90\94\82Å
\83I
\81[
\83v
\83\93\82³
\82ê
\82½
\82Æ
\82«
\82É
\91\97\90M
\82³
\82ê
\82Ü
\82·
\81B
217 std::cout << "WIM_OPEN" << std::endl;
220 throw "error: WAVE Call Back";