NEW “PRODUCT” ANNOUNCEMENT
The team that brought you* the CoCoPilot DriveWire Server is proud to announce their latest innovation:
Sir Sound is a solid-state multi-voice audio synthesizer that operates over a serial transport mechanism**. It provides arcade-quality*** sound with up to three independent tonal voices plus one white noise channel all in an external module that doesn’t require voiding your warranty to install. In fact, you won’t even need tools!
Pricing is to be announced but hopefully it will be around $50. Or maybe $30. Or cheaper. Or less if you build it yourself. Heck, we’ll probably just make kit versions available since we don’t really like to solder.
Sir Sound Configurations
- Turnkey – This is a “plug and go” version where you just plug it in and go. No special drivers are needed, as they are already built in to both BASIC and OS-9.****
- BYOE – The bring-your-own-everything edition is shipped as a set of simple instructions containing a parts list and how to run wires between the parts.
- Custom – Also planned to be available are various custom configurations, like what color of case it comes in.
We estimate the thing is gonna cost us, like, ten or so bucks to make using off-the-shelf parts ordered in small quantities from China. But, to make it a product, we really should have an integrated circuit board and a case made, which will run the costs up dramatically. Rest assured, we’ll pass those unsavings along to you!
The first prototype is in the process of being tested. Quit rushing us. We’ll let you know when it’s done.
You kinda have to use some micro-controller since the sound chip turns on and starts making sound. Something has to issue the “shut up” instruction to it. If you just had hardware to translate a serial byte in to the command, and made the CoCo do all the work, the CoCo would have to load and run a program to shut the thing up every time you powered up. Fortunately, a custom-built Arduino that handles this can be done for like $5. There are cheaper PIC chips that could do it for less.
Then, you add a MAX232 type chip that goes from the TTL signal levels of the Arduino to RS232 signal levels, or using one of these $3 (or less) boards that’s already wired:
Lastly, add a CoCo serial cable (4-pin DIN to DB9), and you are set.
A small program on the Arduino will monitor the serial port for bytes and then relay them to the sound chip.
By doing some POKEs in BASIC to set the baud rate, you could make music by doing things like this:
REM PLAY MIDDLE C PRINT #-2,CHR$(&H8E);CHR$(&H1D);CHR$(&H90); FOR A=1 TO 1000:NEXT A REM VOLUME OFF PRINT #-2,CHR$(&H9F);
The notes always play, so you shut them off by setting volume off. There are different channel values for each of the four channels.
I envision having a “raw” mode where the device just translates the bytes from serial to the sound chip, and a “smart” mode where you could use an API and just send note values (like 1-88 of a piano keyboard, or MIDI note values).
“Smart” mode could simplify the control so it might look like this:
REM ALL DATA: PLAY CHANNEL 0, NOTE 10, AT VOLUME 15 PRINT #-2,CHR$(&H00);CHR$(&HA);CHR$(&HF); REM NOTE ONLY: PLAY CHANNEL 0, NOTE 10 PRINT #-2,CHR$(&H01);CHR$(&HA); REM NOTE ONLY: PLAY CHANNEL 1, NOTE 10 PRINT #-2,CHR$(&H11);CHR$(&HA); REM VOLUME ONLY: CHANNEL 0, VOLUME 5 PRINT #-2,CHR$(&H20);CHR$(&H5);
And, I could also add a “super smart” mode where it could parse PLAY command-style strings, then spool them in the background while you do other things:
REM PLAY COMMAND, CHANNEL 0 PRINT #-2,CHR$(&H30);"CDEFGAB";
And, a “super super smart” mode could let it store string sequences, and play them by triggering with a simple byte:
REM STORE NOTE SEQUENCE 0 PRINT #-2,CHR$(&H40);"CCDCECFECCDCECFE";CHR$(0); REM PLAY NOTE SEQUENCE 0 PRINT #-2,CHR$(&H50); REM PLAY NOTE SEQUENCE 0 FIVE TIMES PRINT #-2,CHR$(&H55);
…or whatever. You could sequence them together, like MIDI sequencers do, and have complex patterns that could play in the background while the program does other things.
There are lots of possibilities. We could even see about using the Carrier Detect line as a way to tell if the sound card was still playing something (rather than needing routines to read data back from the device, which would be doable but not from BASIC without assembly language code).
If this “sounds” fun to you, leave a comment…
* If you call making a blog post “bringing it” to you.
** It plugs in to the Serial I/O port. “Sir” sounds like “Ser”, get it? Marketing thought SerSound wasn’t friendly enough.
*** This part is true. The same sound hardware is used in the arcade mega-hits Congo Bongo and Mr. Do, among others.
**** PRINT#-2, yo.