Schéma - Streamlined visual programming for physical devices

,

Schéma Light control reel 2019-2023

Made some great progress today with Schema Headless intended to run on Linux, incl. Raspberry Pi

Managed to go over and clean out dependencies, removing any references to UI, Skia and Windows from the core package and initial patches.

There is still some work to make it do anything useful, as the output plugins are disabled at the moment, but wow, this is something 🤩

Currently in feature branch GitHub - domjancik/scnq-schema at feature/schema-headless

Image shows Schema Headless running in a docker container, image mcr.microsoft.com/dotnet/runtime:6.0

4 Likes



Ok, Schema Headless is officially in a great spot 🎊

I’ve just gotten it compiled with all non Windows specific plugins (ie. without XBox controller and Shapes visual output and for now OpenDMX and Enttec DMX Pro)

All OSC and ArtNet stuff is working 😸

MIDI is untested but should work too with the right hardware.

Tested with running Schema Headless in Docker, debugging OSC with vvvv gamma, Protokol and ArtNet with Chataigne

Pictures include this connection and the actual Schema Block Stack (or patch…) running. Now, of course, this may look just like a simple sine wave LFO, but it basically means that all the essentials are working!

Hoping for a compiled release soon and some more docs, guides and usability but I am really excited about this already 😊

All progress available in git

2 Likes


As part of the work on Schema Headless, I’ve also taken a new look at my ScenicScript concept ScenicScript - Schéma , which focused on how to succinctly represent Schema Block Stacks (the programs on fixtures) in a both machine and human readable and editable format.

This becomes even more important in the context of Schema Headless where the primary interaction point is the textual terminal. Being able to represent the Stacks here in a readable format rather than dumping the current auto-serialized XML format can be priceless.

Not only does it help with state readouts (and editing) in Schema Headless, it’s also a format that’s fairly easy to understand for an LLM, such as ChatGPT paving way for automatic AI-assisted generation of Block Stacks.

I’ve run a couple experiments with very promising results. See above a simple rainbow color switcher generated with ChatGPT based on a few examples and a set of available Blocks. This generated YAML is then read out by the new YAMLStacks plugin that can read this format.

(So far I am building the plugin separate not to pollute the core and mess with the current file format default which is more capable as it is able to capture any state, at the cost of readability and slight brittleness in regards to version changes)

I have released version 0.2.0 of Schéma, this is primarily a bug fix and internal refactor update as well as the first release to feature two distinct versions, extending the support to Linux:

Schéma Studio: The full-featured Integrated Creative Environment (ICE) designed for project creation and editing. It offers a comprehensive suite of tools for designing and programming multimedia projects, ideal for professionals and enthusiasts seeking advanced functionalities.

Schéma Lite: A lightweight, deployment-focused version optimized for running projects on a wide range of hardware, including Raspberry Pi and Docker containers. It’s intended for efficient project execution, lacking the editing capabilities of Studio but excelling in performance and compatibility.

Together, Schéma Studio and Schéma Lite provide a versatile ecosystem for creating and deploying creative projects, from conception through to execution.

New Plugin: YAMLStacks - Support for reading Block Stack files in minimalistic YAML format (name TBD). It aims to be easy to understand and textually edit. It is also an enabler for planned AI generation features.

Removed Plugin: Removed DALINet plugins from the release. I cannot re-test the hardware and use is very limited.

The releases are built with vvvv gamma 5.2 targeting .NET 6 runtime. .NET 8 support will come soon together with performance improvements when vvvv gamma 6 reaches stable.

This release also contains more detailed console logs.

Download here: Schéma Studio - Integrated Creative Environment by Dominik Jančík /domj

Guides on Schéma Lite usage will come shortly.

1 Like

Development updates :)

Upcoming version will support using images in the shapes output for beautiful and interesting outputs

Also I have started to work on enabling keyboard only (or other non mouse device) navigation within the Stack editor.

I hope to extend this eventually to the whole interface but have to start somewhere 🙂

Currently no editing is possible from this mode but I hope to get that done soon.

Still, just seeing the cursor move around correctly, within the right boundaries and selecting the parameter editors like it is now makes me pretty excited for this mode of control 🙂

2 Likes

Schéma 0.2.3 is available for download: 0.2.3 - Shapes getting fancy and numerous fixes - Schéma Studio - Integrated Creative Environment by Dominik Jančík /domj

This is a pretty practical update, along with some fancy new tricks in Shapes

Image support in Shapes

You can now use image resources to give 2D rendered shapes some texture.

This is an example of the output:

And how to set this up (excuse the choppy video, I’ve resolved my OBS settings since then):

Controls

The control scheme is slightly changed with Shift replacing Alt in the Fixture view. This fixes Alt getting stuck after alt-tab switching between applications, leading to accidental deletes.

I am also planning to make the control scheme user-configurable but this might still be a little way off.

New Blocks

  • Modify.Color.Blur - Blur colors for that smooth feeling
  • Modify.Color.RangeSlice - Take only a piece of incoming pixels and stretch them out. Useful for splitting out mappings.

Lite version now also includes all compatible Blocks which were previously omitted.

