Giter VIP home page Giter VIP logo

ledfx / ledfx Goto Github PK

View Code? Open in Web Editor NEW
1.2K 22.0 142.0 250.25 MB

LedFx is a network based LED effect engine designed to deliver advanced real-time audio effects to a wide variety of devices.

Home Page: https://ledfx.app

License: GNU General Public License v3.0

Python 51.15% JavaScript 0.16% HTML 0.25% CSS 0.35% TypeScript 48.09%
python music-visualizer audio-processing qlc led-strips react webinterface e131 raspberry-pi microphone

ledfx's Introduction

Welcome to LedFx ✨ Making music come alive!

Build Status License Documentation Status Discord Contributor Covenant

image

What is LedFx?

LedFx makes your LEDs dance to audio! What LedFx offers is the ability to take audio input, and instantaneously processes the audio into realtime light show to multiple LED strips/matrix. No need to spend hours on end to program one song to program your LEDs, as LedFx will do this all for you!

LedFx real-time LED strip music visualization effect controller using is a network based devices (ESP8266/ESP32/Raspberry Pi 4) with support for advanced real-time audio effects! LedFx can control multiple devices and works great with cheap ESP8266/ESP32 nodes allowing for cost effective synchronized effects across your entire house!

Demos

Visit our website to see LedFx in action!

You can also join our Discord where community members show off their projects. Check out the #projects or #showcase channels.

📑 Quick start guide and documentation📖

Head over to releases to get the latest releases for Windows and Mac. For linux, use pip.

Bleeding edge (Experimental)

If you want the absolute bleeding edge and are not afraid of using the terminal, take a look at the detailed installation instructions here: Installation documentation.

Documentation

Documentation for the latest release can be found here: Stable documentation

Documentation built against this repository can be found here: Latest documentation

😍 Show me how to make one!

The below image describes a basic setup - LedFx running on PC, communicating with a WLED Device controlling an LED strip.

image

Component Example
Computer running LedFx Windows 10, LedFx.exe
Networked device controlling LED Strip ESP8266 NODEMCU v3 running WLED
Addressable LED strip DC5V WS2812B 5 meters 60LED/m IP67
Power supply for LED Strip and ESP 5V 10 amps LED Power Supply
Something to connect the wires together! Soldering iron/solder
  1. Build your networked LED Strip.
  2. Install LedFx.
  3. Direct computer audio output to LedFx.
    • By default on Windows LedFx will attempt to listen to your system audio.
    • More information for Linux and macOS users here.
    • Play some music in the background.
  4. Start LedFx.
    • Your WLED devices should appear in LedFx, automagically configured and ready to go! 🎆🔥
    • If not, on the bottom click Home, -> Scan for WLED devices button, or click on the big plus sign and Add Device to add them manually.
    • If they're still not showing up, make sure they're powered on and properly connected to your WiFi.
  5. Start using effects!
    • Click on the device, select an effect eg scroll under Classic
    • Your lights should now be reacting realtime to your music! Enjoy the show 🌈

🧑‍💻 Join the LedFx Community

Join the Discord server to discuss everything about LedFx! Discord

To join, click on the Discord button below:

image

Contributing

Pull requests are welcome. Once tested, contact LedFx developer community on Discord to discuss the next step. We expect and require all contributors to read, understand and follow our code of conduct.

Credits: Contributors-&-About

License

GPL-3

ledfx's People

Contributors

a-reda avatar ahodges9 avatar apophisnow avatar austinh-msft avatar avejack avatar bigredfrog avatar dakota-peel avatar dependabot[bot] avatar gabedahl avatar giantorth avatar janjagusch avatar mariuscz avatar mattallmighty avatar miniontoby avatar mizterb avatar myrikld avatar not-matt avatar pauliusle avatar pre-commit-ci[bot] avatar protyposis avatar renovate[bot] avatar shauneccles avatar sideeffectdk avatar simon-wh avatar spiro-c avatar thatdonfc avatar tihoangyeudau avatar weekendwarrior1 avatar yeonv avatar ywwg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ledfx's Issues

Ability to use an audio output device as a source

Is your feature request related to a problem? Please describe.
LedFx is able to only use an audio input device as the source (ex. microphone), not an output one (ex. headphones or speakers) so I can't select the device that I use for Spotify (Voicemeeter Virtual Input)

Describe the solution you'd like
I would like to have the possibility to select an audio output device as the source for LedFx, I know it can be done because one of my Rainmeter skins does that

Describe alternatives you've considered
For now I could use the Voicemeeter aux output as the source, but it's a workaround, not a solution

Additional context
Using Windows 10 if that helps

dll error

I am using windows7. When I open the program, it gives api-ms-core path-l1-1-0.dll error. Even if I download and install the dll it won't open.

Creating scenes incorrectly updates the interface

Describe the bug
On the Dashboard, if a new scene is created, it does not appear. Any existing scenes will disappear. Same on the Scenes Management page.

To Reproduce

  1. Create a new scene

Expected behavior
The newly created scene should appear with the other existing scenes.

Screenshots
https://i.gyazo.com/31a20e59620e419715a387041e23e0c2.mp4
https://i.gyazo.com/6120515a161f82fbdd19da1f111a7b36.mp4

LedFx Host Information:

  • OS: Windows 10
  • Installation Method: Python LedFx-dev
  • LedFx Version: 0.9.0

Possibility to set "Transition Time" to 0/Instant

Could we be able to set the "Transition Time" to 0=Instant per device in "Device Management".
Setting it to < 1 is not possible via GUI. Changing it manually to 0 in config.json results in an "division by zero" error when starting LedFx

Documentation: Directing computer audio output to LedFx example for Linux

Hi, thanks for maintaining this package!

I've installed LedFx on my machine running Ubuntu 20.10 and have connected it to a ESP8266 mircocontroller running WLED. Selecting the default audio input (the laptop's builtin microphone), everything works correctly.

Now I'm trying to direct the laptop's audio to LedFX, as instructed in step 3 in the readme. Since there is no example for how to get this to work in Ubuntu, I experimented with this StackExchange answer for piping audio output to mic input using pavucontrol and audacity. However, when trying to start LedFX now, it fails with an error related to pyaudio. Under "Settings" there are now no audio devices listed. The error looks like this:

