Headless Mode in Rack v2

:+1:

I made a quick test patch with only core modules. When opened with a full rack window I get sound. when trying to run headless, it seemingly does nothing.

Log:

[0.003 info adapters/standalone.cpp:137 main] VCV Rack Free v2.0.0
[0.003 info adapters/standalone.cpp:138 main] Windows 10.0
[0.003 info adapters/standalone.cpp:144 main] Args: rack c:\Users\PeterS\Music\test.vcv 
[0.003 info adapters/standalone.cpp:147 main] System directory: C:\Program Files\VCV\Rack2Free
[0.003 info adapters/standalone.cpp:148 main] User directory: C:/Users/PeterS/Documents/Rack2
[0.003 info adapters/standalone.cpp:152 main] System time: 
[0.003 info src/settings.cpp:455 load] Loading settings C:/Users/PeterS/Documents/Rack2/settings.json
[0.005 info adapters/standalone.cpp:175 main] Initializing environment
[0.008 info src/rtaudio.cpp:254 RtAudioDriver] Creating RtAudio WASAPI driver
[0.025 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio WASAPI device 0: Speakers (Steam Streaming Microphone) (0 in, 2 out)
[0.032 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio WASAPI device 1: Speakers (Steam Streaming Speakers) (0 in, 2 out)
[0.038 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio WASAPI device 2: Speakers (High Definition Audio Device) (0 in, 2 out)
[0.044 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio WASAPI device 3: Microphone (Steam Streaming Microphone) (1 in, 0 out)
[0.050 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio WASAPI device 4: Microphone (HD Webcam C310) (1 in, 0 out)
[0.050 info src/rtaudio.cpp:254 RtAudioDriver] Creating RtAudio ASIO driver
[0.054 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio ASIO device 0: Soundcraft USB Audio ASIO (0 in, 0 out)
[0.054 info src/rtaudio.cpp:254 RtAudioDriver] Creating RtAudio DirectSound driver
[0.150 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio DirectSound device 0: Default Device (2 in, 2 out)
[0.156 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio DirectSound device 1: Speakers (High Definition Audio Device) (0 in, 2 out)
[0.163 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio DirectSound device 2: Speakers (Steam Streaming Microphone) (0 in, 2 out)
[0.169 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio DirectSound device 3: Speakers (Steam Streaming Speakers) (0 in, 2 out)
[0.170 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio DirectSound device 4: Microphone (HD Webcam C310) (2 in, 0 out)
[0.170 info src/rtaudio.cpp:269 RtAudioDriver] Found RtAudio DirectSound device 5: Microphone (Steam Streaming Microphone) (2 in, 0 out)
[0.170 info src/plugin.cpp:118 loadPlugin] Loading Core plugin
[0.170 info src/plugin.cpp:178 loadPlugin] Loaded Core v2.0.0
[0.171 info src/plugin.cpp:120 loadPlugin] Loading plugin from C:/Users/PeterS/Documents/Rack2/plugins/Fundamental
[0.172 info src/plugin.cpp:178 loadPlugin] Loaded Fundamental v2.0.0
[0.173 info src/network.cpp:147 requestJson] Requesting JSON GET https://api.vcvrack.com/version?edition=Free
[0.210 info adapters/standalone.cpp:193 main] Initializing context
[0.211 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/Rail.svg
[0.855 info src/window/Window.cpp:269 Window] Window content scale: 1.000000
[0.879 info src/window/Window.cpp:319 Window] Renderer: NVIDIA Corporation Quadro 600/PCIe/SSE2
[0.879 info src/window/Window.cpp:320 Window] OpenGL: 4.5.0 NVIDIA 353.62
[0.882 info src/window/Window.cpp:43 loadFile] Loaded font C:/Program Files/VCV/Rack2Free/res/fonts/DejaVuSans.ttf
[0.882 info src/patch.cpp:249 load] Loading patch c:\Users\PeterS\Music\test.vcv
[0.889 info src/patch.cpp:263 load] Unarchived patch in 0.002021 seconds
[0.889 info src/patch.cpp:316 loadAutosave] Loading autosave C:/Users/PeterS/Documents/Rack2/autosave/patch.json
[0.898 info src/rtaudio.cpp:54 RtAudioDevice] Creating RtAudio DirectSound context
[0.933 info src/rtaudio.cpp:122 openStream] Opening RtAudio DirectSound device 0: Default Device (2 in, 2 out, 48000 sample rate, 512 block size)
[1.004 info src/rtaudio.cpp:134 openStream] Starting RtAudio DirectSound device 0
[1.058 info src/rtaudio.cpp:144 openStream] Opened RtAudio DirectSound device 0
[1.060 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Users/PeterS/Documents/Rack2/plugins/Fundamental/res/VCF.svg
[1.060 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/ScrewSilver.svg
[1.060 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/RoundHugeBlackKnob.svg
[1.061 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/RoundHugeBlackKnob_bg.svg
[1.061 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/RoundLargeBlackKnob.svg
[1.061 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/RoundLargeBlackKnob_bg.svg
[1.061 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/Trimpot.svg
[1.061 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/Trimpot_bg.svg
[1.062 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/PJ301M.svg
[1.063 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Users/PeterS/Documents/Rack2/plugins/Fundamental/res/VCO.svg
[1.063 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/VCVButton_0.svg
[1.063 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/VCVButton_1.svg
[1.064 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/SmallLight.svg
[1.065 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Users/PeterS/Documents/Rack2/plugins/Fundamental/res/LFO.svg
[1.066 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/Core/Audio2.svg
[1.067 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/Plug.svg
[1.067 info src/window/Svg.cpp:28 loadFile] Loaded SVG C:/Program Files/VCV/Rack2Free/res/ComponentLibrary/PlugPort.svg
[1.068 info adapters/standalone.cpp:236 main] Running window
[1.085 info src/window/Window.cpp:43 loadFile] Loaded font C:/Program Files/VCV/Rack2Free/res/fonts/Nunito-Bold.ttf
[1.085 info src/window/Window.cpp:43 loadFile] Loaded font C:/Program Files/VCV/Rack2Free/res/fonts/ShareTechMono-Regular.ttf
[4.460 info adapters/standalone.cpp:238 main] Stopped window
[4.460 info adapters/standalone.cpp:249 main] Destroying context
[4.549 info src/patch.cpp:192 saveAutosave] Saving autosave C:/Users/PeterS/Documents/Rack2/autosave/patch.json
[4.554 info src/rtaudio.cpp:149 closeStream] Stopping RtAudio DirectSound device 0
[4.590 info src/rtaudio.cpp:158 closeStream] Closing RtAudio DirectSound device 0
[4.778 info src/rtaudio.cpp:167 closeStream] Closed RtAudio DirectSound device 0
[4.793 info src/settings.cpp:437 save] Saving settings C:/Users/PeterS/Documents/Rack2/settings.json
[4.794 info adapters/standalone.cpp:257 main] Destroying environment
[4.799 info adapters/standalone.cpp:268 main] Destroying logger
END

Command line and path: C:\Program Files\VCV\Rack2Free>rack -h “c:\Users\PeterS\Music\test.vcv”

If I do the same command line without the “-h” the patch loads up and sounds correct.

Is this idea dead? Or am I doing something wrong?

Headless mode works fine, but how to exit?

Ctrl-C :grin:

Ctrl-C doesn’t work on Windows.

Kill it from Task Manager

In general, a kill from the taskmanager works, but when I start the rack the next time (even in headless mode), this dialog screen appears:

image

I want to use headless mode in a hardware setup without a screen, so I need a way to terminate the rack correctly.

I’m thinking of a module that calls APP->window->close() on a CV trigger, so I can send a MIDI event from a controller to terminate the rack.

Edit: when Rack is launched with the filename for a patch, a previous kill doesn’t result in the message-box above.

2 Likes

kill -9

3 Likes

I think that’s a great idea, and simultaneously funny that a trigger could cause the whole process to die. You could call the module Kevorkian.

Oh yes, or simply Terminator :sunglasses:

3 Likes

Only if it’s written in 6502 assembly language. Yes, the only language I used in my first few years as a programmer.

5 Likes

I started with System37 IBM mainframe assembler and then taught myself 65[c]02 variants of assembly. Very educational that was indeed :slight_smile:

1 Like

haha - someone paid me to learn how to do it, so educational and paid the rent!

1 Like

Sadly I could never find anyone who might have wanted to pay me for that skill. Oh well.

2 Likes

so if you touch it by mistake your live gig ends :rofl:

2 Likes

Not if you design it properly :wink:

1 Like

Keith Emerson had a module something like this:

I believe he had it wired up to pyrotechnics.

3 Likes

I got my start with 6502 machine language in ~1981 on my Apple II+. But, since I did not have an assembler, I had to do it all in a hex editor. I wrote an A.I. crossword puzzle solver. I can remember if I ever got an assembler for the Apple. For my program, I wrote a front-end in Basic that did the GUI and keyboard interaction and called the 6502 code as a subroutine (I think).

Projects like that are an excellent way to learn a new language or two by doing :wink:

Terminator— Ah, that reminds me of x86 assembly language TSRs (Terminate and Stay Resident).

1 Like

When we do something and learn from it, we pay ourselves.