Sorry, not up to writing a blog post about this. It works great though.
tarxvf: I made a thing (still needs polishing but PoC works great!) that takes snapshots of a file every time it’s saved. This means you record your screen while editing the codeplug and verbally describe what you’re doing. Make one change per saved file. Extract the audio, use whisper-timestamped to get a transcript. If you say ‘mark’ every time you save a file, you know where things will line up. Use that to write one line per saved codeplug representing the changes ebtween that codeplug and the one prior (e.g. “channel[0].name=“HS”")Code I wrote a long time ago in the md380tools days takes the change log and the files changed, diffs them, and writes out a file that’s almost compatible with chirps bitwise.py format.
[ 11:48 AM ] tarxvf : Easy way to get the details on a channel and that sort of thing.
[ 12:20 PM ] tarxvf : Example verbal input:
... Digital mic gain is set to 0, mark, 3, mark, and 5, mark. Analog mic gain is set to 0, mark, 3, mark, and 5, mark. ...
Which you can convert manually (or use chatgpt) to make into something like
digmicgain=0 digmicgain=3 digmicgain=5 anamicgain=0 anamicgain=3 anamicgain=5
So that’s 6 codeplugs. That then diffs those codeplugs and spits out something like:
#seekto 0x9e; //[1 bytes,3 changes]
char digmicgain; //values _['0', '3', '5']_
//['digmicgain=0', 'digmicgain=3', 'digmicgain=5']
//[b'05', b'03', b'00']
//[(b'00', ['digmicgain=0']), (b'03', ['digmicgain=3']), (b'05', ['digmicgain=5'])]
#seekto 0xa0; //[1 bytes,3 changes]
char anamicgain; //values _['0', '3', '5']_
//['anamicgain=0', 'anamicgain=3', 'anamicgain=5']
//[b'05', b'03', b'00']
//[(b'00', ['anamicgain=0']), (b'03', ['anamicgain=3']), (b'05', ['anamicgain=5'])]
And most of the painful part of your codeplug reversing work is done.