Old 06-02-2015, 02:16 AM   #41
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by DJ Saint-Hubert View Post
Any news on this? I am toying around with the idea of making an JS modular synth to make an album that is actually a VST which I could convert to .exe with SAVIHost if I had it in VST form and not JS. If it were small enough Bandcamp allows you to attach arbitrary stuff, so you could theoretically distribute a generative 'album' on bandcamp
Development is going well. Im working on the next version which includes a module importer. ie: You can open an effect like "rbj12eq-teej", and Jeez will convert it to functions for @init, @slider, @block & @sample. Global variables are converted to function instances. You then save it out as a import (jsfx-inc) file. Do that for each effect you want to use, and then you can create larger effects from multiple smaller effects.

Midi is working, although since I don't use it, it hasn't been 100% tested. Most of the (4.402 April 27, 2013) API has been implemented. There are some functions from the (4.77 February 7, 2015) API still todo.

Anomaly has got some of his stuff working. Ive attached screen shots.

My advice is to write your effect without thinking about a graphical interface. Unlike JS effects, VST effects should/must provide a non-gui interface. This ensures proper serialization of parameters, support for VST hosts which not support GFX's, threadsafe effects plus the effect is more portable since GFX requires VSTGUI, which is somewhat larger than the core VST API. ie: More C++ = harder to port.

I compile to VST as I develop, to ensure im not coding using features which arn't supported, or buggy. If you find an issue, contact me.

Then, once you have a nice GUI-less effect, its easy to add a GFX interface using SWIPE, or code your own. SWIPE is getting better, but isn't totally finished. But, you can customize SWIPE. ie: once you have a SWIPE interface, its easy to copy/paste stuff and add fancy bitmaps.

Thats the current status.
http://wascal.net/music/

Anomaly's JS effects.
http://jsplugins.supermaailma.net/





A couple of SWIPE based effects I use:


Attached Images
File Type: jpg Reverb.jpg (47.6 KB, 2891 views)
File Type: jpg TriLeveler.jpg (31.1 KB, 2767 views)
File Type: png SEGX2.png (11.4 KB, 2894 views)
File Type: jpg BassProfessor.jpg (31.6 KB, 3208 views)
File Type: jpg EQ.jpg (35.1 KB, 2755 views)
__________________
http://wascal.net/music/

Last edited by derek.john.evans; 06-02-2015 at 02:20 AM. Reason: Spelling
derek.john.evans is offline   Reply With Quote
Old 06-24-2015, 10:30 AM   #42
reapercurious
Human being with feelings
 
reapercurious's Avatar
 
Join Date: Jul 2007
Posts: 1,890
Default

this is just awesome

but i cant wait till VST is history
reapercurious is offline   Reply With Quote
Old 06-24-2015, 12:31 PM   #43
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by reapercurious View Post

but i cant wait till VST is history
Then you should switch to using Reason or Logic! VST plugins don't work on those.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 06-24-2015, 05:19 PM   #44
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by TonE View Post
Can we download all the js-to-vst converted plugins anywhere? Or is it intended that each person has to do this conversion job separately?
Jeez is probably a good 3 months away from being ready for a REAPER VST plugin pack. When no more bugs are found, I'll put together as many REAPER Jesusonic effects as I can in both 32/64bit format into a single installer. But, yes, until then, you need to convert the effects as you need them.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 06-25-2015, 09:23 AM   #45
SaulT
Human being with feelings
 
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
Default

Quote:
Jeez is probably a good 3 months away from being ready for a REAPER VST plugin pack. When no more bugs are found, I'll put together as many REAPER Jesusonic effects as I can in both 32/64bit format into a single installer.
I have been wanting a community-sourced bundle of Reaper effects for evar and evar. If we can have a collection that is curated a little to keep out redundancies and a bit of documentation to give some guidance on what each one does... well, that would be spiffy.

I'm starting to go through my pack of plugins and do some culling and polishing and rewriting, so keep me in the loop, I'd love to donate some plugins to the cause.
SaulT is offline   Reply With Quote
Old 06-26-2015, 09:18 PM   #46
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by SaulT View Post
I'm starting to go through my pack of plugins and do some culling and polishing and rewriting, so keep me in the loop, I'd love to donate some plugins to the cause.
Sounds great. Im just waiting until I know all the bugs are out. Then I'll most likely write a batch compiler todo all the VST versions. I already have a batch transpiler which I use for testing jes2cpp against 200+ JS effects.

Anyway, the issue for some jsfx's is they are what I would call "hybrid gui". ie: Both non-gui and gui. Which, VST doesn't do.

So, I coded up a simple generic GUI yesterday which makes it easy to create a full graphics gui while keeping the original gfx code. So, then the effect can be converted to VSTGUI.

Ive uploaded the Soda GUI code plus 2 demos here:
https://stash.reaper.fm/v/24396/soda.zip

These are the JSFX effects converted VST effects:





