Skip to content

Releases: connornishijima/SensoryBridge

4.1.1 | MicroDose Crash Patch

22 Mar 01:52
Compare
Choose a tag to compare

This patch makes some tweaks for memory safety and how FreeRTOS handles the timing of the LED thread to avoid the random lockups that some folks have reported after having their Sensory Bridge on for long periods! It took a while to diagnose this issue since each time I made I change I had to wait it out to see if a lockup occurred.

- Lixie Labs*

USB Update Process

Visit settings.sensorybridge.rocks and plug in your device if you need to check its current firmware version!

If you've already updated to 3.0.0+, you're in for a treat! This is an update that you can do in under a minute if you're really trying. Download the SB_FIRMWARE_410.BIN below, and do the following:

  • Hold down the MODE button on your Sensory Bridge while plugging it into your PC
  • This starts Update Mode, and your LEDs will trail blue
  • Sensory Bridge is now pretending to be a 2MB flash drive on your PC, just drag the .BIN update into it and your device will do all the work for you!
  • Once complete, unplug your Sensory Bridge
  • Hold down BOTH the MODE and NOISE buttons while plugging the unit back in
  • This step is necessary to clear incompatible configs from the last firmware version
  • After you see the green LED flash at least once, let go of both buttons to finish booting up!

If you haven't gotten firmware >= 3.0.0 on your device yet, you'll have to compile from source this time. It's a bit of extra work, but well-worth the effort and you'll never need to do it again. Keep reading to learn how...


Compiling From Source

You only need to follow this section if you're on a pre-3.0.0 firmware or want to play with the source code as a developer!

To update your Sensory Bridge firmware to 3.0.0 and above from an earlier version, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Install FixedPoints Dependency (New in 4.0.0+)

Same instructions as the FastLED section above, but with the "FixedPoints" library by Pharap!

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM13") will likely differ from mine.

IMPORTANT PLEASE READ

FOR THIS FIRMWARE TO WORK, you need to make sure the following settings are set in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly.

"USB CDC On Boot: Disabled" is quite important, as the 3.0.0+ firmware manages USB itself, differently from the default behavior

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings like unused variables
  • Arduino IDE 2.x treats all warnings as errors by default, breaking thousands of legacy libraries. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

Upload

Hit either Ctrl+U or Cmd+U (depending on your OS), and the code will slowly compile and upload to Sensory Bridge. However, you still have one more step after this:

...Re-upload

Unless you know how to modify your ESP32-S2 compilation flags to use -O3 instead of -Os (it's in the ESP32 core's platform.txt), you'll need to jump up to the "USB Update Process" section above and follow that short guide to upload again, this time from the pre-compiled binary. (You're able to do that now because only firmware >= 3.0 supports USB Update Mode)

The version I distribute myself has been compiled with the -O3 flag, leading to a slightly larger, but hugely faster firmware, and the speed difference is quite noticeable. Once that's done, you'll never have to go through this longer version of the process again! Enjoy your updated Sensory Bridge!

4.1.0 | MicroDose and some fixes

26 Jan 01:46
9a25d5c
Compare
Choose a tag to compare

Patch time!

This patch adds support for MicroDose displays (that use 2x WS2812B chains for a higher frame rate) and incorporates some scaling fixes to prevent the "stuck green LED" that was pointed out by some users.

Enjoy your new displays!

- Lixie Labs*

USB Update Process

Visit settings.sensorybridge.rocks and plug in your device if you need to check its current firmware version!

If you've already updated to 3.0.0+, you're in for a treat! This is an update that you can do in under a minute if you're really trying. Download the SB_FIRMWARE_410.BIN below, and do the following:

  • Hold down the MODE button on your Sensory Bridge while plugging it into your PC
  • This starts Update Mode, and your LEDs will trail blue
  • Sensory Bridge is now pretending to be a 2MB flash drive on your PC, just drag the .BIN update into it and your device will do all the work for you!
  • Once complete, unplug your Sensory Bridge
  • Hold down BOTH the MODE and NOISE buttons while plugging the unit back in
  • This step is necessary to clear incompatible configs from the last firmware version
  • After you see the green LED flash at least once, let go of both buttons to finish booting up!

If you haven't gotten firmware >= 3.0.0 on your device yet, you'll have to compile from source this time. It's a bit of extra work, but well-worth the effort and you'll never need to do it again. Keep reading to learn how...


Compiling From Source

You only need to follow this section if you're on a pre-3.0.0 firmware or want to play with the source code as a developer!

