Mercurial > hg > svcore
diff plugin/plugins/SamplePlayer.cpp @ 601:5eb5449432f5
* debug only
author | Chris Cannam |
---|---|
date | Tue, 18 Aug 2009 11:08:29 +0000 |
parents | bdc9bb371a9f |
children | 9a6b50d3cc50 |
line wrap: on
line diff
--- a/plugin/plugins/SamplePlayer.cpp Fri Aug 14 14:01:09 2009 +0000 +++ b/plugin/plugins/SamplePlayer.cpp Tue Aug 18 11:08:29 2009 +0000 @@ -32,6 +32,8 @@ #include <samplerate.h> #include <iostream> +//#define DEBUG_SAMPLE_PLAYER 1 + const char *const SamplePlayer::portNames[PortCount] = { @@ -317,7 +319,9 @@ if (player->m_pendingProgramChange >= 0) { -// std::cerr << "SamplePlayer::workThreadCallback: pending program change " << player->m_pendingProgramChange << std::endl; +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "SamplePlayer::workThreadCallback: pending program change " << player->m_pendingProgramChange << std::endl; +#endif player->m_mutex.lock(); @@ -358,8 +362,10 @@ m_samples.clear(); +#ifdef DEBUG_SAMPLE_PLAYER std::cerr << "SamplePlayer::searchSamples: Directory is \"" << m_sampleDir.toLocal8Bit().data() << "\"" << std::endl; +#endif QDir dir(m_sampleDir, "*.wav"); @@ -368,7 +374,9 @@ if (file.isReadable()) { m_samples.push_back(std::pair<QString, QString> (file.baseName(), file.filePath())); -// std::cerr << "Found: " << dir[i].toLocal8Bit().data() << std::endl; +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "Found: " << dir[i].toLocal8Bit().data() << std::endl; +#endif } } @@ -494,6 +502,10 @@ && pos >= events[event_pos].time.tick) { if (events[event_pos].type == SND_SEQ_EVENT_NOTEON) { +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "SamplePlayer: found NOTEON at time " + << events[event_pos].time.tick << std::endl; +#endif snd_seq_ev_note_t n = events[event_pos].data.note; if (n.velocity > 0) { m_ons[n.note] = @@ -508,6 +520,10 @@ } } else if (events[event_pos].type == SND_SEQ_EVENT_NOTEOFF && (!m_sustain || (*m_sustain < 0.001))) { +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "SamplePlayer: found NOTEOFF at time " + << events[event_pos].time.tick << std::endl; +#endif snd_seq_ev_note_t n = events[event_pos].data.note; m_offs[n.note] = m_sampleNo + events[event_pos].time.tick; @@ -522,12 +538,19 @@ count = events[event_pos].time.tick - pos; } + int notecount = 0; + for (i = 0; i < Polyphony; ++i) { if (m_ons[i] >= 0) { + ++notecount; addSample(i, pos, count); } } +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "SamplePlayer: have " << notecount << " note(s) sounding currently" << std::endl; +#endif + pos += count; } @@ -564,6 +587,9 @@ unsigned long rsi = lrintf(floor(rs)); if (rsi >= m_sampleCount) { +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "Note " << n << " has run out of samples (were " << m_sampleCount << " available at ratio " << ratio << "), ending" << std::endl; +#endif m_ons[n] = -1; break; } @@ -580,6 +606,9 @@ } if (dist > releaseFrames) { +#ifdef DEBUG_SAMPLE_PLAYER + std::cerr << "Note " << n << " has expired its release time (" << releaseFrames << " frames), ending" << std::endl; +#endif m_ons[n] = -1; break; } else {