[Csnd] SEM / Oberheim filters?

Dr. B. – yes, we were discussing this last month (or longer?) during the Zoom meeting, if you remember. The perception in many quarters that Csound is “old” or “a dead project” is lamentable.

Promoting Csound is something I regularly do. It stands up so well against so many commercial products, and other open source offerings, too, but it doesn’t have the “mindshare”, let’s call it, that other projects do. Glad to hear that a new generation of game designers recognize its power.

An aside: it’s just a lamentable thing in general that in tech, a project is considered “dead” or abandoned if there haven’t been updates in several months. The struggle/pressure to fight that perception is real. That said, it would be awesome to have a new release sooner than later to change that perception.

Aside-aside: I learned some things in the “diet csound” project that the main devs might consider useful in the form of a pull request at some point (assuming it was welcome) – even though the main goal of the “diet csound” is a more “customizable/minimalist” release, I also reorganized a few things in a way that felt cleaner and more logical (specifically, opcodes that are logical related should logically live together in the codebase, and there are several files in the main repo that simply defy this principle). As well, unifying the process of registering all opcodes in the “new style” used by extensions/plugins would be nice and make the code more understandable across-the-board. I think something like that might attract more folks into trying their hand at assisting in the development of Csound, which keeps the enthusiasm and activity within the community high. There’s no reason something with the current visibility and vogue of VCVRack, which makes it easy for folks to make plugins, couldn’t be applied to Csound’s code. People should be encouraged to extend, customize it, own it…that’s how you give an open source project new life. But first – the code has to be really cleaned up, IMO. It’s amazing, it works, but it’s, well, chaotic in a way that represents decades of cruft.

Things like faust, where I can make a new opcode easily, and faust opcodes, where I could write embedded faust code, and interoperability with PD/Max are wise, too – take advantage of the ability of being able to coexist with other popular DSP tools in a way that feels like an alloy…

I think it would be really helpful if there was something, preferably on the main website, which detailed the modern opcodes - particularly the ‘analog modelled ones’. If you choose the wrong opcodes then CSound doesn’t sound very good by modern ‘DAW’/plugin standards - but unfortunately those are the opcodes that are generally recommended in the tutorials.

I think I know which are the best opcode filters to use, though I’m still not 100%. I’m still not 100% sure which are the best non-aliasing oscillators. And if I want a decent compressor, or non-aliasing distortion, then I have no idea. And if someone just wants some simple effects (reverb, compressor, etc) - they will have to do a lot of research. If you’ve come from a world where those things are just available - why would it even occur to you that you have to do the research?

I know CSound can sound really good - but people out there will only know if you actually tell them how to achieve that. Preferably in a pretty prominent place.

Hi Cian, I am working on something for my own purposes that might help there if it comes out ok - a Max/csound device that will enable swapping out the various filters while keeping input controls in a tuned range for each filter. Perhaps if it works well it could be ported to WASM or distributed as a Max standalone (requires no license) for people to try them out.

You are right that this can be a hard area to get into for Csound, though it’s understandable as it’s not likely a big reason people get into Csound. (VA fans being more likely to gravitate to things like VCV or Zebra or what not).

Hi!

Anton Kholmiov created once a nice comparison tool or demo for different filters and there is apparently also Cabbage example:
https://forum.cabbageaudio.com/t/csound-filters-demonstration/192
I hade them also downloaded and attach here.

Best!
tarmo

Kontakt Iain Duncan (<iainduncanlists@gmail.com>) kirjutas kuupäeval E, 1. aprill 2024 kell 18:36:

Hi Cian, I am working on something for my own purposes that might help there if it comes out ok - a Max/csound device that will enable swapping out the various filters while keeping input controls in a tuned range for each filter. Perhaps if it works well it could be ported to WASM or distributed as a Max standalone (requires no license) for people to try them out.

You are right that this can be a hard area to get into for Csound, though it’s understandable as it’s not likely a big reason people get into Csound. (VA fans being more likely to gravitate to things like VCV or Zebra or what not).

I think it would be really helpful if there was something, preferably on the main website, which detailed the modern opcodes - particularly the ‘analog modelled ones’. If you choose the wrong opcodes then CSound doesn’t sound very good by modern ‘DAW’/plugin standards - but unfortunately those are the opcodes that are generally recommended in the tutorials.

I think I know which are the best opcode filters to use, though I’m still not 100%. I’m still not 100% sure which are the best non-aliasing oscillators. And if I want a decent compressor, or non-aliasing distortion, then I have no idea. And if someone just wants some simple effects (reverb, compressor, etc) - they will have to do a lot of research. If you’ve come from a world where those things are just available - why would it even occur to you that you have to do the research?

I know CSound can sound really good - but people out there will only know if you actually tell them how to achieve that. Preferably in a pretty prominent place.

Dr. B. – yes, we were discussing this last month (or longer?) during the Zoom meeting, if you remember. The perception in many quarters that Csound is “old” or “a dead project” is lamentable.

Promoting Csound is something I regularly do. It stands up so well against so many commercial products, and other open source offerings, too, but it doesn’t have the “mindshare”, let’s call it, that other projects do. Glad to hear that a new generation of game designers recognize its power.

An aside: it’s just a lamentable thing in general that in tech, a project is considered “dead” or abandoned if there haven’t been updates in several months. The struggle/pressure to fight that perception is real. That said, it would be awesome to have a new release sooner than later to change that perception.

Aside-aside: I learned some things in the “diet csound” project that the main devs might consider useful in the form of a pull request at some point (assuming it was welcome) – even though the main goal of the “diet csound” is a more “customizable/minimalist” release, I also reorganized a few things in a way that felt cleaner and more logical (specifically, opcodes that are logical related should logically live together in the codebase, and there are several files in the main repo that simply defy this principle). As well, unifying the process of registering all opcodes in the “new style” used by extensions/plugins would be nice and make the code more understandable across-the-board. I think something like that might attract more folks into trying their hand at assisting in the development of Csound, which keeps the enthusiasm and activity within the community high. There’s no reason something with the current visibility and vogue of VCVRack, which makes it easy for folks to make plugins, couldn’t be applied to Csound’s code. People should be encouraged to extend, customize it, own it…that’s how you give an open source project new life. But first – the code has to be really cleaned up, IMO. It’s amazing, it works, but it’s, well, chaotic in a way that represents decades of cruft.

Things like faust, where I can make a new opcode easily, and faust opcodes, where I could write embedded faust code, and interoperability with PD/Max are wise, too – take advantage of the ability of being able to coexist with other popular DSP tools in a way that feels like an alloy…

Awesome.

What about releasing a Beta of Csound7.

  • Not only would this give many Csounders access to some new opcodes, but they may discover some bugs for you to squash prior to the release (which I am guessing will be at the International Csound Conference in Vienna)

Also - as a note, my students returned from the GAME DEVELOPER CONFERENCE (GDC) in San Francisco last week

  • at the conference, the were networking ferociously,
  • they all want gigs in that industry
  • and… they were showing off their 491 Thesis work to major game companies and developers
  • the work they were showing was with CsoundUnity (and now with CsoundWwise)
    (We hope to show a lot of this in Vienna)

The responses

  • oh… “Csound is so really Old… is anyone still working on that?”
  • "When I look at the git repo, it seems that nothing has been done on Csound for the past 2 years (since the Csound6 freeze)
  • “What’s Cabbage?”
  • " I thought that a lot of the code from Csound is in SuperCollider, Max, Pd now"
  • “Someone was putting Pd into Wwise, but the code for Pd is really dead now - it has not been developed for years”

So that game (and other) developers can see that Csound is actively being updated, modernized, and developed by an amazing team,
might you want to make the Csound7 branch on GitHub the active branch?

Hopefully, by the next GDC - Csound7 and Cabbage will be recognized, appreciated, and start to make more ‘noise’ in VR, AR, and Games.

After our conversation here, I realised we did not have a dedicated non-linear OTA filer.
So i’ve added a new opcode to Csound 7.0: otafilter, modelling the ones in ICS such as the SSM2044, CEM3328, CEM3396 etc.
Like some newer synths, it has an added 2pole tap.

https://github.com/csound/csound/pull/1857

