Help with Custom Ulfberhtsaber

So, I have been designing my own lightsaber to fit my characters needs (Vikingralorian), in the shape of a Ulfberht (Vikingr Sword). With the width of the blade, I will need 3 rows per side (6 in total) strips of Neopixels (RGBW). I have figured out the power and the general requirements (3 20A 5100mAh Batteries in Parallel), but I am trying to determine how to wire it correctly, and what gauge wire is needed.

  • There are 6 pixel pins, but only 4 data.

  • If I am having the 6 strips running in the same pattern/effects I only need one data port correct, or do I need to spread the data load across the different pins?

  • I also so saw a post that said to bridge each strip at the ground pin (1 to 2, 2 to 3, 4 to 5, or 5 to 6) to spread the load of the mosfets. The max amp draw from each strip is 8.9A at the highest brightness (10A recommend max on mosfet, I’ve heard 13A). Is this necessary/possible with 6 strips?

  • Based on the chart I looked out 18awg was the thickest recommended wire for Neopixel, but with my max draw nearing 55A. Total across the 6 strips based off [6*(.3W110)/3.7V=53.5A] (in reality I shouldn’t even come close to this level of amps more like [6(.2W*110)/3.7V=35.6A])

  • Also saw a post in regards to resistors (470 Ohms) need at each additional strip (1st strip comes with one for free). Would I need one at each (5) strip or would I need a bigger resistor per strip (6)?

Sorry for the long windedness of the conversation.

Still a work in progress, I basically had to redesign it from the ground up with the power add on.
First pic is the Cross Guard with the reed switch location.

Second pic is the three batteries in the core.

11

Side profile.

Core with the cross guard, three hilt pieces, and pommel (pommel screws on and holds everything tight).

Proffieboard location minus cover.

Long term goal for this build, is to create a font that gives it a dual lightning effect. The main blade color would be a reddish purple, with red and blue lightning streaking across the 3 strips, mirrored on either side of the blade. The sound font, would consist of energy crackles, thunder clashes, with the ignition sound being Boba’s Grav Bombs (closest sound to an EMP). Blade flashes to life when ignited for a sec, grav bomb sound, blade shuts down, then springs back to life in a blur of lightning. Backstory to the saber, it was created after my character killed a Sith and a Jedi battling it out. Both crystals from their sabers, were used in the blade, causing them to be in constant chaos with one another, while still being in balance enough to create the blade.

  • I am assuming that this set up will require 3 data pins to tell the specific LED strips what to do independently of the other strips (mirrored on the opposite side of the blade)? Any help will greatly be appreciated.

One port is enough.

First of all; strips don’t actually draw what they are rated for. Especially when you don’t give them the full 5 volts. A strip rated for 8.9A might draw 5-6A when hooked up to a 3.7V battery, and that’s only when displaying white. Colors will draw less power.

The FETs on a proffieboard are supposed to be rated for at least 10A, but it actually varies a bit from manufacurer to manufacturer. However, if you’re going to hook up 6 high power strips, it’s not the FETs I would worry about, it’s the copper underneath them. I have no idea how how the FET and copper will get if you try to put 35A thrugh it. Basically it comes down to this: If it stays cool enough; it will work!

18 AWG is hard to work with, and it’s very hard to solder to the board. It might be simpler to just wire one pair of 22 or 24AWG wire to each each strip. You’ll still need two 18AWG wires to hook up to the two BATT- pads on the proffieboard though to carry the negative power from the batteries.

If you want to carry the full power of all the blades through a single wire, you’ll need at least 14AWG wire.

Resistors have two purposes: prevent neopixels from drawing power from the data wire, and short portection. If your blade is not removable, you don’t really need short protection. If you don’t need short protection and all your strips are hooked up to data1 (which already has a resistor) then you don’t need any additional resistors.

