Вниз
Скачать: CL | DM;

Частота звука.   Найти похожие ветки 

← →
<<BEAST>>   (2005-08-15 14:54) [0]

Подскажите пожалуйста как узнать частоту звука которая поступает в компьютер через микрофон?


← →
vrem   (2005-08-15 15:49) [1]

Звуковой редактор - Sound Forge, Wavelab и т.д. - имеют анализатор спектра - в микрофон поступает частота звука и рисуется в окошке..


← →
programania ©   (2005-08-16 04:05) [2]

В сигнале с микрофона всегда будут много частот
и определять можно только частоту с максимальной амплитудой
и не которая поступает а поступала период времени
поскольку частота в какой-то момент не имеет смысла
определить амплитуды частот сигнала за период можно
быстрым преобразованием Фурье http://www.codenet.ru/progr/alg/fft.php
или суммируя произведение сигнала и sin разных частот.


← →
<<BEAST>>   (2005-08-16 07:46) [3]

Мне нужно вычислить частоту самого громкого звука используя средства делфи.


← →
Jeer ©   (2005-08-16 10:18) [4]

FFT и сортирвка по амплитуде.


← →
Anatoly Podgoretsky ©   (2005-08-16 10:35) [5]

<<BEAST>>   (16.08.05 07:46) [3]
Средств Дельфи для этого нет, придется самому писать.


← →
programania ©   (2005-08-17 03:43) [6]

>Мне нужно вычислить частоту самого громкого звука используя средства делфи

Для определения громкости все равно нужно преобразовать в амплитуды частот
и умножить каждую на коэфициент соответствующий чувствительности человека и все сложить
иначе самая большая амплитуда будет у низких частот хотя громче слышны
средние и основную частоту человек определяет по ним.
Вот есть средства преобразования в частоты для Delphi:
http://alglib.sources.ru/translator/view.php?location=/fft/realfft


← →
programania ©   (2005-08-17 04:00) [7]

ссылка не вся дошла, вся такая:
http://alglib.sources.ru/translator/view.php?location=/fft/realfft&target=delphi


← →
thaddy   (2005-08-17 11:01) [8]

An FFT is not always necessary. if you know what frequency you are looking for (f.e.: guitar tuning or telephone) you can also use a discrete cosine transform. And/or Goertzel. Here&#39;s an example:

function Goertzel_x87(Buffer :Psingle; BLength:Integer; frequency: Single; samplerate: Single):Single;
asm
mov ecx,BLength
mov eax,Buffer
fld x2
fldpi
fmulp
fmul frequency
fdiv samplerate
fld st(0)
fcos
fld x2
fmulp
fxch st(1)
fldz
fsub st(0),st(1)
fstp st(1)

fldl2e
fmul
fld st(0)
frndint
fsub st(1),st(0)
fxch st(1)
f2xm1
fld1
fadd
fscale
fstp st(1)

fldz
fldz
fldz
@loopStart:
fxch st(1)
fxch st(2)
fstp st(0)
fld st(3)
fmul st(0),st(1)
fsub st(0),st(2)
fld [eax].Single
faddp
add eax,4
loop @loopStart
@loopEnd:

fxch st(3)
fmulp st(2), st(0)
fsub st(0),st(1)
fstp result
ffree st(2)
ffree st(1)
ffree st(0)
end;

This was written by Christian[at]savioursofsoul.de


← →
Jeer ©   (2005-08-17 18:10) [9]

Согласен, но этот метод (разновидность ДПФ) применяется, в основном, при небольшом числе гармоник.

function Goertzel(Buffer: array of double; frequency, samplerate: double):double;
var
Qkn, Qkn1, Qkn2, Wkn, Mk : double;
i : integer;
begin
Qkn:=0; Qkn1:=0;
Wkn:=2*PI*frequency/samplerate;
Mk:=2*Cos(Wkn);
for i:=0 to High(Buffer) do begin
  Qkn2 := Qkn1; Qkn1 := Qkn;
  Qkn  := Buffer[i] + Mk*Qkn1 - Qkn2;
end;
Result := sqrt(Qkn*Qkn + Qkn1*Qkn1 - Mk*Qkn*Qkn1);
end;



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
2-1137048958
Spose
2006-01-12 09:55
2006.01.29
Запустить приложение с расширением отличным от .ехе


6-1128707503
Logan
2005-10-07 21:51
2006.01.29
Непонятки с отправкой почты Indy9


15-1136537040
syte_ser78
2006-01-06 11:44
2006.01.29
ткните носом.


2-1136965079
antonio_b
2006-01-11 10:37
2006.01.29
Indy


15-1136064590
Игорь Шевченко
2006-01-01 00:29
2006.01.29
Наталия, с днем рождения!




   Наверх