SIM Development thread

Exactly.

2 Likes

Ah, I missed that. I need to revisit my playground :grinning:

Ah yes. The Aaron Static ScaleCV works great for quantizing to a scale and the DiatonicCV works great for quantizing to a chord. The ScaleCV is limited to the modal scales, but the DiatonicCV supplies chords as major, major7, and major79, Chord inversions and voicings can be CV controlled.

ScaleCV can send the scale to DiatonicCV.

These are very nice modules and I use them a lot. Too bad AaronStatic is MIA.

It will also generate minor and dim chords, but I can’t figure out the logic.

It probably is applying the same logic as Meander does such that all chords are either major, minor or diminished in that particular mode and and root.

1 Like

His modules are probably the reason why Coerce ended up the way it did.

The modules in the pipeline make use of aaron static + coerce to produce chords, arpeggios and ostinatos.

1 Like

Hi, and welcome to the plugin developers. You mentioned using a Linux build chain. @qno has done some excellent work on using GitHub to produce builds for all four supported architectures. Whenever you push to your repository, you can click on the Actions tab at the top of the GitHub repository and watch the builds complete for each system. Once these are completed you will see green indicators, scroll to the bottom of the page to find the plugin downloads that you can distribute for testing.

All you need to do is copy the file located at vcv-plugin-cmake-example/.github/workflows/build-plugin.yml at main · qno/vcv-plugin-cmake-example · GitHub to your repository, and push to github. This only needs to be done once and will work for all future commits. If you have any issues with this I am happy to help.

I have just tested this by forking your repository and can confirm your plugin builds and runs on all four platforms. If you would like to look at what changes I have made : GitHub - curlymorphic/SIM: VCV Rack Plugins . The example builds can be found : Added github build chain, based on work by qno https://github.com/qno… · curlymorphic/SIM@97d0f07 · GitHub

5 Likes

I use this too, and I’ve become a convert/evangelist for it. I use it in my Sapphire plugin’s repo, and I’ve helped a couple of other people install it in theirs as well. No more “your code doesn’t build” from VCV Rack maintainers. Now when my code builds on Windows but not Mac, I know it instantly.

You can also add extra yml files in your .github/workflows/ folder to run additional unit tests. For example, I have this one to run my custom bash script runtests every time I push, in addition to the above-mentioned build scripts:

3 Likes

I agree with how good this is. I used to have something simular in V1, but qno’s version is much cleaner.

Using GitHub for continuous integration is excellent, and the original idea can be expanded. I also use it to run unit tests on mac and Linux, but I have yet to try and get them to run on windows as well. I also have a script to check formatting using clang-format.

But for a new developer, I would suggest using the script as-is and then expanding later once comfortable.

1 Like

That worked flawlessly. Thank you for preventing me from going down a probably deeper rabbit hole.

3 Likes

It will likely work on my next push. Beware edits to submodules without forking first. the submoduloe commit is unfound unless you fork and reset the git push/pull urls.

This is the plug-in i’ve been looking for ages. Really handy in generative patches. Thanks a lot !

2 Likes

COERCE works great, replaces a huge kludge I built, and looks great, too

1 Like

Is it possible to build regular .vcvplugin files instead of the .zip files with this workflow?

2 Likes

I am unsure, but the zip file does contain the .vcvplugin file. I just download the zip, and copy just the .vcvpluin to my plugin folder.

My apologies for not being able to help more, I know very little about this build chain.

That’s a good question. Whereas dealing with a zip file is conceptually trivial, I get tripped up on it almost every time when a build distribution is via zip.

The workflow creates regular vcvplugin files. What you can download in the workflow tab are just the build artifacts that are stored and can be reused in other workflow jobs and it contains the vcvplugin file in this case. A vcvplugin is attached to a release build, which means you need to create a git tag for this to happen or have a look at the Nightly publish step of the surge-rack workflow that always creates a vcvplugin on each push and reattaching it to a nightly release. Probably Latest would be a better name for this than Nighly.

2 Likes

Thanks everyone for your kind and helpful comments.

  • I added a 2 HP version.
  • Implemented ‘bypass’ correctly.

All I need now is a bug.

4 Likes

I was a bit surprised with this build. I have created quite a few Coerce patches of all types. After I updated, the first patch I loaded replaced the wide Coerce module with the narrow Coerce module and lost the In cable. So, I guess I have to carefully fix a dozen or so patches.

I suppose the wide module was originally named Coerce but is now Coerce6 and the narrow module is now Coerce, so the patch loader chose to disconnect the input cable since it could not uniquely determine how to map the old to the new module.

1 Like

Sorry about that. I had the same happen to my patches.

That’s precisely what happened. Won’t happen again.

1 Like

I’m in the process of fixing up my Coerce patches. I did just now get a crash that I think was due to my having connected more than one input on the original Coerce(6) module. I was able to continue and reload Rack and the patch was there with the narrow Coerce and I could attach the input cable. I may have lost some cables, but that is okay. In most cases I just had one input connected in my test patches.

Good to learn this lesson now rather than later after library release :wink:

By the way, I am still loving Coerce.