Crystal Focus logo
CRYSTALFOCUS.NET
Blade and color profiles tutorial
COMMUNITY GUIDE
BLADE PROFILES / COLOR PROFILES FOR CRYSTAL FOCUS X

Blade & Color Profiles for Crystal Focus X

A practical guide to understanding how CFX links sound fonts to blade profiles and color profiles, and how overrides, prefs, and per-font settings affect the result.

What you will learn

  • How blade and color profiles are separate
  • Where profiles are defined
  • How CFX resolves the active profile per font
  • How to trace which font uses which profiles

Blade & Color Profiles — A Beginner's Guide for Crystal Focus X

This guide explains how the CFX determines which blade profile and color profile is active for each sound font, and how you can control this.


Two Separate Profile Systems

The CFX has two independent profile systems that work together to define your saber's look:

SystemWhat It ControlsConfig FileSection Header
Blade ProfileVisual effects: flicker speed & depth, shimmer, ignition/retraction styles, bolt behavior, accent LED style, GraFx/Pixies style assignmentsconfig.txt (root)[profile=0], [profile=1], ...
Color ProfileColors only: blade color, clash color, blast color, lockup color, crystal color, stab color, drag color, flicker color, FX colorcolors.txt (root or per-font)[color=0], [color=1], ...

Think of it this way: the blade profile decides how your saber looks (effects, animations, behavior), and the color profile decides what color it is.

Both systems support up to 32 profiles each ([profile=0] through [profile=31], [color=0] through [color=31]).


Where Profiles Are Defined

Blade Profiles — config.txt

Blade profiles are defined in config.txt on the root of the SD card, inside numbered section headers:

[profile=0]
pname=Sith Lord
flks=60
flkd=30
pulsed=20
pulsel=500
style_pon=3
style_poff=2
style_flicker=1
style_grafx1=1
style_pixies=1

[profile=1]
pname=Jedi Knight
flks=80
flkd=15
pulsed=10
pulsel=800
style_pon=5
style_poff=4
style_flicker=2
style_grafx1=2
style_pixies=2
Important: This is the crucial link: The blade profile is where style_grafx1=, style_pixies=, style_pon=, style_poff=, and all other style assignments live. When you switch blade profiles, you change which GraFx folder, PIXIES folder, ignition style, etc. are active.

Color Profiles — colors.txt

Color profiles are defined in colors.txt. This file can exist in two places:

  1. Root of the SD card — global color profiles, shared across all fonts
  2. Inside a font folder (e.g. 01-MyFont/colors.txt) — font-specific overrides
[color=0]
cname=Blue Jedi
color=0,0,255
fcolor=255,255,255
bcolor=255,255,255
lcolor=255,200,50
xcolor=0,100,255

[color=1]
cname=Red Sith
color=255,0,0
fcolor=255,200,0
bcolor=255,100,0
lcolor=255,150,0
xcolor=255,0,50

How the CFX Decides Which Profile to Use

Important: start_blade and start_color are used whenever they are set to a value other than -1. The fallback to prefs.txt only happens when the value is -1 or not present.

When you switch to a font (or power on the saber), the CFX goes through this decision process for both the blade profile and color profile:

Priority Order (highest first)

