Here’s the test config FWIW, used with Github master ProffieOS.
// BC_Ronin_8.x
#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BUTTONS 1
#define NUM_BLADES 1
// ------ Audio Stuff --------
#define VOLUME 2000
#define BOOT_VOLUME 200
#define FILTER_CUTOFF_FREQUENCY 100
//#define FILTER_ORDER 8 // default is 8
// ------ Blade Stuff ------
const unsigned int maxLedsPerStrip = 144;
#define EXTRA_COLOR_BUFFER_SPACE 30
// BridgedPullupBladeID is the default Proffieboard V3 BLADE_ID_CLASS, so it doesn't need to defined explicitly with a V3.
#define BLADE_ID_CLASS BridgedPullupBladeID<bladeIdentifyPin, 9> // PBv2.2 TX pad for example
// Use with Blade ID. Specify the LED pad(s) that the main blade uses.
#define ENABLE_POWER_FOR_ID PowerPINS<bladePowerPin2, bladePowerPin3>
// Required when blades on different data pads use common LED power pads.
// and/or when BLADE_ID_SCAN_MILLIS is used with Blade ID.
#define SHARED_POWER_PINS
// Choose how often to check for new blade (milliseconds).
// Larger values will be a longer delay before a blade is recognized.
#define BLADE_ID_SCAN_MILLIS 1000
// How many Blade ID scans to average (default is 10, works well)
#define BLADE_ID_TIMES 15
#define NO_BLADE_ID_RANGE 15000,99999999
// To be able to edit blade length on the saber via a menu, use the following define:
#define DYNAMIC_BLADE_LENGTH
// ------ SD Card Stuff -------
#define MOUNT_SD_SETTING
//#define SAVE_STATE
// #define SAVE_VOLUME
#define SAVE_PRESET
#define SAVE_COLOR_CHANGE
// ------ System Stuff --------
//#define ENABLE_DEBUG
// PVLOG_ERROR 100 = errors
// PVLOG_STATUS 200 = things you should probably know, like blade ID
// PVLOG_NORMAL 300 = normal information about what is happening (default level)
// PVLOG_DEBUG 400 = information helpful for debugging
// PVLOG_VERBOSE 500 = repeated, spammy information you don't normally want
#define PROFFIEOS_LOG_LEVEL 300
#define DISABLE_BASIC_PARSER_STYLES
#define IDLE_OFF_TIME 10000
#define MOTION_TIMEOUT 60 * 5 * 1000
// Give serial monitor a chance to catchup at boot,
// and/or for waiting until speaker pod is connected on certain chassis etc...
#define CONFIG_STARTUP_DELAY 1000
// ------- Motion and Gesture stuff -------
#define CLASH_THRESHOLD_G 3.5
#define ENABLE_SPINS
// -------- BC prop stuff --------
#define BC_SWING_ON
#define BC_SWING_ON_SPEED 400 // Default 250
#define BC_THRUST_ON
#define BC_TWIST_ON
#define BC_TWIST_OFF
#define BC_FORCE_PUSH
#define BC_FORCE_PUSH_LENGTH 5
#define BC_ENABLE_AUTO_SWING_BLAST // BC Multiblast continues as long as swinging within 1 second.
#define BC_LOCKUP_DELAY 200
// -------- BC Prop Other Stuff --------
// As of OS8, the default for the BC_buttons prop file are volume level and blade length edit menus.
// A System Menu is available to edit presets, colors settings, and more. To use this menu system instead, use the following define:
#define MENU_SPEC_TEMPLATE DefaultMenuSpec
#endif
#ifdef CONFIG_PROP
#include "../props/saber_BC_buttons.h"
#endif
#ifdef CONFIG_PRESETS
#include "aliases/TrueWhites/BC_effects_1.h" // For Red, Green, light Blue, ...light colored blades
#include "aliases/TrueWhites/BC_effects_Red.h" // For Red or dark blades
#include "aliases/TrueWhites/BC_effects_White.h" // For White blades
using OnDemandVolumeLevel = TransitionEffectL<TrConcat<TrSmoothFade<200>,AlphaL<Gradient<Blue,Green>,SmoothStep<VolumeLevel,Int<-1>>>,TrDelay<1000>,TrSmoothFade<500>>,EFFECT_VOLUME_LEVEL>;
using OnDemandBatteryLevel = AlphaL<TransitionEffectL<TrConcat<TrSmoothFade<500>,AlphaL<Mix<BatteryLevel,Red,Green>,SmoothStep<Scale<BatteryLevel,Int<0>,Int<35000>>,Int<-1>>>,TrDelay<1000>,TrSmoothFade<1000>>,EFFECT_BATTERY_LEVEL>,Ifon<Int<0>,Int<32768>>>;
Preset noblade [] = {
{ "aa_Kyberphonic/The_Duel/Ronin;ProffieOS_V2_Voicepack_The_Ronin/common;commonBU", "The_Duel/tracks/track2.wav",
StylePtr<Layers<
Yellow,
InOutTrL<TrWipe<300>,TrWipeIn<500>>,
TransitionEffectL<TrConcat<TrInstant,White,TrDelay<25>,AlphaL<White,Bump<Int<0>>>,TrFade<200>,AlphaL<HumpFlicker<White,Black,50>,LinearSectionF<Scale<Trigger<EFFECT_PREON,Int<500>,Int<1000>,Int<1>,Int<200>>,Int<-5000>,Int<37728>>,Int<10000>>>,TrDelay<1000>>,EFFECT_PREON>,
TransitionEffectL<TrConcat<TrDelay<400>,TrJoin<TrConcat<TrWipe<500>,AlphaL<BrownNoiseFlicker<Yellow,Black,500>,SmoothStep<Int<7000>,Int<-12000>>>,TrDelay<4500>>,TrSparkX<HumpFlicker<Yellow,Black,50>,Int<400>,Int<250>,Int<0>>>,TrInstant>,EFFECT_PREON>,
TransitionEffectL<TrConcat<TrDelay<700>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrDelay<150>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrDelay<150>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrDelay<500>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrDelay<150>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrDelay<150>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrDelay<150>,TrSparkX<BrownNoiseFlicker<Yellow,Black,500>,Int<400>,Int<400>,Int<32768>>,TrInstant>,EFFECT_PREON>,
TransitionEffectL<TrConcat<TrDelay<1100>,AlphaL<HumpFlicker<White,Black,200>,LinearSectionF<Int<1638>,Int<3277>>>,TrDelay<550>,AlphaL<HumpFlicker<White,Black,200>,LayerFunctions<LinearSectionF<Int<1638>,Int<3277>>,LinearSectionF<Int<6553>,Int<3277>>>>,TrDelay<550>,AlphaL<HumpFlicker<White,Black,200>,LayerFunctions<LinearSectionF<Int<1638>,Int<3277>>,LinearSectionF<Int<6553>,Int<3277>>,LinearSectionF<Int<11466>,Int<3277>>>>,TrDelay<850>,AlphaL<HumpFlicker<White,Black,200>,LayerFunctions<LinearSectionF<Int<1638>,Int<3277>>,LinearSectionF<Int<6553>,Int<3277>>,LinearSectionF<Int<11466>,Int<3277>>,LinearSectionF<Int<16379>,Int<3277>>>>,TrDelay<550>,AlphaL<HumpFlicker<White,Black,200>,LayerFunctions<LinearSectionF<Int<1638>,Int<3277>>,LinearSectionF<Int<6553>,Int<3277>>,LinearSectionF<Int<11466>,Int<3277>>,LinearSectionF<Int<16379>,Int<3277>>,LinearSectionF<Int<21292>,Int<3277>>>>,TrDelay<550>,AlphaL<HumpFlicker<White,Black,200>,LayerFunctions<LinearSectionF<Int<1638>,Int<3277>>,LinearSectionF<Int<6553>,Int<3277>>,LinearSectionF<Int<11466>,Int<3277>>,LinearSectionF<Int<16379>,Int<3277>>,LinearSectionF<Int<21292>,Int<3277>>,LinearSectionF<Int<26205>,Int<3277>>>>,TrDelay<550>,AlphaL<HumpFlicker<White,Black,200>,LayerFunctions<LinearSectionF<Int<1638>,Int<3277>>,LinearSectionF<Int<6553>,Int<3277>>,LinearSectionF<Int<11466>,Int<3277>>,LinearSectionF<Int<16379>,Int<3277>>,LinearSectionF<Int<21292>,Int<3277>>,LinearSectionF<Int<26205>,Int<3277>>,LinearSectionF<Int<31118>,Int<3277>>>>,TrFade<700>,BrownNoiseFlicker<Yellow,Black,500>,TrInstant>,EFFECT_PREON>,
TransitionEffectL<TrConcat<TrDelay<4900>,TrFade<900>,HumpFlicker<White,Black,50>,TrInstant,Black,TrDelay<125>,White,TrDelay<25>>,EFFECT_PREON>
>>(),
"the\nduel"},
};
Preset light [] = {
{ "aa_JayDalorian/Nexus;ProffieOS_V2_Voicepack_The_Ronin/common;commonBU", "", // Ice Stab and scanning Force
StylePtr<Layers<
StripesX<Int<1500>,Scale<SlowNoise<Int<2500>>,Int<-3000>,Int<-5000>>,RotateColorsX<Variation,Rgb<95,0,210>>,RotateColorsX<Variation,Rgb<30,0,66>>,RotateColorsX<Variation,Rgb<95,0,210>>,RotateColorsX<Variation,Rgb<7,0,16>>,RotateColorsX<Variation,Rgb<95,0,210>>>,
BC_effects_White,
TransitionEffectL<TrConcat<TrFade<400>,RotateColorsX<Variation,Rgb<160,60,255>>,TrDelay<7000>,RotateColorsX<Variation,Rgb<160,60,255>>,TrFade<800>>,EFFECT_FORCE>,
TransitionEffectL<TrConcat<TrInstant,AlphaL<Stripes<10,-1600,Mix<Sin<Int<30>>,White,Black>,Mix<Sin<Int<30>>,White,Black>,Mix<Sin<Int<24>>,Green,White>>,Bump<Scale<Sin<Int<40>>,Int<1000>,Int<34000>>,Int<20000>>>,TrDelay<7000>>,EFFECT_FORCE>,
TransitionEffectL<TrConcat<TrFade<3000>,RotateColorsX<Variation,Rgb<95,0,210>>,TrDelay<5000>,RotateColorsX<Variation,Rgb<95,0,210>>,TrFade<3000>>,EFFECT_STAB>,
TransitionEffectL<TrConcat<TrWipe<3000>,TransitionEffect<Stripes<10000,-1000,Rgb<50,75,165>,Rgb<25,37,82>,Rgb<50,75,165>,Rgb<13,19,41>>,Rgb<100,150,230>,TrFade<3000>,TrDelay<3000>,EFFECT_STAB>,TrDelay<3000>,Rgb<100,150,230>,TrWipe<3000>>,EFFECT_STAB>,
TransitionEffectL<TrConcat<TrWaveX<BrownNoiseFlicker<White,SteelBlue,60>,Int<3000>,Int<400>,Int<3000>,Int<0>>,AlphaL<White,Int<0>>,TrDelay<3000>,AlphaL<White,Int<0>>,TrWaveX<BrownNoiseFlicker<DarkOrange,Yellow,80>,Int<10000>,Int<400>,Int<3000>,Int<0>>>,EFFECT_STAB>,
InOutTrL<TrJoin<TrWipeX<BendTimePowInvX<Int<1500>,Int<135000>>>,TrSparkX<Rgb<100,100,255>,Int<400>,BendTimePowInvX<Int<1500>,Int<110000>>,Int<1600>>>,TrJoin<TrWipeInX<BendTimePowX<WavLen<EFFECT_RETRACTION>,Int<180000>>>,TrSparkX<Rgb<100,100,255>,Int<400>,BendTimePowX<WavLen<EFFECT_RETRACTION>,Int<180000>>,Int<32768>>>>,
TransitionEffectL<TrConcat<TrDelay<300>,AlphaL<RandomPerLEDFlickerL<White>,SmoothStep<Int<6000>,Int<-4000>>>,TrDelayX<WavNum<EFFECT_PREON>>>,EFFECT_PREON>,
TransitionEffectL<TrConcat<TrColorCycle<1000,0>,GhostWhite,TrFade<100>>,EFFECT_PREON>,
// On-Demand
OnDemandVolumeLevel,
OnDemandBatteryLevel
>>(),
"nexus"},
};
Preset dark [] = {
{ "a_BAYLAN_SKOLL/Skoll;ProffieOS_V2_Voicepack_Skoll/common;commonBU", "a_BAYLAN_SKOLL/Skoll/tracks/track1.wav",
StylePtr<ColorChange<TrInstant,Red,Green,Blue,Yellow,White,Black,AudioFlicker<Rgb<200,200,0>,Rgb<20,20,0>>>>(),
"baylan\nskoll"},
};
BladeConfig blades[] = {
{ NO_BLADE,
WS281XBladePtr<8, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
CONFIGARRAY(noblade),
"00_noblade_save"},
{ 64000,
WS281XBladePtr<144, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
CONFIGARRAY(light),
"01_light_save"},
{ 6400,
WS281XBladePtr<144, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
CONFIGARRAY(dark),
"01_dark_save"},
};
#endif
#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
#endif