The ultimate answer to audio tools.
Focus on the dsp kernel to design your sounds (or patterns, or even tracks) directly in your DAW. Write down your idea in the handy javascrpit. Akasha embeds V8 and offers high performance javascript execution.
The code editor is driven by JUCE WebBrowserComponent and holds a CodeMirror 5 instance.
Open the standalone version directly or open the vst3 version in your DAW.
The entry class is Voice
. Up to 16 Voice
instances handle polyphony notes, each with its own isolated members.
The entry function of Voice
is main
, called for each sample point whenever a key is holding.
input args:
Default Name | Explanation |
---|---|
m0~m7 | Macro knobs' values in float |
tempo | Current tempo in bpm provided by your DAW |
beat | Current beat (the xxx th beat in float) provided by your DAW |
numSamples | Advanced feature. Ignore it if you don't know. |
bufferPos | Advanced feature. Ignore it if you don't know. |
time | The time elapsed since your have pressed down the note |
delta | The time elapsed since last main call (normally = 1/sampleRate) |
note | The midi ID of the note you just pressed. 0~127 |
velocity | The velocity of the note you just pressed. 0.0~1.0 in float |
justPressed | Whether this main call is the trigger frame of the note. 0 or 1 |
return:
- Return a float value between -1~1 for mono sound.
- Return an array of float value between -1~1 for stereo or multi-channel sound.
main
is called for each sample point at the sample rate. Other functions, classes, and global variables stay there, memorizing their states.
Hard-coded global constant:
sampleRate
: current sample rate. If the sample rate changes, the code will be recompiled.
Check Presets/tutorials/*
for more tricks.
To compile your code, defocus the editor.
Once your code is compiled, up to 16 notes can be pressed simutaneously, each with its own Voice
instance.
Macro Knobs can be automatically controlled by your DAW.
Please note that all the numbers in the code can be adjusted by right-clicking and dragging the mouse. The position you click to determines the precision of the change.
- 🔥Drawable LFO functions and their UI. Can be used as oscilator shape, modulation source, etc.
- (DONE!✅)🔥Support note-off sound by the adsr envelope.
- 🔥MPE.
- 🔥Legato and glide.
- 🤓Inspector functions and their UI to track variables or arrays.
- (DONE!✅)🤔Oversampling .