Corrupt sd card?

Hi there,
I used Fett’s OS7 library to make an alt font with 8 different blades.
Can a slow or corrupt sd give error in font directory on bootup? Ran in serial monitor typed in effects and got a bunch of missing files like hum and other files but they are there and properly numbered. When I ignite the saber sometimes no hum or clash? Other times it works.

Thanks for any help

With altNNN, every alt folder needs EXACTLY the same files AND those files cannot have duplicates in the root of the font. If you’re getting Error in Font Directory then you have a mismatch of file nanes/ numbers somewhere. Double check the effects output against each alt and the root, odds are there’s a mismatch somewhere.

1 Like

Ok thank you Fett

Or in your common folder.

That is supposed to work though.
If an effect is found in the font folder, it shouldn’t matter what files exists for that effect in the common folder. (assuming standard “font;common” font path.)

If it doesn’t work like that, please start a thread about and I will investigate.

I was referring to this problem I had with Alt folders:

I just tested this.
Font search path : “font;common”

font/alt000/hum.wav
font/alt000/chhum.wav
font/alt001/hum.wav
font/alt001/chhum.wav
common/alt000/hum.wav
common/alt000/chhum.wav

No errors.

I assume some of those . are actually /?
(Just verifying that you tested what I think you tested…)

Yes I manually typed the first incorrectly, then copy pasting propagated the period.
I’ve edited in corrections.

But if you have:
font/alt000/hum.wav
font/alt000/chhum.wav
font/alt001/hum.wav
font/alt001/chhum.wav
common/alt000/clipin.wav
common/alt000/clipout.wav
common/alt001/clipin.wav
common/alt001/clipout.wav
common/alt002/clipin.wav
common/alt002/clipout.wav

You will have an error because you are missing one set of
*/alt002/hum.wav
*/alt002/chhum.wav

Good point. The number of alternatives is determined globally, so the number of alternatives in the common directory can have an effect on the files in the font directory. (If the number of alternatives in the common directory is larger than the number of alternatives in the font directory.) Not sure if I think this is a bug or not, but at the very least it something to be aware of.

1 Like

Or in your common folder.

Can someone please go into detail about alt fonts? Does every wave file have to be numbered?
Does it matter what number you start from, 0,1 or nothing like hum.wav?
I get the alt fonts files have to have the same name and be in sequence. For multiple files like clash do you drop the clash name eg. clsh01 to just 01?
What about the folder that contains the Alt fonts?
What do you do there? the same types of files in the Alt folders.
The document I read is a bit short and doesnt go into much detail.
I can’t get rid of error in font dir.

This video (at top of library) covers.

The alt folders go into the root of the font. Each alt folder should contain the exact same files and naming. There are multiple ways you can name the files just make them all the same with same number of files. My advise is set up ‘alt000’ folder from your main font. Then make ‘alt001’ match, then make ‘alt002’ match, etc.

If you have the exact error message from running ‘effects’ in Serial Monitor, post the full message so we can help you decipher.

Awesome Fett Thanks!

Hi Fett, my mistake was not deleting the sound files you want to change from the original files folder, confused me a bit :thinking: ,your alt font video helped. All the Alt fonts were named exactly right. Works perfect now.

Glad to hear, yes any sound that you want to change is moved into the altNNN folders, you can’t have the same sound in the root and an altNNN folder.

Can someone please look at the code for my multiphase blade?
I’ve spent hours and need help :sweat_smile:
I used the library to get code for a jedi survivor type blade with 9 different alt fonts
I also used the library to get the crystal chamber to mimic the main blade when on.
It compiles in Arduino, no error in font directory and the saber works fine.
But something is wrong with the coding it compiles without a closing } bracket at the end.
I’m probably pushing the limits with 9 alt fonts, is it a bug maybe? Too many Alt fonts?

