Build your own Pixling from scratch using JSON animations designed for the Glyph Matrix.
Pixlings are small animated creatures that live inside your Glyph Matrix. They're built from JSON animation files and support multiple states — idle, notification, charging, and more. If you're comfortable working directly with the LED matrix, this method gives you complete control over how your Pixling moves and glows.
Build your Pixling animations using the Glyph Matrix Editor by pauwma. It lets you work directly with the glyph matrix and control the brightness of every LED.
.json file.
Every Pixling must include a pack.json file in the root of the zip. The pack.json supports optional metadata fields that enable enhanced pack management features.
{
"name": "Doze",
"subtitle": "Sleepy, gentle presence",
"pixlings": [
{
"name": "Doze",
"subtitle": "Sleepy, gentle presence",
"description": "Calm and heavy-eyed, he often drifts into sleep.",
"defaultIdleAnimation": "TeddyBear_Idle_Loop.json",
"animations": {
"Idle": [
"TeddyBear_Idle_Enter.json",
"TeddyBear_Idle_Loop.json",
"TeddyBear_Idle_Blink.json"
],
"Notification": [
"TeddyBear_Enter_Bell.json",
"TeddyBear_Loop_Bell.json",
"TeddyBear_Exit_Bell.json"
],
"Charging": [
"TeddyBear_Enter_Charging.json",
"TeddyBear_Loop_Charging.json",
"TeddyBear_Exit_Charging.json"
],
"LowBattery": [
"TeddyBear_Enter_LowBattery.json",
"TeddyBear_Loop_LowBattery.json",
"TeddyBear_Exit_LowBattery.json"
],
"Motion": [ "TeddyBear_Motion.json" ],
"Music": [ "TeddyBear_Music.json" ]
}
}
]
}
{
"name": "Elysium Starter Pack",
"subtitle": "Official starter collection",
"author": "Elysium Studios",
"version": "1.0.0",
"description": "A curated collection of 5 adorable pixlings to get you started.",
"created": "2026-03-29",
"updateUrl": "https://example.com/elysium-starter-pack",
"pixlings": [
{
"name": "Neely",
"subtitle": "Curious and playful",
"description": "A bouncy friend who loves notifications.",
"defaultIdleAnimation": "Neely_Idle_Loop.json",
"animations": { ... }
},
{
"name": "Doze",
"subtitle": "Sleepy, gentle presence",
"description": "Calm and heavy-eyed, he often drifts into sleep.",
"defaultIdleAnimation": "Doze_Idle_Loop.json",
"animations": { ... }
}
]
}
Pack Metadata Benefits:
| Field | Required | Description |
|---|---|---|
name |
✅ Yes | Pack name (shown as tab title if metadata present) |
subtitle |
✅ Yes | Short description of the pack |
pixlings |
✅ Yes | Array of Pixling definitions |
author |
⚪ Optional | Pack creator name (enables pack tab) |
version |
⚪ Optional | Pack version (e.g., "1.0.0", enables pack tab) |
description |
⚪ Optional | Detailed pack description (enables pack tab) |
created |
⚪ Optional | Creation date (e.g., "2026-03-29") |
updateUrl |
⚪ Optional | URL for future pack updates |
All animation states support optional Enter / Loop / Exit transitions. The system automatically detects these based on filename patterns:
| Filename Pattern | Type | Behavior |
|---|---|---|
*_Enter* |
Enter | Plays once when the state begins |
*_Loop* |
Loop | Repeats until the state ends |
*_Exit* |
Exit | Plays once when the state ends |
| No pattern | Loop (default) | Treated as a loop animation |
_enter, _loop, or _exit. Files without these patterns are treated as loop animations. You can include multiple files of each type — they'll play in sequence.
// Full Enter → Loop → Exit pattern "Idle": [ "Unicorn_Idle_Enter.json", // Plays once at start "Unicorn_Idle_Loop.json", // Loops continuously "Unicorn_Idle_Exit.json" // Plays when leaving Idle ] // Loop only (no enter/exit) "Music": [ "ghost_music.json" ] // Multiple loop variations (all treated as loop) "Idle": [ "Cactus_Idle_Breathing.json", "Cactus_Idle_Blink.json" ] // Enter + multiple loops + Exit "Charging": [ "Bear_Enter_Charging.json", "Bear_Loop_Charging_A.json", "Bear_Loop_Charging_B.json", "Bear_Exit_Charging.json" ]
Pixlings supports six animation states. All states support the Enter / Loop / Exit pattern.
| State | Enter/Loop/Exit | Notes |
|---|---|---|
Idle |
✅ | Default state when nothing else is happening |
Notification |
✅ | Triggered by incoming notifications |
Charging |
✅ | Active while device is charging |
LowBattery |
✅ | Active when battery is below threshold |
Motion |
✅ | Triggered by device shake/movement |
Music |
✅ | Active during media playback |
Put pack.json in the root of the zip. All animation files go inside an animations/ subfolder. Filenames in pack.json are plain names — no folder prefix needed.