To update your Sensory Bridge firmware to 3.0.0 and above from an earlier version, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Install FixedPoints Dependency (New in 4.0.0+)

Same instructions as the FastLED section above, but with the "FixedPoints" library by Pharap!

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM13") will likely differ from mine.

IMPORTANT PLEASE READ

FOR THIS FIRMWARE TO WORK, you need to make sure the following settings are set in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly.

"USB CDC On Boot: Disabled" is quite important, as the 3.0.0+ firmware manages USB itself, differently from the default behavior

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings like unused variables
  • Arduino IDE 2.x treats all warnings as errors by default, breaking thousands of legacy libraries. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

Upload

Hit either Ctrl+U or Cmd+U (depending on your OS), and the code will slowly compile and upload to Sensory Bridge. However, you still have one more step after this:

...Re-upload

Unless you know how to modify your ESP32-S2 compilation flags to use -O3 instead of -Os (it's in the ESP32 core's platform.txt), you'll need to jump up to the "USB Update Process" section above and follow that short guide to upload again, this time from the pre-compiled binary. (You're able to do that now because only firmware >= 3.0 supports USB Update Mode)

The version I distribute myself has been compiled with the -O3 flag, leading to a slightly larger, but hugely faster firmware, and the speed difference is quite noticeable. Once that's done, you'll never have to go through this longer version of the process again! Enjoy your updated Sensory Bridge!

4.0.0 | The Polish Update ✨

11 Jul 22:09
Compare
Choose a tag to compare

"Polish" as in "to make shiny", not the language! 😉

This is the last stop before adding remote control over WiFi. I wanted to clean up the user experience and rendering tech first!

Some quick facts about The Polish Update:

  • Audio Engine Rewrite | The underlying time-to-frequency domain code has been refreshed to better capture the subtleties of your music and reduce flicker!
  • LED Engine Rewrite | All color channel calculations now use signed Q15.16 fixed-point accuracy, with more than twice the color resolution of the former 8-bit system! A hand-crafted temporal dithering algorithm now globally controls the LEDs, meaning all modes have high-res color, not just the main mode!
  • New UI System | When you adjust the knobs, a custom graph seamlessly appears on the bottom/left half of your display, showing you the current value you're setting without looking at the knob anymore!
  • New mode! | "Note Dots" represents the strength of the 12 western scale notes with the position of dots on the display!
  • Base Coat | A new feature that forces all LEDs to output an very dim gray instead of ever showing black. This helps to improve the appearance in most modes, reducing the "sparkle" effect visible on the LEDs at extremely low brightness levels.
  • Update Notifications | You might have arrived here from settings.sensorybridge.rocks, which will now notify you on-screen if a newer firmware is available for your Sensory Bridge!
  • Kaleidoscope Mode Rewrite | Now it actually looks how I wanted it to! The Perlin noise of this mode now scrolls outward from the center based on the spectral activity of the lows, mids and highs it can hear. It's my favorite mode for anything dance music!

This release page will be updated with pictures, videos, and a more detailed changelog in the coming days, but I wanted to get this out to you ASAP! I've never been more proud of an update, and Sensory Bridge is now closer than ever to my intended vision. Seeing is believing, so please give this new version a try!

- Lixie Labs

USB Update Process

Visit settings.sensorybridge.rocks and plug in your device if you need to check its current firmware version!

If you've already updated to 3.0.0+, you're in for a treat! This is an update that you can do in under a minute if you're really trying. Download the SB_FIRMWARE_400.BIN below, and do the following:

  • Hold down the MODE button on your Sensory Bridge while plugging it into your PC
  • This starts Update Mode, and your LEDs will trail blue
  • Sensory Bridge is now pretending to be a 2MB flash drive on your PC, just drag the .BIN update into it and your device will do all the work for you!
  • Once complete, unplug your Sensory Bridge
  • Hold down BOTH the MODE and NOISE buttons while plugging the unit back in
  • This step is necessary to clear incompatible configs from the last firmware version
  • After you see the green LED flash at least once, let go of both buttons to finish booting up!

If you haven't gotten firmware >= 3.0.0 on your device yet, you'll have to compile from source this time. It's a bit of extra work, but well-worth the effort and you'll never need to do it again. Keep reading to learn how...

Compiling From Source

To update your Sensory Bridge firmware to 3.0.0 and above from an earlier version, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Install FixedPoints Dependency (New in 4.0.0+)

Same instructions as the FastLED section above, but with the "FixedPoints" library by Pharap!

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM13") will likely differ from mine.

IMPORTANT PLEASE READ

