Howl - Self Contained Build Environment for OWL

Hey all,

Howl status update:

  • Just compiled and ran the first c++ patch with Howl! Boom. It’s just a GainPatch from the official online patches repository. I dont have audio running through the moudule atm, but OwlControl reports the patch is running, so good times!

Next Steps:

  • Bring order into chaotic proof-of-concept and extending generic/arch box to htaudio/how-arch (pre-provisioned with tools and toolchain binaries)
  • Package everything nicely for release: this entails installer script that installs the VM from vagrant cloud, makes sure guest addiction plugin is installed to mount synced folders and installs latest owl program
  • Create script that can run build commands for compiling and deploying c++ patches via ssh within howl

Later,

1 Like

good stuff!

A note on the FirmwareSender : the OWL device name that you pass in can actually contain a wildcard, so “OWL-MIDI*” should work for both versions.

1 Like

I had some time for Howl today, so here’s an update:

I’ve refactored most of the code and am currently playing around with a project layout that I can release.

  • htaudio-de/arch-howl base box v0.1.1 (experimental) is now released on vagrantcloud
  • Im about half way through the installer script which is intended to automate most of the setup process

Currently the installer:

  • checks for virtual box running on host
  • installs the arm toolchain on host if it hasnt already been installed
  • installs owl program on host if it hasnt been installed and is capable of updating owl program from git
  • installs the new arch-howl base box for vagrant if it hasnt been added yet

Ive also refactored the Vagrantfile and kicked most provisioning out of it. A lot of what I was doing there is no longer necessary because the box already comes with all necessary dependencies installed including the FirmwareSender binary which is alredy installed into the box at /usr/local/bin

Next Steps:
Finish installer:

  • vagrant up, and running an arch upgrade provisioner (this already works from cli)
  • running vagrant provisioner to build OWL patch binary
  • running a test to check if FirmwareSender works
  • running a USB Midi test
  • running a c++ test compile patch

So its coming along nicely, hope to continue work soon.

Cheers,

1 Like

Heads up…

Seems to be a problem with the released box on vagrantcloud. I simply extended my arch box and released it but when i just installed it and wanted to boot it using the howl installer vboxmanage spits out errors when trying to import virtual drives. Ill have to take another closer look at this.

More soon.

Sorry for being MIA for a while. A lot going on right now and too little time :stuck_out_tongue:

Im proud to announce I have improved the vagrant box build for Howl quite a bit now. I have now incorporated using packer.io to fully automatically build a Vagrant linux image with all dependencies pre-installed. No more provisioning necessary in the Vagrantfile and the Howl installer I am designing just became a lot less complex :).

For those interested in already giving the Box a spin, you can get it on vagrantcloud: https://app.vagrantup.com/htaudio-de/boxes/arch-howl/versions/0.1.3
Now, the import should work just fine with vagrant.

Also, I have released howl-arch-packer on github if anyone wants to have a go with it. This is the packer.io build project I have written to automate my builds.
GitHub - bfabricius/howl-arch-packer: Packer project to build a Vagrant Box for Howl, the virtual

@mars Rolling updates of OwlProgram and Firmwaresender should now be much more easy to maintain with Howl; OwlProgram will be updateable in Howl directly since the vagrant image contains the git repository.

Howl now contains convenient test scripts to run after installation to check if the toolchain, firmwaresender and OwlProgram work. Im excited to finish the first version of Howl asap. Ill keep y’all posted as per usual.

Cheers,

1 Like

Awesome - I’ll give it a go!

1 Like

Sounds great! I should have a first version of Howl up on github soon, too. Ideally, we’ll get a few people together then to actually test this for Mac on different machines properly to find any issues. I expect a few more commits before i can move the packer to a first stable release tag, you can follow the project on github if you want to get auto notifications on changes. :slight_smile:

Cheers,

Hi guys,

I’ve started a Howl project on git now :sunny:

Note: This is currently WIP, the documentation is incomplete and not all commands listed with howl help are implemented yet, so at this point use the software at your own risk! Currently only supports OS X.

Here’s what should work:

  • installer
  • howl commands: start, stop, listdevice, listpatches, test, status

In order to finish the first experimental release I will add missing commands so that we can