You could also hook up the blade in zig-zag configuration.
Basically the middle strip could be upside down and have the data travel downwards. The data input of the middle strip would be hooked up to the data output of the first strip. The output of the middle strip would be hooked up to the input of the third strip. Instead of three strips in parallel, you would have one strip that was 432 pixels long. Then you can use subblade() and subbladereverse() to assign individual styles to the three sections.

I apologize for the delayed response! Thank you for your help with that.

BIggest issue I see here is space for wiring. I do not have the space at the tip to wire this way. I can wire everything from the base/cross guard.

With the way I want my font/effect to run, I will most likely need to use 3 data ports. so the plan is to prewire for that font, but plan to just use a single effect until I make the font I want.

It only needs one tiny wire at the tip though.
(Two if you count both sides)

Then you’ll need at least two resistors. (Since data 1 already has one.)

image

I think I have the configuration right, but one of the things I saw was a resistor from the illuminated switch (my function switch), back to the data. Is this necessary or not? My plan is to use 18AWG from the positive strip/battery, and 24AWG for everything else, with the exception of speakers.

Let me know if anything seems off or is missing.

Also here is the style that I built in the FETT style builder.

/* copyright Fett263 CustomBlade (Primary Blade) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#CustomBlade
OS6.7 v4.020
Single Style
Color Blend (Erratic)
Default: Shock Baton
1: ElectroStaff

Base Color: Rgb<255,0,0> (0)

--Effects Included--
Preon Effect: Faulty Ignition (PreOn Color)
Ignition Effect: Lightning Strike
Retraction Effect: Glitch Off
Lockup Effect: Responsive Lockup, Begin Effect: Localized Flash, End Effect: Power Burst
LightningBlock Effect: Force Lightning
Drag Effect: Intensity Sparking Drag
Melt Effect: Intensity Melt
Stab Effect: AudioFlicker Stab
Blast Effect: Responsive Blast Fade (Large)
Clash Effect: Responsive Clash
Swing Effect: Lightning Swing
*/
StylePtr<Layers<Mix<Scale<SlowNoise<Int<1600>>,Int<0>,Int<30768>>,BrownNoiseFlicker<BrownNoiseFlicker<Mix<HoldPeakF<SwingSpeed<400>,Scale<SwingAcceleration<>,Int<500>,Int<2000>>,Scale<SwingAcceleration<>,Int<10000>,Int<5000>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,RotateColorsX<Int<10750>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>>,Black,300>,Stripes<3000,-4000,Rgb<50,50,75>,Rgb<100,100,150>,Rgb<10,10,15>,Rgb<150,150,225>>,200>,StaticFire<Strobe<Mix<HoldPeakF<SwingSpeed<400>,Scale<SwingAcceleration<>,Int<500>,Int<2000>>,Scale<SwingAcceleration<>,Int<10000>,Int<5000>>>,RgbArg<ALT_COLOR_ARG,Rgb<255,0,0>>,RotateColorsX<Int<22000>,RgbArg<ALT_COLOR_ARG,Rgb<255,0,0>>>>,Strobe<Rgb<100,100,150>,RandomPerLEDFlicker<Mix<HoldPeakF<SwingSpeed<400>,Scale<SwingAcceleration<>,Int<500>,Int<2000>>,Scale<SwingAcceleration<>,Int<10000>,Int<5000>>>,RgbArg<ALT_COLOR_ARG,Rgb<255,0,0>>,RotateColorsX<Int<22000>,RgbArg<ALT_COLOR_ARG,Rgb<255,0,0>>>>,Black>,50,1>,100,1>,Mix<Int<6425>,Black,Mix<HoldPeakF<SwingSpeed<400>,Scale<SwingAcceleration<>,Int<500>,Int<2000>>,Scale<SwingAcceleration<>,Int<10000>,Int<5000>>>,RgbArg<ALT_COLOR_ARG,Rgb<255,0,0>>,RotateColorsX<Int<22000>,RgbArg<ALT_COLOR_ARG,Rgb<255,0,0>>>>>,0,5,2,1000,5>>,AlphaL<BrownNoiseFlickerL<StripesX<Int<2600>,Scale<IncrementWithReset<ThresholdPulseF<StrobeF<Int<6>,Int<1>>,Int<32000>>,ThresholdPulseF<ThresholdPulseF<IsLessThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<8000>>,Int<32000>>>,Int<30000>,Int<3000>>,Int<-1200>,Int<-4000>>,RgbArg<SWING_COLOR_ARG,Rgb<118,0,194>>,Mix<Int<16384>,Black,RgbArg<SWING_COLOR_ARG,Rgb<118,0,194>>>,Mix<Int<16384>,RgbArg<SWING_COLOR_ARG,Rgb<118,0,194>>,White>>,Int<50>>,SmoothStep<IncrementWithReset<Scale<IsGreaterThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<18000>>,Int<0>,ThresholdPulseF<StrobeF<Scale<HoldPeakF<Ifon<SwingAcceleration<>,Int<0>>,Int<150>,Int<32000>>,Int<20>,Int<200>>,Int<1>>,Int<32000>>>,ThresholdPulseF<IsLessThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<8000>>,Int<32000>>,Int<42000>,Int<1500>>,Int<-8000>>>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<WavLen<>>,TrWipeIn<200>>,AlphaL<AudioFlickerL<RgbArg<STAB_COLOR_ARG,Rgb<85,85,200>>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<2000>>>,TrWipe<200>>,EFFECT_STAB>,TransitionEffectL<TrConcat<TrInstant,AlphaMixL<Bump<Scale<BladeAngle<>,Int<28000>,Int<8000>>,Int<14000>>,RgbArg<BLAST_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<16384>,Black,RgbArg<BLAST_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<300>>,EFFECT_BLAST>,TransitionEffectL<TrConcat<TrInstant,AlphaL<RgbArg<CLASH_COLOR_ARG,Rgb<118,0,194>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-10000>>>,Scale<ClashImpactF<>,Int<12000>,Int<60000>>>>,TrFadeX<Scale<ClashImpactF<>,Int<200>,Int<400>>>>,EFFECT_CLASH>,LockupTrL<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,AudioFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<118,0,194>>>,BrownNoiseFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<118,0,194>>,Int<200>>>,TrConcat<TrInstant,RgbArg<LOCKUP_COLOR_ARG,Rgb<118,0,194>>,TrFade<400>>,TrConcat<TrCenterWipeX<Int<150>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-10000>>>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<118,0,194>>,TrJoin<TrCenterWipeX<Int<150>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,19703>,Int<-10000>>>>,TrSmoothFade<150>>>,SaberBase::LOCKUP_NORMAL>,LockupTrL<Stripes<3000,-2000,RandomBlink<30000,Strobe<Rgb<125,125,225>,RgbArg<LB_COLOR_ARG,Rgb<255,255,255>>,50,1>,Rgb<75,75,150>>,RandomPerLEDFlicker<Rgb<20,20,100>,Rgb<100,100,150>>>,TrWipe<200>,TrWipe<200>,SaberBase::LOCKUP_LIGHTNING_BLOCK>,LockupTrL<AlphaL<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,0,75>>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrConcat<TrJoin<TrDelay<4000>,TrWipeIn<200>>,AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,0,75>>,Int<300>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrFade<4000>>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Remap<Scale<RampF,Int<65536>,Int<0>>,StaticFire<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,Mix<TwistAngle<>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>,RotateColorsX<Int<3000>,Mix<Int<12000>,Black,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>>,0,3,5,3000,10>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrConcat<TrWipeIn<100>,AlphaL<RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrJoin<TrDelay<4000>,TrFade<300>>,AlphaL<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,InOutTrL<TrConcat<TrWipeInX<Mult<IgnitionTime<2000>,Int<6553>>>,RandomBlink<30000,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,Black>,TrJoin<TrDelayX<Mult<IgnitionTime<2000>,Int<19660>>>,TrWipeInX<Mult<IgnitionTime<230>,Int<6553>>>>,Mix<SmoothStep<Scale<SlowNoise<Int<30000>>,IntArg<EMITTER_SIZE_ARG,1000>,Sum<Int<5000>,IntArg<EMITTER_SIZE_ARG,1000>>>,Int<-3000>>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>,TrWipeX<Mult<IgnitionTime<2000>,Int<19660>>>>,TrConcat<TrJoin<TrDelayX<Mult<RetractionTime<0>,Int<16384>>>,TrWipeInX<Mult<RetractionTime<0>,Int<16384>>>>,Mix<SmoothStep<NoisySoundLevel,Int<-1>>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>,TrWipeInX<Mult<RetractionTime<0>,Int<16384>>>>,Black>,TransitionEffectL<TrConcat<TrInstant,AlphaL<Mix<Trigger<EFFECT_PREON,Mult<Int<16384>,WavLen<EFFECT_PREON>>,Mult<Int<10922>,WavLen<EFFECT_PREON>>,Mult<Int<5462>,WavLen<EFFECT_PREON>>>,BrownNoiseFlicker<Black,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,100>,RandomPerLEDFlicker<RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,Rgb<50,50,50>>,BrownNoiseFlicker<Mix<NoisySoundLevel,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,RotateColorsX<Int<4000>,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>>>,White,50>>,SmoothStep<Scale<NoisySoundLevel,Int<-10000>,Int<36000>>,Int<-4000>>>,TrDelayX<WavLen<EFFECT_PREON>>>,EFFECT_PREON>>>(),

