Controlling analog synths with computers (fwd)

Magnus Danielson magda at it.kth.se
Fri Nov 22 11:36:04 CET 1996


> At 02:25 PM 11/21/96 PST, gstopp at fibermux.com wrote:
> >     <mock indignant tone mode on...>
> 
> Uh oh, brace yourselves for the battle royale between the hardware and
> software dudes...



> >     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.:)
> 
> Ummmm, doesn't the 401 have some prefiltering capabilities built in?  I'm
> not a PC kind of guy (in more ways than one), but I'm pretty sure it does.
> I've heard Neil talking about hacking 401 drivers to run several 401 boards,
> some of that knowledge filtered in, but I'm no expert...

There is some coarse prefiltering functions in there... allowing you yo filter
out groups of commands (Common, Realtime, Sys-ex, Mode messages and Bend 
messages) if those are not sufficient you have to do it yourself to some 
extent.

Note, this is in the true MPU-401 boards, and not in those "MPU-401 Compatible"
stuff that only does the UART mode (like many soundcards do).

> >     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.
> 
> Neil wrote the MIDI parser in Europa (and rewrote it when he failed to fully
> consider the implications of system real time messages), so I'm sure he's
> aware of this...     

There are some opportunities to mess things up, wonder what caused him the
problem...

> >     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.
> 
> You don't have to be embarassed about it - it's good for prototyping, coming
> up w/ UIs, etc. - I just don't think it's the ideal REALTIME environment.

I agree on this, just throwing a fast hack in BASIC is still enjoyable even
thougth I do C, C++, LISP, Assembler and others...

> >     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.
> 
> Don't you have a compiler on your "real computer" that you use?  Set some
> switches for 8088 compatibility, maybe?
>  
> >     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...>
> 
> No apologies necessary.  My hat is off to anyone that can make a boat anchor
> make cool noises!

Is that an inventation to do minor miracles? Major ones take just a little bit
longer...

> >     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).
> 
> Shhh! Those are TRADE SECRETS, man!  We can say anything bout that!
> 
> ;-}
> 
> State machine is the best way to do it.  I've seen it done in hardware, and
> software.  Pass the realtime messages, go into another state for sysex and
> running status...I guess I should look at this source code sometime...

The kind of state machines that the MIDI would need is quite easy to make in
software, if the stuff was more difficult we would need to use tools like LEX
and YACC (and I know people that wounln'd like that idea :).

> Sorry, I'll admit, I'm NOT an expert on MIDI parsing.

You learn as you live... I'm not an expert either... OK, it's out... :)

Magnus




More information about the Synth-diy mailing list