public THPStream(THPNode node) { byte *sPtr; short yn1 = 0, yn2 = 0; _numChannels = (int)node.Channels; _sampleRate = (int)node.Frequency; _numSamples = (int)node.NumSamples; _numBlocks = (int)node.NumFrames; _blockStates = new ADPCMState[_numChannels, _numBlocks]; _currentStates = new ADPCMState[_numChannels]; _audioBlocks = new THPAudioBlock[_numBlocks]; //Fill block states in a linear fashion for (int frame = 0; frame < node.NumFrames; frame++) { THPFrame f = node._frames[frame]; ThpAudioFrameHeader *header = f.Audio; for (int channel = 0; channel < _numChannels; channel++) { sPtr = header->GetAudioChannel(channel); short[] coefs; if (channel == 0) { yn1 = header->_c1yn1; yn2 = header->_c1yn2; coefs = header->Coefs1; } else { yn1 = header->_c2yn1; yn2 = header->_c2yn2; coefs = header->Coefs2; } //Get block state _blockStates[channel, frame] = new ADPCMState(sPtr, *sPtr, yn1, yn2, coefs); //Use ps from data stream } _audioBlocks[frame] = new THPAudioBlock(header->_blockSize, header->_numSamples); } }
public THPFrame(VoidPtr addr, uint size, THPNode node) { _source = new DataSource(addr, (int)size); _node = node; }
public THPStream(THPNode node) { byte* sPtr; short yn1 = 0, yn2 = 0; _numChannels = (int)node.Channels; _sampleRate = (int)node.Frequency; _numSamples = (int)node.NumSamples; _numBlocks = (int)node.NumFrames; _blockStates = new ADPCMState[_numChannels, _numBlocks]; _currentStates = new ADPCMState[_numChannels]; _audioBlocks = new THPAudioBlock[_numBlocks]; //Fill block states in a linear fashion for (int frame = 0; frame < node.NumFrames; frame++) { THPFrame f = node._frames[frame]; ThpAudioFrameHeader* header = f.Audio; for (int channel = 0; channel < _numChannels; channel++) { sPtr = header->GetAudioChannel(channel); short[] coefs; if (channel == 0) { yn1 = header->_c1yn1; yn2 = header->_c1yn2; coefs = header->Coefs1; } else { yn1 = header->_c2yn1; yn2 = header->_c2yn2; coefs = header->Coefs2; } //Get block state _blockStates[channel, frame] = new ADPCMState(sPtr, *sPtr, yn1, yn2, coefs); //Use ps from data stream } _audioBlocks[frame] = new THPAudioBlock(header->_blockSize, header->_numSamples); } }
private void TargetChanged(THPNode newTarget) { if (_targetSource == newTarget) return; Close(); if ((_targetSource = newTarget) == null) return; previewPanel1.RenderingTarget = _targetSource; IAudioStream s = _targetSource._audio; //Create provider if (_provider == null && s != null) { _provider = AudioProvider.Create(null); _provider.Attach(this); } chkLoop.Checked = false; //Create buffer for stream if (s != null) _buffer = _provider.CreateBuffer(s); if (_targetSource.FrameRate > 0) _frameTime = new DateTime((long)((float)_targetSource.NumFrames * 10000000.0f / _targetSource.FrameRate)); trackBar1.Value = 0; trackBar1.TickStyle = TickStyle.None; trackBar1.Maximum = (int)_targetSource.NumFrames; trackBar1.TickFrequency = (int)_targetSource.NumFrames; trackBar1.TickStyle = TickStyle.BottomRight; if (_targetSource.FrameRate > 0) UpdateTimeDisplay(); Enabled = _targetSource.NumFrames > 0; }
private void Close() { //Stop playback Stop(); _targetSource = null; //Reset fields chkLoop.Checked = false; }