X-Git-Url: https://git.sesse.net/?p=pitch;a=blobdiff_plain;f=glpitch.cpp;h=a168d79c5c4d3083bd4bf7766d2c9e46f6455a8c;hp=2f816199dfde9e06cacfac3816ac6a16b16fc427;hb=abee20b74fec255942d42656047e371979ef0fcf;hpb=4ee3f14c361d5f3103e11f5c88682240f26bf1c0 diff --git a/glpitch.cpp b/glpitch.cpp index 2f81619..a168d79 100644 --- a/glpitch.cpp +++ b/glpitch.cpp @@ -52,7 +52,7 @@ double find_display_pos(double freq) 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); @@ -77,7 +77,7 @@ int main(void) } 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 peak = pd.detect_pitch(buf); glMatrixMode(GL_PROJECTION); @@ -100,12 +100,14 @@ int main(void) 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);