Micro Voice Alunia - Synthetic_Future X R_Ware

User avatar
ChR_is
Posts: 125
Joined: Wed Sep 22, 2021 5:48 pm

Micro Voice Alunia - Synthetic_Future X R_Ware

Post by ChR_is »

Hey everyone!

We are launching our first Micro Voice: Alunia.

Micro Voice Alunia is a modern take on a classic voice architecture designed for powerful, immediate sound creation within Voltage Modular.

Alunia has two bold oscillators, a sub oscillator, an expressive filter and a smooth and musical envelope. A versatile LFO and incredible stereo chorus rounds out the feature set.

Get Alunia:
https://store.cherryaudio.com/modules/m ... nia-bundle

Let's check out Alunia:
https://youtu.be/7MXD83xHE1o
User avatar
SpaceDog
Posts: 75
Joined: Thu Dec 17, 2020 11:29 am

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by SpaceDog »

I feel that I must ask, how does an oscillator become "bold"...? Have you done something different in particular with the oscillator design...?
User avatar
ChR_is
Posts: 125
Joined: Wed Sep 22, 2021 5:48 pm

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by ChR_is »

SpaceDog wrote: Tue May 20, 2025 1:54 pm I feel that I must ask, how does an oscillator become "bold"...? Have you done something different in particular with the oscillator design...?
That's an excellent question. Good on you for questioning our marketing blurb! ;)

tbh. "bold" is a rather elusive quality for an oscillator to have. We chose to describe it like that, because we think Alunia's oscillators stand on their own and sound strong in a patch. But of course, that is a very subjective measure.

on a more technical note, Alunia's oscillator are custom made for Alunia. They are Virtual Analog oscillators based on PolyBLEPs. Without going too much into the details that essentially means that naive waveforms are rounded off increasingly relative to the pitch using polynomial approximations to combat aliasing. In combination with oversampling this gives Alunia's oscillators a high-quality sound of course, but we have also tweaked the polynomials to make the waveforms more smooth, which accentuates the lower frequencies. Moreover, you can enable multiple waveforms per oscillator. There is a built-in level compensation, but it does scale upwards the more waveforms are active. and with both VCOs plus Sub Oscillator active the filter is quite driven. Now that's bold! You can hear the effect when you decrease the filter drive for a cleaner sound. Speaking of the Sub Oscillator, it's a little special as well. It's driven by the same phasor that drives VCO1 to guarantee that they are in phase regardless of drift, which gives Alunia a consistent and powerful low-end. What's more, the Sub Oscillator is a quasi-sine wave based oscillator that uses clever phase shaping to transition to triangle-ish or square-ish forms. it's always very smooth with a powerful low-end. In our opinion all of these features and tweaks make Alunia's oscillators stand out boldly.

Try the demo and judge for yourself whether you'd describe the sound as bold as well. You can actually grab each VCOs signal separately (or the Mixer output before the filter) to hear the raw VCO signals. Let us know what you think :)
UrbanCyborg
Posts: 640
Joined: Mon Nov 15, 2021 9:23 pm

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by UrbanCyborg »

Hey, Chris. Very interesting stuff! Is the polyBLEP your algorithm, or something that's out there in some form? I'm familiar with the normal BLEP algorithms, but hadn't heard of this version. Or is it a standard algorithm that you've come up with a custom polynomial for? I was curious in passing as to the algorithms you'd been using in your other stuff, whether you were using BLEP to smooth your oscillators, or some other approach. One method I was looking into is using filter oscillation as the oscillator; it would only give you sine waves, but they'd probably be pretty pristine, and, as you note, you can get the other waveforms from it via waveshaping. Seems to me it would put less load on the CPU than phasor-based designs, although, again, as you've noted, phasors do make synchronization pretty easy. Up until now, the only oscillator I've written for my modules was the one in Quadrature VLFO, and, of course, that was phasor-based. Well, many years ago in a computer music class I wrote some other oscillators, but they, too, were phasor-based wavetable algorithms. I tried to duplicate the functionality of Music V, if you've ever heard of that, but in C instead of FORTRAN. Mixed results, because my project took so much time on the PDP-20 we were using that the system watchstander shut it down after it had eaten four hours of core time. :oops: .

Oh, and I'm not asking you to give away trade secrets, as it were; just whatever you're comfortable with sharing. Thanks, Chris. Great module, BTW. I've only had time to play around with it a little, but I like what I hear!

Reid
Cyberwerks Heavy Industries -- viewforum.php?f=76
User avatar
utdgrant
Posts: 679
Joined: Wed Apr 07, 2021 8:58 am
Location: Scotland
Contact:

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by utdgrant »

UrbanCyborg wrote: Thu May 22, 2025 9:12 am One method I was looking into is using filter oscillation as the oscillator; it would only give you sine waves, but they'd probably be pretty pristine, and, as you note, you can get the other waveforms from it via waveshaping.
When I created the ACE Integrator module, I was surprised at how easy it was to create a 'harmonic oscillator' sine wave using very simple maths. No trigonometric functions, just simple cumulative additions over each sample period, yet it gives rise to this 'perfect' sine wave.