./howl compile --lang=cpp patches/cpp/GainPatch.hpp
./howl run --lang=cpp patches/cpp/GainPatch.hpp

So a first release is now in reach!

PS: During testing with the new arch-howl virtual machine image, I discovered some smaller issues, please take note of them FYI here: Issues · bfabricius/howl-arch-packer · GitHub

Later,

Hi all,

@mars, @sinewave440hz

Ive just uploaded a new arch-howl vagrant box. This was built for pd language support.

I’ve already got pd language support working for howl on my machine , theres just a few minor things i need to fine tune and then I’m ready to release howl 0.1.5-experimental with pd support. :heart_eyes: Howl will make use of enzien heavy builds, so pd compilation will only work if you have an internet connection.

With the good news, comes the slightly bad, i ran an upgrade on howl-arch and virtualbox today and after that the vagrant automount commands for the shared folders was broken. With the arch rolling releases stuff like this is always likely to happen after upgrading because things constantly change. Fortunately i was able to find a way to patch vagrant so that it works again. So in case vagrant don’t release this bugfix soon (which is likely :frowning: ), howl installer will have to patch your vagrant installations.

Im looking to get rid of these side effects with the first stable release.

UPDATE / FYI: chris just updated the bug thread, they will put the fix into the next vagrant release: Incompatibility with Linux 4.16 mainline Virtualbox guest driver · Issue #9709 · hashicorp/vagrant · GitHub

Cheers,

1 Like

Pd support is now given in howl:

$ ./howl build -l=pd -n=HeavyOwl pd/HeavyOwl.pd
[INFO] Following compile options have been set:
===========================================================================
DSP patch name:			HeavyOwl
DSP patch language:		pd
Howl patch repository path:	/howl/patches/pd/HeavyOwl.pd
Run DSP patch:			0
===========================================================================
[INFO] Building pd patch HeavyOwl at Howl patch repository path HeavyOwl. Follow Howl virtual machine build output below:
PD patch /howl/patches/pd/HeavyOwl.pd found.
PD patch /howl/patches/pd/HeavyOwl.pd copied to OwlProgram patch source folder.
Building patch HeavyOwl
Job URL: https://enzienaudio.com/h/bfabricius/owl/6
Heavy release: r2018.03
Downloaded files placed in:
  * c-src: /home/vagrant/source/OwlProgram/Build/Source
Total request time: 1253ms
Successfully compiled PD patch HeavyOwl
Connection to 127.0.0.1 closed.

I now have to add the vagrant patch into the installer and after that I will release v0.1.5-experimental :sunny:

Cheers,

Update regarding vagrant patch:

Good news: I found out i can actually simply hide the deprecated /usr/bin/mount.vboxsf binary by moving it in the filesystem. That removes the necessity of patching vagrant which would be an ugly thing to have to do.

Instead i built a patch stage into the installer which fixes this problem in the virtual machine and can be run after howl is installed. I didnt bake this into a new virtual box image because this is somewhat of a temporary necessity until vagrant release this bug fix soon.

FYI: if interested in the latest changes on git before i release: follow and star the howl repo here: GitHub - bfabricius/howl: Hypervised OWL build environment for audio DSP patch compilation and dep

You can already use pd now with latest master, i added some commands to configure the HEAVYTOKEN, check ./howl help for more. Release following in the next days.

Cheers,
Ben

Just added new howl milestones as outlook to the next planned releases, any feedback on what else you would like to see in howl is welcome, either PM me directly or comment here in this thread.

Howl 0.1.5-experimental, due May, 6:

Howl 0.1.7-experimental, due Aug, 31:

All due dates considering the limited time i have to work on this and some other project that are in the pipeline. :slight_smile:

I’d like to take the time to thank @sinewave440hz for his efforts in testing the latest howl release and entering issues into github. Thanks man, I appreciate the effort and feedback!!

If anybody else playing with howl finds there are any issues running locally, please dont be shy and get back to me or even better, also create issues on github! This helps me a lot to improve the software over time.

Cheers,

Very happy to help with this project! Since those issues I am pleased to report that I have now successfully built and run both the c++ and pd starter patches :tada: Hopefully I will have time to contribute a PR or two soon. I really recommend that others try this out, there are a lot of things we could do with it in the future. The workflow is very nice in my opinion.

1 Like