vic midi (world of commodore 2015)
TRANSCRIPT
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!