CharlesHolbrow / vst-chunk-inspector

Hacks for inspecting how Tracktion and Waveform files save VST data
11 stars 0 forks source link

Some info about block 1-3 and question about VST3 ID #2

Closed git-moss closed 1 year ago

git-moss commented 3 years ago

Hi, I wasted several days trying to fill the holes in the VST chunk research :-)

I understand now most of what you call "Block 1-3":

Block 1

Block 2

The VST-data.

For VST2: The format is either an opaque or regular chunk (FPCh, FxCk). In case of a regular chunk the data has a prefix of 2 integers (8 byte: 0xDEADBEEF, 0xDEADF00D). These need to be removed and are not part of the actual data but they are counted in the VST-data size field.

For VST3: already understood.

Block 3

Hope this helps :-)

If you have any idea about the additional VST3 ID I would be really happy...

CharlesHolbrow commented 3 years ago

Hi @git-moss I'm glad this was helpful, and thanks for the additional info. BTW, a while ago I used your scripts that enabled me to use the launchpad with BitWig, and they worked great. Thanks for sharing those :)

I've just been looking into vst3 support on my end, and I haven't figured out how reaper generates the IDs that it stores in the the reaper-vstplugins64.ini file. Here's what I've learned:

<VST "VST3: #TAuto Filter (Tracktion) (mono)" "#TAuto Filter.vst3" 0       "" 1612217568 {56535441 75746F23 74617574 6F206669} "" 0b1100000000110000111110011100000
<VST "VST3: #TBus Compressor (Tracktion) (mono)" "#TBus Compressor.vst3" 0 "" 96599238   {56535442 436D7023 74627573 20636F6D} ""     0b101110000011111110011000110
<VST "VST3: #TChorus (Tracktion)" "#TChorus.vst3" 0                        "" 1465853799 {56535443 686F7223 7463686F 72757300} "" 0b1010111010111110010011101100111
<VST "VST3: #TCompressor (Tracktion)" "#TCompressor.vst3" 0                "" 457774091  {56535443 6F6D7023 74636F6D 70726573} ""   0b11011010010010001010000001011
<VST "VST3i: Zebralette (u-he)" Zebra2.vst3 0                              "" 959560201  {D39D5B69 D6AF42FA 12345678 534D4433} ""  0b111001001100011011101000001001
<VST "VST3: RoughRider3 (Audio Damage, Inc.)" RoughRider3.vst3 0           "" 41284627   {ABCDEF01 9182FAEB 41754461 52523330} ""      0b10011101011111010000010011

So my best guess is that it's a 4 byte hashed version of either the Vst::IEditController ID or Vst::IComponent ID, (both of which are 16 bytes). I'll update this thread if I find anything else!

CharlesHolbrow commented 2 years ago

Found clues in an older forum post: https://forum.cockos.com/showthread.php?t=202904

But in what form is the ClassID hashed? Is it the hex string?

CharlesHolbrow commented 2 years ago

Justin also confirmed this here: https://askjf.com/index.php?q=6353s

HOWEVER, When I calculate the FNV1a, I am getting different values than the one supplied by reaper!

CharlesHolbrow commented 1 year ago

There's an answer in the forums now: https://forum.cockos.com/showthread.php?p=2590943#post2590943

git-moss commented 1 year ago

Thank you, very helpful!