Building C++ Patches for new Owl3 based platform

Hi, anyone know how to compile a C++ patch (using the web) to target the new OWL3 platform? I am wondering how the compiler knows when to compile the patch to target the H7 processor.

thanks,
Pablo

Unfortunately you would have to do it manually, since RebelTech library doesn’t support this and is not getting any updates. But generally it’s not a problem, because patches compiled for previous platform version run on OWL3 hardware without issues. There are a few cases when you may want it as it allows building patches of larger size and can give minor performance improvements. But unless you have a specific need, it might not be worth the time if you haven’t configured build toolchain for building patches offline.

I did some experiments and defined PLATFORM as OWL3 within the source code and this seems to have fixed my crashing issue. (I am running openware v22.5 but with a newly created OwlPedal3 to allow my legacy OWL pedal to work with the OWL3 digital board from Befaco)

Thanks for your advice Antisvin!

Do you mean that you’ve added a project for OWL3 instead of OWL2 board in OwlPedal MK2? By legacy most people would probably mean OWL1 pedal, so this could be confusing as it has a different hardware format.

That’s very cool if you’ve got it working on your own. Well, in theory the hardware is drop-in replacement, but in practice it may need some extra hacking on some hardware. Maybe you could make a separate topic with unofficial firmware build once you’re sure that it’s stable.

Yes, I have added a project for OWL3 alongside the support for OWL1 and OWL2 in my local branch of openware. The code basically runs ok but there is still some work to do to get the patch selection to work properly as I’m restricted to one patch currently.

I used Lich3 code as the base and modified the GPIO to suit the pedal, bringing functions that are required for the legacy pedal.
For my patches that use oversampling and emulate valve hardware etc, I needed the extra CPU horsepower the OWL3 gives.

Sounds very interesting. May I ask what exactly do you mean by tube emulation - just specific distortion on hot signal or something like modeling with wave digital filters?

Btw, another thing that PLATFORM=OWL3 changes is that it enables support for newer version of FPU on STM32H7 that supports hardware double precision. Just in case anything you do calls for this.

The tube emulation is currently quite simple in that its using formulae like Dempwolf to model tube characteristics when driven into their non-linear operating points which I control with parameters to mimic grid and anode voltage etc.

No attempt is made to model at a circuit level but instead, use the valve models to apply controlled distortion to the incoming signal waveform. The code is currently limited to two value like stages with 4X oversampling - as that pushed Owl1 to 90% CPU.

It will be good to check the new cpu loading - once I have a USB connection with the board installed.

Some comments with regard to the OWL3 work:

  1. The OWL3 boards do not come with a USB connector populated
    as the product is aimed at Lich etc.
  2. The bootloader installed does not seem to support sysex loading.
    I am using DFU using a wired connection to the USB pins

regards,
Pablo

Well on OWL3 you should get about x3.5 better performance on average. And then there could be more ways to optimize it, i.e. storing something in large LUTs is possible as you have almost 1MB spread over several SRAM areas (SDRAM has much higher access latency).

Just an idea, but you could also use less oversampling if you can come up with antiderivative for your tube formula, i.e. see Chowdhury article about ADAA

Its certainly nice to have the extra headroom when writing patches which OWL3 gives you. Thank you for your suggestions regarding ADAA. I have looked into this technique in the past and saw you had implemented it in one of your patches. Jatin Chowdhury is a great a resource for audio DSP and for deep learning based audio emulations.
its great for general waveshapers but a bit tricky to apply to the valve formulae - certainly for my mathematics skills!