Downloads · 30 days
0
FNAYNA/easey-glyph
easey-glyph is a unconditional image generation model from FNAYNA. Use it for the unconditional image generation task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Initially released as a Stable Diffusion experiment, the Effortless Audio-Synesthesia Experience (EASE), was my first semi-deep trip into serious audio reactive visuals. It could have its place, but definitely is too…
Downloads · 30 days
0
Access
Public
Updated May 16, 2026
Repo size
1.9 GB
Likes
0
Public
Click a slice to open those files.
.safetensors1.9 GB · 100%
From the Hugging Face model README
Initially released as a Stable Diffusion experiment, the Effortless Audio-Synesthesia Experience (EASE), was my first semi-deep trip into serious audio reactive visuals. It could have its place, but definitely is too heavy for many non-CUDA machines.
Enter EASEy-GLYPH. The core design goal was to make real-time generative visuals accessible on Apple M1 hardware, which I quickly discovered was not going to be any typical diffusion-based solution. The entire architecture works backwards from that constraint: a 34M-parameter flow-matching model generates 32x32 glyph grids (not pixels) that render into stylized, low-resolution visuals at 60fps on modest hardware. The low resolution isn't a limitation - it's an intentional aesthetic choice that produces chunky, graphic visuals with real transparency and color depth. An optional "super-resolution" CNN can upscale to 256x256 when the hardware budget allows.
Read more about the app in its repo. This HF repo is for the models I'm including so you can try it out right away! Training your own models is relatively quick as well with a decent GPU, with scripts in the app repo.
NOTE: LLM generated content below
Each variant ships with two FlowUNet models:
Both model types share the same architecture (34M params) and are interchangeable at load time. The realtime models were trained with random audio labels (not semantic features) fixed per-image, so the model learns to distinguish conditioned vs unconditioned generation. At inference, real audio features are z-score normalized into the same range, and CFG amplifies the difference — the reactivity is emergent, not a learned "bass = dark" mapping.
For live performance, use the realtime models.
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-abstract-v2.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-abstract-v2-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-abstract-v2.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-nature.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-nature-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-nature.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-ukiyoe.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-ukiyoe-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-ukiyoe.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-albums.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-albums-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-albums.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-pixel.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-pixel-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-pixel.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-botanical.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-botanical-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-botanical.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
| File | Type | Params | Description |
|---|---|---|---|
easey-glyph-flow-darkpsy.safetensors | FlowUNet | 34M | Base (unconditional) |
easey-glyph-flow-darkpsy-realtime.safetensors | FlowUNet | 34M | Realtime (CFG, audio-reactive) |
easey-glyph-superres-darkpsy.safetensors | SuperRes | 779K | 32→256 upscaler (optional) |
Each .safetensors file has a companion .json sidecar with model config and training metadata.
# Clone and install
git clone https://github.com/kevinraymond/easey-glyph.git
cd easey-glyph
uv sync
# Download models
uv run pip install huggingface-hub
huggingface-cli download kevinraymond/easey-glyph --local-dir ./models
# Run with realtime model (recommended for live performance)
uv run python -m easey_glyph \
--checkpoint models/easey-glyph-flow-abstract-v2-realtime.safetensors
# Add optional super-resolution (trades fps for sharper output)
uv run python -m easey_glyph \
--checkpoint models/easey-glyph-flow-abstract-v2-realtime.safetensors \
--superres models/easey-glyph-superres-abstract-v2.safetensors
Opens a browser UI at http://localhost:8420 with:
Images are encoded as 32x32 grids of 16-channel "glyphs":
This compact representation enables a small model to generate diverse, colorful outputs with real transparency (Porter-Duff compositing).
A U-Net with time embedding for conditional flow matching (CFM). Generates glyph grids from Gaussian noise in 8 Euler steps.
The realtime variants are trained with classifier-free guidance (20% unconditional dropout) to enable CFG-scaled audio conditioning at inference time.
An optional tiny CNN that upscales 32x32 rendered pixels to 256x256 using 3 PixelShuffle stages (8x). Global skip connection from bilinear upscale ensures quality baseline. Without SuperRes, the system renders at native glyph resolution with bilinear+nearest upscaling — still visually compelling and significantly faster on constrained hardware.
<p align="center"> <img src="images/pipeline.png" width="800"><br> <em>SuperRes pipeline: original image → glyph grid encoding → trained upscale back to high resolution</em> </p>FlowUNet models were trained with vanilla Conditional Flow Matching:
MSE(model(t, x_t), x_1 - x_0) where x_t = (1-t)*x_0 + t*x_1Realtime models were fine-tuned from base checkpoints with fixed per-image audio labels and 20% unconditional dropout for classifier-free guidance.
SuperRes models trained for 500 kimg on rendered glyph images paired with original source crops.
Models are stored in safetensors format (inference weights only, no optimizer state). Each model file has a companion .json with:
{
"architecture": "FlowUNet",
"model": {
"image_size": 32,
"in_channels": 16,
"base_channels": 96,
...
},
"training": {
"kimg": 15000.0,
"step": 234375
},
"num_params": 34000000
}
MIT