Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New native LMMS synth #1436

Closed
rubiefawn opened this issue Dec 12, 2014 · 12 comments
Closed

New native LMMS synth #1436

rubiefawn opened this issue Dec 12, 2014 · 12 comments

Comments

@rubiefawn
Copy link
Contributor

rubiefawn commented Dec 12, 2014

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.
capture

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)

@Spekular
Copy link
Member

Sounds awesome! Got any demos of the sound?

@rubiefawn
Copy link
Contributor Author

rubiefawn commented Dec 12, 2014

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 notifications@github.com wrote:

Sounds awesome! Got any demos of the sound?


Reply to this email directly or view it on GitHub
#1436 (comment).

@badosu
Copy link
Contributor

badosu commented Jan 28, 2015

@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?

@zonkmachine
Copy link
Member

@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?

@Wallacoloo
Copy link
Member

@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!

@zonkmachine
Copy link
Member

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.

@rubiefawn
Copy link
Contributor Author

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 notifications@github.com
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
#1436 (comment).

@rubiefawn
Copy link
Contributor Author

Here is a really bad flowchart.

On Tue, Jun 9, 2015 at 12:48 PM, Ian Sannar ian.sannar@gmail.com 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 notifications@github.com
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
#1436 (comment).

@zonkmachine
Copy link
Member

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/

@rubiefawn rubiefawn changed the title Karnex Growl Synth New native LMMS synth Aug 18, 2019
@rubiefawn
Copy link
Contributor Author

rubiefawn commented Aug 18, 2019

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.

@zonkmachine
Copy link
Member

@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.

@rubiefawn
Copy link
Contributor Author

#5147

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants