Hi friends,
following creativespirals work on the voice component modelling I was again intrigued by the massive capabilities hidden in the Rev2. I am not a great sound designer, so I am very interested to understand what others are doing as I want to learn.
I am though a computer programmer by profession, and might not be the only one here. I had an epiphany lately when I looked at the complexity of the VCM setup required, and the less than optimal accessibility of the gated sequencer: We should be able to program the Rev2 with a real programming language, with the help of a computer editor! This would make complex operations on patches a breeze, and could also allow for much quicker testing of VCM setups with different patches.
I repurposed some code I had written two years ago on a tool helping me with the Rev2 (clear poly sequencer, copy poly sequencer to gated sequencer, the like), and now have an environment where I can do real synthesizer programming!
An example on the python console:
>>> from pytschirp import Rev2Patch, Rev2
>>> rev2 = Rev2()
>>> rev2.detect()
Found DSI Prophet Rev2 on channel 6 replying on device Port 1 on MXPXT when sending to Port 1 on MXPXT
I know have a rev2 object, and it has connected to the real device automatically figuring out on which MIDI device it can talk to (round-trip) to the real Rev2.
Now you can do interesting things:
>>> patches = rev2.loadSysex(R"ProphetRev2\VCM-Sound Set\VCM-Rev2-Soundset-U3-v1.syx")
>>> patches[0].name
'KEY ResoPluck VCM[+]'
>>> seq1 = patches[0].attr('Gated Seq Track 1 Step 1,16').get()
>>> seq1
[17, 13, 18, 17, 25, 16, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0]
So I can use the python console to load a patch bank from a sysex file, and inspect e.g. the track 1 of the gated sequencer of patch 0 (and the name of patch 0) in an easy way. But it doesn't stop there:
>>> nowplaying = rev2.editBuffer()
Got edit buffer from synth
>>> nowplaying['Gated Seq Track 1 Step 1,16'] = seq1
and now I coped single-handedly (well, nearly single-line'dly) the gates sequencer track 1 loaded from a patch stored in a sysex file on disk into the one playing right now in my Rev2 - you get the gist! The assignment operation above will generate the right number of MIDI NRPN messages to modify the Rev2's edit buffer so the gated sequencer track is set to the variable's content.
I feel this is a big step and I can now use the full power of abstraction when talking to my rev2.
All of the code I made available as OpenSource on github (
https://github.com/christofmuc/pytschirp), and I am working towards a little precompiled program to make this a bit more accessible to everybody. This is a work in progress and I will work more to document how it actually works.
I would be interested if this is of any interest to somebody of the great folks here?