FOR THIS FIRMWARE TO WORK, you need to make sure the following settings are set in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly.

"USB CDC On Boot: Disabled" is quite important, as the 3.0.0+ firmware manages USB itself, differently from the default behavior

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings like unused variables
  • Arduino IDE 2.x treats all warnings as errors by default, breaking thousands of legacy libraries. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

Upload

Hit either Ctrl+U or Cmd+U (depending on your OS), and the code will slowly compile and upload to Sensory Bridge. However, you still have one more step after this:

...Re-upload

Unless you know how to modify your ESP32-S2 compilation flags to use -O3 instead of -Os (it's in the ESP32 core's platform.txt), you'll need to jump up to the "USB Update Process" section above and follow that short guide to upload again, this time from the pre-compiled binary. (You're able to do that now because only firmware >= 3.0 supports USB Update Mode)

The version I distribute myself has been compiled with the -O3 flag, leading to a slightly larger, but hugely faster firmware, and the speed difference is quite noticeable. Once that's done, you'll never have to go through this longer version of the process again! Enjoy your updated Sensory Bridge!

3.2.0 | Incandescent bulb simulations, and other new features!

08 May 19:30
Compare
Choose a tag to compare

A Retro Feel

I've always loved the look of traditional incandescent lights, especially those under tinted bulbs. If you're a fan of that look as well, you're in luck! The 3.2.0 Sensory Bridge Firmware includes the ability to simulate the looks of these retro bulbs using new settings!

It's tough to portray on camera, but here's a video with this new look in action! Notice the more pastel colors, and subdued blues.

newsettings3

Kaleidoscope Mode

Using three channels of Perlin Noise which are advancing based on beats found in the low/mid/high ranges, Kaleidoscope Mode offers a smooth, undulating rainbow of constant brightness that pulses around to the beat of your music!

Click to watch:
Video

Auto Color Shift

Returning from 2.x.x firmware is Auto Color Shift! When enabled, (and with your CHROMA knob turned down into the manual range) the color of your lightshows will automatically be cycled based on the spectral density of the music!

Click to watch:
Video

Preset Themes

Now available on settings.sensorybridge.rocks are preset themes! These presets modify multiple settings at once. Your options so far include:

  • Default (Incandescent LUT)
  • Tinted Bulbs (Incandescent LUT, Bulb Overlay)
  • Incandescent (Monochromatic, warm white)
  • White (Monochromatic, neutral white)
  • Classic (Pre-3.2.x look, full color range, no LUT)

USB Update Process

If you've already updated to 3.0.0+, you're in for a treat! This is an update that you can do in under a minute if you're really trying. Download the SB_FIRMWARE_320.BIN below, and do the following:

  • Hold down the MODE button on your Sensory Bridge while plugging it into your PC
  • This starts Update Mode, and your LEDs will trail blue
  • Sensory Bridge is now pretending to be a 2MB flash drive on your PC, just drag the .BIN update into it and your device will do all the work for you!
  • Once complete, unplug your Sensory Bridge
  • Hold down BOTH the MODE and NOISE buttons while plugging the unit back in
  • This step is necessary to clear incompatible configs from the last firmware version
  • After you see the green LED flash at least once, let go of both buttons to finish booting up!

If you haven't gotten firmware >= 3.0 on your device yet, you'll have to compile from source this time. It's a bit of extra work, but well-worth the effort and you'll never need to do it again. Keep reading to learn how...

Compiling From Source

To update your Sensory Bridge firmware to 3.0.0 and above from an earlier version, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM13") will likely differ from mine.

IMPORTANT PLEASE READ

FOR THIS FIRMWARE TO WORK, you need to make sure the following settings are set in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly.

"USB CDC On Boot: Disabled" is quite important, as the 3.0 firmware manages USB itself, differently from the default behavior

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings like unused variables
  • Arduino IDE 2.x treats all warnings as errors by default, breaking thousands of legacy libraries. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

Upload

Hit either Ctrl+U or Cmd+U (depending on your OS), and the code will slowly compile and upload to Sensory Bridge. However, you still have one more step after this:

...Re-upload

Unless you know how to modify your ESP32-S2 compilation flags to use -O3 instead of -Os (it's in the ESP32 core's platform.txt), you'll need to jump up to the "USB Update Process" section above and follow that short guide to upload again, this time from the pre-compiled binary. (You're able to do that now because only firmware >= 3.0 supports USB Update Mode)

The version I distribute myself has been compiled with the -O3 flag, leading to a slightly larger, but hugely faster firmware, and the speed difference is quite noticeable. Once that's done, you'll never have to go through this longer version of the process again! Enjoy your updated Sensory Bridge!

