Venom Modules - Beta release home stretch - submitted to library

Yes, but not at hand. I’ve got a patch that I never posted that explores the capabilities and problems of various VCOs doing true through zero FM (not PM) using a 0 Hz carrier. The Palm Loop worked the best. The new Pony from Befaco also does really well, but it only provides one waveform at a time. I was looking for simultaneous access to all 4 basic waveforms. I will try to start a new topic about this tomorrow.

I’ve always wondered - is there any difference bettween FM with the carrier at 0 and running any VCO through a non-linear waveshaper? I mean both of them are just driving a static wavetable from a VCO waveform, aren’t they?

And one selfish reason I’d like to see a demo patch is that I’ve never heard anyone complain about the FM-OP, and others like it. Admittedly not many VCOs let you set them to 0, but still? I know if anyone had ever reported an issue with my “Kitchen Sink” I certainly would have fixed it.

FM-OP and Kitchen Sink are PM, yes?

I’m talking strictly about true FM. Bogaudio typically does PM when doing linear FM, but there is a linear VCO mode on the VCO (separate from the FM control) that allows you to access a 0 Hz carrier wave that does true through 0 linear FM. I don’t think that feature is used by many people.

Ah, cool. But is it any different than running a saw into something like by mapper

Hi Dave! I like the muted versions that other people have been advocating. The bright red is too bright for my eyes. Also, black text on a red background is a difficult combination, in my humble opinion.

That being said, I’m super excited to see that you’re creating modules! Awesome!!

1 Like

In my DanTModules plugin I started with full SVG panels, and some didn’t like the colour scheme that much, so when I implemented alternative designs, at first I just created all new SVGs. This quickly became a massive chore.

Next I tried to implement a dynamic colour scheme, the SVG was mostly transparent and the panel was drawn programmatically underneath. I eventually figured out how to get this working, but making the SVG panels was still a pain.

For my new plugin I decided to draw everything programmatically, at least until the design is stable, and this has really sped up development. Not having any SVG editing to do is great and I highly recommend it. (Once the layout and design of your modules is complete you can always then think about adding SVGs with some pizzazz)

It is very easy to draw a basic rect in NanoVG and then have a mostly transparent SVG over the top, this allows you to change the colour quickly and easily during development (or even provide context menu options to change the panel colours).

Here is the basic code to do this:

void draw(const DrawArgs &args) override
{
  nvgBeginPath(args.vg);

  nvgFillColor(args.vg, nvgRGBA(99, 99, 99, 255));

  nvgRect(args.vg, 0.0f, 0.0f, box.size.x, box.size.y);

  nvgFill(args.vg);

  nvgClosePath(vg);

  ModuleWidget::draw(args);
}
1 Like

At the risk of steering too far off topic and unintentially hijacking this release thread…

0 Hz “FM” can indeed seen as waveshaping.

Check out Herbert Janssen on the subject of “FM” Wave Shaping in his comprehensive (e)book on SY Programming (see page 26).

SY refers to the Yamaha SY synthline, though it applies to any Phase Modulation based synth, like the DX series.

Yes, the Yamaha “FM” synths are actually PM implementations. Yamaha for years held the monopoly on “FM” in the synth scape, based on licencing of the FM/PM patents of “FM” “inventor”/“discoverer” John Chowning.

Herbert Janssen, SY Programming

@DaveVenom these modules look great, I can’t wait to play with them. I want to chime in, while I don’t mind having red modules, just looking at the screenshots of these did hurt my eyes. I think the red is a little too “pure” red. If you’re going for a more sanguine theme, maybe a darker red would work (ie. Count Modula’s Sanguine theme)?

Compiling now, looking forward to trying out the Recurse & Rhythm Explorer especially :smile:

UPDATE: Here’s an example of what I’m suggesting. Yet another person taking your design and messing with it:

I just opened the SVG file and changed the colors. I wasn’t able to recolor all the text, but got most of it.

2 Likes

I just had a separate thought from above. I’m not sure the primary use case for Recurse, but I’m trying to use it with a Surge XT delay module. All the Surge modules are stereo, as are most delay effects. Would you consider making Recurse handle stereo input/send/receive/output?

2 Likes

That is a good idea. I doubt I can squeeze 4 more ports in the current module without making it overly cramped. So I will probably create a new stereo version.

EDIT - I was looking at the wrong module - I should be able to squeeze 4 more ports in that size. Would people rather one stereo module and be done with it? Or does it still make sense to have separate mono and stereo versions?

Yes - that is the conclusion I came to. The only drawback in my mind is having a dependency on a font. But I think it is worth it. My designs will always be minimalist, so there is no need for svg - I can simply draw lines, rectangles, text, maybe some circles or arcs easily enough.