NOTE: graphdist is the first effect Ive tried that uses the serialization stuff I just coded. Still needs testing.
Attached Images
File Type: png PeakLimiter.png (25.6 KB, 2531 views)
File Type: png GraphDist.png (26.9 KB, 2543 views)
__________________
http://wascal.net/music/

Last edited by derek.john.evans; 06-26-2015 at 09:28 PM. Reason: Spelling
derek.john.evans is offline   Reply With Quote
Old 06-29-2015, 12:43 AM   #47
SaulT
Human being with feelings
 
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
Default

Thank you for everything that you are doing.
SaulT is offline   Reply With Quote
Old 06-29-2015, 04:03 AM   #48
Arran
Human being with feelings
 
Join Date: Aug 2012
Location: Bolton, UK
Posts: 234
Default

Is there a difference in performance between the same effect running as JS and converted to vst?
Arran is offline   Reply With Quote
Old 06-29-2015, 12:12 PM   #49
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by Arran View Post
Is there a difference in performance between the same effect running as JS and converted to vst?
Good question. Short answer = no speed increase.

Long answer possibly, yes. I'm aiming for compatibility atm. C++ functions seem to be faster (probably because C++ supports inlining). The VST transport layer has a speed hit which JS does not. But, I have some ideas to try to get samples into the code faster.

The graphics answer is, JS is way faster! I'm using VSTGUI 3.6 which uses GUIPLUS which is slow. 4.x supports DirectX, but I haven't been able to get that working using GCC.

For the maths answer, consider the following:

cos(exp(0/0)) = 0
cos(exp(a=0/0)) = 0.540302
cos(a=exp(0/0)) = 1.0

The float error is detected on assignment. Which is what VAL() does in "jes2cpp.h". If you change that to a macro, then you get faster code, but doesn't detect float errors. Anomaly found this problem with his compression code (ie: exp()'s and log()'s)

If you want the fastest code, you can look into embedding C++ or (even asm) into your JS code. There are a bunch of optimized maths functions here (from ccernn):
https://code.google.com/p/axonlib/so.../core/axMath.h

Embedding C++ uses the syntax: !"C++ CODE HERE"
eg:
Code:
function acos(x) global()
(
  !"acos(x$)";
);
I choose this syntax because !"ANY STRING" always returns 0 in Jesusonic and skipped. So, its possible to add C++/asm which will be skipped in REAPER. ie: Something like:

Code:
function fast_sin(x) global()
(
  !"return (INSERT YOUR FAST SIN C++ HERE)";
  sin(x);
);
(EDIT) More Information::

These are some embedding C++ syntax ideas I'm thinking about. I'm getting about a 30-40% speed increase. The memory access could be improved, since I'm only using std::map's, but the last time I looked at that, there was little improvement with raw C. Eventually, I want the system to be as compatible as possible, while giving tools for coders to play with to improve speed.

Code:
// Disable float error checking on assignment.
!"#define VAL(A) (A)" "//";

// Returns the absolute value of a floating point number
function axAbs(/*!register const float*/ value)
(
  !
  "register union{int i; float j;} u;"
  "u.j = value$; u.i &= 0x7fffffff;"
  "return u.j;";
  abs(value);
);

// Calculates the sine of a floating point number (fpu)
function axSinf(/*!register float*/ value)
(
  !"__asm__ (\"fsin;\"    : \"=t\" (value$)    : \"0\" (value$)); return value$;";
  sin(value);
);

// Fast approximation of the sine function for range [-pi, pi]
function axSin(/*!register float*/ x)
(
  ! "x$ *= (1.2732395447f - 0.4052847345f * axabs_(x$)); return 0.225f * (x$ * axabs_(x$) - x$) + x$;";
  sin(x);
);
__________________
http://wascal.net/music/

Last edited by derek.john.evans; 06-29-2015 at 04:06 PM. Reason: spelling
derek.john.evans is offline   Reply With Quote
Old 10-12-2015, 08:02 PM   #50
manyserious
Human being with feelings
 
Join Date: Dec 2013
Location: Victoria, BC
Posts: 69
Default

Good holy geep jeez bloody christ.

This is amazing.
manyserious is offline   Reply With Quote
Old 10-13-2015, 12:48 AM   #51
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by manyserious View Post
Good holy geep jeez bloody christ.

This is amazing.
Cool, thanks.

Yea, Geep Jeez ended up being a bigger project than I planned. Originally, I wanted a "simple" JS to C++ converter, but, then I found out you cant release VSTSDK code, so, VeST was written, then I wanted automated building, and a "basic" editor, then I realized I could add some code-insight features. But, then I found a bunch of language features I didn't know about, so, they were added, bla bla bla. Then I wanted to add embedded C++, which led to embedded ASM. I realized I could code a fully functioning malloc/free system in JS, plus, some common C++ string/vector functions (all in JS), which led to generic functions which operate both on memory & strings. All in JS! JS is pretty amazing considering how simple it looks at first.

