Epi numero uno of the down the whole-esque tale of my cross platform libre open source Rust bindgen VST host that I hope to compile for Windows Subsystem for Linux so that I can play the digital piano keyboard in my bedroom and receive low latency output of any VST audio plugin of my choosing!

why in the hell?!

getting started

So today in the wacky, wonderful world that is me diving into Windows/cross platform dev I broke out my new digital keyboard, hooked it up over USB to my Windows mini-ITX box and was able to sniff the I/O MIDI bus for raw binary and then make sense of it using some nodejs tools.

Next, I went a little deeper into trying to figure out how the 💩 I'm going to sanely develop on Windows and fired up my handy dandy WSL (windows subsystem for linux) Ubuntu 16 image and asked myself "how far can I stretch this thing".

Going deeper, I installed Cmder (http://cmder.net/) and set up a bash ubuntu task using Running Windows 10 Ubuntu Bash in Cmder - Gingter Ale.

Ever deeper, I fired up Ubuntu and sudo apt update followed by sudo apt upgrade then I went to clone https://github.com/teragonaudio/MrsWatson into my Windows drive by cd /mnt/c/Users/<user_name_here> (because only ever install tools inside Ubuntu; not real files/projects).

Next, I realized I didn't have clang or g++ and went and installed using instructions found: https://stackoverflow.com/questions/50729550/installing-g-on-windows-subsystem-for-linux.

Lastly, I was able to use instructions here https://stackoverflow.com/questions/17275348/how-to-specify-new-gcc-path-for-cmake to get it properly configured using cmake and now I'm parsing through these errors running make:

[  0%] Building CXX object vendor/CMakeFiles/audiofile32.dir/audiofile/libaudiofile/aes.cpp.o
In file included from /mnt/c/Users/chris/projects/MrsWatson/vendor/audiofile/libaudiofile/aes.cpp:30:0:
/usr/include/string.h:35:42: error: missing binary operator before token "("
 #if defined __cplusplus && __GNUC_PREREQ (4, 4)
/usr/include/string.h:640:56: error: missing binary operator before token "("
     && defined __extern_always_inline && __GNUC_PREREQ (3,2)
In file included from /mnt/c/Users/chris/projects/MrsWatson/vendor/audiofile/libaudiofile/aes.cpp:31:0:
/usr/include/assert.h:37:42: error: missing binary operator before token "("
 #if defined __cplusplus && __GNUC_PREREQ (2,95)
/usr/include/assert.h:105:42: error: missing binary operator before token "("
 # if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
In file included from /mnt/c/Users/chris/projects/MrsWatson/vendor/audiofile/libaudiofile/FileHandle.h:24:0,
                 from /mnt/c/Users/chris/projects/MrsWatson/vendor/audiofile/libaudiofile/aes.cpp:33:
/mnt/c/Users/chris/projects/MrsWatson/vendor/audiofile/libaudiofile/afinternal.h:31:10: fatal error: sys/types.h: No such file or directory
 #include <sys/types.h>
compilation terminated.
vendor/CMakeFiles/audiofile32.dir/build.make:62: recipe for target 'vendor/CMakeFiles/audiofile32.dir/audiofile/libaudiofile/aes.cpp.o' failed
make[2]: *** [vendor/CMakeFiles/audiofile32.dir/audiofile/libaudiofile/aes.cpp.o] Error 1
CMakeFiles/Makefile2:151: recipe for target 'vendor/CMakeFiles/audiofile32.dir/all' failed
make[1]: *** [vendor/CMakeFiles/audiofile32.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Ok, phew so I am now at a stopping point where I'm going to need to figure out which version of C++ I need for this task. I'm guessing 7 is just way too old and I took a stab in the dark.

We shall see...

Share the love!

Thank ya for the read!