Virtual modular synthesizer on 30x30mm
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
... DAC is playing digital noise through the modular structure.
// Declare modules
noise_white m1; // Signal generator module (0 inputs, 1 output)
audio_out m2; // Wrapper module for DAC (2 inputs, 0 outputs)
// Connect both DAC inputs 0, 1 (left+right) to output 0 of noise module:
m2.connect_input(0, &m1, 0);
m2.connect_input(1, &m1, 0);
/* ... set up hardware ... */
while (1) {
if (refresh) { // Interrupt from I2S interface requests refresh when output buffer is less than half full.
m1.render(); // Produce another buffer full of audio
m2.render();
refresh = false;
}
// Interrupt-driven I2S service routine takes audio data from m2
}
... Module class structure sadly still a bit fragmented. There is a base class, module, from which all other modules are derived. In the long run, I would love to have a self-registration mechanism in place, so new modules can be integrated more easily. Anyone care to give this a try?
Just implemented Antti Huovilainen's 4-pole ladder filter (as described in http://dafx04.na.infn.it/WebProc/Proc/P_061.pdf, basic version without the extra tuning), and it sounds quite nice and smooth. No self-oscillation, though - hope that will come with the tuning. Fixed-point version, with hard saturation instead of tanh(), also operational and sounding good, but will require more tweaking.
Note, this is not tested on the device yet - only on the host system, but using the same basic audio engine in a different build configuration. There likely is a lot of room for improving sound and compute efficiency.
- Audio and control interfaces work fine
- ADC can read up to 4 pots via aux/MIDI port
- Defined module: base class for audio synthesis / processing units with signal flow via inputs, parameters and outputs
- next up: interrupt-driven audio engine with audio_in and audio_out modules
- Who wants to start working on USB MIDI functionality?
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More