I'm happy with the current state of the project, so, it will be left for about 6-12 months while my head defrags.

Plus, I have my other projects to finish.

Anyway, hope you enjoy the code.
__________________
http://wascal.net/music/

Last edited by derek.john.evans; 10-13-2015 at 12:56 AM.
derek.john.evans is offline   Reply With Quote
Old 10-13-2015, 05:47 AM   #52
manyserious
Human being with feelings
 
Join Date: Dec 2013
Location: Victoria, BC
Posts: 69
Default

Ah OK, Hopefully you come back to it some time, but if not, no worries, it's a fantastic accomplishment and tool anyway. Has made it possible for me to make (or start making) an outboard synth controller I've been dreaming of for a while. And also inspired me to finally buckle down on understanding JS and the VST standard. Wish I could contribute more than just "wow! thanks!".

Thanks again for making this, and all the best.
manyserious is offline   Reply With Quote
Old 10-14-2015, 04:18 AM   #53
Anomaly
Human being with feelings
 
Anomaly's Avatar
 
Join Date: Sep 2007
Posts: 642
Default

Derek,

I wonder if there has been some profound changes in couple of latest releases of Geep Jeez? I suddenly can't make any of my plugins to work. They compile without error. But in Reaper the audio is not processed correctly (I can hear strange static or buzzing or something else unexpected), neither the gui is drawn correctly.

I'm asking this because even the same builds that worked flawlessly with the older version of Jeez are not working with the latest versions.

Is there anything in your mind I should look at?
Thanks for the hard work for this program!
__________________
___________________________
Sonic Anomaly | free JSFX & VST Plugins
Anomaly is offline   Reply With Quote
Old 10-14-2015, 01:13 PM   #54
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
Default

A Question regarding geep jeez and ReaJS:

I did a set of JSFXes that communicate vie global memory (gmem). I suppose this is not possible if they reside in different VSTs.

But it might be possible if they all are loaded / compiled in a single VST. Is that possible ?

-Michael
mschnell is online now   Reply With Quote
Old 10-17-2015, 02:05 AM   #55
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by mschnell View Post
A Question regarding geep jeez and ReaJS:

I did a set of JSFXes that communicate vie global memory (gmem). I suppose this is not possible if they reside in different VSTs.

But it might be possible if they all are loaded / compiled in a single VST. Is that possible ?

-Michael
Global memory isn't implemented. I never used it so I haven't looked into it. I know, static memory for a DLL is shared between all instances of the DLL, but, if you have multiple DLL's, then that wouldn't work.

Im guessing the correct way would be some kinda shared memory between DLL's, with thread locking. Mmm. I dont think it would be an easy thing to implement ATM.

Edit: Actually, thats stuff I dont know much about. ie: shared memory between a select group of DLL's. I'll think about it for a while.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 10-17-2015, 02:15 AM   #56
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by Anomaly View Post
Derek,

I wonder if there has been some profound changes in couple of latest releases of Geep Jeez? I suddenly can't make any of my plugins to work. They compile without error. But in Reaper the audio is not processed correctly (I can hear strange static or buzzing or something else unexpected), neither the gui is drawn correctly.

I'm asking this because even the same builds that worked flawlessly with the older version of Jeez are not working with the latest versions.

Is there anything in your mind I should look at?
Thanks for the hard work for this program!
Nothing major has changed. I tested the code you send me. On my machine running REAPER 4.78, the JS compressor code outputs noise that blows the meter (depending on where the recording starts from). Once the output is clipped, both the JS and VST versions seem to behave the same, although, both produce a loud click/buzz which can really be heard if you have drums + reverb.

RE: The GUI. Unsure about that.

Send me a project and I'll have a look.

There are a bunch of effects in "\Program Files\Geep Software\Jeez!\jsfx-inc\effects\" and tests in "\Program Files\Geep Software\Jeez!\jsfx-inc\effects\tests" which I use to try to find bugs. Maybe try some of those.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 10-17-2015, 06:01 AM   #57
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
Default

Quote:
Originally Posted by derek.john.evans View Post
Global memory isn't implemented.
Im guessing the correct way would be some kinda shared memory between DLL's, with thread locking
Another option would be to have a single DLL run (load or compile) multiple JSFXes.

For the thingy I just did, to have it work outside of Reaper, it would be necessary to have four different JSFXes, some of those would optionally be installed in multiple (up to some 30) instances. All these communicate via global memory.

-Michael
mschnell is online now   Reply With Quote
Old 10-17-2015, 07:09 AM   #58
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by mschnell View Post
Another option would be to have a single DLL run (load or compile) multiple JSFXes.

For the thingy I just did, to have it work outside of Reaper, it would be necessary to have four different JSFXes, some of those would optionally be installed in multiple (up to some 30) instances. All these communicate via global memory.

