Custom Firmware on the OP-1

BTW I just noticed that the leaked beta no longer contains chorus.svg file. When trying to enable ''chorus" via the database my OP with the beta it just says unknown fx name: ‘chorus’ I’ve been trying to get LPC to work too but I haven’t got any working parameters. Just getting invalid mono fx.

Editing the svg:s seems a little difficult too. I edited some lines in CWO but when I installed it the edited lines just weren’t visible. Then I used another svg editor but this time the OP1 crashed because it couldn’t parse the file for some reason. Need to figure out a way to edit them reliably…





@wavi thats what I noted in my original post in the update thread (https://www.operator-1.com/index.php?p=/discussion/comment/31215/#Comment_31215). I also can’t get either chorus (on 14203) or lpc to work. Maybe filter is the only one left in the firmware…

The SVGs must be preserved as original as possible, which is done best in Adobe Illustrator CS4. The groups, layers and the display=“none” or “inline” attributes must be kept. But if you stick to that, it’s all fair game. We made several fun modifications by now. Especially the finger drum synthesizer has potential (basic animations are possible with all the groups there)

@wavi I wrote an ugly python script t turn the .ldr files into .dxe which is the original “executable” format for VisualDSP. I would just need a good disassembler/analyzer software that knows BlackFin. Possibly IDA Pro with a plugin. Will need more work.

Btw: the compression of LDR is pretty good, the OP1_vdk.ldr is 2,1MB and uncompressed DXE is 120MB…

invalid mono fx

@tabascoeye is it a compression thing that is likely holding TE back from seeing ‘delete factory presets’ as of benefit? Are they able to make factory patches tiny via compression when sewn in to the firmware vs open/fluid? If so I’ll quit hoping for the deletion of factory presets to be a window for more user presets memory space :wink:

@TabascoEye oh yeah, I remebered wrong. Thought it was the ape tape that was removed. Maybe I'll take a look at it again.

But wow, cool progress with the LDR file! The python script sounds fun.

I wish I had Adobe Illustrator CS4. Or maybe I should buy a Creative Cloud license if it does the same as CS4.
BTW I sent you my repacker.

@eesn


Yeah, in the synths and drums the fx is (always?) mono. When used in the master its stereo.

@eesn yes. and it yields “invalid stereo fx” when trying to use it as an FX on the main mixer view.

@callofthevoid: no that will likely not happen easily. The “user space” is a fix value and I can’t see how we can change that for now. You can only “save” space by overwriting the factory presets with your own. That can be done by writing your own preset values to op1_factoy.db

Seems like the Ape Tape is probably named ‘tapetrix’. Found that in two places in the firmware, but it’s not in the effects list so I just got “unknown fx name” again…

@callofthevoid: no that will likely not happen easily. The "user space" is a fix value and I can't see how we can change that for now. You can only "save" space by overwriting the factory presets with your own. That can be done by writing your own preset values to op1_factoy.db

Thanks for heads up. Seems like erasing factory presets won’t actually free up equivalent space so I’ll stop imagining of such a time :wink: clear info on expectations/possibilities is good even if it’s bad news :wink:

@Punji @KrisM

I read on the TE blog that you guys have some knowledge about the preset values and ranges (this post: http://now.teenageengineering.com/post/54513718101/op-1-patch-randomizer) I see you also know how to manipulate the AIF files. Could you share some info? Seems like the patch randomizer is pretty powerful!

I’m trying to get the LPC fx to work. It would be much faster if I could just directly edit the params in a preset AIF file to see what works. That way I wouldn’t need to repack and reinstall the FW all the time.

^ We found the parameter ranges by turning the knobs all the way in each direction, saving a snapshot and inspecting the AIF headers. That was repeated for each engine/effect. I understand that approach won’t help you, unfortunatelly.

By the way, have you tried to do some small change to the excutable file? I allways wondered whether TE had used the Blackfin security features to validate it.

@Punji
Cool. I was thinking maybe that would be a good start (mapping min/max of all values). I’ll then compare the parameter types and values and try to figure out what the value types are for LPC.

Any extra info on the AIF files, or could you link to the apple spec? Would be nice to create a small tool to easily read and write the metadata of the presets.

I haven’t done much with the LDR:s yet. But seems like TabascoEye is working on them. Maybe a small change to some unimportant string with a hex editor might be worth trying out.

@wavi @TabascoEye any chance you could give more details about repacking the firmware…?


I am using OSX

I’ve tried:
tar cf - content/ OP1_vdk.ldr te-boot.ldr | xz --format=lzma -C crc32 > op1_custom.op1

and tar cf - content/ OP1_vdk.ldr te-boot.ldr | xz --format=lzma -8 > …/op1_custom.op1

Also tried using various levels of compression., but I have great trouble trying to flash it… I get the CRC part, but my op1 is ether telling me ‘Alloc failed, decode failed, aborting! No firmware written. Try again. Could not find any valid Firmware.’ or ‘ERROR: Missing ustar tag! Decode failed, aborting! No firmware written. Try again. Could not find any valid Firmware

Any idea why that’s happening? What OS are you guys doing this on? Cheers…

@rephazer, that command didn’t work for me either. The compression seems to be too agressive, and requires more RAM to decompress. Seems like the OP-1 tries to decompress it and runs out of RAM in the process.


I tweaked the LZMA settings for about an hour to get proper values. The file shouldn’t be over 15mb but it shouldn’t be too small either (agressive compression). I’m using these settings in my Python repacker tool (haven’t checked how to use the settings with the ‘xz’ command yet):
{‘id’: lzma.FILTER_LZMA1, ‘preset’: 9, ‘lc’: 3, ‘lp’: 1, ‘pb’: 2, ‘dict_size’: 2**23},

@wavi @punji no the BlackFin security features are not used I think. I have edited the LDR file to show a custom String during the TE logo boot screen.

@rephazer I only used 14203 for all my experiments. Haven’t re-packed the beta yet. In fact I haven’t tried the beta out at all yet ;o)

@rephazer just tried it with the beta (no modifications yet) and it works for me (although I used the “format drive” option in the bootloader, which seems to be the cleanest aproach. backup your files before, obviously)

@TabascoEye hmm, maybe the lack of using ‘format drive’ is the problem. Although with my compression settings I’ve never needed to do the format which is nice.

@TabascoEye When I try to re-pack the beta without modifications using your command I get a file of around 15,3mb.. If I remove all .raw samples in the preset folders I am left with a file of around 5,1mb which both results in the same 'ERROR: missing ustar tag! Decode failed, aborting!' even using the format drive option in the boatloader so like @wavi said there is probably something up with my way of using the LZMA..

I never used Python, so not sure if giving that a try would help me further..

Thanks anyway and keep up the good work ;)