KODE
(v0.0.0)
my personal plugin framework.. in progress..
ladspa, dssi, lv2, vst2, vst3, standalone executable
(update: i will probably rip out the ladspa, dssi and lv2 code, and keep only vst2/3, plus standalone)
https://github.com/skei/kode
gui (xcb, cairo) is coming along nicely.
KODE
Moderators: MattKingUSA, khz
-
- Established Member
- Posts: 1511
- Joined: Sun Jan 27, 2019 2:25 pm
- Location: Italy
- Has thanked: 382 times
- Been thanked: 298 times
Re: KODE
Great! I like the kind of C++ you are writing, makes sense for real-time programs.
As soon as you start making releases, I will make an openSUSE package for it
As soon as you start making releases, I will make an openSUSE package for it
The community of believers was of one heart and mind, and no one claimed that any of his possessions was his own, but they had everything in common. [Acts 4:32]
Please donate time (even bug reports) or money to libre software
Jam on openSUSE + GeekosDAW!
Please donate time (even bug reports) or money to libre software
Jam on openSUSE + GeekosDAW!
- skei
- Established Member
- Posts: 339
- Joined: Sun May 18, 2014 4:24 pm
- Has thanked: 8 times
- Been thanked: 57 times
- Contact:
Re: KODE
been busy making music, and finalizing (yet another) album, but now that i have a bit more time available, i plan to pick up the pace, and continue where i left off..
made a short gif to better show some of the features of the gui system "in motion", and a few of the existing widgets.. each widget has its own settings for child/parent hierarchy, drawing, stretching, scaling, autoalignment, etc, and with that you can make some pretty intricate interface setups..
it's not using any gui toolkit, everything is coded from scratch, and only using lowlevel xlib (xcb) and cairo.. note that the low framerate is because of peek.. everything is actually smooth and fluid here.. but there's some obvious glitches and shortcomings seen in the gif that i will start fixing now that things seem to work as i want..
i have mostly been focused on the functionality, not the visual appearances.. i made everything gray and boring on purpose since the painting is decoupled from the event system, you can easily make the widgets look exactly how you want.. using bitmaps, or vector graphics or a combination..
-
- Established Member
- Posts: 1511
- Joined: Sun Jan 27, 2019 2:25 pm
- Location: Italy
- Has thanked: 382 times
- Been thanked: 298 times
Re: KODE
Looks great for plugins!skei wrote: ↑Wed Apr 29, 2020 6:39 am
it's not using any gui toolkit, everything is coded from scratch, and only using lowlevel xlib (xcb) and cairo.. note that the low framerate is because of peek.. everything is actually smooth and fluid here.. but there's some obvious glitches and shortcomings seen in the gif that i will start fixing now that things seem to work as i want..
i have mostly been focused on the functionality, not the visual appearances.. i made everything gray and boring on purpose since the painting is decoupled from the event system, you can easily make the widgets look exactly how you want.. using bitmaps, or vector graphics or a combination..
Wouldn't using xlib and xcb be a problem for Wayland users (I don't use Wayland, just wondering)?
The community of believers was of one heart and mind, and no one claimed that any of his possessions was his own, but they had everything in common. [Acts 4:32]
Please donate time (even bug reports) or money to libre software
Jam on openSUSE + GeekosDAW!
Please donate time (even bug reports) or money to libre software
Jam on openSUSE + GeekosDAW!
- skei
- Established Member
- Posts: 339
- Joined: Sun May 18, 2014 4:24 pm
- Has thanked: 8 times
- Been thanked: 57 times
- Contact:
Re: KODE
i don't use wayland either, and don't plan to, unless i have to..
but the os/gui-level part is separated from the rest of the code, so it should be easy to make a wayland backend, if it becomes necessary..
also, until wayland takes over completely (if ever), there are things like xwayland..
- skei
- Established Member
- Posts: 339
- Joined: Sun May 18, 2014 4:24 pm
- Has thanked: 8 times
- Been thanked: 57 times
- Contact:
Re: KODE
decided to put together a simplistic synth, for testing purposes..
if everything works, i can start working on some real plugins..
* linux, 64-bit
* antialiased morph/blend oscillator
* simple svf filter
* exponential envelopes
* everything calculated per sample
* 16 voices polyphony
* no oversampling
* no pitchbend, aftertouch, mpe, etc (yet)
* not heavily optimized
* parameters (ranges, etc) not properly scaled/calibrated
* uses xlib/xcb for gui, cairo for drawing
* all supported formats (vst2, vst3 [and ladspa]) in the same binary file
* works in reaper & bitwig
download (349kb): sa_synth1_v0.0.0.zip
move 'sa_synth1.so' somewhere your daw/host is looking for vst2 plugins (like ~/.vst), and the entire 'sa_synth1.vst3' folder where you have your vst3 plugins (for example ~/.vst3)..
if everything works, i can start working on some real plugins..
* linux, 64-bit
* antialiased morph/blend oscillator
* simple svf filter
* exponential envelopes
* everything calculated per sample
* 16 voices polyphony
* no oversampling
* no pitchbend, aftertouch, mpe, etc (yet)
* not heavily optimized
* parameters (ranges, etc) not properly scaled/calibrated
* uses xlib/xcb for gui, cairo for drawing
* all supported formats (vst2, vst3 [and ladspa]) in the same binary file
* works in reaper & bitwig
download (349kb): sa_synth1_v0.0.0.zip
move 'sa_synth1.so' somewhere your daw/host is looking for vst2 plugins (like ~/.vst), and the entire 'sa_synth1.vst3' folder where you have your vst3 plugins (for example ~/.vst3)..
- sysrqer
- Established Member
- Posts: 2521
- Joined: Thu Nov 14, 2013 11:47 pm
- Has thanked: 319 times
- Been thanked: 149 times
- Contact:
Re: KODE
Just gave the synth a try in Reaper. It seems strange to me that I can hear a saw(?) with all three oscillators at zero.
The envelopes don't act as I would expect. With the default settings the release for amp env appears to do nothing yet has some kind of relationship with the filter env (env release only has an effect if filter env release is up). Of course there are no rules but for a basic synth I would expect those two envs to be independent or at least for the filter env to be activated/deactivated, at the moment if you have the filter env all the way down (off I would expect) then you get no sound.
Edit: just realised that you have to turn the filter off for the amp env to work correctly so I suppose what I wrote above is kind of irrelevant.
If oscs are turned all the way up then there is just a sine?
BW seems to be the wrong way around, to the left is high res and to the right is little res.
Width I think goes too far, all the way to the left or right makes no sound at all. I know this might be useful if you want triggers but according to reaper's meters nothing at all is output.
Edit 2: * parameters (ranges, etc) not properly scaled/calibrated - missed that bit, makes more sense about directions of sliders and ranges now.
Other than that it's a good start, the filters sound nice. I was getting weird bursts of noise or something but they seemed almost random.
The envelopes don't act as I would expect. With the default settings the release for amp env appears to do nothing yet has some kind of relationship with the filter env (env release only has an effect if filter env release is up). Of course there are no rules but for a basic synth I would expect those two envs to be independent or at least for the filter env to be activated/deactivated, at the moment if you have the filter env all the way down (off I would expect) then you get no sound.
Edit: just realised that you have to turn the filter off for the amp env to work correctly so I suppose what I wrote above is kind of irrelevant.
If oscs are turned all the way up then there is just a sine?
BW seems to be the wrong way around, to the left is high res and to the right is little res.
Width I think goes too far, all the way to the left or right makes no sound at all. I know this might be useful if you want triggers but according to reaper's meters nothing at all is output.
Edit 2: * parameters (ranges, etc) not properly scaled/calibrated - missed that bit, makes more sense about directions of sliders and ranges now.
Other than that it's a good start, the filters sound nice. I was getting weird bursts of noise or something but they seemed almost random.
- skei
- Established Member
- Posts: 339
- Joined: Sun May 18, 2014 4:24 pm
- Has thanked: 8 times
- Been thanked: 57 times
- Contact:
Re: KODE
thanks for testing..sysrqer wrote: ↑Thu Jun 04, 2020 1:44 pm Just gave the synth a try in Reaper. It seems strange to me that I can hear a saw(?) with all three oscillators at zero.
The envelopes don't act as I would expect. With the default settings the release for amp env appears to do nothing yet has some kind of relationship with the filter env (env release only has an effect if filter env release is up). Of course there are no rules but for a basic synth I would expect those two envs to be independent or at least for the filter env to be activated/deactivated, at the moment if you have the filter env all the way down (off I would expect) then you get no sound.
Edit: just realised that you have to turn the filter off for the amp env to work correctly so I suppose what I wrote above is kind of irrelevant.
If oscs are turned all the way up then there is just a sine?
BW seems to be the wrong way around, to the left is high res and to the right is little res.
Width I think goes too far, all the way to the left or right makes no sound at all. I know this might be useful if you want triggers but according to reaper's meters nothing at all is output.
Edit 2: * parameters (ranges, etc) not properly scaled/calibrated - missed that bit, makes more sense about directions of sliders and ranges now.
Other than that it's a good start, the filters sound nice. I was getting weird bursts of noise or something but they seemed almost random.
yeah, the parameters and stuff are weird..
i will change all that when things are becoming a bit more stable.. and use more traditional ranges, milliseconds and decibels, etc.. at the moment, i'm more concerned about the 'innards', the low level code, plugin format specific things, binary compability, etc, than the sound generation and/or user experience things..
but it's nice to hear what people think about it all, and i will of course take all that into consideration..
the osc parameters:
with all sliders at zero, it starts out as a saw.. with the 'squ' slider you morph between saw and square/pulse (and the 'width' slider affects the pulse width).. the 'tri' slider then morph between the square/pulse and triangle (or parabola if 'squ' is zero).. finally 'sin' morphs the result towards a pure sin.. it's not ideal, just something i put together quickly to test the oscillator/waveform generation stuff.. i'm not sure if i will keep the current scheme at all, or have a 'regular' mix of different waveforms, or something else..
you can put an oscilloscope plugin or something after it, to see how it changes when you tweak the sliders..
the filter envelope controls the filter frequency, and is always applied, there's no modulation amount.. so, with a short release, the sound is quickly filtered away, and not audible, even with a long volume envelope release..
i will add a modulation matrix of some sort soon, and with that there will be a lot more flexibility.. modulation amounts, scaling, etc..
the filter is using bandwidth (bw), not resonance.. maybe i should just invert it, and call it resonance.. or use another filter.. we'll see..
pulse width at 0% or 100% produces no sound, i know.. but i don't want to restrict anything yet.. will look at those kind of things a little later..
[edit]
the squ/tri slider could perhaps be changed to a x/y control..
something like..
Code: Select all
SAW _________ SQU
| | |
| | |
|----x----|
| | |
|____|____|
PAR TRI
plus two sliders:
* smooth (previously 'sin')
* width (pulse width)
- tor-helge
but i'm concerned about the 'weird bursts of noise'.. i'm right in the middle of adapting everything to mpe, so there might be some issues related to voice allocation and similar.. if i turn on 'mpe compatible' in bitwig, it crashes quite quickly, which might indicate that there's something fishy with midi channels.. i'll investigate..