|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.01.2009, 20:01 | #1 |
Регистрация: 02.01.2009
Сообщений: 7
|
bass.dll
Здравствуйте, понимаю, что похожие темы уже есть, но... Каким образом с помощью библотеки bass.dll можно вычислить частоту и амплитуду для каждой секунды в потоке?Какими функциями это можна реализовать? Пробовал разбираться в хелпе для bass.dll, но на английском это не очень удобно. Если кого то не затруднит, попросил бы помочь
|
08.01.2009, 01:09 | #2 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
Ох тебе повезло, что у меня дипломная связанная с разработкой программного обеспечения для сбора информации и диагностики машин.
Вряд ли кто-то еще тебе даст ответ на поставленный вопрос. PHP код:
шаг = 11025/4096 = 2,691650390625 Гц А вообще я уже через другие компоненты дипломку переделываю, через этот bass слишком напряжно. |
08.01.2009, 01:11 | #3 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
А, совсем забыл, чтобы получать данные каждую секунду, соответственно необходимо данный код забросить в таймер и выставить интервал в 1 сек.
|
08.01.2009, 03:15 | #4 |
Регистрация: 02.01.2009
Сообщений: 7
|
Спасибо, что откликнулся. Но у меня теперь вопросы:
1)Почему именно 401Гц? И почему амплитуды только до 149? 2)К примеру я получу 2048 значений амплитуд при определённых значениях частот, как мне это связать со временем? Если поместить этот код в таймер, то каждую секунду я буду получать опять же 2048 значений амплитуд. Прошу извинить, я не очень компетентен в этом вопросе, но я думал, что, к примеру, для каждой секунды можно найти 1 значение частоты и одно значение амплитуды. 3) Код:
Вроде, пока всё) |
08.01.2009, 07:59 | #5 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
Нет, это не в Дб, это просто набор каких то данных соответствующих амплитуде, может в микровольтах - точно не знаю, чтобы перегнать в Дб нужно калибровать прогу, т.е. брать значение амплитуды из проги и при помощи формул подгонять эти значения до ожидаемых амплитуд в Дб. В массиве выводятся амплитуды как линейные зависимости, Дб - это логарифмическая зависимость, так что трансформация нужна в любом случае.
149 это в моем случае было, но на данном примере можно брать любые значения до 2048 из массива. BASS_RecordStart(11025,2,0,nil,0); 11025 это частота дискритизации сигнала. BASS_ChannelGetData(channel1, @fftdata, BASS_DATA_FFT4096); BASS_DATA_FFT4096 - это константа соответствующая частоте дискритизации 4096Гц и при заданном параметре функция возвращает 2048 значений. Точно не помню как там взаимосвязаны эти 4096 и 11025. Каждую секунду можно получать данные амплитуд на определенных частотах. fftdata[i] эквивалентно значении амплитуды на частоте эквивалентной переменной i. Т.е. для каждой частоты своя амплитуда. Чтобы получить суммарную амплитуду, нужно просто просуммировать все значения массива по модулю. |
08.01.2009, 13:29 | #6 | |
Регистрация: 02.01.2009
Сообщений: 7
|
А нет случайно каких то ссылок? Было бы неплохо.
Цитата:
А амплитуды получаются небольшие где то 0 до 2, может их надо умножить на что то? |
|
08.01.2009, 17:43 | #7 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
Какую общую частоту? Вы же понимаете что колебания проходят на спектре частот. Все что мы слышим - это спектр частот с 20 до 20000 Гц. Звуковая карта также имеет границы от 20 до 20000Гц, хотя есть различные модификации. Знаешь хоть что такое спектр? Какой физический смысл задачи, что нужно сделать?
|
08.01.2009, 17:59 | #8 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
http://www.un4seen.com/
Официальный сайт по bass.dll Там по идее и мануал должен быть где-то, если не найдешь - у меня есть. |
08.01.2009, 18:23 | #9 |
Регистрация: 02.01.2009
Сообщений: 7
|
Мне нужно найти 1 значение амплитуды и 1 частоты для каждой секунды из файла
Спектр, как я понимаю, это график зависимости амплитуды от времени? Код:
То есть как я себе думаю, длину потока в байтах поделить на длину в секундах, и с этим шагом находить нужные мне значения. Этот код я взял с http://www.un4seen.com/ |
09.01.2009, 12:11 | #10 |
Форумчанин
Регистрация: 04.01.2009
Сообщений: 188
|
спектр это график зависимости амплитуды от частоты!
вот образец 1.PNG Как мы видим на частотах примерно 25, 50 и 180 Гц идет резкий всплеск амплитуд. В том примере что ты указал - он тебе выдаст 512 частот и соответствующие этим частотам амплитуды. Насчет того чтобы получить частоту соответствующую амплитуде - это по моему практически нереально. Амплитуды сам видел как прыгают 0.0023 0.1256 итд, т.е. сложновато будет наткнутся на заданную амплитуду. Вот наоборот, получить амплитуду, зная частоту - это попроще, просто вытянуть необходимый элемент массива который соответствует требуемой частоте. Последний раз редактировалось iankov; 09.01.2009 в 12:16. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
библиотека bass.dll, что это такое? дайте ссылку на хелп. | vitalik007 | Общие вопросы Delphi | 2 | 29.02.2012 18:03 |
bass.dll и mms потоки | vismut | Мультимедиа в Delphi | 8 | 07.10.2011 19:01 |
Помогите с параметрическим эквалайзером в BASS.DLL! | N-DOGG | Компоненты Delphi | 2 | 04.01.2009 16:05 |
как соеденить dll bass | blackstersl | Общие вопросы Delphi | 4 | 25.09.2008 17:52 |
bass.dll - ошибка - Use the step or run to continue. | vitalik007 | Общие вопросы Delphi | 1 | 20.08.2007 19:59 |