-Michael
I just implemented _global.* variables which makes static class fields in C++. This should mean they are common to a DLL instance. I'll release it in a week or so after I test to see if it works. That still isn't the same as REAPER's globals which are common to all JS effects. (I think).

That would mean, your 4 JSFX's would need to be one JSFX with a mode switch. It also means, the parameters might have to be generically named, and use a custom GFX interface which changes for each mode.

Im unsure if that will be what you need, but I cant see myself writing some shared DLL memory code anytime soon. I just dont know enough about that. Its basically interprocess communications which is system dependent.

Anyway, email me if you want to explain more about your project. Give me a week or two to test this new code.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 10-17-2015, 11:20 AM   #59
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
Default

Quote:
Originally Posted by derek.john.evans View Post
I just implemented _global.* variables which makes static class fields in C++.
Nice !
Quote:
Originally Posted by derek.john.evans View Post
That would mean, your 4 JSFX's would need to be one JSFX with a mode switch.
I don't think that this is doable. One of the causes to do multiple JSFXes was that there are up to 900 Sliders in some 30 instances of the JSFXes with this system A mode-switch would need to activate/deactivate sliders. EEL does not seem to provide that option. (In fact ony one JSFX is "active" the other are just User interface pages for configuration.)

Quote:
Originally Posted by derek.john.evans View Post
Anyway, email me if you want to explain more about your project. Give me a week or two to test this new code.
I will publish the project rather soon and let you know. But while it could be useful with other DAWs, it's primarily intended use it with SWS LiveConfigs and same is tied to Reaper, anyway.

My question was more based on theory.

Thanks for listening
-Michael
mschnell is online now   Reply With Quote
Old 10-18-2015, 05:01 AM   #60
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by Anomaly View Post
Derek,

I wonder if there has been some profound changes in couple of latest releases of Geep Jeez? I suddenly can't make any of my plugins to work. They compile without error. But in Reaper the audio is not processed correctly (I can hear strange static or buzzing or something else unexpected), neither the gui is drawn correctly.

I'm asking this because even the same builds that worked flawlessly with the older version of Jeez are not working with the latest versions.

Is there anything in your mind I should look at?
Thanks for the hard work for this program!
Just an update. Yes, there was a bug in Jeez relating to the region setting. Its a bug I fixed, but, I accidentally reintroduced it while fixing something and moving over to SVN.

Anyway, problem fixed. Download the latest if you come from a country which doesn't use decimal points in numbers.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-20-2015, 11:47 PM   #61
JEL
Human being with feelings
 
Join Date: Mar 2012
Posts: 45
Default

I'm testing the Geep, but keep getting "compilation failed" error.

I've tried changing all the settings but no matter what I do I get the same error.

This happens no matter which JS fx I load (those included by Geep and those installed by Reaper. There's no difference. Even if I just try to compile the untitled.jsfx which is auto-loaded when pressing 'new'.)

It says 'check message log', but I'm not sure if that's a .log file or just the text shown in the bottom-window in Geep.

If the message log is the text in the bottom-window of Geep, then I've attached some various snippets of what it says (it's in the code-block below. It's gibberish to me I'm afraid, so I don't know if I've posted anything relevant :/ )

I'm in Denmark, but I don't think it's the decimal error, talked about earlier, that's at play here, but I don't really know.

I hope somebody smarter can throw some light at this
Thanks.

EDIT: I'm on windows7 home-premium x64

Code:
// Geep Jeez! (v2.8) - Jesusonic Editor + Transpiler (6th November 2015)

Compiling C:/Program Files (x86)/Geep Software/Jeez!/jes2cpp/jes2cpp.cpp:1:0: warning: -fPIC ignored for target 

Compiling compiled by GNU C version 4.9.2, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2
Compiling GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/x86_64-w64-mingw32/32"
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/backward"
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include"
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../include"
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include-fixed"
Compiling ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/include"
Compiling #include "..." search starts here:
Compiling #include <...> search starts here:
Compiling C:/Program Files (x86)/Geep Software/Jeez!/jes2cpp
Compiling C:/Program Files (x86)/Geep Software/Jeez!/jes2cpp/vest

Compiling collect2.exe: error: ld returned 1 exit status
Compiling Exception! -> Compilation failed. (Please check message log)
Compiling Exception! -> Compilation terminated because 'Compilation failed. (Please check message log)'.
Compiling Finished

Last edited by JEL; 11-20-2015 at 11:56 PM. Reason: adding info
JEL is offline   Reply With Quote
Old 11-21-2015, 01:30 AM   #62
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by JEL View Post
I'm testing the Geep, but keep getting "compilation failed" error. I've tried changing all the settings but no matter what I do I get the same error.
Bugger. Ok, Its because of incompatibilities between TDMGCC 4.x and 5.x

In order to test a new feature, I needed to install 5.x, and I could have released a version of VeST compiled with 5.x, which doesn't seem to work with 4.x