Can you run 2 styles at once with a proffieboard?

If so I might do this style on the edges and a reverse color style in the middle. Giving it an erratic lightning effect.

Of course, but the blades need to be on seperate data lines. So like inner strips on data1 like you have, but move the outer ones (also wired in parallel with each other) to data3.
Then they could be the same, or different blade styles depending on what you want to do.

How do I change the code to make that happen? I have zero coding experience. I saw something somewhat similar on reddit that said something about dual_prop.h file??? Is that what I need to do?

No no. Simply wire data 3 pad to the outer 2 strips.
Then, in the BladeConfig section of your config, you’ll add an additional entry for that blade.
Adjust the blades’ PowerPINS (You’re moving the ones on LED1 and LED6 to the new blade, and use blade3Pin for the new blade.

The NUM_BLADES value would +1, and all of your presets would need that additional style.

Off topic, I hope your single positive line from the battery to the strips is like 20AWG wire.

18AWG

If I send you the two styles could you help me split that out?

image

Rewired to show the Second data feed to the middle strips. Little black rectangles are resistors. I also added one to the Illuminated switch just in case I actually need one.

:+1: :+1:

Sure, post them with an explanation of what you want them to do.

image

Changed up the wiring just a little bit.

And my shopping list below.

Proffieboard v2 w/ 16gb Card
2x Foam Diffuser (front and back of Blade)
3x 27100 15A 5000mah Batteries
Battery Contacts
Reed Switch (activation/ignition switch)
12mm Illuminated Momentary Switch (function switch)
4ohm 3w 28mm Speaker
18awg Red Wire for positive power from batt/strips/board
22awg Black Wire for negative strip to board
22awg Green wire for data from strips to board (outer strip)
22awg White wire for data from strip to board (middle strips)
30awg BLack Wire for neagtive switches to board
30awg Blue Wire for positive switches to button pad on board
30awg Green Wire for speaker to board
30awg Yellow Wire for data from switch to board
82OHM Resistor form switch to board [(3.7v-2v)/20mah]
470ohm Resistor for data from strip to board (middle strip)

Ulfberhtsaber.txt (6.4 KB)
Ulfberhtsaber2.txt (6.4 KB)

The blue goes on the outside and the red goes on the middle strips for set ups

Make the middle strips 3,4 and the outer strips 1,2,5,6

Data for outer strips can go to data 1 and data 3 for the middle strips.

oh you mean the BladeConfig entries?
Don’t need to see the styles for that.
How many LEDs in your strips?

Middle row at 104 per side, outer edges 75 per edge (x4)

How does that work if I have 2 different styles?

This may be implied, but for this much power you really need to use both BATT- pads on the proffieboard.

#ifdef CONFIG_PRESETS
Preset presets[] = {

{ "Ulfberhtsaber;common", "Ulfberhtsaber/tracks/ClashOfTheCrystals.wav",

/* copyright Fett263 CustomBlade (Primary Blade) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#CustomBlade
OS6.7 v4.020
Single Style
Color Blend (Erratic)
Default: ElectroStaff
1: Shock Baton

Base Color: Rgb<0,0,255> (0)

--Effects Included--
Preon Effect: Faulty Ignition (PreOn Color)
Ignition Effect: Lightning Strike
Retraction Effect: Glitch Off
Lockup Effect: Responsive Lockup, Begin Effect: Localized Flash, End Effect: Power Burst
LightningBlock Effect: Force Lightning
Drag Effect: Intensity Sparking Drag
Melt Effect: Intensity Melt
Stab Effect: AudioFlicker Stab
Blast Effect: Responsive Blast Fade (Large)
Clash Effect: Responsive Clash
Swing Effect: Lightning Swing
*/
StylePtr<Layers<Mix<Scale<SlowNoise<Int<1000>>,Int<0>,Int<17764>>,StaticFire<Strobe<RgbArg<BASE_COLOR_ARG,Rgb<199,0,0>>,Strobe<Rgb<100,100,150>,RandomPerLEDFlicker<RgbArg<BASE_COLOR_ARG,Rgb<199,0,0>>,Black>,50,1>,100,1>,Mix<Int<6425>,Black,RgbArg<BASE_COLOR_ARG,Rgb<199,0,0>>>,0,5,2,1000,5>,BrownNoiseFlicker<BrownNoiseFlicker<RgbArg<BASE_COLOR_ARG,Rgb<10,0,153>>,Black,300>,Stripes<3000,-4000,Rgb<50,50,75>,Rgb<100,100,150>,Rgb<10,10,15>,Rgb<150,150,225>>,200>>,AlphaL<BrownNoiseFlickerL<StripesX<Int<2600>,Scale<IncrementWithReset<ThresholdPulseF<StrobeF<Int<6>,Int<1>>,Int<32000>>,ThresholdPulseF<ThresholdPulseF<IsLessThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<8000>>,Int<32000>>>,Int<30000>,Int<3000>>,Int<-1200>,Int<-4000>>,RgbArg<SWING_COLOR_ARG,Rgb<255,0,255>>,Mix<Int<16384>,Black,RgbArg<SWING_COLOR_ARG,Rgb<255,0,255>>>,Mix<Int<16384>,RgbArg<SWING_COLOR_ARG,Rgb<255,0,255>>,White>>,Int<50>>,SmoothStep<IncrementWithReset<Scale<IsGreaterThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<18000>>,Int<0>,ThresholdPulseF<StrobeF<Scale<HoldPeakF<Ifon<SwingAcceleration<>,Int<0>>,Int<150>,Int<32000>>,Int<20>,Int<200>>,Int<1>>,Int<32000>>>,ThresholdPulseF<IsLessThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<8000>>,Int<32000>>,Int<42000>,Int<1500>>,Int<-8000>>>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<WavLen<>>,TrWipeIn<200>>,AlphaL<AudioFlickerL<RgbArg<STAB_COLOR_ARG,Rgb<255,0,255>>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<2000>>>,TrWipe<200>>,EFFECT_STAB>,TransitionEffectL<TrConcat<TrInstant,AlphaMixL<Bump<Scale<BladeAngle<>,Int<28000>,Int<8000>>,Int<14000>>,RgbArg<BLAST_COLOR_ARG,Rgb<118,0,194>>,Mix<Int<16384>,Black,RgbArg<BLAST_COLOR_ARG,Rgb<118,0,194>>>>,TrFade<300>>,EFFECT_BLAST>,TransitionEffectL<TrConcat<TrInstant,AlphaL<RgbArg<CLASH_COLOR_ARG,Rgb<255,0,255>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-10000>>>,Scale<ClashImpactF<>,Int<12000>,Int<60000>>>>,TrFadeX<Scale<ClashImpactF<>,Int<200>,Int<400>>>>,EFFECT_CLASH>,LockupTrL<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,AudioFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>>,BrownNoiseFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>,Int<200>>>,TrConcat<TrInstant,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>,TrFade<400>>,TrConcat<TrCenterWipeX<Int<150>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-10000>>>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>,TrJoin<TrCenterWipeX<Int<150>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-10000>>>>,TrSmoothFade<150>>>,SaberBase::LOCKUP_NORMAL>,LockupTrL<Stripes<3000,-2000,RandomBlink<30000,Strobe<Rgb<125,125,225>,RgbArg<LB_COLOR_ARG,Rgb<255,0,75>>,50,1>,Rgb<75,75,150>>,RandomPerLEDFlicker<Rgb<20,20,100>,Rgb<100,100,150>>>,TrWipe<200>,TrWipe<200>,SaberBase::LOCKUP_LIGHTNING_BLOCK>,LockupTrL<AlphaL<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,0,255>>>,SmoothStep<IntArg<DRAG_SIZE_ARG,30077>,Int<3000>>>,TrConcat<TrJoin<TrDelay<4000>,TrWipeIn<200>>,AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,0,255>>,Int<300>>,SmoothStep<IntArg<DRAG_SIZE_ARG,30077>,Int<3000>>>,TrFade<4000>>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Remap<Scale<RampF,Int<65536>,Int<0>>,StaticFire<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,Mix<TwistAngle<>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>,RotateColorsX<Int<3000>,Mix<Int<12000>,Black,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>>,0,3,5,3000,10>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<4000>>>,TrConcat<TrWipeIn<100>,AlphaL<RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<4000>>>,TrJoin<TrDelay<4000>,TrFade<300>>,AlphaL<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<4000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,InOutTrL<TrConcat<TrWipeInX<Mult<IgnitionTime<1000>,Int<6553>>>,RandomBlink<30000,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,Black>,TrJoin<TrDelayX<Mult<IgnitionTime<1000>,Int<19660>>>,TrWipeInX<Mult<IgnitionTime<230>,Int<6553>>>>,Mix<SmoothStep<Scale<SlowNoise<Int<30000>>,IntArg<EMITTER_SIZE_ARG,1000>,Sum<Int<5000>,IntArg<EMITTER_SIZE_ARG,1000>>>,Int<-3000>>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>,TrWipeX<Mult<IgnitionTime<1000>,Int<19660>>>>,TrConcat<TrJoin<TrDelayX<Mult<RetractionTime<0>,Int<16384>>>,TrWipeInX<Mult<RetractionTime<0>,Int<16384>>>>,Mix<SmoothStep<NoisySoundLevel,Int<-1>>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>,TrWipeInX<Mult<RetractionTime<0>,Int<16384>>>>,Black>,TransitionEffectL<TrConcat<TrInstant,AlphaL<Mix<Trigger<EFFECT_PREON,Mult<Int<16384>,WavLen<EFFECT_PREON>>,Mult<Int<10922>,WavLen<EFFECT_PREON>>,Mult<Int<5462>,WavLen<EFFECT_PREON>>>,BrownNoiseFlicker<Black,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,100>,RandomPerLEDFlicker<RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,Rgb<50,50,50>>,BrownNoiseFlicker<Mix<NoisySoundLevel,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,RotateColorsX<Int<4000>,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>>>,White,50>>,SmoothStep<Scale<NoisySoundLevel,Int<-10000>,Int<36000>>,Int<-4000>>>,TrDelayX<WavLen<EFFECT_PREON>>>,EFFECT_PREON>>>(),

/* copyright Fett263 CustomBlade (Primary Blade) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#CustomBlade
OS6.7 v4.020
Single Style
Color Blend (Erratic)
Default: ElectroStaff
1: Shock Baton

Base Color: Rgb<255,0,0> (0)

--Effects Included--
Preon Effect: Faulty Ignition (PreOn Color)
Ignition Effect: Lightning Strike
Retraction Effect: Glitch Off
Lockup Effect: Responsive Lockup, Begin Effect: Localized Flash, End Effect: Power Burst
LightningBlock Effect: Force Lightning
Drag Effect: Intensity Sparking Drag
Melt Effect: Intensity Melt
Stab Effect: AudioFlicker Stab
Blast Effect: Responsive Blast Fade (Large)
Clash Effect: Responsive Clash
Swing Effect: Lightning Swing
*/
StylePtr<Layers<Mix<Scale<SlowNoise<Int<1000>>,Int<0>,Int<17764>>,StaticFire<Strobe<RgbArg<BASE_COLOR_ARG,Rgb<0,5,158>>,Strobe<Rgb<100,100,150>,RandomPerLEDFlicker<RgbArg<BASE_COLOR_ARG,Rgb<0,5,158>>,Black>,50,1>,100,1>,Mix<Int<6425>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,5,158>>>,0,5,2,1000,5>,BrownNoiseFlicker<BrownNoiseFlicker<RgbArg<BASE_COLOR_ARG,Rgb<194,0,0>>,Black,300>,Stripes<3000,-4000,Rgb<50,50,75>,Rgb<100,100,150>,Rgb<10,10,15>,Rgb<150,150,225>>,200>>,AlphaL<BrownNoiseFlickerL<StripesX<Int<2600>,Scale<IncrementWithReset<ThresholdPulseF<StrobeF<Int<6>,Int<1>>,Int<32000>>,ThresholdPulseF<ThresholdPulseF<IsLessThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<8000>>,Int<32000>>>,Int<30000>,Int<3000>>,Int<-1200>,Int<-4000>>,RgbArg<SWING_COLOR_ARG,Rgb<255,0,255>>,Mix<Int<16384>,Black,RgbArg<SWING_COLOR_ARG,Rgb<255,0,255>>>,Mix<Int<16384>,RgbArg<SWING_COLOR_ARG,Rgb<255,0,255>>,White>>,Int<50>>,SmoothStep<IncrementWithReset<Scale<IsGreaterThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<18000>>,Int<0>,ThresholdPulseF<StrobeF<Scale<HoldPeakF<Ifon<SwingAcceleration<>,Int<0>>,Int<150>,Int<32000>>,Int<20>,Int<200>>,Int<1>>,Int<32000>>>,ThresholdPulseF<IsLessThan<HoldPeakF<Ifon<SwingSpeed<400>,Int<0>>,Int<150>,Int<32000>>,Int<8000>>,Int<32000>>,Int<42000>,Int<1500>>,Int<-8000>>>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<WavLen<>>,TrWipeIn<200>>,AlphaL<AudioFlickerL<RgbArg<STAB_COLOR_ARG,Rgb<255,0,255>>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<2000>>>,TrWipe<200>>,EFFECT_STAB>,TransitionEffectL<TrConcat<TrInstant,AlphaMixL<Bump<Scale<BladeAngle<>,Int<28000>,Int<8000>>,Int<14000>>,RgbArg<BLAST_COLOR_ARG,Rgb<118,0,194>>,Mix<Int<16384>,Black,RgbArg<BLAST_COLOR_ARG,Rgb<118,0,194>>>>,TrFade<300>>,EFFECT_BLAST>,TransitionEffectL<TrConcat<TrInstant,AlphaL<RgbArg<CLASH_COLOR_ARG,Rgb<255,0,255>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-10000>>>,Scale<ClashImpactF<>,Int<12000>,Int<60000>>>>,TrFadeX<Scale<ClashImpactF<>,Int<200>,Int<400>>>>,EFFECT_CLASH>,LockupTrL<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,AudioFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>>,BrownNoiseFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>,Int<200>>>,TrConcat<TrInstant,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>,TrFade<400>>,TrConcat<TrCenterWipeX<Int<150>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-10000>>>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,0,75>>,TrJoin<TrCenterWipeX<Int<150>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,22889>,Int<-10000>>>>,TrSmoothFade<150>>>,SaberBase::LOCKUP_NORMAL>,LockupTrL<Stripes<3000,-2000,RandomBlink<30000,Strobe<Rgb<125,125,225>,RgbArg<LB_COLOR_ARG,Rgb<255,0,75>>,50,1>,Rgb<75,75,150>>,RandomPerLEDFlicker<Rgb<20,20,100>,Rgb<100,100,150>>>,TrWipe<200>,TrWipe<200>,SaberBase::LOCKUP_LIGHTNING_BLOCK>,LockupTrL<AlphaL<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,0,255>>>,SmoothStep<IntArg<DRAG_SIZE_ARG,30077>,Int<3000>>>,TrConcat<TrJoin<TrDelay<4000>,TrWipeIn<200>>,AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,0,255>>,Int<300>>,SmoothStep<IntArg<DRAG_SIZE_ARG,30077>,Int<3000>>>,TrFade<4000>>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Remap<Scale<RampF,Int<65536>,Int<0>>,StaticFire<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,Mix<TwistAngle<>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>,RotateColorsX<Int<3000>,Mix<Int<12000>,Black,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>>,0,3,5,3000,10>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<4000>>>,TrConcat<TrWipeIn<100>,AlphaL<RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<4000>>>,TrJoin<TrDelay<4000>,TrFade<300>>,AlphaL<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,SmoothStep<IntArg<MELT_SIZE_ARG,30644>,Int<4000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,InOutTrL<TrConcat<TrWipeInX<Mult<IgnitionTime<1000>,Int<6553>>>,RandomBlink<30000,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,Black>,TrJoin<TrDelayX<Mult<IgnitionTime<1000>,Int<19660>>>,TrWipeInX<Mult<IgnitionTime<230>,Int<6553>>>>,Mix<SmoothStep<Scale<SlowNoise<Int<30000>>,IntArg<EMITTER_SIZE_ARG,1000>,Sum<Int<5000>,IntArg<EMITTER_SIZE_ARG,1000>>>,Int<-3000>>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>,TrWipeX<Mult<IgnitionTime<1000>,Int<19660>>>>,TrConcat<TrJoin<TrDelayX<Mult<RetractionTime<0>,Int<16384>>>,TrWipeInX<Mult<RetractionTime<0>,Int<16384>>>>,Mix<SmoothStep<NoisySoundLevel,Int<-1>>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>,TrWipeInX<Mult<RetractionTime<0>,Int<16384>>>>,Black>,TransitionEffectL<TrConcat<TrInstant,AlphaL<Mix<Trigger<EFFECT_PREON,Mult<Int<16384>,WavLen<EFFECT_PREON>>,Mult<Int<10922>,WavLen<EFFECT_PREON>>,Mult<Int<5462>,WavLen<EFFECT_PREON>>>,BrownNoiseFlicker<Black,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,100>,RandomPerLEDFlicker<RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,Rgb<50,50,50>>,BrownNoiseFlicker<Mix<NoisySoundLevel,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>,RotateColorsX<Int<4000>,RgbArg<PREON_COLOR_ARG,Rgb<255,255,255>>>>,White,50>>,SmoothStep<Scale<NoisySoundLevel,Int<-10000>,Int<36000>>,Int<-4000>>>,TrDelayX<WavLen<EFFECT_PREON>>>,EFFECT_PREON>>>(),"blue edges"}
};

BladeConfig blades[] = {
 { 0, 
  WS281XBladePtr<75, bladePin, Color8::GRB, PowerPINS<bladePowerPin1, bladePowerPin3, bladePowerPin4, bladePowerPin6> >(),
  WS281XBladePtr<104, blade3Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin5> >(),
  CONFIGARRAY(presets)}
};
#endif