Old 02-07-2018, 09:58 AM   #1
ReaDave
Human being with feelings
 
ReaDave's Avatar
 
Join Date: Mar 2010
Location: Adelaide, South Australia (originally from Geelong)
Posts: 5,206
Default Down the Rabbit Hole Maybe? VST or JSFX?

Out of possible necessity, I'm contemplating the idea of starting to write my own plugins. I'll be starting with the basics and am looking at beginning with a third order Ambisonic general purpose EQ (16 audio channels in and out).

I'm not a newcomer to programming. I started in the early 80s with BASIC, then machine code and assembly (on Z80 and 6809). The only things I've learned in the last couple of decades though are HTML, WALTER and JavaScript. I haven't learned anything I could use to code a plugin.

My question is which direction would you folk recommend? VST or JSFX? I will be writing primarily for my own use but will share the results for anyone interested.
I do intend to make my own GUI for these and am an experienced graphic designer and artist. Photoshop is my main digital art creation tool and I've been using it regularly since the mid 90s.

I will be coding on Windows 10. The only Mac I have is my still working G4 400MHz and I'd imagine not really adequate for Mac coding plugins for modern systems. Besides, it will be enough for me to learn all this for one platform!

Is there much difference in the learning curve between VST and JSFX coding wise?
ReaDave is offline   Reply With Quote
Old 02-07-2018, 10:07 AM   #2
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,120
Default