Anyway, I've reinstalled 4.x, recompiled and uploaded. See if that works for you.

I'm unsure how to fixed this ATM. Im guessing in 6 months 5.x will be the standard, and I'll be recommending that. I might even release Jeez with a cut down version of TDMGCC, so, I don't get these incompatibility issues.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-21-2015, 01:37 AM   #63
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

O, also, the latest build requires you to set the path to TDMGCC in options.

This is because I started to use the windres tool which creates resource files. ie: You can embed images into your DLL's.

Problem was, windres is a common tool name. I have about 5 versions on my PC from different dev systems.

So, Jeez needs to know where TDMGCC64 is: eg: C:\TDM-GCC-64\bin\

Hopefully this all gets smoothed out next year.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-21-2015, 02:30 AM   #64
JEL
Human being with feelings
 
Join Date: Mar 2012
Posts: 45
Default

Quote:
Originally Posted by derek.john.evans View Post
See if that works for you.
Wow you are FASTER than Buzz Lightyear!!

The new version works

Wow, this tool is awesome

Big thumbs up for what you've created here.
JEL is offline   Reply With Quote
Old 11-21-2015, 02:41 AM   #65
JEL
Human being with feelings
 
Join Date: Mar 2012
Posts: 45
Default

Quote:
Originally Posted by derek.john.evans View Post
Hopefully this all gets smoothed out next year.
Yeah, this is one of the reasons I always end up stalling my attempts to learn serious coding

I'm just getting my feet wet with JSFX, since it doesn't need me to know anything about compilers.
I can see it being a powerful sound-sculpting thing once I, hopefully, begin to understand it in more detail.
It certainly makes one respect the good plugin-makers out there

But porting JSFX plugins to VST format is really useful for other programs that can't read JSFX (video-editors and standalone audio-editors for example), so whatever magic it is you're doing to make this happen for us mere mortals; a BIG thank you for sharing it with us!
JEL is offline   Reply With Quote
Old 11-21-2015, 03:08 AM   #66
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by JEL View Post
Yeah, this is one of the reasons I always end up stalling my attempts to learn serious coding
a BIG thank you for sharing it with us!
Cool thanks. Yea, I didn't know what I was getting into when I started this project. Originally, I only planned to support the old Jesusonic 1.0 language standard without any graphical support. Which, was pretty easy. But, I wanted more!

The complexity shot up big time when I added audio loading/graphics/functions/namespaces/editor etc.

I think, the project will get a completely new "abstract syntax tree" parser next year, which will help implement the last group of missing language features.

I also think I will end up releasing GCC with Jeez, which will more than double the download size, but, that should help stabilize the system.

Once this version is stable, I'll fork the code and start again.

So, there will be this version, and a new implementation based on the knowledge I now have. Yep, I didn't know Jesusonic fully when I started.

EDIT: Another thinking I have is, Jesusonic may be "dead" in 1-2 years, given that LUA is in REAPER v5

So, It might not be worth my effort to continue with Jesusonic. I'll see how this all pans out. I guess, my original goal was just to make it possible to release effects without source code.

But, these days, REAPER just wipes the floor with other DAW's, IMHO, so, maybe Jeez will just encourage more people to code Jesusonic effects, which is good for everyone!
__________________
http://wascal.net/music/

Last edited by derek.john.evans; 11-21-2015 at 03:13 AM.
derek.john.evans is offline   Reply With Quote
Old 11-21-2015, 03:31 AM   #67
Anomaly
Human being with feelings
 
Anomaly's Avatar
 
Join Date: Sep 2007
Posts: 642
Default

Derek, any news with the Acid compatibility?
__________________
___________________________
Sonic Anomaly | free JSFX & VST Plugins
Anomaly is offline   Reply With Quote
Old 11-21-2015, 03:37 AM   #68
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,646
Default

Quote:
Originally Posted by derek.john.evans View Post
Another thinking I have is, Jesusonic may be "dead" in 1-2 years, given that LUA is in REAPER v5
You can't really do DSP in Lua, so it is hardly a replacement for JSFX. Also note that JSFX has been around for a long, long time (>10 years now), so it's unlikely it is going to go away anytime soon.
Tale is offline   Reply With Quote
Old 11-21-2015, 03:41 AM   #69
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by Anomaly View Post
Derek, any news with the Acid compatibility?
Yep, I got BassProfessor working. IMO, Acid PRO 7 is buggy. The serialization doesn't seem to work. I got it saving/loading presets, but, not saving/loading to a project.

I also found some bugs in the graphics, which may be VSTGUI related. I googled "Acid PRO VST crash" and a number of big brand VST's dont work with Acid PRO.

Basically, I implemented an option to disable VST function "programsAreChunks", which works, but, then, @serialize is disabled.

I'm not sure what todo ATM. I cant find much help from online VST code.

There must be a reason why Sony hasn't updated Acid PRO since 2010.

