New Tool (2.8): Guru

(Dan P) #201

I’m liking the sound of that. Also I’m liking what I hear you’re doing with the Randomize function…

(Cornbeast) #202


New version with LOADS of improvements. Please test it out those who dare, there might be bugs! Don’t forget to backup your files!

A correction for JX8P definition: the patch parameters were not sent correctly


So, now all you making synth definitions that has some kind of center state, like pan, where midi 64 = center can now make sliders with 0 as center value and either -100 0 100 as display value, or if you prefer -64 0 63.

Make these adjustment and I’ll include them in the next release (A-Station, MOFX, Meeblip, Blofeld and more…)

Se example synth def for examples!


(Cornbeast) #203

New official release 1.6!

  • Support for new synths: Novation A-station, Electrix MOFX, Korg Poly-800 with Hawk-800 mod, Meeblip SE and Micro!
  • Lots of improvements for synth definition authoring, I’ll post more info and instructions about this…
  • And all the changes as described in my previous post

Thanks to Midi error, Dan P, bbarham and nazzard for your hard work with creating the new synth definitions!

Grab it from here:

(Cornbeast) #204

Attention everyone who have created a synth definition:

There has been some improvements lately that you might want to implement and update your definitions with to create a better tools:

You can specify randomize_min and randomize_max for each parameter to prevent some parameters from getting totally useless values, like setting the master volume to 0.

I have updated the instructions:


Just hand them over to me if you do updates.

(gelabs) #205

Thank you for your work.

Updated Shruthi-1 definition :

(Cornbeast) #206

New version up for testing 1.7

Example synth def contains example of how to change labels and disable UI elements depending on the value


I have not updated the documentation yet…

Anyone has a Juno 106? If so please see if the synth definition still works.

(midi error) #207

The guru patches I made were my first attempts at programming, Cornbeast is really helpful and knowledgeable in the ways of midi. I created the patches for the Novation A-Station and the Electrix MOFX. You can see the A-Station patch working here:

Primarily, it is for creating and storing patches but there are ways of using it to automate your synth parameters that cannot be automated with normal CCs…such as NRPNs and Sysex. I would highly recommend if you have any hardware synths use midi, check out Guru.



(Dan P) #208

I really like this software! It’s encouraged me to get a lot more hardware in, even though my studio is tiny. Having just bought a Moog Slim Phatty the first thing I did was make a Guru definition. The Slim Phatty is pretty hands on, there’s not much hidden in menus, but Guru opens up stuff like the Arpeggiator, Noise and Sample and Hold, and, of course, the Randomize function is great on any synth.

(Cornbeast) #209

It’s so nice to see people starting to put a lot of effort into finishing synth definitions. Together we’re creating amazing stuff!

I’m thinking about the next step. Either sharing patches with others by uploading/downloading straight from guru. Or morphing/combining/mixing two patches into a new one. Or maybe both.


(bbarham) #210

Update for 1.6 - Meeblip definition:

  • Added randomize_min and max values.
  • Added display_min and max value for Pulsewidth and Detune.
  • Grouping is now based off the control groups on the Micro (Software switches, hardware analog controls, hardware digital switches).
  • Init patch is now defined as a saw wave, open filter, sustain on.

3636 Screen shot 2012-09-09 at 2.34.55 PM.png
3635 meeblip_se_micro.lua

(Dan P) #211

Hi Cornbeast,
I’m not sure if you have added this to Guru yet, my Hawk800 definition still seems to need my original midi fix to make it work.
However I have a new Hawk800 definition which now includes the Atomahawk mod and is effectively the definitive version. It is attached below. I’ve not attached a new picture as it looks pretty similar to the old one, there are 8 or 9 new parameters added.

(Cornbeast) #212

Yeah I added it earlier. For the midi quirk to work the synth definition needs an id that matches “korg_poly800_hawk800”. I added this in the version I released. I also renamed the file to match the convention (manufacturer, model etc) You still had your own version I guess. Could that be the explanation?

