Exemplo n.º 1
0
  public static List<Double> audioLogAvg(
      String deviceName, String channel, long baseFreq, long bandsPerOctave, NodeContext context) {
    AudioSource source = (AudioSource) context.getData().get(deviceName + ".source");
    if (source == null) return ImmutableList.of();
    FFT fft = new FFT(source.bufferSize(), source.sampleRate());
    fft.window(FFT.HANN);

    fft.logAverages((int) baseFreq, (int) bandsPerOctave);

    if (channel.equals("left")) {
      fft.forward(source.left);
    } else if (channel.equals("right")) {
      fft.forward(source.right);
    } else {
      fft.forward(source.mix);
    }

    ImmutableList.Builder<Double> b = new ImmutableList.Builder<Double>();
    for (int i = 0; i < fft.avgSize(); i++) b.add((double) fft.getAvg(i));
    return b.build();
  }