limen v2.2.1 - looking for testers on win and mac

Hi all,

I’ve just released v2.2.1 of forsitan-modulare (it’s not in the library yet), which includes a new module called limen: a TCP+JSON control interface for VCV Rack. It lets you query and control your patch from the terminal, scripts, or anything that can open a socket. I also think it could be quite fun to use with LLMs as a tool to explore and build patches.

I’ve developed and tested entirely on Linux, and the CI builds for Windows and Mac pass, but I haven’t been able to run it on either platform. If anyone is willing to give it a quick spin on Windows or Mac and let me know if the TCP server actually works, I’d really appreciate it.

The simplest test is loading the module, checking that the green LED lights up, and running this Python snippet:

import socket, json
s = socket.create_connection(("127.0.0.1", 7000))
s.sendall(b'{"cmd":"list_modules"}\n')
print(json.loads(s.recv(65536)))

In the repo there’s also a CLI client in cli/ (Linux/Mac only, requires a C compiler). More details in the docs.

Thanks!

4 Likes

Works on Intel Mac.

$ python limen-test.py 
{u'ok': True, u'result': [{u'name': u'MixMasterJr', u'plugin': u'MindMeldModular', u'numParams': 72, u'numOutputs': 7, u'model': u'MixMasterJr', u'id': 4083698927086029, u'numInputs': 43}, {u'name': u'AuxSpanderJr', u'plugin': u'MindMeldModular', u'numParams': 74, u'numOutputs': 8, u'model': u'AuxExpanderJr', u'id': 8206628067255968, u'numInputs': 15}, {u'name': u'Recorder', u'plugin': u'VCV-Recorder', u'numParams': 2, u'numOutputs': 0, u'model': u'Recorder', u'id': 8888324433966048, u'numInputs': 4}, {u'name': u'MIDI to Gate', u'plugin': u'Core', u'numParams': 0, u'numOutputs': 16, u'model': u'MIDITriggerToCVInterface', u'id': 8378495225392741, u'numInputs': 0}, {u'name': u'Merge', u'plugin': u'Fundamental', u'numParams': 0, u'numOutputs': 1, u'model': u'Merge', u'id': 1987119294088195, u'numInputs': 16}, {u'name': u'\xb5INFIX', u'plugin': u'Stoermelder-P1', u'numParams': 0, u'numOutputs': 1, u'model': u'InfixMicro', u'id': 2947754257581410, u'numInputs': 9}, {u'name': u'MIDI CC to CV', u'plugin': u'Core', u'numParams': 0, u'numOutputs': 16, u'model': u'MIDICCToCVInterface', u'id': 7062978694893693, u'numInputs': 0}, {u'name': u'SAIL', u'plugin': u'Stoermelder-P1', u'numParams': 2, u'numOutputs': 1, u'model': u'Sail', u'id': 7338155519622644, u'numInputs': 5}, {u'name': u'MIDI Map', u'plugin': u'Core', u'numParams': 0, u'numOutputs': 0, u'model': u'MIDI-Map', u'id': 460145910849595, u'numInputs': 0}, {u'name': u'Shift Pedal', u'plugin': u'Alikins', u'numParams': 8, u'numOutputs': 12, u'model': u'ShiftPedal', u'id': 2556967619964463, u'numInputs': 0}, {u'name': u'Audio 2', u'plugin': u'Core', u'numParams': 1, u'numOutputs': 2, u'model': u'AudioInterface2', u'id': 468474635682229, u'numInputs': 2}, {u'name': u'Contrast and Other BND Editor', u'plugin': u'BaconMusic', u'numParams': 0, u'numOutputs': 0, u'model': u'ContrastBNDEditor', u'id': 4678770465466218, u'numInputs': 0}, {u'name': u'Reverb2', u'plugin': u'SurgeXTRack', u'numParams': 60, u'numOutputs': 2, u'model': u'SurgeXTFXReverb2', u'id': 4091396447541498, u'numInputs': 9}, {u'name': u'Cable Colour Key', u'plugin': u'Inklen-CableColourKey', u'numParams': 0, u'numOutputs': 0, u'model': u'CableColourKey', u'id': 7258997899940027, u'numInputs': 0}, {u'name': u'limen', u'plugin': u'forsitan', u'numParams': 0, u'numOutputs': 0, u'model': u'limen', u'id': 235144299794289, u'numInputs': 0}]}
2 Likes

Works on Win 11

steve@Harasoft MINGW64 /d/_Projects/VCVRack/V2/Rack-SDK/plugins/forsitan-modulare
(master-v2 %=) $ python limen-test.py
{'ok': True, 'result': [{'id': 8518972980240757, 'plugin': 'Core', 'model': 'AudioInterface2', 'name': 'Audio 2', 'numParams': 1, 'numInputs': 2, 'numOutputs': 2}, {'id': 2271109543469851, 'plugin': 'Stoermelder-PackTau', 'model': 'Rf', 'name': 'RF', 'numParams': 0, 'numInputs': 0, 'numOutputs': 0}, {'id': 1294491636219362, 'plugin': 'Stoermelder-P1', 'model': 'Mb', 'name': 'MB', 'numParams': 0, 'numInputs': 0, 'numOutputs': 0}, {'id': 7632151028901228, 'plugin': 'Fundamental', 'model': 'Scope', 'name': 'Scope', 'numParams': 9, 'numInputs': 3, 'numOutputs': 2}, {'id': 7621081679080581, 'plugin': 'Inklen-CableColourKey', 'model': 'CableColourKey', 'name': 'Cable Colour Key', 'numParams': 0, 'numInputs': 0, 'numOutputs': 0}, {'id': 8257984373155004, 'plugin': 'forsitan', 'model': 'limen', 'name': 'limen', 'numParams': 0, 'numInputs': 0, 'numOutputs': 0}]}
1 Like

Win 11 here. My first try was from a python console and I kept getting winerror 10053 in spite of trying several suggested fixes from various sites. I tried disabling the local and public firewalls, editing the hosts file to add a rule for localhost.localdomain at 127.0.0.1, tried adding allow for rack in firewall… all to no avail so I went to bed thinking my windows install had some strange misconfiguration that kept it from working.

I’m glad I gave it another go and tried running it as a script because it worked. I’m pretty sure I was just running into some kind of timeout. To check, I tried again in the terminal, wrapped the lines into a function rather than entering them one by one, and that also worked.