Quote:
Originally Posted by ReaDave View Post
Is there much difference in the learning curve between VST and JSFX coding wise?
JSFX is a lot easier to get into than C++/VST but will drive you nuts faster when you want to do more advanced things. JesuSonic/Eel are horrible for stuff that would benefit from code abstractions. On the other hand, since you mentioned you have experience doing assembly code maybe that wouldn't be an issue for you. (I personally hate having to manually micromanage every damn thing in the code especially when the expected performance gains are not even likely to materialize.)
__________________
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
http://www.sws-extension.org/
https://github.com/Jeff0S/sws
--
Xenakios blog (about HourGlass, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/

Last edited by Xenakios; 02-07-2018 at 10:14 AM.
Xenakios is online now   Reply With Quote
Old 02-07-2018, 10:13 AM   #3
ReaDave
Human being with feelings
 
ReaDave's Avatar
 
Join Date: Mar 2010
Location: Adelaide, South Australia (originally from Geelong)
Posts: 5,206
Default

Quote:
Originally Posted by Xenakios View Post
JSFX is a lot easier to get into than C++/VST but will drive you nuts faster when you want to do more advanced things. (JesuSonic/Eel are horrible for stuff that would benefit from code abstractions.)
Thanks heaps for the super fast reply Xenakios.
I'd imagine (could be wrong) that coding for VST would also require downloading and installing third party tools such as compilers whereas JSFX would just be coded within REAPER itself and possibly notepad or wordpad. Would this be a correct assumption?

I'm probably leaning towards the JSFX route but it is tempting to go the whole hog so to speak. I'd have to learn either from scratch anyway.

What about CPU use between the two? I'd imagine it would come down to coding skill and experience mainly.
ReaDave is offline   Reply With Quote
Old 02-07-2018, 10:20 AM   #4
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,120
Default

Quote:
Originally Posted by ReaDave View Post
Thanks heaps for the super fast reply Xenakios.
I'd imagine (could be wrong) that coding for VST would also require downloading and installing third party tools such as compilers whereas JSFX would just be coded within REAPER itself and possibly notepad or wordpad. Would this be a correct assumption?

What about CPU use between the two? I'd imagine it would come down to coding skill and experience mainly.
Coding VST plugins with C++ will require you to download, install and set up tons of stuff. With bad luck and/or bad instructions you might be stuck with that stuff for weeks before writing a single line of your own code. JSFX you can start developing right away in Reaper.

Eel/JSFX won't be as performant as sensibly written C++ code compiled with a modern optimizing compiler. The CPU performance can still be pretty decent.
__________________
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
http://www.sws-extension.org/
https://github.com/Jeff0S/sws
--
Xenakios blog (about HourGlass, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 02-07-2018, 10:32 AM   #5
ReaDave
Human being with feelings
 
ReaDave's Avatar
 
Join Date: Mar 2010
Location: Adelaide, South Australia (originally from Geelong)
Posts: 5,206
Default

Quote:
Originally Posted by Xenakios View Post
Coding VST plugins with C++ will require you to download, install and set up tons of stuff. With bad luck and/or bad instructions you might be stuck with that stuff for weeks before writing a single line of your own code. JSFX you can start developing right away in Reaper.

Eel/JSFX won't be as performant as sensibly written C++ code compiled with a modern optimizing compiler. The CPU performance can still be pretty decent.
This is exactly the kind of feedback I'm after. Thanks again.
Perhaps the JSFX route makes the most sense at this point given these will be bread and butter third order Ambisonic tools (EQ, compression etc) for use within REAPER.

How easy is it to incorporate a custom GUI using JSFX? The design isn't a problem for me.
ReaDave is offline   Reply With Quote
Old 02-07-2018, 10:37 AM   #6
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,120
Default

Quote:
Originally Posted by ReaDave View Post
How easy is it to incorporate a custom GUI using JSFX? The design isn't a problem for me.
I'd say about medium difficulty but can get tedious because there are no built-in abstractions for anything.
__________________
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
http://www.sws-extension.org/
https://github.com/Jeff0S/sws
--
Xenakios blog (about HourGlass, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 02-07-2018, 10:49 AM   #7
ReaDave
Human being with feelings
 
ReaDave's Avatar
 
Join Date: Mar 2010
Location: Adelaide, South Australia (originally from Geelong)
Posts: 5,206
Default

Quote:
Originally Posted by Xenakios View Post
I'd say about medium difficulty but can get tedious because there are no built-in abstractions for anything.
Thanks again Xenakios. Your insights here are much appreciated.
Off to study this right now.

Another big advantage with JSFX is that I can share my efforts with my Mac friends too. A very good friend of mine and fellow musician/engineer has just made the jump from Protools to REAPER and I've been helping him with it all. He's using a Mac and running my theme. It will be great to be able to share these plugins with him too.
ReaDave is offline   Reply With Quote
Old 02-07-2018, 11:39 AM   #8
olilarkin
Human being with feelings
 
olilarkin's Avatar
 
Join Date: Apr 2009
Location: Huddersfield, UK
Posts: 1,092
Default

IPlug2 will be an excellent way to get into the VST rabbit hole with minimal pain (stay tuned). JUCE is ok too :-)

JSFX is very nice if you want to keep one foot out of the rabbit hole, but actually the code can be pretty nasty. lack of proper "objects" is a problem.

Are you aware of the MCFX plugins if you need a 16 channel EQ?

http://www.matthiaskronlachner.com/?p=1910

Some more awesome free plugins for ambisonics recently released from IEM researchers

https://plugins.iem.at/
__________________
VirtualCZ | pMix | Endless Series | WDL-OL | Linkedin | Facebook
Available for Audio Dev tuition via Skype (IPlug/JUCE/C++)
olilarkin is offline   Reply With Quote
Old 02-07-2018, 11:47 AM   #9
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Germany
Posts: 4,895
Default

I did quite a lot of JSFX stuff, but I never did a VST. But in my job I do C programming all day. So I do believe that I would be able to do VSTs, provided I use the appropriate tools (such as juce).

But when doing JSFX was very astonished about the performance that can be accomplished. I did a rather complex thingy based on FFTand it takes a lot less CPU than I would have expected.

Regarding DSP performance the EEL system can't be compared with e.g. LUA or Python.

OTOH in a discussion recently going on, Geraintluff said the 30 channel EQ he did in his JSFX project takes more CPU than he thinks is tolerable when using multiple instances.

For experienced programmers, the JSFX EEL language might be a bit suspicious, as in certain aspects it works quite different from most other languages (but for a reason! ).

-Michael
__________________
www.boa-sorte.de
mschnell is offline   Reply With Quote
Old 02-07-2018, 11:49 AM   #10
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 7,120
Default

Quote:
Originally Posted by mschnell View Post
I did a rather complex thingy based on FFTand it takes a lot less CPU than I would have expected.
The FFTs are not computed with Eel/JesuSonic, though. (The FFT is implemented in C or C++.)
__________________
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
http://www.sws-extension.org/
https://github.com/Jeff0S/sws
--
Xenakios blog (about HourGlass, Paul(X)Stretch and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 02-07-2018, 11:54 AM   #11
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Germany
Posts: 4,895
Default

Quote:
Originally Posted by Xenakios View Post
The FFTs are not computed with Eel/JesuSonic, though. (The FFT is implemented in C or C++.)
OF course a lot basic stuff in JSFX is provided in super-fast standard functions. Otherwise we could not get any decent speed.

But regarding FFT you need to do the windowing in EEL (maybe some fast functions for supporting this might be a nice idea), and of course the user functionality on the bins. Regarding this speed is great.

-Michael
__________________
www.boa-sorte.de

Last edited by mschnell; 02-07-2018 at 12:27 PM.
mschnell is offline   Reply With Quote
Old 02-07-2018, 12:18 PM   #12
ReaDave
Human being with feelings
 
ReaDave's Avatar
 
Join Date: Mar 2010
Location: Adelaide, South Australia (originally from Geelong)
Posts: 5,206
Default

Quote:
Originally Posted by olilarkin View Post
IPlug2 will be an excellent way to get into the VST rabbit hole with minimal pain (stay tuned). JUCE is ok too :-)

JSFX is very nice if you want to keep one foot out of the rabbit hole, but actually the code can be pretty nasty. lack of proper "objects" is a problem.

Are you aware of the MCFX plugins if you need a 16 channel EQ?

http://www.matthiaskronlachner.com/?p=1910

Some more awesome free plugins for ambisonics recently released from IEM researchers

https://plugins.iem.at/
Ooh! These IEM plugins look very nice! I have just downloaded them and will give them a run shortly. I really like the descriptions of the shoebox too.

My main Ambisonic plugins are the core ones from Blue Ripple and two of their paid suites (decoders and upmixers). The only thing I don't like about the Blue Ripple ones is the license system that requires a connection to their server every few weeks to keep them running. What happens if they close up shop one day or I lose access to their server for some reason? I might have to run this past Richard (Blue Ripple creator) again as I might well have my DAW PC completely offline shortly.

The plugins by Matthias I have installed but never really figured them out. I'm also working in third order now and last I checked, these were first order. It seems he's done some updates since I last looked so I might have to revisit these.

Perhaps I might hold off for a while for your "stay tuned" information, especially now that those IEM plugins contain some of the primary reasons I am looking into coding plugins in the first place.
ReaDave is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 12:20 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.