-
Notifications
You must be signed in to change notification settings - Fork 0
2023 05 29
Some insights came to me last night when trying to organise the inspirations behind this project.
Writing on the background research, for some reason I started with writing with focus on music, not the tech, and then just kept on going. The techy part can hopefully finished today with some concise writing on related research, then there's "only" context and evaluation left. And then cleaning up the repo. And recording the demos. And final formatting of the report.
From the very last minute debugging series: I fixed the timing in the Max patch before going to sleep this morning. Now what gets read from config.json
are both frame and hop size, and, as it should be, frame size determines the duration of grain emitted (same thing different terms huh?), hop size determines the emission rate of grains. So now, the results are much more close to the original, I think the bunch of division/multiplication initially included in the patch were workarounds to some of the gen~ trouble.
As mentioned before, I rolled back to using the stock mc.play~ which works fine and dropped the fancy windowing functions (useless with playing back longer chunks of audio), swapping it out to trapezoid~
instead. What you have now is two params controlling attack and decay, specified in percentage of the overall frame size.
I'm ditching gen~ for now, I will eventually implement a phase vocoder from scratch as Ben sugested, but this is REALLY not the right time. Also it's so poor the only stock Max object that allows pitch shifting/time stretching is groove~
, which is an absolutely awful choice if you want to read small chunks from big buffer (not on loop.)