Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2005-10-19 17:14:35 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 00:03:27
карма: 0

0
Ответов: 209
Рейтинг: 3
#2: 2005-10-21 14:42:00 ЛС | профиль | цитата
Можно использовать элемент BASS_ChlVisibleOcilloRec (найдете в upload). Там есть выходные уровни сигнала записи, достаточно установить порог чуть выше уровня шумов.
карма: 0

0
Ответов: 61
Рейтинг: 2
#3: 2005-10-21 20:46:13 ЛС | профиль | цитата
Насчет BASS_ChlVisibleOcilloRec там ошибка...
Сам файл (pas) зовется hiBASS_ChlVisibleOcilloRec ,
А его внутрености ' unit hiBASS_ChlVisibleOcilloScope; '
Компилятор пишет : Unit name mismatch: 'hiBASS_ChlVisibleOcilloRec'
карма: 1

0
Ответов: 209
Рейтинг: 3
#4: 2005-10-27 12:59:16 ЛС | профиль | цитата
Прошу пардона, случайно заслал неисправленную копию. Вот рабочая:
[code:1]unit hiBASS_ChlVisibleOcilloRec;
interface

uses Windows,Kol,Share,Debug,BASS;

type
THIBASS_ChlVisibleOcilloRec = class(TDebug)
private
VisBuff:PBitmap;
public
_prop_BackColor:TColor;
_prop_Offset:integer;
_prop_Pen:TColor;
_prop_Mode:byte;
_prop_Res:byte;
_prop_FrameClear:boolean;

_data_BackBitmap:THI_Event;
_data_ChannelHandle:THI_Event;
_data_WindowsHandle:THI_Event;

_event_OnLeValue:THI_Event;
_event_OnRiValue:THI_Event;

procedure _work_doDraw(var _Data:TData; Index:word);
end;

implementation

Type TWaveData = array [ 0..2048] of DWORD;

procedure THIBASS_ChlVisibleOcilloRec._work_doDraw;
var i, YPos,Ri,Le : LongInt; X,Y,R,L : SmallInt; YVal : single;
WaveData:TWaveData;
h:cardinal;
Scr:PBitmap;
begin
VisBuff := ReadBitmap(_Data,_data_WindowsHandle,nil);
//h := ReadInteger(_Data,_data_ChannelHandle,0);
h := RECORDCHAN;
scr := ReadBitmap(_Data,_data_BackBitmap,nil);

if _prop_FrameClear then
begin
VisBuff.Canvas.Pen.Color := _prop_BackColor;
VisBuff.Canvas.Brush.Color := _prop_BackColor;
VisBuff.Canvas.Rectangle(0, 0, VisBuff.Width, VisBuff.Height);
if Scr <> nil then
Scr.Draw(VisBuff.Canvas.Handle,0,0);
end;

if BASS_ChannelIsActive(h) <> BASS_ACTIVE_PLAYING then Exit;
BASS_ChannelGetData(h, @WaveData, 2048);
//BASS_ChannelGetData(h, @FFTData, BASS_DATA_FFT1024 or BASS_DATA_FFT_NOWINDOW);

X := 0;
Y := VisBuff.Height div 2;
Ri := 0;
Le := 0;

VisBuff.Canvas.Pen.Color := _prop_Pen;
R := SmallInt(LOword(WaveData[0]));
L := SmallInt(HIword(WaveData[0]));
YPos := Trunc(((R + L) / (2 * 65535)) * _prop_Offset) ;
VisBuff.Canvas.MoveTo(X , Y + YPos);

for i := 1 to 256*_prop_Res do
begin
R := SmallInt(LOword(WaveData[i]));
Ri := Ri+abs(R);
//begin
// _hi_OnEvent(_event_onRiValue,abs(R));
//end;
L := SmallInt(HIword(WaveData[i]));
Le := Le+abs(L);
//begin
//_hi_OnEvent(_event_onLeValue,abs(L));
//end;
YPos := Trunc(((R + L) / (2 * 65535)) * _prop_Offset) ;

case _prop_Mode of
0: VisBuff.Canvas.lineto(X + i*5, Y + YPos);
1:
begin
VisBuff.Canvas.MoveTo(X + i, Y);
VisBuff.Canvas.lineto(X + i, Y + YPos);
end;
2 : VisBuff.Pixels[X + i, Y + YPos] := _prop_Pen;
end;
end;
begin
_hi_OnEvent(_event_onRiValue,Ri/100000);
_hi_OnEvent(_event_onLeValue,Le/100000);
end;
end;

end.[/code:1]
карма: 0

0
Ответов: 8908
Рейтинг: 823
#5: 2005-10-27 14:16:42 ЛС | профиль | цитата
ХЭМ, а где же "hiBASS_ChlVisibleOcilloRec.ini" до кучи?
карма: 19

0
Ответов: 209
Рейтинг: 3
#6: 2005-10-28 11:31:16 ЛС | профиль | цитата
Леонид, ini и icon в upload (по моему без ошибок). Не забывайте также внести этот элемент в файл .../Elements/Delphi/Elements (прошу прощения за отсутствие hic файла, почему то у меня не качается hiccreator)
карма: 0

0
Ответов: 8908
Рейтинг: 823
#7: 2005-10-28 11:41:49 ЛС | профиль | цитата
ХЭМ, весь Upload просмотрел - не нашёл автора ХЭМ, может не то искал?
карма: 19

0
Ответов: 209
Рейтинг: 3
#8: 2005-10-28 17:11:41 ЛС | профиль | цитата
В upload раздел, компоненты, по названию компонента. Сегодня скачивал - все вроде есть (он на последней странице по дате). Вот подкорректировать не удалось. Не знаю как.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#9: 2005-10-28 18:39:54 ЛС | профиль | цитата
Леонид, http://si-tech.ru/hiasm/users/examp/ex.php?com=load&cat=2&sha_id=606

карма: 9

0
Ответов: 8908
Рейтинг: 823
#10: 2005-10-28 19:03:00 ЛС | профиль | цитата
ХЭМ, спасибо, скачал, но мне нужен элемент не усредняющий звук по 256 последних амплитуд, а выдающий текущую амплитуду сигнала: слева две точки - Пуск и Стоп; сверху три - Частота дискретизации, Точность (длина слова: байт, 2 байта,), Выбор канала; справа одна: Выход. Буду пробовать переделать, очень не уверен в результате.
Galkov, в упор не видел этого раздела, спасибо ХЭМ подсказал
карма: 19

0
Ответов: 209
Рейтинг: 3
#11: 2005-10-31 12:52:51 ЛС | профиль | цитата
Леонид, что то не очень понял про текущую амплитуду. Чтобы ее найти надо обработать данные как минимум за период самого низкочастотного колебания. BASS выдает не амплитуды, а текущий уровень (по сэмплам). Если нужно это, то можно перенести строчки:
begin
_hi_OnEvent(_event_onRiValue,Ri/100000);
_hi_OnEvent(_event_onLeValue,Le/100000);
end
в тело цикла считывания буфера WaveData. Только боюсь это притормозит процесс. Я таким образом пытался выкачивать FFT данные (в отдельном элементе на базе этого, убрал все лишние операции, т.е. работу с графикой) все равно через некоторое время тормозится, попытаюсь поработать с размером буфера.
карма: 0

0
Ответов: 8908
Рейтинг: 823
#12: 2005-10-31 14:08:50 ЛС | профиль | цитата
ХЭМ, и я про то же, только другими словами (что чревато не пониманием друг лруга ): мне нужен элемент, который выдаёт с частотой дискретизации уровень сигнала с одного из каналов звуковой карты в текущий момент, без буфера.
карма: 19

0
Ответов: 9906
Рейтинг: 351
#13: 2005-10-31 19:58:27 ЛС | профиль | цитата
Леонид, то чего ты написал - называется ось реального времени
карма: 9

0
Ответов: 8908
Рейтинг: 823
#14: 2005-10-31 20:33:52 ЛС | профиль | цитата
Galkov, (хоть горшком назови...) с возвращением!, видели? Amper вернулся!
карма: 19

0
Ответов: 9906
Рейтинг: 351
#15: 2005-10-31 20:38:08 ЛС | профиль | цитата
Леонид, а вот и не только "назови".

Винда, мягко говоря, не совсем ось реального времени.
А грубо - не для этого форума
карма: 9

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