This is a place to share, discuss, request, track, and provide feedback for community efforts, tools, guides, etc., for Synesthesia.
The enhancement issues are not meant to be implemented here, but they can link to the implementation, discussions, further descriptions, etc. The main idea with the tag is to provide an overview of feature suggestion and ease collaboration for anyone who wants to help or are already implementing the features.
The simplest way to contribute is to join the discussion in the existing Discord community in the #tools and other #channels, or in this repo's discussion tab.
Other ways are to
- ask for, list, describe, expand on, ..., features/resources/ideas in the issues
- edit this file
- or add new files for more in-depth information.
The #feature-suggestions channel in Discord may prove an inspiration. Some of these features can be implemented outside Synesthesia, which lets the team focus on core features instead.
- Contributing
- Table of Contents
- Shaders
- YouTube channels
- Art style
- Tools
- Projects
- Running on Linux
- FAQ
- Footnotes
- Synesthesia Resources
- The art of the Shade
- The Book of Shaders
This is a gentle step-by-step guide through the abstract and complex universe of Fragment Shaders.
- The principles of painting with maths
- The Art of Code
- Inigo Quilez
- Daniel Shiffman
- Alan Zucconi
Answers a lot of questions I've had about shiny shit
- @uFFFD
- Suricrasia Online
- Shadertoy - Unofficial
- Shaders for Game Devs
Version 1.19 included the ability to set controls from the javascript file. This allows visualising values in the controller view.
For the built in Synesthesia variables add these to your script.js
and scene.json
files:
This can be used to visualise any value, including combined values, e.g. Math.sin(TIME)+Math.tan(OnBeatTime)
.
With these tools you can send video from one application to another.
Spout and Syphon Recorder are more performant 1. For remote sharing, you can use NDI.
- glsl-canvas
The extension opens a live WebGL preview of GLSL shaders within VSCode by providing a Show glslCanvas command.
- glsl canvas requires small adjustments to the file, which will be solved by #3.
- snippets
- synesthesia-scripts
Code generation utilities for developing Synesthesia scenes.
- benchmarking (draft)
- syn-http
This is a HTTP endpoint for Synesthesia.
- syn-games
A suite of tools that allow various interactions with Synesthesia with the goal of creating new types of games: Sports, board games, language learning, song/music lessons, etc.
- This repo will be refactored into smaller packages soon, and the documentation improved.
It's possible to let Synesthesia run on Linux via Wine. It was tested on Arch Linux (on 2021-01-07) with Synesthesia (versions 1.18.1.42
and 1.19.0.51
), Wine (version 7.0rc4-1
) and an NVIDIA GeForce GT 730 (and the NVIDIA drivers in version 470.94-2
).
You can also install the Wine Gecko package of your Linux distribution (e.g. for Arch Linux available as wine-gecko
) or just let Wine download Gecko when it prompts you to (seems to be when Synesthesia updates are available).
You also likely need to change the PulseAudio stream Synesthesia is reading from to the monitor of the stream you want to route to Synesthesia (you can verify that it's working when both PulseAudio and Synesthesia show your audio signals).
The Wine prefix itself needs vcrun2015
and corefonts
and the trick is to remove the libEGL.dll
shipped by the installer, as it (for some reason) doesn't get along with Wine or the rest of its environment.
All but Spout works fine (though Spout wasn't really debugged extensively).
The following commands produce a Wine prefix which worked in at least one case:
WINEPREFIX=~/your-prefix-path WINEARCH=win32 wineboot -u # creates a new Wine prefix at the specified path
WINEPREFIX=~/your-prefix-path winetricks -q vcrun2015 # installs Visual C++ Redistributable 2015 into the prefix
WINEPREFIX=~/your-prefix-path winetricks -q corefonts # installs Microsoft core fonts into the prefix
WINEPREFIX=~/your-prefix-path wine synesthesia-installer.msi # installs Synesthesia, just use all the defaults
rm ~/your-prefix-path/drive_c/Program Files/Synesthesia/libEGL.dll # removes the libEGL.ddl shipped directly with Synesthesia, which for some reason doesn't work in Wine
WINEPREFIX=~/your-prefix-path wine pfx/drive_c/Program\ Files/Synesthesia/Synesthesia.exe # finally start Synesthesia through Wine