3.1.0 | LED Trickery, and some fixes!

30 Jan 02:28
Compare
Choose a tag to compare

How does 200 FPS sound?

But how? Well, it turns out that the ESP32-S2 is perfectly happy running two threads "at the same time" on a single core, which lets Sensory Bridge now update the LEDs at double the previous rate! This has unlocked a really amazing feature:

maxresdefault

Temporal Dithering

Now that we can refresh the LEDs at 200Hz, we can slightly modify their output back forth between intermediate values 100 times a second. This allows for Temporal Dithering/Frame Rate Control, which allows the LEDs to trick your eye into seeing more shades of color than they can normally produce!

While crossing the 120 FPS threshold allowed me to use FastLED's built-in global temporal dithering (Try your PHOTONS knob after updating), I've also been able to implement per-LED dithering, making the Spectrogram look amazing, with a lot less loss of color resolution at pixels with lower brightness. After the update, give your LEDs a shake to see the effect in action! If you don't like the dithering, you're free to disable it @ settings.sensorybridge.rocks.

Also available as a configurable setting now is:

sensitivity

Manual Sensitivity Adjustment

Requested by Matt Crawford, (one of Lixie Labs' GitHub Sponsors!) You can now manually increase the gain of the spectrogram if you find yourself wanting to use your Sensory Bridge farther away from speakers!

Other Notable Changes From 3.0.0

  • GDFT calculations now use a Hann window, because I freed up enough CPU to make it feasible! This means much less spectral leakage, especially at lower frequencies.
  • GDFT also utilizes interlacing on the 16 lowest frequencies by only updating odd or even fields every frame, cutting their expensive computation time in half! By the time the spectrogram is finished going through all of its filtering steps, you wouldn't even know that it's happening.
  • Better post-process scaling of the spectrogram leading to a more even response curve, especially at high frequencies
  • Noise calibration data is now a lot less conservative, only scaling itself by 1.2x instead of 1.5x to subtract ambience. This preserves more quiet tones of music
  • "FPS" has been split into two variables: "SYSTEM FPS" and "LED FPS". Both are now shows on the settings page, and are independent of each other.
  • Audio sample rate is now 12200 instead of 24400, saves on GDFT execution time
  • New configuration option: MAX CURRENT (mA). Sets a rough current-draw limit for the LED strip, in milliamps. If a lightshow mode's output would surpass this limit, the display will be automatically dimmed by a factor that helps keep LED power consumption below this value. (Default 1500mA)
  • chip_id is now actually a unique string on each unit, because ESP32 is dumb sometimes

USB Update Process

If you've already updated to 3.0.0, you're in for a treat! This is your first update that you can do in under a minute if you're really trying. Download the SB_FIRMWARE_310.BIN below, and do the following:

  • Hold down the MODE button on your Sensory Bridge while plugging it into your PC
  • This starts Update Mode, and your LEDs will trail blue
  • Sensory Bridge is now pretending to be a 2MB flash drive on your PC, just drag the .BIN update into it and your device will do all the work for you!

If you haven't gotten 3.0 on your device yet, you'll have to compile from source this time. It's a bit of extra work, but well-worth the effort and you'll never need to do it again. Keep reading to learn how...

Compiling From Source

To update your Sensory Bridge firmware to 3.0.0 and above from an earlier version, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM13") will likely differ from mine.

IMPORTANT PLEASE READ

FOR THIS FIRMWARE TO WORK, you need to make sure the following settings are set in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly.

"USB CDC On Boot: Disabled" is quite important, as the 3.0 firmware manages USB itself, differently from the default behavior

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings like unused variables
  • Arduino IDE 2.x treats all warnings as errors by default, breaking thousands of legacy libraries. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

Upload

Hit either Ctrl+U or Cmd+U (depending on your OS), and the code will slowly compile and upload to Sensory Bridge. However, you still have one more step after this:

...Re-upload

Unless you know how to modify your ESP32-S2 compilation flags to use -O3 instead of -Os (it's in the ESP32 core's platform.txt), you'll need to jump up to the "USB Update Process" section above and follow that short guide to upload again, this time from the pre-compiled binary. (You're able to do that now because only firmware >= 3.0 supports USB Update Mode)

The version I distribute myself has been compiled with the -O3 flag, leading to a slightly larger, but hugely faster firmware, and the speed difference is quite noticeable. Once that's done, you'll never have to go through this longer version of the process again! Enjoy your updated Sensory Bridge!

