Вверх ↑
Этот топик читают: Гость
Ответов: 1342
Рейтинг: 31
#1: 2017-02-14 13:08:59 ЛС | профиль | цитата
можно ли как то отследить уровень звука, который выводиться на колонки??


карма: 2

0
vip
#1.1контекстная реклама от партнеров
Ответов: 196
Рейтинг: 43
#2: 2017-02-14 13:34:09 ЛС | профиль | цитата
Rysik, Вот что тебе нужно:
http://forum.hiasm.com/topic/64873
карма: 2

0
Ответов: 537
Рейтинг: 14
#3: 2017-02-14 14:08:24 ЛС | профиль | цитата
Можно записать и отслеживать

Add(BASS_RecordCenter,14215196,147,315)
{
link(onInit,5066922:doStart,[])
}
Add(BASS_RecordStart,5066922,203,315)
{
Freq=16000
Mode=1
PColor(Freq,16711680)
link(onData,4781887:doDetect,[])
}
Add(VolumeDetector,4781887,259,322)
{
DetectLength=100
Delay=0
Point(doDetectLevel)
link(onDetect,3584596:doRecData,[])
}
Add(MainForm,13083241,98,301)
{
Left=20
Top=105
Width=135
link(onCreate,14215196:doInit,[])
}
Add(ProgressBar,5705136,385,329)
{
Left=40
Top=5
Width=40
Height=255
Color=32768
Max=10000
Kind=1
ProgressColor=65280
}
Add(InlineCode,3584596,322,315)
{
WorkPoints=#37:doStart=Установка начальных значений |35:doRecData=Потоковые звуковые данные|
EventPoints=#24:onSignalUpp=Выше задания|24:onSignalLow=Ниже задания|26:onMax=Максимальный уровень|
DataPoints=#34:UpperLimit=Задание верхнего уровня|33:LowerLimit=Задание нижнего уровня|39:SmoothingFactor=Коэффициент сглаживания|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|22: _SoundVol:double; |6: |9: public|25: _data_Data:THI_Event;|57: UpperLimit:THI_Event; //Задание верхнего уровня|56: LowerLimit:THI_Event; //Задание нижнего уровня|57: SmoothingFactor:THI_Event; //Коэффициент сглаживания|46: onSignalUpp:THI_Event; //Выше задания|46: onSignalLow:THI_Event; //Ниже задания|54: onMax:THI_Event; //Максимальный уровень|4: |51: procedure doStart(var _Data:TData; Index:word);|53: procedure doRecData(var _Data:TData; Index:word);|4:end;|0:|14:implementation|0:|31:procedure THiAsmClass.doStart; |6: begin|15: _SoundVol:=0;|5: end;|0:|32:procedure THiAsmClass.doRecData;|17: var St:PStream; |18: len:cardinal;|55: _Sound,SoundAbs,_LowerLimit,_UpperLimit:smallint; |15: i:integer;|31: _Smooth, _NoSmooth:double;|6: begin|79: St := ReadStream(_data,_data_Data,nil); //Читаем звуковой поток ~0.1 сек.|71: if St = nil then Exit; //Выход, если нет данных.|101: len := St.Size div 2; //Количество дискретных значений в потоке (по 2 байта).|86: _Smooth:= ReadReal(_data,SmoothingFactor,0.999); //Читаем коэффициент сглаживания|27: _NoSmooth:=1-_Smooth; |81: _UpperLimit:= ReadInteger(_data,UpperLimit,8000); //Читаем задание максимума|86: _LowerLimit:= ReadInteger(_data,LowerLimit,4000); //Читаем задание минимума |26: for i:=0 to len-1 do|12: begin|84: St.Read(_Sound,2); //Читаем 2 байта в переменную _Sound |75: if _Sound<0 then //Детектируем звуковые данные|30: SoundAbs:= -_Sound|33: else SoundAbs:=_Sound;|96: _SoundVol:=_SoundVol*_Smooth+SoundAbs*_NoSmooth; //Сглаживаем результирующее значение|11: end;|85: if _SoundVol>_UpperLimit then _hi_OnEvent(onSignalUpp,1) //Выше верхнего уровня|85: else _hi_OnEvent(onSignalUpp,0); //Ниже верхнего уровня|5: |84: if _SoundVol<_LowerLimit then _hi_OnEvent(onSignalLow,1) //Ниже нижнего уровня|84: else _hi_OnEvent(onSignalLow,0); //Выше нижнего уровня|5: |79: _hi_OnEvent(onMax,_SoundVol); //Выводим текущее значение для индикации |5: end;|1: |4:end.|
link(onMax,5705136:doPosition,[])
}
карма: 4

1
Голосовали:Rysik
Ответов: 1342
Рейтинг: 31
#4: 2017-02-14 15:45:45 ЛС | профиль | цитата
Sersey писал(а):
Можно записать и отслеживать


Спасибо
карма: 2

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)