All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Updated documentation
- Bumped version to 1.4.0
- Renamed
Palette
toGradient
. - Fixed bugs
Strip
boundaries calculation.
- Implemented
CRGB Gradient::getRandomColor(uint16_t maxColors)
method. - Implemented
Sunset
effect. - Implemented
Scan
effect.
- BREAKING CHANGE:
Strip
changedpaint
methods signature: "add" is now required.
- Implemented Palette and paint methods supporting a palette instead of a single color
- Updated documentation
- Bumped version to 1.3.0
- BREAKING CHANGE:
Strip
changedoverlay
method signature: opacity is now a double (from 0 to 1). Multiplex
increased number of multiplexed effects to 20.
- BREAKING CHANGE: Simplified definition of physical strips. It's no more necessary to create CRGBArray(s) and to register them using FastLED.addLeds().
Traffic
improved effect.- Grouped strip-related classes.
- Grouped audio-related classes.
- Removed examples, now in separate repositories.
- Removed unnecessary #includes.
- Added dummy main.cpp, for a clean compilation.
Interval
: implemented rolling arguments fortoTriangle
,toSquare
andtoWave
functions.Strip
: implemented double index arguments internally clipped and converted to int16_t, to avoid rollover.Strip
: removed (a lot of) redundant code in subclasses.Strip
: calculation of pixel range in mirrored mode.
- BREAKING CHANGE: replaced all
float
variables and arguments withdouble
. - BREAKING CHANGE:
Strip
renamed methodbuffered
tooverlay
. - BREAKING CHANGE:
Stage
methodaddStrip
has now the same signature asPhysicalStrip
. Interval
: changed time precision to microseconds.- FastLED has been upgraded to version 3.9.8
- IRMP has been upgraded to version 3.6.4
- Reimplemented system effects
Controller
: implementedsetAudioEnabled(bool enabled)
andtoggleAudio()
for muting/unmuting.Strip
: implementedgetIndex(int16_t index)
andgetPosition(double pos)
for reading CRGB color value.ColorTwinkles
: ported Pixelblaze fx.SubtleWave
: ported Pixelblaze fx.Sparks
effect.Traffic
effect.
Stage
: added missing includes
DeepSpace
: fixed a bug occurring on last pixel (normalized position 1).
Controller
: fixed EEPROM persistence of param value.
HarmonicMotion
: implementedsetCriticalDamping(float cf)
correction factor (default = 1).Elastic
: updated fx using critical damping correction factor.
Interval
: added compatibility layer for easier porting of Pixelblaze-style effects.RainbowMelt
: ported Pixelblaze fx.RippleReflections
: ported Pixelblaze fx.
JoinedStrip
: fixed probable cause of momentary random freezing / crashing.JoinedStrip, ReversedStrip, SubStrip, StatefulStrip
: fixed upper boundary of random position.
- Skipped first EEPROM location, where speed for each effect is stored, as location 0 seems not to work.
Motion
: added class for handling linear/accelerated motion.
Timer
: fixed potential cause of momentary random freezing.
- Increased minimum brightenss from 10 to 20.
Vertigo
: reduced inhibit time.
Controller
: implementedsetBrightness
method for setting initial brightness.Ripple
: added optional constructor argument for setting brightness color.Background
: implemented basic effect for rendering a solid background.
Matrix
effect: fixed wrong index boundary.
Spectrum
effect: reimplemented using band peak detectors.State
: merged distinctslowRotatingHue
andfastRotatingHue
into arotatingHue
.Blackout
effect: forced strip clearing at every loop.
AudioChannel
: implemented individual peak, peakSmooth, peakHold and peakDetected for 16 frequency bands.Controller
: implemented confugurable stats and standby timers.VU2
effect: implemented configurable color.Scroller
effect: implemented audio-reactive choking.
- Fixed examples.
- Allowed
addFx()
method to add up to 9 effect.
- Moved Strip implementations code to src/strip directory. This change requires updating the #include directives in your stage implementation for any subclass of Strip (e.g.
#include "PhysicalStrip.h"
becomes#include "strip/PhysicalStrip.h"
, etc.) - Changed from FFT256 to FFT1024.
- Reimplemented Scroller using dominant frequency information.
- Reimplemented Spectrum using FFT bands instead of FFT bins.
- Implemented FFT bands and dominant band.
- Implemented EllipticMotion class for implementing 2D effects based on rotating objects.
- Implemented Spiral effect.
- Fixed Fx flush method.
- Replaced Strip method
void sanitize(int16_t &indexFrom, int16_t &indexTo)
withbool crop(int16_t &indexFrom, int16_t &indexTo)
, which restricts the given range into the visible range only when the given range overlaps with the visible range. In that case it returns true, otherwise false.
- Adopted Keep a Changelog.
- Replaced cryptic PCB connector labels (J1, J2, J3, etc.) with more human-frendly ones (POWER, LEDS, IR-RECV, etc).
- Fixed various bugs triggered by corner cases, especially when using JoinedStrip.
- Fixed a bug in HarmonicMotion caused by a wrong assignment.
Multiplex
- Increased the number of multiplexed effects to 9.
HarmonicMotion
- Added methods for random positioning:
setFixedPointRandomPosition()
setRandomPosition()
- Added methods for random positioning:
- Implemented new simple effect
Bounce
.
JoinedStrip
- Fixed various bugs.
AudioChannel
- Method
trigger
has been removed and its functionality is now provided byAudioTrigger
.
- Method
Trigger
- Replaced by
AudioTrigger
.
- Replaced by
Strip
- Fixed
paintNormalizedSize
method.
- Fixed
JoinedStrip
- Fixed
paint
method when indexFrom falls in strip 1 and indexTo falls in strip 2. - Gap has been replaced with a
StatefulStrip
, so that its behavior is consistent with the visible portion of the strip.
- Fixed
Strip
- Implemented
buffered
method for creating a buffered version of a Strip, useful for those effects which alter the underlying Strip using blur, fade, shift, etc.
- Implemented
- Implemented new Strip implementation
SubStrip
for addressing a portion of another Strip. - Implemented
AudioTrigger
for allowing beat detection over more than one loop, independently for concurrent effects.- The
triggered
method returns true if a beat was detected since the last call (or since the last call to the reset method). - Optionally, random triggers can be added (separately for signal detected or not), specifying the number of desired events per second.
- The
AudioSensor
- implemented a separate low-pass-filtered RMS sensor for feeding the beat detector, which now responds to low frequencies only.
Fx
- implemented
strip
,audioChannel
andstate
as protected members, so that they don't need to be redefined for each effect implementation.
- implemented
Matrix
fx- Reimplemented without timers, for maximum smoothness.
PeakMeter
fx- Reduced flashing on beat detected.
VU2
fx- Implemented new effect.
AudioChannel
- Fixed wrong number of FFT bins, now 128 (it was 40).
DeepSpace
fx- Fixed bug causing freezing under certain circumstances.
- Set a minimum for number of items (instead of zero).
AudioChannel
- Allowed trigger to accumulate beat detection over multiple loops.
Controller
- Added methods for presetting input (line or mic) and level.
Brightness
- Reduced minimum brightness.
- IRMP library
- Updated to version 3.4.0.
ColorBar
fx- Added extremely simple, static, single color effect.
SpeedMeter
fx- Changed background color to pure blue to avoid color deviations.
Fire
fx- Improved sound responsiveness.
Matrix
fx- Improved sound responsiveness.
Strobe
fx- Replaced color palette.
-
Circuit for Teensy 4.1 has been fixed.
Previous version contained a serious flaw. Three pads, which looked grounded in the schematics, actually were not. In particular, one of these caused the OE input ("output enable") of the level shifter (74HCT245) to be floating and thus in undefined state.
This caused the LED strip to freeze at random times.
In case you have already ordered your PCB and it's too late to cancel, the simplest fix is to scratch a bit the solder mask around those three pads and solder to the pin. Given all unused copper is grounded, this would effectively connect those pins to ground, as shown in red in the picture (bottom view).
I apologize for this.
Controller
- Allowed direct effect selection to enter play mode (e.g. when pressing a number on the remote).
DeepSpace
fx- implemented direction changes.
Juggle
- Implemented speed adjustment.
JoinedStrip
- Bypassed buffer when distance is zero.
HarmonicMotion
- Dropped method
getNormalizedPosition
.
- Dropped method
Strip
- Turned into abstract class, with three concrete implementations:
PhysicalStrip(CRGBSet &leds, uint16_t density)
ReversedStrip(Strip *strip)
JoinedStrip(Strip *strip1, Strip *strip2, uint16_t distance = 0)
- Replaced public members
leds
,count
andlenght
with public getters. - Renamed method
fill
topaint
, with optionaladd
argument. - Renamed method
fullRainbow
torainbow
, with optionaldeltaHue
argument. - Removed method
randomPos
method, replaced byrandom
. - Renamed method
randomPosRange
torandomInRange
. - Renamed method
randomPosExclude
torandomExclude
. - Renamed method
centerPos
tocenter
. - Renamed method
lastPos
tolast
. - Removed method
toPosition
. - Renamed method
toNormalizedPosition
tofromNormalizedPosition
.
- Turned into abstract class, with three concrete implementations:
Photons
fx- Reimplemented using HarmonicMotion.
Strip
- Implemented method
blur
. - Implemented method
first
. - Implemented method
size
. - Implemented method
paint
for single pixel. - Implemented method
paintNormalized
for single pixel.
- Implemented method