Upcoming Tonecarver module: tcArpGen (in Beta)

Could you just save it into the patch zip archive? That way it’s portable and no other directory needed?

As per VCV standard I believe that if the gate is monophonic, it should be expected to be assigned to all V/Oct-in channels. And if it is not monophonic, it should be assigned per channel to V/Oct-in. But I can see how that would make it impossible to select only the first V/Oct-in so I think your choice makes sense.

Like you said, it would make sense that if NO gate cable is connected, that ALL is assumed.

It’s an amazing module! The output is very musical because of the nature of the L-System. It will take some time to wrap my head around going from initial state through rules and replacement to an output, but all the example files and the literature you provided are of great help.

Thank you very much.

1 Like

Thanks. The new version appears to be saving the text file path as intended.

1 Like

The PDF says : Preformatted textGiven a set of 1 or more (up to 16) input notes, tcArpGen arpeggiates over the input notes and generates up to 3 harmony notes selected from the active scale.

What determines whether it generates 1, 2, 3 or 4 harmony notes? Currently my test patch with 1 Meander melody note input into tcArpGen is outputting 4 channels, but channels 3 and 4 are 0v. Do you always output 4 channels, regardless of how many notes are to play?

Here is a brief demo of tcArpGen being fed by Meander as a 12-bar blues harmony and bass and melody with tcArpGen generating the melodic arp and harmony notes.

Here is the patch if anyone wants to play with it: Tonecarver tcArpGen Beta Test-2.vcv (9.6 KB)

1 Like

The $h terms in the rules file determine the number of harmonies produced. There are three potential harmonies: $h1, $h2, and $h3. The rules file must define at least one action ($hx=, $hx+, $hx-, $hx*) for a given harmony for that harmony to be activated.

For example, the up.txt rules file does not define any harmony actions so the arp note is output but no harmony notes are output.

The harm-1.txt rules sets $h1=5 in the seed rule with no other changes to $h1 so the output consists of he arp note plus 1 harmony always at 5 scale degrees above the arp note.

The semi-3.txt rules define and manipulate all 3 harmonies thus producing an arp note and 3 harmony notes.

The Harm Rand button will randomize all the harmony settings on the fly. This can have the effect of enabling harmonies that were not defined in the rule set.

One other factor: harmony notes at same pitch as arp note are suppressed at output. A harmony interval of 0 effectively silences the harmony until it becomes non-zero through explicit increment/decrement/randomization actions in the rule set or via Harm Rand.

1 Like

Hmm … not quite following. What is the patch zip archive?

Thanks. I need to spend some time looking at the txt file patterns. The arp-demo.txt file I am using in my first tests has $h1=1, so that explains why I am getting an arp note and one harmony note out of tcArpGen.

But, what determines how many channels there are on the note output? Is it always going to be 4? I’m not sure what to do with the 2 output channels that have 0v or C4. Looks like the poly gate out for those two channels is also 0v, so gate is off and FM-OP will not be gated on these channels?

Yes, the poly v/oct output and poly gate output always have 4 channels and the gate value for each channel determines whether a note channel is on or off. Modules that take a poly input and poly gate should apply the gates in each channel to the corresponding v/oct channel. For a nice visual example, send the poly v/oct out from tcArpGen to SurgeXT Sine VCO, output from Sine VCO to SurgeXT EGxVCA, and poly gate outut from tcArpGen to EGxVCA. Load a rule with multiple harmonies, semi-3.txt for example, and watch the gates rise and fall in EGxVCA.

2 Likes

Thanks Bill. At this point, I just need to do a lot of playing (I mean testing :wink:). I am very pleased with tcArpGen so far, I will definitely be using it in my music.

1 Like

The patches are saved as a compressed archive so patch assets can be saved into it (via json, which is the uncompressed patch format). That way it travels with the patch if shared. Just an idea

