KODE

Programming applications for making music on Linux.

Moderators: MattKingUSA, khz

Post Reply
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

KODE

Post by skei »

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.

Image
Last edited by skei on Sun Apr 12, 2020 6:00 pm, edited 1 time in total.
Basslint
Established Member
Posts: 1511
Joined: Sun Jan 27, 2019 2:25 pm
Location: Italy
Has thanked: 382 times
Been thanked: 298 times

Re: KODE

Post by Basslint »

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 :D
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!
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

Re: KODE

Post by skei »

Basslint wrote: Wed Apr 08, 2020 11:19 amAs soon as you start making releases, I will make an openSUSE package for it :D
cool! that would be awesome!
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

Re: KODE

Post by skei »

gui progress.. everything is scaleable, stretchable, autoalignable, userdrawable,.. :-)

Image
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

Re: KODE

Post by skei »

Image

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..
Basslint
Established Member
Posts: 1511
Joined: Sun Jan 27, 2019 2:25 pm
Location: Italy
Has thanked: 382 times
Been thanked: 298 times

Re: KODE

Post by Basslint »

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..
Looks great for plugins!

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!
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

Re: KODE

Post by skei »

Basslint wrote: Tue May 05, 2020 2:28 pmWouldn't using xlib and xcb be a problem for Wayland users (I don't use Wayland, just wondering)?
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..
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

Re: KODE

Post by skei »

decided to put together a simplistic synth, for testing purposes..
if everything works, i can start working on some real plugins.. :-)

Image

* 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)..
User avatar
sysrqer
Established Member
Posts: 2520
Joined: Thu Nov 14, 2013 11:47 pm
Has thanked: 319 times
Been thanked: 148 times
Contact:

Re: KODE

Post by sysrqer »

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.
User avatar
skei
Established Member
Posts: 337
Joined: Sun May 18, 2014 4:24 pm
Has thanked: 8 times
Been thanked: 57 times
Contact:

Re: KODE

Post by skei »

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.
thanks for testing..

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
where 'squ' is horizontal and 'tri' is vertical
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..
Post Reply