Release xLights release: 2026.07

Status
Not open for further replies.

keithsw1111

Senior elf
Joined
Oct 11, 2012
Messages
980
Location
Kellyville, NSW

2026.07 — April 28, 2026​

Enhancements​

  • MrPierreB — Add node animation playback to SubModels dialog.
  • dkulp — Media-compatibility "Convert Now" now special-cases animated GIFs that were used as Video effects and turns them into normal Pictures effects that properly handle animated GIFs
  • dkulp — Waveform (macOS 12+): four new "Stem — Drums / Bass / Other / Vocals (ML)" right-click filters run Apple CoreML inference against HTDemucs to split the audio into its constituent parts. Both the waveform and the playback signal follow the picked stem — so "Stem — Drums" lets you see and hear just the drum line for timing work. First activation prompts to download the model (~65 MB) into an ai-models/ subdir of the show folder or any media folder; subsequent picks are instant cache hits. Inference runs on a background thread with a progress dialog so the UI stays responsive.
  • dkulp — AI services backend moved to wx-free core (src-core/ai/). Services now expose their settings as a declarative ServiceProperty schema; secrets go through an injectable IServiceSettingsStore so platform secure storage can be plugged in.
  • dkulp — Waveform: new "View as spectrogram" right-click entry replaces the peak polygons with an STFT magnitude view (log-frequency y-axis, dB-scaled magenta→yellow colormap). Computation happens once per track; zoom/scroll just resample the cached buffer into a new texture.
  • dkulp — Timing tracks: new "Audio Chords" option in the "Add Timing Track" dialog (after the FPP entries, before VAMP plugins). Builds a chromagram, matches against 24 major/minor templates, estimates key via Krumhansl–Schmuckler, and drops a variable timing track whose back-to-back marks are labelled with the detected chord names.
  • dkulp — Waveform: new "Vocals waveform (center extract)" filter emphasises centre-panned content via M - α|S| — a lightweight counterpart to the existing "Non Vocals" filter.
  • dkulp — Waveform: new "Show Pitch Contour" right-click toggle overlays a colour-coded pitch-vs-time polyline (colour = pitch class) scaled to a log-frequency y-axis. Useful for vocal / melody timing work; unvoiced frames break the polyline.
  • dkulp — Timing tracks: new "Audio Tempo" option in the "Add Timing Track" dialog runs autocorrelation on the audio's onset envelope, confirms the detected BPM, and drops a fixed timing track with back-to-back marks at each beat.
  • dkulp — Waveform (macOS): "Classify Audio…" right-click entry runs Apple's SNClassifySoundRequest offline and lets you pick a detected class (drums, vocals, guitar, …); the waveform then scales to show amplitude only where that class is present. Linux/Windows builds exclude this via ifdef since the classifier framework is Apple-only.
  • dkulp — Waveform: new "Perceptual (LUFS)" filter renders the BS.1770 K-weighted momentary-loudness envelope so timing marks line up with what the ear actually hears on heavily-compressed tracks where raw amplitude plateaus.
  • dkulp — Waveform: new "Show Onsets" right-click entry overlays faint amber verticals at detected percussive onsets. The "Add Timing Track" dialog gains an "Audio Onsets" option that drops a new variable timing track with back-to-back marks between detected onsets. Spectral-flux detection runs entirely on-device.
  • dkulp — Waveform: overlay the RMS energy band on top of the peak polygon so compressed sections read as "loud" even when their peaks plateau.
  • dkulp — Shape effect: Effect panel now organises its 27 properties into Shape / Size / Motion / Triggers tabs instead of a flat scroll, matching the grouped layout other large effects use.
  • MrPierreB — Value curve Exponential, Logarithmic, and Parabolic types now support Start/End.
  • scott — Add "Show Names" and "Show Start Channel" checkboxes to Layout tab to display model names and controller/port or start channel in the layout preview
  • derwin12 — Add timing track trigger for Shockwave effect
  • derwin12 — Include fonts in a Package Sequence (#3503)
  • derwin12 — Better cube visualizion for dumb rgb (#4652)
  • derwin12 — Windows now preserves audio pitch at various speeds (#2149)
  • derwin12 — Show losso box when selecting props in 3D (#3841)
  • derwin12 — Show warning if you set String property when Controller color order is available (#5441)
  • derwin12 — Up the pixielink port count capability (#4079)
  • derwin12 — Add new Label text model (#5145)
  • derwin12 — Add optional image to custom models (#3825)
  • derwin12 — Picture effect auto-sets scaling to "Scale To Fit" when appropriate
  • derwin12 — Add Speed as a Warp effect type (#4596)
  • derwin12 — Add more variability to Lines Effect. Now using float values (#4532)
  • AGFazio — Include Line Count in Submodel dialog (#5359)
  • dkulp — Render: RenderProgressInfo now self-signals completion via an atomic flag
  • dkulp — Shader effect: dynamic uniforms emit JSON matching the effect-panel schema; JsonEffectPanel gains a reusable point2d control type, so iPad and desktop build the dynamic rows from the same description.

Bug Fixes​

  • dkulp — Replaced throwing std::stoi calls in OutputManager / xxxSerialOutput / HinksPix with non-throwing std::strtol so corrupt config or controller responses no longer crash.
  • dkulp — State / Faces / Shockwave / VUMeter / Lyric / MatrixModel: added div-by-zero and map.at() guards on render-thread paths that could crash on edge-case inputs.
  • dkulp — Faces / xlFontInfo / SpecialOptions / FileUtils / ip_utils / AudioManager: added missing locks around static / shared caches that were mutated concurrently from render workers and could corrupt or crash under heavy parallel rendering.
  • dkulp — E1.31 / ArtNet / DDP SetManyChannels: bounds-check the starting channel before memcpy so an out-of-range channel can't overflow the packet buffer.
  • dkulp — AlphaPix / WLED / HinksPix: free curl_slist headers (and the WLED CURL handle) on every exit path; firmware-upload filename copy now uses bounded strncpy.
  • dkulp — AudioManager: widened sample-loop counters to long so pcm conversion no longer overflows on multi-hour audio; added missing int16 clamp on the NONVOCALS / VOCALS mono fallback.
  • dkulp — Render engine: AggregatorRenderer::setPreviousFrameDone bounds-checks the frame index before indexing the per-frame counter array.
  • derwin12 — Fix state/face definitions copied in layout not rendering in sequence until restart (#6239)
  • derwin12 — Layout was sizing groups and model names too quickly (#6236)
  • derwin12 — Fix ON effect was resetting the intensity values (#6233)
  • derwin12 — Fix visualizer clearing all models (#6227)
  • derwin12 — Twinkly was blocking the render when devices were offline (#4101)
  • derwin12 — Fix copy-paste model not assigning the next available start channel
  • dkulp — Metal render: drain autoreleased MTLCommandEncoders per frame instead of per render-job (large memory growth during long renders), fix sparkleBuffer use-after-free, and release retained Metal objects at shutdown
  • dkup/derwin — Handle various codec issues in avi conversions (#6142, #6153)
  • derwin12 — Fix Use State as Outline for Face Effect default (#6148)
  • derwin12 — New polyline with default drop pattern did not render (#6156)
  • derwin12 — ESPixelStick: clear unused ports when uploading with FullxLights Control (#5689)
  • derwin12 — Fix base show folder merge not detecting child element changes (#4265)
  • derwin12 — Preserve Layer Blending and Settings when using Random Effects (#6136)
  • AGFazio — Honour 2D to 3D Layout changing (#6133)
  • AGFazio — Fix pixel sizing appearing zoomed in (#6139)
  • derwin12 — Downloadeded models now placed where you drop them (#5912)
  • derwin12 — Random Value Curve now holds the value properly (#4803)
  • scott — Fix some values not being stored in (new) settings file (#6134)
  • dkulp — Fix layout render glitches by sorting pixels back-to-front by camera-space Z (#6126)
  • charlie — Restore performance of House Preview Export to Video

Changes​

  • dkulp — Package Sequence: rewritten to walk SequenceMedia + every model/view-object's file references + Matrix face images so shaders, custom images, videos, meshes, and face/state assets are actually included. Show-relative paths preserved where possible; external files relocated under typed subdirs (Images/ Videos/ Shaders/ Glediators/ Meshes/ Faces/) with folder-based disambiguation on basename collisions so packaged filenames can't mimic PicturesEffect's animation-sequence detection. No more _lost/ dumping;
  • dkulp — Packaging preferences: "Exclude Presets" renamed to "Exclude Videos" — the old option stripped a rgbeffects element that no longer carries presets, so it was a no-op;

xLights is available for download from https://github.com/xLightsSequencer/xLights/releases/ for Windows/Linux and from the App Store for Mac.

Issue tracker: https://github.com/xLightsSequencer/xLights/issues
Video tutorials: https://videos.xlights.org
xLights user manual: https://manual.xlights.org/xlights/

If you have encountered a specific issue, developers ask that you submit details to the xLights GitHub repository.

For requests for general help among peers, consider starting a new forum thread: https://auschristmaslighting.com/forums/xlights-xschedule.61/post-thread
 
Status
Not open for further replies.
Back
Top