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.0
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.0.tar.gz | 24.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| caramelldansen-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.4 kB
Release files / caramelldansen-1.0.0.tar.gz
| Download URL | caramelldansen-1.0.0.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4e0453c27088090499e09fc9ee7b7359db3eebec01fe562c7d3973d3113690d8
|
|
BLAKE2b-256 checksum How to use checksums |
9cb4aeaaa1ac164d7aeb4aea78028ad17dfa055b0916bd48927acff3ca27677e
|
| 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.0-py3-none-any.whl
| Download URL | caramelldansen-1.0.0-py3-none-any.whl |
|---|---|
| Size | 34.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9dd326068019ac031342198be7deee805361b527647bbc17e473f0822181ef42
|
|
BLAKE2b-256 checksum How to use checksums |
a11c6282c9b2a81f5eb1f64c94aadaf4ff8f3dbe1b88f7e26ee76800297a1fcd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|