Caramelldansen in Terminal 🍭✨
High-performance, flicker-free, 24-bit TrueColor Caramelldansen terminal player featuring Dansen Loop mode!
Built with a modular Platform Abstraction Layer (PAL) and Audio Master Clock architecture, providing zero-configuration, cross-platform audio and rendering on macOS, Windows, and Linux.
Features
- 24-bit TrueColor Rendering:
halfblock(Default): Uses half-block characters (▀,▄) with 24-bit TrueColor for near-square pixels and stunning visual fidelity.color-ascii: Classic ASCII character brightness ramp combined with full RGB color.braille: High-resolution Unicode Braille (2x4 dot matrix) rendering.ascii: Nostalgic monochrome ASCII shading.
- Dansen Loop Mode (Infinite Loop):
- Starts directly in the iconic Mai & Mii chorus dance sequence and loops seamlessly without stutter or glitches.
- Toggle between the dance loop and the full music video using the
Lkey or CLI flags.
- Audio Master Clock Engine:
- Video rendering is strictly synchronized to hardware audio playback time for flawless rhythm alignment and zero audio-video drift.
- Zero-CPU Binary Cache Engine (CDBP v1):
- Streams from a pre-rendered, zlib-compressed RGB binary container (
caramell_dansen.bin) for <1% CPU consumption and instantaneous seek times.
- Streams from a pre-rendered, zlib-compressed RGB binary container (
- Automatic Asset Provisioning:
- Installs in seconds as a featherlight (<40 KB) PyPI wheel! Video and audio assets are automatically downloaded on first launch with live progress bar and MD5 verification.
- Flicker-Free Terminal Experience:
- Uses Alternate Screen Buffer (
\033[?1049h), cursor hiding, Win32 VT100 processing, and non-blocking I/O.
- Uses Alternate Screen Buffer (
- Responsive Sizing & Interactive Scrubber:
- Automatically respects 16:9 aspect ratio, centers video in any terminal window, and renders an adaptive live HUD status bar.
Controls
| Key | Action |
|---|---|
| Space | Pause / Resume |
| M | Cycle Render Mode (halfblock → color-ascii → braille → ascii) |
| C | Toggle Color Mode (TrueColor RGB ↔ Monochrome) |
| L | Toggle Dansen Loop mode |
| Right Arrow ($\rightarrow$) | Seek forward 5 seconds |
| Left Arrow ($\leftarrow$) | Seek backward 5 seconds |
| R | Restart playback |
| Q / Esc | Quit cleanly |
Installation & Quick Start
Option 1: Install from PyPI (Recommended)
pip install caramelldansen
Run directly from any terminal:
caramelldansen
Option 2: Run from Source
# Clone the repository
git clone https://github.com/Ohualtex/caramelldansen.git
cd caramelldansen
# Install dependencies
pip install -r requirements.txt
# Start playback (starts directly in Dansen Loop mode)
python main.py
# Play full music video from start
python main.py --full
# Select rendering mode
python main.py --mode color-ascii
CLI Options
usage: caramelldansen [-h] [--mode {halfblock,color-ascii,braille,ascii}] [--no-color] [--loop] [--full] [--no-audio] [--build-cache]
options:
-h, --help show this help message and exit
--mode {halfblock,color-ascii,braille,ascii}
Rendering mode (default: halfblock)
--no-color, --mono Disable TrueColor rendering and run in monochrome
--loop Start in infinite Dansen Loop mode (default: True)
--full Play full music video from start to finish
--no-audio Mute audio and run on internal clock
--build-cache Force rebuild CDBP binary cache
Terminal Display Tips
macOS Terminal.app (Gapless Half-Block Display)
The default macOS Terminal.app adds vertical line leading (font spacing) between character rows. For a gapless, seamless display:
- Open Terminal → Settings (
Cmd + ,) → Profiles → Text. - Click Change... under Font.
- Set the Line Spacing slider to
0.80. - Alternatively, press
Min-player to switch to Braille mode (which is naturally immune to line spacing), or use modern GPU-accelerated terminals like Ghostty, iTerm2, or Kitty.
Windows Terminal
Runs out of the box in Windows Terminal, PowerShell, and Command Prompt with 24-bit TrueColor enabled via Win32 Virtual Terminal Processing.
License
MIT License. See LICENSE for details.
Metadata
Release files for caramelldansen 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| caramelldansen-1.0.1.tar.gz | 24.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| caramelldansen-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.2 kB
Release files / caramelldansen-1.0.1.tar.gz
| Download URL | caramelldansen-1.0.1.tar.gz |
|---|---|
| Size | 24.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a149d2eb58f03ef7743472727c509c29a021680beadf25a27239118a7fffa58
|
|
BLAKE2b-256 checksum How to use checksums |
421513c3e3ab844f1368316f830bcd519c31b5bd45ec01c59c0ee5f75c2695bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / caramelldansen-1.0.1-py3-none-any.whl
| Download URL | caramelldansen-1.0.1-py3-none-any.whl |
|---|---|
| Size | 34.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6317c25f8029df120dca56d1e5d98ef42b87950fe519f45a22039cca73af05d7
|
|
BLAKE2b-256 checksum How to use checksums |
0b22cbc170f5e6f652aa0d7819c9feb9da1da05ec0b9a908868e71581edba3f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|