This week I've been rewriting (in Zig) the position-based dynamics & cellular-automata engines used for the cloth sim in my #DANZA art project (check the hashtag for older WIP)... Still endless tweaking, but could already stare at this beauty for hours, literally!

(And of course, I'm also again "dogfooding" http://thi.ng/genart-api for defining/handling parameters and animation timing...)

#GenerativeArt #AlgorithmicArt #CellularAutomata #Physics #Simulation #GenArtAPI #Zig #WASM #WebAssembly #NoAI

Published another couple of new versions of https://thi.ng/genart-api, mainly involving updates to the Layer (layer.com) platform adapter, adding config options and minor quality of life improvements (e.g. handling of private [aka artist-only] params)

I also updated the readme, clarifying the current versioning scheme: For ease of use and to avoid guess work about compatibility, currently all packages in this repo are published using a shared version identifier. With the release of v1.0.0, this will switch to independent semantic versioning, with support package versions aligned to the major versions of the main API.

After over a year of development, dogfooding it and using it successfully without any friction for already a dozen art pieces/projects, I'd actually consider the main API to be pretty much v1.0.0 already (even though it's current v0.33.0). So the switch will happen soon!

If you've have any issues or feature requests, please file them via the issue tracker (or write back here to discuss)! Thanks! :)

#GenArtAPI #GenerativeArt #ProceduralArt #AlgorithmicArt #OpenSource #TypeScript #JavaScript

thi.ng/genart-api

thi.ng/genart-api

Just pushed a new version of https://thi.ng/genart-api (v0.31.0) with these updates:

- (Art) platform adapters can now have an optional `.configure({...})` method to customize platform-specific behaviors. To ensure future portability of your artwork (between different art platforms), calls to this method should be done from outside the artwork, i.e. via an additional `<script>` in the HTML wrapper.
- Of the provided platform adapters, so far only the Layer adapter supports any options, but I'm also working on a new one for my website which will require other options and there are more use cases for which this will come in handy without adding any complexity to the overall system...
- Updated param change handling in the Layer platform adapter, which now supports auto-reload for params whose update behavior has been set to `reload`. More info here: https://docs.thi.ng/genart-api/adapter-layer/#parameter-update-behavior

#GenArtAPI #GenerativeArt #ProceduralArt #AlgorithmicArt #OpenSource #TypeScript #JavaScript

thi.ng/genart-api

thi.ng/genart-api

Just pushed an update for https://thi.ng/genart-api (v0.29.0) which now supports dynamic switching of time providers. This is useful for situations where you want to switch from realtime animation to offline-based timing, e.g. to export high-resolution image sequences and give the browser time to grab & encode each frame and reduce related memory pressure...

For example, your animation loop can now have something like this below to switch time providers based on a certain start frame for recording:

```
$genart.setUpdate((time, frame) => {
if (frame === 1000) {
// switch to non-realtime animation:
// wait 250ms between frames w/ 60 fps reference frame rate
// start frame for new time provider is current frame + 1
$genart.setTimeProvider(
$genart.time.offline(250, 60, frame + 1)
);
}
// actual animation logic
// ...
return true;
});
```

#GenArtAPI #GenerativeArt #ProceduralArt #AlgorithmicArt #OpenSource #JavaScript #typescript

thi.ng/genart-api

thi.ng/genart-api

#PSA Since I've just been asked again if I could use more topic-specific accounts and not mix my photography with other topics — Unfortunately, nope! I'm on a single user managed instance and cannot create new accounts on this server nor do I want to create an account for every single topic I'm interested in or posting about. However, you can filter my posts by hashtags, which I'm trying to use consistently (also for my own purposes)...

Hashtags can be browsed individually, subscribed to (via Mastodon) or even syndicated via RSS, e.g.

Browse:
http://mastodon.thi.ng/@toxi/tagged/LandscapePhotography

RSS:
http://mastodon.thi.ng/@toxi/tagged/LandscapePhotography.rss

My most commonly used tags are:

Photography:
#LandscapePhotography #NaturePhotography #NoirCountry (my B&W photos) #POV #Hiking

Open source projects:
#ThingUmbrella #ZigThing #GenArtAPI #TypeScript #Ziglang #WASM #WebAssembly #Forth #OpenSource #ProgLang

Art:
#Art #GenerativeArt #AlgorithmicArt #ProceduralArt #KineticArt #Exhibition

Music:
#Music4Coding

AI relatated:
#AI #LLM

Education/research:
#Edu #Research

Hope that helps!

Karsten Schmidt (@toxi@mastodon.thi.ng)

2.12K Posts, 874 Following, 3.5K Followers · Intoxicating, non-toxic! 27+ years of interdisciplinary opensource R&D, software dev, computational art/design/craft/edu, landscape/nature photography, kallitypes, salt prints, electronic music. Trying to do meaningful work. Creator & maintainer of the thi.ng ecosystem of 200+ code libraries. Except boosts/linked content, all published media is my own work & copyright by me. Most posts delete >2 months. Available for consulting/commissions. Searchable. he/him #ThingUmbrella #TypeScript #Zig #WASM #Forth #LandscapePhotography #AltProcess #Kallitype #Geometry #Graphics #GenerativeArt #PermaComputing #Synth #Music4Coding #Hiking

