I decided to press the midi code and see what it could do. I ended up writing an Expressionmate to CV program. The Expressionmate will output a full 14 bits of pitchbend so I mapped this to a +5V center with +/- 5 volts of swing. I had to accept running status so I wrote a midi command parser. I threw some sample code into the note on and note off that would convert to CV and pass through to midi out. This code doesn't yet handle multiple key presses/releases. I also assumed the midi stream was well behaved and wasn't inserting real time messages in the middle of the data stream other than active sensing. The PSIM seems to handle the data rate from the Expressionmate pretty well. I've uploaded the alpha version to the midi folder. Anyone else have an Expressionmate and a PSIM? Let me know how it works. I haven't decided where I want to evolve this program yet. I also used the serout to send data back to the console for debug since the debugger is useless with interrupts. It turns out that interrupts also mess up the serout timing so you have to disable interrupts to pass messages to the console for debug. Dave --- In SynthModules@yahoogroups.com, "djbrow54" <davebr@e...> wrote: > My initial thoughts were to keep my modular system all analog. The > other side of the room is full of digital stuff. I even drive my > modular with an Arp CV keyboard. However, having the PSIM has been a > lot of fun and Brice got me thinking about using the PSIM to > interface my Roland SC-7. It's a small self-contained GM synth. > > I originally wanted to verify the MIDI functionality as I was > designing my own panel and wanted to get everything included that > would be useful. I ended up with MIDI in/out, 4 CV controls, and a > SpeakJet. I have a picture of it in the photo section. > > The code I have running is basically the input and output drivers. > The input is interrupt driven into a ram buffer. Since this is > running at a 31.5 kbaud, data is received every 317 uS it has to be > interrupt driven and buffered. I didn't worry about driving the > output via interrupts as I figured the code would take probably that > long to generate the next data byte. > > Most of my programs are midi out. I've used midi-in code to remove > real-time active status bytes from the midi stream. > > For midi output, Brice wrote a couple of programs that I have > adopted. The one I like best simply converts CV to MIDI. Nothing > real fancy but it allows CV control of note, octave, and program > change. You can get some real interesting patterns going driving a > GM synth with 4 LFOs. I have a program now that I'm working on now > that has 5 digital counters that I multiply by the input CVs, sum, > and drive the GM note and program. > > I've modified the CV to midi program to quantize the input CV and > watch for changes. Whenever I see a change I generate a trigger > pulse, gate, and midi data for the GM synth. I get some really neat > glissandos with it. > > The SpeakJet takes 9600 baud data so I also drive that with the PSIM. > I've written a couple of programs that output phrases based on CV > inputs. I've even taken the output of the SpeakJet as input into my > Vocoder. That was interesting. > > In order to play with the SpeakJet to build phrases, I needed to use > the PhraseAlator program. This wants to talk directly to the PSIM so > I adapted my midi code to receive serial data from the PC. I made an > adapter (just a diode and resistor) to connect the RS-232 cable to > the midi in. I adjusted the code for 2400 baud input so I wouldn't > need flow control to the PC. The program simply takes the SpeakJet > data stream from the PC via the midi in port, buffers it, and > redirects it to the SpeakJet. > > Adapting the receive buffer from the midi code, I wrote a program > that samples trig, gate, and cv, and stores the timestamps. Then, > via timer interrupts, outputs the same signals at a variable delay. > This program is really neat. I drive one VCO with the keyboard > signals and another with the delayed signals. I've limited the > program to a max of 3 seconds but there is no reason it couldn't be > 300 seconds. I also wrote an arpeggiator program which is an > adaptation where I output user defined and predefined sequences based > on a root note. > > Just for grins I wrote a dual J-K flip flop with preset and clears. > Just the thing you need for complex gating and triggering. This > evolved into a user-defined 4 counter program that generates up to > 256 stage pseudo-sequences that I use to drive CVs. This is what I > am currently adapting for driving the GM synth. > > Continuous back to back midi data streams really stress the PSIM data > processing rate but it will process the data as fast as I can play it > on a keyboard. Adding timer interrupts puts it right up against the > processing limit as far as I can tell. > > It's a wonderful fun module that has really provided much more > capability than I ever thought. I'm having fun building long > self-running sequences that include my Roland SC-7 as well as all my > modules. In fact, I have adapted my Roland to a 1U MOTM panel so I > can install it in the same cabinet. > > I also have a Kurzweil ribbon controller and want to write the > program to convert that midi stream to cvs. I haven't gotten to that > yet. > > Dave > > > --- In SynthModules@yahoogroups.com, Larry Hendry <hendrysr@y...> > wrote: > > Dave, I do not yet have my PSIM. So, I am still rather uneducated > as > > to what it will do in many aspects. I am particularily interested > in > > what data you are communicating with the MIDI in and out ports. Is > > this just real time data? Or, have you manipulated the MIDI ports to > > input or output code or values in the code? What kind of > > communications are possible at the MIDI port. My dream would be > that > > PSIM programs could be exchanged like a sysex file via the MIDI > port. > > Of course, that may be a pipe-dream. > > Larry Hendry (extremely code stupid) > > > > > > --- djbrow54 <davebr@e...> wrote: > > > I've interfaced my PSIM both to the SpeakJet and with MIDI in and > > > out, both of which are serial interfaces using J3 and J5. It > would > > > be quite easy to add RS-232 drivers to either of these > connectors. > > > J5 would be better since the serial communications is done in > > > hardware. My PSIM Template code in the code fragments folder > > > already have the serial input and output code. You would just > have > > > to change the baud rate from MIDI to whatever baud rate you > wanted.
Message
Expressionmate (was Re: Data Storage from PSIM)
2004-06-18 by djbrow54
Attachments
- No local attachments were found for this message.