I have made an updated and refined DX7 patch if anyone is interested. I am also in the process of finishing off an improved TX81Z panel featuring ALL the functions.
ALL functions — featuring tuning and autochord too? if so, this would be interesting to look at.
frankly speaking, i gave up with GURU and made multipage templates for zero sl mkII
Byte # Data Function
0 0xF0 SysEx start
1 0x00 Novation ID (0x00, 0x20, 0x29)
2 0x20 -“”-
3 0x29 -“”-
4 0x01 Model (0x01 = synth)
5 0x01 Type (0x01=Keyboard 0x02=Rack)
6 0x22 Type of data (0x22 = Single sound)
7-70 0x0n Sound data (64 half bytes)
71 0xF7 End of SysEx
I recently started to fiddle with this great tool (thanks for making it) and decided I would start making a definition for one of my synth: the kawai k1/k1m.
It took me a while to figure out how the SYSEX works with this synth and apparently, some values are to be sent a very different ways than some others.
Let say that I want to modify prop X, I’d have to give a cursor and a value… everything is normal.
But if I had to send prop Y, I’d have to give a different cursor and send a value left-bitshifted by 1. (or 2, or 3…)
So I guess that’s where I have to use the powerful value_callback and my question is: Should it return a numeric value?
I read the documentation again and again and from what I’ve understood, the value returned by parameter.value() is a number… and to be able to bitshift with ease, I’d have to convert the number to a bit, then bitshift then convert to a number ? Just tell me if I’m wrong and if you need more informations about the synth.
Oh and an other question, which may be more of a feature request… if you still support this tool.
For this particular synth, which is a wave synth, there is 256 sounds
Which means that for sending values > 127, you need to switch a bit from 0 to 1 and send value & 0xF7.
The easiest way to achieve this would be to have two dropdowns with two different sysex codes… could work, not elegant.
I have two ideas for this, in hope they are achievable:
-1 format callback that is called after the value_callback and before the value got sent… so one could add a condition right here when the value is higher than 127, for example
-2 the possibility to retrieve more options in the parameter argument of value_callback handler, so you could do your conditions and change the sysex before it gets send BUT it would change it only for this change, not the ones after.
Also, there’s no way to manage the columns? Like, for a group to fit a column?
Just thought I could set a sysex property for a wavelist and change it by accessing the synth def. through param argument of the callback handler, will test asap.
As you can see, there’s no cursor number for (un)muting sources.
But that’s still a param that can be send on a whole patch transmit as it’s, as the screenshot showns, the 22nd bytes of a full patch.
And that is rather frustrating as it seems there’s no way to change these at all and where it gets on nerves the most (like, THE MOST) is that even if I dealt with all the possible params, once you go from 2 sources to 4 sources, the two new sources are muted by default and you need to use the front panel of the synth in order to get them unmuted, which is counter-productive as the goal of a synth definition is to allow you editing the synth without touching the panel.
I’m sad. Still, here’s the definition in its actual state.
EDIT: The manual got me real wrong and I didn’t need to actually use any bit shifting (also, I’m a noob on sysex things, this explains that), here is a new synth def.
‘C:\Users\André\AppData\Roaming\Renoise\V3.0.0\Scripts\Tools\com.cornbeast.Guru.xrnx’ failed to load.
Please remove this tool or contact the author (Cornbeast [cornbeast@cornbeast.com]) for assistance…
cannot open C:\Users\André\AppData\Roaming\Renoise\V3.0.0\Scripts\Tools\com.cornbeast.Guru.xrnx\synthdefinitions/dsi_tetra.lua: No such file or directory
stack traceback:
[C]: in function ‘dofile’
.\class_guru.lua:113: in function ‘scan_synth_definitions’
.\class_guru.lua:139: in function ‘create_menu’
main.lua:45: in function ‘init’
main.lua:48: in main chunk
I already tried
self.synth_definition_folder_path = os.currentdir() … “synthdefinitions\”
in the function Guru:__init() but I get a similar error:
*** cannot open C:\Users\André\AppData\Roaming\Renoise\V3.0.0\Scripts\Tools\com.cornbeast.Guru.xrnx\synthdefinitions\dsi_tetra.lua: No such file or directory
The path looks right and the file is there.
Tried the same with Renoise 2.8 and had the same result.
I’m running Win8.1 64Bit and 32Bit Renoise.
I am a very happy owner of a Siel Midi Expander, which is a vintage synth module with minimal controls, not even pitch bend or modulation wheel cc’s. It is, however, possible to dump patches via sysex, and I have been doing some manual dumps with Midiox. Since the procedure is far from intuitive (typing in a value, sending the dump, trying out, again and again), and I am a long time registered Renoise user, I would like to start programming the synth with Guru.
I have been browsing through this forum and the available synth definitions, and it seems that normally only one parameter change is sent at a time, with “cc”, “nn” and “vv” inserted in the template. (Am I right?) My siel would, however, like to receive a string of 45 hex bytes at once, including all the parameters, i.e. the complete patch. You can see the sysex legend from here.
My question is: Can all the parameters be sent at once and how should I do it? Can I make a 45 bytes long sysex template with different variables for all the parameters? Or whut…
I would really appreciate any help that would lead me forward in writing this definition. I am quite a noob with coding business, but I learn quickly, and have a strong motivation, since the Siel is such a great sounding synth!!!
I have a pile of .syx files for my TX81Z that I typically use SysEx Librarian to send to the synth. Any way to “convert” these to patches or otherwise load them up in Guru?
Actually, this is a nice question. A friend of mine would be interested into such a feature.
From what I already understood while making a synth definition is that GURU takes a synth definition and maps to the SYSEX so basically, would it be to go further and do a GURU converter by giving synth definitions for it?
From what I understood (bis), some synths have different sysex maps when it comes to different commands (captaaaiin obvious) but still it wouldn’t take too long for everybody who already made a definition for some synths to actually duplicate it and adapt it a bit. Right?