OSDN Git Service

run loop input wave
authorBreak <t_windbreak@yahoo.co.jp>
Sat, 12 Jun 2010 14:52:29 +0000 (23:52 +0900)
committerBreak <t_windbreak@yahoo.co.jp>
Sat, 12 Jun 2010 14:52:29 +0000 (23:52 +0900)
source/CInputWave.cpp
source/COutputWave.cpp
source/COutputWave.h
source/main.cpp

index 6b59252..aba1511 100644 (file)
@@ -111,11 +111,69 @@ bool CInputWave::close()
 ////////////////////////////////////////////////////////////////////////////////
 bool CInputWave::start()
 {
-       // \83f\83o\83C\83X\82ð\8aJ\82¢\82Ä\82¢\82é\82©\81A\98^\89¹\92\86\82È\82çfalse\82ð\95Ô\82·
+       // \83f\83o\83C\83X\82ð\8aJ\82¢\82Ä\82¢\82È\82¢\82©\81A\98^\89¹\92\86\82È\82çfalse\82ð\95Ô\82·
        if(!m_isOpen || m_isInput){
                return false;
        }
 
+       // \83o\83b\83t\83@\82ð\8dÄ\82Ñ\93n\82³\82È\82¢\82Æ\90V\82½\82É\98^\89¹\82Å\82«\82È\82¢\82ç\82µ\82¢
+       // \83w\83b\83_\81[\82ð\8f\80\94õ\82·\82é
+       switch(waveInPrepareHeader(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR))){
+       // \90¬\8c÷
+       case MMSYSERR_NOERROR:
+               break;
+
+       // \95Ê\82Ì\83X\83\8c\83b\83h\82ª\83n\83\93\83h\83\8b\82ð\8eg\97p\92\86\82Å\82 \82é
+       case MMSYSERR_HANDLEBUSY:
+               throw "waveInPrepareHeader: \95Ê\82Ì\83X\83\8c\83b\83h\82ª\83n\83\93\83h\83\8b\82ð\8eg\97p\92\86\82Å\82 \82é ";
+               break;
+       // \83f\83o\83C\83X\83n\83\93\83h\83\8b\82ª\96³\8cø\82Å\82 \82é
+       case MMSYSERR_INVALHANDLE:
+               throw "waveInPrepareHeader: \83f\83o\83C\83X\83n\83\93\83h\83\8b\82ª\96³\8cø\82Å\82 \82é";
+               break;
+       // \83f\83o\83C\83X\83h\83\89\83C\83o\82ª\82È\82¢
+       case MMSYSERR_NODRIVER:
+               throw "waveInPrepareHeader:\83f\83o\83C\83X\83h\83\89\83C\83o\82ª\82È\82¢";
+               break;
+       // \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¢
+       case MMSYSERR_NOMEM:
+               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¢";
+               break;
+       }
+
+       // \83o\83b\83t\83@\82ð\93n\82·
+       switch(waveInAddBuffer(m_hWaveIn, &m_WaveHeader, sizeof(WAVEHDR))){
+       // \90¬\8c÷
+       case MMSYSERR_NOERROR:
+               break;
+
+       // \95Ê\82Ì\83X\83\8c\83b\83h\82ª\83n\83\93\83h\83\8b\82ð\8eg\97p\92\86\82Å\82 \82é
+       case MMSYSERR_HANDLEBUSY:
+               throw "waveInAddBuffer: \95Ê\82Ì\83X\83\8c\83b\83h\82ª\83n\83\93\83h\83\8b\82ð\8eg\97p\92\86\82Å\82 \82é";
+               break;
+
+       // \83f\83o\83C\83X\83n\83\93\83h\83\8b\82ª\96³\8cø\82Å\82 \82é
+       case MMSYSERR_INVALHANDLE:
+               throw "waveInAddBuffer: \83f\83o\83C\83X\83n\83\93\83h\83\8b\82ª\96³\8cø\82Å\82 \82é";
+               break;
+
+       // \83f\83o\83C\83X\83h\83\89\83C\83o\82ª\82È\82¢
+       case MMSYSERR_NODRIVER:
+               throw "waveInAddBuffer: \83f\83o\83C\83X\83h\83\89\83C\83o\82ª\82È\82¢";
+               break;
+
+       // \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¢
+       case MMSYSERR_NOMEM:
+               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¢";
+               break;
+
+       // \83o\83b\83t\83@\82ª\8f\80\94õ\82³\82ê\82Ä\82¢\82È\82¢
+       case WAVERR_UNPREPARED:
+               throw "waveInAddBuffer: \83o\83b\83t\83@\82ª\8f\80\94õ\82³\82ê\82Ä\82¢\82È\82¢";
+               break;
+
+       }
+
        waveInStart(m_hWaveIn);
        m_isInput = true;
        return true;