I'll keep thinking and testing. Hopefully Sony releases a new version, but to me, it looks like a dead product.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-21-2015, 03:45 AM   #70
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by Tale View Post
You can't really do DSP in Lua, so it is hardly a replacement for JSFX. Also note that JSFX has been around for a long, long time (>10 years now), so it's unlikely it is going to go away anytime soon.

O, right. I didn't know LUA wasn't for DSP. Cool. My bad. Ok, so yes, writing a Jesusonic syntax tree is worth while.

Thanks for the info.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-21-2015, 05:24 AM   #71
JEL
Human being with feelings
 
Join Date: Mar 2012
Posts: 45
Default

Quote:
Originally Posted by derek.john.evans View Post
You can embed images into your DLL's.
I have no clue how to do that

I just managed to get a JSFX to show a png image, but when I converted it to VST and loaded it in reaper, reaper made a beep-sound and just showed a black canvas where the image should be. The audio-fx work in the plugin, so I'm guessing I just need to change something in the JSFX (my current coding-style in JSFX is a bit like this: "hmm, wonder what this button does... [pushes button]... sometimes things blow up, other times they don't haha )

I tried converting another test-plugin, which only has a few sliders (in reaper they move around showing some audio-info), but in the VST version the sliders were static. Again; the audio-fx part of the plugin works fine though.
I haven't yet tried converting any plugins where I can control the sound via sliders, but I have a feeling that that will work fine though.

Quote:
Originally Posted by derek.john.evans View Post
But, these days, REAPER just wipes the floor with other DAW's, IMHO, so, maybe Jeez will just encourage more people to code Jesusonic effects, which is good for everyone!
I really prefer the text-based style that JSFX uses. It's just so much easier to work with than, say, C++ stuff (which I assume most VSTs are)
The fact that we can experiment directly while inside Reaper, on the fly with audio playing, with instant feedback on the changes we do... that's really the only sensible way

It's so much faster to get results, when you don't have to wait for the plugin-code to compile and close/re-start the DAW every time you change anything in the plugin (Reaper locks VSTs, at least mine does, until I completely shut down Reaper, so updating a VST can't be done if it has been open in Reaper)

I wouldn't mind similar approaches in other software that uses plugins, but I gather the speed of text-based plugins are generally slower than compiled plugins. But from a design-perspective, the text-based method JSFX use is brilliant I think (even though I miss some more documentation/tutorials on how to accomplish different things)
JEL is offline   Reply With Quote
Old 11-21-2015, 05:42 AM   #72
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by JEL View Post
I have no clue how to do that

I just managed to get a JSFX to show a png image, but when I converted it to VST and loaded it in reaper, reaper made a beep-sound and just showed a black canvas where the image should be. The audio-fx work in the plugin, so I'm guessing I just need to change something in the JSFX (my current coding-style in JSFX is a bit like this: "hmm, wonder what this button does... [pushes button]... sometimes things blow up, other times they don't haha )
The VST tried to load images relative to itself. So, it needs a copy of the same images where the VST is located. The beep is my simple error system.

Resource images only work for images loaded from the filename: option. Here is the syntax used in BassProfessor: Note: The resource: option with comma separated filename indexes.
Code:
filename:0,bassprofessor_gfx/knob.png
filename:1,bassprofessor_gfx/knob2.png
filename:2,bassprofessor_gfx/led.png
filename:3,bassprofessor_gfx/bg.png
filename:4,bassprofessor_gfx/knob3.png
resource:0,1,2,3,4
Quote:
Originally Posted by JEL View Post

I tried converting another test-plugin, which only has a few sliders (in reaper they move around showing some audio-info), but in the VST version the sliders were static. Again; the audio-fx part of the plugin works fine though.
I haven't yet tried converting any plugins where I can control the sound via sliders, but I have a feeling that that will work fine though.
Sounds like you need to call the function sliderchange(). The only way I could get the sliders to update was to call the VST method updateDisplay(), which updates ALL the sliders. So, calling sliderchange(0) should do what you want. It isn't common for VST's to automate their own sliders to display information. Thats a JS thang. You might have to look into a graphic display, but, then you need to code your own GUI interface.

I released some code called Soda which helps you turn hybrid JS effects into all graphic effects.
http://wascal.net/music/?p=398

Quote:
Originally Posted by JEL View Post
I really prefer the text-based style that JSFX uses. It's just so much easier to work with than, say, C++ stuff (which I assume most VSTs are)
The fact that we can experiment directly while inside Reaper, on the fly with audio playing, with instant feedback on the changes we do... that's really the only sensible way
Yep. I love the REAPER DSP system. You can change code while audio is playing. Not worry about system crashes. The only thing I dont like is, when I write an infinite loop, and REAPER stops responding. Thats kinda funny.

