glitch art scripting language
Go to file
Luna c73b98a356 fix for zig 0.11 2023-08-04 21:50:59 -03:00
doc add saturator, vintagedelay cmd 2020-01-26 14:50:50 -03:00
examples fix mbeq example 2020-02-08 01:40:35 -03:00
src fix for zig 0.11 2023-08-04 21:50:59 -03:00
.gitignore port main() code path to latest zig 2022-04-28 00:08:52 -03:00
LICENSE remove oldMain, add LICENSE 2019-07-10 12:10:09 -03:00 Update README on new env var 2020-04-10 00:20:46 -03:00
build.zig fix for zig 0.11 2023-08-04 21:50:59 -03:00


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.