Heigen5 wrote: ↑21 Oct 2018
And another question: so you go to a nerd-board, copy an example code of an EQ, make a gui for it and just start selling it?
There is no code example for a finished EQ. That like asking if you go to a nerd-sample site, and copy an example song and put a picture with it and start selling it - doesn't work like that.
There ARE common filter types, which have common code since they are based on mathematical formulas. So if you want to make a certain filter type, there's really only one formula that will produce that filter type.
Like if you want to play middle C, you pretty much need to create a frequency of 261.6256 Hz - it's based on math.
Here's a quick outline of the process:
The first decision is to choose the filter types and then the way you use the filters to create EQs, such as whether it is symmetrical or asymmetrical, whether you are using proportional Q or not (and how you are controlling the Q from the gain knob - lots of options there), what else you are doing with regards to control interaction (one of my old shelf designs adjusts frequency with gain to give a constant slope rather than constant curve response), how you combine the bands (typically serially, but also parallel like KUSH audio), how many bands, how many shapes, how you address advanced shapes like tilt EQ, what additional features you may give the filters (mine use an extremely custom and unique "variable slope" design for years now, which I've not yet seen other EQs use), or how you add other features like how I added a depth control for the notch filter, etc.
Then beyond the filter, and the curve, and then the band design (I choose ±24 dB gain, semitone control of frequency, and implemented negative feedback for the Q control - all of which are uncommon), whether you choose to allow each band to cover the entire range or a restricted range, etc. - THEN there are the global control options.
My EQ uses master controls for the Gain, Tune, Q, and Saturation controls, something not every designer chooses to do. I also added control of the EQ via CV and MIDI, with many options including velocity, glide, attack, and decay controls. I also created a 100% unique approach to how saturation is implemented in my EQ, something no other product has done, plus the ability to continuously move from odd harmonic generation through a blend and on to even harmonic generation.
Then there's the choices for how to design the front panel - what ranges to give each control, it's resolution, it's appearance on screen, it's options, it's interactions with other controls (in my EQ the master gain also compensates the output level automatically), the external control options, their ranges, and how you deal with CVs that exceed the front panel controls, and on and on. At some point you also choose the layout and things like colors and size of each control, all which contribute to the end result: the final product.
And in my EQ I also decided to do something else not done by other EQs: allow total patching access to each and every band, which was a VERY complex coding problem to address because of the additional saturation outputs and the need to remove the EQ from the main audio path when it was patched externally and the need to add visuals for the patched bands while removing them from the main visual display. And you also need to address and prevent possible feedback loops - basically you need to anticipate every possible useful and random thing a user might do with your product and put in place the code that will prevent these actions from producing "unhappy paths".
Then you work on optimization of the code so that you can run more than one of these monsters, which brings up all sorts of time consuming testing iteration procedures that in our case ate up a large amount of time (partly owing to the routing complexity. At some point you start testing with outside users and all sorts of suggestions are made, bugs are found, limitations discovered and all are addressed and then you do it all again until it's ready for release. And THEN the fun starts - tidying up the user guide, creating the store pages, tutorials, videos, audio examples, etc. Then it's released and you begin the process of customer support and on-going tutorials - all the while ALSO working on support for past products and development for future products.
Hopefully this all made sense (and addressed your question), as it was kinda a stream of consciousness writing adventure…