Вверх ↑
Этот топик читают: Гость
Ответов: 63
Рейтинг: 1
#16: 2021-07-13 22:13:37 ЛС | профиль | цитата
Леонид писал(а):
Andrej77rv, в приложенной схеме...

Архив не открывается, поврежден.
карма: 1

0
Ответов: 8888
Рейтинг: 823
#17: 2021-07-13 22:51:10 ЛС | профиль | цитата
Andrej77rv, я скачивал и проверял, никаких повреждений
В IC есть условия "<", а наш форум заменяет их на кавычки, поэтому и выложил архивом. Вот схема, скопируйте и уже в HiAsm-е замените эти кавычки на символы "меньше больше"
схема

Add(ChildPanelEx,15569021,392,119)
{
@Hint=#39:Запуск BASS 2.4 и выбор источника звука|
link(onSound,2111790:doRecData,[])
link(Handle,16358250:Handle,[(398,110)(384,110)(384,159)(335,159)])
}
BEGIN_SDK
Add(EditMultiEx,6822816,21,21)
{
WorkCount=#21:doStart=Начать работу|
EventCount=#21:onStart=Начать работу|22:onSound=Звуковой поток|
DataCount=#46:Handle=Идентификатор основного окна приложения|
Width=671
Height=179
VOffset=35
HOffset=42
link(doStart,15175716:doEvent1,[])
}
Add(Panel,3900892,175,42)
{
Top=65
Width=373
Height=142
Visible=1
Caption=" Выбрать источник звука"
Alignment=2
Point(doVisible)
}
Add(BASS_Version,10183901,126,91)
{
link(onCheckOk,2139448:doEnum,[])
link(onCheckFailed,109118:doMessage,[(166,104)(166,146)])
}
Add(Message,11232751,126,140)
{
Message="Error BASS initialization"
Caption="Error"
Icon=1
}
Add(Message,109118,175,140)
{
Message="Incorrect version of BASS library "
Caption="Error"
Icon=1
}
Add(BASS_Init,4252681,77,91)
{
link(onInit,10183901:doCheck,[])
link(onError,11232751:doMessage,[(117,104)(117,146)])
link(Handle,6822816:Handle,[(97,54)(69,54)])
}
Add(BASS_RecordCenter,12302345,273,98)
{
link(onInit,15862958:doEnumInputs,[])
link(onError,11713735:doMessage,[(310,111)(310,153)])
}
Add(Message,11713735,322,147)
{
Message="InitRecord failed!"
Caption="Error"
Icon=1
}
Add(BASS_RecordInput,15862958,322,98)
{
link(onEnumInputs,16487182:doEvent1,[])
}
Add(BASS_InputControl,9998094,448,98)
{
Volume=1
State=1
link(onSetInput,9127027:doEvent1,[])
link(Volume,10061734:Var1,[(461,83)])
link(State,10061734:Var2,[])
}
Add(Memory,4613851,462,35)
{
Default=Integer(1)
}
Add(ComboBox,4718633,224,91)
{
Left=5
Top=5
Width=185
Height=21
link(onClick,12302345:doInit,[])
}
Add(GetDataEx,10061734,462,78)
{
link(Data,4613851:Value,[])
}
Add(Hub,9127027,490,98)
{
OutCount=3
link(onEvent1,14252892:doWork1,[(512,104)(512,31)(114,31)(114,55)])
link(onEvent2,6822816:onStart,[(522,111)(522,62)])
link(onEvent3,12537631:doStart,[])
}
Add(ChanelToIndex,14252892,126,49)
{
link(onIndex,3900892:doVisible,[])
}
Add(Hub,15175716,49,56)
{
link(onEvent1,14252892:doWork2,[])
link(onEvent2,4252681:doInit,[(66,69)(66,97)])
}
Add(BASS_RecordStart,12537631,525,112)
{
Freq=44100
Channels=2
Mode=1
Name="EarOfComp"
link(onData,6822816:onSound,[(637,125)(637,69)])
}
Add(ComboBox,8950199,399,105)
{
Left=195
Top=5
Width=175
Height=21
Enabled=1
Point(doEnabled)
link(onClick,9998094:doSetInput,[(439,118)(439,104)])
}
Add(BASS_RecordDevices,2139448,175,91)
{
link(onEnum,4718633:doAdd,[])
}
Add(Hub,16487182,364,98)
{
link(onEvent1,8950199:doEnabled,[(389,104)(389,139)])
link(onEvent2,8950199:doAdd,[])
}
END_SDK
Add(MainForm,16358250,329,119)
{
Width=393
Height=248
Caption="Звук"
Point(Handle)
link(onCreate,15569021:doStart,[(370,139)(370,125)])
}
Add(InlineCode,2111790,434,126)
{
@Hint=#146:Выделение сигнала Морзе 46-460 зн/мин из звукового потока на частоте 918 Гц в полосе по уровню -6 дб 150 Гц, подавление вне полосы от 13 до 78 дб.|
WorkPoints=#35:doRecData=Потоковые звуковые данные|
EventPoints=#59:onSignalMaxL=Максимальное значение на входе левый (0-32768)|60:onSignalMaxR=Максимальное значение на входе правый (0-32768)|29:onSignalL=Выход сигнала левый|30:onSignalR=Выход сигнала правый|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|3: |9: public|25: _data_Data:THI_Event;|88: onSignalMaxL:THI_Event; //Максимальное значение на входе левый (0-32768)|89: onSignalMaxR:THI_Event; //Максимальное значение на входе правый (0-32768)|61: onSignalL:THI_Event; //Выход сигнала левый|62: onSignalR:THI_Event; //Выход сигнала правый|0:|53: procedure doRecData(var _Data:TData; Index:word);|4:end;|0:|14:implementation|0:|32:procedure THiAsmClass.doRecData;|17: var St:PStream; |18: len:cardinal;|17: i,j:integer;|57: SoundL,SoundR,SoundAbs,SoundMaxL,SoundMaxR:smallint;|5: |6: begin|18: SoundMaxL:=0;|18: SoundMaxR:=0;|92: St := ReadStream(_data,_data_Data,nil); //Читаем звуковой поток ~0,1 сек.|84: if St = nil then Exit; //Выход, если нет данных.|8: |58: for i:=0 to len do |13: begin |92: St.Read(SoundL,2); //Читаем по 2 байта в SoundL Левый канал.|95: St.Read(SoundR,2); //Читаем по 2 байта в SoundR (Правый канал).|31: SoundAbs:=abs(SoundL);|95: if SoundMaxL<SoundAbs then SoundMaxL:=SoundAbs;//Запоминаем максимальный сигнал левый|25: SoundAbs:=abs(SoundR);|96: if SoundMaxR<SoundAbs then SoundMaxR:=SoundAbs;//Запоминаем максимальный сигнал ghfdsq|10: |76: _hi_onEvent(onSignalL, SoundL); //Выводим значение левый.|85: _hi_onEvent(onSignalR, SoundR); //Выводим значение правый. |9: |12: end; |7: |97: _hi_onEvent(onSignalMaxL, SoundMaxL); //Выводим максимум на индикацию левый.|98: _hi_onEvent(onSignalMaxR, SoundMaxR); //Выводим максимум на индикацию правый.|5: end;|2: |4:end.|
link(onSignalMaxL,16695264:doPosition,[])
link(onSignalMaxR,9362388:doPosition,[])
}
Add(ProgressBar,9362388,511,133)
{
Left=5
Top=25
Width=191
Height=10
Color=32768
Max=32768
ProgressColor=65280
Point(doColor)
}
Add(ProgressBar,16695264,518,126)
{
Left=5
Top=10
Width=191
Height=10
Color=32768
Max=16384
ProgressColor=65280
Point(doColor)
}

