Controlling analog synths with computers (fwd)
gstopp at fibermux.com
gstopp at fibermux.com
Thu Nov 21 23:25:37 CET 1996
<mock indignant tone mode on...>
Oh sure write system clocks and program changes and sysex bytes all to
your note CV DAC. OK just restrict your MIDI stream to note data. Now
write the status byte then the note number then the velocity to your
DAC, all within a millisecond, and leave the DAC value at whatever the
last velocity was. Screw the notes.
Nice MIDI-CV algorithm, guys.:)
I want my MIDI-CV converter to comply fully with the MIDI spec. I want
my MIDI-CV converter to parse the MIDI data so that I can plug it in
to a sequencer's output and have it only pay attention to the messages
that it's supposed to, and ignore those meant for other devices. My
code does that - real time, system, channel, running status, all that.
Handled properly, with recovery from invalid or incomplete messages
even. It is not complicated but it is not pathetically limited either.
I want function calls and structured programming. I want labels and
variables and operations in English. I want program flow and
readability. I don't want spagetti assembler code. I'm not afraid of
it, I grew up on it, I am above it.
Okay QuickBasic is a humorous language. I stand embarrased by that,
you got me. But it's standard on any PC you walk up to, assuming it
has fairly recent DOS. It's structured, it has user-defined functions,
and it's real damn easy to get something done, goddammit. Quickly,
goddammit.
I've ported the algorithm over to C, and it works fine. There's no C
compiler on my XT, and I don't even have it on 5 1/4" disks, and I
don't think I'll find it on 5 1/4" disks. The XT has 360K drives. So I
use what I've got, sue me.
If you ask me, defending a 4 meg XT that's *a hundred* times slower
than a motherboard you can get for twenty bucks is where the funny
part of all this is.
<mock indignant tone mode off...>
Seriously, guys, I'd love to discuss MIDI parsing. What I've done I
made up myself, and it works great, but I've never even had a
meaningful conversation about it with anybody before. For all I know
there's an easier way and I'd like to compare notes (pun intended).
- Gene
gstopp at fibermux.com
______________________________ Reply Separator _________________________________
Subject: Re: Controlling analog synths with computers (fwd)
Author: "J.D. McEachin" <jdm at synthcom.com> at ccrelayout
Date: 11/21/96 12:42 PM
The Master hath spoken:
---------- Forwarded message ----------
Date: Thu, 21 Nov 1996 13:15:19 +0000 ()
From: Neil Bradley <neil at beacon.synthcom.com>
To: "J.D. McEachin" <jdm at synthcom.com>
Subject: Re: Controlling analog synths with computers
On Wed, 20 Nov 1996, Gene wrote:
> > I made an 8-channel DAC on a PC parallel port. I just got it finished
> > The PC is an XT with an original Roland MPU-401 MIDI interface. The
> > code is some QBASIC hack under DOS that parses the incoming MIDI data
> > and writes out to the DAC. MIDI channels 1 thru 8 go to DAC outputs 1
QBASIC!??!?!?!
> > I have discovered that the XT is too slow for this application. I can
The XT isn't too slow. It's just his programming skills are woefully
inadequate. Try assembly - works great! Even an XT can keep up with a
31.5Kbps link.
Something like this would work wonderfully on an XT:
noData:
mov dx, [mpu 401 control address]
in al, dx
test al, [mpu 401 bit indiciating receive has happened]
jz noData
mov dx, [mpu 401 data address]
in al, dx
mov dx, 0378h (or 03bch, or 278h - parallel port address)
out dx, al
jmp noData
Quite honestly, there's less programming here than there would be in
writing a Quick Basic program. ;-)
I didn't do anything (like parse the incoming stream or whatever) but
we're not talking about a buttload of work, here. ;-)
-->Neil
More information about the Synth-diy
mailing list