Techtools - Scanner: FM DAB USB radio VCVRack - C++ development
Techtools: A set of VCVrack modules designed specifically for Live performance as part of the WaveyLinez A.I assisted Eurorack Laptop Hybrid
Spent a day struggling with the VCVRack SDK ( only because I added the path to windows environment variables instead of exporting it to mysys2).
Although mysys does appear to read windows environment variables, exporting environment variables to mingw64 appears to be temporary and can catch one out.
I'm using visual code which works very well with git
The trick is to ignore as much as possible, not try for any kind of streamlined pipeline. I'll download some of the open source vcvrack plugins mess around a bit for a week or two and then re-examine my process then.
For now I have two basic ideas. One is a simply on/off gate sequencer with delay the on gates could eventually have shapes and slopes.
Get the FM dab usb radio code from github working.
I have spent the day playing with some example code, when one thinks about control voltages instead of audio signals everything becomes very simple fun with instant gratification.
I'm liking the VULT DSP programming layer . It is compiled before the C compilation turning .vult files into .cpp files, so no major brain screw up with extra pipeline process. The content of these files is access via the main <process> loop similar to how we use phazor.js and p5.js.
Vult code can also be used to make Pure Data externals so it seems like VULT could be part of a BELA, C++, Pure Data tool-set.
My first issue was working with C and C++ and how they interrelate. If a library is built for 32bit will it work on 64bit? If code is written for 32bit. Can it be compiled for 64 bit? Can C be compiled for 64 bit?
Next was Lib-usb and pthread, should they be part of the package or party of the system?
Make and Cmake and Gcc and G++and C++ and GDB
I avoided async as I tried to figure out how async might work with a runtime loop. Using sync method I had some memory leak issues. So I spent a week learning the in and outs of VScode so I could examine variables. This had the added advantage of familiarise myself with the same IDE I would use for Python.
My previous dongle burnt out before I could finish the code (admittadly it's been over a year since I even looked at it) and the dongle was plugged in countously for a large amount of that time.
The latest version of the well-known R820T2 dongle from RTL-SDR.com: the V3 version. This dongle had an SMA connector and receives from as low as 500KHz.
• Includes 1x RTL-SDR Blog brand R820T2 RTL2832U 1PPM TCXO HF Bias Tee SMA Dongle (V3)
• Great for many applications including general radio scanning, air traffic control, public safety radio, ADSB, AIS, ACARS, trunked radio, P25 digital voice, POCSAG, weather balloons, APRS, NOAA APT weather satellites, radio astronomy, meteor scatter monitoring, DAB, or for use as a low cost panadapter with a traditional ham radio.
• Several improvements over generic brands including use of the R820T2 tuner, improved component tolerances, a 1 PPM temperature compensated oscillator (TCXO), SMA F connector, aluminium case with thermal pad for passive cooling, software activatable bias tee circuit.
• Can tune from 500 kHz to 1.7 GHz and has up to 3.2 MHz (2.4 MHz stable) of instantaneous bandwidth. (HF reception below 24 MHz runs in direct sampling mode)
• Uses a SMA female antenna port.
- 1x Dipole Antenna Base with 60cm RG174, 2x 23cm to 1m telescopic antenna, 2x 5cm to 13cm telescopic antenna, 1x 3 meter RG174 extension cable, 1x Flexible Tripod Mount, 1x Suction Cup Mount
This is an RTL-SDR software defined radio receiver with RTL2832U ADC chip, 1PPM TCXO, SMA F connector, R820T2 tuner and aluminium case with passive cooling. Tunes from 500 kHz to 1.7 GHz with up to 3.2 MHz (2.4 MHz stable) of instantaneous bandwidth. (HF mode works in direct sampling mode - V3 models and above only). Perfect for use as a computer based radio scanner with free software like SDR#, HDSDR, SDR-Radio, Linrad, GQ
l had hoped to build a MVP and then add things like buffering later, but in the end I needed to implement buffering before I could get any sound.