Calculating bands for Graphic EQ

I’m trying to make a Graphic EQ using web audio and the goal is build a function that
calculates an array of fixed center frequency’s using a band count (a.k.a number) as input.
In other words it generates an array for fixed center frequencies.

example:


    function calcBands(bands) {
       // Since there are different graphic EQ's they usually around 6 - 31 bands
       // but professionally it's normally 31 bands
       // band parameter needs to be a number between 6 and 31

       //insert code here:
       const freqs = new Array(bands);

       

       return freqs;
    }


    function buildFilters(bands) {
      let centers = calcBands(bands);
      let filters = [];
      for (let i = 0; i < bands; i++) {
        let filter = context.createBiquadFilter();
        filter.type = "peaking";
        filter.frequency.value = centers[i];
        filter.Q.value = Math.SQRT1_2;
        
        if (i > 0) {
          filters[i - 1].connect(filter);
        }
        filters.push(filter);
      }
      return filters;
    }

The thing is I tried doing some research and I found out that there are ISO standards and other things, but I just can’t do the maths of it.

All I can understand from this is that:

  • This is calculated using octave bands either 1 or 1/3, etc in base 2
  • Graphic EQ’s usually have 6 to 31 bands
  • Middle C (a.k.a A4) equals to 440Hz
  • Nyquist Frequency is sampleRate / 2

Can anyone please help me?
Feel free to correct me if I’m wrong

references:
https://www.cross-spectrum.com/audio/articles/center_frequencies.html
https://sound.stackexchange.com/questions/14101/what-is-the-frequency-step-formula-for-10-and-31-band-eqs
http://www.tonmeister.ca/main/textbook/intro_to_sound_recordingch13.html