Praxis features an audio engine that allows your program to synthesize audio in real time. A demonstration of this can be seen in the Synthbench program, which synthesizes audio and renders the waveforms it generates. It emulates the style of the Reactable system, where you arrange widgets on a table to generate a sound. Some widgets emit a waveform, some widgets apply an effect to the waveform they have been placed on top of and some widgets emit a low frequency waveform for controlling a parameter of the widgets it is connected to. Once again, I made this because when I saw the Reactable I thought it looked really fun, so I wanted to make a version of this “toy” for myself so I could play with it. That’s what praxis is all about – making your own universe of play where any toy you care to describe can be brought to life.
The version of Synthbench that exists in praxis only features the node audio generation behaviours and rendering. What is missing is being able to place new nodes and move them around with the mouse: you need to use code to add new nodes and move them. This is purely due to laziness. I chose to write the part of Synthbench that I wrote mainly to test that real time audio generation could be done fast enough in Lua. That is, each node needs to generate and render enough samples per second to satisfy the audio pipeline while maintaining 50 frames per second. After I was satisfied that it works, I let my attention drift to other things.