![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
for i:= 1 to r.Data.Size div 4 do
почему именно div 4 ? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Я читаю данные фреймами. 1 фрейм 2 - канала по 2 байта в сэмпле каждого канала.
2х2=4 байта. Таким образом r.Data.Size div 4 дает нам именно число фреймов в блоке данных размером r.Data.Size. Для других данных размер фрейма будет другим... Добавлено @ 11:52 Размер фрейма можно вычислить по формуле FrSize := Round(wBitsPerSample / 8) * wChannels; -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Понятно. Большое спасибо.
а можно пояснить по поводу вопроса от 27.4.2006, 17:02 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Sorry не заметил поста.
Это был только пример кода демонстрирующий, что поток данных не пустой. А выводился только левый канал. Данный код ни в коем случае нельзя использовать в качестве образца! Он писался только чтоб отобразить именно этот фрагмет. А результат у вас получился плохой, только потому что моя методика слишком простая. Помните? частота дискретизации (в нашем случае частота пикелей) должна в два раза превышать частоту сигнала, иначе на изображении будут видны биения (они как раз и видны у вас, у меня их просто невидно, так как трек длиннее и сжатие графика выше). -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Понятно. "Рисовать звук" мне не надо. Мне надо только получить данные.
Надеюсь, на это пример способен? А то я уже собрался к начальнику идти... Очень не хрочется лохонуться. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Если использовать в точности пример поста 27.4.2006, 17:02
то нет, там неправельно определен размер фрейма, а потому читается только половина файла, если заменить div 4, на div 2, то будет верно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Не понял?
Если 1 канала, то используем div 4, а если 1 канал используем div 2. Это я сделал. Чтоеще надо поправить? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Все больше ничего -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Огромное спасибо за терпение и отзывчивость.
Кто бы еще подсказал. как из этих данных частоту("ноты") выцепить... |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Подскажите, пожалуйста, чем обоснован выбор именно SmallInt, а не Integer?
мне нужно из одного звука "вычесть" второй. Считываю данные - W1 и W2 (массивы. звук одноканальный). Пишу W[i]:= abs(W1[i] - W2[i]); И получаю несколько отрицательных значений. Задал тип данных Integer. Все значения положительные, но очень большие - 9-и значные. Это нормально? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
По документации 16 битные выборки записываются ввиде 2-х байтовых целых чисел со знаком, в делфи - такому типу соответствует smallint. Считывать нужно именно smallInt, а операции можно производить и с integer - где задан integer? - вероятно произошло переполнение переменной..
Преобразование фурье - дает амплитуду каждой частоты в обработанном фрагменте. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Массивы W, W1, W2 сперва были заданы типом СмолИнт. - при вычсислении
W[i]:= abs(W1[i] - W2[i]); В массиве W[i] появлялись отрицательные значения. Задал дял массивов Интеджер - значеия в массива W - все положительные, но 9 значные. Вы предлагаете, использовать W1, W2 - СмолИнт, а W - Интеджер? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
А что до сих пор не было отрицательных? Если данные 16 ти разрядные то волна должна переходить от плюса к минусу за период колебания. W точно должен быть integer ведь -32000 - (-32000) = -64000 - а это уже не поместится в smallInt -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Black_Joker |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 9.11.2002 Где: Таганрог Репутация: нет Всего: нет |
Подскажите, пожалуйста
Считал 2 звука (в DataStrim: TStream) - 1-й поменьше - W1 2-й побольше - W2. 1. Что будет если из W2 отнять W1? Такое вобще возможно? 2. Во 2-м звуке может содержаться первый (может несколько раз или ни одного раза) Предполагается, что первый звук входит (если входит) без изменений во второй. Можно ли его найти (только средствами работы с DataStrim)? Как? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Black_Joker, Разность это тоже что и сумма с перевернутым сигналом.
Для того чтобы определить насколько один сигнал похож на другой необходимо провести операцию свертки. В качестве ядра свертки будет выступать первый сигнал. Свертка будет производится по второму сигналу. В результате мы получим масив длины равной разности втророго и первого, по значениям этого сигнала можно определить где именно появились повторения и насколько близки фрагмент второго и первый сигнал. Если они абсалютно подобны, то сигнал (массив) будет содержать несколько острых пиков, по числу появлений первого сигнала во втором. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |