From the original SynthMaker forum (2004–2014), with its members’ names and dates.
Jonathanese ·
I'm relatively new to synthmaker. Not so much to DSP. (I'm in advanced differential equations and have a 750 page book on the subject. http://www.dspguide.com/)
However, I have a few questions specific to the program:
1. Is the SynthMaker program in FL Studio a complete version, or a watered-down version for limited usage.
2. With the nodes and modules, are custom modules stored as files? If so, where, and can this directory be changed?
-I heavily use Windows Live Mesh to synchronize all my FL projects and data between computers. It would be nice to keep my custom stuff together. 😀
3. With the code snippets, the language is C, right? Where can I find the syntax/keywords for the ins and outs?
4. Lastly, is it possible to use a FFT to work completely in the frequency domain when developing sound, and an iFFT to switch back to the time domain to generate the signal, or are the FFTs in SM only suitable for lower-resolution stuff like spectrum analyzers?
Thanks ahead of time. I can't wait to get started on some of this stuff!
trogluddite ·
Hi there, welcome to the forum.
Questions 1 and 2 I'l leave to those in the know, as I've never used that version.
3) The code is not really any particular language, though the syntax is very like C. However, it is much more limited than C - which is mainly so that it retains compatibility with the SM sound engine (uses almost exclusively SSE vector operations at the CPU level). The User Guide does indeed look as if it is missing a lot - but, in fact, that's because there really are so few commands and functions!
In essence, there is only maths and logic available, as it is designed for pure number crunching. There are no user-definable functions or procedures, no conditional branching, only fixed length loops, and 32bit floats are the only data type. If you have some coding knowledge already, you will find that there is very little language to learn - the hard bit is learning the ways to work-around the things that the code cannot do.
To make inputs and outputs, you just declare them at the start of the code using "streamin" and "streamout" - they work just the same as declaring a float, except that they also add the appropriate connector to the code box. There are other forms, such as "monoin/out"/"streamboolin/out" - but they are used much more rarely, as the "stream" version is very versatile, and will adapt itself automatically to mono, mono4, and poly streams. To read an input, simply use the variable as an argument; and to write to an output, simply assign a value as you would to a variable. The only point of note, is that you must not write to an input variable, as the value will then propagate backwards into preceding modules (unlike regular variables, inputs and outputs are not strictly local to the module).
The best way to learn is probably to dig into some code examples from the forum and Wiki, and then ask specific questions about the confusing parts, or stuff that you cannot find a way to do - a series of lessons would probably be of little practical use, as SM code is more about understanding the mathematics of DSP than 'any kind of procedural wizardry.
4) The stock FFT/iFFT modules are, as you say, really only much use for displays, and constructing "off line" waveforms. That's because they can only be discretely 'triggered' with no sync to the sample rate, and so cannot create correctly interleaved windows etc. There have been a few attempt to create a truly 'continuous' FFT module - but this is hampered by the limitations of SM code noted above (SM assembly is similarly 'cut down', so has the same problem).
Happy Sm'ing. 🙂
Wrote something here? To have a post removed or your name hidden, write to [email protected].