Age | Commit message (Collapse) | Author |
|
|
|
|
|
This will be useful eventually for sharing a bit more overall
application logic with the wasm build.
|
|
- made things that didn't need to be public hidden
- renamed find fundamental function to remove correlation (there isn't
an alternative anymore)
|
|
This was becoming an issue on debug builds on the laptop. Really, it's
for the best to skip frames rather than getting stuck in a perpetual
time delay.
|
|
|
|
The samller windows size has a few effects:
1. the frequency calculation will be less accurate, because less
iterations of the binary search will be effective.
2. 'mixed signals', measures at the start or end of a note where half
the signal is one thing and the other half is something else will have
less impact, since they will be on the screen for less time.
The higher frame rate also looks really nice.
|
|
In the benchmarks, the correlation can be done in 0.5ms. I'm only
expecting new samples from the microphone every 23ms at best. I don't
need to worry about dropping frames at this point.
|
|
background
|
|
If tests break on travis after this, it's because I reenabled some
portaudio tests. I'm not sure if travis actually has sound available
on their build servers.
|
|
|
|
|
|
|
|
I was only using the correlation anyway, so this simplifies a bit
|
|
Also updated GUI to present note and error in a friendlier way
|
|
|
|
|
|
The main idea here is to be able to bring focus to specific
charts. Also, I learned how to make one chart expand more.
|
|
The triggering algorithm isn't great at the moment. Seems the
interesting signals end up crossing zero a few times. I need to take
things like maxima into account as well.
I'm also running out of vertical space. I need to start making the GUI a
bit smarter, and allow turning some of these graphs on/off at runtime.
|
|
I'm not 100% happy with the precision of the correlation function at
this point. I'm hoping that with a bit more work, I can get it to be
more precise, and then the indicator will be more meaningful.
|
|
- Moved from channels to shared state
- Allowed audio frame skipping
|
|
The current method of sending all that data with channels turns out to
be terrible for performance. On the other hand, I need to get the data
to the GTK main thread if I want to do anything with it. So I have a conundrum.
|
|
Implemented passable frequency detection using auto-correlation.
It's still a bit finicky, and not super accurate. It could probably be
made more accurate by doing interpolation after choosing an appropriate
peak to find the maximum point more accurately. The correlation itself
does also oscillates uniformly after all.
|
|
|
|
It wasn't failing because of some small error, the whole way I find the
fundamental needs to be rethought, probably to use correlation instead
of an FFT.
|
|
The drawing area will eventually be used for a debugging graph of the
frequency spectrum.
|
|
|
|
It's wrong, but it's showing it on the GUI. I'm calling it a win.
|
|
|
|
|
|
|
|
|
|
Messy. To clean up once I've seen if it works.
|
|
|