Close

OK Then, Let's actually build SOMETHING.

A project log for Project Seven

Bringing deep learning to platforms such as the Raspberry Pi, Parallax P2, or maybe an Altair 8800 for general robotics and other things.

glgormanglgorman 04/06/2023 at 20:130 Comments

Some stuff that might actually turn out to be useful

If you have access to a genuine Altair or a full-size replica, that would be awesome - but fortunately, it is not a requirement.  That is because Altair emulators can be run on any Arduino. However, I haven't looked into whether an Arduino can handle the 31250 bps data rate of standard MIDI AND still talk to another device over a USB dongle at the same time.  If it all works out well, hopefully, it will turn out to be possible to turn a bare 328P chip, without the Arduino base into a full-fledged MPU-401 compatible sequencer, that just might be able to run "stand-alone" or while tethered to an attached PC.  Or there is the Z-80 route.  Of course, if you want to try the "real Altair" route, then it will be necessary to obtain a vectored interrupt board, in addition to a board with hopefully at least two working UARTS.

Now if you can lay your hands on one of those game-port MIDI cables that came with every Soundblaster ever sold, back in the day, then you are also way ahead of the game, as far as that part of the project goes, and that is because those cables usually have the required optoisolators built into the cable, which saves us some work.  An old standard PC joystick might be fun to mess around with also.  So get busy scavenging your junk drawer.

Then on the software side, it would also be nice to have something that runs on the PC side that just might make, well, whatever hardware we end up using, actually do something interesting, like playing music or running a new and improved version of "Lunar Lander", or whatever.  The fact that the MIDI protocol is sometimes used in robotics, whether in an industrial capacity or in some entertainment-animatronics applications, should not go unnoticed, either.  Thus whether we end up with a musical device that might be tethered to a DAW, or whether it is capable of running standalone as a true sequencer, remains to be seen.  Yet that is also one of the goals of this project.

Of course, I want to get it up and running on the Altair, and have some kind of application running on THAT machine, just for the sake of the coolness factor.  These machines are certainly capable of doing much more than just playing "kill the bit", or running BASIC as a demo.  So some assembly language work will need to be done, for the custom stuff that is yet to be accomplished.  Yet nonetheless, for convenience, most of the development will be done in C/C++ on a PC, with an eye toward writing compatible code that will also, eventually compile and run on any of a number of microcontrollers.  

Now as far as instant gratification is concerned, reading data from a USB to RS-232/TTL convertor at one speed, such as 231 kbps, and then repeating them at another speed, such as the 31250 MIDI rate, seems like a simple enough task. Hopefully, it is also one of those things that can be done pretty much as an afternoon project.  That is, once all of the hardware is hooked up, and the toolchain is configured.  Since like I said, that part will mostly be just reading some data, and then writing it, either in a loop or ideally with interrupts.  Yet, once we get to that point, all kinds of new, interesting, and hopefully fun possibilities should emerge.  Like sequencing, or using pitch detection software to control a vocoder, which would be a separate device (they exist).  Yet, we will be doing this stuff using the Arduino or Altair-based MIDI, and that will give us some very fine-grained control of things that we can't otherwise do with traditional (read: commercial) DAW software - especially in a live environment.

Of course, on the side of economic factors, last time I checked, a 328P microcontroller can be hand for just a few dollars, that is, without going the fully Arduino route - which suggests to me something that might be very important in an educational environment, and that is the cost per student, as far aa lab-fees and the like are concerned.  You see, while some chips like the Propeller or the Pi can be reprogrammed, ideally, an "infinite" number of times, when you take into account the fact that the Atmega chips rely on a build-in EEPROM that can "only" be flashed about 10,000 or so times, imagine in an educational environment, where 100's of students are sharing the same equipment, and where each student might be doing 100's of compile-test-verify cycles every lab period, and I don't really know therefore, just how quickly they will wear out if they are constantly being reprogrammed.  So maybe in an entry-level lab, it would make sense to have the required oscilloscopes, logic analyzers, power supplies, etc., be provided by the institution, while at the same time, the 328Ps might be considered "consumables", that could be paid for out of "lab fees", or otherwise "provided" for students to "keep" at the end of the course., according to the type of program.

So here is an interesting question:  How many people really need another clock or calculator, or lawn sprinkler controller, even though those things are very doable?  Then again, how many people would want to have some pre-programmed riffs that could be uploaded into their favorite drum machine?

O.K., then, let's get back to bit-bashing.

Discussions