High DPI Support

Window bounds are now stored and loaded correctly for displays with DPI scaling enabled.

Framerate cap setting for ArtNet

ArtNet plugin outputs now support a framerate cap. This may change in the future based on stability and a separate Framerate setting for the main window could also make sense.

In any case, set the new setting via configuration JSONs at “ArtNet[1,2,3,4].Framerate”

Developer notes

The source code git repository has been cleaned up and an auto install script for dependencies has been added, making it easier for new developers to get going. Many patches were also refactored for clarity with more to come.

7 Likes

Schéma 0.2.5 is a pretty significant update, so let’s get right to it:

(Downloads here at the bottom Schéma 0.2.5 - Audio, Sequences, Multi-Universe and more! - Schéma Studio - Integrated Creative Environment by Dominik Jančík /domj)

Update to .NET 8

Starting with 0.2.5, Schéma is built against the latest vvvv gamma 6.2 which results in the usages of .NET8 over .NET6 bringing performance improvements.

Sequences

Sequences is a new, always on plugin. It adds Blocks that allow you to work with Fixture sequences in a generic and powerful way.

The only supported Sequence at the moment is based on the Fixtures’ names and Group. Going forward, you should be able to create multiple more explicit and possibly rule-based sequences.

To use Sequences, use one of the following Blocks

Create.Reference.SequenceOffset

Allows getting a Fixture reference for next and previous Fixtures in the current sequence. The reference can be used for blocks such as Copycat or Distance.

Create.Value.SequenceIndex

Returns a 0-1 value, based on the position of the current Fixture in the current Sequence.

Schema Studio Audio

The version of Schema with Audio support is available as a separate download Schema_Studio_0_2_5_Audio_Windows. This version will always load the audio runtime. It’s likely that this will be included in the main version in future releases, though for now I like to keep that version lean.

It is fairly early regarding Block set and integrations but the fundamentals work, have a play around and make some noise!

Block updates

Create.Value.Distance

Create.Value.Distance is now able to use the animated position of a Fixture it’s used on, allowing for more dynamic spatial control.
You can toggle this behavior using a new toggle that allows switching between automatic position (animated state position if available, or fallback to fixture’s setup position in the scene) or always using setup position, mimicking the original behavior.

The Distance block now also shows the name of the other Fixture it’s using to calculate the distance.

Create.Copycat

The powerful and versatile Copycat block now supports Layer selection. This way, you can not only replicate behavior of other Fixtures, but also take individual parts, enabling you to create more intricate and fine-grained relationships between Fixtures.

The block now also indicates which Fixture is really referenced via text on the block itself.

Integration improvements

Schéma was recently deployed to drive the Moony light and sound installation by Petr Pufler. In this setup, Schéma integrated with Chataigne and WLED.

To better support these integrations OSC and ArtNet plugins received some love.

OSC Vector3 Color support

The Create.Color.OSC block now also understands colors received as a vector of three float values besides the explicit OSC color value.
This is important as Chataigne sends Color over OSC in a different RGBA order than is expected in vvvv gamma. With the added support, you are now able to send correct OSC Colors from Chataigne using the Point3D type.

ArtNet Multi Universe output

No more 512 channel constraint and having to pre-plan LED pixel universe outputs.
ArtNet outputs now support what I call Multi Universe, ie. stretching beyond a single universe.

By enabling the ArtNet[2,3,4].UniverseCount setting, you can tell an ArtNet output that it is free to continue into next universes when channels run out.
Basically, any fixtures that reach beyond channel 512 will smoothly continue to the next universe, possibly sharing the edges of two universes without issues.

This is great for WLED integrations as this is exactly the channel mapping approach the WLED system uses.

There are still improvements to do here, such as being able to see the extended universes values in the DMX UI overlay, however it’s already super powerful and practical.

More runtime control - Framerate

Framerate control has been improved, removing any Framerate limitation on ArtNet output by default and adding the Runtime.Framerate setting to control full application frame rate.

This is especially useful when running Schéma headless and wanting to control the rate of computation and signal sending.

Experimental Cursor

The keyboard only Cursor project is part of this release. It has not been completed yet but you can preview it by setting Features.Cursor to true.

Visual tweaks and usability updates

A number of interface improvements have also made it into this release

  • Fix pixel rendering with gaps (no fixture color), using explicit half transparent pixels
  • Show an informative message when UI is non-responsive due to being disabled in the JSON settings
  • Move view tabs from bottom to top to reduce overlapping
  • Disable screensaver by default (I love it but it’s a performance hog ^_^)
  • Update window titles and UI text to “Schema Studio”
  • Controllers plugin available in Plugin selector
  • Improved defaults

Bug fixes

And lastly, a number of smaller bug fixes also made it to this release.

  • Fix inability to create drivers in certain situations
  • Fix Copycat color resampling for Fixtures with only a single pixel
  • Fix internal bug breaking block/plugin registration and remove ugly hotfixes

Schema Lite MIA

The Lite release is currently missing in this version due to some build issues for Linux after migration to gamma 6.2, likely needs a simple dependency fix and will be resolved soon.

2 Likes