Trigger Shruthi to send out all parameters, can it be done?

I’m working on an editor for the Shruthi-1 using NRPN to include all parameters like mapping and to be able to listen for parameter changes sent out when tweaking the physical interface. I would like the editor to reflect the parameters at all time.

The problem I’m facing now is that a program change doesn’t cause the device to send out its parameter state. This is completely normal, but is there any way I could trigger it to do this? Or maybe using sysex to request the active patch settings?

Check for “Transfer request” in the manual.

Brilliant thanks!

I was secretly hoping for it to come out as NRPN. Now I’m stuck with a chunk of sysex and I have no clue how to parse it. It there any documentation on this? Or maybe a hint on where to look at the firmware source?

This is what I see in my midi monitor. Should I parse only the chunk of 195 bytes? And ignore the invalid byte?

ZERO To USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 11 bytes

16:52:32.763 From USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 11 bytes

16:52:32.923 From USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 195 bytes

16:52:32.923 From USB MIDI 1x1 Port 1 Invalid 1 bytes

Please read the SysEx section of the manual. There’s even a link to the declaration of the patch datastructure!

See here for the Datastructure

Ah yes sorry I missed that. Not very good at reading TFM apparently :slight_smile: I already found the patch header in the source. Thanks for the help. I think I can make it from here.

Heres one for you to print, cut and stick to your computer:

:wink:

I prefer this :slight_smile:

RTFM

XD

Oh noes more questions, and I’ve been reading the manual from front to back several times now but I can’t find the answer I SWEAR

I am daisy chaining multiple shruthis with their midi out mode on “full” and each on their own channel. It appears that extra sysex is returned as a result of this. For example with 2 devices I get:

ZERO To USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 11 bytes
21:21:23.606 From USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 32 bytes
21:21:23.612 From USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 11 bytes
21:21:23.773 From USB MIDI 1x1 Port 1 SysEx Unknown Manufacturer 195 bytes
21:21:23.773 From USB MIDI 1x1 Port 1 Invalid 1 bytes

The first 11 bytes are the transfer request, the other 11 are the echoed request. The 32 are new here as a result of the 2nd shruthi. They contain:
00 F0 00 21 02 00 02 01 00 00 01 00 00 00 00 00 00
10 00 02 01 00 0F 04 00 0C 02 00 00 00 00 00 00 F7

So this looks like a second patch transfer reply (command 0x01) but it doesn’t contain much data at all. Why is the second shruthi responding in this way?

Also I don’t understand why the mutable instrument manufacturer code is different for outgoing sysex then it is for incoming sysex. The manual says 0x00 0x20 0x77, and that’s what I’m sending, but returned is 0x00 0x21 0x02.

BTW that last invalid byte is 0xf7 so maybe the patch transfer message is terminated twice by accident?

Regarding the manufacturer id:

The correct manufacturer id is 0x00 0x21 0x02 ; but earlier versions of the firmware used 0x00 0x20 0x77 (which was a free, unregistered id at the time I started the project – at a time I did not consider paying to get a mfr id allocated). Use 0x00 0x21 0x02 if you want to be correct ; or 0x00 0x20 0x77 if you want to be compatible with units which did not have their firmware updated.

What you are trying to do seems to create a “chain reaction” - the patch requests propagate through the chain and each unit adds its own dump to the chain, causing a MIDI buffer overflow (there’s just enough buffer for 1 full patch message, not for the increasing stream of them you’ll generate on the chain). It’s not a good idea to have a chain anyway, since a SysEx message does not allow you to address a specific unit in the chain… You would end up with N patch dumps, without knowing which patch dump comes from which unit…

Ah I was afraid for that. I had no experience with sysex and somehow hoped is was attached to a channel, but now I think about it there is no channel reference in the sysex so yeah that makes sense. It’s not really a problem I can give each shruthi its own port.

Thanks for clearing up the id thing.

I cannot get sysex dumps out of Shruthi-1. Tested firmwares 0.97, 1.01 and 1.02. I first tried outputting sysex to MPC1000 (jjos), then to computer (Reaper and C6) via Motu Ultralite mk3, nada. I plugged Shruthi’s midi out to Korg EMX’s midi in to see whether midi out works, and yes I can control EMX’s synthesis parametres with Shruthi’s knobs (while being at filter page), so midi out seems to be ok.

Shruthi is set to chn:1, mid:full. Then I enter browse page by hitting S6. Then hit S6+S3 and only “!” flashes quickly on the screen. Should I see “>” when I press S6+S3? Tried reading the manual and searched but no luck so far.

Btw. Shruthi-1 manual http://mutable-instruments.net/shruthi1/manual says both on sysex section:
"0x00 0x21 0x02 (Manufacturer ID for Mutable Instruments)“
and
"0x00 0x20 0x77 (Mutable Instruments)”

> Should I see “>” when I press S6+S3?

It can be that the ‘!’ (which indicates that the processor failed to render an audio buffer because another task took too much time to process) rapidly obscures the ‘>’ after the transfer is over. So nothing to worry about…

I’ve just tried with v1.02 ; channel 1 ; mid:full and could not reproduce the problem.

> both on sysex section:

Back when my plan was to sell only 10 kits of the Shruthi, I did not register a proper SysEx ID and used “0x20 0x77” which was not assigned to anybody. I now own a SysEX ID (0x21 0x02); but the Shruthi still recognizes the old sequence. I’ve removed references to the old ID in the manual.

Cool, thanks for reply! I just cannot understand why it doesn’t work but I’ll try again… Idea of storing patches to sequencer is sooooo lovely!

Doh doh! I had mixed R15-16 and R18-19 while building digital board. Swapped those and now sysex’s work too. I have no tin pump so it was a fiddle to remove the display – and I could not seat it completely back to it’s place but I’ll visit a workshop in a while and then it’s gonna be reseated. While soldering I prepared myself for blind Shruthi, unit without display, or for buying a new one, but for my suprise PCB lasted all the heat and stress like a hero. Great quality!