Re-creating a classic firefly effect

Why do they cut out instead of fading out in the first half of the video?

Now that you mention it, the LEDs do fade smoothly in the editor and wink out in the saber.

Did you get a smooth fade in your saber?

The fade happens at retraction, longer than the out.wav I think (at least in terms of what is audible). That’s what makes it the second half.

Good catch :slight_smile:

It’s because I didn’t add enough layers in the MultiTransitionEffectL.
The transition is 6 seconds long. (3 second fade-in and 3 second fade-out)
The TransitionLoop triggers EFFECT_USER1 every 500ms.
That would mean that we would need 12 layers for it to not cut off the transitions, but I only created 10 layers.

Try changing the 10 to 12. Also, if you make the transition longer, or speed up the first loop, you need more layers.

Sorry about the deleted posts. Hands fast, brain slow.

I adjusted the layers to 12 and the fades are now visible, thank you :slight_smile:

I’m not sure about a couple of definitions, and maybe some math, but I’ve (as my wife would put it) run out of spoons for the day.

I wish I had more spoons

1 Like

To wrap on this for now, I stared at the effect for a few min and found that raising the layers to 12 still had a few “wink outs”.

It’s running exactly how I imagined with these numbers, with all smooth fade in and outs:

StylePtr<Layers<
  Black,
  TransitionLoop<AlphaL<Black,Int<0>>,TrDoEffect<TrDelay<1000>,EFFECT_USER1>>,
  MultiTransitionEffectL<TrConcat<TrFade<3000>,AlphaL<Yellow,Bump<EffectPosition<>,Int<1000>>>,TrFade<3000>>,EFFECT_USER1,24>>>(),

I didn’t do any calculations, just ran several sets of values in different presets and compared them on the saber.

My wife wants to say thanks!

1 Like

Expaninding on the firefly theme, I thought I’d add a background layer that’s kind of dim and go for a Degobah vibe. No other effects, like blast etc. Normal out, full blade slow fade “in”. I selected the color from the editor palette.

Like this:

StylePtr<Layers<
  Layers<
    AudioFlickerL<Rgb16<1,25826,1>>,
    InOutTrL<TrWipe<500>,TrFade<5000>>>,
  TransitionLoop<AlphaL<Black,Int<0>>,TrDoEffect<TrDelay<1000>,EFFECT_USER1>>,
MultiTransitionEffectL<TrConcat<TrFade<3000>,AlphaL<Yellow,Bump<EffectPosition<>,Int<1000>>>,TrFade<3000>>,EFFECT_USER1,24>>>(),  

Then 2 things happened.

If I refresh the browser with this code in the editor it changes to:

StylePtr<Layers<
  Layers<
    AlphaL<Rgb16<1,25826,1>,NoisySoundLevelCompat>,
    InOutTrL<TrWipe<500>,TrFade<5000>>>,
  TransitionLoop<AlphaL<Black,Int<0>>,TrDoEffect<TrDelay<1000>,EFFECT_USER1>>,
  MultiTransitionEffectL<TrConcat<TrFade<3000>,AlphaL<Yellow,Bump<EffectPosition<>,Int<1000>>>,TrFade<3000>>,EFFECT_USER1,24>>>()

Which now has ,NoisySoundLevelCompat added.

Using the code which worked well in the editor and and adding it to my config, I get this error when compiling:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/fire.h:4,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/ProffieOS.ino:469:
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h: In instantiation of 'OverDriveColor StyleHelper<RetType>::getColor(int) [with RetType = RGBA_nod]':
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:35:18:   required from here
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:35:61: error: could not convert '((StyleHelper<RGBA_nod>*)this)->StyleHelper<RGBA_nod>::getColor2(i)' from 'RGBA_nod' to 'OverDriveColor'
   35 |   OverDriveColor getColor(int i) override { return getColor2(i); }
      |                                                    ~~~~~~~~~^~~
      |                                                             |
      |                                                             RGBA_nod

exit status 1

Compilation error: could not convert '((StyleHelper<RGBA_nod>*)this)->StyleHelper<RGBA_nod>::getColor2(i)' from 'RGBA_nod' to 'OverDriveColor'

Should I try another way to add a base layer? Maybe an issue with the color? Bug?

Thanks :grinning:

The base layer can’t have transparency, which anything Alpha or “L” will have.
To make life easiest, just add a Black base layer, like

StylePtr<Layers<Black,
....the rest of your stuff here....>>()

