Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Вниз

Цифровой фильтр.   Найти похожие ветки 

 
Лёша   (2002-02-22 17:02) [0]

Люди! Помогите найти примеры или компоненты для анализа спектра звукового сигнала. Как в WinAmp. Мне нужно не отображать состовляющие, а иметь их данные.


 
Sergey_n   (2002-02-24 00:37) [1]

www.nctsoft.com Набор компонент AudioStudio. Но примеры работы с компонентами на VB.


 
MJH   (2002-02-24 06:23) [2]

что значит "компоненты для анализа"?
буквально несколько строчек кода....ишь, разленились :)


 
Лёша   (2002-02-24 07:25) [3]

Мне просто надо раз в секунду получать набор чисел от проигрываемого файла. Сколько будет занимать этот код несколько мегабайт или несколько строк, я даже представления не имею. Что для этого надо использовать и с чего начинать? Какие формулы, алгоритмы? Почти в каждом звуковом редакторе есть подобные преобразования. Я не верю, что программисты этих редакторов своеручно выводили формулы каждый раз. Должны же быть опубликованы в инете какие-нибудь наработки.
Пожайлуста, подскажите хоть с чего начать.


 
MJH   (2002-02-24 07:57) [4]

во-первых тебе нужно определиться с тем, откуда у тебя идет сигнал - ты воспроизводишь его сам или нет. если сам - то через что? затем нужно просто этот сигнал копировать в свой буффер и оттуда его уже рисовать (нарисуешь ни что иное как синусоиду)...чтобы получить как в винампе тебе нужно пропустить полученный массив через Быстрое Фурье-преобразование (FFT)
если же ты вопроизвоишь сигнал не сам - через DirectShow, TMediaPlayer - то нужно будет поизвращаться со сдиранием сигнала со звуковушки...чем я не занимался и посоветовать ничего не могу, но пример какой-то валяется...могу кинуть если у тебя имено это


 
Лёша   (2002-02-24 08:54) [5]

2 MJH
Именно Быстрое Фурье-преобразование. Я прочитал об этом в технической литературе по звуковым устройствам. Но там, к сожалению, только в двух словах говорится о наличии таково преобразования. Поэтому буду премного благодарен, если намылишь что-нибудь. А я уж под это попытаюсь подстроить воспроизведение, если получится.


 
Sergey_n   (2002-02-28 02:24) [6]

Лови, только на C++, переводи сам
//-----------------------------------------------------------------------------------------
#define sumdiff1(s,d) {s+=d;d=s-2*d;}
#define sumdiff2(s,d) {d=(s-d)/2;s-=d;}

void CAudioVisualization::fht(float *fz, int n)
{
register int i,j,kx,k1,k2,k3,k4;
register float *fi,*gi,a;
register float s1,c1,c2,s2;

for(k1=1,k2=0;k1<n;k1++) {
for (k3=n>>1;(!((k2^=k3)&k3));k3>>=1);
if (k1>k2) {
a=*(fz+k1);*(fz+k1)=*(fz+k2);*(fz+k2)=a;
}
}
for(k4=4;k4<=n;k4<<=2) {
kx=k4>>3;
k1=k4>>2;
k2=k4>>1;
k3=k2+k1;
for(fi=fz,gi=fz+kx;fi<fz+n;fi+=k4,gi+=k4) {
sumdiff1(*fi,*(fi+k1));
sumdiff1(*(fi+k2),*(fi+k3));
sumdiff1(*fi,*(fi+k2));
sumdiff1(*(fi+k1),*(fi+k3));
if (k4!=4) {
sumdiff1(*gi,*(gi+k1));
*(gi+k2)=(float)(SQRT2*(*(gi+k2)));
*(gi+k3)=(float)(SQRT2*(*(gi+k3)));
sumdiff1(*gi,gi[k2]);
sumdiff1(*(gi+k1),*(gi+k3));
}
}

for(i=1;i<kx;i++) {

j=n*i/4/k1;
c1=(float)cos(2*j*PI/n);
s1=(float)sin(2*j*PI/n);
c2=c1*c1-s1*s1;
s2=2*c1*s1;

for(fi=fz+i,gi=fz+k1-i;fi<fz+n;fi+=k4,gi+=k4) {
mmult(fi+k1,gi+k1,c2,s2);
sumdiff1(*fi,*(fi+k1));
sumdiff1(*gi,*(gi+k1));
mmult(fi+k3,gi+k3,c2,s2);
sumdiff1(*(fi+k2),*(fi+k3));
sumdiff1(*(gi+k2),*(gi+k3));
mmult(fi+k2,gi+k3,c1,s1);
sumdiff1(*fi,*(fi+k2));
sumdiff1(*(gi+k1),*(gi+k3));
mmult(gi+k2,fi+k3,s1,c1);
sumdiff1(*(fi+k1),*(fi+k3));
sumdiff1(*gi,*(gi+k2));
}
}
}
}
//-----------------------------------------------------------------------------------------
inline void CAudioVisualization::mmult(register float *a,register float *b,float c,float d)
{
register float f,g;
f=c*(*a)+d*(*b);
g=d*(*a)-c*(*b);
*a=f;
*b=g;
}
//-----------------------------------------------------------------------------------------

void CAudioVisualization::myfhtf(float *fz, long n)
{
if (n<2) return;
register long i;
register float a,b;

for(i=0;i<n/2;i++) {
a=fz[i*2]; b=fz[i*2+1];
b-=a; a+=b/2; a*=2;
fz[i]=a; fz[n/2+i]=b;
}

myfhtf(fz,n/2);
myfhtf(fz+n/2,n/2);

}



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
14-23746
QWest
2002-06-04 09:04
2002.07.08
Доделал прогу....


1-23614
Александр
2002-06-25 15:06
2002.07.08
ImageList и Image


7-23817
Yaro
2002-04-12 10:08
2002.07.08
Использование стороннего ActiveX a во время выполнения программы.


3-23493
dim-
2002-06-05 23:02
2002.07.08
Из поля


1-23618
Chris
2002-06-25 16:04
2002.07.08
Каким ярлыком запущена программа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский