Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

Звуковая...   Найти похожие ветки 

 
Sergo ©   (2002-04-15 10:47) [0]

Не подскажете, как при снятии сигнала со входа звукахи, брать только амплитудное (положительное) значение сигнала, не принимая на счет текущее изменение амплитуды?
У меня есть мысль, но я в ней не уверен, может чем нибудь поможете?


 
VictorT ©   (2002-04-15 11:41) [1]

Проинтегрируй сигнал.


 
Sergo ©   (2002-04-15 11:48) [2]

>VictorT ©
Мысль, спасибо!


 
VictorT ©   (2002-04-15 11:57) [3]

Честно говоря, не совсем понял вопрос, и ответил по принцыпу: какой вопрос - такой ответ :) Но я рад, что тебе это помогло.


 
Sergo ©   (2002-04-15 12:05) [4]

Смысл такой: я подаю на звукаху сигнал определенной амплитуды, к примеру 20db, и эта амплитуда будет изменяться очень редко. Если сразу выводить значение сигнала например в Label, то будет показываться изменение амплитуды от 20db до -20db (синусоида) и обратно, мне же нужно всегда выводить только самое максимальное положительное значение амплитуды.


 
VictorT ©   (2002-04-15 12:27) [5]


> У меня есть мысль, но я в ней не уверен, может чем нибудь
> поможете?

А какя мысль?


 
MBo ©   (2002-04-15 13:01) [6]

Abs


 
Sergo ©   (2002-04-15 13:50) [7]

>VictorT ©
Мысль такая: загонять в массив и брать максимальное (но я в этом пока не уверен)
>MBo
Abs просто из отрицательных сделает положительные, а выводится все равно будет изменение амплитуды во времени (например 20,15,10,5,0,5,10,15,20: т.е будет выводится значение уровня сигнала в момент выборки), а мне нужно только амплитудное значение например идет в данный момент сигнал с амплитудой 20db, а через час сменится на 19 вот только и изменение амплитуды мне и нужно выводить. Уф...объяснил как мог, езвиняйте ежели что.


 
MBo ©   (2002-04-15 13:53) [8]

не все понял. делаешь переменную MaxAmp, относительно нее считаешь, при превышении обновляешь ее


 
Sergo ©   (2002-04-15 13:59) [9]

>MBo ©
Ты имеешь в Waveform?
А если амплитуда наоборот уменьшится MaxAmp отследит это?


 
VictorT ©   (2002-04-15 13:59) [10]

Я предлагаю так: во-первых, как сказал MBo, приводишь значение сигнала к абсолютному значению, во-вторых, при каждой выборке значения сигнала запоминаешь предыдущее значение, в-третьих, сравниваешь предыдущее значение сигнала с текущим, и если оно больше, то выводишь его в Label. Если непонятно, то напишу в виде программы.


 
Sergo ©   (2002-04-15 14:02) [11]

>VictorT ©
В принципе понятно, но если не трудно напиши пожалуйста.


 
VictorT ©   (2002-04-15 14:11) [12]

int value;
int value1 = 0;
while(условие продолжения цикла) {
value = abs(GetSignal());
if (value1 > value)
Label1->Caption = FloatToStr(value1);
value1 = value;
}


З.Ы. Извиняюсь, что Си, но думаю ты поймёшь.


 
Sergo ©   (2002-04-15 14:53) [13]

Спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2002.05.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
1-73195
Destroyer
2002-05-13 14:51
2002.05.23
Проблема с размером файла более 64К


14-73371
Masa
2002-04-14 01:29
2002.05.23
Кто фанат пива - отзовись !!!


1-73158
Грифон
2002-05-12 22:44
2002.05.23
однооконный многофайловый редактор


1-73141
DenNNis
2002-05-13 14:16
2002.05.23
Что за глюк такой???


6-73333
Programmer1
2002-03-12 16:37
2002.05.23
Создание сетевого диска