]> git.sesse.net Git - pitch/blobdiff - glpitch.cpp
Make glpitch user exitable.
[pitch] / glpitch.cpp
index 90c47b8502715ec95bda0f2a7e73a97c819dc26d..a3c301051046fe2466b3bb5a7a45a234a905703d 100644 (file)
@@ -27,6 +27,19 @@ int main(void)
        glClear(GL_COLOR_BUFFER_BIT);
 
        for ( ;; ) {
+               SDL_Event event;
+               while (SDL_PollEvent(&event)) {
+                       switch (event.type) {
+                       case SDL_KEYUP:
+                               if (event.key.keysym.sym == SDLK_ESCAPE) {
+                                       exit(0);
+                               }
+                               break;
+                       case SDL_QUIT:
+                               exit(0);
+                       }
+               }
+
                short buf[FFT_LENGTH / PAD_FACTOR / OVERLAP];
                read_chunk(fd, buf, FFT_LENGTH / PAD_FACTOR / OVERLAP);
                std::pair<double, double> peak = pd.detect_pitch(buf);
@@ -49,17 +62,18 @@ int main(void)
                glVertex2f(MAX_X, 0.0f);
                glEnd();
 
-               glBlendFunc(GL_SRC_ALPHA, GL_ONE);
-
-               double peak_pos = find_pos(peak.first);
-
-               glBegin(GL_QUADS);      
-               glColor4f(0.0, 1.0f, 0.0f, 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();
+               if (peak.second - log10(FFT_LENGTH) >= 0.0) {
+                       double peak_pos = find_pos(peak.first);
+
+                       glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+                       glBegin(GL_QUADS);      
+                       glColor4f(0.0, 1.0f, 0.0f, 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();
+               }
 
                glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
                glBegin(GL_LINES);