Think of Charming as Lodash for graphics, or D3 for computational art.
Charming, short for Charming Computing, is a free, open-source data-driven language for creative coding and ASCII art with high performance. It has a declarative, concise, yet expressive API inspired by G2.js, D3.js and P5.js.
- What is Charming? - A brief introduction to Charming
- Why Charming? - The inspiration and motivation behind Charming
- Get Started - Installation instructions and quick examples
- Examples - Explore a collection of Charming examples
- Gallery - Explore a collection of Charming projects
- API Index - All the APIs, with links to their docs
- GitHub - Source code and issues
Charming is built on the observation that both visualization and generative art are, to some extent, data-driven.
Therefore, it provides a novel flow-based API for processing data, appending and transforming shapes. Charming also supports batch rendering of 2D primitives using a WebGL renderer, and defining some GLSL functions to offload expensive computations to the GPU. Additionally, a terminal renderer for ASCII art, embedded in JavaScript, utilizes a software rasterizer written in Rust and compiled to WASM, aiming to achieve high performance. Charming also puts strong emphasis on being extensible, composable and beginner-friendly.
My hope with Charming is that you spend less time wrangling the machinery of programming and more time "using computing to tell stories". Or put more simply: With Charming, you'll express more, and more easily.
Charming is released under the MIT License.