#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 2
#define VOLUME 2250
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 3.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define ENABLE_ALL_EDIT_OPTIONS
#define FETT263_EDIT_MODE_MENU
#define MOTION_TIMEOUT 60 * 10 * 1000 // keeps motion chip active for 10 minutes while blade is Off
#define IDLE_OFF_TIME 60 * 10 * 1000
#define COLOR_CHANGE_DIRECT
//#define DISABLE_DIAGNOSTIC_COMMANDS
#define DISABLE_BASIC_PARSER_STYLES
#define NO_REPEAT_RANDOM
#define FETT263_THRUST_ON // enables Thrust On Ignition
#define FETT263_THRUST_ON_NO_BM
#define FETT263_SWING_ON // enables Swing On Ignition
#define FETT263_SWING_ON_NO_BM
#define FETT263_SWING_ON_SPEED 350
#define FETT263_TWIST_ON // enables Twist On Ignition
#define FETT263_TWIST_ON_NO_BM
#define FETT263_TWIST_OFF // enables Twist Off Retraction
#define FETT263_SAY_COLOR_LIST
#define FETT263_SAY_COLOR_LIST_CC
#define FETT263_SAY_BATTERY_PERCENT
#define FETT263_MOTION_WAKE_POWER_BUTTON
#define FETT263_QUOTE_PLAYER_START_ON
#define SAVE_STATE
#define FETT263_SPECIAL_ABILITIES
#define FETT263_DISABLE_CHANGE_STYLE
#define FETT263_DISABLE_CHANGE_FONT
#define FETT263_DISABLE_COPY_PRESET
#define FETT263_SAVE_GESTURE_OFF
#endif

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

#ifdef CONFIG_PRESETS
Preset presets[] =

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

/* copyright Fett263 CustomBlade (Primary Blade) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#CustomBlade
OS7.14 v3.23p
Single Style
Multi Phase (Original - Color Change) Transition: Instant, Time: 200

Default: Cal Kestis Survivor Blue [BaseColorArg]
1: Cal Kestis Survivor Cyan [Rgb<0,255,255>]
2: Cal Kestis Survivor Green [Rgb<0,255,0>]
3: Cal Kestis Survivor Magenta [Rgb<255,0,255>]
4: Cal Kestis Survivor Orange [Rgb<255,97,0>]
5: Cal Kestis Survivor Purple [Rgb<115,15,240>]
6: Cal Kestis Survivor Silver [Rgb<100,100,150>]
7: Cal Kestis Survivor Yellow [Rgb<255,255,0>]
8: Cal Kestis Survivor Red [Rgb<255,0,255>]

Multi Phase Control: use Color Change with COLOR_CHANGE_DIRECT define (to enable click-to-change).

--Effects Included--
Ignition Effect: Standard Ignition [Color: IgnitionColorArg]
Retraction Effect: Standard Retraction [Color: RetractionColorArg]
Lockup Effect:
0: mainLockMulti0Shape - Begin: Real Clash - Style: Intensity AudioFlicker - End: Ripple
[Color: LockupColorArg]
Lightning Block Effect:
0: mainLBMulti0Shape - Begin: Responsive Impact - Style: Strobing AudioFlicker - End: Full Blade Absorb
[Color: LBColorArg]
Drag Effect:
0: mainDragMulti0Shape - Begin: Wipe In - Style: Intensity Sparking Drag - End: Wipe Out
[Color: DragColorArg]
Melt Effect:
0: mainMeltMulti0Shape - Begin: Wipe In - Style: Intensity Melt - End: Wipe Out
[Color: StabColorArg]
Stab Effect: Normal Stab [Color: StabColorArg]
Blast Effect (Randomly Selected): Responsive Blast Wave (Random), Blast Ripple Fade, Responsive Blast Fade (Random), Responsive Blast Wave (Large) [Color: BlastColorArg]
Clash Effect: Real Clash V2 [Color: ClashColorArg]
Battery Level: Blade Location (Green to Red)
*/
StylePtr<Layers<
  ColorChange<TrInstant,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<8000>,Int<3000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<-2600>,Int<-3600>>,RgbArg<BASE_COLOR_ARG,Blue>,Mix<Int<12000>,Black,RgbArg<BASE_COLOR_ARG,Blue>>,Pulsing<RgbArg<BASE_COLOR_ARG,Blue>,Mix<Int<8000>,Black,RgbArg<BASE_COLOR_ARG,Blue>>,1400>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<10000>,Int<5000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<-2000>,Int<-3000>>,Cyan,Mix<Int<12000>,Black,Cyan>,Pulsing<Cyan,Mix<Int<8000>,Black,Cyan>,1400>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<4000>,Int<1800>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2800>,Int<-4000>>,Mix<Int<16000>,Black,Green>,Mix<Sin<Int<20>,Int<22000>,Int<32768>>,Black,Green>,Mix<Int<8000>,Black,Green>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<9000>,Int<4000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<-2000>,Int<-3000>>,Magenta,Mix<Int<12000>,Black,Magenta>,Pulsing<Magenta,Mix<Int<8000>,Black,Magenta>,800>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<4000>,Int<1800>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2800>,Int<-4000>>,Mix<Int<16000>,Black,Orange>,Mix<Sin<Int<20>,Int<20000>,Int<32768>>,Black,Orange>,Mix<Int<10000>,Black,Orange>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Sin<Int<20>,Int<10000>,Int<7000>>,Int<3000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2300>,Int<-4000>>,Rgb<115,15,240>,Mix<Int<12000>,Black,Rgb<115,15,240>>,Pulsing<Rgb<115,15,240>,Mix<Int<20000>,Black,Rgb<115,15,240>>,2000>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<4000>,Int<1800>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-3000>,Int<-4500>>,Mix<Int<16000>,Black,Rgb<100,100,150>>,Mix<Sin<Int<20>,Int<22000>,Int<32768>>,Black,Rgb<100,100,150>>,Mix<Int<8000>,Black,Rgb<100,100,150>>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<3600>,Int<1600>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2700>,Int<-4100>>,Mix<Int<16000>,Black,Yellow>,Mix<Sin<Int<20>,Int<22000>,Int<32768>>,Black,Yellow>,Mix<Int<8000>,Black,Yellow>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<2000>>,Int<6000>,Int<2000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<4000>>,Int<-2600>,Int<-3600>>,Red,Mix<Int<12000>,Black,Red>,Pulsing<Red,Mix<Int<8000>,Black,Red>,1000>>>,