Quote:
Originally Posted by JEL View Post
It's so much faster to get results, when you don't have to wait for the plugin-code to compile and close/re-start the DAW every time you change anything in the plugin (Reaper locks VSTs, at least mine does, until I completely shut down Reaper, so updating a VST can't be done if it has been open in Reaper)
Absolutely. I have no idea how C++ VST coders get their effects written. I guess, they already know the algorithms before coding. DLL locking is standard. So, yep, to test, you need to shutdown REAPER, compile, and reload. That would have been hell in C++. In general, I now develop a JS effect for weeks, and then create a VST.

Quote:
Originally Posted by JEL View Post
I wouldn't mind similar approaches in other software that uses plugins, but I gather the speed of text-based plugins are generally slower than compiled plugins. But from a design-perspective, the text-based method JSFX use is brilliant I think (even though I miss some more documentation/tutorials on how to accomplish different things)
Actually, JS is very fast. Its hard to beat an optimized JS effect in C++. Jeez does allow you todo things JS doesn't support, like inline functions and assembly language, but, what i've realized from this project is, just how fantastic Jesusonic is!

It wasn't until I started this project that I saw a standalone JS VST effect plugin in the WDL/IPlug source code. So, in hindsight, maybe I should have looked into that project.

I'm not quite sure why someone hasn't compiled that for Mac/PC and released it as an alternative to ReaPlugs.
__________________
http://wascal.net/music/

Last edited by derek.john.evans; 11-21-2015 at 05:52 AM.
derek.john.evans is offline   Reply With Quote
Old 11-21-2015, 07:37 AM   #73
Anomaly
Human being with feelings
 
Anomaly's Avatar
 
Join Date: Sep 2007
Posts: 642
Default

Ok, cool. I guess the acid support won't be an absolute necessity then. It seems like a dead product to me too.

Congratulations for the soda gui. Looks absolutely fantastic.
__________________
___________________________
Sonic Anomaly | free JSFX & VST Plugins
Anomaly is offline   Reply With Quote
Old 11-21-2015, 08:41 AM   #74
JEL
Human being with feelings
 
Join Date: Mar 2012
Posts: 45
Default

@Derek;

Pictures work now

Soda and Swipe is something I will look into. I found it is already part of the Geep install, so I will take some time to work my way through it in small steps as I go along.

As I said earlier; I'm just starting to get my feet wet in the JSFX thing (and I've had Reaper for quite some time already, but I always kind of feared that code-window that opened when you click the edit-button haha )

I also don't know how to do buffers for RMS measurements and such yet, so as you can see I have barely learned to even crawl yet

But just being able to impact the sound with my own math-choices is amazing
One thing is operating dials and knobs on a pre-made plugin, but actually being able to code your own math to sculpt the sound in your very own way is a fun thing to get into. It'll take some time before I can, hopefully, do more than just very basic things though.



On a quick side-note (not to hijack the thread or anything); this video shows how the image-editor "PhotoReactor" (not audio-related at all) has implemented a method to use C++ code inside the image-editor without needing to compile the code (the program interprets it itself, or something like that)
It's a bit down the same alley as JS-scripting (in that you edit some math and get instant results, only here it's with images instead of audio)

https://www.youtube.com/watch?v=BdXTagz0vso
JEL is offline   Reply With Quote
Old 11-22-2015, 03:23 AM   #75
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,646
Default

Quote:
Originally Posted by derek.john.evans View Post
Absolutely. I have no idea how C++ VST coders get their effects written. I guess, they already know the algorithms before coding. DLL locking is standard. So, yep, to test, you need to shutdown REAPER, compile, and reload. That would have been hell in C++. In general, I now develop a JS effect for weeks, and then create a VST.
Actually (on Windows) REAPER has an option to completely unload the DLL, so you don't have to restart REAPER all the time.

That being said, I do use JSFX a lot for fast prototyping.
Tale is offline   Reply With Quote
Old 11-22-2015, 07:04 AM   #76
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by JEL View Post
@Derek;

Pictures work now

Soda and Swipe is something I will look into. I found it is already part of the Geep install, so I will take some time to work my way through it in small steps as I go along.
Thats cool. Just always remember, a JS effect should always work as a slider only effect. Adding a GUI interface should come last, and shouldn't greatly adjust the original source code.

Quote:
Originally Posted by JEL View Post
I also don't know how to do buffers for RMS measurements and such yet, so as you can see I have barely learned to even crawl yet
IMHO, Anomaly and LOSER just two of the masters of that stuff. Ive been collecting links here, with some great JS code:
http://wascal.net/music/?page_id=33

For me, Im still trying to "visualize" the non-visual nature of audio. So, yea, I'm learning, but its a hell of a lot more fun than database coding.

Quote:
Originally Posted by JEL View Post
But just being able to impact the sound with my own math-choices is amazing
One thing is operating dials and knobs on a pre-made plugin, but actually being able to code your own math to sculpt the sound in your very own way is a fun thing to get into. It'll take some time before I can, hopefully, do more than just very basic things though.
Yea, there is something really personal about your own effect. Even if its a cut down or enhanced or union of other effects.


