Can you PM me your patch, Chrissie?
I can’t find out how to PM on this board so I’ll post it here. It’s pretty simple really!
import (“math.lib”);
import (“maxmsp.lib”);
import (“effect.lib”);
N = int(2^19);
ddelay(n,d,x) = x@(int(d)&(n-1));
duration = hslider(“1st tap mS[OWL:PARAMETER_A]”, 333, 0, 5000, 10)(SR/1000.0):int;
duration2 = hslider(“2nd tap mS[OWL:PARAMETER_B]”, 0, 0, 1000, 10)(SR/1000.0):int;
feedback = hslider(“feedback[OWL:PARAMETER_C]”, 30, 0, 150, 0.5)/100;
lpfreq = hslider(“LPF freq[OWL:PARAMETER_D ]”, 3000, 20, 5000, 10);
speaker = speakerbp(130,lpfreq);
echo = +~(sdelay(N, 1024, duration):speaker)*feedback;
echo2 = +~(sdelay(N, 1024, duration2):speaker)*feedback;
doubletapecho= echo: echo2;
process = (doubletapecho, doubletapecho);
Cool patch.
N is too big, change it to N = int(2^14);
I’ll see if we can catch the failed malloc a bit more graciously, at the moment it leads to a null pointer error somewhere - hence the error message.
It then goes up to 106% CPU for me, with the associated nasty sounding drop-outs. Looks like speakerbp is really expensive! I tried it with resonlp instead and it sits nicely at < 50%
import ("math.lib");
import ("effect.lib");
N = int(2^14);
ddelay(n,d,x) = x@(int(d)&(n-1));
duration = hslider("1st tap mS[OWL:PARAMETER_A]", 333, 0, 5000, 10)*(SR/1000.0):int;
duration2 = hslider("2nd tap mS[OWL:PARAMETER_B]", 0, 0, 1000, 10)*(SR/1000.0):int;
feedback = hslider("feedback[OWL:PARAMETER_C]", 30, 0, 150, 0.5)/100;
lpfreq = hslider("LPF freq[OWL:PARAMETER_D]", 3000, 20, 5000, 10);
Q = 0.707; // Butterworth
gain = 1.0;
filter = resonlp(lpfreq,Q,gain);
echo = +~(sdelay(N, 1024, duration):filter)*feedback;
echo2 = +~(sdelay(N, 1024, duration2):filter)*feedback;
doubletapecho= echo: echo2;
process = (doubletapecho, doubletapecho);
Ah but bandpass (resonbp) is much more better still!
Great patch. Now who’s going to do a ping pong delay?
Okay, so we’re up to vector08
, which is the release candidate for the new version.
New in this version is a patch change feature: if you hold down the pushbutton for 3 seconds, you can change patch with the first two knobs. First knob selects one of 5 banks, second knob selects one of eight patches in that bank. If you have OwlControl running, it will show you the patch names as you scroll through them.
There is also a new version v0.2 of OwlControl. You can now upload sysex patches with OwlControl, and also update the firmware over MIDI (no more DFU drivers needed!). If you already have vector06 installed you can try this out. You will need to enter the correct checksum from the release page to flash a firmware with OwlControl.
Some more major updates!
You can now compile your own C++ patches with our online compiler, and load them with the latest firmware and OwlControl.
To do so, first put your patch code in a GitHub repository. The go to PATCHES/My Patches on our website (you have to be logged in to see My Patches) and Add a new patch
.
Enter your patch details and add a link to your github file. After saving, you will see a Compile
button next to the patch details (channels, CPU et c). Press compile and wait for it to finish. If it fails, click Stderr to see what the errors were. If not, wait for the page to reload and there will have appeared a Download
link. Yay!
Download the patch syx file to your OwlControl folder and go to OwlControl / Tools / Load patch from file. Provided your OWL is connected and all has gone well you can now click Run
and your patch will come to life.
(Actually you can send the sysex file with any decent DAW or e.g. Sysex Librarian. To start it, send a MIDI Program Change 0)
At the moment this only works with C++ patches, support for FAUST and PD is coming… soon…
Thank you so much for the help. I’m playing with different FX in the delay feedback loop … once I properly know what I’m doing I’ll probably have a look at a ping-pong
I try the OwlProgram but I have problem compiling and making work FirmwareSender under Windows.
After some modification in FirmwareReceiver.cpp I succeed to compile with VS 2013 but it is not working properly (heap error).
Does anybody has a FirmwareSender that is working under Windows?
Did you use the VisualStudio project file in Builds?
You could also try generating build files for your platform from the jucer file, for which you will need the Introjucer
http://www.juce.com/learn/introjucer
Yes I try with the VisualStudio project file (2010). They are several problem to compile FirmwareSender.cpp. For example #include <unistd.h> does not exist and I replace it by
#include <io.h>
#include <signal.h>
Then initialization like bool running = false; are not supported under 2010:
So I make a target for VS 2013 which give a little better result except for these two arrays:
unsigned char buffer[binblock];
unsigned char sysex[blockSize];
which cannot be initialized this way as VS 2013 request a constant expression, so I change the two like to make dynamics array but the binary crash at run time (segmentation fault):
unsigned char * buffer = new unsigned char[binblock * sizeof(unsigned char)];
unsigned char * sysex = new unsigned char[blockSize * sizeof(unsigned char)];
I will try to compile the original source under cygwin
Right, variable length arrays aren’t supported by MSVC compiler, even though it’s C99 standard…
Probably better to use alloca, e.g.
unsigned char * buffer = (unsigned char*)alloca(binblock);
I think Giulio compiled a Windows binary, will see if he’ll push the changes.
Will also make a release with binaries for linux/mac/windows, but that might take a little longer.
I’ve just uploaded a Windows binary to github:
Let me know if you have any problems with it.
Thanks a lot it’s working!
So I make a patch with Owl Program make PATH=TestTone sysex then I load it with Owl Control but my patch is called template and it is recognized (knobs name are wrong,…). Any idea of the problem?
I will try again tomorrow…
Thanks
You need to specify PATCHNAME!
e.g. put TestTonePatch.hpp into the PatchSource folder and make PATCHNAME=TestTone
see OwlProgram/README.md at master · pingdynasty/OwlProgram · GitHub
oups, I was using PATCH= instead of PATCHNAME=
by the way the new firmware is great. Thanks a lot for the great work.
I have a question regarding OwlControl. I have loaded a new patch ModDelay, I put it on Store 1 and load it then I save it to the OWL. If I power off and power on the Owl, my patch is not loaded but the Owl revert back to “Jot Reverb”.
Same with the Sensitivity setting I am stuck on High and cannot save any change to the Owl…
Any idea? Is it a know bug?
thanks Vincent, it’s a known issue:
What is the status of the new firmware? Any release plan?
Thanks
Yes, working on it now - hopefully later this week!