Custom Firmware on the OP-1


#621

@soren88 that is entirely possible and all somwhere in this thread m)
basically you unpack the FW e.g. using the tool from @wavi and modify the op1_factory.db. Either by hand or also using the tool by @wavi

Then you can change the “factory default patterns” to whatever you like (and those also do not count into the limit of “user” patterns)

Have fun


#622

Is it possible to save the finger and sketch sequences, somehow?


#623

Not that I know. I’m pretty sure that is one of the “creative limitations” of the device. Since technically that would be easy, but the GUI or UX for that would also be questionable


#624

Ah I misunderstood. That definitely seems like a great option if you want to get some more user patches saved on the OP-1.


#625


@soren88 that is entirely possible and all somwhere in this thread m)

basically you unpack the FW e.g. using the tool from @wavi and modify the op1_factory.db. Either by hand or also using the tool by @wavi

Then you can change the "factory default patterns" to whatever you like (and those also do not count into the limit of "user" patterns)

Have fun

@TabascoEye
What do you mean by this? Can I just place my own fabricated .raw files in factory_drum? If not, what .db should I be SQLiting and how?


#626

@TabascoEye said:
@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…

I mentioned this back on page 14 of this thread.
Use some SQLite browing toll and modify the content to match your presets.
The hard limit seems to be 16 for presets.


#627

i messed around with it for a second, but then i got scurred…
its not that complicated tho just look at how the original file is laid out before you start making changes.


#628

Below are the .db parameters for “smartphone” which is a trash preset (no offense). The value strings after “start” and “end” are the start and end values for each sample (drum hit) in the patch. These change from patch to patch and I have no idea of determining what they need to be for any patches I make with the OP-1 drum utility.

Anyone have any luck with this? Is it easier than I’m making it out to be?
Can the .aif file extension created by the Drum Utility be changed to .raw instead? Is there some special conversion process?

{“drum_version”:2,“dyna_env”:[2048,8192,0,12032,0,0,0,0],“end”:[60747978,130423514,154682126,186289742,207886318,240183790,292953778,370477450,396789400,424525702,466826098,522590874,550002538,635082172,667006310,848227634,887784834,927244644,1020119658,1055789314,1091576650,1117815556,1147584906,1186841816],“fx_active”:false,“fx_params”:[10944,32767,9496,8000,8000,8000,8000,8000],“fx_type”:“delay”,“lfo_active”:false,“lfo_params”:[9192,-32767,8688,5280,0,0,0,0],“lfo_type”:“value”,“name”:“smartphone”,“octave”:0,“pitch”:[0,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],“playmode”:[8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192],“reverse”:[8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192],“start”:[0,60752036,130427572,154686184,186293800,207890376,240187848,292957836,370481508,396793458,424529760,466830156,522594932,550006596,635086230,667010368,848231692,887788892,927248702,1020123716,1055793372,1091580708,1117819614,1147588964],“type”:“drum”,“volume”:[8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192]}

###############################
#Breakdown (From what I understand): #
###############################
## “drum_version” Controls Σ(゜ロ゜;)
## “dyna_env” Controls the envelope of the patch (i.e. button 2 stuff)
## “end” Controls end values for the samples in the patch (i.e. White Encoder)
## “fx_active” Controls On/Off for FX (i.e. button 3)
## “fx_params” Controls where the values of the FX sit
## “fx_type” Controls what FX is inserted
## “lfo_active” Controls On/Off for LFO (i.e. button 4)
## “lfo_params” Controls where the values for the LFO sit
## “lfo_type” Controls which LFO is selected
## “name” Controls the name of the patch (I assume you could easily substitute the
## name of your .raw file here but I could be wrong)
## “octave” Controls which octave the patch rests in
## “pitch” Controls pitch parameters of each hit in the patch (i.e. Blue Encoder)
## “playmode” Controls which playmode the sample will use (i.e Shift + Orange Encoder)
## “reverse” Controls reverse mode for simple (i.e. Shift + Blue Encoder)
## “start” Controls start of each sample in the patch (i.e. Green Encoder)
## “type” Controls the folder the patch is placed in
## “volume” Controls the level of the sample to tape (i.e. Orange Encoder)

Info gathered using DB Browser for SQLite (Henceforth pronounced “SKWI-Lite”)

