Category Archives: SirSound

Extended Color BASIC plays non-existent notes.

Just for fun…

When I was working on my SirSound project, I had to create my own implementation of the Extended Color BASIC “PLAY” command. I did this by going through the Extended BASIC Unravelled book and looking at the 6809 assembly for the command.

I made a workalike function in C for the Arduino:

https://github.com/allenhuffman/PlayParser

…and while doing so, discovered an interesting thing about the PLAY parser and how it handled the notes.

The PLAY command operates by reading a command followed by an option modifying. For instance, “V10” is the command “V” for volume, and a modifier “10” for volume level 10. “T8” is command “T” for tempo and “8” for the speed.

When it comes to playing musical notes, PLAY understands the standard scale notes of C, D, E, F, G, A and B. When it parses a command letter, it then looks to see if a modifier is after it. The modifiers include “#” and “+” for sharp, and “-” for flat.

This allows you to play the full 12 note scale:

Using sharps: C C# D D# E F F# G G# A A# B (or C C+ D D+ E F F+ G G+ A A+ B)

Using flats: C D- D E- E F G- G A- A B- B

These notes correspond to the notes found on a piano keyboard:

Piano keyboard, one octave.

I don’t understand music theory, but I know enough to say the white keys are the natural notes (CDEFGAB) and the black keys are a half step in between and are either sharps of the note before it (C# D# F# G# A#) or flats of the notes after it (Db Eb Gb Ab Bb). There is no E# or Fb or B# or Cb on a keyboard.

But, the BASIC PLAY parser does not add any code to prevent you from playing them anyway :-)

  • PLAY “E# F” (E sharp and F natural) will play the same note.
  • PLAY “E F-” (E natural and F flat) will play the same note.
  • But you can’t PLAY “C-” (C flat) or “B#” (B sharp) because it knows to reject those modifiers from the notes at each end of the scale.
CoCo can play notes that are not on a piano keyboard :-)

To me, this seems like a bug, but I implemented in my PLAY PARSER code anyway, just in case anyone used it. But since I lack any music theory background, I am probably wrong, as I have been told there is a reason for this.

For for someone like me with limited music background, it seemed like an odd thing to stumble upon in the code. I even documented in my SirSound documentation:

NOTE
—-
N (optional) followed by a letter from “A” to “G” or a number from 1 to 12.
When using letters, they can be optionally followed by “#” or “+” to make it
as sharp, or “-” to make it flat. When using numbers, they must be separated
by a “;” (semicolon).

C C# D D# E F F# G G# A A# B (sharps)
1 2 3 4 5 6 7 8 9 10 11 12
C D- D E- E F G- G A- A B- B (flats)

Due to how the original PLAY command was coded by Microsoft, it also allows
sharps and flats that would normally not be allowed. For instance, E# is the
same as F, and F- is the same a E. Since notes are numbered 1-12, the code
did not allow C- or B#. This quirk is replicated in this implementation.

SirSound documentation.

Ah, the things that amuse those of us without the brainpower to understand them.

Until next time…

CoCoPilot DELUXE: CoCoWiFi + SirSound + DriveWire + CoCoPi + More

Updates:

  • 2019-05-10: Added a link to CoCoWiFi article, and uppercased DELUXE.

TLDNR: See the video at the end.

In 2015, Sub-Etha Software rocked the retro world with the announcement of CoCoPilot. (And by “announced” I mean “posted a blog article about how to install DriveWire on a Raspberry Pi. And by “rocked” I mean “posted a block article about how to install DriveWire on a Raspberry Pi.)

SirSound and CoCoWiFi product flyer.

In 2017, Sub-Etha Software raised the bar again by announcing SirSound, the serial port multi-voice sound “card” for the CoCo. (And by “raised the bar” I mean “posted another blog article”.)

In early 2018, Sub-Etha Software released details on CoCoWiFi, and showed you how to build your own for under $10 instead of waiting for Sub-Etha Software to actually manufacture them. (And by “released details” I mean “posted yet another blog article”.)

PreciousPak concept artwork.

In late 2018, Sub-Etha Software shocked the CoCo Community with the proposal to end all proposals: PreciousPak. (And by “shocked” I mean “posted a block article about something I think would be really cool but don’t have the hardware skills necessary to make happen so I hope someone else will do the work for me, please and thank you”.)

And now, in 2019, Sub-Etha Software is proud to announce…

CoCoPilot DELUXE

