This is literally a translation for specific obscure file format ¯\_(ツ)_/¯
I'm having a hard time understanding what is meant by this. Particularly when 114 is the size of the patch after the 8 header bytes. The description also seems to get the word size wrong by treating the first 4 bytes as a NULL-terminated string.
A 4-byte ID and a 4-byte big-endian length is almost universal for audio data. There's even a Python module[1] for it. And it's often nested, so within a chunk of data will be smaller chunks described the same way.
The more complete and easier to analyze description of this patch would look like:
"FORM" (114)
"PTCH"
"CAT " (4)
"REFS"
"DESC" (35)
[BC 01 03 00 00 FF] -- ?
(2) "17" -- File name
(19) "Scream 4 Distortion" -- Patch name
"PARM" (37)
[BC 01] -- Another BC01
(15) -- Number of params that follow
[01 01]
[02 3E]
[03 00]
[04 3E]
[05 1E]
[06 00]
[07 00]
[08 00]
[09 00]
[0A 00]
[0B 69]
[0C 28]
[0D 00]
[0E 00]
[0F 55]
[00]
"BODY" (0)
(In fact, "FORM" is the header used by AIFF files.)So a patch is a CAT, a DESC, a PARM, and a BODY (required even if not used). The number and meaning of parameters will depend on the type of effect, but from this we can guess they're all byte-sized, though a mix of signed and unsigned. The 0 byte after the list is a bit of a mystery.
The meanings of these parameters I assume was found by changing a value then seeing which byte changed in the file. The next step will be to compare a patch from a different effect. Even better to find one that makes use of the BODY section. Another fun way of reversing a format is to modify an unknown byte then see what happens when it is loaded.
As for the way the website is presented, I think it would be helpful if the description activated by clicking on a byte instead of hovering. That would make it possible to then select and copy the description. (Truthfully, I'm increasingly convinced that hover effects in general are bad UX.)
Assembly in 7 minutes is great:
http://adamkulidjian.com/vlahb.html
Not sure what are the problems with mobile version that people complain, but I wish more sites are like this, simple and strait to the point.
I look forward for new articles. Keep up the good job m8.
Not a particularly device friendly way to describe the format, I'll give you that.
I can't make sense of the data in existing individual patches or banks (I did some single value changes and resaved and the file was completely different), so it's probably above my pay grade, but if anyone has some ideas they would be appreciated.
(I'm a simple amateur python programmer, for the record)
For one of the Reason instruments that I was thinking of decoding, I encountered a similar problem. Even saving the same patch with different filenames resulted in different looking bytes.
This is outside my own scope but try graphing these patch files out, color coding and seeing what patterns you can notice.
That's wrong. filenameLength is 2, so that equation would come out to 74, not 72.
I think 0072 + 2 * ( (filenameLength-1) / 2) should work but I'll test
Site is updated too :)