HetrickCV Announcements Thread

Awesome! Playing with Vector and polyphony is great. Would love a stereo version! :pray:

Very cool. I installed the nightly. But VCV Rack thinks that 2.5.2 is newer than the nightly - any tips?

If you want to keep using the nightly, don’t update it. Simple as that. Out-of-band releases like this are usually intended for short-term testing, and it’s a feature that it it’s simple and direct to revert to the released version.

2 Likes

Very nice work. Looking forward to playing around with these.

Btw I saw the “don’t trust AI lol” commit haha. Don’t indeed. :upside_down_face:

2 Likes

I made a fun thing over the weekend! I’ve wanted this for a while and wanted to see if Claude Code could pull it off. It worked in under ten minutes on the first try :melting_face:

This is a port of Valley’s Topograph/Mutable’s Grids but with a phasor input. It’s a separate repo since HetrickCV is usually MIT, but Topograph and Grids are GPL.

I’ve stripped out the Reset/Run/Swing stuff, along with the alternate accent output mode (since syncing other seqs is easier with the phasor). Let me know what you think, and I will submit it to the Library if the reports are good.

14 Likes

I would be very interested to hear a few more details about your vibe-coding experience. What exactly was your approach? I have been reluctant to cede too much of my thinking to machines because I’m concerned about cognitive atrophy. However, I have used LLMs in my coding to teach me stuff, like “how do I do such-and-such in a C++ lambda expression?” Then I type the code myself.

I wonder if I could find a happier medium where I’m still fully competent and involved, but just arriving at verified working code faster.

So far I’ve been very pleased with it, as I offload a lot of implementation and repetitive work so I can focus on design and, in some ways more importantly, testing.

I’m primarily a C++ programmer, so whenever I needed a Python script it would take a few hours to run around trying to remember what libraries I need, avoid indentation disasters, etc. only to write something kind of half-baked. Now it’s a five minute task.

When I started using Claude Code two months ago, I was using “auto accept edits” mode, which was fun but resulted in a lot of very subtle bugs or implementations that got so bad I would just reset the git state to get rid of progress. I’ve found it to be a lot better to read everything and manually approve, intervening when I see something that I know is wrong. Additionally, I make it propose at least three different designs/data structures when I’m starting a task, so that I can follow the logic of each before going down a route. Context management is super important for good results, so I have it dump a lot of stuff into Markdown documents for later access.

So, for this one, I had it read the Grids/Topograph code and describe how the logic works, which saved a lot of jumping around. From there, I had it write a Markdown document with the current logic, and then 3 design proposals for how to render/cache a full bar for phasor access (and when to render new ones). After I found a design I liked, I told it to implement it. Everything worked on the first time except for the chaos logic, which “worked” but didn’t regenerate on each bar. I pointed that out, told it to use my phasor analyzer classes to detect proportional resets, and then it was fixed.

The main thing that I did by hand was creating the panel. Overall, I got to spend a lot more time making weird rhythms with it instead of repeatedly revising it.

8 Likes

I hate being a one note commenter (net really), but this seems like yet another perfect motivation for complete unit test coverage of your code. Are you guys both doing that?

No you have two notes: unit testing and aliasing :joy:

2 Likes

haha. actually I’ve been told I have one note, and it’s selling the products of the company I work for. But I’ll take two notes - thanks!

I wouldn’t say it’s complete, especially in the user interface stuff where I have to test manually (or at least, it’s the only way I know how).

But I do follow a Test Driven Development (TDD) philosophy. I always write a test for a new algorithm before I write even the API of the algorithm. So I already know what the interface should look like, and I’ve already figured out some tests that will be brittle enough to fail if something is wrong with the code I haven’t written yet.

Then I don’t commit until the test and the code are happy with each other. Before beginning the next feature, I write the test for it first. Lather, rinse, repeat.

It sounds like a dumb and slow way to do things until you try it. Now I can’t go back because I’m saving so much time on debugging. Plus I can refactor without fear because all these tests pile up, and I run them on every commit.

I was converted by Uncle Bob to the one true faith of TDD. Here is a part of a video where he describes the rules of TDD that inspired me to this path of higher code quality:

Yeah, pretty much everything you describe applies to the way I do stuff. In like 2005 I read some book on “extreme programming” it sounded crazy to me so I tried the extreme version of TDD and was quite surprised how much I liked it. So I kept it up for my independent stuff. Can’t always do it at work…

1 Like

I can attest it is fun to patch with a follows a kinky phasor nicely

I think it is a super fun addition to the sequencers available to jam on with phasor input

2 Likes

I had a lot of fun using this to ping some filters with chaotic modulation.

8 Likes

looooving this! thanks sm for this port, didn’t realise i needed this so bad until i started fitting it into my workflow <3

1 Like

hey all! has anyone come across a sample player/granular player that works well with the phasor collection? namely, can I load a sample and scan/play through with a phasor ramp?

I’ve tried a few samplers from my library that I use often but nothing has worked yet. Some samplers did have a start CV input but when the play head scrubbed it deactivated the playback.

Thanks!

Here’s an example of that being done with my Memory modules:

Hope that helps.

1 Like

Agreed! Phasors + Memory = :heart: Also, I’ve had good results with the pdArray module ( VCV Library - PdArray Array ), which ended up inspiring a few of the new Battalion sampler engines. They’re essentially Phasor Substep Shaper and Phasor Randomizer.

5 Likes

Yeah Memory plays really well with Hetricks Phasor set. Making a phasor out of a playback position and eh, vice versa, are both super easy. And you can do both at the same time in parallel. That alone is super unique. Once the Brainwash module appeared so you can create a memory buffer at the desired musical length in realtime the possibilities really opened up. <3

1 Like

Here’s another example: Stochastic Telegraph Announcements - #72 by andreya.ek.frisk