AIMP Forum

AIMP for Windows => Дополнения / Addons => Разработка / Development => Topic started by: G-coder on August 30, 2010, 19:29:26

Title: Светодиодная визуализация
Post by: G-coder on August 30, 2010, 19:29:26
Можно ли при написании add-on плагина использвать функции визуализации?
Необходимо вывести спектр на внешний дисплей по USART
Title: Светодиодная визуализация
Post by: Lyuter on August 30, 2010, 19:57:52
Сомневаюсь. А вам нужен только спектр?
Title: Светодиодная визуализация
Post by: G-coder on August 30, 2010, 20:09:14
В принципе нужен только спектр.
Но неплохо было бы еще Waveform. Хотя это из той же оперы.
Названия треков,длительность и т.д. не надо. Они просто не поместятся.
Пока что используется матрица 16х16 больших 8мм светодиодов. Как раз для спектра потянет.
Title: Светодиодная визуализация
Post by: Lyuter on August 30, 2010, 20:14:20
В таком случае, вам хватит функционала предоставляемого для визуализации. Примеры исходников есть где-то на форуме.
Title: Светодиодная визуализация
Post by: G-coder on August 30, 2010, 20:19:22
Суть в том,чтобы внешний дисплей показывал спектр независимо от визуализации.
Title: Светодиодная визуализация
Post by: Lyuter on August 30, 2010, 20:27:27
Сейчас, по другому не выйдет, разве что написать такую "переходник-визуализацию", которая бы сама подгружала другую визуализацию и одновременно производила вывод через USART.
Title: Светодиодная визуализация
Post by: G-coder on August 30, 2010, 20:33:12
Ну или найти красивую годную визуализацию с исходным кодом и прикрутить к ней вывод на дисплей
Title: Светодиодная визуализация
Post by: G-coder on August 30, 2010, 22:48:33
Вопрос: спектр режется линейно или нет?
Если линейно,то при частоте дескретизации 44,1 кГц это по 86 Гц на полосу...Не есть гуд
Или частоты среза можно выставить вручную?
Title: Светодиодная визуализация
Post by: G-coder on August 31, 2010, 01:26:35
ответил сам себе. Линейно. Проверил свипом от 10 до 22050 Гц Ширина полос примерно по 80 Гц
Title: Светодиодная визуализация
Post by: G-coder on August 31, 2010, 14:02:07
Как можно сделать так,чтобы плагин не переходил в полноэкранный режим?
Title: Светодиодная визуализация
Post by: Lyuter on August 31, 2010, 15:39:49
Никак. :'(
Title: Светодиодная визуализация
Post by: G-coder on August 31, 2010, 19:16:13
Да штожеж это за такое то? :'(
Title: Светодиодная визуализация
Post by: Artem on September 01, 2010, 00:05:52
Да штожеж это за такое то? :'(

Имхо, не стандартные идеи... Лучше будет описать, что для чего нужно и зачем.
Title: Светодиодная визуализация
Post by: G-coder on September 01, 2010, 01:56:23
Делаю внешний спектроанализатор.Пока в магаз не завезли нужных мне деталек, я потренировался в отрисовке правильного логарифмического спектра непосредственно в окне визуализации. Просто зеленые полоски с пиками.На весь экран мне не надо так как есть внешний дисплей.


Добавлено через 8 мин. 55 сек.
пока нет возможности собрать железяку для спектра, прикрутил к плагину линейку из 16 светодиодов в две строки и по LPT отображаю просто уровень.Был такой плаг для винампа в свое время.
Title: Светодиодная визуализация
Post by: Artem on September 01, 2010, 10:11:52
Довольно специфическая задача, плагины на это не рассчитаны.

