2016-06-26 6 views
0

У меня есть файл данных PCM, который, как я знаю, действителен. Я могу играть в нее, редактировать ее на куски и т. Д., И она всегда будет играть, а также отдельные части.Как я могу визуализировать данные PCM

Но когда я пытаюсь перевести его в трусах из байтов

bytes[i] | (bytes[i+1] << 8) 

Файл 16 бит, один канал и +44100 выборки. Я не вижу ничего похожего на файл волны визуально.

В качестве теста я делаю запись среди глушителя с одним очень громким звуком посередине. Тем не менее, график, который я сделал из моего приема, выглядел как любая другая диаграмма, когда я пытаюсь это сделать. Я как-то делаю это неправильно? Или непонимание того, что я читаю/пытаюсь?

Все, что мне нужно сделать, это обнаружить очень низкий порог, чтобы найти разрыв в словах.

Благодаря

+0

Поделитесь примером файла PCM. – selbie

+0

@selbie, вероятно, прав, поэтому вы должны показать немного больше кода, объяснить, на какой платформе вы работаете, и сказать немного больше о файле PCM (это wav, aiff и т. Д.). –

ответ

2

Мои психические силы предполагают, что это big-endian vs little-endian вещь.

Если исходный файл хранит образцы в обратном порядке байт, это, вероятно, что вы хотите:

(bytes[i] << 8) | (bytes[i+1]) 

Для чего это стоит, WAV файлы прямого порядок байты.

Другие возможности включают в себя:

Я не вижу код, но, может быть, ваш код только приращением I на 1 вместо 2 на каждой итерации цикла. (Обычная ошибка, которую я сделал в своем собственном коде).

подписанные типы или литье. Будьте ясны, как вы выполняете битовые операции в отношении подписанного vs. unsigned. Я не уверен, что «байты» - это массив «unsigned char» или «char». Я также не уверен, что по умолчанию «char» будет подписан или без знака. Это может быть лучше:

unsigned char b1 = (unsigned char)(bytes[i]); 
unsigned char b2 = (unsigned char)(bytes[i+1]); 
short sample = (short)((b1 << 8) | (b2)); 
+0

Спасибо @selbie. Вы были правы, это была большая проблема. –

+0

Рад использовать свои психические силы, чтобы помочь. Мои полномочия показывают мне будущее, в котором вы принимаете ответ и даете ему зеленый флажок. :) – selbie

Смежные вопросы