Вверх ↑
Ответов: 8978
Рейтинг: 825
#1: 2010-02-05 21:41:05 ЛС | профиль | цитата
[offtop]Dilma, конечно, человек новый и ещё мало изучил, поэтому и испугался этих названий [/offtop]
------------ Дoбавленo в 21.56:
[b]Radio[/b], набросал "скелет" (стерео, 44100), создайте папку C:soundtest и эксперементируйте :D

Add(Button,13708268,399,280)
{
Left=15
Top=45
Enabled=1
Caption="Пуск"
Point(doEnabled)
link(onClick,122501:doWork2,[])
}
Add(Button,14140950,399,329)
{
Left=15
Top=85
Caption="Стоп"
link(onClick,13854669:doWork2,[])
}
Add(BASS_RecordStart,5066922,567,280)
{
Freq=44100
Channels=2
Name="mainrecfile"
link(FileName,304640:FString,[(573,268)(552,268)(552,325)(517,325)])
}
Add(BASS_Version,10183901,161,77)
{
link(onCheckOk,12302345:doInit,[])
link(onCheckFailed,109118:doMessage,[(205,90)(205,132)])
}
Add(Message,11232751,161,126)
{
Message="Error BASS initialization"
Caption="Error"
Icon=1
}
Add(Message,109118,217,126)
{
Message="Incorrect version of BASS library "
Caption="Error"
Icon=1
}
Add(MainForm,16358250,28,63)
{
Height=157
Caption="Запись звука"
Point(Handle)
link(onCreate,4252681:doInit,[])
}
Add(BASS_Init,4252681,105,77)
{
link(onInit,10183901:doCheck,[])
link(onError,11232751:doMessage,[(149,90)(149,132)])
link(Handle,16358250:Handle,[(125,65)(79,65)(79,107)(34,107)])
}
Add(BASS_RecordCenter,12302345,217,77)
{
link(onInit,15862958:doEnumInputs,[])
link(onError,11713735:doMessage,[(261,90)(261,132)])
}
Add(Message,11713735,273,126)
{
Message="InitRecord failed!"
Caption="Error"
Icon=1
}
Add(BASS_RecordInput,15862958,273,77)
{
link(onEnumInputs,4718633:doAdd,[])
}
Add(BASS_InputControl,9998094,371,84)
{
Volume=1
State=1
link(onSetInput,16693681:doEvent1,[])
link(Volume,10061734:Var1,[(384,69)])
link(State,10061734:Var2,[])
}
Add(Memory,4613851,385,21)
{
Default=Integer(1)
}
Add(ComboBox,4718633,322,77)
{
Left=5
Top=10
Width=150
Height=21
Point(doEnabled)
link(onClick,9998094:doSetInput,[])
}
Add(GetDataEx,10061734,385,64)
{
link(Data,4613851:Value,[])
}
Add(Hub,16693681,420,84)
{
link(onEvent1,4932634:doData,[])
link(onEvent2,13661698:doData,[(441,97)(441,132)])
}
Add(Hub,10234213,497,84)
{
link(onEvent1,890969:doStart,[])
link(onEvent2,13708268:doEnabled,[(523,97)(523,191)(387,191)(387,286)])
}
Add(DoData,4932634,448,84)
{
Data=Integer(1)
link(onEventData,10234213:doEvent1,[])
}
Add(DoData,13661698,448,126)
{
Data=Integer(0)
link(onEventData,4718633:doEnabled,[(488,132)(488,165)(313,165)(313,125)])
}
Add(BASS_RecordStart,890969,532,84)
{
Freq=44100
Channels=2
Mode=1
Name="mainrecstream"
link(onData,2111790:doRecData,[])
}
Add(FormatStr,304640,511,280)
{
DataCount=1
Mask="C:soundtestst%1.wav"
Point(FString)
link(onFString,5066922:doStart,[])
link(Str1,13501777:FormatTime,[])
}
Add(Time,13501777,511,203)
{
Format="D_M_Y_h_m_s"
}
Add(Hub,16078764,469,280)
{
link(onEvent1,304640:doString,[])
link(onEvent2,8604517:doOff,[(501,293)(501,363)])
}
Add(Hub,11358277,469,329)
{
link(onEvent1,5066922:doStop,[(557,335)(557,293)])
link(onEvent2,8604517:doOn,[(493,342)(493,370)])
}
Add(LED,8604517,518,350)
{
Left=320
Top=60
ColorOn=32768
ColorOff=255
Value=0
}
Add(InlineCode,2111790,580,91)
{
WorkPoints=#35:doRecData=Потоковые звуковые данные|
EventPoints=#30:onSignalR=Выход правого канала|29:onSignalL=Выход левого канала|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|11: private |16: Res:double; |9: public|25: _data_Data:THI_Event;|24: onSignalR:THI_Event;|24: onSignalL:THI_Event;|0:|53: procedure doRecData(var _Data:TData; Index:word);|4: |4:end;|0:|14:implementation|0:|32:procedure THiAsmClass.doRecData;|17: var St:PStream; |18: len:cardinal;|28: _Left,_Right:smallint; |17: i:integer; |6: begin|79: St := ReadStream(_data,_data_Data,nil); //Читаем звуковой поток ~0.1 сек.|71: if St = nil then Exit; //Выход, если нет данных.|110: len := St.Size div 4; //Количество дискретных значений в потоке (2 канала по 2 байта).|26: for i:=0 to len-1 do|12: begin|96: St.Read(_Left,2);St.Read(_Right,2); //Читаем по 2 байта в переменные _Left и _Right.|132: Res:=Res*0.99996+(abs(_Left)+abs(_Right))*0.00002; //Делаем с данными, что хотим, в данном случае детектируем и усредняем.|11: end;|42: _hi_onEvent(onSignalR, trunc(Res)); |5: end;|1: |4:end.|
link(onSignalR,13507840:doEvent1,[])
}
Add(ProgressBar,15463304,658,91)
{
Left=80
Top=70
Width=220
Height=10
Color=32768
Max=35768
ProgressColor=65280
}
Add(TrackBar,8691829,721,133)
{
Left=70
Top=40
Width=240
Max=35768
TickCount=1024
Position=32000
}
Add(TrackBar,8176844,665,133)
{
Left=70
Top=85
Width=240
Max=35768
TickCount=1024
Position=8192
TickMarks=1
}
Add(Hub,13507840,630,91)
{
link(onEvent1,15463304:doPosition,[])
link(onEvent2,11276955:doCompare,[(651,104)(651,181)])
}
Add(If_else,11276955,658,175)
{
Type=2
link(onTrue,4349316:doCompare,[])
link(onFalse,10632077:doWork2,[(701,188)(701,223)])
link(Op2,8176844:Position,[])
}
Add(If_else,4349316,714,175)
{
Type=2
link(onTrue,10632077:doWork1,[(754,181)(754,216)])
link(Op2,8691829:Position,[])
}
Add(HubEx,122501,455,280)
{
link(onEvent,16078764:doEvent1,[])
}
Add(HubEx,13854669,441,329)
{
link(onEvent,11358277:doEvent1,[])
}
Add(ChanelToIndex,10632077,763,210)
{
link(onIndex,2058479:doData,[])
}
Add(ChangeMon,2058479,805,210)
{
link(onData,7147787:doEvent,[])
}
Add(IndexToChanel,7147787,847,210)
{
Data=Integer(1)
link(onEvent1,122501:doWork1,[(900,216)(900,253)(459,253)])
link(onEvent2,13854669:doWork1,[(891,223)(891,245)(445,245)])
}

карма: 19

1
Голосовали:Radio