SyncAltToVarianceL,
  TransitionEffectL<TrConcat<TrJoin<TrDelayX<WavLen<>>,TrWipeIn<200>>,AlphaL<RgbArg<STAB_COLOR_ARG,DarkOrange>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<2000>>>,TrWipe<200>>,EFFECT_STAB>,
  TransitionEffectL<TrRandom<TrWaveX<RgbArg<BLAST_COLOR_ARG,White>,Scale<EffectPosition<EFFECT_BLAST>,Int<100>,Int<400>>,Int<100>,Scale<EffectPosition<EFFECT_BLAST>,Int<100>,Int<400>>,Scale<BladeAngle<>,Int<28000>,Int<8000>>>,TrConcat<TrInstant,AlphaL<RgbArg<BLAST_COLOR_ARG,White>,Bump<Scale<EffectPosition<EFFECT_BLAST>,Int<3000>,Int<29000>>,Int<6000>>>,TrCenterWipeX<Int<100>,Scale<EffectPosition<EFFECT_BLAST>,Int<3000>,Int<29000>>>,AlphaL<Remap<CenterDistF<Scale<EffectPosition<EFFECT_BLAST>,Int<3000>,Int<29000>>>,Stripes<1600,-2000,RgbArg<BLAST_COLOR_ARG,White>,Mix<Int<2096>,Black,RgbArg<BLAST_COLOR_ARG,White>>>>,Bump<Scale<EffectPosition<EFFECT_BLAST>,Int<3000>,Int<29000>>,Int<32000>>>,TrJoin<TrSmoothFade<50>,TrCenterWipeX<Int<100>,Scale<EffectPosition<EFFECT_BLAST>,Int<3000>,Int<29000>>>>>,TrConcat<TrInstant,AlphaMixL<Bump<Scale<BladeAngle<>,Int<28000>,Int<8000>>,Scale<EffectPosition<EFFECT_BLAST>,Int<9000>,Int<13000>>>,RgbArg<BLAST_COLOR_ARG,White>,Mix<Int<16384>,Black,RgbArg<BLAST_COLOR_ARG,White>>>,TrFade<300>>,TrWaveX<RgbArg<BLAST_COLOR_ARG,White>,Int<200>,Int<100>,Int<400>,Scale<BladeAngle<>,Int<28000>,Int<8000>>>>,EFFECT_BLAST>,
  TransitionEffectL<TrSelect<Scale<ClashImpactF<>,Int<0>,Int<4>>,TrConcat<TrInstant,AlphaL<RgbArg<CLASH_COLOR_ARG,White>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<ClashImpactF<>,Int<8000>,Int<12000>>>>,TrFadeX<Scale<ClashImpactF<>,Int<200>,Int<600>>>>,TrWaveX<RgbArg<CLASH_COLOR_ARG,White>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Int<100>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,TrSparkX<Remap<CenterDistF<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,Stripes<1500,-3000,RgbArg<CLASH_COLOR_ARG,White>,Mix<Int<16384>,Black,RgbArg<CLASH_COLOR_ARG,White>>>>,Int<100>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,TrConcat<TrInstant,RgbArg<CLASH_COLOR_ARG,White>,TrFadeX<Scale<ClashImpactF<>,Int<200>,Int<400>>>>,TrConcat<TrInstant,RgbArg<CLASH_COLOR_ARG,White>,TrFadeX<Scale<ClashImpactF<>,Int<300>,Int<500>>>>>,EFFECT_CLASH>,
  LockupTrL<TransitionEffect<AlphaL<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<22000>>>,AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,White>,Mix<Int<12000>,Black,RgbArg<LOCKUP_COLOR_ARG,White>>>,BrownNoiseFlicker<RgbArg<LOCKUP_COLOR_ARG,White>,Mix<Int<12000>,Black,RgbArg<LOCKUP_COLOR_ARG,White>>,300>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<22000>>>>,AlphaL<AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,White>,Mix<Int<20000>,Black,RgbArg<LOCKUP_COLOR_ARG,White>>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,TrExtend<5000,TrInstant>,TrFade<5000>,EFFECT_LOCKUP_BEGIN>,TrConcat<TrJoin<TrDelay<50>,TrInstant>,Mix<IsLessThan<ClashImpactF<>,Int<26000>>,RgbArg<LOCKUP_COLOR_ARG,White>,AlphaL<RgbArg<LOCKUP_COLOR_ARG,White>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<ClashImpactF<>,Int<20000>,Int<60000>>>>>,TrFade<300>>,TrSparkX<Remap<CenterDistF<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,Stripes<1200,-3600,Mix<Int<6425>,Black,RgbArg<LOCKUP_COLOR_ARG,White>>,RgbArg<LOCKUP_COLOR_ARG,White>,Mix<Int<12850>,Black,RgbArg<LOCKUP_COLOR_ARG,White>>>>,Int<30>,Scale<Sum<ClashImpactF<>,SwingSpeed<600>>,Int<50>,Int<200>>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,SaberBase::LOCKUP_NORMAL>,
  ResponsiveLightningBlockL<Strobe<RgbArg<LB_COLOR_ARG,White>,AudioFlicker<RgbArg<LB_COLOR_ARG,White>,Blue>,50,1>,TrConcat<TrExtend<200,TrInstant>,AlphaL<RgbArg<LB_COLOR_ARG,White>,Bump<Scale<BladeAngle<>,Int<10000>,Int<21000>>,Int<10000>>>,TrFade<200>>,TrConcat<TrInstant,RgbArg<LB_COLOR_ARG,White>,TrFade<400>>>,
  LockupTrL<AlphaL<TransitionEffect<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,White>>,BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,White>,Int<300>>,TrExtend<4000,TrInstant>,TrFade<4000>,EFFECT_DRAG_BEGIN>,SmoothStep<Scale<TwistAngle<>,IntArg<DRAG_SIZE_ARG,28000>,Int<30000>>,Int<3000>>>,TrWipeIn<200>,TrWipe<200>,SaberBase::LOCKUP_DRAG>,
  LockupTrL<AlphaL<Stripes<2000,4000,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,DarkOrange>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,DarkOrange>>>,Mix<Sin<Int<50>>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,DarkOrange>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,DarkOrange>>>>,Mix<Int<4096>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,DarkOrange>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,DarkOrange>>>>>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,28000>,Int<30000>>,Int<3000>>>,TrConcat<TrExtend<4000,TrWipeIn<200>>,AlphaL<HumpFlicker<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,DarkOrange>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,DarkOrange>>>,RotateColorsX<Int<3000>,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,DarkOrange>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,DarkOrange>>>>,100>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,28000>,Int<30000>>,Int<3000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,
  InOutTrL<TrWipeX<BendTimePowInvX<IgnitionTime<-88>,Mult<IntArg<IGNITION_OPTION2_ARG,10992>,Int<98304>>>>,TrWipeInX<BendTimePowX<RetractionTime<>,Mult<IntArg<RETRACTION_OPTION2_ARG,10992>,Int<98304>>>>>,
  TransitionEffectL<TrConcat<TrJoin<TrDelay<2000>,TrInstant>,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<BatteryLevel,Int<10000>>>,TrFade<300>>,EFFECT_BATTERY_LEVEL>>>(),

