void CALLBACK TapeView_TapeWriteCallback(int value, UINT samples) { if (m_hTapeWavPcmFile == (HWAVPCMFILE)INVALID_HANDLE_VALUE) return; if (!m_okTapeRecording) return; if (samples == 0) return; // Scroll buffer memmove(m_TapeBuffer, m_TapeBuffer + samples, TAPE_BUFFER_SIZE - samples); // Write samples to the file for (UINT i = 0; i < samples; i++) { WavPcmFile_WriteOne(m_hTapeWavPcmFile, value); //TODO: Check WavPcmFile_WriteOne result *(m_TapeBuffer + TAPE_BUFFER_SIZE - samples + i) = (BYTE)((value >> 24) & 0xff); } InvalidateRect(m_hwndTapeGraph, NULL, FALSE); DWORD wavPos = WavPcmFile_GetPosition(m_hTapeWavPcmFile); int wavFreq = WavPcmFile_GetFrequency(m_hTapeWavPcmFile); if (wavPos - m_dwTapePositionShown > (DWORD)(wavFreq / 6) || !m_okTapePlaying) { TapeView_UpdatePosition(); } }
void QTapeView::tapeWriteCallback(int value, unsigned int samples) { if (m_hTapeWavPcmFile == (HWAVPCMFILE)INVALID_HANDLE_VALUE) return; if (!m_okTapeRecording) return; if (samples == 0) return; // Write samples to the file for (unsigned int i = 0; i < samples; i++) WavPcmFile_WriteOne((HWAVPCMFILE)m_hTapeWavPcmFile, value); DWORD wavPos = WavPcmFile_GetPosition((HWAVPCMFILE)m_hTapeWavPcmFile); int wavFreq = WavPcmFile_GetFrequency((HWAVPCMFILE)m_hTapeWavPcmFile); if (wavPos - m_dwTapePositionShown > (DWORD)(wavFreq / 6) || !m_okTapePlaying) { this->updatePosition(); } }