diff --git a/.coveragerc b/.coveragerc index de6d031e..cfc51b13 100644 --- a/.coveragerc +++ b/.coveragerc @@ -5,7 +5,7 @@ source = */ledfx/* # omit = bad_file.py [report] -# Regexes for lines to exclude from consideration +# Regex's for lines to exclude from consideration exclude_lines = # Have to re-enable the standard pragma pragma: no cover diff --git a/AUTHORS.rst b/AUTHORS.rst index 7fad8ce2..cecfd877 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -3,4 +3,5 @@ Contributors ============ * Austin Hodges -# Matthew Bowley \ No newline at end of file + +# Matthew Bowley diff --git a/README.rst b/README.rst index fc6c394d..87bede59 100644 --- a/README.rst +++ b/README.rst @@ -10,10 +10,10 @@ LedFx website: https://ledfx.app/ What is LedFx? ---------------- -What LedFx offers is the ability to take audio input, and instantanously processes the audio into realtime lightshow to multiple LED strips/matrix. +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 syncronised effects across your entire house! +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 ------- @@ -54,7 +54,7 @@ The below image describes a basic setup - LedFx running on PC, communicating wit - Soldering iron/solder #. **Build your networked LED Strip.** - - For most, this is the difficult step. Dont worry! There's guides here and online, and plenty of people able to help on WLED and LedFx Discord. + - For most, this is the difficult step. Don't worry! There's guides here and online, and plenty of people able to help on WLED and LedFx Discord. - Follow the WLED guide to connect the LED strip and ESP together: https://github.com/Aircoookie/WLED/wiki. - Flash WLED to the ESP device: https://github.com/Aircoookie/WLED/wiki/Install-WLED-binary - Ensure all WLED devices are powered on, and connected to your Wi-Fi 5Ghz. @@ -62,7 +62,7 @@ The below image describes a basic setup - LedFx running on PC, communicating wit #. **Install LedFx.** - After you have WLED installed on your ESP device, download: `LedFx.exe`_ and install LedFx. - - For Mac and Linux, see the `installation documentation`_. + - For Mac and Linux, see the `installation documentation`_ or `LedFx Guide`_. #. **Direct computer audio output to LedFx.** - Follow guide, `How to: Enable Stereo Mix in Windows 10`_. @@ -73,7 +73,7 @@ The below image describes a basic setup - LedFx running on PC, communicating wit #. **Start LedFx.** - Your WLED devices should appear in LedFx, automagically configured and ready to go! 🎆🔥 - If not, on the left hand side, click on Device Management -> ``Find WLED devices`` button, or ``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. + - If they're still not showing up, make sure they're powered on and properly connected to your WiFi. #. **Start using effects!** - Click on the device, select an effect eg ``scroll(Reactive)``, and press ``Set effect`` button. @@ -90,7 +90,7 @@ To join, click on the Discord button below: .. raw:: html - + Contributing -------------- @@ -105,9 +105,9 @@ License .. _`MIT`: https://choosealicense.com/licenses/mit/ .. _`LedFx.exe`: https://ledfx.app/download/ -.. _`LedFx Guide`: https://ledfx.readthedocs.io/en/docs/index.html +.. _`LedFx Guide`: https://ledfx.readthedocs.io/en/dev/index.html .. _`WLED`: https://github.com/Aircoookie/WLED/wiki -.. _`installation documentation`: https://ledfx.readthedocs.io/en/docs/installing.html +.. _`installation documentation`: https://ledfx.readthedocs.io/en/dev/installing.html .. _`Contributors-&-About`: https://ledfx.app/about/ .. _`How to: Enable Stereo Mix in Windows 10`: https://thegeekpage.com/stereo-mix/ .. _`Voicemeeter`: https://vb-audio.com/Voicemeeter/index.htm @@ -117,8 +117,8 @@ License .. |Build Status| image:: https://travis-ci.org/ahodges9/LedFx.svg?branch=dev :target: https://github.com/ahodges9/LedFx/tree/dev :alt: Build Status -.. |Build Status Docs| image:: https://readthedocs.org/projects/ledfx/badge/?version=docs - :target: https://ledfx.readthedocs.io/en/docs +.. |Build Status Docs| image:: https://readthedocs.org/projects/ledfx/badge/?version=dev + :target: https://ledfx.readthedocs.io/en/dev :alt: Documentation Status .. |License| image:: https://img.shields.io/badge/license-MIT-blue.svg :alt: License diff --git a/docs/installing.rst b/docs/installing.rst index 74d7cdd3..0361407c 100644 --- a/docs/installing.rst +++ b/docs/installing.rst @@ -11,10 +11,10 @@ UDP protocol. See below for a list of tested ESP8266 firmware that can be used w Here is everything you need to get started with LedFx: #. A Computer (or Raspberry Pi) with Python >= 3.6 (Anaconda_ is recommended on Windows) - #. An E1.31 capable device with addressiable LEDs connected + #. An E1.31 capable device with addressable LEDs connected - Commercial grade DMX controllers - - ESP8266 modules can be purchased for as little as $2 USD from Aliexpress + - ESP8266 modules can be purchased for as little as $2 USD from AliExpress Here is a list of tested ESP8266 firmware that works with LedFx: diff --git a/docs/trouble.rst b/docs/trouble.rst index d28c5aff..3c27869d 100644 --- a/docs/trouble.rst +++ b/docs/trouble.rst @@ -41,12 +41,12 @@ No Conda Installation (good for devs) (requires Visual Studio Build Tools): install python 3.7.9 -install visual studio build tools for win10 +install visual studio build tools for win10 https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019 "visual c++ build tools" default install options reboot -open start menu -> x86 native build tools command prompt for VS 2019 +open start menu -> x86 native build tools command prompt for VS 2019 ..code:: doscon @@ -99,7 +99,7 @@ WLED - As long as the universe size is set to 510 LedFx should output to all pixels. Maybe something in the code is not working past 1 universe as 1 universe is 170 LEDs - - Make sure "disable wifi sleep" is ticked in WiFi Settings on the WLED web interface. + - Make sure "disable WiFi sleep" is ticked in WiFi Settings on the WLED web interface. - How many devices do you have? @@ -128,11 +128,11 @@ LAN IP opens up the port, 8383 in your case, to other devices on your LAN from y Speaker Sound ------------- -My solution to this exact problem is Chromecast audios, I have two in a group and Chromecast to the group. +My solution to this exact problem is ChromeCast audios, I have two in a group and ChromeCast to the group. One of them is connected to my DAC that is then connected to my amplifiers, and another is connected to a line in on my computer in a separate room that LedFx is running on. -They're perfectly synchronised, but if you need to, you can do a delay on any of the Chromecasts within the group +They're perfectly synchronized, but if you need to, you can do a delay on any of the ChromeCasts within the group to adjust sync. Windows: @@ -143,7 +143,7 @@ https://thegeekpage.com/stereo-mix/ Squeezebox Server - Logitech ++++++++++++++++++++++++++++ -Multiroom: https://www.picoreplayer.org/ +MultiRoom: https://www.picoreplayer.org/ VBAN audio sync +++++++++++++++ diff --git a/ledfx/config.py b/ledfx/config.py index d80459a0..6564c8fb 100644 --- a/ledfx/config.py +++ b/ledfx/config.py @@ -61,7 +61,7 @@ def create_default_config(config_dir: str) -> str: def ensure_config_file(config_dir: str) -> str: - """Checks if a config file exsit, and otherwise creates one""" + """Checks if a config file exists, and otherwise creates one""" ensure_config_directory(config_dir) config_path = get_config_file(config_dir) @@ -74,7 +74,7 @@ def ensure_config_file(config_dir: str) -> str: def ensure_config_directory(config_dir: str) -> None: """Validate that the config directory is valid.""" - # If an explict path is provided simply check if it exist and failfast + # If an explicit path is provided simply check if it exist and failfast # if it doesn't. Otherwise, if we have the default directory attempt to # create the file if not os.path.isdir(config_dir): diff --git a/ledfx/core.py b/ledfx/core.py index 4bdc7208..07bf3a93 100644 --- a/ledfx/core.py +++ b/ledfx/core.py @@ -82,7 +82,7 @@ class LedFxCore(object): self.loop.run_forever() except BaseException: # Catch all other exceptions and terminate the application. The loop - # exeception handler will take care of logging the actual error and + # exception handler will take care of logging the actual error and # LedFx will cleanly shutdown. self.loop.run_until_complete(self.async_stop(exit_code=-1)) pass diff --git a/ledfx/devices/__init__.py b/ledfx/devices/__init__.py index 8db7ecc4..283aca25 100644 --- a/ledfx/devices/__init__.py +++ b/ledfx/devices/__init__.py @@ -28,7 +28,7 @@ class Device(BaseRegistry): ): vol.All(vol.Coerce(float), vol.Range(min=0, max=1)), vol.Optional( "center_offset", - description="Number of pixels from the preceived center of the device", + description="Number of pixels from the perceived center of the device", default=0, ): int, vol.Optional( @@ -138,7 +138,7 @@ class Device(BaseRegistry): def thread_function(self): # TODO: Evaluate switching over to asyncio with UV loop optimization - # instead of spinning a seperate thread. + # instead of spinning a separate thread. sleep_interval = 1 / self._config["refresh_rate"] if self._active: @@ -160,7 +160,7 @@ class Device(BaseRegistry): def assemble_frame(self): """ Assembles the frame to be flushed. Currently this will just return - the active channels pixels, but will eventaully handle things like + the active channels pixels, but will eventually handle things like merging multiple segments segments and alpha blending channels """ frame = None @@ -233,7 +233,7 @@ class Device(BaseRegistry): @abstractmethod def flush(self, data): """ - Flushes the provided data to the device. This abstract medthod must be + Flushes the provided data to the device. This abstract method must be overwritten by the device implementation. """ diff --git a/ledfx/events.py b/ledfx/events.py index 430103c9..689462d8 100644 --- a/ledfx/events.py +++ b/ledfx/events.py @@ -20,7 +20,7 @@ class Event: class DeviceUpdateEvent(Event): - """Event emmitted when a device's pixels are updated""" + """Event emitted when a device's pixels are updated""" def __init__(self, device_id: str, pixels: np.ndarray): super().__init__(Event.DEVICE_UPDATE) @@ -29,7 +29,7 @@ class DeviceUpdateEvent(Event): class GraphUpdateEvent(Event): - """Event emmitted when a device's pixels are updated""" + """Event emitted when a device's pixels are updated""" def __init__( self, @@ -44,7 +44,7 @@ class GraphUpdateEvent(Event): class LedFxShutdownEvent(Event): - """Event emmitted when LedFx is shutting down""" + """Event emitted when LedFx is shutting down""" def __init__(self): super().__init__(Event.LEDFX_SHUTDOWN) diff --git a/ledfx/utils.py b/ledfx/utils.py index a78f7b3e..86f06438 100644 --- a/ledfx/utils.py +++ b/ledfx/utils.py @@ -148,7 +148,7 @@ class BaseRegistry(ABC): @classmethod def no_registration(self, cls): - """Clear registration entiry based on special declarator""" + """Clear registration entity based on special declarator""" name = cls.__module__.split(".")[-1] del cls._registry[name] @@ -195,7 +195,7 @@ class BaseRegistry(ABC): class RegistryLoader(object): - """Manages loading of compoents for a given registry""" + """Manages loading of components for a given registry""" def __init__(self, ledfx, cls, package): self._package = package @@ -270,7 +270,7 @@ class RegistryLoader(object): return list(self._cls.registry().keys()) def classes(self): - """Returns all the classes in the regsitry""" + """Returns all the classes in the registry""" return self._cls.registry() def get_class(self, type):