3.0.0 | Biggest Update Ever! ❤️

25 Jan 22:42
Compare
Choose a tag to compare

The 3.0 firmware for Sensory Bridge is finally complete!

The 2.0 firmware your Sensory Bridge is running right now took me a month to create. I've now been working daily on the 3.0 firmware for 71 days, and I've finally crossed off my last additions of hundreds. Let's dig in, it's pretty intense.

(If you'd like to skip to the instructions for updating, locate the "Update Process" section below and start there. GitHub Release pages don't let you link to specific headings for some reason.)

Goertzel-based Discrete Fourier Transform

VIDEO DEMO

Going forwards, instead of using the Fast Fourier Transform (FFT for short), Sensory Bridge employs a frequency conversion method I'm calling a Goertzel-based Discrete Fourier Transform instead - GDFT for short.

You can also call it the God Damn Fast Transform if you'd like, because your Sensory Bridge now runs upwards of 100 FPS, instead of 60. Using fixed-point math and employing 64 parallel instances of the Goertzel algorithm to study only the frequencies we're interested instead of an entire spectrum, Sensory Bridge now has perfectly scaled octaves of notes on its display. The pitch resolution is far clearer than before, with all frequencies getting equal treatment, making basslines a joy to watch now!

Between that and smarter spectrogram filtering techniques employed in 3.0 that keep your display very quick to react without being overwhelming, it's a visual treat. There's even a new color option which gives each note in an octave a unique color, and you can customize the frequency range your unit will react to using the...

SETTINGS PAGE

WebSerial-based Configuration Tool

settings.sensorybridge.rocks

This new website lets you dig into the internals of your Sensory Bridge and highly customize it! Change the LED type, strip length, color order, interpolation, contrast, and more - all without ever touching code.

Once you're on the site, you'll be asked to pair with your own Sensory Bridge over a USB cable, and from there you can play! This makes setting up a pair of units with the wireless Sensory Sync features a breeze.

(Currently only supported on Chrome or MS Edge on a Mac or PC)

One of the really neat things you can enable with this tool is...

Bass Mode

VIDEO DEMO

Because of how clear bass frequencies are on this new version, I've added a special mode that allows you to restrict your display to only respond to low-end frequencies, which can augment the effect of the...

Notation-based Color

Because of how exactly the 3.0 firmware can pick out pitch, all lightshow modes can now have color automatically tied to the melody of your music! Just turn your CHROMA knob all the way up to enable it! This looks especially amazing on the new...

Bloom Mode 2.0

VIDEO DEMO

Brighter lights. Smoother movement. Higher saturation. But coolest of all, Bloom Mode now uses non-linear scrolling, getting faster as it trails towards the edges of the display! This leads to a really neat "foreshortening" effect which I can't help but compare to the colorful "Stargate Sequence" of 2001: A Space Odyssey.

While browsing the new modes, you may notice...

Smooth Transitions

One of the core goals of 3.0 wasn't just adding new features, it was refinement. Better algorithms, faster output, but the little things too. Now, when changing modes or queueing background-noise removal, the LEDs will smoothly fade to black in-between, no more harsh instant changeovers. Other small refinements to user experience include:

Splash Screen

Love it or hate it, Sensory Bridge now comes with a beautiful intro animation when it boots up! (And don't worry, if you're in the "hate it" group, just turn it off with the configuration site that I mentioned before!)

Standby Dimming

When Sensory Bridge detects silence for more than ten seconds, it will fade out the main LEDs and dim the Sweet Spot indicator for you.

Reduced "Sweet Spot" Brightness

In fact, 1/8th the brightness. Night-time Sensory Bridge users will love this change, and daytime users can still read the Sweet Spot at a glance.

Drag-and-drop Firmware Updates

This the last Sensory Bridge firmware update you'll have to do through the Arduino IDE with the usual tutorial below!

Once this version is installed on your unit, holding the MODE button down while plugging the Sensory Bridge into a computer will make it pretend that it's a 2MB flash drive on your PC. Whenever the next update is available in the future, it will be distributed as a single file you can drag-and-drop into your Sensory Bridge to update it in seconds, with an accompanying animation on the display! (This release page even includes a pre-compiled binary of itself below that you can use to try this feature after you've manually updated.)

Power users can still compile updates from the well-documented source code if they'd like, too! Speaking of power users...

Extremely Powerful UART Menu

For the technically inclined, Sensory Bridge 3.0 has hidden superpowers. Here's the output when you connect to the unit with a Serial Monitor and type "help":