The #'s are for easier documenting for my more savvy developer friends.


#629

i could be mistaken but i thought that all that info is saved in the header of the .aif file
maybe try to view the .aif in a text editor


#630

@docshermsticks said:
i could be mistaken but i thought that all that info is saved in the header of the .aif file
maybe try to view the .aif in a text editor

@docshermsticks
Ah yes. The missing element. Doc you are a genius.


#631

na i’m no genius just trying to help :slight_smile:


#632

yeah understanding the values for the markers (start|end) is a bit weird.
It’s probably easier to create a drumkit with the old Steve Duda tool or on the op1.fun drumkit editor and then copy the values from the resulting .aif header into the database.


#633

The custom firmware is wonderful. I have chronic neck pain (crooked spine) and having to lean over to see which track I was on was a really big UX flaw with the op-1 for me. I’ve always wanted the tape graphic flipped, and I’ve also always thought the effects should default to be much more subtle by default, so I was thrilled to see you fixed those. The instructions were perfect as well. I know all of this takes time and effort (and skill) so I just wanted to say thank you, it means a lot.


#634

Hi!
Do you think it would be possible to add custom (micro)tuning (pitch shifting) to each note with a bit of hacking? Not just global detuning, but like each note would receive it’s own personal detune value.
Thanks


#635

No. Not with the current know-how from this thread. We can’t manipulate the actual inner workings of the firmware.
Playing around with graphics and enabling the effects and synths which are already implemented in the firmware is possible. So is changing the factory patches.
But changes of behavior will need binary patching of the executable code in the firmware.

Meaning, we would need to:

  • establish an ability to fully disassemble the code of the firmware (e.g. in IDA pro or radare2)
  • map out the firmware and determine which code does what
  • modify parts, keeping the rest intact and the fw bootable
  • reassemble the code back into the .ldr format
  • use wavis packer to create a final .op1 file
  • download into your op-1, see it crashing, debug, rinse, repeat ;o)

I explained those steps a few times somewhere in this thread and I don’t think anyone has made significant new progress in the first step…


#636

Hey, so I just ran through the awesome op1repacker tool, and updated the firmware. However, when I go to load synths, iter doesn’t appear in the list :frowning: what’s good? Does this not work on 225 or something, am I late to the party?


#637

@dicey said:
Hey, so I just ran through the awesome op1repacker tool, and updated the firmware. However, when I go to load synths, iter doesn’t appear in the list :frowning: what’s good? Does this not work on 225 or something, am I late to the party?

Did you run those commands in the repacker? There’s individual commands for each option. Ie. Tape invert, moose cwo graphic, iter synth, filter effect, iter graphic…

I did it ages ago, but if you travel back through this thread you’ll find where I did it, I think I explained where I got stuck and exactly what I did.

I was 100% just following the instructions by @wavi and other awesome dudes who put all the work in. The custom firmware is awesome and these guys deserve se kind of trophy from TE.

Good luck!


#638

@ludicrouSpeed said:

I was 100% just following the instructions by @wavi and other awesome dudes who put all the work in. The custom firmware is awesome and these guys deserve se kind of trophy from TE.

Good luck!

Hey, thanks @ludicrouSpeed. I did follow the directions – I went back and looked through your reports, but I thiiiink I made it through the steps just fine. I am mostly certain of this because the filter does show up with the other FX, the tape tracks are on top, the CWO is a moose, etc. It just doesn’t show ITER in the list!

Good news is that I downloaded an ITER patch from op1.fun and loading that’s given me access (and I get the cool graphics for it, too). So really, it’s not a big deal. Just weird!

I wonder if it has something to do with the contents of storage, or if I need to cleari t out and let it rebuild everything, or something. IDK. Weird.

And oh yes – I agree, @wavi and @TabascoEye and whoever else has worked on this are heroes and I really appreciate them and their work. I hope that TE makes this sort of stuff easier for folks like them going forward!


#639

might be stupid but are u looking at the list for the presets?
if you are and u don’t have any iter presets, it may not show up in the list?
try the other one that just changes engines


#640

Yeah, @docshermsticks makes a good point… That would be the shift+T1 (big 1 of 4)… Why didn’t they call these ABCD to avoid confusion? NM… And yes, one slap for me for not mentioning @TabascoEye specifically.