glitch art scripting language
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
luna 973d6e63c5 Merge pull request 'Better LILV/LV2 integration' (#15) from better-lilv into master 3 weeks ago
doc add saturator, vintagedelay cmd 5 months ago
examples fix mbeq example 4 months ago
src use lv2.h provided at root of /usr/include 1 month ago
.gitignore use lv2.h provided at root of /usr/include 1 month ago
LICENSE remove oldMain, add LICENSE 11 months ago Update README on new env var 2 months ago
build.zig use lv2.h provided at root of /usr/include 1 month ago


glitch art “framework”, ???????? language??? something?

example of the amp command

example of the rflanger command

how do?

build depedencies (headers included):

  • zig at
  • libc, lilv and libsndfile
  • graphicsmagick for the rotate command
  • readline (for repl)

plugin depedencies (only required at runtime):

# build and install
# assumes lilv headers are at /usr/include/lilv-0, edit build.zig if different
git clone
cd scritcher

zig build install --prefix ~/.local/

# on your input image file
convert blah.jpg blah.bmp

# if you got the lv2 default amp plugin, this is runnable
scritcher examples/middle_amp.scri blah.bmp

# if not, the noise plugin does not depend on any lv2 plugin.
scritcher examples/noise.scri blah.bmp

// scritcher saves it on an incremental basis, so the first run will save to
// blah_g1.bmp, the second saves to blah_g2.bmp, etc.
$your_image_viewer blah_g1.bmp

using the repl

using repl works via scritcher repl scri_file.scri input_image.bmp

you type commands as you’d write the specific scritcher commands (doc/, with four repl-specific ones (semicolons do not apply):

  • push, to push the last written command to the queue
  • save, to write the queue to the given scri_file.scri file
  • list, to print the current contents of the queue
  • quit, to exit

After a non-REPL command, such as an effect, the program pointed by SCRITCHER_RUNNER will run as argument to the runqs command. By default, the program run will be ristretto (as it is my preffered image viewer, considering it was able to handle when some images went broke)

this allows for quicker iteration of commands, as you can type a command, see the image changes as fast as possible, tweak its arguments, and when satisfied, push it, and work on the next command, etc.