Problems importing sound fonts Proffieboard V3.9

Hi everyone.

I recently became the proud owner of a Proffie Board 3.9 Lightsaber from Sabertrio. I wanted to add some new fonts to it and found some cool ones at “greyscalefonts.com.”

I tried to get the “Null” font onto my soundboard following a tutorial. But unfortunately, it didn’t work—maybe I’m still making a mistake somewhere. However, after doing some research, I found that Sabertrio has a setting for “NUM_Blades 4,” and this number is supposed to be reflected in the number of styles. In fact, the Sabertrio presets each have 4 styles, but the “Null” font only has one, if I’m seeing this correctly. However, I still don’t understand the command “StylePtr<Layers<” in the ‘proffie_blade_style’ file of the “Null” font and haven’t been able to find anything about it yet.

Can anyone tell me if this is correct regarding the number of styles? I’m currently trying to understand how it all works and would also appreciate any tips regarding “StylePtr<Layers<”.

Tell us more, what happened?

This is only the beginning of a style, you need the whole style.

Let’s explain some terminology:

  • Blades - for a basic saber, there is only one blade, but if your saber has accent leds, light-up buttons, illuminated pogo pin PCBs or anything else that can light up, move or be controlled in any way, those things counts as “blades” too.
  • NUM_BLADES - this is a define that specifies how many “blades” your saber has. How many blades your saber has depends on how it’s wired and how many blinky lights there are. Generally speaking, it’s not a number you want to change unless you modified the hardware of your saber.
  • Styles - A piece of code using C++ templates that controls a blade. A style generally starts with StylePtr< and ends with >(). The < and > in a style work a lot like parenthesis and match up.
  • Preset - a font, track and one style per blade (see NUM_BLADES) Vader font + red blade(s) = one preset. You can have many presets.

If your font comes with 4 styles, but your saber only has 3 (or fewer) blades, just delete the last style (repeatedly) until you have the right number of styles.

If your font comes with 1 style but your saber has 4 styles, try just repeating the style four times. If you don’t like that, just copy three styles from some other preset.

Welcome to The Crucible!

  • I can help but need clarification first.
  • Are you using their forked prop and OS or the standard OS?

I’m a Sabertrio owner, actually have a nice stack of them, so this should get ya going.

I think what you’re saying is you’re trying to add a font and bladestyle separately, correct? StylePtr<Layers< is the starting part of the blade styles.

Let’s address the bladestyle itself before fonts since that’s usually the part people get hung up with.

Simply follow the structures of the other blade presets present in the example config that’s included on the factory SD Card. That’s what it’s there for, a “cheat lesson” in case ya need it. I’ll explain below.


Pro-Tip, make a backup of all your fonts and the main config. Never edit the main config, make a copy, name it something else, and only edit that. This way if you mess up you always have your clean example.


Use the blade style Greyscale provides (*noting I don’t have that so I am using the Analog blade style here as a substitute) and copy and paste the full thing into the config. From there rebuild the remaining three accent blade styles (or copy and paste another set in the config you want to use) that need to go with it to satisfy the 4 blade setup Sabertrio uses on the newest Power Cores.

Here that is as an example. Greyscale’s Analog with the following three supporting accent blade styles. Look at it side by side, ideally using something like the freeware version of Sublime Text, set to C++ in the lower right of the app window.

Have two app windows open, this quick clip and the config you’re editing and read thru them alongside each other, like you’d do in a practical physical application so you can “see” and read what’s happening and why.

This should get you going and MTFBWY!