Строки №40 и №42

Редактировалось 1 раз(а), последний 2021-07-13 22:52:54
карма: 19

0
Ответов: 63
Рейтинг: 1
#18: 2021-07-13 22:58:02 ЛС | профиль | цитата
Архив не извлекается! И на телефоне пробовал и на компе. А в схеме не понял пока что заменять.
Выложите пожалуйста уже рабочую схему, без замен и редактирования, ещё раз новым запакованным архивом.

Редактировалось 2 раз(а), последний 2021-07-13 23:12:28
карма: 1

0
Ответов: 8888
Рейтинг: 823
#19: 2021-07-14 00:04:37 ЛС | профиль | цитата
Andrej77rv, https://forum.hiasm.com/getfile/39265
карма: 19

0
Ответов: 2059
Рейтинг: 131
#20: 2021-07-14 00:25:43 ЛС | профиль | цитата
Леонид, не, не заменяет. Всё нормально.
SoundAbs:=abs(SoundL);
if SoundMaxL<SoundAbs then SoundMaxL:=SoundAbs;//Запоминаем максимальный сигнал левый
SoundAbs:=abs(SoundR);
if SoundMaxR<SoundAbs then SoundMaxR:=SoundAbs;//Запоминаем максимальный сигнал

А чего так не хотите сделать? https://disk.yandex.ru/d/FHCwQK2-ruJHPQ