SENSORY BRIDGE - Serial Menu ------------------------------------------------------------------------------------

                                           v | Print firmware version number
                                       reset | Reboot Sensory Bridge
                               factory_reset | Delete configuration, including noise cal, reboot
                            restore_defaults | Delete configuration, reboot
                               get_main_unit | Print if this unit is set to MAIN for SensorySync
                                        dump | Print tons of useful variables in realtime
                                        stop | Stops the output of any enabled streams
                                         fps | Return the average FPS
                                     chip_id | Return the chip id (MAC) of the CPU
                                    get_mode | Get lightshow mode's ID (index)
                               get_num_modes | Return the number of modes available
                             start_noise_cal | Remotely begin a noise calibration
                             clear_noise_cal | Remotely clear the stored noise calibration
                                    identify | Flashes the LEDs twice in yellow
                              set_mode=[int] | Set the mode number
         mirror_enabled=[true/false/default] | Remotely toggle lightshow mirroring
          reverse_order=[true/false/default] | Toggle whether image is flipped upside down before final rendering
                         get_mode_name=[int] | Get a mode's name by ID (index)
                               stream=[type] | Stream live data to a Serial Plotter.
                                               Options are: audio, fps, max_mags, max_mags_followers, magnitudes, spectrogram
             led_type=['neopixel'/'dotstar'] | Sets which LED protocol to use, 3 wire or 4 wire
                led_count=[int or 'default'] | Sets how many LEDs your display will use (native resolution is 128)
       led_color_order=[GRB/RGB/BGR/default] | Sets LED color ordering, default GRB
      led_interpolation=[true/false/default] | Toggles linear LED interpolation when running in a non-native resolution (slower)
                          debug=[true/false] | Enables debug mode, where functions are timed
               sample_rate=[hz or 'default'] | Sets the microphone sample rate
             note_offset=[0-32 or 'default'] | Sets the lowest note, as a positive offset from A1 (55.0Hz)
              square_iter=[int or 'default'] | Sets the number of times the LED output is squared (contrast)
          magnitude_floor=[int or 'default'] | Sets minimum magnitude a frequency bin must have to contribute the show
           max_block_size=[int or 'default'] | Sets the maximum number of samples used to compute frequency data
        samples_per_chunk=[int or 'default'] | Sets the number of samples collected every frame
                   gain=[float or 'default'] | Sets the scaling of spectrogram data (>0.0 is brighter, <0.0 is darker)
         boot_animation=[true/false/default] | Enable or disable the boot animation
                  set_main_unit=[true/false] | Sets if this unit is MAIN or not for SensorySync
           sweet_spot_min=[int or 'default'] | Sets the minimum amplitude to be inside the 'Sweet Spot'
           sweet_spot_max=[int or 'default'] | Sets the maximum amplitude to be inside the 'Sweet Spot'
        chromagram_range=[1-64 or 'default'] | Range between 1 and 64, how many notes at the bottom of the
                                               spectrogram should be considered in chromagram sums
        standby_dimming=[true/false/default] | Toggle dimming during detected silence
                      bass_mode=[true/false] | Toggle bass-mode, which alters note_offset and chromagram_range for bass-y tunes

There's some deeper settings you can access and change here that the configuration site doesn't expose, like the audio sampling rate, window size, Sweet Spot thresholds, etc.. Play all you want, ...

Read more

3.0.0-beta5 | I lied, there's more new stuff!

23 Jan 02:55
Compare
Choose a tag to compare

Waveform Mode broke for now, but this version is now fully compatible with the new web configuration tool I wrote @ settings.sensorybridge.rocks!


3.0.0-beta4 includes several additions and fixes, and one subtraction:

Additions

  • led_color_order=[GRB, RGB, BGR] is now a UART command, along with
  • led_count=[int] Sets the LED strip length
  • led_interpolation=[true/false] Toggles linear interpolation on/off when running outside the native resolution of 128 LEDs
  • bass_mode=[true/false] See for yourself!
  • CHROMA knob is finally back! The top 10% puts you in Chromatic Mode where colors are automatically decided by notation, and the bottom 90% gives you access to the full hue range, making the modes show a color picked by YOU!
  • Holding both top buttons down while plugging in the unit will now force it to factory reset, in case something ever goes wrong
  • UART menu input is now sanitized to prevent out-of-bounds access
  • An absolute fuckload of infrastructure that works with settings.sensorybridge.rocks and eventually a WebSockets app!

Fixes

  • Noise cal forces LED on if in standby mode
  • Made "low" threshold for Sweet Spot calculated at runtime during noise cal

