TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Let's Decode a VST

50 点作者 akully将近 5 年前

10 条评论

strbean将近 5 年前
This is the format of patch files for Propellerhead's Scream 4. It is just a serialization format for the settings of the knobs. Not exactly the same as "decoding a VST".
monkpit将近 5 年前
Pretty unusable on mobile - my phone keeps trying to either start a phone call to the “number” of the byte sequence I clicked on, or it tells me (repeatedly) that the site has been blocked from making calls, after I have canceled out a few times.
评论 #23509156 未加载
评论 #23506592 未加载
评论 #23510483 未加载
评论 #23511057 未加载
whoopdedo将近 5 年前
&gt; = 0072 + 2 * (filenameLength &#x2F;&#x2F; 2)<p>I&#x27;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.<p>A 4-byte ID and a 4-byte big-endian length is almost universal for audio data. There&#x27;s even a Python module[1] for it. And it&#x27;s often nested, so within a chunk of data will be smaller chunks described the same way.<p>The more complete and easier to analyze description of this patch would look like:<p><pre><code> &quot;FORM&quot; (114) &quot;PTCH&quot; &quot;CAT &quot; (4) &quot;REFS&quot; &quot;DESC&quot; (35) [BC 01 03 00 00 FF] -- ? (2) &quot;17&quot; -- File name (19) &quot;Scream 4 Distortion&quot; -- Patch name &quot;PARM&quot; (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] &quot;BODY&quot; (0) </code></pre> (In fact, &quot;FORM&quot; is the header used by AIFF files.)<p>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&#x27;re all byte-sized, though a mix of signed and unsigned. The 0 byte after the list is a bit of a mystery.<p>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.<p>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&#x27;m increasingly convinced that hover effects in general are bad UX.)<p>[1] <a href="https:&#x2F;&#x2F;docs.python.org&#x2F;3&#x2F;library&#x2F;chunk.html" rel="nofollow">https:&#x2F;&#x2F;docs.python.org&#x2F;3&#x2F;library&#x2F;chunk.html</a>
评论 #23510513 未加载
majkinetor将近 5 年前
This concrete page doesn&#x27;t offer much (not sure why anybody needs to know how VST effect serializes its data in general), but the simplicity of it made me look into other site topic.<p>Assembly in 7 minutes is great:<p><a href="http:&#x2F;&#x2F;adamkulidjian.com&#x2F;vlahb.html" rel="nofollow">http:&#x2F;&#x2F;adamkulidjian.com&#x2F;vlahb.html</a><p>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.<p>I look forward for new articles. Keep up the good job m8.
评论 #23510570 未加载
errozero将近 5 年前
The file format used in the song files of Rebirth by proppelerhead is similar, they are based on the.iff format created by EA. Propellerhead released a document in the late 90s describing the format, I found a copy in this GitHub repo: <a href="https:&#x2F;&#x2F;github.com&#x2F;nsauzede&#x2F;jsynth&#x2F;blob&#x2F;master&#x2F;RBS42.txt" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;nsauzede&#x2F;jsynth&#x2F;blob&#x2F;master&#x2F;RBS42.txt</a>
nkozyra将近 5 年前
Is something missing on mobile or is this literally just decoding a few bytes from a patch?
评论 #23506148 未加载
评论 #23506689 未加载
djaychela将近 5 年前
Has anyone got some similar info for sylenth 1? I have a lot of patch backs for it, but they are not ordered in what I would consider a sensible way - random distributions of different types of patch in a bank. I extracted loads of them and sorted them into folders, but what I want to do is then put them back into banks (such as a bass bank, etc), but there&#x27;s no way to do this quickly in sylenth other than to load them all in manually and then save the bank.<p>I can&#x27;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&#x27;s probably above my pay grade, but if anyone has some ideas they would be appreciated.<p>(I&#x27;m a simple amateur python programmer, for the record)
评论 #23511685 未加载
ronreiter将近 5 年前
Please change the title
moritzwarhier将近 5 年前
Disappointed, but I would love to get some real insights into the workings of the VST format (not the patches) and its history. Apparently this is not about patch files for VST plugins (.fxp), but about PHs proprietary patch file format. So I don&#x27;t understand what this has to do with &quot;a VST&quot;. Patch files are the least interesting part about audio software anyway, aren&#x27;t they?
Thorrez将近 5 年前
0072 = 0072 + 2 * (filenameLength &#x2F;&#x2F; 2)<p>That&#x27;s wrong. filenameLength is 2, so that equation would come out to 74, not 72.
评论 #23510466 未加载
评论 #23511011 未加载