photog.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A place for your photos and banter. Photog first is our motto Please refer to the site rules before posting.

Administered by:

Server stats:

244
active users

#genartapi

0 posts0 participants0 posts today
Karsten Schmidt<p>Various thi.ng updates, bug fixes, additions and new version of <a href="https://github.com/thi-ng/zig-thing/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">github.com/thi-ng/zig-thing/</span><span class="invisible"></span></a> — now fully compatible with current Zig v0.14.1</p><p>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 <a href="https://thi.ng/wasm-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api</span><span class="invisible"></span></a> 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 <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> Zig WebAssembly bindings[1] (updated a few weeks ago), which add another layer of flexibility &amp; boilerplate reduction for generative/procedural/algorithmic art projects...</p><p>I will be attempting yet another few takes creating a video overview &amp; mini-workshop/tutorial about <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a>, hopefully also touching on these aspects...</p><p>[1] <a href="https://github.com/thi-ng/genart-api/tree/main/packages/wasm" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/packages/wasm</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/Zig" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zig</span></a> <a href="https://mastodon.thi.ng/tags/Ziglang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Ziglang</span></a> <a href="https://mastodon.thi.ng/tags/WebAssembly" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebAssembly</span></a> <a href="https://mastodon.thi.ng/tags/WASM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WASM</span></a> <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/AlgorithmicArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AlgorithmicArt</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/ReleaseMonday" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReleaseMonday</span></a> — New version (v0.27.0) of <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a>, a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:</p><p>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...</p><p>Related section in the README:<br><a href="https://github.com/thi-ng/genart-api/blob/main/README.md#determinism--prng-provision" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/b</span><span class="invisible">lob/main/README.md#determinism--prng-provision</span></a></p><p>Also, just as a reminder, the project has:</p><p>- no external dependencies<br>- adapters for 3 art platforms (EditArt, fxhash, Layer)<br>- 6 example projects<br>- testing/dev sandbox with two parameter editors<br>- WebAssembly bindings &amp; demo (currently for <a href="https://mastodon.thi.ng/tags/Zig" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zig</span></a> only)</p><p>Happy coding! :)</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/AlgorithmicArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AlgorithmicArt</span></a> <a href="https://mastodon.thi.ng/tags/ProceduralArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ProceduralArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/WebAssembly" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebAssembly</span></a> <a href="https://mastodon.thi.ng/tags/WASM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WASM</span></a> <a href="https://mastodon.thi.ng/tags/Ziglang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Ziglang</span></a></p>
Karsten Schmidt<p>Another day, another <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> release (v0.25.0):</p><p>This update mainly features the new `@genart-api/wasm` package, providing Zig &amp; TypeScript bindings for core GenArtAPI functionality (i.e. so far mostly parameter handling).</p><p>This WASM bridge/integration is designed as an API module for the <a href="https://thi.ng/wasm-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api</span><span class="invisible"></span></a> toolchain. Installation &amp; build instructions are in the readme.</p><p>New package homepage:<br><a href="https://github.com/thi-ng/genart-api/tree/main/packages/wasm" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/packages/wasm</span></a></p><p>Example project (w/ param editor):<br><a href="https://demo.thi.ng/genart-api/param-editors/?url=https%3A%2F%2Fdemo.thi.ng%2Fgenart-api%2Fzig-test%2F" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https%3A%2F%2Fdemo.thi.ng%2Fgenart-api%2Fzig-test%2F</span></a></p><p>Example Zig source code:<br><a href="https://github.com/thi-ng/genart-api/blob/main/examples/zig-test/zig/main.zig" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/b</span><span class="invisible">lob/main/examples/zig-test/zig/main.zig</span></a></p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/WebAssembly" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebAssembly</span></a> <a href="https://mastodon.thi.ng/tags/WASM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WASM</span></a> <a href="https://mastodon.thi.ng/tags/Zig" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zig</span></a> <a href="https://mastodon.thi.ng/tags/Ziglang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Ziglang</span></a></p>
Karsten Schmidt<p>New release of <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> (v0.24.0) — a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:</p><p>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...</p><p>- extracted the debug time provider &amp; FPS overlay to separate package<br>- updated `bigint` param handling (esp. randomization)<br>- added `collector` and `iteration` metadata accessors<br>- updated platform adapters (esp. the <a href="https://mastodon.thi.ng/tags/fxhash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fxhash</span></a> one)<br>- fixed image &amp; ramp param handling<br>- added a bunch of utilities to core API to deduplicate code in various adapters<br>- updated/fixed examples &amp; docs<br>- added more tests (and updated core API to be more testable outside the browser)</p><p>All changes since v0.21.0:<br><a href="https://github.com/thi-ng/genart-api/compare/v0.21.0...v0.24.0" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/c</span><span class="invisible">ompare/v0.21.0...v0.24.0</span></a></p><p>🎉</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/ReleaseFriday" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReleaseFriday</span></a> (1st release cycle of 2025) 🎉 — New additions &amp; updates to <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a>, a platform-independent extensible API for browser-based computational/algorithmic/generative art projects:</p><p>- Added <a href="https://fxhash.xyz" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">fxhash.xyz</span><span class="invisible"></span></a> platform adapter (incl. support &amp; adaptations for 10 of the 17 built-in GenArtAPI param types)<br>- Added `bigint` &amp; `binary` data param types<br>- Updated parameter type definitions &amp; factories (date, datetime, time, numlist, strlist, text, vector)<br>- Ensure any given default values are valid (and can be coerced)<br>- Added MurmurHash3 (128 bit version) functions (e.g. seed PRNGs)<br>- Added tests for all parameter types (factory functions &amp; implementations)<br>- Added tests for utility functions<br>- Added GitHub actions (running tests)<br>- Various API docs updates, clarifications &amp; fixes<br>- Update/refactor EditArt &amp; Layer platform adapters<br>- Updated main &amp; adapter readmes</p><p>New adapter package `@genart-api/adapter-fxhash`:<br><a href="https://github.com/thi-ng/genart-api/tree/main/packages/adapter-fxhash" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/packages/adapter-fxhash</span></a></p><p>Commits since last release:<br><a href="https://github.com/thi-ng/genart-api/compare/v0.20.0...v0.21.0" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/c</span><span class="invisible">ompare/v0.20.0...v0.21.0</span></a></p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/ComputationalArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ComputationalArt</span></a> <a href="https://mastodon.thi.ng/tags/AlgorithmicArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AlgorithmicArt</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/Genuary" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Genuary</span></a></p>
Karsten Schmidt<p>Another new release of <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> (v0.20.0), due to some urgent additions &amp; updates of partially outdated documentation and refactoring/cleaning up of some parameter types. This project already contains more docs than code and because things are moving so fast, I forgot to update some parts... (Sorry for any confusion caused...)</p><p>Other notable updates:</p><p>- Simplified the core API's param value getter for obtaining time-based or randomized values (please check docs[1])<br>- Updated vector param definition<br>- Added a `.configure()` method for the EditArt platform adapter to allow manual selection of adapted params (to override the default auto-selection)[2]</p><p>You can see all the changes since the last release here:<br><a href="https://github.com/thi-ng/genart-api/compare/v0.19.0...v0.20.0" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/c</span><span class="invisible">ompare/v0.19.0...v0.20.0</span></a></p><p>[1] <a href="https://docs.thi.ng/genart-api/core/interfaces/GenArtAPI.html#getparamvalue-1" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">docs.thi.ng/genart-api/core/in</span><span class="invisible">terfaces/GenArtAPI.html#getparamvalue-1</span></a><br>[2] <a href="https://github.com/thi-ng/genart-api/tree/main/packages/adapter-editart#selection" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/packages/adapter-editart#selection</span></a></p><p><a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/ReleaseSunday" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReleaseSunday</span></a> and already second <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> update this week, plus the addition of a new platform adapter package for publishing artwork to <a href="https://editart.xyz" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">editart.xyz</span><span class="invisible"></span></a> (ready ahead of <a href="https://mastodon.thi.ng/tags/Genuary2025" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Genuary2025</span></a> 😉)... (cc/ <span class="h-card" translate="no"><a href="https://genart.social/@pifragile" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>pifragile</span></a></span>)</p><p>This new release (all packages at v0.19.0 now) also includes several updates to API docs and adapter readme's:</p><p>- <a href="https://github.com/thi-ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">github.com/thi-ng/genart-api</span><span class="invisible"></span></a><br>- <a href="https://github.com/thi-ng/genart-api/tree/main/packages/adapter-editart" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/packages/adapter-editart</span></a><br>- <a href="https://github.com/thi-ng/genart-api/tree/main/packages/adapter" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/packages/adapter</span></a></p><p>All implementations are WIP (but fully functional, to the best of my knowledge!). If there's demand, I'm considering adding more parameter type adaptations also for the EditArt adapater (e.g. to support vector/XY params, as already done for the Layer adapter...)</p><p>Since I've been told "people/artists don't read anymore", tonight I'm starting to record a video walkthrough, wish me luck! :)</p><p><a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>Just been having a long interesting conversation about how <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> can also become very interesting from a digital preservation perspective:</p><p>Right now a lot of contemporary browser-based computational/generative art pieces are somewhat bound to the lifespan of the art platforms/websites they've been published at/for (irrespective if the pieces themselves are hosted on IPFS or similar supposed longer-term storage). Most of these works are coded ad-hoc against the APIs provided by these respective individual platforms, each only optimizing for their own uses/biases. However, developing/refactoring such works to use an open source platform-independent API (i.e. <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a>) with any platform specifics handled via very easy-to-replace (and to develop) plugins/adapters, then at least potentially extends the lifespan &amp; adaptability of these works by making it much easier to migrate them to new platforms/environments/emulators. In most cases, this migration can be done purely via configuration (replacing a couple of library `&lt;script&gt;` tags in the HTML wrapper), rather than having to make any code changes in the artwork itself.</p><p>(All this is acknowledging, but also ignoring here the much larger looming preservation issue related to the general dependency on web browsers and bitrotting web tech... Still every little helps! 😉)</p><p><a href="https://mastodon.thi.ng/tags/DigitalPreservation" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DigitalPreservation</span></a> <a href="https://mastodon.thi.ng/tags/Adaptation" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Adaptation</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a></p>
Karsten Schmidt<p>New release of <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a>, a modular cross-platform API/SDK for browser-based computational/algorithmic/generative art projects, helping to reduce artists' efforts to adapt work for different art platforms/environments/uses/workflows.</p><p>Main new v0.18.0 additions:</p><p>- The param editor reference implementation now groups parameters by their declared group and sorts them by given order (both optional)<br>- The `@genart-api/adapter-layer` package supports adaptations/translations for more param types, incl. vectors, which are not yet natively supported by that platform. E.g. vectors will be transparently represented as multiple, separate numeric params on the platform side, but your artwork is blissfully unaware of this and still only would deal with vectors. The platform adapter does all the reconcilation and handling of param changes...<br>- Started adding tests<br>- Updated API docs &amp; readme's</p><p>As always, feedback highly appreciated — this project is in active development...</p><p>I'm aware, the target audience for this larger project is quite limited, but the benefits are real (and palpable!), not just for artists in this field (but especially for them!)... I'll do my best to illustrate the (recurring) problems being solved here, demystify some of the concepts and squeeze in recording a short(ish) video showing how to develop a small project from scratch using this system/setup and then repurpose it and show related tools still in development...</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/AlgorithmicArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AlgorithmicArt</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/ReleaseFriday" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReleaseFriday</span></a> (the 13th) — New version (v0.17.0) of <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> with the following updates:</p><p>- Added platform adapter IDs for use with external editors/tooling<br>- Updated editors[1] to check for platform adapter &amp; API version compatibility, display warnings if needed...<br>- Added/migrated three different seedable PRNG implementations in API core package (SFC32, XorShift128, XsAdd). These are completely independent and can be used by platform adapters and/or artworks (also multiple instances)<br>- Initial release of first platform adapter for an upcoming art platform (currently invite only)<br>- Restructured all example projects<br>- Updated readme &amp; API docs (<a href="https://docs.thi.ng/genart-api/core/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">docs.thi.ng/genart-api/core/</span><span class="invisible"></span></a>)</p><p>[1] The param editor/sandbox requires your artwork to use the latest version of these packages: `@genart-api/core` and `@genart-api/adapter-urlparams`.</p><p><a href="https://demo.thi.ng/genart-api/param-editors/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/</span></a></p><p>New improved version (of editor) with many more features (incl. variation/preset management) is in the works...</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>Major <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> project updates from this past week:</p><p><a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a></p><p>- Restructured the project as monorepo, splitting out core API and platform adapter(s) as separate packages<br>- Switched package scope from `@thi.ng` to `@genart-api` to highlight project/platform independence (not directly related with other thi.ng projects).<br>- Published new packages: `@genart-api/core` and `@genart-api/adapter-urlparams`<br>- Moved API docs to <a href="https://docs.thi.ng/genart-api/core/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">docs.thi.ng/genart-api/core/</span><span class="invisible"></span></a><br>- Added support for n-dimensional vector parameters and added support in the reference platform adapter and in param editor<br>- Updated all examples &amp; parameter editor. The latter is now only compatible with this latest API version (v0.16.0)<br>- Updated docs/readme</p><p>If you want to find out more, the project readme has _a lot_ more information. Also feel free to get in touch with any questions/proposals!</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>It just dawned on me that I haven't been mentioning five(!) recent <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> updates, all from the past month... 😱</p><p>The latest version (v0.14.0, just released) is largely about an overhaul of messaging related functionality and also addresses use cases related to managing multiple artworks embedded (via `&lt;iframe&gt;`s) in a single document/page (think: online gallery scenarios...)</p><p>If you're already using GenArtAPI message/event listeners in your own artwork, you might have to rename some of them. This commit has the important details:</p><p><a href="https://github.com/thi-ng/genart-api/commit/35b627d7380bad75d280cc1e051ec7ed23aa8995" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/c</span><span class="invisible">ommit/35b627d7380bad75d280cc1e051ec7ed23aa8995</span></a></p><p>Also, the online parameter editors have been updated and are now only working with the latest version of the API, so be sure to update your artwork projects to stay compatible:</p><p>Generic editor harness (for your own compatible artworks):<br><a href="https://demo.thi.ng/genart-api/param-editors/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/</span></a></p><p>Demo (with test artwork):<br><a href="https://demo.thi.ng/genart-api/param-editors/?url=https%3A%2F%2Fdemo.thi.ng%2Fgenart-api%2Fparam-test%2F" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https%3A%2F%2Fdemo.thi.ng%2Fgenart-api%2Fparam-test%2F</span></a></p><p>Other recent changes/additions (in no particular order):</p><p>- added new message types to poll the artwork/API for current state/info<br>- update message names &amp; naming convention<br>- added ability to configure the API behavior/features (also via messaging)<br>- option to emit frame messages w/ current timing/frame info<br>- message broadcasting to multiple GenArtAPI instances/artworks<br>- inject common defaults for optional settings in param specs<br>- fixed date/datetime param handling (in editor)<br>- updated/fixed time providers<br>- updated debug time provider (w/ FPS visualization overlay)<br>- use gzip compression for image param values (in default platform adapter)<br>- added version info<br>- various documentation updates<br>- (WIP) WASM bindings for Zig-based artworks<br>- (WIP) unpublished progress on real platform adapters</p><p>Some of these features are all about enabling new use cases and improving usability of external tooling around artworks adapting GenArtAPI, for example:</p><p>- Ability to broadcast start/stop messages to either individual or all artworks embedded in a page<br>- Ability for the param editor to configure the artwork currently being worked on to emit timing &amp; frame information (which then can be integrated in the editor UI without the editor knowing anything else about the artwork)<br>- Enable editors to identify an artwork/project and store param presets grouped by project ID<br>- Allow editors (or other tools) to check the API version used by the artwork by first sending a `genart:get-info` message, then listening for `genart:info` response (then maybe display a warning if version is incompatible)<br>- etc.</p><p>If you want to find out more, the project readme has _a lot_ more information. Also feel free to get in touch with any questions!</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/Parameters" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Parameters</span></a> <a href="https://mastodon.thi.ng/tags/Interoperability" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interoperability</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/Zig" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zig</span></a> <a href="https://mastodon.thi.ng/tags/WASM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WASM</span></a> <a href="https://mastodon.thi.ng/tags/WebAssembly" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebAssembly</span></a></p>
Karsten Schmidt<p>Various <a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> and <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> updates from this week:</p><p>- Added null pointer checks &amp; guards in <a href="https://thi.ng/wasm-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api</span><span class="invisible"></span></a>. This also includes support for structs with fields using Zig-style optional pointers.<br>- Updated the <a href="https://thi.ng/wasm-api-bindgen" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api-bindgen</span><span class="invisible"></span></a> code generator for <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> to produce smaller code for structs using many string fields<br>- Did major ground work on <a href="https://mastodon.thi.ng/tags/Zig" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zig</span></a> <a href="https://mastodon.thi.ng/tags/WebAssembly" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebAssembly</span></a> bindings of core <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> functionality (see small demo below)<br>- Fixed/updated/simplified time provider logic<br>- Updated the debug time provider with its FPS analytics/visualization overlay, now computing moving min/max and moving average (default period = 200 frames) and the viz is dynamically/smoothly rescaling to current peak<br>- Released new GenArtAPI v0.9.0</p><p>As for the Zig/WASM example: This is only interesting from a technical POV, no visuals here! All canvas drawing and parameter declarations/evaluations are done via Zig, using the aforementioned <a href="https://thi.ng/wasm-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api</span><span class="invisible"></span></a> infrastructure to provide a new API module which can be seamlessly used with the other hybrid WASM API modules, here for DOM creation (<a href="https://thi.ng/wasm-api-dom" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api-dom</span><span class="invisible"></span></a>) and to handle Canvas2D drawing (<a href="https://thi.ng/wasm-api-canvas" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/wasm-api-canvas</span><span class="invisible"></span></a>).</p><p>At the moment, this GenArtAPI WASM module is still a fixed part of this example, but will eventually be extracted &amp; distributed as separate package.</p><p>Demo (with param editor):<br><a href="https://demo.thi.ng/genart-api/param-editors/?url=https://demo.thi.ng/genart-api/zig-test/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https://demo.thi.ng/genart-api/zig-test/</span></a></p><p>Choose one of the two GUI implementations, then make any parameter changes and you should see the new values applied immediately (btw. the demo is likely not very usable on mobile)...</p><p>Source code (TypeScript in `/src`, Zig in `/zig` directories):<br><a href="https://github.com/thi-ng/genart-api/tree/main/examples/zig-test/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/t</span><span class="invisible">ree/main/examples/zig-test/</span></a></p><p><a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/ArtMaking" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ArtMaking</span></a> <a href="https://mastodon.thi.ng/tags/Interop" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interop</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Workflow" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Workflow</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>Some <a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> and <a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> releases from this past week:</p><p><a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> is already at v0.8.1 now. This latest version includes a new "debug mode" time provider plugin which also collects and computes frame rate statistics (moving average) and injects a canvas visualization overlay (everything configurable). Together with the parameter editor, this is a small, but useful tool to help configuring an artwork and ensure fluid performance on a target device/platform...</p><p>The URL chooser of the reference implementation's parameter editor is also mobile friendly now. You can see a demo of both in action here:<br><a href="https://demo.thi.ng/genart-api/param-editors/?url=https://demo.thi.ng/genart-api/param-test/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https://demo.thi.ng/genart-api/param-test/</span></a></p><p>Some <a href="https://thi.ng/umbrella" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/umbrella</span><span class="invisible"></span></a> related updates:</p><p><a href="https://thi.ng/memoize" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/memoize</span><span class="invisible"></span></a>: Function memoization/caching. Added support for async functions/promises and made existing implementations variadic (and removed fixed arity versions!). This is thanks to a feature request by Hitomi Tenshi...</p><p><a href="https://thi.ng/transducers-stats" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers-stats</span><span class="invisible"></span></a>: Functional sequence processing. Added moving minimum/maximum transducers (deque-based to be super efficient) and updated Donchian channel transducer (aka moving min/max bounds) to also benefit from new implementation</p><p>There's also ongoing major (re)work of the long-promised 2D/3D mesh implementation. It's still on a private feature branch, but I'm getting closer for initial release...</p><p><a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/Release" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Release</span></a> <a href="https://mastodon.thi.ng/tags/Announcement" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Announcement</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a></p>
Karsten Schmidt<p>More exciting updates to <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a>, an API for browser-based generative artworks:</p><p>- added two list param types (numeric &amp; string)<br>- added support for composite/nested param types, esp. interesting for custom param types declared by artworks and/or platforms<br>- updated the first (of two) GUI param editors in the reference implementation to support composite params <br>- added new example showcasing custom &amp; composite param types (oscillators)</p><p>New example w/ editor (make sure to select the "imgui" editor):<br><a href="https://demo.thi.ng/genart-api/param-editors/?url=https://demo.thi.ng/genart-api/param-custom/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https://demo.thi.ng/genart-api/param-custom/</span></a></p><p>Example source code:<br><a href="https://github.com/thi-ng/genart-api/blob/main/examples/param-custom/src/index.ts" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/genart-api/b</span><span class="invisible">lob/main/examples/param-custom/src/index.ts</span></a></p><p>To explain a bit further: The example defines a custom oscillator parameter type, which itself consists of multiple sub-params to configure waveform, frequency, amplitude etc. Using the GenArtAPI messaging protocol, the external param editor (not knowing anything about the artwork or this custom param type) can still provide GUI widgets to customize the 2 oscillators used... Likewise, the artwork is completely decoupled from how those oscillator values are being computed or how they're customized via the editor...</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/API" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>API</span></a> <a href="https://mastodon.thi.ng/tags/Interop" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interop</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/ArtMaking" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ArtMaking</span></a> <a href="https://mastodon.thi.ng/tags/Workflow" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Workflow</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>Lots of new additions &amp; improvements to the <a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a> proposal, documentation, the reference implementation, examples and param editors this week:</p><p><a href="https://thi.ng/genart-api" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/genart-api</span><span class="invisible"></span></a></p><p>- added new (12th) parameter type: image maps (supporting grayscale or RGB)<br>- added new example project using an image parameter to create artwork<br>- added code example showing how an art platform (or artwork itself) might define &amp; work with a custom parameter type (example: sine oscillator)<br>- added/updated API docs (<a href="https://docs.thi.ng/umbrella/genart-api/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">docs.thi.ng/umbrella/genart-ap</span><span class="invisible">i/</span></a>)<br>- started documenting API states &amp; transitions (diagram still WIP, forthcoming)<br>- initial documentation of message protocol (for communicating w/ parent window and/or external tooling)<br>- simplified the pluggable time provider implementations (for animation)<br>- updated the reference implementation platform adapter to support all built-in param types<br>- major update GUI param editors, now allowing users to dynamically load &amp; customize externally hosted (compatible!) artworks, and also supporting image params, custom color chooser component...</p><p>Example editors:</p><p>- <a href="https://demo.thi.ng/genart-api/param-editors/?url=https://demo.thi.ng/genart-api/param-test/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https://demo.thi.ng/genart-api/param-test/</span></a> — either of the two editors can be used...<br>- <a href="https://demo.thi.ng/genart-api/param-editors/?url=https://demo.thi.ng/genart-api/param-image/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/genart-api/param-e</span><span class="invisible">ditors/?url=https://demo.thi.ng/genart-api/param-image/</span></a> — currently only the rdom-forms editor can be used for this and you'll need to choose an image for the other params to make sense...</p><p>(Note: The imgui-based editor is NOT mobile friendly. Also, the editor sidebar can be toggled on/off via Escape key)</p><p>As usual, everything's work-in-progress until further notice. Feedback welcome!</p><p><a href="https://mastodon.thi.ng/tags/GenArtAPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenArtAPI</span></a> <a href="https://mastodon.thi.ng/tags/GenerativeArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GenerativeArt</span></a> <a href="https://mastodon.thi.ng/tags/Art" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Art</span></a> <a href="https://mastodon.thi.ng/tags/API" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>API</span></a> <a href="https://mastodon.thi.ng/tags/Interop" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Interop</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/ArtMaking" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ArtMaking</span></a> <a href="https://mastodon.thi.ng/tags/Workflow" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Workflow</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>