//Main Bladestyle goes here, then the three accent blades but you don't include the closing "Analog"}, since that goes after the end of the final accent blade.
{"Analog;common", "tracks/none.wav",
StylePtr<
 Layers<
  RotateColorsX<Variation,Rgb16<0,38402,65535>>,
  AudioFlickerL<RotateColorsX<Variation,Rgb<0,85,200>>>,
  /*Ice blue audioflicker */
  AlphaL<RotateColorsX<Variation,Rgb16<882,65535,31206>>,SwingSpeed<500>>,
  /*Bright cyan color swing */
  AlphaL<Stripes<2500,-4000,RotateColorsX<Variation,Rgb16<0,38402,65535>>,RotateColorsX<Variation,Rgb<0,26,60>>,Pulsing<RotateColorsX<Variation,Rgb<0,13,30>>,Black,800>>,Scale<IsLessThan<SwingSpeed<600>,Int<13600>>,Scale<SwingSpeed<600>,Int<-19300>,Int<32768>>,Int<0>>>,
  /*Hard swing ripple effect */
  LockupTrL<Layers<
    AlphaL<AudioFlickerL<Rgb<255,225,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,
    AlphaL<NavajoWhite,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Int<10000>>>>,TrConcat<TrInstant,White,TrFade<400>>,TrConcat<TrInstant,White,TrFade<600>,AlphaL<Mix<SmoothStep<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Int<1000>>,Stripes<1500,2000,RotateColorsX<Variation,DeepSkyBlue>,RotateColorsX<Variation,Rgb16<0,65535,30086>>>,Stripes<1500,-2500,RotateColorsX<Variation,DeepSkyBlue>,RotateColorsX<Variation,Rgb16<0,65535,30086>>>>,Int<18000>>,TrFade<800>,AlphaL<Mix<SmoothStep<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Int<1000>>,Stripes<1500,1000,RotateColorsX<Variation,Rgb16<1514,65535,52727>>,RotateColorsX<Variation,Rgb16<3934,65535,38402>>>,Stripes<1500,-1250,RotateColorsX<Variation,Rgb16<1514,65535,52727>>,RotateColorsX<Variation,Rgb16<3934,65535,38402>>>>,Int<18000>>,TrFade<1100>>,SaberBase::LOCKUP_NORMAL>,
  /*Responsive lockup with click calibration effect
  AlphaL<NavajoWhite,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Int<10000>>>>,TrConcat<TrInstant,White,TrFade<400>>,TrConcat<TrInstant,White,TrFade<2100>>,SaberBase::LOCKUP_NORMAL>,
  Alternate lockup ending with white fade out, replace the second AlphaL line above (ending in LOCKUP_NORMAL) */
  ResponsiveLightningBlockL<Strobe<White,AudioFlicker<White,Blue>,50,1>,TrConcat<TrInstant,AlphaL<White,Bump<Int<12000>,Int<18000>>>,TrFade<200>>,TrConcat<TrInstant,HumpFlickerL<AlphaL<White,Int<16000>>,30>,TrSmoothFade<600>>>,
  /*Responsive lightning block */
  AlphaL<RotateColorsX<Variation,Rgb16<0,65535,30086>>,SmoothStep<Scale<SlowNoise<Int<2300>>,Int<1200>,Int<4500>>,Int<-4000>>>,
  /*Sparking emitter flare */
  ResponsiveStabL<Red>,
  /*Responsive stab */
  EffectSequence<EFFECT_BLAST,ResponsiveBlastL<White,Int<400>,Scale<SwingSpeed<200>,Int<100>,Int<400>>>,LocalizedClashL<White,80,30,EFFECT_BLAST>,ResponsiveBlastWaveL<White,Scale<SwingSpeed<400>,Int<500>,Int<200>>,Scale<SwingSpeed<400>,Int<100>,Int<400>>>,BlastL<White,200,200>,ResponsiveBlastFadeL<White,Scale<SwingSpeed<400>,Int<6000>,Int<12000>>,Scale<SwingSpeed<400>,Int<400>,Int<100>>>,ResponsiveBlastL<White,Scale<SwingSpeed<400>,Int<400>,Int<100>>,Scale<SwingSpeed<400>,Int<200>,Int<100>>,Scale<SwingSpeed<400>,Int<400>,Int<200>>>>,
  /*Multi-blast, blaster reflect cycles through different responsive effects */
  ResponsiveClashL<TransitionEffect<Rgb<255,240,80>,LemonChiffon,TrInstant,TrFade<100>,EFFECT_CLASH>,TrInstant,TrFade<400>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>,Int<20000>>,
  /*Responsive clash */
  TransitionEffectL<TrConcat<TrInstant,Stripes<3000,-3500,White,RandomPerLEDFlicker<Rgb<60,60,60>,Black>,BrownNoiseFlicker<White,Rgb<30,30,30>,200>,RandomPerLEDFlicker<Rgb<80,80,80>,Rgb<30,30,30>>>,TrFade<1000>>,EFFECT_IGNITION>,
  /*Bright HumpFlicker ignition effect */
  TransitionEffectL<TrConcat<TrInstant,HumpFlickerL<RotateColorsX<Variation,Rgb<90,180,255>>,40>,TrFade<1200>>,EFFECT_RETRACTION>,
  /*Bright HumpFlicker retraction effect */
  LockupTrL<AlphaL<BrownNoiseFlickerL<White,Int<300>>,SmoothStep<Int<30000>,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,
  /*Drag */
  LockupTrL<AlphaL<Mix<TwistAngle<>,Red,Orange>,SmoothStep<Int<28000>,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,
  /*Responsive melt */
  EffectSequence<EFFECT_POWERSAVE,AlphaL<Black,Int<8192>>,AlphaL<Black,Int<16384>>,AlphaL<Black,Int<24576>>,AlphaL<Black,Int<0>>>,
  /*Power save, if using fett263's prop file hold Aux and click PWR while ON (pointing up) to dim blade in 25% increments. */
  InOutTrL<TrConcat<TrWipe<200>,AudioFlicker<RotateColorsX<Variation,DeepSkyBlue>,RotateColorsX<Variation,Rgb<0,0,128>>>,TrWipe<100>,Black,TrBoing<550,2>>,TrColorCycle<790>>,
  /*Glitch out ignition and cycle down retraction */
  TransitionEffectL<TrConcat<TrInstant,AlphaL<BrownNoiseFlickerL<RotateColorsX<Variation,Rgb16<0,38402,65535>>,Int<30>>,SmoothStep<Scale<SlowNoise<Int<2200>>,Int<1500>,Int<5000>>,Int<-4000>>>,TrFade<1400>,AlphaL<RotateColorsX<Variation,Rgb16<0,11150,20996>>,Bump<Int<0>,Int<10000>>>,TrFade<1500>,AlphaL<Rgb16<20393,20393,20393>,Bump<Int<0>,Int<7000>>>,TrFade<2100>>,EFFECT_RETRACTION>,
  /*Retraction cool down effect
  TransitionEffectL<TrConcat<TrDelay<1500>,Black,TrFade<1000>,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<Int<0>,Int<6000>>>,TrFade<3000>>,EFFECT_BOOT>,
  TransitionEffectL<TrConcat<TrInstant,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<Int<0>,Int<6000>>>,TrFade<3000>>,EFFECT_NEWFONT>,
  Optional/alternate passive battery monitor, on boot (1st line) or font change (2nd line) you will get a visual indicator at the emitter of your current battery level. This also works without a blade if you have a lit emitter or blade plug. Green is Full, Red is Low (the color will blend from Green to Red as the battery is depleted), the indicator will fade out after 3000 ms and not display again until powered down and back up or fonts change. */
  TransitionEffectL<TrConcat<TrInstant,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<BatteryLevel,Int<10000>>>,TrDelay<2000>,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<BatteryLevel,Int<10000>>>,TrFade<1000>>,EFFECT_BATTERY_LEVEL>,
  /*On demand battery level, if using fett263's prop file Hold AUX and click PWR while OFF, the battery level is represented by the location on the blade; tip = full, hilt = low and color; green = full, yellow = half, red = low */
  TransitionEffectL<TrConcat<TrFade<100>,AlphaL<Pulsing<Rgb<120,120,165>,Rgb<50,50,80>,500>,Bump<Int<0>,Int<6000>>>,TrBoing<600,9>>,EFFECT_PREON>>>(), 
  //Clickity preon 


/* copyright Fett263 Rotoscope (Crystal Chamber) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#Rotoscope
OS7.14 v3.25p
This Style Contains 2 Unique Combinations
Style Option
Off Behavior Options: Default (0): Off, 1: Fast Pulse Off-On [Color: Match ON Color]
Base Color: BaseColorArg (0)
--Effects Included--
Ignition Effect: SparkTip Ignition [Color: IgnitionColorArg]
Retraction Effect: Standard Retraction [Color: RetractionColorArg]
Lockup Effect: NoneLightning Block Effect: NoneDrag Effect: NoneMelt Effect: None */
StylePtr<Layers<RandomFlicker<Stripes<24000,-1400,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,Mix<Int<11565>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,Mix<Int<16448>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>,
InOutTrL<TrWipeSparkTipX<RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,BendTimePowInvX<IgnitionTime<0>,Mult<IntArg<IGNITION_OPTION2_ARG,10992>,Int<98304>>>>,TrWipeInX<BendTimePowX<RetractionTime<0>,Mult<IntArg<RETRACTION_OPTION2_ARG,10992>,Int<98304>>>>,ColorSelect<IntArg<OFF_OPTION_ARG,0>,TrInstant,Black,Pulsing<Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,2000>>>>>(),

/* copyright Fett263 Rotoscope (Accent LED / PCB) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#Rotoscope
OS7.14 v3.25p
Single Style
Style Option
Off Behavior: Fast Pulse Off-On [Color: Match ON Color]
Base Color: BaseColorArg (0)
--Effects Included--
Ignition Effect: Instant [Color: IgnitionColorArg]
Retraction Effect: Instant [Color: RetractionColorArg]
Lockup Effect: NoneLightning Block Effect: NoneDrag Effect: NoneMelt Effect: None */
StylePtr<Layers<RandomFlicker<Stripes<24000,-1400,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,Mix<Int<11565>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,Mix<Int<16448>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>,
InOutTrL<TrInstant,TrInstant,Pulsing<Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,2000>>>>(),

/* copyright Fett263 Rotoscope (Quillion / Secondary Blade) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#Rotoscope
OS7.14 v3.25p
Single Style
Style Option
Base Color: BaseColorArg (0)
--Effects Included--
Ignition Effect: SparkTip Ignition [Color: IgnitionColorArg]
Retraction Effect: Standard Retraction [Color: RetractionColorArg]
Lockup Effect: NoneLightning Block Effect: NoneDrag Effect: NoneMelt Effect: None */
StylePtr<Layers<RandomFlicker<Stripes<24000,-1400,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,Mix<Int<11565>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>,Mix<Int<16448>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,255,0>>>,
InOutTrL<TrWipeSparkTipX<RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,BendTimePowInvX<IgnitionTime<250>,Mult<IntArg<IGNITION_OPTION2_ARG,10992>,Int<98304>>>>,TrWipeInX<BendTimePowX<RetractionTime<0>,Mult<IntArg<RETRACTION_OPTION2_ARG,10992>,Int<98304>>>>,Black>>>(),


"Analog"},


1 Like

Thank you so much for the quick help! After a few initial hiccups, I finally managed to get it working. I was really excited to see the new fonts in action. :star_struck:

Greetings!

Thanks so much for the tips! Making a backup was the first thing I did. :slightly_smiling_face: Comparing the two really helped me—I was totally lost at first.
Now I’m going to play around with the new fonts.

MTFBWY!