I think since I have the svg files for this release (ignoring the color changes), I will stick with my current design and dynamically swap the faceplate svg files to offer alternate skins. But for future work I will try to draw everything, and probably refactor the existing modules.

Yeah, I think a ton of ppl do what @dan.tilley is suggesting - do it programmatically, then do an SVG when it’s done.

@DaveVenom dependent on a font? I don’t understand. You can, of course, ship any font you want in your plugin, assuming you have a license. I useed Google’s Robato for everything - you can do whatever you want with it.

As far as a “final design”, it sounds crazy to me to do it directly in code. At least for me I have to iterate over many alternatives, etc… So I always use a screen design program and output and SVG. But the only critical part is using software as you home in on your design. Whether you then output SVG or start typing code depends on what you like. So ppl really like one, some the other.

[ Oh, and btw, Inkscape is not a screen design program, it’s a vector drawing tool. Of course you can use a vector drawing tool if you want, but most ppl find designing a screen (panel) to be easier with a screen design program ].

I will say that if you don’t use an SVG panel, it’s your responsibility to make sure that your panel doesn’t use too much CPU or GPU to draw. Usually it’s fine, but you should pay attention to it.

Did you create another topic for dev discussions?

Why is this a drawback? Do you have a specific font that you want to use but doesn’t have an appropriate license?

In my new plugin I just created a folder and added it to the make file DISTRIBUTABLES += font

Then I found a font I liked on https://fonts.google.com/ and downloaded the .ttf (I did also try an .otf but those don’t appear to work).

I even figured out how to use the Material icon font Material Symbols and Icons - Google Fonts

    std::shared_ptr<rack::window::Font> font = APP->window->loadFont(rack::asset::plugin(pluginInstance, "font/MaterialIcons-Regular.ttf"));

    if (!font)
    {
      DEBUG("*** FONT NOT LOADED ***");
      return;
    }
    nvgFontFaceId(args.vg, font->handle);

    nvgFontSize(args.vg, 18.0f);
    nvgTextLetterSpacing(args.vg, 0.0f);
    nvgTextAlign(args.vg, static_cast<int>(NVG_ALIGN_CENTER | NVG_ALIGN_TOP));

    nvgBeginPath(args.vg);
    nvgFillColor(args.vg, nvgRGBA(0, 0, 50, 200));
    nvgText(args.vg, xPos, yPos, "\uea5f", NULL); // ea5f is the code point for the calculate icon
    nvgFill(args.vg);

I like it. It would stand out in our collections. options to choose from would probably be best for those that don’t find it comfy, but I would use your original scheme. I like the concepts of the modules too.

1 Like

I believe most stereo modules treat a single input on the left with none on the right as mono. Essentially you just use the left port for in & out if you don’t need stereo. Does this make sense?

2 Likes

Here is a post showing what I see with other VCOs that do true through 0 FM with a 0 Hz carrier wave:

1 Like

I like your Med Light Version a lot , which is strange as I always normally go for the dark … this one should be an option for sure . Cheers .

1 Like

Ooh, always wanted to try out the VRR.

1 Like

Please do tell me about your experience with Rhythm Explorer if you do try the beta. Do read the documentation I have written. There are definitely major similarities with Vermona’s Random Rhythm, but a lot of differences as well.

Missing:

  • No swing for 1/16 notes (well maybe you could achieve something similar with the external clock, but haven’t tried)
  • No internal clock - requires 24 ppqn external clock
  • No dual rhythm generators, just the one

Added:

  • Addition of XOR odd parity and XOR 1 hot to go along with the OR output
  • Linear mode to go along with Offbeat mode
  • Ability to turn off Offbeat (and Linear) for the OR output, which is where XOR becomes interesting
  • More simultaneous divisions for one generator, 8 instead of 4.
  • More division options 1/2 - 1/32, as well as triplet versions of each
  • Each division channel division value can be individually assigned, including repeated division values
  • The order of the divisions is important when Linear or Offbeat is enabled
  • Linear / Offbeat / All can be individually assigned to each division channel, even for the OR mode if using poly CV control
  • Ability to capture the pattern seed value, as well as seed value input so patterns can be captured and played back later
  • Ability to provide your own “random” input to achieve totally different patterns than you get with the internal pseudo random number generator
  • More meter options - bar length up to 16, and phrase length (bar count per phrase) up to 16
  • Addition of clock division outputs, as well as bar start and phrase start trigger outputs
  • Individual division channel mutes to go along with global mute
  • Lots more CV inputs
  • Reset trigger and Run gate outputs to go along with inputs

A good use case for my Bernoulli Switch recently came up in the forum.

And here is my solution using Bernoulli Switch along with a couple modules from Count Modula