Как вариант, можно и на дисплее рисовать какую-нибудь картинку в добавок
Title: Светодиодная визуализация
Post by: G-coder on September 01, 2010, 14:35:28
не получится картинку. Дисплей-матрица 16х16 самоделка
Title: Светодиодная визуализация
Post by: Artem on September 02, 2010, 23:14:22
ммм. не вижу помех...
Title: Светодиодная визуализация
Post by: G-coder on September 03, 2010, 06:14:17
Сегодня,думаю, фотки покажу. Почти готово уже.
Title: Светодиодная визуализация
Post by: G-coder on September 04, 2010, 21:16:21
Сабж в автономном режиме
Title: Светодиодная визуализация
Post by: G-coder on September 04, 2010, 23:23:19
Издалека лучше видно
Title: Светодиодная визуализация
Post by: Tarik on September 05, 2010, 00:14:40
ох ё.... 256 светодиодов ::) жеесть, я в шоке   :o
Title: Светодиодная визуализация
Post by: G-coder on September 05, 2010, 21:46:40
немного не в тему:
Как в переменоой типа byte изменить значение какого-либо бита?
Title: Светодиодная визуализация
Post by: Lyuter on September 06, 2010, 00:50:43
Как в переменоой типа byte изменить значение какого-либо бита?
Копипаст из FAQ Delphi Word (http://delphiworld.narod.ru/dw.html).
Code: [Select]
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Установка определенного бита в слове

Возвращает AWord с установленным битом номер ABit (c 0 по 15) в значение 1,
если AState = TRUE или 0, если AState = FALSE.

Стоит заметить, что в функцию передается именно номер бита, а не маска.
Проверка на правильный номер не производится.

Зависимости: System
Автор:       Григорий Ситнин, gregor@gregor.ru, Москва
Copyright:   Григорий Ситнин, 2003
Дата:        8 июля 2003 г.
***************************************************** }

function SetBit(AWord: word; ABit: byte; AState: boolean = true): word;
begin
  if AState then
    Result := AWord or (1 shl ABit)
  else
    Result := AWord and (not (1 shl ABit));
end;
Пример использования:

{$APPTYPE CONSOLE}
program test;
uses Bits; // В модуле Bits описана функция SetBit
var
  z: word;
  i: integer;
  s: string;
begin
  z := 0;
  z := setbit(z, 0); // 0000000000000001
  z := setbit(z, 2); // 0000000000000101
  z := setbit(z, 9); // 0000001000000101
  z := setbit(z, 14); // 0100001000000101
  z := setbit(z, 15); // 1100001000000101
  s := '';
  for i := 15 downto 0 do
    s := s + inttostr(Ord(CheckBit(z, i)));
  writeln('value: ', z, ' dec = 1100001000000101');
  writeln('result: ', s);
  z := $FFFF;
  z := setbit(z, 0, false); // 1111111111111110
  z := setbit(z, 2, false); // 1111111111111010
  z := setbit(z, 9, false); // 1111110111111010
  z := setbit(z, 14, false); // 1011110111111010
  z := setbit(z, 15, false); // 0011110111111010
  s := '';
  for i := 15 downto 0 do
    s := s + inttostr(Ord(CheckBit(z, i)));
  writeln('value: ', z, ' dec = 0011110111111010');
  writeln('result: ', s);
end.
Title: Светодиодная визуализация
Post by: G-coder on September 06, 2010, 03:27:41
Спасибо большое. Я сделал через x:=x or 1 shl xx (xx-номер бита)
А DisplayRender точно вызывается раз в 33 мсек?
Я посылаю байт на com порт из DisplayRender, проходят только первые 7,8 посылок и всё отваливается напрочь. Если, например отправить при инициализации плагина, то сразу 32 байта проходят нормально.И из qt_comport с интервалом между посылками меньше 10мсек проходит неограниченный поток без проблем.
Title: Светодиодная визуализация
Post by: G-coder on September 06, 2010, 07:38:36
ВСЁ! Разобрался! Всё работает ! Всем спасибо! Всё замечательно!
Даёшь спектр на 256 светодиодов!
Результат выложу как приеду из командировки.
Title: Светодиодная визуализация
Post by: G-coder on September 13, 2010, 01:33:11
Вот девайс в работе
http://www.youtube.com/watch?v=NC6thVzJ4QQ
Вопорс: Будет ли интересна тема про внешние устройства визуализации?Всякие там светомузыки под управлением  AIMP
Title: Светодиодная визуализация
Post by: Lyuter on September 13, 2010, 01:43:59
Вот девайс в работе
http://www.youtube.com/watch?v=NC6thVzJ4QQ
Завораживает!
Вопорс: Будет ли интересна тема про внешние устройства визуализации?Всякие там светомузыки под управлением  AIMP
Думаю да. На форуме найдутся люди интересующиеся этим.
Title: Светодиодная визуализация
Post by: G-coder on September 13, 2010, 02:28:39
Вживую еще круче. Камера искажает цвет очень сильно. Плюс еще пережато всякими мпегами.
Title: Светодиодная визуализация
Post by: Tarik on September 13, 2010, 09:37:39
Вживую еще круче. Камера искажает цвет очень сильно. Плюс еще пережато всякими мпегами.
А на основе чего сделан девайс? МК?


Добавлено через 33 сек.
зря наверное спросил, судя из подписи - мега 8 :)


Добавлено через 1 мин. 15 сек.
А может это в отдельную тему спихнуть?
Title: Светодиодная визуализация
Post by: G-coder on September 13, 2010, 13:56:58
Дак я вот и спросил, интересно ли будет,чтоб отдельную тему создать.
Контроллер мега8. Не слезу с него пока всё не выжму хотя бы на 8МГц внутреннего тактирования.
Только вот спихивать бездумно,думаю,не стоит, а сначала поразжевать немножко что да как.
Title: Светодиодная визуализация
Post by: G-coder on September 13, 2010, 14:39:29
А где создать такую тему? в Разработке?
Title: Светодиодная визуализация
Post by: Lyuter on September 13, 2010, 14:43:56
Думаю, лучше в https://www.aimp.ru/forum/index.php?board=12.0
Title: Светодиодная визуализация
Post by: G-coder on September 13, 2010, 16:20:54
Вот только хорошего,годного плагина со свистелками и перделками я не написал.Делал то для себя, плюс дуб в Делфи и си++.Кодю для контороллеров, пока только на ассемблере.
В окне визуализации простенький спектр зеленого цвета прологарифмированный и выровненный коэффициентами, сделанный на заготовке из СДК, не растягивается на весь экран(я не приследовал такой цели и даже хотел отключить такую возможность, но увы). Можно его просто в качестве примера приложить вместе со схемой и прошивкой (если кто-то рискнет повторить мою железяку), описать формирование и отправку буфера изображения, и проч.
Title: Светодиодная визуализация
Post by: Lyuter on September 13, 2010, 17:18:02
G-coder
Я вот не пойму, почему ты ещё не создал тему? Если она не подойдет к теме раздела, модераторы её обязательно перенесут, не беспокойся об этом.

P.S. Ну мы и нафлудили тут... Создавай новую тему, там продолжим ;D .
Title: Светодиодная визуализация
Post by: Artem on September 13, 2010, 21:27:48
Пока не создавайте - разделим эту, тогда продолжите =)
Title: Re: Светодиодная визуализация
Post by: Зелёный on September 17, 2010, 14:48:03
Чего?..
Title: Re: Светодиодная визуализация
Post by: Tarik on September 17, 2010, 19:20:39
какой ещё дисплей?
Title: Re: Светодиодная визуализация
Post by: smaleyuser on September 30, 2010, 11:08:57
Вот только хорошего,годного плагина со свистелками и перделками я не написал.Делал то для себя, плюс дуб в Делфи и си++.Кодю для контороллеров, пока только на ассемблере.
В окне визуализации простенький спектр зеленого цвета прологарифмированный и выровненный коэффициентами, сделанный на заготовке из СДК, не растягивается на весь экран(я не приследовал такой цели и даже хотел отключить такую возможность, но увы). Можно его просто в качестве примера приложить вместе со схемой и прошивкой (если кто-то рискнет повторить мою железяку), описать формирование и отправку буфера изображения, и проч.
Интересная тема, хотел бы посмотреть на схемку. Насчет хорошей програмнной обертки к железке, могу допилить свой плаг под твой нужды, у меня он работает с ардиной(не все так круто как у тебя я просто меняю яркость светодиодов  :)). Вот тут можно посмотреть https://www.aimp.ru/forum/index.php?topic=21540.msg106768#msg106768
Title: Re: Светодиодная визуализация
Post by: G-coder on September 30, 2010, 17:05:14
...не все так круто как у тебя...
да ничего крутого=) костылёчки в виде логарифма и коэффициентов, так как БАСС походу очень уж упрощенно ДПФ делает=) схэмэ простой ощинь. как индикация в часах. Берем байы по усарту, складываем в кучку в оперативке, а по прерыванию таймера динамически выводим.
Ща я отосплюсь после командировки, возьму надфиль с тестером, и сделаю еще проще.Ну и сюда оформлю.
...я просто меняю яркость светодиодов... Это как? Горит-не горит или ШИМ?
Я делал по LPT вот так:
Code: [Select]
...
uses
  Windows, AIMP_SDK,classes,sysutils;
  function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';
...
var
volchar: array[0..8] of byte=(0,1,3,7,15,31,63,127,255); // маска-столбик
...
procedure TAIMP2DemoVisual.DisplayRender(DC: HDC; AData: PAIMPVisualData); stdcall;
var
...
data,olddata:byte;
...
data:=Trunc((AData^.LevelR+AData^.LevelL)/24);
  if data>9 then data:=9; //на всякий
  if olddata<=data then olddata:=data //плавный спад чтоб резко не прыгали
    else olddata:=olddata-1 ;
  Out32(888, volchar[olddata]);
вот както так: http://www.youtube.com/watch?v=Ewxo87wg5jk
Title: Re: Светодиодная визуализация
Post by: G-coder on September 30, 2010, 17:16:47
ардино сам собирал или покупал?
ардино конечно хорошо, но ради таких мелких задач дороговато будет=)
я уж по страинке, с даташитами,ассемблером и напильником=) получается дешево и быстро(скорость выполнения кода)
Title: Re: Светодиодная визуализация
Post by: smaleyuser on September 30, 2010, 17:22:27
да ничего крутого=)
я просто меняю яркость светодиодов... Это как? Горит-не горит или ШИМ?
Программный шим по 4 светика на канал + 4 фон. А круто я имел ввиду, что у тебя сделан сам спектор на светиках.
костылёчки в виде логарифма и коэффициентов
Да, тоже пришлось нормализовать уровни и суммировать, иначе никак.
ардино сам собирал или покупал?
  Покупал, для новичка в МК самое то, смешно для такой задачи 328 использовать, но иначе я бы еще не скоро стал бы практиковаться )
Title: Re: Светодиодная визуализация
Post by: G-coder on September 30, 2010, 17:31:22
Я начал с меги8. Она дешовая, шьётся по 5 проводкам(+5 резюков и 3 диода). Поставил Шпротеус, и если железку собирать влом, то симулирую в нём.
Title: Re: Светодиодная визуализация
Post by: smaleyuser on September 30, 2010, 17:35:21
Я начал с меги8. Она дешовая, шьётся по 5 проводкам(+5 резюков и 3 диода). Поставил Шпротеус, и если железку собирать влом, то симулирую в нём.
Может и я дорасту и наконец не буду фюзы забывать выставлять правильно, а так это хобби, на которое к сожелению нет достаточно времени.
Title: Re: Светодиодная визуализация
Post by: G-coder on September 30, 2010, 17:44:02
Может и я дорасту и наконец не буду фюзы забывать выставлять правильно
+5  ;D
я RSTDISBL однажды выставил ;D
Теперь я делаю по-другому: перед прошивкой читаю фьюзы, меняю в основном только тактовую частоту и пишу обратно