Skip to content

🎵 🌈 Real-time LED strip music visualization using Python and the ESP8266 or Raspberry Pi

License

Notifications You must be signed in to change notification settings

segfault16/modular-led-controller-workstation

Repository files navigation

MOLECOLE - A Modular LED Controller Workstation

Build Status

MOLECOLE is a real-time LED controller for the Raspberry Pi.

It comes with a bunch of modules to generate and manipulate pixels, so you can configure your own music visualizer or ambient lighting for LED strips.

Strip

It even supports LED panels!

Panel

For runtime configuration there is a REST webserver with a web UI.

web UI

Configurations can be stored in git and do adapt to output strip or panel.

The works in this project is based on https://github.com/scottlawsonbc/audio-reactive-led-strip.

Getting started (local machine)

Python Dependencies

MOLECOLE requires at least Python 3.7 and uses pipenv to manage dependencies.

  • Get pipenv
  • Run pipenv install -d
  • If pyaudio fails to install, make sure to brew install portaudio
  • If it still fails to install, use pipenv shell and execute pip install --global-option='build_ext' --global-option='-I/usr/local/include' --global-option='-L/usr/local/lib' pyaudio. Exit and pipenv install should then succeed

OpenPixelControl Visualization Server

For running MOLECOLE without a RaspberryPi we need to somehow visualize the RGB data. For this you can use openpixelcontrol.

  • Clone the project parallel to this repository
  • Follow the instructions to compile the project
  • Use the compiled binary gl_server to start an OpenGL visualization server on localhost port 7890 to visualize the RGB data
# A LED Strip with 300 pixels
../openpixelcontrol/bin/gl_server -l layouts/demo_layout.json
# or a LED Panel with 44x22 pixels
../openpixelcontrol/bin/gl_server -l layouts/wall_44x22.json

Running MOLECOLE

# Run with clean config and without storing
pipenv python server.py --no_conf --no_store
# Run with LED Strip configuration
pipenv python server.py -N 300
# Run with LED Panel configuration
pipenv python server.py -N 968 -R 22
# For more information:
pipenv python server.py -h

You should now see some RGB data in OpenPixelControl and should be able to access the MOLECOLE UI on https://localhost:5000.

Start playing around or upload some sample configurations from configurations.

Getting started (Raspberry Pi)

See Running on RaspberryPi.