Exemplo n.º 1
0
        private void drawSpectrum(Graphics g)
        {
            int numchannels = 0;
            int dummy       = 0;

            FMOD.SOUND_FORMAT  dummyformat    = FMOD.SOUND_FORMAT.NONE;
            FMOD.DSP_RESAMPLER dummyresampler = FMOD.DSP_RESAMPLER.LINEAR;
            int count  = 0;
            int count2 = 0;


            system.getSoftwareFormat(ref dummy, ref dummyformat, ref numchannels, ref dummy, ref dummyresampler, ref dummy);

            /*
             *      DRAW SPECTRUM
             */
            for (count = 0; count < numchannels; count++)
            {
                float max = 0;

                system.getSpectrum(spectrum, SPECTRUMSIZE, count, FMOD.DSP_FFT_WINDOW.TRIANGLE);

                for (count2 = 0; count2 < 255; count2++)
                {
                    if (max < spectrum[count2])
                    {
                        max = spectrum[count2];
                    }
                }

                /*
                 *  The upper band of frequencies at 44khz is pretty boring (ie 11-22khz), so we are only
                 *  going to display the first 256 frequencies, or (0-11khz)
                 */
                for (count2 = 0; count2 < 255; count2++)
                {
                    float height;

                    height = spectrum[count2] / max * GRAPHICWINDOW_HEIGHT;

                    if (height >= GRAPHICWINDOW_HEIGHT)
                    {
                        height = GRAPHICWINDOW_HEIGHT - 1;
                    }

                    if (height < 0)
                    {
                        height = 0;
                    }

                    height = GRAPHICWINDOW_HEIGHT - height;

                    g.FillRectangle(mBrushGreen, count2, height, 1.0f, GRAPHICWINDOW_HEIGHT - height);
                }
            }
        }
Exemplo n.º 2
0
        public float[] getSpectrum(int size, int channel, DSP_FFT fft)
        {
            float[] data = new float[size];

            switch (fft)
            {
            case DSP_FFT.RECT:
                m_system.getSpectrum(data, size, channel, FMOD.DSP_FFT_WINDOW.RECT);
                break;

            case DSP_FFT.BLACKMAN:
                m_system.getSpectrum(data, size, channel, FMOD.DSP_FFT_WINDOW.BLACKMAN);
                break;

            case DSP_FFT.BLACKMANHARRIS:
                m_system.getSpectrum(data, size, channel, FMOD.DSP_FFT_WINDOW.BLACKMANHARRIS);
                break;

            case DSP_FFT.HAMMING:
                m_system.getSpectrum(data, size, channel, FMOD.DSP_FFT_WINDOW.HAMMING);
                break;

            case DSP_FFT.HANNING:
                m_system.getSpectrum(data, size, channel, FMOD.DSP_FFT_WINDOW.HANNING);
                break;

            case DSP_FFT.TRIANGLE:
                m_system.getSpectrum(data, size, channel, FMOD.DSP_FFT_WINDOW.TRIANGLE);
                break;
            }
            return(data);
        }