Subtractions (for now)

  • I broke Waveform Mode somehow and I should just rewrite it again anyways, it needed help

As with previous beta updates, Erase All Flash Before Sketch Upload: ENABLED needs to be set in Arduino, as these new features have shifted the contents of config.bin in LittleFS, making older versions invalid.

To learn more about what 3.0.0-beta has added or changed so far, please refer to the previous 3.0.0-beta releases.

Update Process

To update your Sensory Bridge firmware to the 3.0.0-beta5, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM10") will likely differ from mine.

IMPORTANT PLEASE READ

To use this beta firmware, you need to make sure the following setting is enabled in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly. A more graceful solution is in the works to detect config file versions and refuse incompatible ones.

"USB CDC On Boot: Enabled" is quite important, as this is what will allow you to flash firmware over USB again next time and use the UART menu. If this is not enabled, the next time you want to update your firmware you'll need to hold down the BOOT button on the bottom of your Sensory Bridge while plugging it in to be able to flash it again as normal.

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings
  • Arduino IDE 2.x treats all warnings as errors by default. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

3.0.0-beta4 | All original modes, and silence detection!

21 Jan 16:17
182c288
Compare
Choose a tag to compare

All original functions are fully re-implemented! Just finishing touches remain...


3.0.0-beta4 includes several additions and fixes:

Additions

  • Re-implemented Waveform Mode
  • Re-implemented VU Mode
  • Re-implemented VU Dot Mode
  • Automatic DC offset calculation is back
  • Sensory Bridge will now shut off the LEDs and dim the Sweet Spot to 10% brightness if silence (Sweet Spot all the way left) is detected for more than 10 seconds

Fixes

  • The UART menu commands chromagram_bass=true/false and chromagram_bass_range=int have been unified into a single variable: chromagram_range. This defaults to 64, (the full range) and can be lowered to something like 12 to reproduce the same effect!

As with previous beta updates, Erase All Flash Before Sketch Upload: ENABLED needs to be set in Arduino, as these new features have shifted the contents of config.bin in LittleFS, making older versions invalid.

To learn more about what 3.0.0-beta has added or changed so far, please refer to the previous 3.0.0-beta releases.

Update Process

To update your Sensory Bridge firmware to the 3.0.0-beta4, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM10") will likely differ from mine.

IMPORTANT PLEASE READ

To use this beta firmware, you need to make sure the following setting is enabled in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly. A more graceful solution is in the works to detect config file versions and refuse incompatible ones.

"USB CDC On Boot: Enabled" is quite important, as this is what will allow you to flash firmware over USB again next time and use the UART menu. If this is not enabled, the next time you want to update your firmware you'll need to hold down the BOOT button on the bottom of your Sensory Bridge while plugging it in to be able to flash it again as normal.

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings
  • Arduino IDE 2.x treats all warnings as errors by default. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

3.0.0-beta3 | Stargates, Transitions, and Bass Mode

20 Jan 01:01
Compare
Choose a tag to compare

Starting to look REAL GOOD!


3.0.0-beta3 includes several additions and fixes:

Additions

  • The Sweet Spot LEDs are back! Like before, a low reading indicates audio is too quiet for the auto-ranger, and a high reading means you're close to audio clipping levels.
  • New UART commands for configuring the Sweet Spot:
    • sweet_spot_min=[int or 'default']
    • sweet_spot_max=[int or 'default']
  • Bloom Mode now uses exponential scrolling, increasing in speed as it approaches the edge of the display. This has a lovely 2001 "Stargate Sequence" effect, especially with its increased saturation!
  • Modes and noise calibration now use fading transitions across the board, no more harsh instant switching
  • The Chromagram (and modes derived from it, like Bloom Mode) can now be set to a bass-only mode via UART with the command chromagram_bass=true. This will restrict the Chromagram response to only the bottom octave of the spectrogram, which makes for a more interesting show on hip-hop or techno tracks!
  • Double-click of MODE button is now possible due to how transitions are handled, but is not yet assigned a function.
  • Raw waveform and smoothed amplitude join the Spectrogram and Chromagram readings as available for light show mode development

Fixes

  • FastLED.setBrightness() no longer occurs in knobs.h, where the PHOTONS knob is read. Instead, it's now in show_leds(), in led_utilities.h
  • Possible dynamic range of audio has doubled
  • Sensory Bridge now waits 10 seconds after the last mode change to save to LittleFS

As with previous beta updates, Erase All Flash Before Sketch Upload: ENABLED needs to be set in Arduino, as these new features have shifted the contents of config.bin in LittleFS, making older versions invalid.

