I've requested this in the mailing list before, but now that we have more developers I figure it's a good time to suggest it again.
The idea is another native synthesizer that creates grimy dubstep sounds. I have a VST version I've written using FlowStone (called Karnoid), but I haven't been able to port it to LMMS because I don't know a darn thing about QT.
Below is a cruddy screenshot of the VST running in Ableton.
It uses two wavetables like BitInvader, but unlike BitInvader, they are generated using functions rather than being drawn. One wavetable performs FM on the other. It's fairly simple, but the results are great sounding.
If any developers are interested in assisting this port, please let me know.
EDIT
Here's an outdated audio sample, but a sample nonetheless.
https://soundcloud.com/cubician/growl2-test~~ (dead link)
Sounds awesome! Got any demos of the sound?
Not yet. But I will once I get the VST working properly, I'm having a GUI
bug I'm going to fix first.
As far as how it sounds...
You can make pretty much anything from Astronaut to Zomboy.
It's fairly limited to growls with just five knobs, but eventually it will have lots of other options for other kinds of EDM grime.
EDIT
Here's an old sample I put on soundcloud when I first started development.
https://soundcloud.com/cubician/growl2-test~~ (dead link)
On Fri, Dec 12, 2014 at 11:21 AM, Spekular [email protected] wrote:
Sounds awesome! Got any demos of the sound?
—
Reply to this email directly or view it on GitHub
https://github.com/LMMS/lmms/issues/1436#issuecomment-66821222.
@cubician Did you finish your VST? If it's the case, how could we help you integrate this as an instrument/bundled vst inside lmms?
@cubician Cool thing!
I see that you've put the thing on your page.
https://github.com/cubician/Karnex
Do you want people to fork that and send you pull requests?
@zonkmachine
It doesn't look like that repository has all of the code needed to build Karnex. Just looking in Karnex.cpp, most of the functions declared in the header aren't actually filled out in the source file.
It looks to me like that repository was the author's attempt to port Karnex to LMMS, and he either lost interest or lost the time to complete it. Unfortunately, I can't find the original Karnex code anywhere. But if you're reading this, @cubician you should just upload a dump of the FlowStone/Karnoid version somewhere and we can try to revive it!
It's a bit intimidating to get started with coding for a project of this size complexity. I don't think there is a function in flowstone to export as C++ code (I may be wrong here) so the synth probably needs to be more or less reimplement. If he just needs the GUI stuff to get going and interface with his functions that should be a pretty easy task for someone here to assist with.
Hey! So the original Karnex flowstone file was lost. My laptop got
destroyed (violently) and I no longer have the file.
However, I have been working on a remake of it, but I have nothing worth
sending you guys yet. I can sketch a flowchart thing to show how it works,
and maybe you guys can work on it from there. I know nothing of C++. Hence
the empty .cpp files.
Here's how Karnex works in theory:
Karnex uses two oscillators.
The signal begins at the "voice" oscillator. This is a two-dimensional
wavetable, which morphs between a triangle, circle, and parabolic waveform
through two knobs. This can be pitched up or down 3 octaves with a knob. A
third "chop" knob adds white space at the end of the waveform.
The second oscillator, the "mouth" oscillator, is a one-dimensional
wavetable that uses a single knob to cycle through the "formant" waves (I
will provide a formula to generate this). This can also be pitched up/down
3 octaves. This also has a "chop" knob.
The mouth oscillator then modulates the frequency of the voice oscillator.
The maximum amount can be determined with a knob, then a second knob
determines what percentage of that maximum amount is applied. The second
knob is the one to use for modulation.
I had plans for more complex things, like a filter with a filter fm osc,
but for the purpose of a native LMMS synth, the above information should be
sufficient. I will provide bits of what I have so far.
On Sun, Jun 7, 2015 at 6:42 PM, Oskar Wallgren [email protected]
wrote:
It's a bit intimidating to get started with coding for a project of this
size complexity. I don't think there is a function in flowstone to export
as C++ code (I may be wrong here) so the synth probably needs to be more or
less reimplement. If he just needs the GUI stuff to get going and interface
with his functions that should be a pretty easy task for someone here to
assist with.—
Reply to this email directly or view it on GitHub
https://github.com/LMMS/lmms/issues/1436#issuecomment-109818728.
Here is a really bad flowchart.
On Tue, Jun 9, 2015 at 12:48 PM, Ian Sannar ian.[email protected] wrote:
Hey! So the original Karnex flowstone file was lost. My laptop got
destroyed (violently) and I no longer have the file.
However, I have been working on a remake of it, but I have nothing worth
sending you guys yet. I can sketch a flowchart thing to show how it works,
and maybe you guys can work on it from there. I know nothing of C++. Hence
the empty .cpp files.Here's how Karnex works in theory:
Karnex uses two oscillators.
The signal begins at the "voice" oscillator. This is a two-dimensional
wavetable, which morphs between a triangle, circle, and parabolic waveform
through two knobs. This can be pitched up or down 3 octaves with a knob. A
third "chop" knob adds white space at the end of the waveform.The second oscillator, the "mouth" oscillator, is a one-dimensional
wavetable that uses a single knob to cycle through the "formant" waves (I
will provide a formula to generate this). This can also be pitched up/down
3 octaves. This also has a "chop" knob.The mouth oscillator then modulates the frequency of the voice oscillator.
The maximum amount can be determined with a knob, then a second knob
determines what percentage of that maximum amount is applied. The second
knob is the one to use for modulation.I had plans for more complex things, like a filter with a filter fm osc,
but for the purpose of a native LMMS synth, the above information should be
sufficient. I will provide bits of what I have so far.On Sun, Jun 7, 2015 at 6:42 PM, Oskar Wallgren [email protected]
wrote:It's a bit intimidating to get started with coding for a project of this
size complexity. I don't think there is a function in flowstone to
export as C++ code (I may be wrong here) so the synth probably needs to be
more or less reimplement. If he just needs the GUI stuff to get going and
interface with his functions that should be a pretty easy task for someone
here to assist with.—
Reply to this email directly or view it on GitHub
https://github.com/LMMS/lmms/issues/1436#issuecomment-109818728.
I can sketch a flowchart thing to show how it works, and maybe you guys can work on it from there. I know nothing of C++.
There's kind of a gap between "to chip in" and "maybe you guys can work on it from there". I was rather aiming for the first of them. ;-)
It's not unrealistic to learn C++ enough to pull it off though. You know how to lay out an algorithm enough to work in FlowStone and that's a good start.
The closest to FlowStone I know that works cross platform is Faust. The site is down right now but I leave you a link anyway for future adventures.
http://faust.grame.fr/
With help from @DouglasDGI, I learned enough about LMMS native plugins to cobble it together. It can be found here.
I still have very little experience, but getting this working was incredibly fun. If there's anything I can do better, I am glad to hear how I can improve.
@iansannar Cool! Can you submit a Pull Request for this plugin? Just hit the button for this on the https://github.com/iansannar/lmms/tree/SynchroSynth branch.
Most helpful comment
With help from @DouglasDGI, I learned enough about LMMS native plugins to cobble it together. It can be found here.
I still have very little experience, but getting this working was incredibly fun. If there's anything I can do better, I am glad to hear how I can improve.