Сравнить звук между 2 звуковых дорожек .
- Войдите на сайт для отправки комментариев
Приветствую всех !
Имею несколько тюнеров для потового вещания (с телевышки на сервер , сервер в IPTV)
К примеру , есть 3 тюнера , на каждом тюнере по одному каналу(скажу сразу , все тюнера одинаковые , и на всех тюнерах стоит средняя громкость звука ) .
Всё работает хорошо , но иногда случается скачок напряжение , либо какие-то работы в телевышки и каналы перескакивают на первый номер канала , то есть три тюнера с каналами 1 , 2 , 3 перескакивают на первый номер канала .
Если я знаю что первый тюнер на первом канале остается не тронутым , а остальные тюнера перескакивают на первый канал , получается есть за что зацепиться .
Сразу же подумал о звуковых дорожках , если звуковая дорожка первого тюнера будет равняться второму тюнеру , значит канал перескочил .
Написал скетч
int analogPin = A4; // вход с первого тюнера , подтянут резистором на 10 ком к земле , земля тюнера к земле ардуино
int analogPin2 = A5;//вход со второго тюнера , подтянут резистором на 10 ком к земле , земля тюнера к земле ардуино
int analogValueRaw;
int analogValueRaw2;
String str = "Sensor’s 1 value is: ";
String str2 = "Sensor’s 2 value is: ";
int p = 11; //выход на пьезо динамик
void setup() {
// put your setup code here, to run once:
pinMode(analogPin, INPUT);
pinMode(analogPin2, INPUT);
Serial.begin(9600);
Serial.println("Begin analog input test");
pinMode(p, OUTPUT);
}
void loop() {
analogValueRaw = analogRead(analogPin);
analogValueRaw2 = analogRead(analogPin2);
Serial.println(str + analogValueRaw );
Serial.println(str2 + analogValueRaw2 );
if (analogValueRaw2 == analogValueRaw) { //если вход с первого тюнера будет равнятся входу со второго тюнера , значит нужно пищать
Serial.println("Тюнера переключились !!!");
tone (p, 500); //включаем на 500 Гц
delay(10);
noTone(p);
}
delay(10);
}
НО , все работает никак надо , если даже не тюнера на разных каналов , условие времени от времени срабатывает , или не срабатывает , в общем живёт своей жизнью .
Если есть идеи как это реализовать , подскажите пожалуйста ....
Тебе бы почитать учебники годок-другой, чтобы хоть немножко понимать, что творишь, прежде чем такие хитрые планы придумывать.
Если есть идеи как это реализовать , подскажите пожалуйста ...
То, что Вы задумали - очень непросто.
Попробуйте покопать в сторону: "а нельзя ли просто спросить у тюнера на каком он сейчас канале". Если найдёте такую возможность, то дальнейшее несложно.
НО , все работает никак надо , если даже не тюнера на разных каналов , условие времени от времени срабатывает , или не срабатывает , в общем живёт своей жизнью .
Это все потому, что ты его готовить не умеешь.)))
Для того, чтобы звуковая дорожка первого тюнера равнялась звуковой дорожке второго тюнера - нужно дорожки и сравнивать (читай - форму сигнала), а не уровни в текущий момент (отдельные точки). Иногда уровни в определенный момент времени могут совпадать и на разных каналах. )))
ЗЫ: Интересно, как решать данную задачу в новогоднюю ночь - Когда речь президента по всем каналам одновременно транслируют? ))
Даже если через analogRead читать один и тот же аналоговый сигнал на разных входах ардуино - будет разница !
...а не уровни в текущий момент (отдельные точки).
А кто читает "в текущий момент"?
ТС читает сигналы с разных каналов с интервалом более 0.1 мс. Я даже не говорю о том, что уровень громкости в разных каналах может банально не совпадать.
В общем:
1. Читать нужно одновременно. Что можно сделать, например, на некоторых моделях stm32.
2. Сравнивать нужно грамотно. Например, не проверять на равенство, а вычислять коэффициент корреляции.
МДА, пока вариант Евгения Петровича кажется более простым ))
Ну самый то простой вариант разобраться с питанием, не ? :)
Смотрите что интересно , я когда настраиваю тюнер , оставляю только 1 канал , все остальные каналы удаляю .
Со временем удаленные каналы возвращаются(сами по себе) , а уже затем , как я писал вышел ,происходит либо скачок , либо работы на телевышке , и все тюнера переключаются на первый номер канала .
И еще одно , стоит стойка тюнеров, штук 5 к примеру .
на экранчиках всех тюнеров 001 (то есть первый канал , нужный канал , остальные все удалены )
Со временем когда удаленные каналы начинают добавляться , это происходит очень интересно.
После удаление всех каналов на стойке из 5ти тюнеров картина такая :
001
001
001
001
001
Спустя пару недель :
001
002
003
004
005
Но каналы по прежнему на месте , а потом происходит либо скачок , либо телевышка , и все каналы переключаться на первый номер канала .
Стоит юпс , для тюнеров и сервера хватает на пол часа .
Какие то странные тюнеры - сами перенастраиваются ... нах... такая самодеятельность !
Тюнера китай , на оригинальных (нормальных тюнерах ) каналы не переключается , знаю что можно поменять тюнера , но интересно именно поэкспериментировать .
Тогда настроить все ресиверы на все каналы и отслеживать вывод на индикатор (что там за индикатор ?)
Тогда настроить все ресиверы на все каналы и отслеживать вывод на индикатор (что там за индикатор ?)
Примерно вот такой индикатор
Примерно вот такой индикатор
Ну, тут стопудово #2
Тебе ведь не нужно знать, на какой канал произошло самопроизвольное переключение? Важен сам факт переключения? Тогда можно просто отслеживать импульсы обновления информации на индикаторе. В момент переключения индикатор гаснет, будет отсутствие импульсов.
Не совсем ясна конечная цель. Ну, допустим, определено, что тюнер ребутнулся - дальше что?
Анализировать что выводится на индикатор по состоянию сигналов на сегментах и если канал не верный - эмулировать нажатие кнопок переключения каналов +- и выставлять нужный канал ...
В таком случае зачем анализировать что выводится на индикатор? Ребут был - выставляй на заданный канал.
Сразу же подумал о звуковых дорожках , если звуковая дорожка первого тюнера будет равняться второму тюнеру , значит канал перескочил .
Я думаю что проще сравнивать звуковые каналы операционным усилителем по такой схеме примерно.
При синфазных сигналах на выходе ничего не будет, а если есть разница то она усилится.
Но нужно чувствительность входов настраивать.
А если через аналоговые пины сравнивать, то сигнал необходимо пропустить через фильтр НЧ, частоту среза подбирать придется (80Гц 12Дб/окт) например. Так меньше шансов поймать разницу в каналах при синфазных сигналах, ну и программно предусмотреть допустимую дельту от ложных срабатываний.
а настроить на первый канал каждого тьюнера нужный TV канал не вариант?