static int WavegenFile(void) { int finished; unsigned char wav_outbuf[1024]; char fname[210]; out_ptr = out_start = wav_outbuf; out_end = wav_outbuf + sizeof(wav_outbuf); finished = WavegenFill(); if (quiet) return finished; if (f_wave == NULL) { sprintf(fname, "%s_%.2d%s", wavefile, ++wavefile_count, filetype); if (OpenWaveFile(fname, samplerate) != 0) return 1; } if (end_of_sentence) { end_of_sentence = 0; if ((samples_split > 0 ) && (samples_total > samples_split)) { CloseWaveFile(); samples_total = 0; } } if (f_wave != NULL) { samples_total += (out_ptr - wav_outbuf)/2; fwrite(wav_outbuf, 1, out_ptr - wav_outbuf, f_wave); } return finished; }
BOOL CAudioCtrl::Play(char *pszPath) { if (pszPath == NULL || m_eStatus == ENUM_STATUS_PLAYING) { return FALSE; } m_bRecording = FALSE; if (m_eStatus != ENUM_STATUS_READY) { return FALSE; } if (!OpenWaveFile(pszPath)) return FALSE; MMRESULT mmReturn = 0; // open wavein device mmReturn = ::waveOutOpen (&m_hPlay, m_uiDeviceID, &m_Format, (DWORD)GetSafeHwnd(), NULL, CALLBACK_WINDOW); if ( mmReturn ) { TRACE("waveOutOpen() failed\r\n"); return FALSE; } else { // make several input buffers and add them to the input queue for(int i=0; i<m_wInQueu; i++) { int nSize = m_dwQueuBufferSize; if ( !ReadSoundDataFromFile ( m_szAryInData[i], nSize ) ) { if ( i == 0 ) { AfxMessageBox ( "Read sound data from file failed" ); return FALSE; } } if ( !AddOutputBufferToQueue ( i, nSize ) ) return FALSE; } } m_eStatus = ENUM_STATUS_PLAYING; return TRUE; }
/* OpenSpeechFile: open waveform or parm file */ void OpenSpeechFile(char *s) { HTime len; char buf[MAXSTRLEN]; if (labF) tr = LoadTransLabs(s); if(IsWave(s)) len = OpenWaveFile(s); else len = OpenParmFile(s); if(labF) AppendLabs(tr,len); if (trace & T_TOP) AppendTrace(s); if (tgtPK == ANON) tgtPK = srcPK; if(trace & T_KINDS){ printf("Source file format: %s [%s]\n", Format2Str(srcFF), ParmKind2Str(srcPK,buf)); printf("Target file format: %s [%s]\n", Format2Str(tgtFF), ParmKind2Str(tgtPK,buf)); printf("Source rate: %.0f Target rate: %.0f \n", srcSampRate,tgtSampRate); } }
CSoundFile::CSoundFile(LPCTSTR pszFileName, WAVEFORMATEX* format) { m_hFile = NULL; _tcscpy(m_szFileName, pszFileName); ZeroMemory(&m_MMCKInfoParent,sizeof(MMCKINFO)); ZeroMemory(&m_MMCKInfoChild,sizeof(MMCKINFO)); ZeroMemory(&m_MMCKInfoData,sizeof(MMCKINFO)); if(format == NULL) { m_Mode = READ; OpenWaveFile(); } else { m_Mode = WRITE; m_Format = *format; CreateWaveFile(); } if(m_Mode == ERROR) Close(); }