Huge thanks to @pgatt for compiling the module for Mac. Get it here: https://community.vcvrack.com/uploads/short-url/qfxcq1BdLafssjn0tIRpu50iosZ.vcvplugin

Ahh yes, I see. The expanded sequences can get quite large (> 10k terms) so some kind of large storage option, perhaps similar to this, could be used:

Updated versions for Windows available here: Tonecarver-2.0.3-win-x64.vcvplugin

Manual: tcArpGen.pdf

Changes:

  • Added menu option to select Poly Ext Scale format
  • Use input gate channel 0 for input V/Oct channels that have no corresponding gate channel
  • Fixed scale restore bug
  • Shrunk panel size (a little)
  • Added panel themes selectable by right click menu
  • Add Note Order CV input (< -1.66 = As-Received, > 1.67 = Hi to Lo, else Lo to Hi)
  • Removed unused delay trace LEDs in harmony delay section
  • Moved and recolored delay trace lights in arp delay section
  • Disable delay traces while Run is disabled
4 Likes

Unfortunately, I have multiple issues wit\ tcArpGen 2.0.3:

  • I cannot load my patches that have tcArpGen 2.0.2 in them. Rack crashes when the patch loads. The last thing in the log file is… well now it does not crash. Any way it was saying the Rack JSON manifest had been loaded. In the meantime I had created a new patch that uses tcArpGen and Meander and that seems to have fixed up the manifest issue.

  • I thought tcArpGen 2.0.3 was not doing Poly External Scale properly, but my patch crashed Rack again, so something is still wrong. Although there is no crash message in the log file, there is a tcArpGen load error:

Did either the patch format or the rule format change in this version. Or the data JSON format?

Edit: Also, the scale format is not being saved into the patch file.

Edit: The "cannot find start rule " error was probably caused by me creating a new patch but forgetting to select a System Rule File in tcArpGen. Not sure.

Edit3: Well, if I try to connect the Meander melody note out cable to tcArpGen Poly-In V/Oct, Rack crashes with no error message. Probably this has to do with Meander melody out being monophonic. Since I had to start my patches over due to crash, I no longer have everything setup correctly for tcArpGen. This is going to be tedious.

1 Like

Hmm … sorry about that. The json format changed, but that should be backward compatible so that items not saved from a previous version are gracefully defaulted until the patch is saved in a new version. There is an additional input (the Key Order CV input), but that was added to the end of the inputs[] array so it does not disturb any previous input ids. I did do some refactoring in the code that supports scales, and some scale related info is stored in the json format. It could be that the scale info saved from the previous version is producing wrong scale notes at startup, but a full on crash seems unlikely.

The ‘cannot find start rule: S’ message happens when the arp rules file is loaded and does not contain the seed ‘S’ rule. That happens when selecting a rules file that is not a valid rules file. The path to the rules file is stored in the json data. On startup, the module reads that path from the json file and reloads it. If the file does not exist or has changed to no longer be a valid rules file, then the ‘cannot find start rule: S’ message appears in the log file. Or … it could be (probably is) a missing check in the code to see if, in fact, a valid path was loaded from the json file. This seems the most likely to me. I will investigate.

Good catch on the ext scale format not being persisted. Will fix that.

I’m pretty much dead in the water. Any existing tcArpGen patch I choose to load results in a crash with no error. That then triggers off confusing error cascades on subsequent loads. This last time, my existing patch file loaded and seemed to be working correctly, but I saved the file and reloaded and it crashed.

Try this:

https://www.dropbox.com/s/2t8e4h7zfllp1c5/Tonecarver-2.0.3-win-x64.vcvplugin?dl=0

Updated the json code to be more careful about handling the rules file to load, and to save/restore the ext scale format Let’s see if that fixes things.

Sorry, but although one of my patches seemed to work with this latest, after saving a re-loading, that patch will no longer load as it causes a Rack crash with no log crash info.

I think I have run out of patches to test on. Actually I tried one I had not tried today and it crashes on load with no log error.