To learn more about what 3.0.0-beta has added or changed so far, please refer to the previous 3.0.0-beta releases.

Update Process

To update your Sensory Bridge firmware to the 3.0.0-beta3, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM10") will likely differ from mine.

IMPORTANT PLEASE READ

To use this beta firmware, you need to make sure the following setting is enabled in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly. A more graceful solution is in the works to detect config file versions and refuse incompatible ones.

"USB CDC On Boot: Enabled" is quite important, as this is what will allow you to flash firmware over USB again next time and use the UART menu. If this is not enabled, the next time you want to update your firmware you'll need to hold down the BOOT button on the bottom of your Sensory Bridge while plugging it in to be able to flash it again as normal.

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings
  • Arduino IDE 2.x treats all warnings as errors by default. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled

3.0.0-beta2 | Refinements and modes!

18 Jan 19:33
Compare
Choose a tag to compare
Pre-release

The second beta 3.0.0 firmware is ready!


3.0.0-beta2 includes several fixes and additions:

Additions

  • Bloom Mode (and Fast Bloom) has returned! It now offers the same chromatic coloring as the GDFT mode, and is best used with the MOOD knob all the way up!
  • Chromagram Mode is new! It's just a folded transform that compresses the GDFT data down to only 12 bins, or one octave. Best used with the MOOD knob all the way down.
  • Boot animation! Now when the unit is plugged in, a quick 2-second animation is played on the LEDs and Sweet Spot. For the purpose of live development work, this can be toggled on/off at runtime in the UART menu with boot_animation=true/false/default.

Fixes

  • Fixed noise calibration LED readout, and it's now in a lovely Lixie Labs-Pink for 3.0.0! Differing from 2.x, it now fades out after completion for a smoother transition back to the light show mode.

To learn more about what 3.0.0-beta has added or changed so far, please refer to the previous 3.0.0-beta releases.

Update Process

To update your Sensory Bridge firmware to the 3.0.0-beta2, download the "Source code (zip)" at the bottom of this page, extract it, and open the "SENSORY_BRIDGE_FIRMWARE.ino" in Arduino IDE.

If you don't yet have ESP32-S2 in your Arduino Board Definitions, follow the steps on this page:
https://learn.adafruit.com/adafruit-metro-esp32-s2/arduino-ide-setup-2

Install FastLED Dependency

If you don't have it installed in your copy of Arduino yet, you'll need it for Sensory Bridge to compile.

  • Go to Sketch > Include Library > Manage Libraries
  • In the window that appears, search for "FastLED" (by Daniel Garcia)
  • Install the latest version

Board Settings

Finally, make sure that all of your board settings match this image:

FIRMWARE SETTINGS

Your Serial port (i.e. "COM10") will likely differ from mine.

IMPORTANT PLEASE READ

To use this beta firmware, you need to make sure the following setting is enabled in Arduino:

Erase All Flash Before Sketch Upload: ENABLED

This will erase your 2.0.0 config.bin and noise_cal.bin files in your Sensory Bridge's storage, because they are incompatible with this version and can cause your device to not boot correctly. A more graceful solution is in the works to detect config file versions and refuse incompatible ones.

"USB CDC On Boot: Enabled" is quite important, as this is what will allow you to flash firmware over USB again next time and use the UART menu. If this is not enabled, the next time you want to update your firmware you'll need to hold down the BOOT button on the bottom of your Sensory Bridge while plugging it in to be able to flash it again as normal.

Arduino IDE 2.x Fixes

Unfortunately, the new Arduino IDE 2.x has some issues that I'm hoping are fixed in a future update, because they can break this updating process and all of the new features are weighed down by annoying changes from the Legacy IDE. Here's how to fix those:

DISABLE DEFAULT COMPILATION WARNING BEHAVIOR

(This will make the firmware actually usable)

  • In the Arduino 2.x IDE, click "File > Preferences"
  • Set "Compiler Warnings" to "Default"
  • This is because some external dependencies in the code such as FastLED trigger ignorable warnings
  • Arduino IDE 2.x treats all warnings as errors by default. (WTF)

DISABLE WORD WRAPPING

(This will guarantee code and docs are more readable, it's 2023, 80-column monitors aren't a thing. No IDE needs word wrapping enabled by default, that's dumb.)

  • In the Arduino 2.x IDE, hit F1
  • In the textbox that appears, type "wrap"
  • You'll see a result for "View - Toggle Word Wrap"
  • Click this item
  • Repeat at least once until buggy word-wrapping is actually disabled