I’ll add the new one… So, is the Hawk and atomahawk different mods. Can you have one but not the other. Will the synth def work for unmodded Korg Poly800 and/or with hawk800 mod and/or with atomahawk mod? I need some help to make the naming correct…

(Dan P) #213

You could be right about the difference in naming, I’ll check that tomorrow.
The new synth definition will work for the Hawk800 alone, or the Hawk + Atomahawk mod, however an unmodded Poly800 has no MIDI spec therefore is useless as far as Guru is concerned. I know it’s longwinded but you could call it something like Korg Poly800 + Hawk800 + Atomahawk??
FYI the Hawk800 mod adds MIDI functionality plus loads of modulation parameters, the Atomahawk adds extreme resonance and FM modulation. Result = synth madness!

(Dan P) #214

Changing the name did the trick.

On another subject, how can I unbind a Guru window from a song, my template song now has a guru defintion open whether I want it or not, as do a number of other songs, can I remove them?

(Cornbeast) #215

Yo! Great.

Guru adds a unique key to the song comments as soon as a new song is present that does not have a key.

The reason for this is that there is no event to hook in to when a song is about to be saved, only after it is saved/closed. And Guru can not make changes to the song at that time.

Therefore I always add the key to the comments, and then I use it when the song is closing for saving Guru data for patches. The key is used for linking the song to the saved data.

But Guru stores no patches or synths with the song unless a synth definition is launched and there is an instrument in the song that uses the same midi device and midi channel. Then it’s considered to be in use, so if you launch 20 synth definitions to play around with non is stored with the song unless this rule applies…

So, for many songs, the key in the comments is just a bunch of characters in the comments, nothing to care about. It does nothing… unless Guru finds data that is saved.

And all the Guru data is stored in the Guru working folder, so yet again, there is no mess of things stored in the song, just the key in the comments.

Was this what you were after?

I considered making it a setting at one time, but I decided it was not necessary. But maybe it is?

The backside would be this: Imagine there’s a setting for not adding the Guru key to songs, and you set it so. Then you create a great song with Guru and some synths and you forget you made this setting and you save your great song thinking it will be saved, but it’s not.


(Dan P) #216

Thanks Cornbeast,
I realise now that by remove the MIDI instrument it also removes the Guru window, so I can stop extra guru windows coming up if they are unwanted.

(LudfisterSound) #217

Anyone have a definition for Roland MKS-80 or JV-2080? I’ve been trying to put one together for the MKS-80 with no luck.

(downerczx) #218

Hello everyone, I’ve made a definition for the MIDIBox SID. It’s still pretty basic.

Attached. Thanks.

(trash80) #219

In working with the Midibox SID I had to change some of the Lua code for sysex in GURU.

Specifically I need a method to send a sysex initialization string when the editor is first launched, I edited the GURU source and added a “init_sysex” variable in the SynthDefinition.

Secondly the mbsid handles sysex parameters/values different than what’s currently implemented in guru, example:

0xF0, 0x00, 0x00, 0x7E, 0x4B, 0x00, 0x06, 0x00, "nh", "nl", "vl", "vh", 0xF7  

nh was “nn” with it’s bits shifted to the right by 7 (nn/128)
nl was “nn” with its bits AND with 127 (nn%128)
vl was “vv” with it’s bits AND with 15 (vv%16)
vh was “vv” with it’s bits shifted to the right by 4 (vv/16)

Maybe the best way to implement this sort of custom sysex would be triggering callbacks when “vv” or “nn” or “cc” is reached in the sysex loop?
I’d like to release my patches but I’d need to sort out this stuff first. Or am I just missing some features that are already there?

(xrxs) #220

great tool! made me buying TX81Z :lol:

By the way, is it planned to support renoise rotary encoders? i want to make alternative definition for tx81z to regroup controls in same way:

ability to retrieve data from synth will be great feature too