1. start_blade= / start_color=  (in this font's font_config.txt)
       ↓ if not specified
2. Last-used profile            (saved automatically in prefs.txt)
       ↓ if no saved preference
3. Profile 0                    (hardcoded default)

Step by Step

  1. Read prefs.txt — The CFX loads the last-used blade profile and color profile for every font from prefs.txt (auto-generated file on the SD card root).
  1. Read config.txt — The CFX loads all blade profile definitions ([profile=0], [profile=1], etc.) and global settings.
  1. Read root colors.txt — The CFX loads all global color profile definitions ([color=0], [color=1], etc.).
  1. Load the active font — The CFX reads the font's font_config.txt:
  1. Read font-specific colors.txt (if present) — If the font folder contains its own colors.txt, those color profiles overwrite the global ones. For example, if the global [color=0] is blue and the font's [color=0] is green, green wins.
  1. Apply profiles — The CFX applies the chosen blade profile and color profile. Every subsystem (blade, motion, blaster, accents) gets updated.

The prefs.txt File

The CFX automatically saves your last-used profiles in prefs.txt on the SD card root. You never need to edit this file manually — it's updated every time you change profiles.

//Saber Prefs
bank=02
[font=0]
color=0
profile=0
[font=1]
color=1
profile=2
[font=2]
color=0
profile=1

This says:

When you switch back to a font, the CFX restores whatever blade and color profile you were using last time — unless the font's font_config.txt has a start_blade= or start_color= override.


Forcing a Specific Profile per Font

If you want a font to always start with a specific profile (ignoring whatever was saved in prefs.txt), add these to the font's font_config.txt:

start_color=2
start_blade=1

This forces:

Important: Use case: You have a Kylo Ren font that must always use the red unstable blade profile. Add start_blade=3 (if profile 3 is your unstable config) and start_color=1 (if color 1 is red) to that font's font_config.txt.

To not force a profile, simply omit the key or set it to -1:

start_color=-1
start_blade=-1

What -1 means: it means “do not use a fixed startup profile here.” When start_blade or start_color is -1, CFX falls back to the last-used blade profile and color profile saved for that font in prefs.txt. If there is no saved value yet, it falls back again to profile 0.


How to See Which Profile Belongs to Which Font

There's no single file that maps everything — the binding works through three layers. Here's how to trace it:

Method 1: Check prefs.txt

Open prefs.txt on the SD card. Each [font=N] section tells you the last-used profiles for that font number. Font numbers are zero-based (font 0 = your first font folder).

Method 2: Check font_config.txt for forced profiles

Open the font's font_config.txt and look for start_color= and start_blade=. If present, these override prefs.txt every time.

Method 3: Trace the chain manually

For a complete picture of what font #1 (your second font folder) looks like:

  1. Check 01-SecondFont/font_config.txt for start_blade= and start_color=
  1. Look up the blade profile number in config.txt:
  1. Look up the color profile number:

What's Inside Each Profile Type

Blade Profile Keys (inside [profile=N] in config.txt)

Blade profiles can contain many parameters. Here are just a few important examples:

KeyWhat It Controls
pname=Profile name
flks=Flicker effect speed
flkd=Flicker effect depth
style_pon=Ignition style
style_poff=Retraction style
style_flicker=Main blade flicker / shimmer style
style_grafx1=GraFx folder used for the main blade
style_pixies=PIXIES folder used for accent strip 1

Note: This is only a small subset of the available blade profile parameters. Many other keys also exist for things like clashes, lockup, drag, stab, accents, fades, and additional strip behavior.

Color Profile Keys (inside [color=N] in colors.txt)

KeyWhat It Controls
cname=Color profile name
color=Main blade color (R,G,B or R,G,B,W)
fcolor=Clash/FoC (Flash on Clash) color
bcolor=Blaster bolt color
lcolor=Lockup color
xcolor=Crystal chamber color
kcolor=Flicker overlay color
ecolor=Effect (FX) color
tcolor=Stab color
dcolor=Drag color
mcolor=FoC channel mixing bitmask
tridentm=Trident delayed channel mixing

Font-Specific Color Overrides

A font folder can contain its own colors.txt that overrides the global color profiles. This is useful when a specific font needs custom colors that don't apply to other fonts.

How the override works

The global colors.txt (root) is loaded first during boot. Then, when a font is activated, if the font folder contains a colors.txt, it's parsed and its [color=N] sections overwrite the corresponding global profiles.

Example:

Root colors.txt:

[color=0]
cname=Standard Blue
color=0,0,255

01-DarthVader/colors.txt:

[color=0]
cname=Vader Red
color=255,0,0

When font 01-DarthVader is active, color profile 0 becomes "Vader Red" instead of "Standard Blue". When you switch to a different font without its own colors.txt, the global "Standard Blue" is restored.

Important: Note: The global color profiles are reloaded during boot, so font-specific overrides only apply while that font is active.

Themes and Profiles

If you're using the theme system, themes can provide their own versions of config.txt, colors.txt, prefs.txt, and special.txt. When a theme is active, the CFX looks for these files in the theme folder first, falling back to the root if they're not found.

This means a theme can define its own complete set of blade profiles and color profiles, independent of the root files.


Changing Profiles at Runtime

You can cycle through profiles while the saber is on using button combinations. The method depends on your spectrum_mode= setting in config.txt:

spectrum_mode=0
ModeBehavior
-1Profile selection disabled
0Next color profile with Aux+Act or Aux+Twist (legacy)
1Next color with Aux+Act, dial color with Aux+Twist
7Next blade profile with Aux+Act, next color with Aux+Twist
8Next color with Aux+Act, next blade profile with Aux+Twist
11Dial color with Aux+Act, dial blade with Aux+Twist
12Dial blade with Aux+Act, dial color with Aux+Twist

(There are 13 modes total — modes 2–6, 9–10 offer various dial/gesture combinations for color and blade selection.)

The spectrum_combo= key controls which button combinations are active:

ValueActive Combos
0None
1Aux+Act only
2Aux+Twist only
3Both Aux+Act and Aux+Twist

When you change profiles at runtime, the new selection is automatically saved to prefs.txt when the saber powers off.


A Practical Example

Here's a complete setup with 2 blade profiles, 2 color profiles, and 2 fonts:

config.txt (root)

ledstrip=144
accentstrip=8
spectrum_mode=7
spectrum_combo=3

[profile=0]
pname=Standard
flks=60
flkd=25
style_pon=1
style_poff=1
style_grafx1=1
style_pixies=1

[profile=1]
pname=Unstable
flks=20
flkd=60
style_pon=3
style_poff=2
style_grafx1=2
style_pixies=2

colors.txt (root)

[color=0]
cname=Jedi Blue
color=0,0,255
fcolor=255,255,255
lcolor=200,200,255
xcolor=0,50,200

[color=1]
cname=Sith Red
color=255,0,0
fcolor=255,200,0
lcolor=255,100,0
xcolor=255,0,50

1-LukeSkywalker/font_config.txt

## Force blue Jedi colors and standard blade on this font
start_color=0
start_blade=0

2-KyloRen/font_config.txt

## Force red Sith colors and unstable blade on this font
start_color=1
start_blade=1

2-KyloRen/colors.txt (optional font-specific override)

[color=1]
cname=Kylo Unstable Red
color=255,10,0
fcolor=255,150,0
lcolor=255,80,0
xcolor=200,0,0

Result


Quick Reference

File Locations

FileLocationPurpose
config.txtSD rootBlade profile definitions ([profile=N]), global settings
colors.txtSD rootGlobal color profile definitions ([color=N])
colors.txtFont folderFont-specific color overrides (overwrites global)
font_config.txtFont folderstart_blade=, start_color=, per-font overrides
prefs.txtSD rootAuto-saved last-used profiles per font

Profile Resolution Flow

Font loads
  → Check font_config.txt for start_blade= / start_color=
  → If either value is not -1: use that profile
  → If it is -1 or omitted: use last-saved from prefs.txt
  → If no prefs: use profile 0
  → If font has colors.txt: override global color profiles
  → Apply blade profile + color profile

Key Config Keys

# In config.txt:
[profile=N]              # Blade profile section (N = 0–31)
spectrum_mode=N         # Profile selection method (-1 to 12)
spectrum_combo=N        # Button combo activation (0–3)
start_blade=N           # Global forced blade profile at boot

# In colors.txt:
[color=N]                # Color profile section (N = 0–31)
start_color=N           # Global forced color profile at boot

# In font_config.txt:
start_blade=N           # Force blade profile for this font (-1 = don't force)
start_color=N           # Force color profile for this font (-1 = don't force)

Happy profiling!