Mastodon Glitch Edition

Various thi.ng updates, bug fixes, additions and new version of https://github.com/thi-ng/zig-thing/ — now fully compatible with current Zig v0.14.1

On a more diary/devlog note: I also updated several of my Zig based work-in-progress art pieces to the latest version (some of them not touched in 2+ years) and it's so good to see how the https://thi.ng/wasm-api toolchain has been holding up with various breaking Zig changes and also how this setup simplifies creating hybrid Zig/TypeScript projects (e.g. for using DOM/WebGL from Zig). Related, I also want to mention once more the #GenArtAPI Zig WebAssembly bindings[1] (updated a few weeks ago), which add another layer of flexibility & boilerplate reduction for generative/procedural/algorithmic art projects...

I will be attempting yet another few takes creating a video overview & mini-workshop/tutorial about https://thi.ng/genart-api, hopefully also touching on these aspects...

[1] https://github.com/thi-ng/genart-api/tree/main/packages/wasm

#ThingUmbrella #Zig #Ziglang #WebAssembly #WASM #GenArtAPI #Art #GenerativeArt #AlgorithmicArt

#ReleaseMonday — New version (v0.27.0) of https://thi.ng/genart-api, a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:

This version features an overhaul of the platform provided PRNG (pseudo-random number generator) handling and makes it easier to create multiple PRNGs for artworks which require/desire them...

Related section in the README:
https://github.com/thi-ng/genart-api/blob/main/README.md#determinism--prng-provision

Also, just as a reminder, the project has:

- no external dependencies
- adapters for 3 art platforms (EditArt, fxhash, Layer)
- 6 example projects
- testing/dev sandbox with two parameter editors
- WebAssembly bindings & demo (currently for #Zig only)

Happy coding! :)

#GenArtAPI #GenerativeArt #AlgorithmicArt #ProceduralArt #Art #OpenSource #Parameters #Interoperability #TypeScript #JavaScript #WebAssembly #WASM #Ziglang

thi.ng/genart-api

thi.ng/genart-api

Another day, another #GenArtAPI release (v0.25.0):

This update mainly features the new `@genart-api/wasm` package, providing Zig & TypeScript bindings for core GenArtAPI functionality (i.e. so far mostly parameter handling).

This WASM bridge/integration is designed as an API module for the https://thi.ng/wasm-api toolchain. Installation & build instructions are in the readme.

New package homepage:
https://github.com/thi-ng/genart-api/tree/main/packages/wasm

Example project (w/ param editor):
https://demo.thi.ng/genart-api/param-editors/?url=https%3A%2F%2Fdemo.thi.ng%2Fgenart-api%2Fzig-test%2F

Example Zig source code:
https://github.com/thi-ng/genart-api/blob/main/examples/zig-test/zig/main.zig

#GenArtAPI #GenerativeArt #Art #OpenSource #Parameters #Interoperability #TypeScript #WebAssembly #WASM #Zig #Ziglang

Generic, modular, extensible API bridge and infrastructure for hybrid JS & WebAssembly projects

thi.ng/wasm-api

New release of https://thi.ng/genart-api (v0.24.0) — a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:

This release contains quite a few new features, as well as several important fixes for bugs which were accidentally introduced in the two most recent versions...

- extracted the debug time provider & FPS overlay to separate package
- updated `bigint` param handling (esp. randomization)
- added `collector` and `iteration` metadata accessors
- updated platform adapters (esp. the #fxhash one)
- fixed image & ramp param handling
- added a bunch of utilities to core API to deduplicate code in various adapters
- updated/fixed examples & docs
- added more tests (and updated core API to be more testable outside the browser)

All changes since v0.21.0:
https://github.com/thi-ng/genart-api/compare/v0.21.0...v0.24.0

🎉

#GenArtAPI #GenerativeArt #Art #OpenSource #Parameters #Interoperability #TypeScript #JavaScript

thi.ng/genart-api

thi.ng/genart-api

#ReleaseFriday (1st release cycle of 2025) 🎉 — New additions & updates to https://thi.ng/genart-api, a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:

- Added https://fxhash.xyz platform adapter (incl. support & adaptations for 10 of the 17 built-in GenArtAPI param types)
- Added `bigint` & `binary` data param types
- Updated parameter type definitions & factories (date, datetime, time, numlist, strlist, text, vector)
- Ensure any given default values are valid (and can be coerced)
- Added MurmurHash3 (128 bit version) functions (e.g. seed PRNGs)
- Added tests for all parameter types (factory functions & implementations)
- Added tests for utility functions
- Added GitHub actions (running tests)
- Various API docs updates, clarifications & fixes
- Update/refactor EditArt & Layer platform adapters
- Updated main & adapter readmes

New adapter package `@genart-api/adapter-fxhash`:
https://github.com/thi-ng/genart-api/tree/main/packages/adapter-fxhash

Commits since last release:
https://github.com/thi-ng/genart-api/compare/v0.20.0...v0.21.0

#GenArtAPI #ComputationalArt #AlgorithmicArt #GenerativeArt #Art #OpenSource #Parameters #Interoperability #TypeScript #JavaScript #Genuary

thi.ng/genart-api

thi.ng/genart-api