Login / Register  0 items | $0.00 New
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Wed Aug 02, 2017 3:00 am Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

You guys don't know me, but for the last couple of months I've delved into the world of DSP plugin development. Especially synthesizer development. It has always been a dream of my to create my own synths. So I decided to build one.

I knew nothing about DSP. I'd never worked in c++. I only knew some C# and Java working on games in Unity some odd years ago.
But, with the help of the excellent JUCE framework and spending nearly all of my free time on reading tutorials on c++, endless forum posts and sites on synthesizer development, I'd like to think my first project, be it simple, is pretty decent so far.

I've made a simple 3 OSC synthesizer, which features a Moog style ladder filter and 3 envelopes for controlling amplitude, cutoff and combined pitch:

Image

I've compiled a standalone and VST version which are 64 bit only. I've build both for the macOS 10.11 and up (maybe even lower, but didn't have to chance to test) and Windows 7 x64 platforms.

So, I want you guys to let me know what you think! Any feedback on sound quality, features, bugs, anything, is all appreciated!
You can find a Mac version over here, and a Windows version over here.

I'll also post my code to GitHub soon.
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Wed Aug 02, 2017 3:53 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

And the GitHub repo containing all of the source code used:
https://github.com/mohragk/VermeerMonosynth-1
Ivan_C
KVRian
 
1020 posts since 11 Aug, 2004, from Marcoussis, France

Postby Ivan_C; Wed Aug 02, 2017 4:46 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

Hello ! Nice project there :wink:

However, be careful, you have put a font in your GitHub project folder, which isn't GPL at all, so you need to remove it there, and ideally to replace it with something else in the whole project.
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Wed Aug 02, 2017 10:39 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

Ivan_C wrote:Hello ! Nice project there :wink:

However, be careful, you have put a font in your GitHub project folder, which isn't GPL at all, so you need to remove it there, and ideally to replace it with something else in the whole project.


Oh right! Will quickly erase it.
hibrasil
KVRian
 
714 posts since 23 Jun, 2002, from York, UK

Postby hibrasil; Wed Aug 02, 2017 3:16 pm Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

good work! i noticed some #pragma once and #ifdefs doing the same thing here https://github.com/mohragk/VermeerMonos ... lterBase.h
My Site | WDL-OL | Web Audio Modules - WAMs | Linkedin | Facebook
Available for Audio Dev tuition via Skype (IPlug/JUCE/C++)
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Thu Aug 03, 2017 2:09 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

hibrasil wrote:good work! i noticed some #pragma once and #ifdefs doing the same thing here https://github.com/mohragk/VermeerMonos ... lterBase.h



Yes, I still have to clean up my code and add more commenting. Thanks!
RPH
KVRian
 
966 posts since 20 Nov, 2005, from The Netherlands

Postby RPH; Sun Aug 06, 2017 7:11 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

Cheers on the release.

Some things I notice:

- The filter envelope isn't working here ( Renoise ).
- Don't the filter you used, turning up the reso sounds bad and causes detuning of the feedback at high values ( turn it up and see it move to the left in a spectrum analyzer ).
- The keys played inside the plugin don't correspond to the key octave in e.g. Renoise ( like C3 in your plugin is C5 in Renoise ).
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Tue Aug 22, 2017 5:46 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

RPH wrote:Cheers on the release.

Some things I notice:

- The filter envelope isn't working here ( Renoise ).
- Don't the filter you used, turning up the reso sounds bad and causes detuning of the feedback at high values ( turn it up and see it move to the left in a spectrum analyzer ).
- The keys played inside the plugin don't correspond to the key octave in e.g. Renoise ( like C3 in your plugin is C5 in Renoise ).


Just noticed your response whn returned from my holiday in the Czech Republic (which was awesome by the way!).

Anyway, this synth is still under development so thanks for your feedback! My question is, are you using a Mac or Windows machine?

The filter envlope is engaged with the 'contour' knob. So, set the cutoff knob to 0 (all the way CCW) and increase the contour knob to modulate the cutoff frequency, using the envelope.

The detuning of the resonance is something I probably won't know how to fix. I've simply used this filter code under GNU license and is still abracadabra to me, to be honest haha.
I've also noticed an issue where the cutoff is different when choosing a higher samplerate.. When set to 96k for instance, the synth becomes much brighter. So I will probably swapthe filter code out completely.

As for the difference in octaves between the onscreen keys and mididata, I will look into this, thanks.
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Wed Aug 23, 2017 5:57 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

I've build a new version of my synth which features an LFO that can be set to different modulation targets. I've also included a portamento knob, which basically lerps all frequency shifts, including the LFO and envelope modulations. I know, probably unwanted behaviour but interesting nevertheless.

Here's an updated Windows version. MacOS will come soon.

Oh, and I've added some more presets for the standalone version.
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Mon Aug 28, 2017 10:38 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

UPDATE

Added the VST DLL in the Windows package.
quikquak
KVRist
 
298 posts since 6 Aug, 2005, from England

Postby quikquak; Mon Aug 28, 2017 12:54 pm Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

I'm getting a lot of what sounds like clipping noise when it's playing.
FL Studio 11, 64 bit.
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Tue Aug 29, 2017 3:52 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

quikquak wrote:I'm getting a lot of what sounds like clipping noise when it's playing.
FL Studio 11, 64 bit.


Hmm, that's very strange. Do you run the Mac or Windows version?
quikquak
KVRist
 
298 posts since 6 Aug, 2005, from England

Postby quikquak; Tue Aug 29, 2017 5:30 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

meneervermeer wrote:
quikquak wrote:I'm getting a lot of what sounds like clipping noise when it's playing.
FL Studio 11, 64 bit.


Hmm, that's very strange. Do you run the Mac or Windows version?


Windows.
If I set it to use 'fix sized buffers' in the plug options it works in FL OK though. So make sure it works OK with potentially single sample sized buffers that FL Studio tends to use. It sounds like you're resetting something at the start of every loop. Rather than treating it all as a single stream of data.
meneervermeer
KVRer
 
15 posts since 2 Aug, 2017

Postby meneervermeer; Tue Aug 29, 2017 10:59 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

quikquak wrote:Windows.
If I set it to use 'fix sized buffers' in the plug options it works in FL OK though. So make sure it works OK with potentially single sample sized buffers that FL Studio tends to use. It sounds like you're resetting something at the start of every loop. Rather than treating it all as a single stream of data.


That makes sense. The issue I had was that the buffer didn't sound smooth because it can't calculate per sample (I tried). It has to use a block of samples. So what happens is that when setting a bigger buffer size in your DAW/soundcard and turning the cutoff knob, it sounded steppy. Especially with larger buffersizes. To overcome this I actually check the buffer size set in the audio card and cut up the bufferblock into smaller chunks if too big, and then process each block. It's a bit hacky but it works.

Code: Select all
const int numSamples = buffer.getNumSamples();
   
    float* channelDataLeft  = (float*) buffer.getWritePointer(0);
    float* channelDataRight = (float*) buffer.getWritePointer(1);
   
    //
    //  break buffer into chunks
    //
    float stepSize = (float) numSamples / 32.0;
   
    float *pLeft;
    float *pRight;
   
    pLeft = channelDataLeft;
    pRight = channelDataRight;
   
    if (stepSize > 1.0)
    {
       for(int step = 0; step < numSamples; step += (int)stepSize)
       {
           for(int channel = 0; channel < 2; channel++)
            {
                filter2[channel].SetResonance   (resonance.getNextValue());
                filter2[channel].SetCutoff      (cutoff.getNextValue());
                filter2[channel].SetDrive       (drive.getNextValue());
            }
           
            filter2[0].Process(pLeft, stepSize);
            filter2[1].Process(pRight, stepSize);
            pLeft  += (int)stepSize;
            pRight += (int)stepSize;
        }
    }
    else
    {
        for(int channel = 0; channel < 2; channel++)
        {
            filter2[channel].SetResonance   (resonance.getNextValue());
            filter2[channel].SetCutoff      (cutoff.getNextValue());
            filter2[channel].SetDrive       (drive.getNextValue());
        }
        filter2[0].Process(channelDataLeft,  numSamples);
        filter2[1].Process(channelDataRight, numSamples);
    }


I can imagine that when the buffersize is effectively 1 sample, the filter get's glitchy.
mystran
KVRAF
 
4597 posts since 11 Feb, 2006, from Helsinki, Finland

Postby mystran; Thu Aug 31, 2017 5:12 am Re: Vermeer MonoSynth-1, a simple 3 OSC monosynth, inspired by the MiniMoog

meneervermeer wrote:
quikquak wrote:Windows.
If I set it to use 'fix sized buffers' in the plug options it works in FL OK though. So make sure it works OK with potentially single sample sized buffers that FL Studio tends to use. It sounds like you're resetting something at the start of every loop. Rather than treating it all as a single stream of data.


That makes sense. The issue I had was that the buffer didn't sound smooth because it can't calculate per sample (I tried). It has to use a block of samples. So what happens is that when setting a bigger buffer size in your DAW/soundcard and turning the cutoff knob, it sounded steppy. Especially with larger buffersizes. To overcome this I actually check the buffer size set in the audio card and cut up the bufferblock into smaller chunks if too big, and then process each block. It's a bit hacky but it works.


The thing that's important to remember is that the buffer size as reported by the host is the maximum size of what you might get asked to process at once. The number of samples you actually get into your processReplacing (or whatever equivalent function) can actually vary quite a bit (which is why there's an argument for it. In some cases like FL Studio it's basically guaranteed to vary all the time, in some other hosts it's "usually buffersize" with an odd shorter buffer once in a while (eg. when hitting loop point or something) and then some hosts just always use fixed size buffers all the way... but point is, the actual block size is variable and simply has an upper bound.
Image <- plugins | forum
Next

Moderator: Moderators (Main)

Return to DSP and Plug-in Development