$ ledfx
Loading configuration file from /home/jan/.ledfx
Started webinterface at http://0.0.0.0:8888
ALSA lib conf.c:3723:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so (libasound_module_conf_pulse.so: libasound_module_conf_pulse.so: cannot open shared object file: No such file or directory)
ALSA lib control.c:1379:(snd_ctl_open_noupdate) Invalid CTL hw:0
ALSA lib pcm_dsnoop.c:642:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1090:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_jack.so (libasound_module_pcm_jack.so: libasound_module_pcm_jack.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_jack.so (libasound_module_pcm_jack.so: libasound_module_pcm_jack.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_oss.so (libasound_module_pcm_oss.so: libasound_module_pcm_oss.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_oss.so (libasound_module_pcm_oss.so: libasound_module_pcm_oss.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_pulse.so (libasound_module_pcm_pulse.so: libasound_module_pcm_pulse.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_pulse.so (libasound_module_pcm_pulse.so: libasound_module_pcm_pulse.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_upmix.so (libasound_module_pcm_upmix.so: libasound_module_pcm_upmix.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_upmix.so (libasound_module_pcm_upmix.so: libasound_module_pcm_upmix.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_vdownmix.so (libasound_module_pcm_vdownmix.so: libasound_module_pcm_vdownmix.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_vdownmix.so (libasound_module_pcm_vdownmix.so: libasound_module_pcm_vdownmix.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_usb_stream.so (libasound_module_pcm_usb_stream.so: libasound_module_pcm_usb_stream.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:340:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_usb_stream.so (libasound_module_pcm_usb_stream.so: libasound_module_pcm_usb_stream.so: cannot open shared object file: No such file or directory)
ALSA lib pcm_dsnoop.c:642:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1090:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_dmix.c:1090:(snd_pcm_dmix_open) unable to open slave
Expression 'parameters->channelCount <= maxChans' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1513
Expression 'ValidateParameters( inputParameters, hostApi, StreamDirection_In )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2813
[2021-01-17 00:18:28] ERROR:ledfx.core:Exception in core event loop: Task exception was never retrieved
Traceback (most recent call last):
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/ledfx/core.py", line 97, in async_start
    self.devices.create_from_config(self.config['devices'])
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/ledfx/devices/__init__.py", line 182, in create_from_config
    self._ledfx.devices.get_device(device['id']).set_effect(effect)
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/ledfx/devices/__init__.py", line 49, in set_effect
    self._active_effect.activate(self.pixel_count)
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/ledfx/effects/audio.py", line 496, in activate
    self._ledfx.audio.subscribe(self._audio_data_updated)
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/ledfx/effects/audio.py", line 126, in subscribe
    self.activate()
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/ledfx/effects/audio.py", line 108, in activate
    stream_callback = self._audio_sample_callback)
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/home/jan/miniconda3/envs/ledfx/lib/python3.7/site-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9998] Invalid number of channels

There exist several issues, where people suggest to create a virtual line in:

In a related repository, they recommend using jackaudio for creating a virtual audio device. However, nobody really tells you how to do it.

I believe adding more documentation to the readme, explaining how to do it or just pointing you somewhere else would be a huge help for most Linux users here.

I'd be glad to provide any information that's necessary and help in whatever way I can.

Update: Found a "How do I route audio to/from generic ALSA-using applications?" document here. Working through it now.


Here an overview about all installed dependencies:

# packages in environment at /home/jan/miniconda3/envs/ledfx:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
aiohttp                   3.3.2                    pypi_0    pypi
aiohttp-jinja2            1.0.0                    pypi_0    pypi
alsa-lib                  1.2.3                h516909a_0    conda-forge
async-timeout             3.0.1                    pypi_0    pypi
attrs                     20.3.0                   pypi_0    pypi
aubio                     0.4.9            py37h06622b3_5    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2020.12.5            ha878542_0    conda-forge
certifi                   2020.12.5        py37h89c1867_1    conda-forge
chardet                   3.0.4                    pypi_0    pypi
ffmpeg                    4.3.1                hca11adc_2    conda-forge
freetype                  2.10.4               h0708190_1    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
gnutls                    3.6.13               h85f3911_1    conda-forge
idna                      2.10                     pypi_0    pypi
jinja2                    2.11.2                   pypi_0    pypi
lame                      3.100             h7f98852_1001    conda-forge
ld_impl_linux-64          2.35.1               hea4e1c9_1    conda-forge
ledfx                     0.7                      pypi_0    pypi
libblas                   3.9.0                7_openblas    conda-forge
libcblas                  3.9.0                7_openblas    conda-forge
libffi                    3.3                  h58526e2_2    conda-forge
libgcc-ng                 9.3.0               h2828fa1_18    conda-forge
libgfortran-ng            9.3.0               hff62375_18    conda-forge
libgfortran5              9.3.0               hff62375_18    conda-forge
libgomp                   9.3.0               h2828fa1_18    conda-forge
liblapack                 3.9.0                7_openblas    conda-forge
libopenblas               0.3.12          pthreads_h4812303_1    conda-forge
libpng                    1.6.37               h21135ba_2    conda-forge
libstdcxx-ng              9.3.0               h6de172a_18    conda-forge
markupsafe                1.1.1                    pypi_0    pypi
multidict                 4.7.6                    pypi_0    pypi
ncurses                   6.2                  h58526e2_4    conda-forge
nettle                    3.6                  he412f7d_0    conda-forge
numpy                     1.19.5           py37haa41c4c_1    conda-forge
openh264                  2.1.1                h780b84a_0    conda-forge
openssl                   1.1.1i               h7f98852_0    conda-forge
pip                       20.3.3             pyhd8ed1ab_0    conda-forge
portaudio                 19.6.0               h1398938_3    conda-forge
pyaudio                   0.2.11                   pypi_0    pypi
python                    3.7.9           hffdb5ce_0_cpython    conda-forge
python_abi                3.7                     1_cp37m    conda-forge
pyyaml                    5.3.1                    pypi_0    pypi
readline                  8.0                  he28a2e2_2    conda-forge
requests                  2.25.1                   pypi_0    pypi
sacn                      1.3                      pypi_0    pypi
setuptools                49.6.0           py37h89c1867_3    conda-forge
sqlite                    3.34.0               h74cdb3f_0    conda-forge
tk                        8.6.10               h21135ba_1    conda-forge
typing-extensions         3.7.4.3                  pypi_0    pypi
urllib3                   1.26.2                   pypi_0    pypi
voluptuous                0.11.1                   pypi_0    pypi
wheel                     0.36.2             pyhd3deb0d_0    conda-forge
x264                      1!161.3030           h7f98852_0    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
yarl                      1.6.3                    pypi_0    pypi
zlib                      1.2.11            h516909a_1010    conda-forge
$ pulseaudio --version
pulseaudio 13.99.2

$ audacity --version
Trying to route ALSA through PulseAudio...
Audacity v2.4.2

$ pavucontrol --version
pavucontrol 4.0

Animation Freezing.

Reactive animations tend to freeze.

Spectrum, wavelength are notable for freezing, then continuing.
ESP8266 WLED 0.12, WS2811, 80 pixels, LEdFx 0.10.4

Skip out of sequence packets has been enabled in WLED sync settings.
Disabled WiFi sleep in WLED as well.

Wavelenght effect.
Mirrored, gradient is rainbow.
blur 3
gradient roll 1.5
gradient repeat 1

Seems like LedFx has connection issues, as sometimes the strip displays the previously active WLED effect, even when ledFx is active.

UDP does not work with WLED

Hi!
Because I also use my WLED devices with other software and DDP, I have to control the devices with LedFx via UDP. However the devices do not respond. I am using Debian Buster. I see the following in the console log:
[ERROR ] ledfx.core : Exception in core event loop: Exception in callback Device.thread_function() Traceback (most recent call last): File "/usr/lib/python3.9/asyncio/events.py", line 80, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.9/dist-packages/ledfx-0.9.2-py3.9.egg/ledfx/devices/__init__.py", line 157, in thread_function self.process_active_effect() File "/usr/local/lib/python3.9/dist-packages/ledfx-0.9.2-py3.9.egg/ledfx/devices/__init__.py", line 141, in process_active_effect self.flush(self.assembled_frame) File "/usr/local/lib/python3.9/dist-packages/ledfx-0.9.2-py3.9.egg/ledfx/devices/udp.py", line 79, in flush udpData.extend(bytes([i])) ValueError: bytes must be in range(0, 256)

DDP protocol support

Hi!
Can you add DDP protocol support? It is a lightweight E1.31 alternative. WLED supports it since version 0.11.0, and it is somewhat faster.

MQTT Control

I have just installed this on a Windows 10 pc and got a couple of Dig-Uno's running WLED, works great, well done guys. It would be great if it could be controlled by mqtt so I could add it to Home Assistant. Just an idea. Thanks.

A stacking and/or moving effect

This is an addition effect not a problem

A number of Leds moving from one end to the other. Based on a frequency/BPM best. Then stacking at one end, Bouncing back or skipping back to the starting end.

I am still moving through the effects to see if there is all ready anything similar.

This would ideally work across a few devices - In that setting like sticks of falling water.

All In One led controller

Is your feature request related to a problem? Please describe.

In relation to #49 and use off wled API having All In One led controller to use all the static effects and palettes what are available in wled over API and just send API commands to wled similar to wled implementation in Home Assistant
This way we can control all wled from one place

Equalizer effect maxing out (all LEDs constantly on )

"Equalizer" effect is maxing out. Even on low db setting like -40dB
unless I set my "Audio input" very low like -58dB the effects maxes out.
and if I set it very very low to keep having some animation, it does not looks good.
It's like the effect has some auto leveling that is not working correctly.

To Reproduce
Select the effect "equalizer"
Set volume to your liking and adjust the volume of you "audio input" and wait until the effect gets maxed out ( all LEDs constantly on )

Screen shot illustrates that all my volume settings are fine and not over the top in order to have the effect working fine.
Clipboard Image (1)

Inactivity 'timeout'

When users are sending LedFX data to controllers with firmware such as WLED, the lights display the LedFX animations. Once the ESP stops receiving data, WLED returns to it's last-set local effect.

On the LedFX host computer, even if no music is playing, it will send the data for black LEDs. This is prevent WLED from returning to it's local effect.

If 'silence' is detected for a long enough amount of time, LedFX should stop sending data to the microcontroller. It would be nice if it also automatically started again on the last-set configuration once audio was detected.

With the addition of a timeout feature, after a user-defined amount of time WLED can return to it's last effect once music stops playing without user input.

tldr: Stop sending data over the network after a user-defined amount of time of silence has been surpassed. Resume sending data once audio is detected once again.

Audio doesn't work

I dont know whats happning but it isnt working. I am running bigsur and followed https://ledfx.readthedocs.io/en/master/directing_audio.html and still dident work

Settings:

{
  "audioInputs": {
    "isLoading": false,
    "options": [
      {
        "index": "1",
        "value": "NDI Audio"
      },
      {
        "index": "2",
        "value": "BlackHole 2ch"
      },
      {
        "index": "3",
        "value": "MacBook Pro Microphone"
      },
      {
        "index": "5",
        "value": "Soundflower (2ch)"
      },
      {
        "index": "6",
        "value": "Soundflower (64ch)"
      }
    ],
    "isSaving": false,
    "value": "MacBook Pro Microphone",
    "error": ""
  },
  "isLoading": false,
  "devMode": false,
  "port": 8888,
  "host": "0.0.0.0",
  "devices": [
    {
      "config": {
        "center_offset": 0,
        "channel_count": 360,
        "channel_offset": 0,
        "force_refresh": false,
        "icon_name": "SettingsInputComponent",
        "ip_address": "192.168.2.49",
        "max_brightness": 1,
        "name": "strip",
        "pixel_count": 120,
        "preview_only": false,
        "refresh_rate": 60,
        "type": "e131",
        "universe": 1,
        "universe_end": 1,
        "universe_size": 510
      },
      "id": "strip",
      "type": "e131",
      "effect": {
        "config": {
          "active": true,
          "config": {
            "active": true,
            "background_color": "black",
            "blur": 3,
            "brightness": 1,
            "flip": false,
            "gradient_name": "Rainbow",
            "gradient_repeat": 1,
            "gradient_roll": 0,
            "mirror": false
          },
          "isProcessing": false,
          "name": "Wavelength",
          "type": "wavelength(Reactive)",
          "gradient_name": "Rainbow",
          "background_color": "black",
          "mirror": false,
          "gradient_repeat": 1,
          "brightness": 1,
          "blur": 3,
          "gradient_roll": 0,
          "flip": false
        },
        "name": "Wavelength",
        "type": "wavelength(Reactive)",
        "active": true
      },
      "key": "strip",
      "name": "strip"
    }
  ],
  "error": "",
  "version": "0.10.4"
}

userAgent:

Mozilla/5.0 (Macintosh- Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36

Logs:

[
  "Websocket subscribing to event device_update with filter {'device_id': 'strip'}",
  "Effect Wavelength config updated to {'blur': 3.0, 'brightness': 1.0, 'flip': False, 'gradient_name': 'Rainbow', 'gradient_roll': 0, 'mirror': False, 'background_color': 'black', 'gradient_repeat': 1}.",
  "Activating AudioReactiveEffect.",
  "Effect Wavelength activated.",
  "Saving configuration file to /Users/williamgiles/.ledfx",
  "Deactivating AudioReactiveEffect.",
  "Effect Wavelength deactivated.",
  "Connection closed by client.",
  "Stopping sender",
  "Closed connection",
  "Audio source closed.",
  "Audio Input Devices:",
  "  [1] NDI Audio",
  "  [2] BlackHole 2ch",
  "  [3] MacBook Pro Microphone",
  "  [5] Soundflower (2ch)",
  "  [6] Soundflower (64ch)",
  "Unable to open Audio Device - please retry.",
  "Audio source opened."
]

LedFX not starting

Describe the bug

I just used the curl -sSL https://install.ledfx.app | bash to install LedFX and after installation wen i try to start ledfx get this error

LedFx is now installed. Please type ledfx to start.
If you have no audio devices in LedFx and you're on a Raspberry Pi, please run 'sudo raspi-config' and setup your audio device (System Devices -> Audio)
spiroc@spiroc-HP-Pavilion-dv6-Notebook-PC:~$ ledfx
/usr/lib/python3/dist-packages/apport/report.py:13: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import fnmatch, glob, traceback, errno, sys, atexit, locale, imp, stat
Traceback (most recent call last):
  File "/home/spiroc/.local/bin/ledfx", line 5, in <module>
    from ledfx.__main__ import main
  File "/home/spiroc/.local/lib/python3.8/site-packages/ledfx/__main__.py", line 29, in <module>
    import ledfx.sentry_config  # noqa: F401
  File "/home/spiroc/.local/lib/python3.8/site-packages/ledfx/sentry_config.py", line 9, in <module>
    sentry_sdk.init(
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/hub.py", line 105, in _init
    client = Client(*args, **kwargs)  # type: ignore
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/client.py", line 88, in __init__
    self._init_impl()
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/client.py", line 119, in _init_impl
    self.transport = make_transport(self.options)
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/transport.py", line 393, in make_transport
    return transport_cls(options)
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/transport.py", line 127, in __init__
    Transport.__init__(self, options)
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/transport.py", line 53, in __init__
    self.parsed_dsn = Dsn(options["dsn"])
  File "/home/spiroc/.local/lib/python3.8/site-packages/sentry_sdk/utils.py", line 175, in __init__
    raise BadDsn("Unsupported scheme %r" % parts.scheme)
sentry_sdk.utils.BadDsn: Unsupported scheme ''

LedFx Host Information (please complete the following information):

  • OS: Ubuntu 20.04
  • Installation Method: curl -sSL https://install.ledfx.app | bash

Color change on new universe

Describe the bug
I have an ESP32 running WLED 0.11.1, receiving data over sACN from LedFx.
The esp has 480 LED's connected to it (4 rows, 120 columns), thus meaning 3 universes are needed for the RGB strip (ws2812b).
On the first LED of universe 2, the color changes. The same happens on the first LED of universe 3 (checked using QLC+ V4). I notice this with different effects, like gradient or spectrum. In spectru for example, it is purble/blue in universe 1 and changes to yellow/orange on universe 2. Then the switch between universe 2 and 3 is from orange/red to green/cyan.

To Reproduce
Steps to reproduce the behavior:

  1. Set up a wled controller with at least 2 universes of LED's.
  2. Check the color change on the first LED of the new universe.

Expected behavior
Smooth color transition rather than a sudden change or no change when not justified.

Screenshots
N/A

Traceback
No error is seen in the log.

LedFx Host Information (please complete the following information):

  • OS: Windows 10 x64 Home 19042.844 version 20H2
  • Installation Method: windows exe: LedFx Installer.exe
  • LedFx Version: LedFx 0.9.2

Additional context
A second RGBW SK6812 strip with 120 LED's is also set up, no problem there (since it is only a single universe).

NOTE: Discord buttons are all invalid, possible to update the invalid invite? Thanks!

Can't find any Devices

Hello,

LEDFX Can't find any Devices and if i add them Manual they dont show up.

on Raspi 4

Settings:

{
  "audioInputs": {
    "isLoading": false,
    "options": [
      {
        "index": "2",
        "value": "MS2109: USB Audio (hw:2,0)"
      },
      {
        "index": "7",
        "value": "pulse"
      },
      {
        "index": "11",
        "value": "default"
      }
    ],
    "isSaving": false,
    "value": "",
    "error": ""
  },
  "isLoading": false,
  "devMode": false,
  "port": 8888,
  "host": "0.0.0.0",
  "devices": [],
  "error": "",
  "version": "1.0.0"
}

userAgent:

Mozilla/5.0 (Windows NT 10.0- Win64- x64- rv:85.0) Gecko/20100101 Firefox/85.0

Logs:

[
  "Scanning for WLED devices...",
  "Scan Finished",
  "Importing ['ledfx.api.audio_devices', 'ledfx.api.config', 'ledfx.api.device', 'ledfx.api.device_effects', 'ledfx.api.device_presets', 'ledfx.api.devices', 'ledfx.api.effect', 'ledfx.api.effects', 'ledfx.api.find_devices', 'ledfx.api.graphics_quality', 'ledfx.api.info', 'ledfx.api.integrations', 'ledfx.api.log', 'ledfx.api.presets', 'ledfx.api.qlc', 'ledfx.api.scenes', 'ledfx.api.schema', 'ledfx.api.schema_types', 'ledfx.api.spotify', 'ledfx.api.utils', 'ledfx.api.virtuals', 'ledfx.api.websocket'] from ledfx.api",
  "Starting ledfx",
  "Importing ['ledfx.devices.FXMatrix', 'ledfx.devices.adalight', 'ledfx.devices.e131', 'ledfx.devices.udp'] from ledfx.devices",
  "Importing ['ledfx.effects.audio', 'ledfx.effects.bands(Reactive)', 'ledfx.effects.bands_matrix(Reactive)', 'ledfx.effects.bar(Reactive)', 'ledfx.effects.blade_power(Reactive)', 'ledfx.effects.blocks(Reactive)', 'ledfx.effects.effectlets', 'ledfx.effects.energy(Reactive)', 'ledfx.effects.equalizer(reactive)', 'ledfx.effects.fade', 'ledfx.effects.gradient', 'ledfx.effects.magnitude(Reactive)', 'ledfx.effects.math', 'ledfx.effects.mel', 'ledfx.effects.modulate', 'ledfx.effects.multiBar(Reactive)', 'ledfx.effects.pitchSpectrum(Reactive)', 'ledfx.effects.power(Reactive)', 'ledfx.effects.rain(Reactive)', 'ledfx.effects.rainbow', 'ledfx.effects.real_strobe(Reactive)', 'ledfx.effects.scroll(Reactive)', 'ledfx.effects.singleColor', 'ledfx.effects.spectrum(Reactive)', 'ledfx.effects.strobe(Reactive)', 'ledfx.effects.temporal', 'ledfx.effects.wavelength(Reactive)'] from ledfx.effects",
  "Importing ['ledfx.integrations.qlc', 'ledfx.integrations.spotify'] from ledfx.integrations",
  "No devices saved in config."
]

MultipleInvalid: expected a dictionary

Sentry Issue: LEDFX-BETAS-9

Steps to reproduce:

  • Navigate to device page for a device that is toggled off
  • Select an effect (bands(reactive))
  • Click randomize
DictInvalid: expected a dictionary
  File "voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "voluptuous/schema_builder.py", line 560, in validate_dict
    raise er.DictInvalid('expected a dictionary', path)

MultipleInvalid: expected a dictionary
  File "aiohttp/web_app.py", line 499, in _handle
    resp = await handler(request)
  File "ledfx/api/__init__.py", line 26, in handler
    return await method(
  File "ledfx/api/device_effects.py", line 139, in post
    effect = self._ledfx.effects.create(
  File "ledfx/utils.py", line 554, in create
    _config = _cls.schema()(_config)
  File "voluptuous/schema_builder.py", line 276, in __call__
    raise er.MultipleInvalid([e])

Full error from console:

[ERROR] Error handling request
Traceback (most recent call last):
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 560, in validate_dict
    raise er.DictInvalid('expected a dictionary', path)
voluptuous.error.DictInvalid: expected a dictionary

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
    resp = await self._request_handler(request)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/sentry_sdk/integrations/aiohttp.py", line 123, in sentry_app_handle
    reraise(*_capture_exception(hub))
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/sentry_sdk/_compat.py", line 54, in reraise
    raise value
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/sentry_sdk/integrations/aiohttp.py", line 113, in sentry_app_handle
    response = await old_handle(self, request)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle
    resp = await handler(request)
  File "/Users/thatdonfc/Documents/_Github/LedFx/ledfx/api/__init__.py", line 26, in handler
    return await method(
  File "/Users/thatdonfc/Documents/_Github/LedFx/ledfx/api/device_effects.py", line 139, in post
    effect = self._ledfx.effects.create(
  File "/Users/thatdonfc/Documents/_Github/LedFx/ledfx/utils.py", line 554, in create
    _config = _cls.schema()(_config)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 276, in __call__
    raise er.MultipleInvalid([e])
voluptuous.error.MultipleInvalid: expected a dictionary
[ERROR   ] aiohttp.server                 : Error handling request
Traceback (most recent call last):
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 272, in __call__
    return self._compiled([], data)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 560, in validate_dict
    raise er.DictInvalid('expected a dictionary', path)
voluptuous.error.DictInvalid: expected a dictionary

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
    resp = await self._request_handler(request)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/sentry_sdk/integrations/aiohttp.py", line 123, in sentry_app_handle
    reraise(*_capture_exception(hub))
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/sentry_sdk/_compat.py", line 54, in reraise
    raise value
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/sentry_sdk/integrations/aiohttp.py", line 113, in sentry_app_handle
    response = await old_handle(self, request)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle
    resp = await handler(request)
  File "/Users/thatdonfc/Documents/_Github/LedFx/ledfx/api/__init__.py", line 26, in handler
    return await method(
  File "/Users/thatdonfc/Documents/_Github/LedFx/ledfx/api/device_effects.py", line 139, in post
    effect = self._ledfx.effects.create(
  File "/Users/thatdonfc/Documents/_Github/LedFx/ledfx/utils.py", line 554, in create
    _config = _cls.schema()(_config)
  File "/Users/thatdonfc/ledfx-venv/lib/python3.9/site-packages/voluptuous/schema_builder.py", line 276, in __call__
    raise er.MultipleInvalid([e])
voluptuous.error.MultipleInvalid: expected a dictionary

Only first device is playing effect

Describe the bug
Configuration:

A) ledFX 0.10.4 (installed with pip) running on macOS 10.15.7
B) ESPixelStick WS2812b (5V) connected to Wemos D1 miniPro (both working with ledFX, when configured as a single device)

After adding a second device (ESPPixelStick FW) to ledFX, only the first device can be configured with effects. The second device is not reacting to any configuration changes. Instead, the leafs console logs this upon any effect change on the second device:

[WARNING ] ledfx.utils : WLED API Error on ESPLight099: 404 [WARNING ] ledfx.utils : WLED API Error on ESPLight102: 404 [ERROR ] sacn : Could not bind to IP:0.0.0.0 Port:5568

To Reproduce
Steps to reproduce the behavior:

  1. Flash ESPixelStick FW to two esp8266 and configure them to connect to WiFi and to use Start Channel to 1 or 61 for first and second device
  2. Add one esp8266 to ledFx using the "Add device" dialog with these settings (obfuscated):
    • Type: e131
    • Name: AnyName1
    • IP: 1xx.xxx.xx1
    • Pixel Count: 60
    • Universell: 1 (default)
  3. Select any effect for the first device in ledFx
  4. Add second esp8266 to ledFX using the "Add device" dialog with these settings (obfuscated):
    • Type: e131
    • Name: AnyName2
    • IP: 1xx.xxx.xx2
    • Pixel Count: 60
    • Universell: 1 (default)
    • Channel Offset 60
  5. Select any effect for the second device in ledFx
  6. See error as included above on ledFx console output

Expected behavior
Second device should play out the configured effect as selected

Traceback
If applicable, add the traceback log that LedFx outputs when it encounters an error.
Usually starts with "Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sacn/sending/sender_socket_udp.py", line 35, in init
self._socket.bind((self._bind_address, self._bind_port))
OSError: [Errno 48] Address already in use
[ERROR ] aiohttp.server : Error handling request
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
resp = await self._request_handler(request)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sentry_sdk/integrations/aiohttp.py", line 123, in sentry_app_handle
reraise(*_capture_exception(hub))
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sentry_sdk/_compat.py", line 54, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sentry_sdk/integrations/aiohttp.py", line 113, in sentry_app_handle
response = await old_handle(self, request)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle
resp = await handler(request)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ledfx/api/init.py", line 26, in handler
return await method(
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ledfx/api/device_effects.py", line 142, in post
device.set_effect(effect)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ledfx/devices/init.py", line 103, in set_effect
self.activate()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ledfx/devices/e131.py", line 102, in activate
self._sacn = sacn.sACNsender(source_name=self.name)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sacn/sender.py", line 43, in init
self._sender_handler = SenderHandler(cid, source_name, self._outputs, bind_address, bind_port, fps, socket)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sacn/sending/sender_handler.py", line 23, in init
self.socket: SenderSocketBase = SenderSocketUDP(self, bind_address, bind_port, fps)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sacn/sending/sender_socket_udp.py", line 35, in init
self._socket.bind((self._bind_address, self._bind_port))
OSError: [Errno 48] Address already in use"

LedFx Host Information (please complete the following information):

  • OS: macOS 10.15.7
  • Installation Method: pip
  • LedFx Version: 0.10.4

LEDfx won't start

I installed with the windows installer. After install was complete I launched LEDfx, this is the message in the LEDfx window

[2020-12-27 13:22:33] Updater:__main__:Checking for updates...
[2020-12-27 13:22:33] Updater:__main__:You're all up to date, enjoy the light show!
Loading configuration file from C:\Users\Mitchell\AppData\Roaming\.ledfx
Loading default presets from C:\Program Files (x86)\LedFx\data\ledfx
Started webinterface at http://0.0.0.0:8888
[2020-12-27 13:22:33] ERROR:ledfx.core:Exception in core event loop: Task exception was never retrieved
Traceback (most recent call last):
  File "core.py", line 99, in async_start
  File "devices\__init__.py", line 285, in create_from_config
  File "devices\__init__.py", line 87, in set_effect
  File "C:\Program Files (x86)\LedFx\data\ledfx\effects\audio.py", line 734, in activate
    self._ledfx.audio.subscribe(self._audio_data_updated)
  File "C:\Program Files (x86)\LedFx\data\ledfx\effects\audio.py", line 161, in subscribe
    self.activate()
  File "C:\Program Files (x86)\LedFx\data\ledfx\effects\audio.py", line 142, in activate
    stream_callback=self._audio_sample_callback,
  File "pyaudio.py", line 750, in open
  File "pyaudio.py", line 441, in __init__
OSError: [Errno -9998] Invalid number of channels

The webinterface doesn't open and the ip for the interface doesn't seem right since it is 0.0.0.0

Colour swatches to be added to drop down colour picker

Is your feature request related to a problem? Please describe.
Searching through the colour picker list and picking by name instead of picking by colour swatch is mildly frustrating. Searching for a colour is also not made easy due to the colours being in alphabetical order.

Describe the solution you'd like
For the colour picker to be a dropdown list of colours swatches rather than just displaying colour names. Perhaps a swatch could be in addition to the current text. Having the colours display in a logical order (spectrum) would also be really helpful in terms of UX. Perhaps with 'black' and 'white' being listed first.

Describe alternatives you've considered

Additional context

Can't create device in Device Managment

When creating a device via the device managment tab, no device appears. The console does not spit out any errors or exceptions and LedFX will act like nothing has happened. This bug pretty much renders the software useless. I am on the newest version of LedFX. I had this bug after updating LedFX to the newest version, but also after formatting my pc and installing a fresh instance of LedFX, so this seems to be reproducable. The type of the device and the parameters do not appear to make any difference.

Capture Errors for Broken Browsers

Describe the bug
Using --open-ui calls the system default browser.
In the event that browser is not working or otherwise errors out, LedFx currently crashes due to an unhandled exception.

To Reproduce
Steps to reproduce the behavior:

  1. Have broken default browser.
  2. Launch LedFx with --open-ui
  3. LedFx crashes.

Expected behavior
LedFx should display the error and continue.

Additional context
Sentry Data - 190 instances.

Usual error is
FileNotFoundError: [WinError 2] The system cannot find the file specified: "Link to broken or incorrect browser"

Create/Edit/Export/Import Custom Colours, Gradients

Is your feature request related to a problem? Please describe.
The current colour choices and gradients are nice but it would be nice to add/edit custom ones.

Describe the solution you'd like
A "Colours" editor similar to device editor that reads from config.yaml and allows for custom colours to be created and custom gradients to be created.
Describe alternatives you've considered
I thought of just ripping WLED colour choices from WLED and banging into color.py, however this is not as graceful as it could be.
Additional context
Color.py contains all colour data and gradient mapping - looks like a reasonably easy FR to add custom colours/gradients from reading config.yaml.

I had another thought of removing colour data from color.py and storing it in it's own yaml file alongside the config.yaml file, however this might cause issues if the config references a colour that doesn't exist if people share their own color files.

We should probably also look at a simple export/importer. #

Add support for Wiz lights

I have Wiz light bulbs that can receive udp rgb commands - it would be great to extend formal LedFX support for them. As a proof of concept I did a quick hack to replace the WLED send command with the equivalent Wiz syntax - see the working results here - https://www.youtube.com/watch?v=un5xmEFMAVU
I realize single lights aren't quite as exciting as led strips but I suspect there are more folks like me that would love the extra feature of real-time music sync on their existing Wiz living room lights. To make a single bulb device work I entered a modded WLED device as a fake 9 pixel strip and then sent just the middle pixel with this change to udp.py:
self._sock.sendto( bytes(f'{{"method":"setPilot","params":{{"r":{udpData[12]},"g":{udpData[13]},"b":{udpData[14]} }}}}', "utf-8"), (self.device_ip, self._config["port"]), )
I originally tried entering a 1 pixel strip but you don't get a pretty graph in the LedFX web interface unless you have more pixels. The Wiz udp port is 38899 and I reduced the send rate to 6 pixels/second since the json body is kind of verbose. The only LedFX effect that seems useful for single lights is magnitude with rotating colors. LedFX is a terrific app!

Basic Level / Peak Meter ?

Is your feature request related to a problem? Please describe.
Not a problem. But I am a noob and perhaps I am missing it.

Describe the solution you'd like
I have 2 WLED 'strips' 60 LEDs tall (Left and Right). I'd like them to be Equalizer VU Peak type visual meters. Green, Yellow, Red. I cannot seem to find an effect that does this. Some come close but have not found the correct setting yet. LED's 1 - 20 Green, LEDs21 - 50 Yellow, LEDs 51 - 60 Red ? Like a battery level indicator. Bass would make it peak. No hold time, no mirror, etc.

Describe alternatives you've considered
I've tried all the presets, it seems the LEDs are mirrored? 30 x 2 ? I dunno.

Additional context
It would be great for Left channel and Right channel separation.

Thank you!

Turn wled on from LedFX

Is your feature request related to a problem? Please describe.
If the wled device is switched off from the wled mobile app or web browser, LedFX start the sACN thread and send to wled but the led are not displaying the effects

wled switched off

wled-noled

wled switched on

wled-led

Describe the solution you'd like
can we use the existing switch in the LedFX to send JSON-API to wled to turn on the wled before start sending the effect or have other switch to turn on wled device

LedFX-sw

Describe alternatives you've considered
alternative before LedFX start sending effect get state from wled device over the API and if is ON start sending effect if OFF send ON

Use of SampleRate 192k

Hello,

is there a possibility to use a USB mic (Raspberry/linux) with a fixed sample rate of 192000?

if i add 'mic_rate' in the config,
RuntimeError: AUBIO ERROR: pvoc: hop size (32000) is larger than win size (1024)
occurs.

Regards deadboolen

Data is a tuple with a max length of 512!

Describe the bug
I got this error from ledfx:
File "/home/pi/.local/lib/python3.7/site-packages/sacn/messages/data_packet.py", line 120, in dmxData
raise ValueError(f'Data is a tuple with a max length of 512! The data in the tuple has to be valid bytes! '

No data will be send to the wled esp32 devices ...
I installed ledfx to a windows 10 system(v0.10.1) and to 2 linux systems( ubuntu & raspian)(v0.10.2).
LedFx is working on windows 10 systems, but on both linux systems I got this error ...

To Reproduce

  1. install it with "curl -sSL https://install.ledfx.app | bash"
  2. search for new devices
  3. click on "change effect"
  4. look into the logfile

naive way to fix it
I commented the 512byte test in line 120 in file /home/pi/.local/lib/python3.7/site-packages/sacn/messages/data_packet.py
after that it worked

Expected behavior
no error, data will be transmitted to wled esp32

Traceback
2021-03-15 17:30:39,856 aiohttp.server ERROR Error handling request
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.7/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
resp = await self._request_handler(request)
File "/home/pi/.local/lib/python3.7/site-packages/sentry_sdk/integrations/aiohttp.py", line 123, in sentry_app_handle
reraise(*_capture_exception(hub))
File "/home/pi/.local/lib/python3.7/site-packages/sentry_sdk/_compat.py", line 54, in reraise
raise value
File "/home/pi/.local/lib/python3.7/site-packages/sentry_sdk/integrations/aiohttp.py", line 113, in sentry_app_handle
response = await old_handle(self, request)
File "/home/pi/.local/lib/python3.7/site-packages/aiohttp/web_app.py", line 499, in _handle
resp = await handler(request)
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/api/init.py", line 27, in handler
**{arg_name: available_args[arg_name] for arg_name in wanted_args}
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/api/device_effects.py", line 142, in post
device.set_effect(effect)
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/devices/init.py", line 103, in set_effect
self.activate()
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/devices/e131.py", line 119, in activate
super().activate()
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/devices/init.py", line 255, in activate
self.thread_function()
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/devices/init.py", line 162, in thread_function
self.process_active_effect()
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/devices/init.py", line 146, in process_active_effect
self.flush(self.assembled_frame)
File "/home/pi/.local/lib/python3.7/site-packages/ledfx/devices/e131.py", line 187, in flush
self._sacn[universe].dmx_data = dmx_data.clip(0, 255)
File "/home/pi/.local/lib/python3.7/site-packages/sacn/sending/output.py", line 25, in dmx_data
self._packet.dmxData = dmx_data
File "/home/pi/.local/lib/python3.7/site-packages/sacn/messages/data_packet.py", line 120, in dmxData
raise ValueError(f'Data is a tuple with a max length of 512! The data in the tuple has to be valid bytes! '
ValueError: Data is a tuple with a max length of 512! The data in the tuple has to be valid bytes! Length was 512
2021-03-15 17:30:40,477 ledfx.devices INFO Scan Finished

LedFx Host Information (please complete the following information):

  • OS: raspian last current version
  • OS: Ubuntu 20.04.2 LTS
  • Installation Method: curl -sSL https://install.ledfx.app | bash
  • LedFx Version: v0.10.2

Editing an active devices causes complete loss of control over said device. Restart of LedFX required

Describe the bug
In the Device Management page, editing any information about an active device will force output the current settings to that device. Toggling the device or changing effects has no control. Appears the effects try to overlap.

To Reproduce

  1. Enable effect on a device
  2. Go to the Device Management page
  3. Change any setting on that device (name, led count, refresh rate, etc.)
  4. Attempt to change the effect on that device or disable it

Expected behavior
LedFX should continue operating normally.

Screenshots
https://i.gyazo.com/0e76ef3cf6d40cf20f371c38b63fe6d3.mp4
Sorry, Gyazo record time is short. You can see at the end on the Dashboard, the device should be off but it's displaying effects.

https://i.gyazo.com/aa7c36d4d3432e7fac824e7a35fb1385.mp4
Effects trying to both display on same device as mentioned earlier.

LedFx Host Information:

  • OS: Windows 10
  • Installation Method: Python LedFx-dev
  • LedFx Version: 0.9.0

add artnet support!!

It would be fun to use with Artnet matrix i have installed. i has 3000 ws2811 and esp32

Toggle switch on dashboard not updating

Describe the bug
On the dashboard, if a device is toggled on and off from a scene, the toggle slider doesn't update.

To Reproduce

  1. Create a scene which changes the on/off state of a device
  2. Switch scenes so that the device turns on or off

Expected behavior
The slider should reflect the current state of the device, no matter where it may have been toggled.

Screenshots
https://i.gyazo.com/fe488199a4afc50e5bd8f6a2449cd9d3.mp4

LedFx Host Information:

  • OS: Windows 10
  • Installation Method: Python LedFx-dev
  • LedFx Version: 0.9.0

Live mode within device effect control

Describe the solution you'd like
Live mode within effect control: As you select an effect from the dropdown, for example: bar(reactive), it puts the effect in place.
Think we should put a slider in place for live effect mode. So gives the LedFx user the option to use 'set effect' button or live mode.

Is your feature request related to a problem? Please describe.
It's an extra step for the LedFx user when wanting to play around with effects. Rather than having to set effect, than click set effect.

Describe alternatives you've considered
n/a

Additional context
n/a

Specific Blur Values Crash Effects Engine

Describe the bug
Setting blur to between 0 and 0.125 causes any effect using the blur feature to crash.

To Reproduce
Steps to reproduce the behavior:

  1. Activate any effect that uses the blur function.
  2. Set Blur value to between 0 and 0.125
  3. Observe crash within the blur_pixels function.

Expected behavior
Effect continues

Traceback

c:\users\shaun\ledfx_env\ledfx\ledfx\integrations\qlc.py:232: DeprecationWarning: Inheritance class QLCWebsocketClient from ClientSession is discouraged
  class QLCWebsocketClient(aiohttp.ClientSession):
Traceback (most recent call last):
  File "c:\users\shaun\ledfx_env\ledfx\ledfx\effects\audio.py", line 178, in _audio_sample_callback
    self._invoke_callbacks()
  File "c:\users\shaun\ledfx_env\ledfx\ledfx\effects\audio.py", line 185, in _invoke_callbacks
    callback()
  File "c:\users\shaun\ledfx_env\ledfx\ledfx\effects\audio.py", line 755, in _audio_data_updated
    self.audio_data_updated(self.audio)
Stopping LedFx.
  File "c:\users\shaun\ledfx_env\ledfx\ledfx\effects\equalizer(reactive).py", line 70, in audio_data_updated
    self.pixels = self.apply_gradient(np.hstack(r_split))
  File "c:\users\shaun\ledfx_env\ledfx\ledfx\effects\__init__.py", line 257, in pixels
    pixels = blur_pixels(pixels=pixels, sigma=self._config["blur"])
  File "c:\users\shaun\ledfx_env\ledfx\ledfx\effects\__init__.py", line 67, in blur_pixels
    rgb_array[0] = smooth(rgb_array[0], sigma)
ValueError: could not broadcast input array from shape (0) into shape (97)

LedFx Host Information (please complete the following information):

  • OS: Win 10
  • Installation Method: venv
  • LedFx Version: bb13de8

Additional context
Root cause of a lot of issues and a blocker for 1.0.0 release - will be hit by people using randomize function for almost every effect.

Unable to Rename Devices

Describe the bug
Device editor allows any item to be changed except for name.

To Reproduce
Steps to reproduce the behavior:

  1. Edit device.
  2. Change name.
  3. Submit change
  4. Device not renamed.

Expected behavior
Device should change names.

Desktop (please complete the following information):

  • OS: Win 10
  • Browser: Edge

Additional context
Using latest build from GitHub.
I think it's because it's attempting to use the new name as a target for API calls and failing.

Documentation: Make BlackHole recommended tool for directing audio output on Mac

Hi, thanks for maintaining this package!

You're currently recommending Loopback to direct the audio output to LedFx. I tested Loopback and it works great. However, Loopback is donationware and will cost you 118$, if you want to use it for more than 20 minutes.

My suggestion is to make BlackHole the first recommendation for Mac, as it is:

  • free
  • open source
  • actively maintained

They also have a nice documentation, which makes it easy to set it up (all I needed to know was described here).

I would also suggest to add documentation how to use BlackHole with LedFx.

I'd be glad to open a PR, if this sounds good to you. :)

Deleting devices doesn't remove it from the sidebar

Describe the bug
From the Device Management page, deleting a device doesn't update the sidebar.

To Reproduce

  1. Go to the Device Management page
  2. Click on the red delete button on a device

Expected behavior
The sidebar should refresh to show the changes. Adding new devices and editing existing devices has proper behaviour.

Screenshots
https://i.gyazo.com/6b6c0d28e446a211069e87675c088dea.mp4

LedFx Host Information:

  • OS: Windows 10
  • Installation Method: Python LedFx-dev
  • LedFx Version: 0.9.0

ledfx won´t start on Windows 10

Hey guys,

meine ledfx is not starting.

Have anyone an idea?

Here is the code.

[Updater ] main : Checking for updates...
[Updater ] main : You're all up to date, enjoy the light show!
Loading configuration file from C:\Users\Marcus\AppData\Roaming.ledfx
Loading default presets from C:\Program Files (x86)\LedFx\data\ledfx
Started webinterface at http://0.0.0.0:8888
[ERROR ] ledfx.core : Exception in core event loop: Task exception was never retrieved
Traceback (most recent call last):
File "core.py", line 112, in async_start
File "devices_init_.py", line 295, in init
File "zeroconf_init_.py", line 2493, in init
File "zeroconf_init_.py", line 2328, in create_sockets
File "zeroconf_init_.py", line 2273, in add_multicast_member
OSError: [WinError 10042] Beim Aufruf von getsockopt oder setsockopt wurde eine nicht unterstützte Option bzw. Ebene angegeben

Thank you

Implement sACN/e131 Priority

Is your feature request related to a problem? Please describe.
implement configurable sACN/e131 Priority standards into LedFx.

Describe the solution you'd like
I would love to be able to configure the sACN/e131 priority on a per device basis. Most of the time I control my LED strips from my primary home lighting controller. When I want to use LedFx I don't want to have to disable sACN output from my home controller instead I'd like to assign LedFx's data a higher priority. Currently without priority specification my WLED device will continue seeing data from both my primary controller and LedFx causing the strobe effect that's common with non-prioritized overlapping sACN data.

Describe alternatives you've considered
Currently I have to disable sACN output from my primary controller to eliminate the issue, this is not ideal due to other deceives and lighting I have being controlled by the primary controller

Clone effects to other/all devices

Is your feature request related to a problem? Please describe.
One thing I'm running into with 4 connected strips (planning for 8) is that creating scenes starts to take absolutely forever, since you need to manually set each effect identically to every device and then save it. I'm aiming to write a bunch of presets I can cycle through to the beat of a song, and even do simple animations using each preset as a "frame", but my main barrier is the amount of time it would take.

Describe the solution you'd like
A button on the effects page that lets you select a device/all devices and clone the current effect settings to the selected options.

Allow iFrame for use with HomeAssistant

I was attempting to find information on how to allow LEDFX to be displayed in an iFrame for use with HomeAssistant. I can't seem to find anything on Google or in other issues pertaining to the question.

I'm using Traefik2 as a reverse proxy and I have other services working fine. It seems that LEDFX doens't want to load except on from the local address. I attempted to change the host IP in the config to my local IP as well 0.0.0.0. The only error I can see from the browser console is attached below.

Is there something I'm missing or is this an intended feature?

Thanks!

image

Documentation: How to direct application specific audio to LedFx?

Following up on #34 and #35, it would be cool to be able to direct application specific audio to LedFx.

With the current instructions in the direction audio documentation, it's only possible to direct the entire system audio to LedFx.
But what if I only wanted to pipe Spotify or Youtube to it? 🤔
The specific use case that I'm thinking of is avoiding other system sounds, like notification chimes, to be piped to LedFx without having to turn the sound off entirely.

For Mac, I believe this is certainly possible with Loopback but that's just too expensive.
For Linux, I have an inkling that Jack Audio might be able to pull this off but I have no experience with that tool.

I anybody knows how to do that, I think it would be a great addition to the documentation. 😄

Random crashes using PitchSpectrum Effect

Describe the bug
Using the PitchSpecturm effect I am getting an "index out of bounds exception" (using 144 leds). This issue keeps happening and I assume it is a simple fix. I don't have time to make a PR for this, just wanted to report the issue. For now, I will just use another effect.

Love the tool and appreciate any help!

IndexError: index 147 is out of bounds for axis 1 with size 144
Stopping LedFx.

To Reproduce
Steps to reproduce the behavior:

  1. Use the PitchSpectrum effect
  2. Wait a mintute
  3. The effect crashes

Traceback

amcolash@amcolash-ltm ~ $ ledfx --open-ui
[INFO] LedFx Core is initializing
Loading configuration file from /Users/amcolash/.ledfx
Loading default presets from /usr/local/lib/python3.9/site-packages/ledfx
[INFO] Importing ['ledfx.api.audio_devices', 'ledfx.api.config', 'ledfx.api.device', 'ledfx.api.device_effects', 'ledfx.api.device_presets', 'ledfx.api.devices', 'ledfx.api.effect', 'ledfx.api.effects', 'ledfx.api.find_devices', 'ledfx.api.graphics_quality', 'ledfx.api.info', 'ledfx.api.integrations', 'ledfx.api.log', 'ledfx.api.presets', 'ledfx.api.qlc', 'ledfx.api.scenes', 'ledfx.api.schema', 'ledfx.api.schema_types', 'ledfx.api.spotify', 'ledfx.api.utils', 'ledfx.api.virtuals', 'ledfx.api.websocket'] from ledfx.api
[INFO] Starting ledfx
Started webinterface at http://0.0.0.0:8888
[INFO] Importing ['ledfx.devices.FXMatrix', 'ledfx.devices.adalight', 'ledfx.devices.e131', 'ledfx.devices.udp'] from ledfx.devices
[INFO] Importing ['ledfx.effects.audio', 'ledfx.effects.bands(Reactive)', 'ledfx.effects.bands_matrix(Reactive)', 'ledfx.effects.bar(Reactive)', 'ledfx.effects.blade_power(Reactive)', 'ledfx.effects.blocks(Reactive)', 'ledfx.effects.effectlets', 'ledfx.effects.energy(Reactive)', 'ledfx.effects.equalizer(reactive)', 'ledfx.effects.fade', 'ledfx.effects.gradient', 'ledfx.effects.magnitude(Reactive)', 'ledfx.effects.math', 'ledfx.effects.mel', 'ledfx.effects.modulate', 'ledfx.effects.multiBar(Reactive)', 'ledfx.effects.pitchSpectrum(Reactive)', 'ledfx.effects.power(Reactive)', 'ledfx.effects.rain(Reactive)', 'ledfx.effects.rainbow', 'ledfx.effects.real_strobe(Reactive)', 'ledfx.effects.scroll(Reactive)', 'ledfx.effects.singleColor', 'ledfx.effects.spectrum(Reactive)', 'ledfx.effects.strobe(Reactive)', 'ledfx.effects.temporal', 'ledfx.effects.wavelength(Reactive)'] from ledfx.effects
[INFO] Importing ['ledfx.integrations.qlc', 'ledfx.integrations.spotify'] from ledfx.integrations
[INFO] Loading device from config: {'config': {'center_offset': 0, 'channel_count': 138, 'channel_offset': 0, 'force_refresh': False, 'icon_name': 'SettingsInputComponent', 'ip_address': 'wled-4bc233.local', 'max_brightness': 1.0, 'name': 'Hyperion', 'pixel_count': 46, 'preview_only': False, 'refresh_rate': 60, 'universe': 1, 'universe_end': 1, 'universe_size': 512}, 'id': 'hyperion', 'type': 'e131'}
[INFO] Loading device from config: {'config': {'center_offset': 0, 'channel_count': 432, 'channel_offset': 0, 'force_refresh': False, 'icon_name': 'SettingsInputComponent', 'ip_address': 'wled.local', 'max_brightness': 1, 'name': 'Ping-Pong Lamp', 'pixel_count': 144, 'preview_only': False, 'refresh_rate': 30, 'type': 'e131', 'universe': 1, 'universe_end': 1, 'universe_size': 512}, 'effect': {'config': {'active': True, 'background_color': 'brown', 'blur': 0.694, 'brightness': 1, 'config': {'background_color': 'brown', 'blur': 0.434, 'brightness': 1, 'fade_rate': 0.182, 'flip': False, 'gradient_name': 'Rust', 'gradient_repeat': 1, 'gradient_roll': 0, 'mirror': True, 'responsiveness': 0.895}, 'fade_rate': 0.061, 'flip': False, 'gradient_name': 'Rust', 'gradient_repeat': 1, 'gradient_roll': 0, 'isProcessing': False, 'mirror': True, 'name': 'PitchSpectrum', 'responsiveness': 0.973, 'type': 'pitchSpectrum(Reactive)'}, 'type': 'pitchSpectrum(Reactive)'}, 'id': 'ping-pong-lamp', 'type': 'e131'}
[INFO] Effect PitchSpectrum config updated to {'active': True, 'background_color': 'brown', 'blur': 0.694, 'brightness': 1.0, 'config': {'background_color': 'brown', 'blur': 0.434, 'brightness': 1, 'fade_rate': 0.182, 'flip': False, 'gradient_name': 'Rust', 'gradient_repeat': 1, 'gradient_roll': 0, 'mirror': True, 'responsiveness': 0.895}, 'fade_rate': 0.061, 'flip': False, 'gradient_name': 'Rust', 'gradient_repeat': 1, 'gradient_roll': 0, 'isProcessing': False, 'mirror': True, 'name': 'PitchSpectrum', 'responsiveness': 0.973, 'type': 'pitchSpectrum(Reactive)'}.
[INFO] Activating AudioReactiveEffect.
[INFO] Effect PitchSpectrum activated.
[INFO] Audio source closed.
[INFO] Audio Input Devices:
[INFO]   [4] DUALSHOCK®4 USB Wireless Adaptor
[INFO]   [5] Unknown USB Audio Device
[INFO]   [6] BlackHole 2ch
[INFO]   [7] MacBook Pro Microphone
[INFO]   [9] NoMachine Audio Adapter
[INFO]   [10] NoMachine Microphone Adapter
[INFO] Audio source opened.
[INFO] Generating new gradient curve for ['orange-deep', 'red']
[INFO] Ping-Pong Lamp is WLED compatible: WLED
[WARNING] Error Obtaining WLED Power State for Ping-Pong Lamp: HTTPConnectionPool(host='192.168.1.111', port=80): Max retries exceeded with url: /json/state (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x1173871f0>, 'Connection to 192.168.1.111 timed out. (connect timeout=0.25)'))
[WARNING ] ledfx.utils                    : Error Obtaining WLED Power State for Ping-Pong Lamp: HTTPConnectionPool(host='192.168.1.111', port=80): Max retries exceeded with url: /json/state (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x1173871f0>, 'Connection to 192.168.1.111 timed out. (connect timeout=0.25)'))
[INFO] Turning WLED device Ping-Pong Lamp on.
[INFO] sACN activating universe 1
[INFO] sACN sender started.
[WARNING] Failed to send packet
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sacn/sending/output_thread.py", line 103, in send_packet
    self._socket.sendto(MESSAGE, (destination, DEFAULT_PORT))
OSError: [Errno 49] Can't assign requested address
[WARNING ] sacn                           : Failed to send packet
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sacn/sending/output_thread.py", line 103, in send_packet
    self._socket.sendto(MESSAGE, (destination, DEFAULT_PORT))
OSError: [Errno 49] Can't assign requested address
[INFO] Websocket connected.
[INFO] Starting sender
[INFO] Websocket connected.
[INFO] Starting sender
[INFO] Websocket subscribing to event device_update with filter {'device_id': 'hyperion'}
[INFO] Websocket subscribing to event device_update with filter {'device_id': 'ping-pong-lamp'}
[WARNING] Failed to send packet
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sacn/sending/output_thread.py", line 103, in send_packet
    self._socket.sendto(MESSAGE, (destination, DEFAULT_PORT))
OSError: [Errno 49] Can't assign requested address
[WARNING ] sacn                           : Failed to send packet
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sacn/sending/output_thread.py", line 103, in send_packet
    self._socket.sendto(MESSAGE, (destination, DEFAULT_PORT))
OSError: [Errno 49] Can't assign requested address
[INFO] Saving configuration file to /Users/amcolash/.ledfx
[INFO] Connection closed by client.
[INFO] Stopping sender
[INFO] Connection closed by client.
[INFO] Stopping sender
[WARNING] Failed to send packet
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sacn/sending/output_thread.py", line 103, in send_packet
    self._socket.sendto(MESSAGE, (destination, DEFAULT_PORT))
OSError: [Errno 49] Can't assign requested address
[WARNING ] sacn                           : Failed to send packet
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sacn/sending/output_thread.py", line 103, in send_packet
    self._socket.sendto(MESSAGE, (destination, DEFAULT_PORT))
OSError: [Errno 49] Can't assign requested address
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/ledfx/effects/audio.py", line 196, in _audio_sample_callback
    self._invoke_callbacks()
  File "/usr/local/lib/python3.9/site-packages/ledfx/effects/audio.py", line 203, in _invoke_callbacks
    callback()
  File "/usr/local/lib/python3.9/site-packages/ledfx/effects/audio.py", line 773, in _audio_data_updated
    self.audio_data_updated(self.audio)
  File "/usr/local/lib/python3.9/site-packages/ledfx/effects/pitchSpectrum(Reactive).py", line 61, in audio_data_updated
    note_color = self.get_gradient_color(midi_scaled)
  File "/usr/local/lib/python3.9/site-packages/ledfx/effects/gradient.py", line 184, in get_gradient_color
    self._gradient_curve[:, int((self.pixel_count - 1) * point)]
IndexError: index 147 is out of bounds for axis 1 with size 144
Stopping LedFx.
[INFO] Deactivating AudioReactiveEffect.
[INFO] Audio source closed.
[INFO] Effect PitchSpectrum deactivated.
[WARNING] Error turning Ping-Pong Lamp off: HTTPConnectionPool(host='192.168.1.111', port=80): Read timed out. (read timeout=0.25)
[WARNING ] ledfx.utils                    : Error turning Ping-Pong Lamp off: HTTPConnectionPool(host='192.168.1.111', port=80): Read timed out. (read timeout=0.25)
[INFO] sACN sender stopped.
[INFO] Saving configuration file to /Users/amcolash/.ledfx

LedFx Host Information (please complete the following information):

  • OS: MacOS
  • LEDFX: v 0.10.0

Additional context
config.json

{
    "audio": {
        "device_index": 6
    },
    "crossfade": 1.0,
    "custom_presets": {},
    "dev_mode": false,
    "devices": [
        {
            "config": {
                "center_offset": 0,
                "channel_count": 138,
                "channel_offset": 0,
                "force_refresh": false,
                "icon_name": "SettingsInputComponent",
                "ip_address": "wled-4bc233.local",
                "max_brightness": 1.0,
                "name": "Hyperion",
                "pixel_count": 46,
                "preview_only": false,
                "refresh_rate": 60,
                "universe": 1,
                "universe_end": 1,
                "universe_size": 512
            },
            "id": "hyperion",
            "type": "e131"
        },
        {
            "config": {
                "center_offset": 0,
                "channel_count": 432,
                "channel_offset": 0,
                "force_refresh": false,
                "icon_name": "SettingsInputComponent",
                "ip_address": "wled.local",
                "max_brightness": 1,
                "name": "Ping-Pong Lamp",
                "pixel_count": 144,
                "preview_only": false,
                "refresh_rate": 30,
                "type": "e131",
                "universe": 1,
                "universe_end": 1,
                "universe_size": 512
            },
            "effect": {
                "config": {
                    "active": true,
                    "background_color": "brown",
                    "blur": 0.694,
                    "brightness": 1,
                    "config": {
                        "background_color": "brown",
                        "blur": 0.434,
                        "brightness": 1,
                        "fade_rate": 0.182,
                        "flip": false,
                        "gradient_name": "Rust",
                        "gradient_repeat": 1,
                        "gradient_roll": 0,
                        "mirror": true,
                        "responsiveness": 0.895
                    },
                    "fade_rate": 0.061,
                    "flip": false,
                    "gradient_name": "Rust",
                    "gradient_repeat": 1,
                    "gradient_roll": 0,
                    "isProcessing": false,
                    "mirror": true,
                    "name": "PitchSpectrum",
                    "responsiveness": 0.973,
                    "type": "pitchSpectrum(Reactive)"
                },
                "type": "pitchSpectrum(Reactive)"
            },
            "id": "ping-pong-lamp",
            "type": "e131"
        }
    ],
    "fade": 1.0,
    "host": "0.0.0.0",
    "integrations": [],
    "port": 8888,
    "scenes": {},
    "virtuals": []
}

sACN Framerate Limited to 33fps

Describe the bug
sACN Output Capped at 33fps

To Reproduce
Steps to reproduce the behavior:

  1. Create e1.31 device
  2. Set "FPS" to any value above 33
  3. Display Effect

Expected behavior
Effect output via sACN should be at set framerate

Screenshots
sACN set to 60fps - sACNView shows actual output ~33fps
image

LedFx Host Information (please complete the following information):

  • OS: Windows 10
  • Installation Method: Python venv
  • LedFx Version: Latest dev commit

Additional context
Lowering the FPS works - if I set the device FPS to 10fps, then sACNView shows a 10fps output.

UDP Device Hostname Issues

Describe the bug
UDP devices with a .local hostname cause the UDP packet sender to crash due to its inability to resolve .local

To Reproduce
Steps to reproduce the behavior:

  1. Create UDP device with hostname ending in .local
  2. Set an effect.
  3. Observe socket.gaierror: [Errno 11001] getaddrinfo failed
  4. Device thread hangs

Expected behavior
Should either resolve (getaddrinfo does not work for .local addresses so we would need to use the zeroconf mdns resolver)

Traceback
[2021-01-05 18:30:39] ERROR:ledfx.core:Exception in core event loop: Exception in callback Device.thread_function() Traceback (most recent call last): File "C:\Users\shaun\AppData\Local\Programs\Python\Python37\lib\asyncio\events.py", line 88, in _run self._context.run(self._callback, *self._args) File "c:\users\shaun\ledfx\ledfx\ledfx\devices\__init__.py", line 156, in thread_function self.process_active_effect() File "c:\users\shaun\ledfx\ledfx\ledfx\devices\__init__.py", line 140, in process_active_effect self.flush(self.assembled_frame) File "c:\users\shaun\ledfx\ledfx\ledfx\devices\udp.py", line 88, in flush (self._config["ip_address"], self._config["port"]), socket.gaierror: [Errno 11001] getaddrinfo failed

LedFx Host Information (please complete the following information):

  • OS: Win 10
  • Installation Method: Python venv
  • LedFx Version: Latest dev

Additional context
Could fix this by only allowing IP addresses in the UDP class coz this looks like it could be a pain.
2400 Sentry events.

Is it possibile to integrate with zigbee devices?

Hello all,
I've just discovered your project since I was looking for something like your.
The only thing is that your project is related to ESP8266 chip devices.
I would like to know if it is posibile to enance it with the support to zigbee device (as led lamps)?
I'm not a coder, but if I can help somehow, I will be glad to do it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.