Shruthi > Ambika unofficial patch conversion tool

This discussion was created from comments split from: Patch-sharing area.

is there a patch-sharing area for Ambika? can you open Shruthi patches/programs within Ambika via the SD card?

Shruthi and Ambika patches are not compatible. They synthesis engine of the Ambika shares a lot with the Shruthi but they also differ in quite a few points.

edit … oops… what schrab says down here…

Olivier wrote utils for converting shruthi patches to ambika format and it works like it should.

This is non-official trial-and-error windows method:
You’ll need Python 2.5 installed and path variable set.
There’s two scripts: first parses multiple sysex dumps of Shruthi patches to text strings, second converts text strings to Ambika patch structure.
Step 0. Put all shruthi patches you want to convert into one folder with python utils mentioned above. Create controller\\data\\programs2\\ subfolders.
Step 1. “python convert_shruthi_syx.py patch_1.syx patch_2.syx … patch_n.syx > shruthi_patches.txt” (it don’t likes spaces in filenames so check this first in case of error)
You should get something like this
Step 2. "python convert_shruthi_data.py shruthi_patches.txt"
It should execute with no messages and create 000.PRONNN.PRO files in controller\\data\\programs2\\ folder.
If it stops with some structure related error - look at the last *.PRO file created in controller\\data\\programs2\\ Next patch after it in shruthi_patches.txt is corrupt. Remove this string.
After successful conversion create folder named with free letter in PROGRAM\\BANK\\ (it can be C if you didn’t upload custom patches yet) on your Ambika SD card and copy all *.pro patches from controller\\data\\programs2\\ folder to just created bank folder.

I don’t know if it’s really a patch worth-sharing here, but I just happened to produce it quite randomly using 2 anushris (mine and one I had to repair as a trusted builder) and the sound was just otherworldly

Plug in midi and audio out to your soundcard from anushri #1
Plug audio out from anushri #2 to anushri #1 audio in, set filter #2 wide open and volume close to maximum. Don’t mix the DCO in, unless for “tuning”. But you can mix sub-osc. You can use LFOs, but keep them discrete.
Press “hold” so that anushri #2 starts playing a continuous note
Use patch cables and wire gate out from anushri #1 to anushri #2 gate in, and vco out from #1 to vco in #2.
Play a sequence on anushri #1. and adjust mix parameters, tune, fine tune and so on. Both anushris should play un unison or in interval, for an überfat, über-interesting sound already.
Engage “sync” on anushri #2…here comes the magic…

Since the DCO always plays the same note, the VCO #2 and subs are just following the sequence while syncing, hence creating a weird, sequenced drone, while style benefitting from the VCF and the VCA (and also the VCOs…) from the other anushri.
I believe that this can be reproduced on a single anushri with a small hack. It’s really worth trying. Otherwise, you need standard step-sequencer modules and stuff like that.

@schrab
hello i have tried to follow your step by step instructions, i use python 2.7.4 on Mac and i have the following message at step1

>>> RESTART
>>>
CRITICAL:root:Specify files
>>>

what i have done is to put my sysex with the two .py scripts in the same folder, and then i have created the controller\\data\\programs2\\ subfolders.

if you can help
thanx

@untoldlb you should run convert_shruthi_syx.py with .syx patch names as parameters. Look at step1 line and replace “patch_1.syx patch_2.syx …. patch_n.syx” with names of your patches separated by spaces and “>output_file.txt” at the end of line.

thank you, now that i read your instructions, it was obvious…

i have to enter the command in the terminal (on osx) or python.exe (windows) ? iin both cases, i failed to have it working correctly

If python is not associated with .py files run python.exe convert_shruthi_syx.py … path to python.exe should be in PATH environment variable.

thanks for creating a new discussion on this topic. i’m trying to convert the 128 patches from TubeOhm’s shruthi controller to ambika using schrab’s directions. i’m running python as a shell in os x terminal but not having any luck. Step 0 is done, i’ve eliminated spaces from Patch names (leaving the file name prefix #s btw), just getting errors and no data at Step 1. any suggestions? thx

@mjraybk more details please

@schrab thx, here are two examples… both executed from within a new folder containing olivier’s utilities, the files to be converted, and the sub folders you mentioned…

Python 2.6.1
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> convert_shruthi_syx.py 1-Wobbel.syx 2-ARP-ER.syx > shruthi_patches.txt
File “”, line 1
convert_shruthi_syx.py 1-Wobbel.syx 2-ARP-ER.syx > shruthi_patches.txt
^
SyntaxError: invalid syntax
>>> convert_shruthi_syx.py Wobbel.syx > shruthi_patches.txt
File “”, line 1
convert_shruthi_syx.py Wobbel.syx > shruthi_patches.txt
^
SyntaxError: invalid syntax
>>>

You invoke the scripts from the shell, not from within the python interpreter!

@pichenettes are you supposed to paste the file names somewhere within the utility file?

here is what i get when invoked from the Terminal shell
>>> exit()

iMac-3:shruthi general$ convert_shruthi_syx.py Wobbel.syx > shruthi_patches.txt
-bash: convert_shruthi_syx.py: command not found
iMac-3:shruthi general$

it seems to produce only an empty text file

@mjraybk try python convert_shruthi_syx.py Wobbel.syx > shruthi_patches.txt
(edited tut post)

@schrab thanks, your suggestion worked for Step 1. i was able to create the shruthi_patches.txt file. Step 2 is producing errors though. ive removed some corrupt strings as suggested but only made it up to 85 out of 128 patches. not sure if i removed the correct strings, here is the info from Terminal:

iMac-3:shruthi general$ python convert_shruthi_data.py shruthi_patches.txt
Traceback (most recent call last):
File “convert_shruthi_data.py”, line 550, in main(options, args)
File “convert_shruthi_data.py”, line 535, in main patch = BuildAmbikaPatch(ShruthiPatch(data)) File “convert_shruthi_data.py”, line 330, in init
’destination’: SHRUTHI_MOD_DESTINATION[bytes[i * 3 + 33]],
IndexError: list index out of range

This was a “write once, run once tool” - it might not have been kept in sync with changes in the Shruthi-1 feature set!

@mjraybk keep removing strings until you find unhandled and script will run silent. As i remember there’s only two unhandled patches in Tubeohm’s bank.