(Edit to add: the period of the waveform turned out to be exactly 2 pi seconds!)
HarmonicSineOscillator.jpg
HarmonicSineOscillator.jpg (104.1 KiB) Viewed 1217 times
______________________
Dome Music Technologies
User avatar
ChR_is
Posts: 125
Joined: Wed Sep 22, 2021 5:48 pm

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by ChR_is »

Damn this thread derailed hard.. well anyways, i'll try to address your questions:

UrbanCyborg wrote: Thu May 22, 2025 9:12 am Is the polyBLEP your algorithm, or something that's out there in some form? I'm familiar with the normal BLEP algorithms, but hadn't heard of this version. Or is it a standard algorithm that you've come up with a custom polynomial for? I was curious in passing as to the algorithms you'd been using in your other stuff, whether you were using BLEP to smooth your oscillators, or some other approach.
polyBLEP is by no means my algorithm. I'm sure you're familiar with BLEPs, but for anyone else wondering what this funny word means: Band Limited stEP. Waveforms with discontinuities have an endlessly decaying frequency spectrum. The issue is that we do not have an endless frequency range in the digital domain. we can only reproduce frequency content up to the so called nyquist frequency which is half the samplerate. in VM the samplerate is fixed at 48khz regardless of soundcard or daw settings (VM does the samplerate conversion on the way in/out). That gives us a frequency range from 0hz to 24khz. that's not endless. so what's happening when there is frequency content that is exceeding this range is that it folds back. and those folded frequencies are oftentimes inharmonic. that's aliasing in a nutshell. in order to stop those rogue frequencies from folding back, we have to get rid of them before they exist. that is band-limiting. we limit the frequency content of our signal to this frequency band. as said before, discontinuities produce unlimited frequencies. BLEPs are used to band-limit steps. a step is an instant transition from one signal level to another one. e.g. the step at the end to the beginning of a saw wave or the step at the beginning and middle of a square wave. BLEPs try to bandlimit this step by pretending to be a perfect filter response. essentially these are the wiggles filtering would produce. we then add these wiggles to the waveform. the perfect BLEP would in fact be the difference between a perfectly band-limited waveform and its naive form. Since it's not practical to calculate a perfectly band-limited waveform to band-limit a naive waveform (chicken and egg problem), we approximate the BLEP. a polyBLEP is a polynomial approximation of the wiggle. there are a few ways to calculate these polynomials which alters the outcome in one way or another. e.g. higher orders usually lead to more attenuation and better anti-aliasing, but need more samples before and after the discontinuity which might lead to issues when applying modulation or syncing the oscillator. and of course the more complex the polynomial gets the heavier the hit on the CPU gets. To put it short, polyBLEPs are a common way to effeciently combat anti-aliasing in virtual analog oscillators. Alunia uses a quite short but continuous polynomial that was tweaked to rolloff more highs.
UrbanCyborg wrote: Thu May 22, 2025 9:12 am One method I was looking into is using filter oscillation as the oscillator; it would only give you sine waves, but they'd probably be pretty pristine, and, as you note, you can get the other waveforms from it via waveshaping. Seems to me it would put less load on the CPU than phasor-based designs, although, again, as you've noted, phasors do make synchronization pretty easy.
Alunia's Sub Oscillator does not use waveshaping. We shape the phase before it is turned into a sine-ish wave to get the different waveshapes. The outcome is slightly different.
You are correct that you can get clean sine waves from self-oscillating filters. you can in fact get a (not so clean) sine wave from Alunia's filter by disabling all oscillator and turning the resonance knob way up. the reason this sine wave is slightly distorted is because Aluania's filter is a non-linear ladder lowpass filter. getting a stable filter without limiting non-linearities in the feedback path is a bit tricky, but possible. the main issue with using self-oscillating filters as oscillators is the lack of modulation options. you can indeed modulate the filter frequency, which comes close to FM, but that's it. you cannot phase modulate a filter and you can not through-zero fm a filter. you can also only get sine waves (or distorted sine waves) out of filters. and yea... you could waveshape this sine wave into different shapes, but why bother.
i've used filters as oscillators before for modal synthesis modules (e.g. Micro Modal Bandpass is -as the name implies- a self-oscillating bandpass filter). but as standalone oscillators i think they are boring.
the performance difference between a filter and a sine oscillator isn't that great tbh. for a phasor you essentially have an addition and a possible warp per sample (the wrapping can be implemented very efficiently by subtracting the phasor casted to int from itself for instance) and a sine approximation. e.g. a good minmax polynomial approximation of degree 5 is oftentimes sufficient already. especially with LFOs you could also get away with a simple cubic approximation.
utdgrant wrote: Thu May 22, 2025 11:29 am When I created the ACE Integrator module, I was surprised at how easy it was to create a 'harmonic oscillator' sine wave using very simple maths. No trigonometric functions, just simple cumulative additions over each sample period, yet it gives rise to this 'perfect' sine wave.

