//package nbtool.gui.logviews.sound.whistle;
//
//import java.awt.BorderLayout;
//import java.awt.Color;
//import java.awt.Font;
//
//import javax.swing.JLabel;
//import javax.swing.JScrollPane;
//
//import nbtool.data._log._Log;
//import nbtool.gui.logviews.misc.ViewParent;
//import nbtool.gui.logviews.sound2.FFTWBuffer;
//import nbtool.gui.logviews.sound2.ShortBuffer;
//import nbtool.gui.logviews.sound2.SoundPane;
//import nbtool.gui.logviews.sound2.WhistleDetector;
//
//public class FrequencyStream extends ViewParent {
//
// FloatBuffer buffer = null;
//
// @Override
// public void setLog(_Log newlog) {
// buffer = new FloatBuffer();
// buffer.parse(newlog);
//
// boolean heard = false;
//
// double sum = 0;
// for (int i = 10; i < 5000; ++i) {
// sum += buffer.index(0, i);
// }
//
// sum /= 4990;
// double accum = 0.0;
//
// for (int i = 10; i < 5000; ++i) {
// double val = buffer.index(0, i);
// accum += (val - sum) * (val - sum);
// }
//
// accum /= 4990;
// double sdev = Math.sqrt(accum);
// heard = sdev > 1000;
//
//// double sum = 0;
//// for (int i = 1600; i < 1800; ++i) {
//// sum += buffer.index(0, i);
//// }
//
//
// final String prefix = String.format("%f :: %B :: ", sdev, heard);
//
// JScrollPane scroll = new JScrollPane();
// final JLabel topLabel = new JLabel(prefix);
//
// SoundPane sp = new SoundPane(buffer.channels, buffer.frames) {
// @Override
// public int pixels(int c, int f, int radius) {
// return (int) ((buffer.get(f, c) / buffer.max) * radius);
// }
//
// @Override
// public String peakString() {
// return "max abs val = " + buffer.max;
// }
//
// @Override
// public String selectionString(int c, int f) {
// topLabel.setText(prefix + " " + String.format("c%d f%d val=%f", c, f, buffer.get(f, c) ) );
// return String.format("c%d f%d val=%f", c, f, buffer.get(f, c));
// }
// };
//
// scroll.setViewportView(sp);
//// scroll.setPreferredSize(this.getSize());
//// scroll.setSize(this.getSize());
// this.add(topLabel, BorderLayout.NORTH);
// this.add(scroll, BorderLayout.CENTER);
//
//// String ftext = "";
//// for (int i = 0; i < buffer.channels; ++i) {
//// if (WhistleDetector.detect(buffer, i)) {
//// ftext += "[found in " + i + "]";
//// }
//// }
//
//// if (!ftext.isEmpty()) {
//// JLabel ft = new JLabel(ftext);
//// Font font = ft.getFont();
//// ft.setForeground(Color.RED);
//// ft.setFont(font.deriveFont(Font.BOLD));
////
//// this.add(ft, BorderLayout.SOUTH);
//// }
//
// /*
// if (newlog.sexprForContentItem(0).find("whistle").exists()) {
// this.add(new JLabel("found!"), BorderLayout.SOUTH);
// } */
// }
//
// public FrequencyStream() {
// super();
// this.setLayout(new BorderLayout());
// }
//
//}