Custom DSP Code 2 (comunity project)
Posted: Mon Jan 26, 2015 9:24 pm
Hello Flowstone community!
Recently I've started a new Flowstone project that we all will hopefully benefit from, once it's finished. A new custom DSP code component/compiler. It will contain following features:
- all features currently present in stock DSP code component (some replaced with faster versions)
- MartinVicanek's stream math functions
- ability to declare and use your own functions within the code
- ability to declare functions in assembly
- proper IF/ELSE logic, FOR, WHILE and UNTIL loops (these will be useful only in mono and mono4)
- ability to use proper integers & some integer calculations
- ability to shuffle channels (you will not have to split your code into parts and use unpack-pack prims)
- new pointer input and output for processing mems and ruby frames like arrays inside of code (not copies)
- self-optimization
I already have first third of the compiler done and rest of it layered out in head, but I'm not very good at making GUI. If there is someone, who can help me out with it, I'd be very grateful.
Here's how I imagine the GUI. It will be split into 7 individual windows (preferably re-sizable and re-arrangeable when "toggle EditPanel" is on).
In first window inputs and outputs will be declared, including memin and pointer input/output.
In second window variables (and constants) will be declared. Individual SSE channels may be given different values like "float var=[3,5,7,9];" will fill channels 0-3 with respective values automatically. This will also work for arrays.
in third window you may declare functions. Functions will be placed inline when used, just like in stock DSP code. Assembler-declared functions will be added somewhere inside the module through ruby, cos' it's quite an advanced feature.
The rest four windows will serve for writing the actual code one for each stage.
The entire module will have one output for green text, which will give out the generated assembler code. In current version of flowstone you'd have to copy-paste it into a assembler component, but this feature would automate that. Hopefully, some update to assembler will be done in next update, possibly widening the possibilities even more.
Please, feel free to express your ideas, opinions and wishes
Once I'll have a working prototype I will post it here and/or on FSguru...
Recently I've started a new Flowstone project that we all will hopefully benefit from, once it's finished. A new custom DSP code component/compiler. It will contain following features:
- all features currently present in stock DSP code component (some replaced with faster versions)
- MartinVicanek's stream math functions
- ability to declare and use your own functions within the code
- ability to declare functions in assembly
- proper IF/ELSE logic, FOR, WHILE and UNTIL loops (these will be useful only in mono and mono4)
- ability to use proper integers & some integer calculations
- ability to shuffle channels (you will not have to split your code into parts and use unpack-pack prims)
- new pointer input and output for processing mems and ruby frames like arrays inside of code (not copies)
- self-optimization
I already have first third of the compiler done and rest of it layered out in head, but I'm not very good at making GUI. If there is someone, who can help me out with it, I'd be very grateful.
Here's how I imagine the GUI. It will be split into 7 individual windows (preferably re-sizable and re-arrangeable when "toggle EditPanel" is on).
In first window inputs and outputs will be declared, including memin and pointer input/output.
In second window variables (and constants) will be declared. Individual SSE channels may be given different values like "float var=[3,5,7,9];" will fill channels 0-3 with respective values automatically. This will also work for arrays.
in third window you may declare functions. Functions will be placed inline when used, just like in stock DSP code. Assembler-declared functions will be added somewhere inside the module through ruby, cos' it's quite an advanced feature.
The rest four windows will serve for writing the actual code one for each stage.
The entire module will have one output for green text, which will give out the generated assembler code. In current version of flowstone you'd have to copy-paste it into a assembler component, but this feature would automate that. Hopefully, some update to assembler will be done in next update, possibly widening the possibilities even more.
Please, feel free to express your ideas, opinions and wishes