<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Question about Pure Data and decoding a Dx7 sysex patch file....]]></title><description><![CDATA[<p>Hello <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>I have been using the Really Useful Tutorials DX7 patch for a while now and it's really cool.</p>
<p>I was thinking if it would be possible to take it to a next level, by implementing sysex compatibility, so the Really Useful Dx7 synth could load the thousands and thousands of sysex DX7 files that can be found on the web?</p>
<p>I have used sysex message i PD before, for a Waldorf Blofeld editor, with success, but not like this. For that editor, I used sysex for individual parameters, which is something completely different.</p>
<p>How would one go about loading a sysex patch file in Pure Data and then get the individual parameters(is that called decoding a sysex file?) from that sysex file and set the values to the correct parameters in the Really Useful Dx7 Pure Data synth?</p>
<p>If possible at all...... <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>Thanks in advance!</p>
<p>Jakob</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 05:32:40 GMT</lastBuildDate><atom:link href="http://forum.pdpatchrepo.info/topic/13256.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Jan 2021 19:52:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Sun, 24 Jan 2021 20:03:37 GMT]]></title><description><![CDATA[<p>Hello <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>I have been using the Really Useful Tutorials DX7 patch for a while now and it's really cool.</p>
<p>I was thinking if it would be possible to take it to a next level, by implementing sysex compatibility, so the Really Useful Dx7 synth could load the thousands and thousands of sysex DX7 files that can be found on the web?</p>
<p>I have used sysex message i PD before, for a Waldorf Blofeld editor, with success, but not like this. For that editor, I used sysex for individual parameters, which is something completely different.</p>
<p>How would one go about loading a sysex patch file in Pure Data and then get the individual parameters(is that called decoding a sysex file?) from that sysex file and set the values to the correct parameters in the Really Useful Dx7 Pure Data synth?</p>
<p>If possible at all...... <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>Thanks in advance!</p>
<p>Jakob</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file</guid><dc:creator><![CDATA[jaffasplaffa]]></dc:creator><pubDate>Sun, 24 Jan 2021 20:03:37 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Sun, 24 Jan 2021 21:04:58 GMT]]></title><description><![CDATA[<p>Here is some info on the sysex format, which I grabbed from the free Dexed Dx7 vst's github page:<br />
<a href="/uploads/files/1611522180187-sysex-format.txt">sysex-format.txt</a></p>
<p>Here is a sysex file for a bass sound patch:<br />
<a href="/uploads/files/1611522231883-bass001.syx">BASS001.SYX</a></p>
<p>After looking a bit into it, I am pretty sure it's doable, just going to take a while to completely understand it. But I think it's doable <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/2</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/2</guid><dc:creator><![CDATA[jaffasplaffa]]></dc:creator><pubDate>Sun, 24 Jan 2021 21:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Mon, 25 Jan 2021 00:25:26 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/jaffasplaffa">@jaffasplaffa</a> I think your biggest problem will be routing the info of the various parameters to the appropriate locations. I guess the way to do it might be to have a giant [route] with a counter, for each type of sysex? basically you need a state machine with a counter that counts how many parameters have been received, and changes the routing depending on the values of previous received values</p>
<p>if you want to do the 32-patch sysexs you will need to do some bitshifting of some of the inputs for a few parameters too.</p>
<p>tihs type of thing is really better accomplished in a text format I think, perhaps look into pdlua or py/pyext or pdjs.<br />
if you use one of these you might be able to simplify things by having an array with the name of a recieve, so you can just count the parameters and send to an appropriate receive by reading the right value from the array.</p>
<p>another way to do it would be to have each receive follow a specific naming format (like $0-param0, $0-param1 etc.) and then look up the appropriate number in an array for the different types of sysex. Then you can just change the send name depending on which parameter is being sent using pd's built-in message formatting with $1 etc.</p>
<p>how did you do it with individual sysex parameters?</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/3</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/3</guid><dc:creator><![CDATA[seb-harmonik.ar]]></dc:creator><pubDate>Mon, 25 Jan 2021 00:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Mon, 25 Jan 2021 16:16:10 GMT]]></title><description><![CDATA[<p>Hey Seb!</p>
<p>I appreciate the feedback <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>The routing I am not so concerned about, I already made a nice table based preset system, following pretty strict rules for send/recives for parameter values. So in theory I &quot;just&quot; need to get the data into a table. That side of it I am not so concerned about, I am sure I will find a way.</p>
<p>For me it's more the decoding of the sysex string that I need to research and think a lot about. It's a bit more complicated than the sysex I used for Blofeld.</p>
<p>The 32 voice dump confuses me a bit. I mean most single part(not multitimbral) synths has the same parameter settings for all voices, so I think I can probably do with just decoding 1 voice and send that data to all 16 voices of the synth? The only reason I see one would need to send different data to each voice is if the synth is multitimbral and you can use for example voice 1-8 for part 1, 9-16 for part 2, 17-24 for part 3, 24-32 for part 4. As an example....... Then you would need to set different values for the different voices. I have no plan to make it multitimbral, as it's already pretty heavy on the cpu. Or am I misunderstanding what they mean with voices here?</p>
<p>Blofeld:<br />
What I did for Blofeld was to make an editor, so I can control the synth from Pure Data. Blofeld only has 4 knobs, and 100's of parameters for each part.... And there are 16 parts... So thousand + parameters and only 4 knobs....... You get the idea <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/wink.png" title=";)" alt=";)" /></p>
<p>It's bit of a nightmare of menu diving, so just wanted to make something a bit more easy editable .</p>
<p>First I simply recorded every single sysex parameter of Blofeld(100's) into Pure data, replaced the parameter value in the parameter value and the channel in the sysex string message with a variable($1+$2), so I can send the data back to Blofeld. I got all parameters working via sysex, but one issue is, that when I change sound/preset in the Pure Data, it sends ALL parameters individually to Blofeld.... Again 100's of parameters sends at once and it does sometimes make Blofeld crash. Still needs a bit of work to be solid and I think learning how to do this decoding/coding of a sysex string can help me get the Blofeld editor working properly too.</p>
<p>I tried several editors for Blofeld, even paid ones and none of them actually works fully they all have different bugs in the parameter assignments or some of them only let's you edit Blofeld in single mode not in multitimbral mode. But good thingis that  I actually got ALL parameters working, which is a good start. I just need to find out how to manage the data properly and send it to Blofeld in a manner that does not crash Blofeld, maybe using some smarter approach to sysex.</p>
<p>But anyway, here are some snapshots for the Blofeld editor:<br />
Image of the editor as it is now. Blofeld has is 16 part multitimbral, you chose which part to edit  with the top selector:<br />
<img src="/uploads/files/1611586678930-screen-shot-2021-01-25-at-15.56.06.png" alt="Screen Shot 2021-01-25 at 15.56.06.png" class="img-responsive img-markdown" /></p>
<p>Here is how I send a single sysex parameter to Blofeld:<br />
<img src="/uploads/files/1611587135616-screen-shot-2021-01-25-at-16.04.44.png" alt="Screen Shot 2021-01-25 at 16.04.44.png" class="img-responsive img-markdown" /></p>
<p>If I want to request a sysex dump of the current selected sound of Blofeld(sound dump) I can do this:<br />
<img src="/uploads/files/1611587470261-screen-shot-2021-01-25-at-16.10.38.png" alt="Screen Shot 2021-01-25 at 16.10.38.png" class="img-responsive img-markdown" /></p>
<p>I can then send the sound dump to Blofeld at any times to recall the stored preset. For the sound dump, there are the rules I follow:<br />
<img src="/uploads/files/1611587572271-screen-shot-2021-01-25-at-16.06.17.png" alt="Screen Shot 2021-01-25 at 16.06.17.png" class="img-responsive img-markdown" /></p>
<p>For the parameters it was pretty easy, I could just record one into PD and then replace the parameter and channel values with $1 &amp; $2.</p>
<p>For sound dumps I had to learn a bit more, cause I couldn't just record the dump and replace values, I actually had to understand what I was doing. When you do a sysex sound dump from the Blofeld, it does not actually send back the sysex string to request the sound dump, it only sends the actual sound dump.</p>
<p>I am not really a programmer, so it took a while understanding it. Not saying i fully understand everything but parameters are working, hehe <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>So making something in Lua would be a big task, as I don't know Lua at all. I know some C++, from coding Axoloti objects and VCV rack modules, but yeah. It's a hobby/fun thing <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /> I think i would prefer to keep it all in Pure Data, as I know Pure Data decently.</p>
<p>So I do see this as a long term project, I need to do it in small steps at a time, learn things step by step.</p>
<p>I do appreciate the feedback a lot and it made me think a bit about some things I can try out. So thanks <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/wink.png" title=";)" alt=";)" /></p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/4</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/4</guid><dc:creator><![CDATA[jaffasplaffa]]></dc:creator><pubDate>Mon, 25 Jan 2021 16:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Mon, 25 Jan 2021 19:08:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/jaffasplaffa">@jaffasplaffa</a> hmm well whatever way you were getting sysex into the editor might work. (idk if you did individual parameters in, or if the blofeld had a sysex patch dump like the dx7?)</p>
<p>as far as I understand it the values will come in sequentially so all you have to do is look at the reference of the sysex you have and route the incoming value to the appropriate location depending on how many values have been received so far, and the value of &quot;format number&quot; which will be the 4th value received, if you want to use both 32-patch sysex dumps and single-patch sysex dumps.</p>
<p>you might need <code>[list store]</code> with <code>[list tosymbol]</code> to construct the patch names</p>
<p>by &quot;voices&quot; I think they actually mean patches, since the dx7 was monotimbral. A single cartridge had 32 patches on it it seems. (the bass sysex file you provided is one of these; if you open it in a hex editor with character display you can see the names of the patches every 128 bytes)</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/5</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/5</guid><dc:creator><![CDATA[seb-harmonik.ar]]></dc:creator><pubDate>Mon, 25 Jan 2021 19:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Mon, 25 Jan 2021 21:28:50 GMT]]></title><description><![CDATA[<p>For the Blofeld editor, well, it's a one way communication editor(for now), the editor only sends data to Blofeld, I can not change a parameter directly on Blofeld and then the editors parameter follows. I didn't do that yet, but it's on the to do list.</p>
<p>In my last post, when I refer to a sound dump, it's the same as a patch dump. But what I did there was only to start the sound dump on Blofeld by sending the &quot;request sound dump&quot; sysex string from Pd to Blofeld, to dump the current sound from Blofeld and then receive the sound dump in Pd. I did not try to decode the sound dump to get the individual parameters. So can't use that for the Dx7 approach.</p>
<p>I did get an idea from your posts, though, how I might be able to &quot;backwards engineer&quot; the sysex patches from Dx7:</p>
<ol>
<li>Use the free Dexed dx7 and export a patch sysex dump for reference.</li>
<li>Then use the same patch and change ONE single parameter and export the patch as sysex dump.</li>
<li>Compare the two sysex dumps and see which values have changed. The value changed is the parameter I am looking for. I can then assign it to a fader in my Dx7 editor.</li>
<li>Do it a few times with a few different parameters, until I find a pattern. Or just do it for every single parameter, to be on the safe side......<br />
(Dexed Dx7 editor/Vst - <a href="https://www.kvraudio.com/product/dexed-by-digital-suburban/downloads" rel="nofollow">https://www.kvraudio.com/product/dexed-by-digital-suburban/downloads</a>)</li>
</ol>
<p>I know, it's not the smartest way, but it worked for Blofeld and since this is &quot;only&quot; around 150 params in total it should be manageable, as a weekende project <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>About the 32 voices, ahh yes, you are probably right, it's the amount of presets, not actual polyphonic voices. Would love to get that working too, to get all 32 voices/presets of a voice card dump. There are a lot of them around.</p>
<p>Thanks again. I actually though sysex messages for full patch dump was more complicated. If all parameters are just individual numbers in the sysex string, it's doable, just a bit time consuming.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/6</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/6</guid><dc:creator><![CDATA[jaffasplaffa]]></dc:creator><pubDate>Mon, 25 Jan 2021 21:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Mon, 25 Jan 2021 21:45:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/jaffasplaffa">@jaffasplaffa</a> I don't see why you don't just use the reference .txt you have, that seems way easier than having to export a sysex and compare it for every parameter.<br />
Anyways, the sysex will be serial so &quot;which parameter&quot; it is will be based on what # of message it is in the input stream when you read the sysex. (though idk what you're going to use for getting the sysex file in - <code>[mrpeach/binfile]</code>, or sent over midi using something like sysex librarian <a href="https://www.snoize.com/SysExLibrarian/" rel="nofollow">https://www.snoize.com/SysExLibrarian/</a>)</p>
<p>the full 32-patch format is different than than the single-patch format though so the parameters will have different positions in each.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/7</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/7</guid><dc:creator><![CDATA[seb-harmonik.ar]]></dc:creator><pubDate>Mon, 25 Jan 2021 21:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to Question about Pure Data and decoding a Dx7 sysex patch file.... on Wed, 27 Jan 2021 07:48:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/seb-harmonik-ar">@seb-harmonik.ar</a> said:</p>
<blockquote>
<p>I don't see why you don't just use the reference .txt you have, that seems way easier than having to export a sysex and compare it for every parameter.</p>
</blockquote>
<p>Yes if I actually understood it full, which I don't. But yeah, should probably do that.</p>
<p>Yes I would be using Sysex Librarian, which is a really nice program <img class="emoji emoji-extended" src="http://forum.pdpatchrepo.info/plugins/nodebb-plugin-emoji-extended/images/grinning.png" title=":)" alt=":)" /></p>
<p>For the 32 format, yeah, seems a bit harder. Will start with a single sound dump and try the 32 later on.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/8</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/13256/question-about-pure-data-and-decoding-a-dx7-sysex-patch-file/8</guid><dc:creator><![CDATA[jaffasplaffa]]></dc:creator><pubDate>Wed, 27 Jan 2021 07:48:42 GMT</pubDate></item></channel></rss>