int main(void)
{
PitchDetector pd(SAMPLE_RATE, FFT_LENGTH, PAD_FACTOR, OVERLAP);
- int fd = get_dsp_fd(SAMPLE_RATE, FFT_LENGTH, OVERLAP);
+ snd_pcm_t *pcm = get_dsp_handle(SAMPLE_RATE);
SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
+ glDisable(GL_DEPTH_TEST);
for ( ;; ) {
SDL_Event event;
}
short buf[FFT_LENGTH / PAD_FACTOR / OVERLAP];
- read_chunk(fd, buf, FFT_LENGTH / PAD_FACTOR / OVERLAP);
+ read_chunk(pcm, buf, FFT_LENGTH / PAD_FACTOR / OVERLAP);
std::pair<double, double> peak = pd.detect_pitch(buf);
glMatrixMode(GL_PROJECTION);
if (peak.second - log10(FFT_LENGTH) >= 0.0) {
double peak_pos = find_display_pos(peak.first);
+ double strength = peak.second / 40.0f;
+ glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glEnable(GL_POLYGON_SMOOTH);
glBegin(GL_QUADS);
- glColor4f(0.0, 1.0f, 0.0f, 0.2f);
+ glColor4f(0.0f, strength, 1.0 - strength, 0.2f);
glVertex2f(peak_pos - 0.1, 0.0f);
glVertex2f(peak_pos - 0.1, 1.0f);
glVertex2f(peak_pos + 0.1, 1.0f);