I think the Style Editor still allows a transparent base at the moment, so that’s why no error there.
AudioFlickerL<Blue> is really using AlphaL<Blue,NoisySoundLevelCompat> under the hood, so it just got expanded (you’d see this if you hit the “Expand” button.)

2 Likes

Off-topic: @LyleStyle *I’m honestly afraid to see what the firefly’s on Degobah would look like. :wink:

1 Like

Keeping that advice in mind, I made this:

StylePtr<Layers<
  Black,
  InOutTr<Rgb16<7294,17,18076>,TrFade<3000>,TrFade<3000>>,
  TransitionLoop<AlphaL<Black,Int<0>>,TrDoEffect<TrDelay<500>,EFFECT_USER1>>,
  MultiTransitionEffectL<TrConcat<TrFade<3000>,AlphaL<Yellow,Bump<EffectPosition<>,Int<1000>>>,TrFade<3000>>,EFFECT_USER1,24>>>()

Which looks great in the editor, but when I try to compile I get a beefy error:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/sparkle.h:15,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/ProffieOS.ino:471:
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h: In instantiation of 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >':
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:37:14:   recursively required from 'class Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > > >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:48:9:   recursively required from 'class Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:48:9:   required from 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:71:43:   required from 'class Style<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> > >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:102:10:   required from 'StyleFactory* StylePtr() [with STYLE = Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >]'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/config/SteampunkCaneInProgress.h:161:128:   required from here
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:41:58: error: ambiguous overload for 'operator<<' (operand types are 'SimpleColor' and 'SimpleColor')
   41 |   auto getColor(int led) -> decltype(base_.getColor(led) << layer_.getColor(led)) {
      |                                      ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/ProffieOS.ino:439:
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:561:20: note: candidate: 'SimpleColor operator<<(const SimpleColor&, const RGBA_um_nod&)'
  561 | inline SimpleColor operator<<(const SimpleColor& base, const RGBA_um_nod& over) {
      |                    ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:567:23: note: candidate: 'OverDriveColor operator<<(const OverDriveColor&, const RGBA_um&)'
  567 | inline OverDriveColor operator<<(const OverDriveColor& base, const RGBA_um& over) {
      |                       ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:575:20: note: candidate: 'SimpleColor operator<<(const SimpleColor&, const RGBA_nod&)'
  575 | inline SimpleColor operator<<(const SimpleColor& base, const RGBA_nod& over) {
      |                    ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:581:23: note: candidate: 'OverDriveColor operator<<(const OverDriveColor&, const RGBA&)'
  581 | inline OverDriveColor operator<<(const OverDriveColor& base, const RGBA& over) {
      |                       ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:589:17: note: candidate: 'RGBA_nod operator<<(const RGBA_um_nod&, const RGBA_um_nod&)'
  589 | inline RGBA_nod operator<<(const RGBA_um_nod& base, const RGBA_um_nod& over) {
      |                 ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:597:13: note: candidate: 'RGBA operator<<(const RGBA_um&, const RGBA_um&)'
  597 | inline RGBA operator<<(const RGBA_um& base, const RGBA_um& over) {
      |             ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:606:17: note: candidate: 'RGBA_nod operator<<(const RGBA_um_nod&, const RGBA_nod&)'
  606 | inline RGBA_nod operator<<(const RGBA_um_nod& base, const RGBA_nod& over) {
      |                 ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:614:13: note: candidate: 'RGBA operator<<(const RGBA_um&, const RGBA&)'
  614 | inline RGBA operator<<(const RGBA_um& base, const RGBA& over) {
      |             ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:623:17: note: candidate: 'RGBA_nod operator<<(const RGBA_nod&, const RGBA_um_nod&)'
  623 | inline RGBA_nod operator<<(const RGBA_nod& base, const RGBA_um_nod& over) {
      |                 ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:631:13: note: candidate: 'RGBA operator<<(const RGBA&, const RGBA_um&)'
  631 | inline RGBA operator<<(const RGBA& base, const RGBA_um& over) {
      |             ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:640:17: note: candidate: 'RGBA_nod operator<<(const RGBA_nod&, const RGBA_nod&)'
  640 | inline RGBA_nod operator<<(const RGBA_nod& base, const RGBA_nod& over) {
      |                 ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:648:13: note: candidate: 'RGBA operator<<(const RGBA&, const RGBA&)'
  648 | inline RGBA operator<<(const RGBA& base, const RGBA& over) {
      |             ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:660:15: note: candidate: 'OverDriveColor operator<<(const SimpleColor&, const RGBA_um&)'
  660 |   inline auto operator<<(const A##_nod & base, const B & over) ->decltype(A(base) << over) { return A(base) << over; } \
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:664:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  664 |   DISAMBIGUATE_OVER(OverDriveColor, A)          \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:668:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  668 | DISAMBIGUATE_OVER2(RGBA_um)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:661:15: note: candidate: 'OverDriveColor operator<<(const OverDriveColor&, const RGBA_um_nod&)'
  661 |   inline auto operator<<(const A & base, const B##_nod & over) ->decltype(base << B(over)) { return base << B(over); }
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:664:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  664 |   DISAMBIGUATE_OVER(OverDriveColor, A)          \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:668:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  668 | DISAMBIGUATE_OVER2(RGBA_um)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:660:15: note: candidate: 'RGBA operator<<(const RGBA_um_nod&, const RGBA_um&)'
  660 |   inline auto operator<<(const A##_nod & base, const B & over) ->decltype(A(base) << over) { return A(base) << over; } \
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:665:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  665 |   DISAMBIGUATE_OVER(RGBA_um, A)                 \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:668:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  668 | DISAMBIGUATE_OVER2(RGBA_um)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:661:15: note: candidate: 'RGBA operator<<(const RGBA_um&, const RGBA_um_nod&)'
  661 |   inline auto operator<<(const A & base, const B##_nod & over) ->decltype(base << B(over)) { return base << B(over); }
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:665:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  665 |   DISAMBIGUATE_OVER(RGBA_um, A)                 \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:668:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  668 | DISAMBIGUATE_OVER2(RGBA_um)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:660:15: note: candidate: 'RGBA operator<<(const RGBA_nod&, const RGBA_um&)'
  660 |   inline auto operator<<(const A##_nod & base, const B & over) ->decltype(A(base) << over) { return A(base) << over; } \
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:666:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  666 |   DISAMBIGUATE_OVER(RGBA, A)
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:668:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  668 | DISAMBIGUATE_OVER2(RGBA_um)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:661:15: note: candidate: 'RGBA operator<<(const RGBA&, const RGBA_um_nod&)'
  661 |   inline auto operator<<(const A & base, const B##_nod & over) ->decltype(base << B(over)) { return base << B(over); }
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:666:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  666 |   DISAMBIGUATE_OVER(RGBA, A)
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:668:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  668 | DISAMBIGUATE_OVER2(RGBA_um)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:660:15: note: candidate: 'OverDriveColor operator<<(const SimpleColor&, const RGBA&)'
  660 |   inline auto operator<<(const A##_nod & base, const B & over) ->decltype(A(base) << over) { return A(base) << over; } \
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:664:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  664 |   DISAMBIGUATE_OVER(OverDriveColor, A)          \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:669:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  669 | DISAMBIGUATE_OVER2(RGBA)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:661:15: note: candidate: 'OverDriveColor operator<<(const OverDriveColor&, const RGBA_nod&)'
  661 |   inline auto operator<<(const A & base, const B##_nod & over) ->decltype(base << B(over)) { return base << B(over); }
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:664:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  664 |   DISAMBIGUATE_OVER(OverDriveColor, A)          \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:669:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  669 | DISAMBIGUATE_OVER2(RGBA)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:660:15: note: candidate: 'RGBA operator<<(const RGBA_um_nod&, const RGBA&)'
  660 |   inline auto operator<<(const A##_nod & base, const B & over) ->decltype(A(base) << over) { return A(base) << over; } \
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:665:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  665 |   DISAMBIGUATE_OVER(RGBA_um, A)                 \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:669:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  669 | DISAMBIGUATE_OVER2(RGBA)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:661:15: note: candidate: 'RGBA operator<<(const RGBA_um&, const RGBA_nod&)'
  661 |   inline auto operator<<(const A & base, const B##_nod & over) ->decltype(base << B(over)) { return base << B(over); }
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:665:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  665 |   DISAMBIGUATE_OVER(RGBA_um, A)                 \
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:669:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  669 | DISAMBIGUATE_OVER2(RGBA)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:660:15: note: candidate: 'RGBA operator<<(const RGBA_nod&, const RGBA&)'
  660 |   inline auto operator<<(const A##_nod & base, const B & over) ->decltype(A(base) << over) { return A(base) << over; } \
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:666:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  666 |   DISAMBIGUATE_OVER(RGBA, A)
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:669:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  669 | DISAMBIGUATE_OVER2(RGBA)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:661:15: note: candidate: 'RGBA operator<<(const RGBA&, const RGBA_nod&)'
  661 |   inline auto operator<<(const A & base, const B##_nod & over) ->decltype(base << B(over)) { return base << B(over); }
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:666:3: note: in expansion of macro 'DISAMBIGUATE_OVER'
  666 |   DISAMBIGUATE_OVER(RGBA, A)
      |   ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/common/color.h:669:1: note: in expansion of macro 'DISAMBIGUATE_OVER2'
  669 | DISAMBIGUATE_OVER2(RGBA)
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h: In instantiation of 'class Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > > >':
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:48:9:   recursively required from 'class Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:48:9:   required from 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:71:43:   required from 'class Style<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> > >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:102:10:   required from 'StyleFactory* StylePtr() [with STYLE = Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >]'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/config/SteampunkCaneInProgress.h:161:128:   required from here
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:41:44: error: 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >' has no member named 'getColor'
   41 |   auto getColor(int led) -> decltype(base_.getColor(led) << layer_.getColor(led)) {
      |                                      ~~~~~~^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h: In instantiation of 'class Layers<Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >':
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:48:9:   recursively required from 'class Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:48:9:   required from 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:71:43:   required from 'class Style<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> > >'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:102:10:   required from 'StyleFactory* StylePtr() [with STYLE = Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >]'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/config/SteampunkCaneInProgress.h:161:128:   required from here
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/layers.h:41:44: error: 'class Layers<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> > >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > > >' has no member named 'getColor'
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/fire.h:4,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/ProffieOS.ino:470:
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h: In instantiation of 'class Style<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> > >':
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:102:10:   required from 'StyleFactory* StylePtr() [with STYLE = Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >]'
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/config/SteampunkCaneInProgress.h:161:128:   required from here
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:71:47: error: 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >' has no member named 'getColor'
   71 | class Style : public StyleHelper<decltype(T().getColor(0))> {
      |                                           ~~~~^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:77:49: error: 'class Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >' has no member named 'getColor'
   77 |   virtual auto getColor2(int i) -> decltype(T().getColor(0)) override {
      |                                             ~~~~^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:73:8: error: 'bool Style<T>::IsHandled(HandledFeature) [with T = Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >]' marked 'override', but does not override
   73 |   bool IsHandled(HandledFeature effect) override {
      |        ^~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/style_ptr.h:81:8: error: 'void Style<T>::run(BladeBase*) [with T = Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> >]' marked 'override', but does not override
   81 |   void run(BladeBase* blade) override {
      |        ^~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/blades/blade_base.h:20,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/ProffieOS.ino:443:
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/blade_style.h: In instantiation of 'BladeStyle* StyleFactoryImpl<STYLE>::make() [with STYLE = Style<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> > >]':
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/blade_style.h:44:15:   required from here
/Users/catherinebogin/Documents/Sabers/ProffieOS7.14-Early7.15/ProffieOS/styles/blade_style.h:46:22: error: cannot convert 'Style<Layers<Rgb<0, 0, 0>, Layers<Rgb16<7294, 17, 18076>, InOutTrL<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > >, Rgb<0, 0, 0>, true> >, Layers<AlphaL<Rgb<0, 0, 0>, SingleValueAdapter<IntSVF<0> > >, TransitionLoopL<TrDoEffectX<TrDelayX<SingleValueAdapter<IntSVF<500> > >, EffectType::EFFECT_USER1, SingleValueAdapter<IntSVF<-1> >, SingleValueAdapter<IntSVF<-1> > > > >, MultiTransitionEffectL<TrConcat3<TrFadeX<SingleValueAdapter<IntSVF<3000> > >, AlphaL<Rgb<255, 255, 0>, Bump<SingleValueAdapter<EffectPositionSVF<EffectType::EFFECT_NONE> >, SingleValueAdapter<IntSVF<1000> > > >, TrFadeX<SingleValueAdapter<IntSVF<3000> > > >, EffectType::EFFECT_USER1, 24> > >*' to 'BladeStyle*' in return
   46 |     return new STYLE();
      |                      ^

exit status 1

Compilation error: ambiguous overload for 'operator<<' (operand types are 'SimpleColor' and 'SimpleColor')

Any advice as to what I missed?

You have opaque layers in your layer stack, like InOutTr. Only the first/bottom layer is supposed to be opaque. You probably want InOutTrL instead.

1 Like

Remove the Black layer since it’s not doing anything, and then only the base layer is opaque.
Alternately, leave Black and replace the InOutTr with an L version instead, as profezzorn said above.

1 Like

I tried both @NoSloppy / @profezzorn solutions and they compiled. Thanks!