Oneiroi Patch Compilation

Hi there,
since the Oneiroi runs on the OWL board, I assumed that I could use the online compiler included in the patch libary. As a starting point I used the current version of the Oneiroi patch and uploaded all the source files. When trying to compile I get the following error:

In file included from /tmp/owl/owl-src-GEqHzB/Oneiroi_1_2_2Patch.hpp:4,
                 from /tmp/owl/owl-build-uDgqoz/registerpatch.h:1,
                 from ./Source/PatchProgram.cpp:14:
/tmp/owl/owl-src-GEqHzB/Ui.h: In constructor 'Ui::Ui(PatchCtrls*, PatchCvs*, PatchState*)':
/tmp/owl/owl-src-GEqHzB/Commons.h:42:30: error: 'BUTTON_10' was not declared in this scope; did you mean 'BUTTON_1'?
   42 | #define MOD_CV_RED_LED_PARAM BUTTON_10
      |                              ^~~~~~~~~
/tmp/owl/owl-src-GEqHzB/Ui.h:332:45: note: in expansion of macro 'MOD_CV_RED_LED_PARAM'
  332 |         leds_[LED_MOD_AMOUNT] = Led::create(MOD_CV_RED_LED_PARAM);
      |                                             ^~~~~~~~~~~~~~~~~~~~
/tmp/owl/owl-src-GEqHzB/Commons.h:41:32: error: 'BUTTON_9' was not declared in this scope; did you mean 'BUTTON_8'?
   41 | #define MOD_CV_GREEN_LED_PARAM BUTTON_9
      |                                ^~~~~~~~
/tmp/owl/owl-src-GEqHzB/Ui.h:333:44: note: in expansion of macro 'MOD_CV_GREEN_LED_PARAM'
  333 |         leds_[LED_CV_AMOUNT] = Led::create(MOD_CV_GREEN_LED_PARAM);
      |                                            ^~~~~~~~~~~~~~~~~~~~~~
/tmp/owl/owl-src-GEqHzB/Ui.h: In member function 'void Ui::ProcessButton(PatchButtonId, uint16_t, uint16_t)':
/tmp/owl/owl-src-GEqHzB/Commons.h:43:23: error: 'BUTTON_11' was not declared in this scope; did you mean 'BUTTON_1'?
   43 | #define MOD_CV_BUTTON BUTTON_11
      |                       ^~~~~~~~~
/tmp/owl/owl-src-GEqHzB/Ui.h:791:14: note: in expansion of macro 'MOD_CV_BUTTON'
  791 |         case MOD_CV_BUTTON:
      |              ^~~~~~~~~~~~~
make[1]: *** [compile.mk:155: /tmp/owl/owl-build-uDgqoz/PatchProgram.o] Error 1
make: *** [Makefile:110: patch] Error 2
ERROR: Patch build failed.

I assume this is related to the internal Patch.h file not including these definitions.
Where can I find these definitions?

They are missing from the current OwlProgram

I’ve added them in my fork: https://github.com/RebelTechnology/OwlProgram/compare/develop...Wasted-Audio:OwlProgram:wstd

They are in LibSource/OpenWareMidiControl.h

Thanks for the quick reply. It seems like you got the OwlProgram compiler running locally, I also tried that, but the installation / requirements seem to to be up to date (see alson https://github.com/RebelTechnology/OwlProgram/issues/120). Any tips on seeting up the patch compiler locally?

I actually run it as part of the plugdata toolchain :wink:

Yeah, extra buttons for Oneiroi are not in upstream OwlProgram yet. It looks like only buttons definition was added to the forked repo.

Jakob, it would be interesting to hear what are your plans for the custom patch.

I mostly want to tweak some parameters first and then see if can implement some different stuff (switch out the resonartor with a bitcrusher, …). @antisvin do you plan merge the extra stuff for the Oneiroi into the upstream OwlProgram?

I did get the patch to compile but not to load onto the Oneiroi. Observing the Chrome console while loading the patch, i get this:

MIDI:  Uint8Array(125) [ 0, 0, 52, 10, 8, 0, 0, 1, 0, 0, … ] midiClient.js:12:10
sent chunk 477 owlCmd.js:31:13
MIDI: Uint8Array(15) [ 0, 0, 52, 10, 8, 0, 0, 1, 0, 3, … ] midiClient.js:12:10
sent chunk 478 owlCmd.js:31:13
MIDI: Array(5) [ "f0", "7d", "52", "12", "f7" ] midiClient.js:12:10
sysex RUN command owlCmd.js:31:13
PROGRAM ERROR: Error 0x60 Load failed

Sorry if I confused you, I’m not working on Oneiroi officially (but I did some testing and provided assistance/consulting to its author when he was figuring things out during development). We can try to get an answer about merging from @Hirnlego directly in case if he sees this ping.

I did get the patch to compile but not to load onto the Oneiroi

Try loading a few times again or maybe try building patch offline. There’s nothing useful in error log and it could be just problem with MIDI transfer. Also, I think neither me nor Befaco guys use web patcher for transferring Oneiroi, so it might be running into some bugs.

switch out the resonator with a bitcrusher

Note that there are 3 parameters in resonator section (tune, feedback, resonance). So to the usual bitcrusher + sample rate reducer you could add some form of distortion (just variable gain with soft clip or a more complex transfer function)

I actually like the resonator part of this patch too much to replace it. I think that it makes more sense to experiment with VCO generation, try some alternative reverb algo or maybe do something differently in looper (i.e. apply some compression to make it behave more tape-like?).

Yeah, I will definitely try to build the patch offline. I just thought, that the online compiler might provide an easy tool for doing some initial “hacking”.