CoCoPilot DELUXE is the result of dozens of man-minutes of thought on the subject of “what should I do with all the Raspberry Pi stuff I have on my desk?”

Much like how PreciousPak solves all our problems when it came to CoCo cartridge add-ons, CoCoPilot DELUXE strives to solve all our problems when it comes to CoCo bitbanger serial port add-ons. (And by “solves all our problems” I mean “wouldn’t this be fun to play with?”)

With CoCoPilot DELUXE plugged in to your CoCo’s built-in Serial I/O port, you will have:

  • WiFi Modem – Use any existing CoCo terminal program, and be able to telnet, ftp, etc. to internet servers just as easily as you used to call in to dial-up BBSes in the 1980s.
  • SirSound – Use the simple BASIC “PLAY” command strings that you already know and love, except add a “#-2,” and change PLAY to PRINT, and then you can play multi-voice background music while your BASIC program does other things.
  • DriveWire Server – Use NitrOS-9, SDC-DOS or the special DriveWire version of HDB-DOS to access virtual floppies over the serial port. Under NitrOS-9, you also have access to other DriveWire features such as virtual printing, virtual MIDI, and virtual reality. Except maybe not that last one.
  • Print to PDF – Print from any CoCo program (including graphics programs such as CoCoMax, ColorMax, Max-10 and Max Headroom) and have the dot matrix output be rendered as a PDF file you can then print on a modem printer. It can even print the old green bars and fake tear-off strips with the holes in it, just like the olden days!
  • CoCoPi Emulation – This portable device can also be expanded with an option USB keyboard, USB mouse, and HDMI monitor to act as a virtual CoCo running various Color Computer emulation programs.
  • …and more!

In this list, there are a few “new” things we can’t currently do. Printing from CoCoMAX 3, Tandy Home Publisher or any other graphical print software is not currently possible (is it?). A new layer would be written to interpret common printer “driver” codes (Tandy, IBM, Epson, etc.) — including color — and render the incoming data to an image that represents all the dots the printer would have printed. (Heck, we could even emulate the old plotter printer thing.)

SirSound could work the same as the hardware SirSound (API compatibility), but could be expanded to do more voices, and use better sounds. The Pi has simple libraries that can product multi-voice music.

WiFi Modem would be similar to the CoCoWiFi (Zimodem) project, but the “AT” Hayes Smartmodem commands would be different since we’d just use one of the many “serial to network” programs/scripts readily available.

All we need is a bunch of software, an RS-232 interface for the Pi, and some switches to select which mode you want the CoCoPilot DELUXE to be in.

Spiffy.

Sub-Etha Software announces more 2018 Chicago CoCoFEST! plans

FOR IMMEDIATE RELEASE:

Sub-Etha Software announces more 2018 Chicago CoCoFEST! plans

Des Moines, Iowa – March 14, 2018 – Iowa-based Sub-Etha Software reveals more plans for the upcoming 2018 27th Annual “Last” Chicago CoCoFEST! to be held April 21 and 22, 2018 at the Heron Point Convention Center in Lombard, Illinois.

“The biggest news,” says Sub-Etha co-founder Allen Huffman, “is that we will have Jolt Cola to drink during the road trip to Lombard, and maybe enough extra to share during the event.”

Among the new offerings at this year’s event will be CoCoWiFi, an inexpensive internet modem device that allows connecting the CoCo up to a WiFi network for accessing remote internet sites using telnet and other protocols. Both fully assembled and do-it-yourself kits are expected to be available, with pricing to be announced at the show.

CoCoWiFi is pretty cool,” says Huffman. “It looks like an old-school Hayes Smartmodem and can be used on any model Color Computer with any terminal program. If the MC-10 has a terminal program, I bet it would work there too. The best part about it is if you don’t wanna buy it, you can spend about $10 and put one together yourself without any soldering. But we’ll be glad to sell you one for much more than that.”

Another new offering will be SirSound, the serial port multi-voice sound device. SirSound provides (1980s) arcade-quality background music and sound effects from BASIC. It uses built-in commands with no assembly language or special drivers needed.

“SirSound is one of the funnest things I have ever worked on this month,” adds Huffman. “You can play the Frogger theme song just by typing a PRINT command. I expect it could also play the Pac-Man theme, too, but we haven’t tested that, yet.”

SirSound is still under development, as well as SirSound S (6-voices in stereo), SirSound Plus (SirSound with the ability to play stereo digital files) and Sir Sound S Plus. There will also be an open-source SirSound Jr project made available. It will have the most of the same features as SirSound, but will be limited to just 1-voice tone music. Beep beep.

