Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: LFO #130

Open
Tracked by #69 ...
nathanjhood opened this issue Dec 11, 2024 · 4 comments · Fixed by #153
Open
Tracked by #69 ...

WIP: LFO #130

nathanjhood opened this issue Dec 11, 2024 · 4 comments · Fixed by #153
Assignees
Labels
enhancement New feature or request module Related to a new or existing VCV Rack 2 module

Comments

@nathanjhood
Copy link
Member

No description provided.

@nathanjhood nathanjhood self-assigned this Dec 11, 2024
@nathanjhood nathanjhood added enhancement New feature or request module Related to a new or existing VCV Rack 2 module labels Dec 11, 2024
@nathanjhood nathanjhood linked a pull request Dec 12, 2024 that will close this issue
@nathanjhood nathanjhood mentioned this issue Dec 13, 2024
9 tasks
@nathanjhood nathanjhood changed the title LFO WIP: LFO Dec 13, 2024
@nathanjhood
Copy link
Member Author

nathanjhood commented Dec 13, 2024

Panel stuff.

Fundamental LFO has a width of 9HP - here confirmed by measuring against a row of my HP1 module (pretty much what it was made to do!)

Screenshot from 2024-12-13 04-01-08

I find that a bit weird though because there are 4 ports, but 9HP? We could say 0.5HP either side and we're even, but it isn't really possible to account for 0.5HP if the module were half the width of Fundamental LFO... so, it's just a "by feel" number, I guess, in Fundamental LFO's case.

I imagine it probably looks rigid and uninteresting when everything is very grid-like with equilateral placement, such as if it were 8HP.

Perhaps a good rule of thumb here - for panels generally - will be; Width = (number of ports * 2) + 1

The spare 1 just being a bit of thumb room. Pun intended.

EDIT: Hmmm... looking at it some more, the extra 1 is a helpful offset, which allows the odd-numbered "big knob" (just one of them) to sit flush in the centre of the row of even-numbered ports. Clever.

@nathanjhood
Copy link
Member Author

nathanjhood commented Jan 19, 2025

Latest: I was able to draught this LFO panel up very quickly (comparatively speaking) within nanoVG, using the new design system and component library Widgets:

Image
Image

Plenty missing, and some obvious thoughts straight off the bat (port spacing?) but lots of great things "just worked":

  • lines and (themed) screws automatically placed and drawn
  • knob ring from min to max values of the knob's range
  • knob is labelled and the text is not obfuscated by the size of the knob
  • ports are clearly outputs thanks to the ThemedPortPanelWidget
  • port panels merge nicely when close enough (though too close here, tbh)
  • ports are labelled
  • all the above responds to light/dark theme changes and already uses the global theme (text and BG colors, font, lighting/gradient...)
  • one framebuffer holding most of the above

There are a couple more smells under the hood, particularly in Module and ModuleWidget constructor code...

We might be too far in to the LFO already to fish those things out effectively while developing this module; I'll probably sprint to get a few more of this module's features in place before anything else.

@nathanjhood
Copy link
Member Author

Interesting - and, expected - challenge with the panel spacing:

Image
Image
Image
Image

I don't like the port panels being flush against the panel bounds (inner lines) - I think in a hardware scenario, those areas would be a little bit flimsy without the right care, and hence I'm using those inner lines to tell myself what my "safe margin" is, at least according to what's in my head about hardware panels.

In this case, I'll probably reduce the gap just enough and see if I can condense the port panels into one, without squishing up the thumb room for handling cables. If necessary, I'll add some sort of variable to set corner types on the port panel widgets....

@nathanjhood
Copy link
Member Author

nathanjhood commented Jan 19, 2025

Getting this far with the LFO panel today was pretty easy work, thanks to the design system and component library:

Image
Image

Some polish still required, but it's great having for example a variety of Knob types in once view:

  • huge unipolar parameter
  • large bipolar parameter
  • small bipolar trimpot with reduced range

EDIT:

  • small bipolar trimpot with reduced range

...reduced range? Yes. Why isn't it rendered? scratches head ah, I should have set the min and max values for the knob in the LFO ModuleWidget constructor...

No problem, it will work. I will perhaps add a button for triggering the phasor reset. Not totally sure about the CLK input.

Onto the DSP shortly! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request module Related to a new or existing VCV Rack 2 module
Projects
Status: No status
Development

Successfully merging a pull request may close this issue.

1 participant