Ejemplo n.º 1
0
 def test_minmax(self):
     fmin = 250.0
     fmax = 1000.0
     
     o = Octave(fmin=fmin, fmax=fmax)
     
     self.assertEqual(len(o.center), 3) # 250, 500, and 1000 Hz
     self.assertEqual(len(o.n), 3)
Ejemplo n.º 2
0
    def test_minmax(self):
        fmin = 250.0
        fmax = 1000.0

        o = Octave(fmin=fmin, fmax=fmax)

        assert (len(o.center) == 3)  # 250, 500, and 1000 Hz
        assert (len(o.n) == 3)
Ejemplo n.º 3
0
 def test_interval(self):
     emin = 1.0
     emax = 4.0
     f = np.logspace(emin, emax, 50)
     
     o = Octave(interval=f)
     
     self.assertEqual(o.fmin, 10.0**emin)
     self.assertEqual(o.fmax, 10.0**emax)
     self.assertEqual(len(o.n), len(o.center))
     
     o.unique = True
     self.assertEqual(len(o.n), len(f))
Ejemplo n.º 4
0
    def test_interval(self):
        emin = 1.0
        emax = 4.0
        f = np.logspace(emin, emax, 50)

        o = Octave(interval=f)

        assert (o.fmin == 10.0**emin)
        assert (o.fmax == 10.0**emax)
        assert (len(o.n) == len(o.center))

        o.unique = True
        assert (len(o.n) == len(f))
Ejemplo n.º 5
0
def octsmooth(amps, freq_vals, noct=24, st_freq=20, en_freq=20000):
    """Smooth magnitude spectrum values using octave bands for easier subtractions and viz.

    Args
    ----------
    amps : array
        Magnitude spectrum values for smoothing

    freq_vals : array
        Magnitude spectrum frequency values

    Parameters
    ----------
    noct : int, optional
        Number of octaves to smooth over (default is 24)

    st_freq : int, optional
        Start frequency for octave bands (default is 20)

    en_freq : int, optional
        End frequency for octave bands (default is 20000)

    Returns
    -------
    array
        Octave smoothed magnitude spectrum array
    array
        Octave smoothed magnitude spectrum array frequency bins
            """
    o = Octave(fmin=st_freq, fmax=en_freq, fraction=noct)
    octbins = np.zeros(len(o.center))
    for i in range(0, len(o.center)):
        st = (np.abs(freq_vals - o.lower[i])).argmin()
        en = (np.abs(freq_vals - o.upper[i])).argmin()
        if en - st > 0:
            octbinvec = amps[st:en]
        else:
            octbinvec = amps[st:en + 1]
        octbins[i] = np.max(octbinvec)
    return octbins, o.center
Ejemplo n.º 6
0
import sys, json
from acoustics.octave import Octave
import numpy as np

f = sys.argv[1]
f = json.loads(f)

o = Octave(interval=f, fraction=3)

print(json.dumps(o.center.tolist()))