- Dropped off, picked up.
- Spent a lot of time reading Pure Data source; started to understand partly how overlap worked, though not fully.
- Took the guy to his social group, which seems to have gone well. He did some homework while we waited for it to start, and I did some thinking about Pure Data. While the session was going, I went out and got groceries. I was concerned about how much time driving out there was going to cost us, but a lot of it was salvageable.
- Searching for something that I didn't understand in the pd code lead me to the resynthesis example patch, which has a comment in it that explains that the overlapping happens on block intake as well as on output. That was enough for me to understand that my implementation in the C++ vocoder was completely wrong. (It was only making output blocks overlap after generating them, which in retrospect, is really problematic because it will make the whole thing shorter). I implemented it so that the samples it picks up each block will contain some samples from the previous block — overlapping, if you will. It's still not done, but it sounds much smoother now.
- Now the problem at hand is why the carrier signal doesn't come out as much. I found a bug (int instead of float) that made a rounding thing in my code never run. Fixing that made the result of an rsqrt on the carrier fft result much closer to the one that pd gets. However, maybe it's actually not? Because when it gets multiplied by another array the results are wildly different between the two versions. The next thing to do, which I might not be able to get to this week, is to examine the raw arrays involved in a spreadsheet.
- Went to the electronic music group. None us made much progress in the last week, but we chatted about
fun things like album releases that are circuits and resolved to keep at it when we could.