https://forum.hiasm.com/topic/57675

Редактировалось 9 раз(а), последний 2021-07-14 05:29:46
карма: 6

0
Ответов: 5227
Рейтинг: 588
#21: 2021-07-14 06:02:08 ЛС | профиль | цитата
flint2 писал(а):
А чего так не хотите сделать? https://disk.yandex.ru/d/FHCwQK2-ruJHPQ

https://forum.hiasm.com/topic/57675


flint2,

а чем тогда свободные ресурсы занимать А так раз в цикле и новый велосипед
10 лет нафиг никому не нужно было и на тебе
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2059
Рейтинг: 131
#22: 2021-07-14 06:56:55 ЛС | профиль | цитата
andrestudio,

Andrej77rv писал(а):
Мне нужно измерять значение громкости по выходным каналам "Line" на звуковой карте и получить данные в цифрах.

Не то?

Add(MainForm,13083241,217,77)
{
Left=20
Top=105
}
Add(InlineCode,13268794,364,119)
{
WorkPoints=#12:doSetVolume7|
VarPoints=#11:VolumeLevel|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|63:uses Debug, Share, Windows, Kol, ActiveX, ActiveKOL, KOLComObj;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|9: public|55: procedure doSetVolume7(var _Data:TData; Index:word);|54: procedure VolumeLevel(var _Data:TData; Index:word);|7: end;|0:|5:const|77:CLASS_IMMDeviceEnumerator : TGUID = '{BCDE0395-E52F-467C-8E3D-C4579291692E}';|75:IID_IMMDeviceEnumerator : TGUID = '{A95664D2-9614-4F35-A746-DE8DB63617E6}';|65:IID_IMMDevice : TGUID = '{D666063F-1587-4E43-81F1-B948E807363F}';|75:IID_IMMDeviceCollection : TGUID = '{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}';|76:IID_IAudioEndpointVolume : TGUID = '{5CDF2C82-841E-4546-9722-0CF74078229A}';|78:IID_IAudioMeterInformation : TGUID = '{C02216F6-8C67-4B5B-9D00-D008E73E0064}';|84:IID_IAudioEndpointVolumeCallback : TGUID = '{657804FA-D6AD-4496-8A60-352752AF4F89}';|0:|32:DEVICE_STATE_ACTIVE = $00000001;|35:DEVICE_STATE_UNPLUGGED = $00000002;|36:DEVICE_STATE_NOTPRESENT = $00000004;|33:DEVICE_STATEMASK_ALL = $00000007;|1: |4:type|21:EDataFlow = TOleEnum;|1: |5:const|20:eRender = $00000000;|21:eCapture = $00000001;|17:eAll = $00000002;|33:EDataFlow_enum_count = $00000003;|1: |4:type|17:ERole = TOleEnum;|1: |5:const|21:eConsole = $00000000;|24:eMultimedia = $00000001;|28:eCommunications = $00000002;|29:ERole_enum_count = $00000003;|1: |4:type|50:IAudioEndpointVolumeCallback = interface(IUnknown)|42:['{657804FA-D6AD-4496-8A60-352752AF4F89}']|4:end;|1: |42:IAudioEndpointVolume = interface(IUnknown)|42:['{5CDF2C82-841E-4546-9722-0CF74078229A}']|100:function RegisterControlChangeNotify(AudioEndPtVol: IAudioEndpointVolumeCallback): Integer; stdcall;|102:function UnregisterControlChangeNotify(AudioEndPtVol: IAudioEndpointVolumeCallback): Integer; stdcall;|57:function GetChannelCount(out PInteger): Integer; stdcall;|92:function SetMasterVolumeLevel(fLevelDB: single; pguidEventContext: PGUID): Integer; stdcall;|98:function SetMasterVolumeLevelScalar(fLevelDB: single; pguidEventContext: PGUID): Integer; stdcall;|70:function GetMasterVolumeLevel(out fLevelDB: single): Integer; stdcall;|76:function GetMasterVolumeLevelScalar(out fLevelDB: single): Integer; stdcall;|112:function SetChannelVolumeLevel(nChannel: Integer; fLevelDB: double; pguidEventContext: PGUID): Integer; stdcall;|118:function SetChannelVolumeLevelScalar(nChannel: Integer; fLevelDB: double; pguidEventContext: PGUID): Integer; stdcall;|90:function GetChannelVolumeLevel(nChannel: Integer; out fLevelDB: double): Integer; stdcall;|94:function GetChannelVolumeLevelScalar(nChannel: Integer; out fLevel: double): Integer; stdcall;|77:function SetMute(bMute: Boolean; pguidEventContext: PGUID): Integer; stdcall;|55:function GetMute(out bMute: Boolean): Integer; stdcall;|88:function GetVolumeStepInfo(pnStep: Integer; out pnStepCount: Integer): Integer; stdcall;|66:function VolumeStepUp(pguidEventContext: PGUID): Integer; stdcall;|68:function VolumeStepDown(pguidEventContext: PGUID): Integer; stdcall;|76:function QueryHardwareSupport(out pdwHardwareSupportMask): Integer; stdcall;|132:function GetVolumeRange(out pflVolumeMindB: double; out pflVolumeMaxdB: double; out pflVolumeIncrementdB: double): Integer; stdcall;|4:end;|1: |44:IAudioMeterInformation = interface(IUnknown)|42:['{C02216F6-8C67-4B5B-9D00-D008E73E0064}']|4:end;|1: |36:IPropertyStore = interface(IUnknown)|4:end;|1: |31:IMMDevice = interface(IUnknown)|42:['{D666063F-1587-4E43-81F1-B948E807363F}']|37:function Activate(const refId: TGUID;|16:dwClsCtx: DWORD;|28:pActivationParams: PInteger;|61:out pEndpointVolume: IAudioEndpointVolume): Hresult; stdCall;|98:function OpenPropertyStore(stgmAccess: DWORD; out ppProperties: IPropertyStore): Hresult; stdcall;|55:function GetId(out ppstrId: PLPWSTR): Hresult; stdcall;|56:function GetState(out State: Integer): Hresult; stdcall;|4:end;|1: |1: |41:IMMDeviceCollection = interface(IUnknown)|42:['{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}']|4:end;|1: |43:IMMNotificationClient = interface(IUnknown)|42:['{7991EEC9-7E89-4D85-8390-6C703CEC60C0}']|4:end;|1: |41:IMMDeviceEnumerator = interface(IUnknown)|42:['{A95664D2-9614-4F35-A746-DE8DB63617E6}']|125:function EnumAudioEndpoints(dataFlow: EDataFlow; deviceState: SYSUINT; DevCollection: IMMDeviceCollection): Hresult; stdcall;|99:function GetDefaultAudioEndpoint(EDF: SYSUINT; ER: SYSUINT; out Dev :IMMDevice ): Hresult; stdcall;|75:function GetDevice(pwstrId: pointer; out Dev: IMMDevice): HResult; stdcall;|96:function RegisterEndpointNotificationCallback(pClient: IMMNotificationClient): Hresult; stdcall;|4:end;|3: |14:implementation|0:|32:procedure SetVolume7(L: double);|41:var endpointVolume: IAudioEndpointVolume;|38:deviceEnumerator: IMMDeviceEnumerator;|25:defaultDevice: IMMDevice;|5:begin|8: try|119: CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator);|80: deviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, defaultDevice);|97: defaultDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, endpointVolume);|39: if endpointVolume = nil then Exit;|56: endpointVolume.SetMasterVolumeLevelScalar(L, nil); |16: except end;|4:end;|0:|36:procedure GetVolume7(var L: single);|41:var endpointVolume: IAudioEndpointVolume;|38:deviceEnumerator: IMMDeviceEnumerator;|25:defaultDevice: IMMDevice;|5:begin|8: try|119: CoCreateInstance(CLASS_IMMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, deviceEnumerator);|80: deviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, defaultDevice);|97: defaultDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, endpointVolume);|39: if endpointVolume = nil then Exit;|51: endpointVolume.GetMasterVolumeLevelScalar(L); |16: except end;|4:end;|0:|35:procedure THiAsmClass.doSetVolume7;|12:var L: real;|5:begin|24: L := ToReal(_Data);|32: if L < 0.0 then l := 0 else|28: if L > 1.0 then L := 1;|19: SetVolume7(L);|4:end;|0:|34:procedure THiAsmClass.VolumeLevel;|13:var L:single;|5:begin|19: GetVolume7(L);|22: dtReal(_Data, L);|4:end;|0:|4:end.|
}
Add(ScrollBar,8386497,322,63)
{
Left=90
Top=130
Max=100
link(onPosition,14799700:doOperation,[(366,69)(366,97)(310,97)(310,125)])
}
Add(Math,14799700,322,119)
{
OpType=3
Op2=100
link(onResult,13268794:doSetVolume7,[])
link(Op1,8386497:Position,[])
}
Add(Math,3246739,364,196)
{
OpType=2
Op2=100
ResultType=0
link(onResult,1180828:doEvent1,[])
link(Op1,13268794:VolumeLevel,[])
}
Add(Timer,16382224,322,196)
{
Interval=100
link(onTimer,3246739:doOperation,[])
}
Add(Label,3217402,504,203)
{
Left=90
Top=45
Width=77
Height=36
Font=[MS Sans Serif,20,1,0,1]
}
Add(Hub,1180828,420,196)
{
link(onEvent1,8386497:doPosition,[(446,202)(446,136)(276,136)(276,69)])
link(onEvent2,3217402:doText,[])
}

карма: 6

0
Ответов: 63
Рейтинг: 1
#23: 2021-07-14 08:17:59 ЛС | профиль | цитата
Леонид писал(а):
Andrej77rv, https://forum.hiasm.com/getfile/39265

Спасибо! Вроде все получилось, работает.

--- Добавлено в 2021-07-14 08:27:01

flint2 писал(а):

Не то?

Читаю форум с телефона, с компа пока не могу. Не могли бы вы выложить схему тоже в zip ?

Редактировалось 1 раз(а), последний 2021-07-14 08:27:01
карма: 1

0
Ответов: 2059
Рейтинг: 131
#24: 2021-07-14 11:36:40 ЛС | профиль | цитата
Andrej77rv, тык я же выше выложил. https://disk.yandex.ru/d/FHCwQK2-ruJHPQ
карма: 6

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