Jim Brain and Leif Bloomquist World of Commodore 2015 December 5, 2015 Toronto, Canada VIC MIDI
Jim Brain and Leif Bloomquist
World of Commodore 2015December 5, 2015Toronto, Canada
VIC MIDI
Project Goals
Make the Commodore VIC-I (6560) chip’s distinctive sound available to electronic musicians.
Easy integration with sequencers, synthesizers, or tracking software using MIDI1.
1Musical Instrument Digital Interface
History Sometime in the 1980s: A schematic for a VIC-20 MIDI
interface was published in “Electronics, the Maplin Magazine”
No commercial MIDI interfaces were ever released for the VIC!
History cont’d 2006: David Viens and François Leveillé in Montreal had
built a prototype based on the Maplin article, but never completed the software.
Early 2009: A conversation with Rob Adlers and Syd Bolton leads to a search for a MIDI Interface for the VIC.
Mid 2009: I find David and Francois’ project through the “VIC-20 Denial” forums and offer to take over development.
1Musical Instrument Digital Interface
First Prototype
History cont’d
Late 2009: I approach Jim Brain from Retro Innovations about creating a small production run.
Prototypes and code evolve for several years…
2013
2011
2012
2015
The VIC-20’s Voices
Square Wave output (except Noise) Some overlap between voices
Implementation One MIDI Channel per Voice
Channel 1 = Alto (36874) Channel 2 = Tenor (36875) Channel 3 = Soprano (36876) Channel 4 = Noise (36877)
Polyphony Mode Channel 5 = Polyphony Mode (round-robins through voices)
Master Volume is set through Controller #7 (Coarse Volume) on any channel
Implementation (Continued)
Note On commands use a lookup table to match MIDI Note# to the closest match for that voice.
Controller #1 (Course Modulation) does a direct “POKE” to the corresponding Voice register based on MIDI Channel.
Note Off, All Notes Off commands on a specific channel are used to silence that voice.
MIDI “Running Status” supported
PAL, NTSC, and VIC-specific lookup tables Bank Select (Controller #0)
Still remaining to do: MIDI Out only sends one note at a time. Needs
multi-press, multi-note capability
Viznut’s waveforms don’t trigger reliably yet
More testing of Polyphony mode
Software 6502 Assembler
Cross-compiled using DASM
Code is open-source, MIT License
Available on GitHub:https://github.com/LeifBloomquist/VICMIDI
Developer and User Support Forum: http://www.jammingsignal.com (click FORUMS)
Other features Flashable
MIDI IN, Out, Through support
RS-232 Support (if installed)
UltiMem capable (512kB ROM, 128kB RAM)
UART can be set to any base address in IO2 or IO3
UltiMem can be enabled/disabled
MIDI/RS232 can be enabled/disabled
Demo Time!