Вот прямо сейчас звуковую волну и рисую. Вот так, например, выглядит счет 1-2-3. Прикольно, задача обработки звука может превратиться в задачу обработки изображения.
По делу: байты есть значение напряжения сигнала в моменты дискретизации. Например, PCM 8 бит:
мин. значение 0, нулевое 128, макс. - 255. PCM 16 бит имеет другую раскладку.
Вот пара функций для PCM формата, возвращающие знаковые значения отсчетов:
static int sampleSignedValue(char value) { return (unsigned char)(value) - 0x80; }
static int sampleSignedValue(short value) { return value; }