Iterating upon earlier work
Efflux is built upon the code written for the earlier Chrome Experiments WebSID and Touch Synthesizer where it is now used within a complete music making application.
Whereas the aforementiond applications could not be open sourced (due to use of a third party library for the UI), Efflux has been made with the ethos to be fully open source and public from day one.
Custom audio engine
Efflux' audio engine was built fully from scratch using the building blocks of the Web Audio API*.
By using these built-in objects (which are optimized by the browser implementation) together with a sequencer whose clock runs stable inside a Web Worker, sample accurate sequencing can be achieved without any drift.
Efflux supports 8 channels * 3 oscillator voices = 24 simultaneous voices, each with individual ADSR and pitch envelopes, controllable in real time.*By using the PeriodicWave class, custom wave tables (which can be hand drawn by users) can be fed to the basic OscillatorNode class where the wave table provides harmonic complexity.
Sample based playback reuses the AudioBufferSourceNode class. Envelope (amplitude and pitch) shaping is achieved by using GainNode instances. Effects reuse built-in modules (filter, gain and compressor nodes).
Multiple GUIs
Efflux was initially built as a tracker (continuing the concept started in Slocum Tracker but later extended to also support a visual mode featuring a piano roll and clip based sequencing.
Both GUIs operate the same way on Efflux' data model and audio pipeline, where each GUI is basically an interpreter on how to visualize / edit this model. As such, adding new GUIs (full timeline editing, for instance) should only require creating view components.
Reuse of other igorski libraries
While all audio rendering code was written specifically for Efflux, under the hood other libraries by igorski.nl are reused, namely:
Eyes on the demo scene
Apart from the full music making application as it is hosted on igorski.nl, the repository also contains a build configuration for the Efflux Tiny Player, which was created to play back songs made in Efflux in a headless player, to act as support for visual content in demo scene "tiny application" contests.
Efflux' Tiny Player was able to run a three minute composition with live audio playback and effects while at the same 3D objects were rendered in WebGL, with the complete program being below 64K in size.