========================
Prof. Victor Lazzarini
Maynooth University
Ireland

Hi Cian, yes there is but it doesn’t always match them up with their names in other circles (ie modular world).

Victor, thanks for the paper! George Tzanetakis (my supervisor) and I are working on his course on a computer science perspective to synthesis, and these kind of resources are exactly what we try to collect. I uh, still have some maths to come up on before I can be truly useful as a filter hacker mind you… :slight_smile:

iain

Is there a description somewhere of all the filters? There are so many different implementations of these in the library, and I’m never quite sure which are the best to use.

DennisCollinPaper
PDF Document · 733 KB

Prof. Victor Lazzarini
Maynooth University
Ireland

Awesome, thanks Victor! I didn’t know that about the SEM. :slight_smile:

iain

All of the 2nd order multimode filters:

svf, svar, zdf_2pole_mode, svn

the first two are based on the Chamberlain design, the zdf is Steven’s coding of a delay-free loop design, and svn is an improvement on the Chamberlain filter, and can work with linear or non-linear behaviour.

Note that the “SEM filter” is actually a copy of the ARP2500 state variable filter. So we should give that attribution.

Prof. Victor Lazzarini
Maynooth University
Ireland

What a fantastic resource this thread has become, thanks everyone!

Victor, which of the Csound filters are SEM-like?

thanks all

We also have excellent SEM implementations in Csound!

Prof. Victor Lazzarini
Maynooth University
Ireland

Warning
This email originated from outside of Maynooth University’s Mail System. Do not reply, click links or open attachments unless you recognise the sender and know the content is safe.
Hello Iain,

I’m not sure it is what you are looking for, but there are excellent Oberheim filter implementations in the Faust library : vaeffects - Faust Libraries

vaeffects - Faust Libraries

Regards

Oops, my mistake, I thought the Matrix 6 was an SEM. Anyway, for my money those Oberheim filters are the best on chords. So uh, either / both? :slight_smile:

thanks!

Hello list, I’m curious, given Victor’s recent filter opcode
additions, whether there is in a plugin or anywhere an emulation of
the SEM filters used in Oberheim Matrix series synthesizers.

Not that I know much about vintage analog synths, but I’m a bit
confused. Do you mean de CEM filters used in Oberheim Matrix serie, or
the filters used in the Oberheim SEM? Or is it just my confusion?

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

dubstep-filters.csd (6.89 KB)

pad-filters.csd (7.57 KB)

poly-filters.csd (7.95 KB)

Thanks Tarmos! I will definitely go through those, much appreciated.

iain

The main website AND the official manual could have sections (you see them called QuickStart elsewhere in other apps) explaining what the essential/best-sounding opcodes are for each use-case.

The FLOSS manual has a section like this, but it’s, IIRC, at or towards the end.

And just this simple thread about filters demonstrates the fact that Csound is very much alive and kicking.

The delight in rediscovering research such as the Denis Colins paper earlier in the thread is that the research back then is just as valid today, despite having been created around 50 years ago, when control theory was transitioning from Laplace to state matrices, we can just take all that knowledge that was developed on paper/pencil and #include it to call as a function…

Csound is relevant, inclusive and contemporaneous, it has a community which adapts to new ideas and has committed developers who have the creativity to develop wonderful new tools while being open to alternative views, and that is why it is still such a lively forum (to those in the know :slight_smile:

(btw I’m loving Faust and Syfala, suits my current use-case for FPGA’s, just need to port it to my Zedboard…)

Regards
Ges

Thanks Tarmo for the examples. It would be nice to eventually see something similar incorporating the filters from the past 8 years. I did spend some time a few months back doing my own filter comparisons, especially being interested in non-linear filters.

Some, like Bob for example, have some really nice characteristics, especially when driven hard. Bob in particular also offers the unique ability to set the amount of oversampling. It is an expensive filter, CPU wise, but can be very aggressive which is nice for certain applications.

hi y

why not include what you did as comparision in the floss manual?
it is already there what anton did here:

it would be great when we either extend this example, or add a new one!
please contact me if you are interested in this, or just snd a pull request at GitHub - csound-flossmanual/csound-floss: The Csound FLOSS Manual

best -
  joachim