Discussion started here: https://www.audiotool.com/board/chitchat/creating_my_own_synth
In real-time processing the most problematic thing (besides pure performance) is latency: the time between performing an action and hearing the result.
Using a garbage-collected language (Java, Python, C#, JavaScript) introduces random halts in order to remove no longer needed objects from the heap. This introduces buffer-underruns which you can hear as glitches. To mitigate this fluctuating processing speed you can increase the buffer size which introduces bigger latency.
Not that hard. The output of a synth is a sequence of numbers you'd normally write into the sound driver's buffer or a wav file. Just format those numbers as Strings and write them to a text file. You can also write a converter that has a wav file as input and text as output.
Ooooh, then in theory you could plug in something with "wave a in" and "wave b in" and use my technique on them and just reencode it, maybe with a wave outs so you can chain the units
What my technique does is take a set of numbers(currently a txt file) and divide it by a second set of numbers, wave A and B respectively, then does a bit more math to drag the numbers to below |1| as to avoid horrible clipping, and spits out some numbers, a feature i would like to add is an offset, where it would loop back around so it has different combinations
@chordofdestruction I'd love to hear more about these demos (if your can disclose that information). Will they be replacing the older HTML5 demos of the 3 main devices? (Perhaps featured enough to (1) save presets directly from the demo, (2) act as a audiotool sketch-like device to make patches (offline) and save later?
Hi @apollo, I just tried to make fun on my next "demo" being the new audio engine :)
I already implemented the 440 Hz sine wave when pressing the play/pause - nothing more. I guess we'll start the usual beta phase when there is at least something relevant to show. I just wrote a short list of what we're trying to achieve if that is of interest to you: https://www.audiotool.com/board/chitchat/at_behind_the_scenes
I coded some synths a long time ago in QBASIC, PHP and Java. PHP was just for fun.
Comments (12)
hey @chordofdestruction, do you have a demo of your synth so far?
Discussion started here: https://www.audiotool.com/board/chitchat/creating_my_own_synth
In real-time processing the most problematic thing (besides pure performance) is latency: the time between performing an action and hearing the result.
Using a garbage-collected language (Java, Python, C#, JavaScript) introduces random halts in order to remove no longer needed objects from the heap. This introduces buffer-underruns which you can hear as glitches. To mitigate this fluctuating processing speed you can increase the buffer size which introduces bigger latency.
In a few weeks you can hopefully use the "Demo" via the "App" button on the top of this page ;)
My other Demos aren't easy to share.
I look forward to testing it
how hard would it be to add a "waveform out" to the synths that outputs the waveform data as say a text file or something you can do arithmetic on?
Not that hard. The output of a synth is a sequence of numbers you'd normally write into the sound driver's buffer or a wav file. Just format those numbers as Strings and write them to a text file. You can also write a converter that has a wav file as input and text as output.
Ooooh, then in theory you could plug in something with "wave a in" and "wave b in" and use my technique on them and just reencode it, maybe with a wave outs so you can chain the units
That's a good starting point.
What my technique does is take a set of numbers(currently a txt file) and divide it by a second set of numbers, wave A and B respectively, then does a bit more math to drag the numbers to below |1| as to avoid horrible clipping, and spits out some numbers, a feature i would like to add is an offset, where it would loop back around so it has different combinations
@chordofdestruction I'd love to hear more about these demos (if your can disclose that information). Will they be replacing the older HTML5 demos of the 3 main devices? (Perhaps featured enough to (1) save presets directly from the demo, (2) act as a audiotool sketch-like device to make patches (offline) and save later?
Hi @apollo, I just tried to make fun on my next "demo" being the new audio engine :)
I already implemented the 440 Hz sine wave when pressing the play/pause - nothing more. I guess we'll start the usual beta phase when there is at least something relevant to show. I just wrote a short list of what we're trying to achieve if that is of interest to you: https://www.audiotool.com/board/chitchat/at_behind_the_scenes
I coded some synths a long time ago in QBASIC, PHP and Java. PHP was just for fun.
Ah, I see.
I couldn't find a specific comment in that topic detailing implementation, but for the most part, I see what you mean