Custom Firmware on the OP-1

@ice9ismine are you sure the patch you used was the drum patch? If it was the synth one it won’t work.

ice9 - nobody is building customized anything, really. The most that happened was some graphics got switched a bit. The iter synth, and the filter effect, those were already alive inside of the stock firmware. They were coaxed out

How accesible and hackable are the graphics in the Tape screen?. I’m sure I’m not the only one that can’t see all the tracks and the cuts when the op-1 it’s laying flat on a table and I’m looking at the screen with the normal angle…

If someone provides me the svg screen I could ergonomize it a bit more… cheerz. s
How accesible and hackable are the graphics in the Tape screen?. I'm sure I'm not the only one that can't see all the tracks and the cuts when the op-1 it's laying flat on a table and I'm looking at the screen with the normal angle..
If someone provides me the svg screen I could ergonomize it a bit more.. cheerz. s

Hey, cool idea! I’ve had the exact same “problem”. I checked the “tape.svg” and found a group called “clips” that contains all the lines. I’m not sure how the lines are calculated in the firmware, so it might be that the vertical location is hard coded. Would require more digging, maybe I’ll try and mess with the lines when I have extra time.

Again, there are 16 "slots" for factory patches and 42 for user. Even if you delete the factory ones, you don't get 16 more user patches. So it's just a waste to delete them.

You could of course put your own most favorite ones in as factory patches.
That would be a truly unique OP-1 then…


yes this is what i meant! would love to replace factory presets in there.

how would one go about this? i noticed in the unpacked fw they are .raw files not .aif

is it just a matter of converting .aif to .raw audio file? do they have to be .raw?

@docshermsticks

The .raw files you see are only the samples used for the default sampler synth (and drums).
The actual preset data for all the presets is in the database. op1_factory.db

You’d need to copy the preset data from your .aif presets into the database, replacing an existing preset.
Don’t have time to write a tutorial, but if you compare what’s in the database to the data in a preset you’ll get the idea.

EDIT: I was writing a tool for extracting the preset data from the .aif files, maybe I should get back to that now. Eventually the functionality could be included in the FW repacker, so default presets could be easily swapped with custom ones.

plus @eesn wrote a detailed description how those .aif files are formed.
Basically, all the parameters, FX, ADSR and so on are store in a JSON structure.

hey thanks @wavi ! sorry if that had already been covered


i see what u are saying in the op1_factory.db file, gunna mess around w/ it and see if i can get it to work.

so for a sampler preset, you’d have to change the raw file and the entry in the database… right?

most interested in changing the drum sampler presets to squeeze out a few more of my own

@docshermsticks yes.

* The correct “.raw” are in /content/audio/factory_drum/
* The correct DB entries are in the “drum_presets” table of op1_factory.db

You’d have to replace the .raws with yours, and change the entries to match your desired settings as well as the name of your .raw files.
Then OP-1 should generate the internal (“factory”) .aif files after downloading the FW

btw: as of 218 FW I notice there are only 14 drum factory presets and only 10 dbox presets.
I know the synth slots are restricted to 16, I wonder if it’s the same for drum. That would mean we still can squeeze 2 drum presets and 6 dbox presets into the factory settings without wasting user slots…

1 Like

thanks @tabascoeye


i noticed that the preset data in my drum preset has a different layout than the ones in the op1_factory.db file
like all the pieces are there but in a different order.

also that mine say “drum version:1” whereas i’ve seen some “drum version:2” in the .db
is that why they are different?

i guess my q is does this order/layout matter? should i keep it the same in the .db just to be safe?
or am i okay just copy pasting exactly how it is from my file?

@tabascoeye The 14167 FW has 15 drum presets, which would suggest that more can be added in the latest FW. The 076 beta actually had a total of 25 drum presets (16 drum / 9 dbox). That would suggest that the maximum is 16 for both types.

With all this info floating around I feel the urge to start documenting it all. The docs repository on github never got very far :smiley:

1 Like

@docshermsticks as long as the JSON data contains all the same fields the order shouldn’t make any difference. You can always roll the FW back to the official one if it doesn’t work. Database and graphics modifications are extremely safe in that respect. I’ve had failures with custom db and gfx stuff but going back to the original FW works every time.

@tabascoeye & everyone

I wanna write some docs, but I think we should establish a structure for them and decide what’s the most important info to include. What should be written in separate files and what belongs in the main doc file. Let me know if you have any ideas.

I’d like to start with a firmware description from a modding point of view. Stuff that’s important for people that want to experiment. I think the LDR dissasembly should have its own section. The structure (for the main doc) I propose is:
  1. Firmware Description (general overview)
    How the firmware is packed, directory structure, overview of file formats.
  2. Databases (specifically op1_factory.db)
    Table descriptions, synth & drum table data descriptions, 16 preset limit, etc.
  3. Graphics (svg specs)
    How the svg ID’s are used, how the file format should be preserved and recommended svg editors etc.
  4. Preset Files (aiff specs)
    How the preset data is embedded, how to extract it, etc.
  5. LDR/Disassembly (I’m not well versed in this so I’ll very likely need some contributions for this part)
Some topics that I think deserve their own doc file are:
  • Dissasembly / LDR
  • Min/max parameters for synths, effects, lfo’s
  • Other topics I didn’t think of?
Please comment on my plans so that they can be improved, and I can start writing. :slight_smile:

1 Like

@wavi I was just thinking myself that this thread is getting too big with redundant information. We need a wiki or something.


A Slack project might be cool for collaboration on various efforts…

I’d argue that no place will be as active as this forum. But whether that is a good or a bad thing remains an open discussion ;o)

Well, I took the plunge and decided to make a 218 firmware with iter and filter enabled using the python tool on W10. Apart from the fact that I had to use “python” instead of “python3” in the command it worked flawlessly and all within half an hour. Great fun using filter on the DBOX.


Great work guys !
Well, I took the plunge and decided to make a 218 firmware with iter and filter enabled using the python tool on W10. Apart from the fact that I had to use "python" instead of "python3" in the command it worked flawlessly and all within half an hour. Great fun using filter on the DBOX.

Great work guys !

Great to hear it worked fine! And congratulations for taking the plunge :D!
I’m surprised though that you didin’t need to use “python3”. Can you check what version of python you have by running “python --version”?

I guess he means the executable in windows is named “python” instead of “python3”?

Yeah, must be so. I’m just surprised that it’s named like that.

Python 3.6.0