|
|
|
07-30-2009, 07:45 AM
|
#1
|
Human being with feelings
Join Date: Mar 2007
Posts: 21,551
|
JS Front End Project
I wonder if some of you JS developers could help me.
I'm working on an application that spits out JS code. It will be written in VB and I'll post a screenshot here.
The idea is to add controls in the VB app (drag/drop I suppose) and build a JS type interface and when you hit a build button it will generate the JS code for the thing based on the graphics and the options chosen.
It will work (if it works) like a JS Builder.
I want to start with REALLY basic stuff. Anyone game to collaborate?
|
|
|
07-30-2009, 08:42 AM
|
#2
|
Human being with feelings
Join Date: Sep 2008
Location: Sweden
Posts: 7,416
|
I'm by no means a JS guru, but I've managed to write a few JS effects. If no one else takes you up on this, I can...
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...
|
|
|
07-30-2009, 09:09 AM
|
#3
|
Human being with feelings
Join Date: Mar 2007
Location: Surrey, BC
Posts: 745
|
Hi Lawrence,
I would be willing to help out if I can. I was going to try to do the same thing a while ago (also using VB), but decided it would involve more time and effort that I was willing to commit.
cheers
|
|
|
07-30-2009, 09:11 AM
|
#4
|
Human being with feelings
Join Date: Jun 2006
Posts: 22,567
|
it would be cool to have a synthedit like program that did JS...
im not sure if thats what you are proposing, but im sure its a good idea nonetheless.
|
|
|
07-30-2009, 09:54 AM
|
#5
|
Human being with feelings
Join Date: Mar 2007
Posts: 21,551
|
Quote:
Originally Posted by argee
Hi Lawrence,
I would be willing to help out if I can. I was going to try to do the same thing a while ago (also using VB), but decided it would involve more time and effort that I was willing to commit.
cheers
|
Yes. That's why I asked for help.
The first part would be pretty easy, setting how many sliders, naming them and setting their min/max values and so on and terminating the top part of the JS code correctly... however...
I'm wondering how much of the actual "...this slider should do this..." JS code logic (from a library of JS code blocks and strings) can be captured and then built correctly as combined text strings in VB?
Any ideas on the latter part? That's obviously the hard part.
Last edited by Lawrence; 07-30-2009 at 09:56 AM.
|
|
|
07-30-2009, 10:53 AM
|
#6
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
It sounds amazing !
... and the tight integration of graphics would be a huge bonus
Thank you a lot, Lawrence, for willing to get into such a scary (for the development part of such a project) & thrilly (for what it would give us !) thing.
I think that FL as such a thing (with SynthMaker FL), and now, also, Live (with Max for Live). But i have nver tried any.
|
|
|
07-30-2009, 11:05 AM
|
#7
|
Human being with feelings
Join Date: Mar 2007
Location: Surrey, BC
Posts: 745
|
The problem as I see it is that it's hard to separate the graphics code from the audio/midi processing code as they need to co-habitate and interact in different ways depending on the effect. I'm not sure how to make it as easy as drag-and-drop. JS is pretty open-ended on the processing side, but the graphics capabilities were really just tacked on at the request of users, so the interface between them tends to be a custom job every time.
There are also limitations to what you can do graphically in JS, the big one being text handling (it doesn't handle text strings at all, only single characters).
I guess you also have to weigh the amount of effort required to create something that's useful against how much you think it would actually get used. My experience is that there's only a small proportion of Reaper users that need/want GUI's for the JS effects and likely a much smaller number that would actually create their own.
This all sounds kind of negative and probably explains why I never went anywhere with it, but you may have better programming skills and ideas than I do.
My $0.02
cheers
|
|
|
07-30-2009, 11:29 AM
|
#8
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Argee, i don't think it is negative, and i think it is quite well balanced (the question "is it worth it?" is indeed important).
But if it is possible to do, and if Lawrence thinks he can do it without spending 24h/7days a week on it, i think it would be an excellent tool which could widen the use and appeal of JS (at least to me).
I know it is a bit like opening a Pandora's box, but even just allowing very simple stuff (like : - specifying a size, - drag/dropping a knob or a fader from a library (even if it is a closed and small library with only 4 or 5 kind of knobs, faders, switches, backgrounds, vumeters) would be very thrilling
Just being able to decide, for example, to put one kind of controls on the left side, another kind of controls on the upper right side, etc. would allow a more clever (and user-friendly) presentation of the existing JS.
At the moment, i'm using very simple JS plugins with only 3-4 faders, but i really can't get used to use more complex plugins were you have an endless list of dozens of sliders without a GUI : it kinda gives headaches
|
|
|
07-30-2009, 11:59 AM
|
#9
|
Human being with feelings
Join Date: Apr 2006
Posts: 998
|
I'm a VB coder too, amongst other languages. Holler if you need something.
__________________
Get Dropbox! (Bonus space for both of us with that link)
|
|
|
07-30-2009, 12:50 PM
|
#10
|
Human being with feelings
Join Date: Mar 2007
Posts: 21,551
|
Hmm... you guys have a point. This would be a lot of work with little potential value. I was thinking about it and wondering if it was possible.
Probably a big undertaking especially since I don't really know the JS language and would be dropping code blocks in that I don't really understand what they do.
Ok... bad idea. I have lots of free time but perhaps not *that* much.
I start thinking "VB" in the fall and start lining up projects for the winter months (Michigan).
|
|
|
07-30-2009, 12:57 PM
|
#11
|
Human being with feelings
Join Date: Mar 2007
Location: Surrey, BC
Posts: 745
|
Hey Lawrence,
That's OK, keep thinking, you never know what might turn up
cheers
|
|
|
07-30-2009, 01:14 PM
|
#12
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Quote:
Originally Posted by Lawrence
[...]his would be a lot of work with little potential value.[...] bad idea
|
No : excellent idea with a great potential value
But yes... might be a true time-eater !
|
|
|
07-30-2009, 03:06 PM
|
#13
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
lawrence,
i'm willing to contribute, if you are going to pursue the concept of a modular generator of js code (similar to synthedit).
scheme:
Quote:
[list of dsp modules] --> [interpreter & debugger] --> [modular arrangement] --> [code generation] --> [consolidated fx in js code]
|
and modules should be organized in their own formatting and specification, as all variables must be unique in the final generated code. and that is why i'm suggesting an interpreter stage from xml or ini type formatting:
Code:
//filename "gainstage.jsm" - (js module)
@io
//this section contains pointers to input and output variables
//2 inputs are set on line 1, and two outputs on line 2
in0,in1; //<- spl0...spln;
out0,out1; //<- spl0...spln;
@vars
//this section contains pointers to used variables
var0,var1,var2;
@init
//empty
@slider
//two sliders are set here
$slider1:0<-20,20,1>name0;
$slider2:0<-20,20,1>name1;
var0=(slider1+slider2)*0.5;
var1=10^(var0/20);
@sample
//processing
out0=in0*var1;
out1=in1*var1;
@block
//empty
//@gfx & @serialize - disabled
or in xml (presuming that VB has good xml manipulation):
PHP Code:
<!-- //filename "gainstage.xml" - (js module) -->
<io> <!-- //this section contains pointers to input and output variables --> <inputs> <in>in0</in> <in>in1</in> </inputs> <outputs> <out>out0</out> <out>out1</out> </outputs> </io> <!-- //this section contains pointers to used variables --> <vars> <var>var0<var/> <var>var1<var/> </vars> <!-- //init section empty --> <init/> <!-- //sliders and @slider code are set here --> <slider> <sliders> <slider init='0' min='-20' max='20' step='1' name='name0'/> <slider init='0' min='-20' max='20' step='1' name='name1'/> </sliders> <code> <![CDATA[ var0=(slider0+slider1)*0.5; var1=10^(var0/20); ]]> </code> </slider> <!-- //@sample section --> <sample> <![CDATA[ out0=in0*var1; out1=in1*var1; ]]> </sample> <!-- //@block section empty --> <block/>
<!-- //@gfx & @serialize - disabled -->
* interpreter:
the interpreted should load all the above sections into a 'module' with an index N.
replacement should occur for all variables and slider code according to the index, in the form of "search and replace" for text.
where there is a variable 'var0' should be replaced in a form which preserves the variable uniqueness - for example 'moduleN_var0'
* arrangement:
this could go from "cables/boxes" like interface to the simplistic indexes(N) and inputs and outputs definition, so that parallel processing is possible. on index and io change the code in this module should be corrected.
* generator:
so if we have initially a template with blank - @init, @block, @sample sections. the code generator should fill them with code from the corresponding module sections. sliders could be arranged
desc: line for fx name and etc.
---
i can see some holes in the above concept but nothing that significant.
on the @gfx side of things, which i believe is your main goal for this project, i personally appreciate the use @gfx _only_ for non-linear parameter mapping, i.e. when a slider or a rotary control has non-linear behavior (extending the 'slider' class in jesusonic in a way) or something like an oscilloscope. a good gui is a good gui, no question about that, but not really required in my opinion. of course if there is a program that can design a user preferred gui for a js fx, that would be very cool.
--
lubomir
Last edited by liteon; 07-30-2009 at 03:12 PM.
|
|
|
07-30-2009, 03:24 PM
|
#14
|
Human being with feelings
Join Date: Mar 2007
Posts: 21,551
|
I think if I were going to do this, that certainly looks to be the way forward. I'm with you on the code modules... that's where my mind had been dwelling. I (or whomever) would have to work out some sort of higher level diagram for the various modules (possible functions) they wish to include and how much interaction with other functions, and to define the outside parameters for any JS plug generated by the "builder".
It might be interesting to see how that would all setup initially. If I were tackling this (which looks less and less likely ) I'd flowchart the entire thing out first based on available functions (to be presented to the user) and options before I started writing any code.
I'd need to visualize the levels and dimensions of the output options first.
|
|
|
07-31-2009, 12:52 PM
|
#15
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
i prefer the approach of doing some initial planning only to consider any *major* drawbacks and limitations and starting with a simplistic version straight away.
here is a simple development of the above concept for an online (and possibly offline) version, i've made it in a 3-4 hours span this afternoon with as2/xml/html.
it loads modules in a list. user can add modules, edit order and routing, but there are fixed numbers of channels (2) per module and no midi routing for now. there is a build in editor, so each module can be edited independently based on the original prototype and then stored.
its currently using xml but there is a small problem with the editor and [cdata], so it may end up using different formating for the modules.
i'm planning to take this online-tool to a stage where user can generate fx and possibly save and load projects...
of course something for local use (in vb for example), would have significantly fewer limitations. if you are still planning something like that, both versions - online/offline, could use the same formating for the modules (xml isn't very flexible for changes in structure, however)...
--
lubomir
|
|
|
07-31-2009, 12:59 PM
|
#16
|
Human being with feelings
Join Date: Mar 2007
Posts: 21,551
|
Keep going.
|
|
|
07-31-2009, 01:00 PM
|
#17
|
Human being with feelings
Join Date: Sep 2008
Location: Sweden
Posts: 7,416
|
Quote:
Originally Posted by liteon
here is a simple development of the above concept for an online (and possibly offline) version, i've made it in a 3-4 hours span this afternoon with as2/xml/html.
|
"3-4 hour span this afternoon"... Man, you are awesome...
Quote:
Originally Posted by liteon
i'm planning to take this online-tool to a stage where user can generate fx and possibly save and load projects...
|
Sounds great.
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...
|
|
|
08-01-2009, 11:26 AM
|
#18
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
routing teaser for 0.0.2:
since the default modules, will only have 1 stereo in and out, a "2to1mixer" module is required - average-er or user controlled. it will have some extra interaction with the engine and this will allow parallel processing, as for example currently the [out] module also has only one input.
my experience with any of "max", "synthedit", "synthmaker" is close to 0 btw, so share any ideas, if you might have such.
- for (very distant) future version, each module can be accompanied with gfx code and gfx arrangement section accordingly.
- save and load is also a nay for now, until further notice. (.sol) is one quick solution, but there is default 100k limit per url, which is quite low.
---
|
|
|
08-11-2009, 05:43 PM
|
#19
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
0.0.5
---
- multichannel modules - parallel processing with 2x1mixer
- some global buttons: delete, minimize, maximize
next up?:
- full multichannel support (spl0-splxx) - there should be a dialog on startup to select number of channels. its currently stereo only.
- routing for midi and generators. (midi-2-frequency)
|
|
|
08-11-2009, 11:02 PM
|
#20
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
amazing !
looking forward to it
|
|
|
08-11-2009, 11:16 PM
|
#21
|
Human being with feelings
Join Date: Sep 2006
Location: Arse end of the earth.
Posts: 2,988
|
Wow, this looks awesome.
|
|
|
08-12-2009, 07:40 PM
|
#22
|
Human being with feelings
Join Date: Dec 2007
Location: In church, burning it down
Posts: 1,345
|
Liteon i'm a full time user of SE and SM and any pointers you need let me know
This is close to the most exciting thing in Reaper for me personally for a long long time
As usual your stuff is very much appreciated here
NAS
__________________
Not Gods or Saints but HUMAN be
|
|
|
08-23-2009, 01:06 PM
|
#23
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
i'm glad there is some interest, cheers
decided to move the work to flex sdk / as3. this will allow the use of the "air" projector (which is multi-platform!) for saving and loading projects for an eventual locale version.
the work on the engine is progressing quite slow (little to no free time on my side), but the ideas are quite solid and the "gfx arranger" seems quite possible now!
ps: perhaps picking a proper name for the project is the most difficult part...
|
|
|
08-23-2009, 04:10 PM
|
#24
|
Human being with feelings
Join Date: Mar 2007
Posts: 21,551
|
Wow. This is WAY better than what I had started to sketch out in VB6.
Bowing in admiration...
|
|
|
08-23-2009, 04:54 PM
|
#25
|
Human being with feelings
Join Date: May 2006
Location: Saskatoon, Canada
Posts: 2,110
|
I really love the direction this is headed. For my workflow the ability to code or adjust utilities to my needs is the missing piece. This tool will make this much easier to do. Great idea Lawrence and thanks to liteon for running with it as much as you have.
Perhaps you could call it "JS Apparition" since that's what it's called when someone "visualizes" the code langauage's namesake. A little tongue in cheek but I though I would put it out there.
|
|
|
08-24-2009, 03:00 PM
|
#26
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
we could call it "js-lide" as it is lawrence's idea and its an ide in a way.
had some fun writing down a syntax highlighter class for the module editor this evening.
*vid is 2x speed. i've manged to cam-record a debugger alarm in there. ignore that.
the SH is operating per line, so no line heavy loop operations unless copy pasting occurs. however for copy-pasting more lines (1000 lines for example) it has to be optimized a lot - i will be looking into ways of doing that.
|
|
|
08-24-2009, 03:11 PM
|
#27
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
..........
Last edited by liteon; 08-24-2009 at 03:14 PM.
|
|
|
08-24-2009, 03:27 PM
|
#28
|
Human being with feelings
Join Date: Mar 2007
Location: Wellington, New Zealand
Posts: 2,261
|
This is SO cool....
|
|
|
08-26-2009, 06:55 AM
|
#29
|
Human being with feelings
Join Date: Dec 2007
Location: In church, burning it down
Posts: 1,345
|
The idea is a really old one that has been kicking about a couple of years now
Personally i would just go with something simple like JS-Builder
NAS
__________________
Not Gods or Saints but HUMAN be
|
|
|
08-26-2009, 02:58 PM
|
#30
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
'jsbuild' definitively sounds nice, however there are at least 2 applications with the same name including the good'ol duke nukem editor :-)
we should leave the naming for later in the dev stage - pick some unique abbreviation and thats it.
don't forget to post any functionality related ideas that you might have in this thread.
|
|
|
09-24-2009, 11:08 AM
|
#31
|
Human being with feelings
Join Date: Apr 2008
Posts: 510
|
0.0.9
0.0.9
[img]http://img180.**************/img180/466/jsfxgen009.gif[/img]
- drag & drop routing
this is much better than input fields and also enables easing for the next point in this list
- variable based in/out pins for modules
much like other modular environments <inputs>/<outputs> section can simply be used to determine a number input and output parameters for each module (and update them dynamically on save). this will allow the use of 'gfx' and 'midi' modules to be link to any other modules. in the above clip, there is an example of attaching a 'gfx slider' module to a filter code.
- redesigned the modules to fit new functionality
- delete connection by clicking on line
- added the new build in editor: line numbers, syntax, undo etc
[known issues]
- memory slots are an issue, because if a module uses slots 0-100, other modules should not use the same. ideally a solution could be a more well defined array class in js. (ex: myarray = array(variable,[..]); )
- one of the major drawbacks of 'as2/3' programming is the poor performance of the actionscript virtual machine and rendering engine for text fields.
cpu usage is very high for large texts. i'm thinking of a way to output only portion of a string based on caret movement in a text field- a bit tricky that is.
there are a lot of things to be sorted out before public release.
|
|
|
09-24-2009, 11:34 AM
|
#32
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
Liteon, this look amazing !
|
|
|
09-24-2009, 11:36 AM
|
#33
|
Human being with feelings
Join Date: Nov 2008
Location: Toronto, Canada
Posts: 4,630
|
Just some ideas for names: If the old one sticks, I suggest "JS_Builder" because it builds, and is not in fact a "build" or end product but the means to that end. (sorry, trying to be thorough).
Also: JS_Creationist
or:
JS_Genesis
JS_DNA
JS_BlockHead
JS_ReaAktor (cause it has that Reaktor vibe)
Just some thoughts.
|
|
|
09-24-2009, 01:28 PM
|
#34
|
Human being with feelings
Join Date: Feb 2007
Posts: 3,221
|
this is truly brilliant. cannot wait to see advanced midi capabilities spawn out of this.
jshelix
|
|
|
09-25-2009, 04:45 PM
|
#35
|
Human being with feelings
Join Date: Jun 2007
Location: Tromsø, Norway
Posts: 223
|
Visual JS :P
|
|
|
09-25-2009, 06:10 PM
|
#36
|
Human being with feelings
Join Date: Apr 2006
Posts: 998
|
How about GRAIL? something like Generator for Reaper's Audio Integration Language.
Kinda fits into the whole Reaper theme, without being too irreverent
__________________
Get Dropbox! (Bonus space for both of us with that link)
|
|
|
09-26-2009, 02:45 AM
|
#37
|
Human being with feelings
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
|
reaXtend ?
As it allows you to extend the JS library with your own, and also a bit as it reminds me of Ext, with the modular approach...
|
|
|
09-26-2009, 04:29 AM
|
#38
|
Human being with feelings
Join Date: Feb 2008
Location: Eesti
Posts: 2,715
|
Front end to JesuSonic?
I'd say it's God
|
|
|
09-26-2009, 08:15 AM
|
#39
|
Human being with feelings
Join Date: Jun 2009
Location: South, UK
Posts: 14,214
|
This looks amazing! Will keep my eyes on this one!
|
|
|
09-26-2009, 09:06 AM
|
#40
|
Human being with feelings
Join Date: Jan 2007
Location: The Underground Bunker
Posts: 705
|
Quote:
Originally Posted by carbon
Front end to JesuSonic?
I'd say it's God
|
or keeping it 'prophet style' Modular Muhammed
-W
__________________
"if DAWs are religions, REAPER is atheism" - The big J
__________________
Windows 10x64 | Asus Z170-a i7, 32GB ram | RME-Digiface USB
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 02:19 AM.
|