New Tool (2.8): Guru

Tabs would be very useful. Mainly for layer A and B on the Tetra, also the built in LFO’s and sequencers. I’d like to make the mappings as complete as I can and share.

I like the standard Renoise sliders, but whatever is fine by me. I’m thinking scroll bars for big layouts on small screens.

Allright, I’ll give this some thought.

Here’s one idea to think about; to split it in two; one file for the definitions, one for the gui, which uses viewbuilder.

By convention the file named XXX_gui.lua is considered gui for the tool with filename XXX.

By convention all viewbuilder id:s are connected to the parameters with the same id.

Guru adds min, max values etc, and maybe text fields to the viewbuilder gui.

This way, you create tabs etc any way you want.

  
synthdefinitions/roland_jx8p.lua  
synthdefinitions/roland_jx8p_gui.lua  
  
roland_jx8p_gui.lua  
---------------------------------------------  
local vb = renoise.ViewBuilder()  
return vb:column {  
 vb:slider {  
 id = "vcf_cutoff"  
 }  
 vb:row {  
 vb:rotary {  
 id = "vcf_resonance"  
 }  
 }  
}  
  
roland_jx8p.lua  
---------------------------------------------  
return SynthDefinition {  
 Parameters {  
 Parameter {  
 id = "vcf_cutoff",  
 name = "",  
 number = 55,  
 max_value = 255  
 },  
 Parameter {  
 id = "vcf_resonance",  
 name = "",  
 number = 55,  
 max_value = 255  
 }  
 }  
}  
  

Or, I continue to build on to what I started, by incorporating scroll, tabs, and knobs that are easy to use but hard to do special stuff with.

As a programming noob I’d go for the easy to use method. But I guess I could figure out how to use the viewbuilder, with a little help. Stuff like sequencers and LFO’s could be done in a fancy way. But looks isn’t important for me personally, I’m all about functionallity.

Any difference to the methods when it comes to performance? I guess neither is that CPU heavy?

New version of Guru 0.12 with breaking changes.

So, you need to make some changes to you definitions, but it’s only for the better.

I have added structure to the synth definitions, so that the UI will look better, you will be able to fit more parameters (with tabs) and you won’t have to think too much when creating a definition.

So, no more “Container” that can contain “Container” recursively mess. Now a synth definition has to look like this:

  
return SynthDefinition {  
 Section {  
 Group {  
 Parameter {  
 },  
 Parameter {  
 }  
 },  
 Group {  
 Parameter {  
 }  
 }   
 },  
 Section {  
 Group {  
 Parameter {  
 }  
 }   
 }  
}  
  

Each Section will be rendered as a tab, each tab contains three columns. The columns will be filled with the Groups. Like this:

So, all you have to do to make your old definitions work is to replace the Containers with Groups and fit them in to Sections.

Another notable difference: There’s a new menu option in the guru tools menu called “Scan synth definitions”. You need to click it to make any definition appear in the menu. Once you add a new definition to the folder you need to do this again.

I also create some instructions on how to create a definition:

http://code.google.com/p/stepbrother/wiki/CreateGuruSynthDefinition

Some more stuff:

  • Made it possible to launch guru without any midi device on the computer
  • Made it possible to load patches that are saved for another synth definition (experimental)
  • Added JX-10 / MKS-70 definition

Grab it here:

http://code.google.com/p/stepbrother/downloads/detail?name=com.cornbeast.Guru_V0.12.xrnx

Ok, hope you like it, hope it’s not too buggy. And don’t forget to backup your stuff.

Later
CB

Great progress :)

Hehe very nice idea! :)

Yo

Just saw this post in the old JX Programmer thread:

So, here’s what you do with guru:

Check this excellent page: http://www.vintagesynth.com/roland/sysex.php

According to the page, the synths Roland Alpha Juno 1, Alpha Juno 2 and MKS-50 uses the same, so, here’s an untested start for this:

  
return SynthDefinition {  
 name = "Roland Alpha Juno 1, Alpha Juno 2 and MKS-50",  
 author = "You [you@yourdomain.com]",  
 Section {  
 sysex_message_start = {0x41, 0x36, 0x00, 0x23, 0x20, 0x01},  
 Group {  
 name = "DCO",  
 Parameter {  
 id = "dco_waveform_pulse",  
 name = "Pulse waveform",  
 number = 3,  
 default_value = 1,  
 items = {"OFF","1","2","3"}  
 }  
 },  
 Group {  
 name = "VCF",  
 Parameter {  
 id = "vcf_cutoff",  
 name = "Cutoff",  
 number = 10,  
 default_value = 100  
 }  
 }  
 }  
}  
  

