An oldschool hardware & software synthesizer/playground

Similar projects worth following
Chiptunes -- music for old 8-bit consoles and computers -- are a fun way to explore nostalgia, history, interesting sounds, and limited hardware. There are numerous tools out there to write them, many of them good. So why another tool?

In 2012 I released Pretty Eight Machine, a Nine Inch Nails tribute on eight different 8-bit systems. Several fans asked if I could release it on cartridge or tour with it. The issue: The wide variety of hardware used to produce it made it very hard to carry all of that as a one-man act.

At first I solved the gear problem the "easy" way. I carried a laptop with my hacked-up music tools, which keep my composition environment the same no matter which system I use. But they're emulators. I wanted to take real gear on the road.

To that end, I'm building a modular gig box that contains up to eight sound configurations and software to drive it. This enables me to get closer to the hardware than ever before.

CTM encompasses a hardware and a software element.

The hardware element is comprised of the component listing in the project page. The board accepts commands over USB and directly signals whatever soundchip you load the board up with. The boards are technically called Retro Soundinators - we kinda just made up a name when we designed the board and rolled with it. 

There is firmware for the 32u4 that handles communication as well as the identification of the board on the USB host. For this to work, we match the descriptor in the driver code with the descriptor that the software is expecting. The software is then able to detect each board that is plugged in on startup as well as hotplugging new boards.

The tiny85 simply handles clock division. Sometimes in a computer or console, clock division will happen elsewhere, or sometimes it's easier to just divide a clock for a crystal you already have a bunch of. Either way, setting this divisor is doable in the tiny code, and it is recommended to use an even number. Odd numbers seem to work, but not necessarily with predictable results.

The software element is a step-sequencer known to many in the chiptune scene as a "tracker", written in Python+Pygame (SDL). This is the part that is literally called CTM, and it is designed to communicate specifically with the hardware boards via libusb. 

The tracker currently supports opening of MOD and MON files, as well as its own format. It also supports a limited subset of the XM format, and an even more limited subset of the AHX format. More formats are planned. Save is not currently implemented (d'oh!) because the basic features of the tracker need fine-tuning. 

I'm not sure if I'm leaving anything out; send me a note if this is not descriptive enough!

  • 1 × RetroSoundinator board (designed for and specific to this project)
  • 1 × ATmega32u4 AVR Microprocessor (for signalling)
  • 1 × 330 resistor network
  • 2 × 1k resistor 102
  • 1 × RCA jack or two, if your chip is stereo/has an input/whatever

View all 20 components

  • The story so far...

    Inverse Phase10/04/2018 at 21:55 0 comments

    I had several ideas of how to do a multi-system chiptune synth but none of it seemed viable for one reason or another. But about two years ago, I decided I finally had a clue and wanted to build a synthesizer a certain way. Through a little bit of life turmoil, I finally got  things working:

    At that point the signalling was working but I needed to write software. I made a post about that here and included some screenshots of the state of the software while working on it:

    Development progressed and I made a little video describing the project and haphazardly demonstrating it:

    Life sure does love to get in the way of work, but things have steadily improved as time has gone on. There are more progress reports on my Patreon and more of the videos on youtube, but basically we've ended up here:

    Time is currently being spent implementing support for more sound chips, improving the overall playback code, and writing more file format filters.

    Please feel free to discuss here on!

View project log

  • 1

    Obtain Retro Soundinator board. Use preferred surface-mount technique to mount all components except sockets, then let cool and solder through-hole components onto board. Add crystal; sound chip is not yet necessary. 

  • 2

    Edit firmware descriptors to match what CTM is expecting. Edit ATtiny firmware source with a clock divider that will drive the chosen sound chip. Make sure avr-gcc and avrdude are installed, then use 6-pin header to flash 32u4 and ATtiny with appropriate firmwares. Sound chip and wiring can now be installed. 

  • 3

    Make sure Python and Pygame are installed. Check system and libusb permissions to make sure the user you run CTM as will have permission to look at USB devices. Uncompress CTM and run. You should see debug information detecting the board. To check, click the header of a channel labeled as "NONE" and you should be able to assign the channel to a board.

View all 4 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates