X-Git-Url: https://git.sesse.net/?p=pitch;a=blobdiff_plain;f=glpitch.cpp;h=a168d79c5c4d3083bd4bf7766d2c9e46f6455a8c;hp=4aea821ef3dde34acb33980d3094fac993e02b4f;hb=abee20b74fec255942d42656047e371979ef0fcf;hpb=8603ad0d114005cee0dab2f7facd4faebae57f5d diff --git a/glpitch.cpp b/glpitch.cpp index 4aea821..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); @@ -60,6 +60,7 @@ int main(void) glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); + glDisable(GL_DEPTH_TEST); for ( ;; ) { SDL_Event event; @@ -76,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); @@ -99,15 +100,21 @@ 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); glVertex2f(peak_pos + 0.1, 0.0f); glEnd(); + + glDisable(GL_POLYGON_SMOOTH); } glColor4f(1.0f, 1.0f, 1.0f, 1.0f);