(Edit to add: the period of the waveform turned out to be exactly 2 pi seconds!)
if i interpret the integrator module correctly you've created a self-oscillating two pole bandpass, which produces a sine wave. good job.
i don't want to rain on your parade... but don't you need at least one trigonometric function to calculate the pre-warped filter/integrator coefficients? or can you not tune the integrator by frequency?

EDIT: i misinterpreted the patch. this is not a bandpass filter.
Last edited by ChR_is on Fri May 23, 2025 8:55 am, edited 1 time in total.
User avatar
utdgrant
Posts: 679
Joined: Wed Apr 07, 2021 8:58 am
Location: Scotland
Contact:

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by utdgrant »

ChR_is wrote: Thu May 22, 2025 8:44 pm
utdgrant wrote: Thu May 22, 2025 11:29 am When I created the ACE Integrator module, I was surprised at how easy it was to create a 'harmonic oscillator' sine wave using very simple maths. No trigonometric functions, just simple cumulative additions over each sample period, yet it gives rise to this 'perfect' sine wave.

(Edit to add: the period of the waveform turned out to be exactly 2 pi seconds!)
if i interpret the integrator module correctly you've created a self-oscillating two pole bandpass, which produces a sine wave. good job.
i don't want to rain on your parade... but don't you need at least one trigonometric function to calculate the pre-warped filter/integrator coefficients? or can you not tune the integrator by frequency?
I think the easiest way to think about the harmonic oscillator shown above is to think in terms of acceleration, velocity and displacement of a spring, or pendulum.

Treat the input to the left-hand integrator as 'acceleration'.

Treat the output of the left-hand integrator as 'velocity', which is fed to the input of the right-hand integrator.

Treat the output of the right-hand integrator as 'displacement from rest (0V)'.

The trick is to invert the polarity of the right-hand integrator's output (by switching to 'op-amp' mode) and feeding that back as 'negative acceleration' into the left-hand integrator's input.

Initialise the output of the left-hand integrator to +5V, and the output of the right-hand integrator to 0V. Once you place both integrators into the 'run' state the system starts 'swinging' like a pendulum.

Yes, in order to set up the coefficients for a specific frequency, you do require to use more complex maths, specifically "2 to the power of x" for a 1V/oct response (You can use the ACE Powers module to drive the "Slope" CV inputs). However once they are set, the actual generation of the sine wave at that frequency continues using only straightforward addition and accumulation.

And yes, I'm happy to move this topic into the Module Designer forum rather than derail this Alunia thread any futher. :oops:
______________________
Dome Music Technologies
User avatar
SpaceDog
Posts: 75
Joined: Thu Dec 17, 2020 11:29 am

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by SpaceDog »

Well, that will teach me to ask how an oscillator can become "bold"... :)

I've downloaded the demo (apologies, took me a while) and I shall be applying my sophisticated internal sensor array and perception analysis tools, and checking it out later. Thanks for the response, it did prompt me to take a listen.
User avatar
ChR_is
Posts: 125
Joined: Wed Sep 22, 2021 5:48 pm

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by ChR_is »

SpaceDog wrote: Fri May 23, 2025 7:24 am Well, that will teach me to ask how an oscillator can become "bold"... :)

I've downloaded the demo (apologies, took me a while) and I shall be applying my sophisticated internal sensor array and perception analysis tools, and checking it out later. Thanks for the response, it did prompt me to take a listen.
Honestly, it's good on you to question the marketing! ;)
there are lots of wild claims and window dressing in marketing. and especially when it comes to audio stuff. unfortunately we do need to play this game as well to stick out and get people to try our stuff. we do take care in how we promote our modules to always have a reason for our claims though.
i guess the derailment of this thread is on me for going a little too deep into the technical details. that seems to attract developers :D
to the devs, there is my open-source dsp library that i plan to extend with more stuff (including oscillators ;) ). but time is notoriously rare, so it might still take a while.


anyways, i hope you enjoy the demo and have lots of fun with Alunia :)
ColinP
Posts: 1031
Joined: Mon Aug 03, 2020 7:46 pm

Re: Micro Voice Alunia - Synthetic_Future X R_Ware

Post by ColinP »

As this thread has been derailed already, I thought I'd chip in.

The harmonic oscillator is simulating simple newtonian physics as Grant said.

I knocked up a simple module to demonstrate the principle...

Code: Select all

@Override
public void Initialize()
{
   // add your own code here

   slope = 10.0 / 48000.0;   // frequency divided by sample rate
   a = 5;   // the start displacement
}

Code: Select all

@Override
public void ProcessSample()
{
   // add your own code here

   a += oldB * slope;
   b -= oldA * slope;
   oldA = a;
   oldB = b;
   sineOut.SetValue( a );
   cosineOut.SetValue( b );
}

Code: Select all

// Add your own variables and functions here

private double slope;
private double a;
private double oldA;
private double b;
private double oldB;
The output looks like this...
harmonicOsc.png
harmonicOsc.png (20.41 KiB) Viewed 994 times
Post Reply

Return to “R_Ware”