Quote:
Originally Posted by JEL View Post
On a quick side-note (not to hijack the thread or anything); this video shows how the image-editor "PhotoReactor" (not audio-related at all) has implemented a method to use C++ code inside the image-editor without needing to compile the code (the program interprets it itself, or something like that)
Yep, there are a lot of "scripting" libraries now. Jesusonic is kinda special in that it produces native code (as far as I can tell from the WDL code). BTW: JS is compiled. The compiler is just so fast that you don't notice it.

My initial impression of JS was, "what! all variables are doubles!", but, to me, that is one hell of an amazing design decision for a DSP language.

And, then to add graphics, audio, textfiles, strings and arrays on top of doubles, is, well, weird, but, it works.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-22-2015, 07:08 AM   #77
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by Tale View Post
Actually (on Windows) REAPER has an option to completely unload the DLL, so you don't have to restart REAPER all the time.

That being said, I do use JSFX a lot for fast prototyping.
Hey Tale. Are you using WDL/IPlug for your VST effects?
What are your opinions on WDL/IPlug vs VST/VSTGUI?
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-22-2015, 07:11 AM   #78
derek.john.evans
Human being with feelings
 
derek.john.evans's Avatar
 
Join Date: Feb 2011
Location: Adelaide, South Australia
Posts: 217
Default

Quote:
Originally Posted by JEL View Post
@Derek;
Soda and Swipe is something I will look into. I found it is already part of the Geep install, so I will take some time to work my way through it in small steps as I go along.
Btw, If you have worked on a JS effect, and ready for a Soda interface, email me. I can put it together in a 5-10 minutes and send it back.

Soda is pretty simple, but, I know im not that good at documenting my stuff.
__________________
http://wascal.net/music/
derek.john.evans is offline   Reply With Quote
Old 11-22-2015, 02:12 PM   #79
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,646
Default

Quote:
Originally Posted by derek.john.evans View Post
Hey Tale. Are you using WDL/IPlug for your VST effects?
Yes, I am.

Quote:
Originally Posted by derek.john.evans View Post
What are your opinions on WDL/IPlug vs VST/VSTGUI?
Well, when I first started working on a VST I couldn't get VSTGUI to work, but I had no problem with IPlug. I then learned that IPlug would also work on Mac and with AU, so I never looked back.
Tale is offline   Reply With Quote
Old 11-23-2015, 03:00 AM   #80
JEL
Human being with feelings
 
Join Date: Mar 2012
Posts: 45
Default

Quote:
Originally Posted by derek.john.evans View Post
Just always remember, a JS effect should always work as a slider only effect. Adding a GUI interface should come last, and shouldn't greatly adjust the original source code.
Yes I read earlier in this thread you mentioned VST effects has to work with a non-gui interface, so I'll keep that in mind


Quote:
Originally Posted by derek.john.evans View Post
IMHO, Anomaly and LOSER just two of the masters of that stuff. Ive been collecting links here, with some great JS code:
http://wascal.net/music/?page_id=33
Thank you. I still have a lot to learn, but reading through various source-code and gradually pick up what it all means is a great opportunity to see how things can be done.


Quote:
Originally Posted by derek.john.evans View Post
Yep, there are a lot of "scripting" libraries now. Jesusonic is kinda special in that it produces native code (as far as I can tell from the WDL code). BTW: JS is compiled. The compiler is just so fast that you don't notice it.

My initial impression of JS was, "what! all variables are doubles!", but, to me, that is one hell of an amazing design decision for a DSP language.

And, then to add graphics, audio, textfiles, strings and arrays on top of doubles, is, well, weird, but, it works.
That is another thing I'm slowly getting my head around actually; working with 'normal' values (values that only go from -1 to 1)
I think, from the perspective of somebody not deeply used to programming, that if sound-levels were directly handled in dB values, it would be a bit easier or more straight-forward. But once you get a bit more used to it, I get that 'normal' linear values are generally more beneficial and practical to work with when you get into deeper formulas and such. But it's still something I personally have to get a bit more comfortable with, since dB levels make more immediate sense to me when thinking audio.



Quote:
Originally Posted by derek.john.evans View Post
Btw, If you have worked on a JS effect, and ready for a Soda interface, email me. I can put it together in a 5-10 minutes and send it back.

Soda is pretty simple, but, I know im not that good at documenting my stuff.
Thanks It will be some time though before I'm ready to commit any code beyond simple experiments. For now I'm just experimenting with bits and pieces to get the feeling for the whole thing.



Quote:
Originally Posted by Tale View Post
(on Windows) REAPER has an option to completely unload the DLL, so you don't have to restart REAPER all the time.
It seems that is more often than not the case with Reaper, that it can already do things you wish it could do.
I've been there several times, thinking I should post a request for some feature I wish it could do, to only find out that it's already possible
JEL 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 06:21 AM.


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