Setting up a blaster using blaster_BC_buttons.h

The blaster_BC_buttons.h looks great but I have a few questions regarding audio file structure, blade styles and the config in general. I will be using the proffieOS 8.4 beta.

Audio file structure:

According to the comments in the prop file itself, you can use alt fonts for the three firing modes.
Does that mean that stun.wav, bgnauto.wav, auto.wav, and endauto.wav are obsolete?
And do I have to place mdstun.wav, mdkill.wav, and mdauto.wav in each alt folder?

Blade Styles for different modes:

In “…\ProffieOS\config\blaster_v3_config.h” I found an example for blaster blade styles. The styles for the firing modes are concatenated, but it is hard for me to tell where one style ends and the next begins (not a coder, sry. I’m learning :slight_smile: ). Also, I can only see EFFECT_FIRE and EFFECT_STUN, but nothing for auto.

Would this blade style be correct?

Preset presets[] = {
  // Default basic blast color with red 
  { "BladeRunner;common", "tracks/track.wav",

    StylePtr<Layers<Black,BlastFadeoutL<Red,300,EFFECT_FIRE>,BlastFadeoutL<BLUE,300,EFFECT_STUN>>>(), 

    StylePtr<Layers<Red,InOutTrL<TrFade<300>,TrFade<300>>,BlastFadeoutL<Coral>,SimpleClashL<Coral>>>(),

    StylePtr<Layers<Rgb<255,255,255>,InOutTrL<TrFade<300>,TrFade<300>>>(),

    "BladeRunner"

}

And regarding the config:

In the template it reads include “…/props/blaster.h”. Shouldn’t it be “blaster_BC_buttons.h”?

Here’s my config so far, in case that helps:

#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
#define VOLUME 1500
const unsigned int maxLedsPerStrip = 5;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define ENABLE_BLASTER_AUTO
#define BLASTER_SHOTS_UNTIL_EMPTY 5
#define BLASTER_JAM_PERCENTAGE 3
#endif



#ifdef CONFIG_PROP
#include "../props/blaster.h"
#include "blaster.h"
#include "../sound/sound_library.h"
#include "../modes/settings_menues.h"

#ifndef PROPS_BLASTER_BC_BUTTONS_H
#define PROPS_BLASTER_BC_BUTTONS_H

#ifndef BLASTER_DEFAULT_MODE
#define BLASTER_DEFAULT_MODE MODE_KILL
#endif

#ifdef PROP_TYPE
#undef PROP_TYPE
#endif

#define PROP_TYPE BlasterBCButtons

#ifndef BUTTON_HELD_LONG_TIMEOUT
#define BUTTON_HELD_LONG_TIMEOUT 1200
#endif

#ifndef PROPS_DUAL_PROP_H
EFFECT(battery);    // for EFFECT_BATTERY_LEVEL
#endif

#endif



#ifdef CONFIG_PRESETS
Preset presets[] = {
  // Default basic blast color with red 
  { "BladeRunner;common", "tracks/track.wav",

    StylePtr<Layers<Black,BlastFadeoutL<Red,300,EFFECT_FIRE>,BlastFadeoutL<BLUE,300,EFFECT_STUN>>>(), 

    StylePtr<Layers<Red,InOutTrL<TrFade<300>,TrFade<300>>,BlastFadeoutL<Coral>,SimpleClashL<Coral>>>(),

    StylePtr<Layers<Rgb<255,255,255>,InOutTrL<TrFade<300>,TrFade<300>>>(),

    "BladeRunner"

}

};

BladeConfig blades[] = {
 { 0, WS281XBladePtr<2, bladePin, Color8::GRB, PowerPINS<bladePowerPin2> >(),
    WS281XBladePtr<5, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin4> >(),
    SimpleBladePtr<CH2LED, NoLED, NoLED, NoLED, bladePowerPin1, -1, -1, -1>(),
    CONFIGARRAY(presets) },
};

#endif

#ifdef CONFIG_BUTTONS
Button FireButton(BUTTON_FIRE, powerButtonPin, "fire");
Button ModeButton(BUTTON_MODE_SELECT, auxPin, "modeselect");
#endif

delete all of this and replace with:

#ifdef CONFIG_PROP
#include "../props/blaster_BC_buttons.h"
#endif

I don’t think you need to worry about an “EFFECT_AUTO” in your blade style, auto is just fire on repeat.

They’re not obsolete and they all stay in the root of your font folder, you only put clipin, clipout & reload in your alt folders (you need 3 clipin, 3 clipout & 3 reload, one in each alt folder) Alt000 for kill mode, Alt001 for stun mode & Alt002 for auto mode.

1 Like

Thanks, Olivier. Just to be sure, isn’t alt000 stun and alt001 kill?

Sounds for the modes should go in the following alt folders:
- STUN mode - alt000
- KILL mode - alt001
- AUTO mode - alt002

Here’s an example font you can use / mimic.
https://www.dropbox.com/scl/fo/blpnirl6cl85k81n38z48/AK1qJHBOp4z2FqiS7F6cSHU?rlkey=lcf1g9zdk5ykx6puojq3b869j&st=xg5js7fr&dl=0

1 Like

Super helpful. Many thanks!

Good catch. I had it wrong on my setup :roll_eyes:. Sorry about that. :sweat_smile:

Thanks Bryan

no
but it is possible to use chhum or altchng instead in some cases.

no
But you can if you want to.

Please not that this is very old. The “v3” here is “teensysaber v3”, not “proffieboard v3”.
There is exactly one style per line.
The styles in this file are old, I recommend putting them in the style editor and press “layerize” to get something that is easier to read.

These styles were probably made before AUTO existed.
AUTO is a lockup, so it will look a little different from EFFECT_FIRE and EFFECT_STUN.

This is a preset, which seems to contain three styles. Does your blaster have three “blades”?

Depends on which one you want, but if you want the “blaster_BC_buttons.h” prop, then use that.

You probably want “proffieboard_v3_config.h”, assuming you have a v3 proffieboard.

In most cases (including yours) the CONFIG_PROP section only needs one line, for you, that is probably this:

#ifdef CONFIG_PROP
#include "../props/blaster_BC_buttons.h"
#endif

The styles you have in your presets will work, but you probably want to find better ones.

Many thanks for the detailed answer.

Yes, I have updated it.

Yes. The main blade in the barrel has two LEDs, The secondary in the mag has five, and there is a third one consisting of two green LEDs.

Will EFFECT_FIRE be used if AUTO is not defined? In your stlye editor I found effects for fire and stun, but there is also BEGIN/END_AUTO_BLAST. Would I use that or lockup? Could you post as example of a correct style for all three modes?

I’m afraid I don’t actually have a blaster.
Searching for LOCKUP_AUTO on this forum might be helpful though.

OK, I did. Still a bit confused. SaberBase::LOCKUP_AUTOFIRE seems to be used. But the style editor does not know that effect. :thinking:

This is what I got now:

Preset presets[] = {
  // Default red with blast and clash
  { "BladeRunner;common", "tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          MultiTransitionEffectL<TrConcat<TrWipe<100>,HumpFlickerL<Orange,50>,TrConcat<TrFade<600>,Red,TrFade<600>>>,EFFECT_FIRE>,
          MultiTransitionEffectL<TrConcat<TrWipe<100>,HumpFlickerL<Cyan,50>,TrConcat<TrFade<600>,Blue,TrFade<600>>>,EFFECT_STUN>,
          MultiTransitionEffectL<TrConcat<TrWipe<100>,HumpFlickerL<DarkOrange,50>,TrConcat<TrFade<600>,Red,TrFade<600>>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(), 

  //Mag
    StylePtr<
       Layers<
          Red,
          InOutTrL<TrFade<300>,TrFade<300>>,
          BlastFadeoutL<Coral,200,EFFECT_FIRE>,
          BlastFadeoutL<DeepSkyBlue,200,EFFECT_STUN>,
          BlastFadeoutL<Coral,200,SaberBase::LOCKUP_AUTOFIRE>,
          SimpleClashL<Coral>>
    >(),

  //Green LEDs
    StylePtr<
	Layers<
  	  Rgb<255,255,255>,
	  InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

    "BladeRunner"

}

Does that look correct?

And is it possible to switch the color of the base layer depending on the mode? The blast fade outs are called by the effects, but it would be cool to change off colors depending on the mode, if that is possible.

1 Like

I’ve created a task for myself to fix that.
In the meantime you’ll need to use a different lockup when testing it in the style editor, like LOCKUP_MELT or something, then switch that to LOCKUP_AUTOFIRE if/when you put it in the config file.

2 Likes

Ok, almost there. I realized I had not at all understood how lockups work. Now I managed to fix all compile errors, except one. It is probably basic and very systematic, because it seems to be in every blade style. I’ve searched the forum and found some seemingly related threats, but still cannot make out the error in my config.

Here are the error logs and the full config:

In file included from D:\BRBlaster\ProffieOS\ProffieOS.ino:673:
sketch\config/bladerunner_config_V2.h:48:8: error: expected primary-expression before ')' token
   48 |     >>(),
      |        ^
sketch\config/bladerunner_config_V2.h:83:8: error: expected primary-expression before ')' token
   83 |     >>(),
      |        ^
sketch\config/bladerunner_config_V2.h:120:7: error: expected primary-expression before ')' token
  120 |     >(),
      |       ^
sketch\config/bladerunner_config_V2.h:155:7: error: expected primary-expression before ')' token
  155 |     >(),
      |       ^
sketch\config/bladerunner_config_V2.h:190:7: error: expected primary-expression before ')' token
  190 |     >(),
      |       ^
sketch\config/bladerunner_config_V2.h:228:7: error: expected primary-expression before ')' token
  228 |     >(),
      |       ^
sketch\config/bladerunner_config_V2.h:265:7: error: expected primary-expression before ')' token
  265 |     >(),
      |       ^
sketch\config/bladerunner_config_V2.h:300:7: error: expected primary-expression before ')' token
  300 |     >(),
      |       ^
sketch\config/bladerunner_config_V2.h:337:7: error: expected primary-expression before ')' token
  337 |     >(),
      |       ^
exit status 1
Error compiling for board Proffieboard V3.
#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
#define VOLUME 1500
const unsigned int maxLedsPerStrip = 5;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define ENABLE_BLASTER_AUTO
#define BLASTER_SHOTS_UNTIL_EMPTY 5
#define BLASTER_JAM_PERCENTAGE 3
#endif


#ifdef CONFIG_PROP
#include "../props/blaster_BC_buttons.h"
#endif


#ifdef CONFIG_PRESETS
Preset presets[] = {
 
  { "BladeRunner;common", "BladeRunner/tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Orange,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Orange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(), 

  //Mag - Constant red
    StylePtr<
      Layers<
          Red,
          InOutTrL<TrFade<300>,TrFade<300>>,
          BlastFadeoutL<Coral,200,EFFECT_FIRE>,
          BlastFadeoutL<DeepSkyBlue,200,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Coral,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          SimpleClashL<Cyan>
    >>(),

  //Green LEDs
    StylePtr<
       Layers<
          Rgb<255,255,255>,
          InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

    "BladeRunner"

},

  { "BladeRunnerRain;common", "BladeRunnerRain/tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Orange,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<DarkOrange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(), 

  //Mag - Hump Flicker Red
    StylePtr<
       Layers<
          HumpFlickerL<Red,50>,
          InOutTrL<TrFade<300>,TrFade<300>>,
          BlastFadeoutL<OrangeRed,200,EFFECT_FIRE>,
          BlastFadeoutL<Cyan,200,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<DarkOrange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          SimpleClashL<Cyan>
    >>(),

  //Green LEDs
    StylePtr<
        Layers<
          Black,
          Layers<
             HumpFlickerL<Rgb<255,255,255>,100>,
             InOutTrL<TrFade<300>,TrFade<300>>>>
    >(),

    "BladeRunnerRain"

},

  { "DL44;common", "DL44/tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Orange,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<DarkOrange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(), 

  //Mag - Pixelate   
    StylePtr<
       Layers<
          PixelateX<StaticFire<DodgerBlue,Cyan>,Int<10>>,
          ResponsiveBlastFadeL<Coral,Int<62000>,Int<400>,Int<15000>,Int<8000>,EFFECT_FIRE>,
          ResponsiveBlastFadeL<Cyan,Int<62000>,Int<400>,Int<15000>,Int<8000>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Coral,50>,TrFade<50>,LightSalmon,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          ResponsiveClashL<Orange,TrInstant,TrFade<200>,Int<15000>,Int<6000>,Int<60000>>,
          InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

  //Green LEDs
    StylePtr<
       Layers<
          Rgb<255,255,255>,
          InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

    "DL44"

},

  { "DLT19;common", "DLT19/tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<OrangeRed,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Aquamarine,50>,TrFade<200>,Blinking<Black,SpringGreen,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<OrangeRed,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
	>(),

  //Mag - Wave green
    StylePtr<
       Layers<
          TransitionLoop<Black,TrConcat<TrWipe<1000>,RgbArg<BASE_COLOR_ARG,Green>,TrWipe<1000>>>,
          BlastL<HumpFlickerL<SpringGreen,50>,200,10,400,EFFECT_FIRE>,
          BlastL<HumpFlickerL<Aquamarine,50>,200,10,400,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<SpringGreen,50>,TrFade<50>,Green,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          ResponsiveClashL<Aquamarine,TrInstant,TrFade<200>,Int<18000>,Int<12000>,Int<62000>>,
          InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

  //Green LEDs
    StylePtr<
       Layers<
          Rgb<255,255,255>,
          InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

    "DLT19"

},

  { "DLT19X;common", "DLT19X/tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Rgb16<21301,0,65535>,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<HotPink,50>,TrFade<200>,Blinking<Black,Rgb16<21301,0,65535>,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Cyan,50>,TrFade<50>,Rgb16<21301,0,65535>,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
	>(),

  //Mag - Brown Noise magenta
    StylePtr<
       Layers<
          BrownNoiseFlicker<Blue,Red,50>,
          BlastL<Cyan,200,10,400,EFFECT_FIRE>,
          BlastL<HotPink,200,10,400,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Cyan,50>,TrFade<50>,HotPink,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          ResponsiveClashL<DarkOrange,TrInstant,TrFade<200>,Int<15000>,Int<12000>,Int<65000>>,
          InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

  //Green LEDs
    StylePtr<
        Layers<
          Black,
          Layers<
             HumpFlickerL<Rgb<255,255,255>,100>,
             InOutTrL<TrFade<300>,TrFade<300>>>>
    >(),

    "DLT19X"

},


  { "E11;common", "E11/tracks/track.wav",

  //Muzzle
    StylePtr<
      Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<OrangeRed,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<DeepSkyBlue,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<OrangeRed,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(),  

  //Mag - Pulsing red
    StylePtr<
       Layers<
          PulsingL<Red,Int<4000>>,
          InOutHelperL<InOutFuncX<Int<300>,Int<800>>>,
          BlastFadeoutL<DarkOrange,200,EFFECT_FIRE>,
          BlastFadeoutL<DeepSkyBlue,200,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<DarkOrange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          SimpleClashL<OrangeRed>>
    >(),

  //Green LEDs - Pulsing
    StylePtr<
        Layers<
          Black,
          Layers<
          PulsingL<Rgb<255,255,255>,Int<6000>>,
          InOutTrL<TrFade<300>,TrFade<300>>>>
    >(),

    "E11"

},

  { "EC17;common", "EC17/tracks/track.wav",

  //Muzzle
    StylePtr<
        Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<DodgerBlue,50>,TrFade<200>,Blue,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<SpringGreen,50>,TrFade<200>,Blinking<Black,Green,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<DodgerBlue,50>,TrFade<50>,Blue,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(),    

  //Mag - Blinking blue
    StylePtr<
        Layers<
          BlinkingL<DodgerBlue,Int<2000>,Int<400>>,
          InOutTrL<TrFade<300>,TrFade<300>>,
          ResponsiveBlastWaveL<Cyan,Int<400>,Int<100>,Int<400>,Int<16000>,Int<16000>,EFFECT_FIRE>,
          ResponsiveBlastWaveL<DarkOrange,Int<400>,Int<100>,Int<400>,Int<16000>,Int<16000>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Cyan,50>,TrFade<50>,Blue,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          SimpleClashL<Orange>>
    >(),

  //Green LEDs
    StylePtr<
	Layers<
  	  Rgb<255,255,255>,
	  InOutTrL<TrFade<300>,TrFade<300>>>
    >(),

    "EC17"

},

  { "Samaritan;common", "Samaritan/tracks/track.wav",

  //Muzzle
    StylePtr<
        Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<DeepPink,50>,TrFade<200>,Rgb16<12482,0,65535>,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Blinking<Black,DodgerBlue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<DeepPink,50>,TrFade<50>,Rgb16<12482,0,65535>,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(),    

  //Mag - Audio flicker Magenta
    StylePtr<
        Layers<
          AudioFlickerL<Magenta>,
          InOutTrL<TrFade<300>,TrFade<300>>,
          ResponsiveBlastWaveL<DarkOrange,Int<400>,Int<50>,Int<400>,Int<16000>,Int<16000>,EFFECT_FIRE>,
          ResponsiveBlastWaveL<Cyan,Int<400>,Int<50>,Int<400>,Int<16000>,Int<16000>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Orange,50>,TrFade<50>,OrangeRed,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          SimpleClashL<HotPink>>
    >(),

  //Green LEDs
    StylePtr<
        Layers<
          Black,
          Layers<
             HumpFlickerL<Rgb<255,255,255>,100>,
             InOutTrL<TrFade<300>,TrFade<300>>>>
    >(),

    "Samaritan"

},

  { "SE44;common", "SE44/tracks/track.wav",

  //Muzzle
    StylePtr<
        Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Orange,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Aqua,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Orange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(),  

    //Mag - Hump flicker orange
    StylePtr<
       Layers<
          HumpFlickerL<Orange,50>,
          InOutTrL<TrFade<300>,TrFade<300>>,
          BlastFadeoutL<Cyan,200,EFFECT_FIRE>,
          BlastFadeoutL<Cyan,200,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Cyan,50>,TrFade<50>,DeepSkyBlue,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>,
          SimpleClashL<Cyan>>
    >(),

  //Green LEDs
    StylePtr<
        Layers<
          Black,
          Layers<
             HumpFlickerL<Rgb<255,255,255>,100>,
             InOutTrL<TrFade<300>,TrFade<300>>>>
    >(),

    "SE44"

},

};

BladeConfig blades[] = {
 { 0, WS281XBladePtr<2, bladePin, Color8::GRB, PowerPINS<bladePowerPin2> >(),
    WS281XBladePtr<5, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin4> >(),
    SimpleBladePtr<CH2LED, NoLED, NoLED, NoLED, bladePowerPin1, -1, -1, -1>(),
    CONFIGARRAY(presets) },
};

#endif

#ifdef CONFIG_BUTTONS
Button FireButton(BUTTON_FIRE, powerButtonPin, "fire");
Button ModeButton(BUTTON_MODE_SELECT, auxPin, "modeselect");
#endif

Oook. Found it. There was an additional closing bracket at the end of every lockup for the second blade.

But now I get another error:

sketch\styles/style_ptr.h: In instantiation of 'OverDriveColor StyleHelper<RetType>::getColor(int) [with RetType = RGBA]':
sketch\styles/style_ptr.h:35:18:   required from here
   35 |   OverDriveColor getColor(int i) override { return getColor2(i); }
      |                  ^~~~~~~~
sketch\styles/style_ptr.h:35:61: error: could not convert '((StyleHelper<RGBA>*)this)->StyleHelper<RGBA>::getColor2(i)' from 'RGBA' to 'OverDriveColor'
   35 |   OverDriveColor getColor(int i) override { return getColor2(i); }
      |                                                    ~~~~~~~~~^~~
      |                                                             |
      |                                                             RGBA

Line 35 is:

TransitionLoopL<TrConcat<TrInstant,HumpFlickerL<Orange,50>,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>

Is it because of the Hump Flicker?

line 35 in your error is not from your config, but an error in your config is triggering an error at line 35 of styles/style_ptr.h

is that the full error ? maybe you removed one extra closing bracket. I would go back to your previous config and only fix one closing bracket at a time (the first error in the list), compile, fix the next bracket, compile again, …

Only one error could compound into many “fake” errors.

I am only getting one error by now … I think.

Here’s the full log:

In file included from sketch\styles/fire.h:4,
                 from D:\BRBlaster\ProffieOS\ProffieOS.ino:483:
sketch\styles/style_ptr.h: In instantiation of 'OverDriveColor StyleHelper<RetType>::getColor(int) [with RetType = RGBA]':
sketch\styles/style_ptr.h:35:18:   required from here
   35 |   OverDriveColor getColor(int i) override { return getColor2(i); }
      |                  ^~~~~~~~
sketch\styles/style_ptr.h:35:61: error: could not convert '((StyleHelper<RGBA>*)this)->StyleHelper<RGBA>::getColor2(i)' from 'RGBA' to 'OverDriveColor'
   35 |   OverDriveColor getColor(int i) override { return getColor2(i); }
      |                                                    ~~~~~~~~~^~~
      |                                                             |
      |                                                             RGBA
exit status 1
Error compiling for board Proffieboard V3.

And the full blade style:

    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Orange,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<Layers<
          TransitionLoopL<TrConcat<TrInstant,Orange,TrFade<50>,Red,TrFade<150>>>>,TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>>
    >(),

An error in your config, like missing a closing bracket, can result in errors in other places, so unless you modified something else from the ProffieOS code, the error is in your config. Arduino is not finding it because somehow “things matches” until they don’t. You probably only had one or two extra closing bracket, and not on all presets.

It is not because I don’t want to search for you, I just can’t read blade styles. You can always post your config and error code to ChatGPT, it’s very bad at coding but finding an extra bracket is something that it will find pretty quickly.

Edit: you could also comment out all the presets after the first error with this:

Preset presets[] = {

{working preset},
{working preset},

{suspect preset},
/*
{suspect preset},
{suspect preset},
....
*/
};

BladeConfig blades[] = {

I’ll try that. I have brackets for that blade style like five times. Maybe the error is somewhere else. Reducing potential sources of errors is a good idea. Thanks, Olivier.

Edit: You were right. Removing every other blade style did it. The error must be somewhere else.

Disable all the presets but one with /* ... */,compile, then enable them one by one until you find the real culprit. It is a slow move, but your safest bet.

This error means that one of your styles is transparent, semi-transparent or conditionally transparent. Since the blade can’t actually become transparent, this is an error.

EDIT:
The style you posted doesn’t seem to be transparent though, are you sure that’s the one it’s complaining about?

It indicated a line for that style, but the error is somewhere else. I’ve isolated this style and it is giving the error:

 { "BladeRunnerRain;common", "BladeRunnerRain/tracks/track.wav",

  //Muzzle
    StylePtr<
       Layers<
          Black,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Orange,50>,TrFade<200>,Red,TrFade<600>>,EFFECT_FIRE>,
          TransitionEffectL<TrConcat<TrDelay<100>,HumpFlickerL<Cyan,50>,TrFade<200>,Blinking<Black,Blue,100,500>,TrFade<600>>,EFFECT_STUN>,
          LockupTrL<
		     Layers<TransitionLoopL<TrConcat<TrInstant,DarkOrange,TrFade<50>,Red,TrFade<150>>>>,
		     TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE
		  >
		>
	>(), 

  //Mag - Hump Flicker Red
    StylePtr<
       Layers<
          HumpFlickerL<Red,50>,
          InOutTrL<TrFade<300>,TrFade<300>>,
          BlastFadeoutL<OrangeRed,200,EFFECT_FIRE>,
          BlastFadeoutL<Cyan,200,EFFECT_STUN>,
          LockupTrL<
		     Layers<
                TransitionLoopL<
		        TrConcat<TrInstant,HumpFlickerL<DarkOrange,50>,TrFade<50>,Red,TrFade<150>>>>,
		        TrInstant,TrConcat<TrInstant,Rgb<50,0,0>,TrFade<400>>,SaberBase::LOCKUP_AUTOFIRE>,
          SimpleClashL<Cyan>
        >
	>(),

  //Green LEDs
    StylePtr<
        Layers<
          Black,
          Layers<
		     HumpFlickerL<Rgb<255,255,255>,100>,
             InOutTrL<TrFade<300>,TrFade<300>>>
	    >
    >(),

    "BladeRunnerRain"
}