I made a Python script that opens rtl_fm with certain parameters to make it output MPX which then routes them to VAC and to any software that likes 192kHz audio input like MPXtool and RDS Spy. Of course you can't change frequency with rtl_fm when running but it's quite lightweight setup. Requires PyAudio and Python 2.x (whatever suits you and PyAudio).
Code:
import subprocess
import pyaudio
import socket
p = pyaudio.PyAudio()
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 192000
CHUNK = 2048
# Audio device selection >
print "Choose OUTPUT device by typing corresponding number."
print "If you try to choose input device, it will end up in error."
for i in xrange(p.get_device_count()):
print str(p.get_device_info_by_index(i)["index"]) + " " + p.get_device_info_by_index(i)["name"].encode("cp850", "replace")
while 1:
try:
dev_index = int(raw_input("Device number: "))
try:
output = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, output=True, frames_per_buffer=CHUNK, output_device_index=dev_index)
except:
output = None
print "Error! False output device!"
except:
print "Error! Type a number corresponding to output device!"
output = None
if output != None:
break
#output = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, output=True, frames_per_buffer=CHUNK)
cmd = "rtl_fm.exe -f 93.1M -s 192000 -g 15 -F 9" # Here's the commandline, f is frequency, g is gain, s is samplerate, F is some filter thing, not sure.
sp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False)
while 1:
output.write(sp.stdout.read(2048))