Hello,
I’m compiling a simple phaser patch from Andy Farnell’s examples that implements an allpass filter using rzero~ and rzero_rev~ . The patch compiles, with just the warning to stdout:
“[rzero_rev~] accepts only signal input. Arguments and control connections are ignored.”
However, when I try to load it into the LICH (v. 22.5.0), I get the error:
MESSAGE: Loading 100
ERROR: Error 0x60 Invalid checksum
The patch is seen here https://www.rebeltech.org/patch-library/patch/phaserandy
Any ideas or help welcomed!
thanks, AT
I can’t test this patch myself at the moment, unfortunately. But it looks like this might be 2 unrelated issues. The last error message seems to indicate data corruption on flash. You could try to delete the patch and write it again to see if that makes any difference. Or maybe load it into memory instead of storing on flash.
Really strange, I just had the same error with my reverb-farnell patch where I had two audio signals going into the right inlet of a +~ object. When I separated them out by explicitly adding the two signals with another +~, the patch loaded. Seems like a subtlety somewhere where HV will compile, but LICH will not run. Will investigate.
So, could this be it? I have two patches nearly the same, checksum-error and checksum_ok. One loads in okay, and the other one gives an error. The only difference is the way I combine audio signals. Although both compile, it’s only the one where I combine signals explicitly with +~ that loads into the LICH.
In theory, anything you do in your patches shouldn’t cause the error that you’ve mentioned. They get compiled to C++, then to a binary program, then encoded in Sysex, transferred to device, decoded back to binary and written to flash, then read into memory when you load the patch. So the expected possibility of getting checksum error is only due to data corruption when data read from flash doesn’t match data received as decoded sysex.
In practice, there’s some difference between how we calculate data for a received patch and data read from flash, because the first time we have full buffer in memory, while with flash storage we read it in smaller chunks. So maybe something goes wrong in some specific cases.
I can’t test this myself, but if you consistently get the same error after deleting the old patch and storing it again, this should be good enough for debugging if we’re dealing with a firmware bug.
@atau , I’m finally able to test this and the same issue happens. I’ve also seen this with other patches that used to work. I suppose something doesn’t work as expected in the latest firmware version, so will spend some time debugging it and hopefully can make an unofficial firmware build that fixes it. Thanks for taking your time to prepare test patches that demonstrate this failure.
I’m ran into the checksum error when building a C++ patch to Lich with an OWL3 board installed running firmware 22.5.0. I can fix it by erasing storage and then building and loading again. But if I make a small change and build and load I get the checksum error sometimes.
hi @antisvin @damikyu , thanks both for following this up. I’m glad it is reproducible! At least that way the mystery bug is just one tiny bit less mysterious. I have other examples I can document. At one point I simply had to stop the ambition of my patch and play the concert as what I had loaded in worked, and any new feature I tried to add to my patch caused the error! Anyway let me know what I can do check stuff…