“We also will have a selection of new-old-stock Sub-Etha items in original packaging for those who like to collect useless 5 1/4: floppy disks with photocopied instructions stored in plastic baggies. Of course, master disk images of all this stuff has been uploaded to the Color Computer Archive and will be available for free, too.”

Be sure to drop by Sub-Etha Software’s table in the main exhibitor hall during the event.

About Sub-Etha Software

Sub-Etha Software was founded in Lufkin, Texas in 1990, as a partnership between Allen C. Huffman and Terry S. Todd. It made it’s first CoCoFest appearance at the First Annual Atlanta CoCoFest in 1990, and it’s first Chicago CoCoFest appearance at the First Annual “Last” Chicago CoCoFEST! in 1992. They may be contacted online at www.subethasoftware.com

About the Chicago CoCoFEST!

The 27th Annual “Last” Chicago CoCoFEST! is sponsored by the Glenside Color Computer Club of Illinois. They may be contacted online at www.glensideccc.com.

Contact:
Allen Huffman
alsplace@pobox.com
PO Box 7634,
Des Moines, Iowa
U.S.A.
Ph: 515-999-0227

###

SirSound video demonstrations

One year ago, on March 9, 2017, Sub-Etha Software announced the Sir Sound CoCo Sound Card, today referred to as SirSound, without the space. Today we present to you the first public demonstration of the project.

SirSound demo 1- introduction

This 7-minute video walks through the basic concept of the device, and shows how easy it is to convert BASIC “PLAY” music to use the SirSound device.

SirSound demo 2 – polyphonic music

This 4-minute video shows how multi-voice music will be handled. It demonstrates 3-part harmony, and also a quick version of the Frogger arcade game theme music, all from BASIC.

More to come…

CoCoWiFi and SirSound project updates

Things have been real busy lately at Sub-Etha Galactic Headquarters… Here are some updates:

CoCoWiFi

The CoCoWiFi has been tested on the bitbanger serial port and things seem to work just fine.

On the RS-232 Pak, a modification was needed to make the pak actually receive data (forcing the carrier detect signal). This has been done by an easy soldering mod to the DB9 connector. The downside is that it does not provide true CD, and there is no support for hardware flow control or DTR to drop calls. For just a bit more, there are RS232-to-TTL adapters that provide hardware flow control, which might help for doing high speed transfers. However, the lack of carrier detect and DTR means they won’t work with a BBS like they should

Thanks to David Chesek, new RS232-to-TTL adapters were located that include all the signals. These would be the best choice for running with an RS-232 Pak. I have two different types of adapters, but have only done some initial testing. I was unsuccessful getting the first adapter to work. I plan to test the second version this week.

I hope to have a hardware announcement to make before the CoCoFEST!

SirSound

I learned much while working on CoCoWiFi, so I returned to work on the previously “announced” SirSound project. I got everything wired up properly and was able to write a BASIC program to make it play tones. I also worked with John Strong and migrated the prototype over to an Arduino Nano (matching the original Arduino sound player board he sent me last year).

The next phases is to figure out the various modes that sound module will run in. I have proposed:

  1. Direct. This mode just passes bytes to the sound chip, the same way you might do with a POKE command if it was a memory-mapped chip. BASIC is very slow at ANDing and ORing bits to make the messages, which is how my test program works, but this could be heavily optimized. This mode is mostly here to allow someone to port over code that was written for one of the other platforms that use an on-board SN76489 sound chip, though some of the bit-blasting players would probably not work as well over slow serial.
  2. PLAY. This is the BASIC mode, that will simulate the PLAY command. You will be able to send a string of notes to SirSound and play them just as easy as in EXTENDED COLOR BASIC. There are a few things that have to be adapted, like support for the multiple channels of audio, and sub-strings. Last year, it was suggested to look at the MSX computer’s PLAY command for examples of how Microsoft did this very thing. I may follow that syntax. MSX also ads a PLAY() function that can tell is background audio is in progress, and we will be able to achieve the same results using the Printer Read/CD signal on the bitbanger port. I plan to also add some sequencing extensions so repeating music loops don’t have to be sent over and over again.
  3. Optimized. This mode would be for assembly programs, and would pack data into 8-bit values rather than longer ASCII strings.
  4. Interactive. I am planning on having a shell/command-line interface (CLI) available which could be accessed. It would be used for testing the device without needing to write a BASIC program.

More to come…