synth4
a text based audio-visual modular-synthesizer
- the scripts it uses can be edited and debugged in realtime
- three parts to it, audio generation, graphics generation, and a fullscreen post-effects chain
- all variables used in either the audio or graphics code can be exported to the other side. this allows using things like audio oscillators and filter positions to modulate positions of graphics primitives, and using graphics primitive positions to modulate the audio
- audio can be routed to the post-effects shaders
- graphics primitives are currently all signed distance fields that can be chained together
- very basic support for midi 1.0 devices
- currently pre-alpha, but fairly stable. it has only been tested so far on a 2020 M1 macbook air.
download v0.7.4 (requires osx 14.4) (31/7/2024)
simple video demonstration
usage
the program is essentially a text editor with some additional modes
- command+shift+i = variable-viewer mode. as the cursor moves around, any symbols underneath it have their current contents displayed. this is primarily useful for debugging the output of functions throughout the script. when viewing float_arrays, tab can be pressed to alternate between a 'current value' display, and a 'history' display.
- command+shift+m = midi mode. this lets the computer keyboard be used to send midi inputs into the script. the mapping from keys to midi note indices can be seen and edited in the settings.txt file
- command+shift+k = console mode. a list of commands can be seen by pressing tab while in this mode. tab will also autocomplete the commands where possible.
- use escape to back out of these modes
- pressing escape in the basic edit mode will show/hide the script
keyboard shortcuts for text navigation
- arrows to move the cursor
- arrows+command to move the cursor to the start and end of line or file
- arrows+option to move the cursor word by word
- all of the above + shift will generate text selections
- command+c/command+v for copy/paste (this uses the os, so copy/paste to/from other programs should work)
- command+z/command+z+shift for undo/redo
the following txt file is an annotated script file that explains the basics. the program supports drag and drop, so just drag the txt file into the window and it should start playing
example_scene.txt
script functions / api
unordered roadmap
- windows port
- general
- performance improvements
- replays/recording
- autosave
- more extensive midi support
- script editing
- stopping dropouts when script lines contain errors
- improved error messages in script
- autocomplete
- documentation in the program itself
- audio
- delays, reverb, echo, etc
- panning, equalisers, mixers, compressors, etc
- 3d sound using inputs from the visuals thread
- etc
- graphics
- lighting, materials, textures, etc
- volumetrics probably
- particle systems
- generative meshes
- video streaming?
- multiple scenes that can be masked and mixed together in the post effects chain?
- 2d distance fields
- etc, etc
change log
last updated 31/7/2024