/* copyright Fett263 CustomBlade (Crystal Chamber) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#CustomBlade
OS7.14 v3.23p
Single Style
Multi Phase (Original - Color Change) Transition: Instant, Time: 200

Default: Cal Kestis Survivor Blue [BaseColorArg]
1: Cal Kestis Survivor Cyan [Rgb<0,255,255>]
2: Cal Kestis Survivor Green [Rgb<0,255,0>]
3: Cal Kestis Survivor Magenta [Rgb<255,0,255>]
4: Cal Kestis Survivor Orange [Rgb<255,97,0>]
5: Cal Kestis Survivor Purple [Rgb<115,15,240>]
6: Cal Kestis Survivor Silver [Rgb<100,100,150>]
7: Cal Kestis Survivor Yellow [Rgb<255,255,0>]
8: Cal Kestis Survivor Red [Rgb<255,0,255>]

Off Behavior: Solid Color [Color: BaseColorArg]

Multi Phase Control: use Color Change with COLOR_CHANGE_DIRECT define (to enable click-to-change).

--Effects Included--
Ignition Effect: Instant [Color: IgnitionColorArg]
Retraction Effect: Instant [Color: RetractionColorArg]
Lockup Effect: NoneLightning Block Effect: NoneDrag Effect: NoneMelt Effect: None */

