Re: Something to keep Spogg busy during self-isolation
Posted: Sun Apr 05, 2020 9:55 pm
martinvicanek wrote:I was actually planning to implement something like a Harmonic Designer tab where the user can create his or her own preferred partials distribution in addition to a number of canned presets. In addition to individual intensities for each partial, it will be possible to control anharmonicity to the degree of completely random frequencies (cymbal synthesis). Since this involves up to 512 partials for the lowest notes, I had thought of alternatives to moving each partial individually, i.e. controls for certain characteristic parameters like anharmonicity, zero all even partials, high end fall-of etc. There will be a lot of GUI work, especially for displaying the settings result in both the frequency and the time domain with lin/log, zoom, shift, labels, etc.
You know that my focus is rather on DSP while I tend to neglect aspects of good design and usability, the latter being far more important for a sucessful product than the former. So I'll be grateful for any help in that area!
Some of those properties match the ones I had in mind, since back in 2016, when I was thinking about creating an additive synth. That's what the reserved space of "menubar" and "sidebar" are for. However, I can't do anything in the time domain, as that involves knowledge of the DSP, which I lack.
While having shortcuts for the partials control is crucial, it is also important for the user to have a feedback on how the partials will look like. Displaying them will be important. With 512 partials however, it will become a challenge. Even at one pixel wide, it would need at least 512 pixels to display them all. At that size, realtime animation will definitely be out of the game. But drawing on event isn't the worst thing, so that's fine for me. Because of the table updates, that are necessary and interrupt the sound for a brief moment, partials morphing is out of the game, which was one idea I had for a standard additive synth back then. But here are some ideas I had and would be doable:
- Bell shaper: partials would be set around the mouse as center in a bell-like shape, parameters would be "spread" (how many partials are involved) and "intensitiy (how deep the curve goes)
- Noise shaper: partials would be arranged in a noise pattern, according to mouse movement, Parameter would be "Intensity" (Zero would create a straight line at 0.5, full would create a noise pattern over the whole 0 - 1 range) and "new seed"
- Comb shaper: Sets every other partial to 0. Parameter would be "affected partials" selection (oviously odd and even, but maybe also any other pattern, like 3rd, 4th, etc, depends on comments I get regarding usability)
- Rise/Fall shaper: Creates a straight diagonal, either up or down. Parameter would be "Intensity" and "offset" (the more offset, the higher the initial partial's amplitude, if that's the right word for the 0-1 value of a partials)
- Template shaper: Contains pre-defined partial patterns for well-known waveforms like square and saw (and any of whom you know the partial pattern of
- Math shaper: Maybe to exotic, but the idea is to instruct the generator to do something like this. "every 3 setto previous * 0.5" (Would set every third partial to half the value of the previous one) This could get out of hands in complexity, so definitely the most time consuming to program.
I have more ideas for shapers, but I think we should start small and see, how it goes. Better to have something than to program for years without ever getting done. Some things I think of involve to activate shapers and lock them, so you could for example apply the comb shaper, then the Rise/Fall shaper, but the latter would only affect the partials that are not "combed".