Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных из WAV 
:(
    Опции темы
Black_Joker
Дата 3.5.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



for i:= 1 to r.Data.Size div 4 do
почему именно div 4 ? 
PM   Вверх
Alexeis
Дата 3.5.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 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 вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Black_Joker
Дата 3.5.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Понятно. Большое спасибо.
а можно пояснить по поводу вопроса от 27.4.2006, 17:02  
PM   Вверх
Alexeis
Дата 4.5.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Black_Joker @  3.5.2006,  19:23 Найти цитируемый пост)
а можно пояснить по поводу вопроса от 27.4.2006, 17:02  

Sorry не заметил поста.
Цитата

Считывается пара переменных, а почему используется только первая?

Это был только пример кода демонстрирующий, что поток данных не пустой. А выводился только левый канал. Данный код ни в коем случае нельзя использовать в качестве образца! Он писался только чтоб отобразить именно этот фрагмет. А результат у вас получился плохой, только потому что моя методика слишком простая. Помните?  частота дискретизации (в нашем случае частота пикелей) должна в два раза превышать частоту сигнала, иначе на изображении будут видны биения (они как раз и видны у вас, у меня их просто невидно, так как трек длиннее и сжатие графика выше).  


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Black_Joker
Дата 4.5.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Понятно. "Рисовать звук" мне не надо. Мне надо только получить данные.
Надеюсь, на это пример способен?
А то я уже собрался к начальнику идти... Очень не хрочется лохонуться. 
PM   Вверх
Alexeis
Дата 4.5.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Если использовать в точности пример поста 27.4.2006, 17:02 
то нет, там неправельно определен размер фрейма, а потому читается только половина файла, если заменить div 4, на div 2, то будет верно. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Black_Joker
Дата 5.5.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Не понял?
Если 1 канала, то используем div 4, а если 1 канал используем div 2.
Это я сделал.

Чтоеще надо поправить? 
PM   Вверх
Alexeis
Дата 5.5.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Black_Joker @  5.5.2006,  07:53 Найти цитируемый пост)
Чтоеще надо поправить? 

Все больше ничего smile , я просто уточнил, так как в посте от  27.4.2006, 17:02  - на один канал указано  div 4,
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Black_Joker
Дата 5.5.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Огромное спасибо за терпение и отзывчивость.

Кто бы еще подсказал. как из этих данных частоту("ноты") выцепить... smile  
PM   Вверх
Black_Joker
Дата 8.5.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Подскажите, пожалуйста, чем обоснован выбор именно SmallInt, а не Integer?

мне нужно из одного звука "вычесть" второй.
Считываю данные - W1 и W2 (массивы. звук одноканальный).
Пишу
W[i]:= abs(W1[i] - W2[i]);
И получаю несколько отрицательных значений.
Задал тип данных Integer. Все значения положительные, но очень большие - 9-и значные.

Это нормально? 
PM   Вверх
Alexeis
Дата 11.5.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Black_Joker @  8.5.2006,  19:00 Найти цитируемый пост)
Подскажите, пожалуйста, чем обоснован выбор именно SmallInt,

По документации 16 битные выборки записываются ввиде 2-х байтовых целых чисел со знаком, в делфи - такому типу соответствует
smallint.
Считывать нужно именно smallInt, а операции можно производить и с  integer

Цитата(Black_Joker @  8.5.2006,  19:00 Найти цитируемый пост)
Задал тип данных Integer.
 - где задан integer?

Цитата(Black_Joker @  8.5.2006,  19:00 Найти цитируемый пост)
Все значения положительные, но очень большие - 9-и значные.
 - вероятно произошло переполнение переменной..

Цитата(Black_Joker @  5.5.2006,  20:30 Найти цитируемый пост)
Кто бы еще подсказал. как из этих данных частоту("ноты") выцепить... 


Преобразование фурье - дает амплитуду каждой частоты в обработанном фрагменте.
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Black_Joker
Дата 11.5.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Массивы W, W1, W2 сперва были заданы типом СмолИнт. - при вычсислении
W[i]:= abs(W1[i] - W2[i]);
В массиве W[i] появлялись отрицательные значения.
Задал дял массивов Интеджер - значеия в массива W - все положительные, но 9 значные.

Вы предлагаете, использовать W1, W2 - СмолИнт, а W - Интеджер?
 
PM   Вверх
Alexeis
Дата 11.5.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Black_Joker @  11.5.2006,  08:32 Найти цитируемый пост)
 при вычсислении
W[i]:= abs(W1[i] - W2[i]);
В массиве W[i] появлялись отрицательные значения.


А что до сих пор не было отрицательных? Если данные 16 ти разрядные то волна должна переходить от плюса к минусу за период колебания.

W точно должен быть integer ведь -32000 - (-32000) = -64000 - а это уже не поместится в smallInt
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Black_Joker
Дата 17.5.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Подскажите, пожалуйста

Считал 2 звука (в DataStrim: TStream) - 1-й поменьше - W1
2-й побольше - W2.

1. Что будет если из W2 отнять W1? Такое вобще возможно?

2.
Во 2-м звуке может содержаться первый (может несколько раз или ни одного раза)

Предполагается, что первый звук входит (если входит) без изменений во второй. Можно ли его найти (только средствами работы с DataStrim)? Как? 
PM   Вверх
Alexeis
Дата 17.5.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Black_Joker, Разность это тоже что и сумма с перевернутым сигналом.
Для того чтобы определить насколько один сигнал похож на другой необходимо провести операцию свертки.
В качестве ядра свертки будет выступать первый сигнал. Свертка будет производится по второму сигналу. В результате мы получим масив длины равной разности втророго и первого, по значениям этого сигнала можно определить где именно появились повторения и насколько близки фрагмент второго и первый сигнал. Если они абсалютно подобны, то сигнал (массив) будет содержать несколько острых пиков, по числу появлений первого сигнала во втором. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.