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

Вниз

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

 
<<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 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.041 c
1-1135427141
JazY
2005-12-24 15:25
2006.01.29
Как перенести данные из таблицы Adotable в Экселевский файл?


1-1135081724
Умом Россию не понять
2005-12-20 15:28
2006.01.29
Редактор свойства


4-1131972338
Суслик
2005-11-14 15:45
2006.01.29
Вопрос про GetKeyState


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


15-1136262014
Viktop
2006-01-03 07:20
2006.01.29
Работа с MS Access





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский