Разработка / помощь в поиске библиотеки эффектов для адресной светодиодной ленты на Qt

comport

✩✩✩✩✩✩✩
28 Июл 2020
2
0
Ищем разработчика, который на заказ поможет найти / реализует библиотеку на Qt с набором световых эффектов, унифицированных для работы на адресной светодиодной ленте и RGB/wRGB подсветке.

Суть проекта: имеется кастомный контроллер (далее - устройство), разработанный сугубо под проект, на нем есть все необходимое железо для работы с лентой или RGB/wRGB подсветкой, а так же программный класс на Qt, который дает API для работы с лентой. Суть работы API очень простая - вызывается программный метод которому передается массив с данными светодиодов и цветом, которые нужно отобразить на диоде. Необходимо разработать код / API / программный класс на Qt с набором методов, каждый из которых будет выполнять на ленте различные световые эффекты, например - радуга, северное сияние, удар молнии (несколько видов), простые переходы и мигания разными цветами на разных участках ленты и т.д. Полный список эффектов будет сформулирован по факту начала работы, эффектов нужно не много, в районе 10-15.

Помимо конкретных эффектов необходимо реализовать возможность перехвата звукового потока на устройстве и визуализации этого потока в виде цветомузыки, то есть - на устройстве имеется звуковая карта с которой нужно снимать звуковой поток при проигрывании и рисовать на ленте или RGB цветомузыку. Есть много устройств на Алиэкспрессе, которые стоят копейки и имеют по 150 эффектов цветомузыки в своем составе, можно ориентироваться на что-то подобное в плане выбора конкретного эффекта цветомузыки или способа реализации, к обсуждению. То есть как это должно работать - основное ПО устройства вызывает метод программного класса данной разрабатываемой библиотеки, который подразумевает какой-то эффект цветомузыки, данный метод при этом получает доступ к текущему воспроизводимому звуку и на основании звуковой волны начинает отображать световой эффект на ленте, причем таких эффектов под музыку будет несколько, может быть просто бегущие огоньки, могут быть мигание разных участков ленты и т.д. К обсуждению.

Помимо цветомузыки необходимо реализовать инструмент, который позволит создавать эффекты для ленты на основании видеоряда, аля эмбилайт (как подсветка у телевизоров, которая подстраивается под изображение). Грубо говоря - берем видео, например северного сияния, анализируем его каким-то образом с помощью софта, который реализуем в рамках проетка и на выходе получаем последовательность с описанием светового эффекта по аналогии с теми, что описаны выше - радуга, удар молнии и т.д., которые впоследствие сможем добавить в нашу разрабатываемую библиотеку. То есть - можно на глаз самим пытаться подбирать сочетания свечения диодов, чтобы это все было похоже на реалистичное северное сияние или удары молнии, а можно проанализировать видео и сгенерировать на его основании готовый набор из последовательности цветов и диодов.. Надеюсь мысль понятна.

Требования:
  • реализация на Qt;
  • удобный способ использования внутри ПО продукта, аля - нужно реализовать некое API или набор методов, чтобы разработчик из основного ПО продукта мог их удобно выполнять;
  • возможность масштабировать эффекты на разную длину ленты или под любой RGB/wRGB, другими словами - эффект не должен быть предназначен к исполнению только на определенном отрезке ленты, например в 100 диодов, лента может быть короткая в 100 диодов, а может быть и длинная в 1000 диодов - нужно, чтобы эффект не просто повторялся на отрезках по 100 диодов, а размазывался на все доступное количество, масштабировался так скажем, чтобы он смотрелся гармонично. То же самое северное сияние - оно должно выглядеть как плавно текущие волны определенных оттенков цвета.. Если одну и ту же такую волну отображать параллельно на 10 отрезках по 100 диодов (на ленте из 1000 диодов) - это будет выглядеть нелепо, а вот если волну "растянуть" на 1000 диодов - это будет выглядеть натурально и красиво;
  • унификация всех эффектов для исполнения как на адресной светодиодной ленте так и на RGB/wRGB подсветке. В библиотеке одни и те же методы должны уметь отправлять сигнал как на ленту так и на подсветку, если это возможно. Естественно - полноценного эффекта северного сияния на RGB подсветке достичь невозможно, но плавное изменение цветов подсветки - возможно и в теории эффект можно унифицировать, к обсуждению.
 

b707_2

★★✩✩✩✩✩
22 Июл 2020
182
51
не вполне понятно, что уже сделано, а что нет. То вы пишете, что имеется "программный класс на Qt, который дает API для работы с лентой" , а в последнем разделе выясняется, что нужно разработать унификацию эффектов на разные типы диодов и разную длину лент .А что тогда делает указанный класс? - унификация работы с разными лентами - дело как раз такого класса нижнего уровня...
Занимаюсь похожей разработкой - написанием API для работы со светодиодными матрицами. По опыту хочу сказать, что нюансы различия железа, типы лент - дело драйвера нижнего уровня. А для ПО управления эффектами на Qt работа с разными лентами должна выглядеть абсолютно одинаково.
 
Изменено:

comport

✩✩✩✩✩✩✩
28 Июл 2020
2
0
не вполне понятно, что уже сделано, а что нет
извиняюсь, что описал не достаточно понятно, попытаюсь еще раз - есть подрядчик, который делает контроллер - саму железку и он же реализует "драйвер нижнего уровня" как вы его назвали, этот драйвер реализуется на Qt, это программный класс с методами для взаимодействия с железом на низком уровне. Больше нет ничего. Нужно как раз таки реализовать библиотеку для работы с лентой и RGB

унификация работы с разными лентами - дело как раз такого класса нижнего уровня
в нашем случае в драйвере нижнего уровня нет такой унификации, есть только возможность управления переферией, а вот как тот или иной эффект должен отображаться на конечном устройстве (ленте или rgb) это уже бизнес-логика самого эффекта по сути.. Если ее зашивать на драйвере нижнего уровня, то не понятно как этот драйвер должен преобразовывать команду на включение множества диодов определенными цветами на ленте в команду последовательной смены свечения rgb... Хотя унификация на нижнем уровне, безусловно, правильное решение и идеальное во всех смыслах, не понятно только как его реализовывать.