Feedback wanted on front panel

Kirt Burdick and myself are collaborating on some strange VCV Rack modules based on his upcoming comic book Galacto Pit Fighter.

It’s very difficult to create detailed SVG front panels without bogging down the rendering, but we were successful using greyscale versions:

What does the module do? So far it outputs noise based on a short audio sample sent through a bytebeat equations that seems to evolve endlessly. I envision each of the 6 eyeballs either being an output, knob, or input. I’m still experimenting with the functionality.

What do you think?

Here’s more from the comic book:

9 Likes

i like the idea. definitely looks cool.

1 Like

the plugin of the year!

excellent Idea, congrats for the release (of booth )

1 Like

Wonderful, I’d use that! Looks great! The module has it any audio examples, so far?

Great idea! It would also be cool if you add to the right-click context menu the functions:

  1. copy equations to clipboard
  2. paste equations from clipboard

in function 1 you simply format the 6 equations as 6 distinct lines; e.g.

1:t*t/(t>>12&t>>8&63)<<7
2:t>>4+!(-t>>13&7)+2*!(t>>17)|t*t*(t>>(t>>12^t>>11)%3+10)/(7+(t>>10&t>>14&3))*!(t&512)<<3+(t>>14&1)
...
6:....

put them in a string (separated by newlines) and copy them to the clipboard

in function 2 you parse the content of the clipboard (up to 6 lines)

When the patch is saved/load you do the same (put/read the content) in/from the provided json object

yeah yeah yeaeeeeehhhhh

I’d love to do that, but I haven’t found a way of executing equations such as that without having to recompile the C code. If you have any tips, I’m all ears!

I’ll try to post some this weekend!

1 Like

bison and yacc could be your new friends :grinning:

3 Likes

The expression must be “interpreted” and evaluated at runtime on the fly (possibly after a preprocessing stage to optimize speed). The possible approaches are:

  1. build a raw/artisanal parser that supports the operators (and precedence) of the bytebeat operators (as said by stoermelder bison and yacc (or ANTLR) are the official tools for doing stuff like this, but the expressions are simple enough that a hand-made tokenizer and AST tree evaluator could be enough )

  2. use a ready made C++ expression parser like this one: fastmathparser (the only difficulty is to make sure that the operations are made using 8-bit unsigned base type)

The dynamic evaluation of the expressions is surely computational expensive, but usually the more complex modules do hundreds of operations for each sample, so I think it should not be an issue.

1 Like

yeah, looks fun & nice design btw

ANTLR is also a great friend to have :slight_smile:

I’m clueless when it comes to coding and such but this is SUPER interesting! I hope you will succeed!

1 Like

First pass of the new module. Lots of work still to be done! This module is taking a sample loop as input and acting as an effects processor. There are multiple “effects” that will be selectable via CV. Obviously, the front panel is total chaos right now while I’m working on the module.

3 Likes

sounds good. i think some red LED pupils would be pretty cool. and the knobs, maybe along the right side where theres some empty space.

I have some fun ideas for the eyes! :eyes:

Sounds great, the eyes are the ‘window to the soul’ you know! So how dark are your ideas!?

Cool. I like what it does to the sample. (From which movie is it? I feel like I recognise the voice)

In the trailer that Alien seemed to cry blood. Maybe embed a fader under one of them. With its rail blending into the background and knob a red drop of blood. Other eyes could be used directly as knobs. He’d roll his eyes when changing parameters.

1 Like

I’m hoping to release this module by the end of the month! Does anyone know if there are any rules about how complex a front panel can be? Or how to test if a front-panel renders in acceptable amount of time and doesn’t hog up the CPU?

There are no rules, but it sure is possible to make one that will kill bad computers. What I do isn’t great - I time how long I spend in Widget::draw(). But that doesn’t tell the whole story. Hopefully someome will chime in with a good answer. @heapdump might know. I think he made a panel once that would bring a lot of computers to their knees.

1 Like