График высоты тона (частоты) звука

Я хочу изобразить высоту звука в график.

В настоящее время я могу построить график амплитуды. График ниже создан на основе данных, возвращенных getUnscaledAmplitude () :

alt text

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new BufferedInputStream(new FileInputStream(file)));
byte[] bytes = new byte[(int) (audioInputStream.getFrameLength()) * (audioInputStream.getFormat().getFrameSize())];
audioInputStream.read(bytes);

// Get amplitude values for each audio channel in an array.
graphData = type.getUnscaledAmplitude(bytes, 1);


public int[][] getUnscaledAmplitude(byte[] eightBitByteArray, int nbChannels)
{
    int[][] toReturn = new int[nbChannels][eightBitByteArray.length / (2 * nbChannels)];
    int index = 0;

    for (int audioByte = 0; audioByte < eightBitByteArray.length;)
    {
        for (int channel = 0; channel < nbChannels; channel++)
        {
            // Do the byte to sample conversion.
            int low = (int) eightBitByteArray[audioByte];
            audioByte++;
            int high = (int) eightBitByteArray[audioByte];
            audioByte++;
            int sample = (high << 8) + (low & 0x00ff);

            toReturn[channel][index] = sample;
        }
        index++;
    }

    return toReturn;
}

Но мне нужно показать высоту звука, а не амплитуду. но сейчас не могу понять, как сохранить и уйти. Я попытался нажать Ctrl + W + Q , но он ничего не сделал, а добавил ^ туда, где находится курсор.

Я также попробовал сначала Esc , а затем Ctrl + W + Q , но там написано Нет записи с последнее изменение (добавить! для отмены) .

258
задан Peter Mortensen 12 September 2019 в 04:47
поделиться