StylePtr<Layers<ColorChange<TrInstant,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<8000>,Int<3000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<-2600>,Int<-3600>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<12000>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,Pulsing<RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<8000>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,1400>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<10000>,Int<5000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<-2000>,Int<-3000>>,Rgb<0,255,255>,Mix<Int<12000>,Black,Rgb<0,255,255>>,Pulsing<Rgb<0,255,255>,Mix<Int<8000>,Black,Rgb<0,255,255>>,1400>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<4000>,Int<1800>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2800>,Int<-4000>>,Mix<Int<16000>,Black,Rgb<0,255,0>>,Mix<Sin<Int<20>,Int<22000>,Int<32768>>,Black,Rgb<0,255,0>>,Mix<Int<8000>,Black,Rgb<0,255,0>>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<9000>,Int<4000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<-2000>,Int<-3000>>,Rgb<255,0,255>,Mix<Int<12000>,Black,Rgb<255,0,255>>,Pulsing<Rgb<255,0,255>,Mix<Int<8000>,Black,Rgb<255,0,255>>,800>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<4000>,Int<1800>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2800>,Int<-4000>>,Mix<Int<16000>,Black,Rgb<255,97,0>>,Mix<Sin<Int<20>,Int<20000>,Int<32768>>,Black,Rgb<255,97,0>>,Mix<Int<10000>,Black,Rgb<255,97,0>>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Sin<Int<20>,Int<10000>,Int<7000>>,Int<3000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2300>,Int<-4000>>,Rgb<115,15,240>,Mix<Int<12000>,Black,Rgb<115,15,240>>,Pulsing<Rgb<115,15,240>,Mix<Int<20000>,Black,Rgb<115,15,240>>,2000>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<4000>,Int<1800>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-3000>,Int<-4500>>,Mix<Int<16000>,Black,Rgb<100,100,150>>,Mix<Sin<Int<20>,Int<22000>,Int<32768>>,Black,Rgb<100,100,150>>,Mix<Int<8000>,Black,Rgb<100,100,150>>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<3000>>,Int<3600>,Int<1600>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<2000>,Int<4000>>,Int<-2700>,Int<-4100>>,Mix<Int<16000>,Black,Rgb<255,255,0>>,Mix<Sin<Int<20>,Int<22000>,Int<32768>>,Black,Rgb<255,255,0>>,Mix<Int<8000>,Black,Rgb<255,255,0>>>,StripesX<Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<2000>>,Int<6000>,Int<2000>>,Scale<HoldPeakF<Sum<EffectPulseF<EFFECT_IGNITION>,EffectPulseF<EFFECT_ALT_SOUND>>,Int<3000>,Int<4000>>,Int<-2600>,Int<-3600>>,Rgb<255,0,0>,Mix<Int<12000>,Black,Rgb<255,0,0>>,Pulsing<Rgb<255,0,0>,Mix<Int<8000>,Black,Rgb<255,0,0>>,1000>>>,InOutTrL<TrInstant,TrInstant,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>>>(),


};
BladeConfig blades[] = {
 { 0, WS281XBladePtr<144, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    WS281XBladePtr<3, blade4Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()
  , CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
#endif

Thanks

You are missing the opening bracket for Preset presets

Should be:

Preset presets[] = {

then you need a closing bracket for your preset

Should be

}
};
BladeConfig blades[] = {

Just note, your style is just a ColorChange Multi-Phase style, if you want to use with Alt Font you need to generate a “Multi-Phase (Special Abilities)” style, ColorChange only changes the blade colors, not the Alt Font.

In the Blade Builder select the “Multi-Phase (Special Abilities)”, then set your Phase Controls in the Special Abilities section

or

You can use the Recipe for “Kyberphonics Survivor Party Mode 2” (watch OS7 Library Intro video at top), this will build the Cal Kestis Survivor blade with Party Mode and all Special Ability controls already enabled.

It will run up to 10 alts (000 ~ 009) without an issue as long as your font is set up correctly

1 Like

Ah I see now, thanks Fett