FuncSynth
A downloadable tool for Windows, macOS, and Linux
FuncSynth is a toy/tool for creating sounds and music by synthesizing functions in a node-based editor and then playing them as digital audio.
If you come from a music production background, you can think of it like building a synth from scratch.
If you come from a math or programming background, think of it like turning math into sound.
FuncSynth is a great tool for making sound effects for video games (such as this one). In fact, all sound effects used in the FuncSynth editor were made in FuncSynth (I have proof! Check the sample projects).
You can also use it to make entire music tracks, although doing so will feel very different than making music in a conventional DAW. There is no concept of "Beats per Minute" or a "Piano Roll" -- every sound made in FuncSynth is crafted with Functional Synthesis*.
You can create sweeps, envelopes, reverb, and all the other things you'd expect from a traditional DAW, but creating those things in FuncSynth is more... adventurous. You might learn something about how a DAW works behind the scenes.
(*FuncSynth does offer the ability to import sound files and they are then treated as Functions. You can "cheat" in a Piano Roll or other functionality this way)
How does it work?
Function Modules can be chained together to compose them. Chaining a sin(x) Function into an abs(x) Function will create an abs(sin(x)).
Reverse the order and you get sin(abs(x)).
You can use an Operator module to combine a function with another function. For example you can create sin(abs(x)) - 1 by using the Subtract Operator, like so:
The output of an Operator (or any module for that matter) can be fed into a Function or other Operator.
One of the most powerful features of FuncSynth is the Compose module. This will compose the first input into the second input. In this case, we obtain abs(sin((x * 75)*tau)).
How is a Function interpreted as Audio?
Functions have infinite detail, the more you zoom into a sine function the more values you'll find (this is not actually true because we're dealing with floating points, but bear with me). Digital audio, by contrast, is a series of discrete samples that map to a number of seconds per sample (usually 48000 samples per second).
To map functions to audio, we need to make an arbitrary decision of how much one window of X equates to how many seconds of audio. You can configure this by setting the Unit Hz (units per second) setting. By default, we specify that 1 unit of function data equates to one second of audio. This means a canonical sine wave sin(x) would play at 1 / 2π hz (very low frequency).
To make a 1hz sine wave (still impossible to hear, but easier to work with), you either need to raise the Unit Hz to ~6.28, or multiply the input to the sin(x) module by 2π (also known as τ).
Another limitation of digital audio is that the vertical domain only extends to [-1, 1] while a function can have a range of [-∞, ∞]. To reconcile this, FuncSynth will clamp any values outside of the [-1, 1] range when playing it as audio. You can still perform arithmetic on intermediate values that exceed that domain.
More updates soon™
FuncSynth is completely usable, but it's not finished. I have short term goals to improve the user experience. And I have slightly longer-term goals of adding new powerful features. If you're logged into itch.io, you can click the Follow button in the top right if you want to be notified when new versions are released.
Where can I learn more?
The download includes a README that has more information. There are also sample projects included that demonstrate various concepts like creating basic chiptune waves and even making small musical loops.
If you have more questions, or you have something cool to show off, or just want to hang out: Join us on Discord!
Updated | 7 days ago |
Status | In development |
Category | Tool |
Platforms | Windows, macOS, Linux |
Rating | Rated 1.0 out of 5 stars (1 total ratings) |
Author | NotExplosive |
Tags | Math, Minimalist, monogame, Music, Music Production, Soundtoy, synth, Synthwave, Visualization |
Download
Click download now to get access to the following files:
Development log
- 1.2.0 - MacOS Support and Copy Paste7 days ago
- 1.1.0 - Multi-selection!21 days ago
Leave a comment
Log in with itch.io to leave a comment.