Показать сообщение отдельно
  #9  
Старый 24.09.2012, 13:57
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Dmitry_DM
Тип Longword
Я попробовал повысить его до LongInt. Теперь все нормально (с величиной чисел).
Сейчас посмотрел свои исходники - там действительно переменная Sample объявлена как Longword, но ошибок не возникает из-за того, что я эту переменную использую только как минибуфер для чтения/записи. Если же с этой переменной нужно производить вычисления, то её нужно объявлять как LongInt.
Цитата:
Сообщение от Dmitry_DM
Вот только я не знаю:числа у меня вывелись <0 и >0. Это логично. Но по-моему не логично то, что на графике столбик-сэмпл выше оси OX соответствует отрицательному числу в txt файле. Как бы наоборот получается...
В Windows'е принято, что координата 0,0 находится в левом верхнем углу и ордината (т.е. координата OY) увеличивается по направлению вниз, а в математике ордината увеличивается по направлению вверх. "Как бы наоборот получается..."
Чтобы перевернуть ординату в правильное положение нужно просто вычесть её из высоты (или из другой константы).

Цитата:
Сообщение от Dmitry_DM
P.S Всегда MaxAmplitude положительное, это из-за:
Код:
if Abs(Sample) > WavInfo.MaxAmplitude then WavInfo.MaxAmplitude := Abs(Sample);
Но всегда эта MaxAmplitude в TXT файле отрицательна.
MaxAmplitude всегда положительна, так как это абсолютная величина и не имеет смысла делать её отрицательной. А вот само значение максимальной амплитуды не обязательно будет только отрицательным - это как уж повезёт с wav-файлом.
Цитата:
Сообщение от Dmitry_DM
И еще все же мне непонятно так должно быть или нет: когда в wav BlockAling 4, а не 2, то сэмплов выводиться ровно в 2 раза больше.
А зачем вручную менять BlockAling? Там в процедуре WriteWav ей присваивается автоматически нужное значение.
Ответить с цитированием