I might dig in to this soon if noone else does…

CB

change the midi in the settings tab.

Ah, my bad, will fix tonite.

New version, fixed the midi device settings bug:

com.cornbeast.Guru_V0.13.xrnx

I have to give it to ya: This looks rather dope! For real! It’s just sad that I don’t have an external synth to test it out with. But to those who have, I hope you guys have a creative time!

Hey!

yeah I managed to make a start using your documentation from this thread :)

Thanks for the reply. Will post the one for alpha juno this week.

Yo!

Yo! I did juno 1/2 last night! Just didnt have the time to upload! Will do tonite + a new version of guru with nicer UI!

CB

New version V0.14!

Now with support for Juno 1/2 and MKS-50. Still not tested since I don’t have anyone of those synths, so please try it out.

  • Reworked the layout, all the columns are adjusted to the same height, some groups are made higher and blind plates are added.
  • Added new synth definition: Roland Alpha Juno 1, Juno 2 and MKS-50 (untested)
  • Added new section to documentation; “Split it into parts using variables”

See first post in thread

CB

hi.
okay, is it possible to set VCA to 127 by default? (i see everything is at 0 by default). just a thought.

having not really used guru before, im wondering: i closed the guru gui and re-opened it (by selecting alphajuno1/alphajuno2/mks50, and it just started from scratch.(thankfully not actually resetting the patch on the synth, but just losing the gui settings.)

but as far as things go, this is definitely good enough for me for juno2 business! great job!

(edit) altho, cutoff tends to not work always. weird.
(edit2) something really wonky about the cutoff. the rest seem to work pretty neat. cutoff doesn’t feel like cutoff at all
(edit3) it’s really hard for me to say what Cutoff actually does currently, because i cannot seem to recognize it as any other possible parameter being modified instead of cutoff. it’s real weird. but, one thing is for certain: cutoff is not cutoff :)

Yes, forgot to mention, the inital values suck! I have made a nice1 for JX-8P which I have, but I need to make one for juno as well, with your help.

Perhaps you could edit a neutral but good patch, save as XML and send me? Make sure you press “send all” to get all the parameters in the synth to match what you are saving with Guru. Ignore the cutoff for now, but let me know a good value to set for it as well.

Haha, yeah, got it mixed up. You were editing DCO PWM rate (and DCO PWM rate was editing DCO PWM depth). Fix will come.

Later
CB

by send all, do you mean do a sysex midi dump from the aj2 once the patch is ready?

Sorry, I meant the “Resend” button in Guru, and then adjust the sound with Guru to make a patch.

Currently Guru does not read midi from the synths, but that’s planned as a future feature.

New version V0.15

Fixed some flaws in the juno definition + fixed and improved a some things I stumbled upon when I played around with it.

  • The synth instance is reused, and the patch preserved, when synth dialog is closed and opened again
  • Fixed some errors in Juno 1/2/MKS-50 definition + created better (still untested) preset
  • Restored adding of midi mappings that has been broken for some time
  • Scan for synth definitions when guru is started the first time and there are no synths in the preferences

(The latest version is in the initial post of the thread…)

kool
screen size problem,
i found one screen problem,
see the atached images, how can i resize the guru window? or it is fixed size?
the groups are automaticly move horizontal when not enough place… i think this is not good
3242 Renoise.jpg

3243 Guru - def.jpg

what can i do with the empty space or how can i resize Guru Window?

Cool

Yeah, window is fixed size, the boxes fill the columns and are moved to the next column when don’t fit.

That’s how I solved it. But any feedback is appreciated if you have a suggestion for how I could solve it.

I can make the window a bit higher, that would make things better for you, but I guess there will allways be cases when you don’t get the exact layout you want. That’s the price of simplicity.

Another option would be to add ability to specify height in the synth definition.

CB