New Tool (2.8): Guru

(hotelsinus) #281

i want to create a new guru to my novation bass station rack.
but i only found this info

i dont know how to set up the complete sysex line…for a control

the problem is there is some CC controler but most of them is not a cc value… and i cant find it how to setup

please somebody help me…

(hotelsinus) #282

or maybe not :D

(midi error) #283

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.

(xrxs) #284

hehe. did you tried my alternative panel for tx81z?

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

(midi error) #285

Great, thanks man; I`ll have a look at it. This has to be one of the best FM synths ever, nothing beats it for dark aggressive sounds!

(hotelsinus) #286

Single sound SysEx format

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

Sound Data Parameter format

Byte #(:Bit) Function
0 Portamento amount
1 Osc. 2 fine tune
2 Osc. 2 coarse tune
3 Osc. 1 to Osc. 2 Mix Volume
4 Osc. 1 Env. Mod. depth
5 Osc. 1 LFO Mod. depth
6 Osc. 1 Pulse Width Mod.
7 LFO frequency
8 LFO Delay
9 Filter Frequency
10 Filter Resonance
11 Filter LFO Mod.
12 Env. 1 Attack
13 Env. 1 Decay
14 Env. 1 Sustain
15 Env. 1 Release
16 Env. 1 Velocity
17 Env. 2 Attack
18 Env. 2 Decay
19 Env. 2 Sustain
20 Env. 2 Release
21 Env. 2 Velocity
22 Osc. 2 Env. Mod. depth
23 Osc. 2 LFO Mod. depth
24 Osc. 2 Pulse Width Mod.
25 Filter Env. Mod. depth
26:4 LFO waveform=Triangle
LFO waveform=Sawtooth
LFO waveform=Random
Filter type 0=24dB, 1=12dB
Filter Mod. Src 1=Env, 0=LFO
27:5 Osc.2 wave 0=Square, 1=Sawtooth
Osc.2 range=16’
Osc.2 range=8’
Osc.2 range=4’
Osc.1 wave 0=Square, 1=Sawtooth
Osc.2 range=2’
28:7 -
Osc. 2 PW type=Manual
Osc. 2 PW type=Env. 2
Osc. 2 PW type=LFO

Osc. 1 PW type=Manual
Osc. 1 PW type=Env. 2
Osc. 1 PW type=LFO
29:4-7 Osc. 1 bend amount (0-15)
Osc. 2 bend amount (0-15)
30:4-7 Mod. Wheel pitch depth (0-15)
Mod. Wheel filter depth (0-15)
31:7 Octave Sel. (1-8)


how can i reach that control numbers… CC’s not available:!

(kaneel) #287


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.

(kaneel) #288

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? :(

Thanks for your help.

(kaneel) #289

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.

(fluence) #290

What parameters are you referring to specifically on K1?
I can get the sysex output from another editor for you to get you started.

(kaneel) #291

Update: manage almost all params… Can’t find how to mute/unmute oscs but I could still refer to some old C codes of old apps

(kaneel) #292

This synth is getting on my nerves.

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.

(cloinc) #293


got an error during install:

‘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 []) 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.

Can you please help me?

(midi error) #294

What synth is this for?

I had the same problems with the FB01. I ended up making a patcher in Max/MSP.

I do understand how you can mute and unmute this synth if you want me to explain?

(Olegtron Mechatronics) #295


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!!!

All the best, Olli

(kaneel) #296

Found anything that would work? So far, to me, the only way to do so is to send a complete patch sysex message… :(

(brady) #297

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?

(kaneel) #298

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?

(sense) #299

Hey i have a few questions regarding Guru and the implementation for the Yamaha DX-200.

  1. Does anyone have any existing patches for the DX-200 of say the original patches from the factory set of the unit?.. implemented in Guru ?..

  2. Is it possible to somehow convert .DX2 patches to Guru “format” for the purpose of saving them inside the DX-200…


(midi error) #300

Theyre not compatible formats. Only way to do this would be tobuild` the patch yourself.


jealous of your DX-200 tho

Share the wealth!