.vcv file cables[] definitions

I have a patch that crashes rack and I’m trying to narrow down the cause of the crash. I have edited the .vcv file and removed all cables. So it has something to do with the cable connections.

The patch is from a thread on here. I uploaded the original patch, there was modules added and that is where the crash happens.

If I can narrow down the cables some more I might be able to find which modules cause the crash.

so the question is what do these fields represent in "cables": [] and how are they matched to a module in the save.

{
      "id": ?,
      "outputModuleId": ?,
      "outputId": ?,
      "inputModuleId": ?,
      "inputId": ?,
      "color": "#fafdff" //obviously cableColor
    },

outputModuleId and inputModuleId are the ids of the modules, there must be modules within the patch with these values (though it won’t crash Rack if not).
outputId and inputId are ids output and input ports, respectively. As far as I remember they are assigned to the module by the engine.

No, I checked it: Port ids are automatically assigned by the compiler in Module's ParamIds enum, if not explicitly assigned by the developer.
A module developer should no change the order of the ports.

I can load the patch with attached debugger when I get home in a few hours. I got pretty fast narrowing these things down after I’ve set up Visual Studio Code for debugging of Rack :slight_smile:

That would be great to see if it crashes for you also, others in the thread said they can open it, Someone else added modules from my original and that didn’t crash for me. It was only when it was saved from someone else that the one that was not crashing started to crash for me. I’ve a feeling it has something to do with commercial versions of free modules.

Ah okay. So inputModuleId would be the connection from x module (the id of the module connected) and outputModuleId is the module ID of the next module connection? id being this module?

I’m not sure if I understand correctly: a cable with outputModuleId = a and inputModuleId = b goes from module with id = a to module with id = b.

Sorry correction on previous post.

{
      "id": this module,
      "outputModuleId": next module,
      "outputId": port,
      "inputModuleId": x module,
      "inputId": port,
},

.cables[].id is the ID of the cable itself. It is currently not used, but it’s nice to have an identity.
.cables[].outputModuleId is the ID of the module with the output port, and .cables[].outputId is the ID of the output. Respectively for inputs.

2 Likes