@@ -134,6 +192,7 @@ bool CInputWave::stop()
        m_isInput = false;
        waveInStop(m_hWaveIn);
 
+
        return true;
 }
 
index 124ff54..4691d15 100644 (file)
@@ -85,13 +85,6 @@ bool COutputWave::open()
        waveOutPrepareHeader(m_hWaveOut, &m_WaveHeader, sizeof(WAVEHDR));
        m_isOpen = true;
 
-
-       // \82±\82±\82©\82ç\95Ê\8aÖ\90\94\82É\82·\82é
-
-       // \8fo\97Í\81i\8dÄ\90\81j\82ð\8aJ\8en\82·\82é
-       waveOutWrite(m_hWaveOut, &m_WaveHeader, sizeof(WAVEHDR));
-       m_isOutput = true;
-
        return true;
 }
 
@@ -100,12 +93,6 @@ bool COutputWave::open()
 ////////////////////////////////////////////////////////////////////////////////
 bool COutputWave::close()
 {
-       if(m_isOutput){
-               m_isOutput = false;
-               // \92\86\92f\97p\8aÖ\90\94
-               waveOutReset(m_hWaveOut);
-       }
-
        if(m_isOpen){
                m_isOpen = false;
                // \83w\83b\83_\81[\89ð\95ú\97p\8aÖ\90\94
@@ -116,6 +103,38 @@ bool COutputWave::close()
        return true;
 }
 
+////////////////////////////////////////////////////////////////////////////////
+// \8fo\97Í\81i\8dÄ\90\81j\82ð\8aJ\8en\82·\82é
+////////////////////////////////////////////////////////////////////////////////
+bool COutputWave::start()
+{
+       // \83f\83o\83C\83X\82ð\8aJ\82¢\82Ä\82¢\82È\82¢\82©\81A\8dÄ\90\92\86\82È\82çfalse\82ð\95Ô\82·
+       if(!m_isOpen || m_isOutput){
+               return false;
+       }
+
+       // \8fo\97Í\81i\8dÄ\90\81j\82ð\8aJ\8en\82·\82é
+       waveOutWrite(m_hWaveOut, &m_WaveHeader, sizeof(WAVEHDR));
+       m_isOutput = true;
+
+       return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// \8fo\97Í\81i\8dÄ\90\81j\82ð\92â\8e~\82·\82é
+////////////////////////////////////////////////////////////////////////////////
+bool COutputWave::stop()
+{
+       // \8dÄ\90\92\86\82Å\82È\82¢\8fê\8d\87false\82ð\95Ô\82·
+       if(!m_isOutput){
+               return false;
+       }
+
+       m_isOutput = false;
+       waveOutReset(m_hWaveOut);
+
+       return true;
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 // \8fo\97Í\83f\83o\83C\83X\82Ì\8fó\91Ô\82ð\92m\82ç\82¹\82é\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94
index 394031c..3ea0f6d 100644 (file)
@@ -60,6 +60,10 @@ public:
        bool open();
        // \83f\83o\83C\83X\82ð\95Â\82\82é
        bool close();
+       // \8fo\97Í\81i\8dÄ\90\81j\82ð\8aJ\8en\82·\82é
+       bool start();
+       // \8fo\97Í\81i\8dÄ\90\81j\82ð\92â\8e~\82·\82é
+       bool stop();
        // \8fo\97Í\83f\83o\83C\83X\82Ì\8fó\91Ô\82ð\92m\82ç\82¹\82é\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94
        void procedureWave(HWAVEOUT in_hWaveOut, UINT in_Message, DWORD in_Instance, DWORD in_Param1, DWORD in_Param2);
 
index 0250d40..9284f4a 100644 (file)
@@ -177,8 +177,11 @@ void init()
 void keyboard(unsigned char in_Key, int in_x, int in_y)
 {
        switch(in_Key){
-       case 'b':
-               isBeep = !isBeep;
+       case 'i':
+               g_InputWave.start();
+               break;
+       case 'o':
+               g_OutputWave.start();
                break;
        case 'q':
        case 'Q':